var self = this
    self.page_size = parseInt(opts.pagesize) || 10
    self.page = 1
    self.num_pages = 5
    self.count = 0
    self.show_all = false
    update_count(new_count)
    {
        self.count = new_count
        self.num_pages = 1 + Math.floor(self.count / self.page_size)
        self.page = 1
        self.paginate()
    }
    update_pagesize(e){
        var new_size = parseInt(e.target.value)
        if (new_size > 0)
        {
            self.page_size = new_size
            self.num_pages = 1 + Math.floor(self.count / self.page_size)
            self.page = 1
        }
    }
    goto(e) {
        self.page = parseInt(e.target.value)
    }
    first(e){
        self.page = 1
        self.paginate()
    }
    last(e){
        self.page = self.num_pages
        self.paginate()
    }
    next(e){
        if(self.page1) {
            self.page -= 1
            self.paginate()
        }
    }
    all(){
        self.show_all = !self.show_all
        if(self.show_all){
            self.parent.paginate(0,self.count)
        }else{
            self.page = 1
            self.paginate()
        }
    }
    paginate(){
        var first = (self.page - 1) * self.page_size
        var last = (self.page * self.page_size)
        self.parent.paginate(first, last)
    }