PagingAbility

class webix.PagingAbility()

Pagingability mixin

References

helpers
delay(), ui().

Referenced by

views
proto(), resizearea().

External references

Official documentation page.

Code

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
webix.PagingAbility = {
    pager_setter:function(pager){
        if (typeof pager == "string"){
            var ui_pager = webix.$$(pager);
            if (!ui_pager){
                this.$blockRender = true;
                webix.delay(function(){
                    var obj = webix.$$(pager);

                    this._settings.pager = this.pager_setter(obj);
                    var s = obj._settings;
                    s.count = this.data._count_pager_total(s.level);
                    obj.refresh();

                    this.$blockRender = false;
                    this.render();
                }, this);
                return null;
            }
            pager = ui_pager;
        }

        function check_pager_sizes(repeat){
            if (pager.config.autosize && this.getVisibleCount){
                var count = this.getVisibleCount();
                if (isNaN(count)){
                    pager.config.size = 1;
                    webix.delay(check_pager_sizes, this, [true]);
                } else if (count != pager.config.size){
                    pager.config.size = count;
                    pager.refresh();
                    if (repeat === true)
                        this.refresh();
                }
            }

            var s = this._settings.pager;
            //initial value of pager = -1, waiting for real value
            if (s.page == -1) return false;

            this.data.$min = this._count_pager_index(0, s.page*s.size);    //affect data.getRange
            this.data.$max = this._count_pager_index(this.data.$min, s.size);
            this.data.$pagesize = this.data.$max - this.data.$min;

            return true;
        }

        this.attachEvent("onBeforeRender",check_pager_sizes);

        if (!pager.$view){
            pager.view = "pager";
            pager = webix.ui(pager);
        }
        this._pager = pager;
        pager.$master = this;

        this.data.attachEvent("onStoreUpdated", function(){
            var s = pager._settings;
            s.count = this._count_pager_total(s.level);
            pager.refresh();
        });
        this.data._count_pager_total = this._count_pager_total;

        return pager._settings;
    },
    _count_pager_total:function(level){
        if (level && level !== 0){
            var count = 0;
            this.each(function(obj){
                if (obj.$level == level) count++;
            });
            return count;
        } else
            return this.count();
    },
    _count_pager_index:function(start, count){
        var s = this._settings.pager;

        if (s.level && s.level !== 0){
            var end = start;
            var max = this.data.order.length;

            if (count)
                while (end < max){
                    if (this.data.getItem(this.data.order[end]).$level == s.level){
                        if (count === 0)
                            break;
                        else
                            count--;
                    }
                    end++;
                }

            return end;
        } else
            return start+count;
    },
    setPage:function(value){
        if (this._pager)
            this._pager.select(value);
    },
    getPage:function(){
        return this._pager._settings.page;
    },
    getPager:function(){
        return this._pager;
    }
};
/*
    Behavior: AutoTooltip - links tooltip to data driven item
*/

/*
    UI: Tooltip

    @export
        show
        hide
*/