首页 > 网站 > WEB开发 > 正文

iRSF快速简单易用的实现列表、排序、过滤功能

2024-04-27 14:20:51
字体:
来源:转载
供稿:网友

iRSF快速简单易用的实现列表、排序、过滤功能

IRSF 是由javascript编写,iRSF快速简单易用的实现列表、排序、过滤功能(该三种操作以下简称为 RSF )。

iRSF由三个类组成。

iRSfsource 数据源iRSFFilter 过滤器iRSFSorter 排序器  

iRSF 使用:

iRsf = new iRSF();iRsf.draw = function(data){//展现列表,data的结构为{PRoperty:[{data1},{data2}]},* property 可以自定义,由iRSFSource 指定。};//指定数据源iRsf.setSource({src:{items:[{id:1121,name:"dfsa"},{id:1122,name:"dfsa"}]},property:"items"});//添加过滤器iRsf.addFilter("id",function(row){return row.id==1121;});//设置排序iRsf.setSort(function(a,b){return a.id-b.id;});//执行,并重画列表 会调用iRsf.draw方法iRsf.records();

iRsf 源码

/** * 展现列表、排序、过滤(该三种操作以下简称为 RSF ) * iRSF快速简单易用的实现列表,排序,过滤等功能 * User: oshine * Date: 13-7-30 * Time: 上午11:31 */function iRSFSource(setting){    this.property = setting.property || "items";    this.src = setting.src || {};    this.clonePropertyList = function()    {        var tmp_data = [];        for(var i in this.src[this.property])        {            tmp_data[i] = this.src[this.property][i];        }        return tmp_data;    };    this.clone = function()    {        var result = {};        var tmp_data = this.clonePropertyList();        return result[this.property] = tmp_data;    }}function iRSFFilter(){    this.filters = {};    this.filtering = function(src_data)    {        var ret = [],i= src_data.length-1;        for(;i>=0;i--)        {            var flag = true;            for(var j in this.filters)            {                var fn_filter = this.filters[j];                if(typeof fn_filter == "function")                {                    flag = flag && fn_filter(src_data[i]);                }                if(!flag)                {                    break;                }            }            if(flag)            {                ret.push(src_data[i]);            }        }        return ret;    };    this.clearFilters = function()    {        for(var j in this.filters)        {            this.filters[j] = null;            delete this.filters[j];        }    }}function iRSFSorter(){    this.sort = null;    this.sorting = function(src_data)    {        if(this.sort === undefined || this.sort == null || typeof this.sort !== "function")        {            return src_data;        }        src_data.sort(this.sort);        return src_data;    }}function iRSF(){    this.iSource = new iRSFSource({src:{},property:"items"});    this.sorter = new iRSFSorter();    this.filter = new iRSFFilter();    this.draw = null;    this.setSource= function(setting)    {        this.iSource.src = setting.src || {};        this.iSource.property = setting.property || "items";    };    this.records = function()    {        var $data = this.iSource.clonePropertyList();        $data = this.filter.filtering($data);        $data  = this.sorter.sorting($data);        var result = {};        result[this.iSource.property] = $data;        if(this.draw !== undefined && this.draw !== null && typeof this.draw === "function")        {            this.draw(result);        }        return result;    };    this.addFilter = function(name,filter)    {        this.filter.filters[name] = filter;    };    this.removeFilter = function(name)    {        if(this.filter.filters[name] == undefined)        {            return true;        }        this.filter.filters[name] = null;        delete this.filter.filters[name];        return true;    };    this.setSort = function(sort)    {        this.sorter.sort = sort;    };    this.clearSort = function()    {        this.sorter.sort = null;    }}

  

  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表