⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grid_format.js

📁 OA.....其他人不需帐号就可自由下载此源码其他人不需帐号就可自由下载此源码
💻 JS
📖 第 1 页 / 共 5 页
字号:
Active.Controls.Grid=Active.System.Control.subclass();
Active.Controls.Grid.create=function()
{
var obj=this.prototype;
obj.setClass("controls","grid");
obj.setAttribute("tabIndex","-1");
obj.setAttribute("hideFocus","true");
obj.defineTemplate("layout",new Active.Templates.Scroll);
obj.defineTemplate("main",function()
{
switch(this.getStatusProperty("code"))
{
    case "":return this.getDataTemplate();
    case "error":return this.getErrorTemplate();
    default:return this.getStatusTemplate()
}
}
);
obj.defineTemplate("data",new Active.Templates.List);
obj.defineTemplate("left",new Active.Templates.List);
obj.defineTemplate("top",new Active.Templates.List);
obj.defineTemplate("status",new Active.Templates.Status);
obj.defineTemplate("error",new Active.Templates.Error);
obj.defineTemplate("row",new Active.System.Template);
obj.defineTemplate("column",new Active.System.Template);
obj.getColumnTemplate=function(i)
{
return this.getTemplate("data/item/item",i)
};
obj.setColumnTemplate=function(template,i)
{
this.setTemplate("data/item/item",template,i)
};
obj.getRowTemplate=function(i)
{
return this.getTemplate("data/item",i)
};
obj.setRowTemplate=function(template,i)
{
this.setTemplate("data/item",template,i)
};
obj.setTemplate("data/item",new Active.Templates.Row);
obj.setTemplate("left/item",new Active.Templates.Item);
obj.setTemplate("top/item",new Active.Templates.Header);
obj.defineModel("row");
obj.defineRowProperty("count",function()
{
return this.getDataProperty("count")
}
);
obj.defineRowProperty("index",function(i)
{
return i
}
);
obj.defineRowProperty("order",function(i)
{
return i
}
);
obj.defineRowPropertyArray("text",function(i)
{
return this.getRowOrder(i)+1
}
);
obj.defineRowPropertyArray("image","none");
obj.defineRowPropertyArray("value",function(i)
{
return i
}
);
obj.defineModel("column");
obj.defineColumnProperty("count",0);
obj.defineColumnProperty("index",function(i)
{
return i
}
);
obj.defineColumnProperty("order",function(i)
{
return i
}
);
obj.defineColumnPropertyArray("text",function(i)
{
return "Column "+i
}
);
obj.defineColumnPropertyArray("image","none");
obj.defineColumnPropertyArray("value",function(i)
{
return i
}
);
obj.defineColumnPropertyArray("tooltip","");
obj.defineModel("data");
obj.defineDataProperty("count",0);
obj.defineDataProperty("index",function(i)
{
return i
}
);
obj.defineDataProperty("text","");
obj.defineDataProperty("image","none");
obj.defineDataProperty("link","");
obj.defineDataProperty("value",function(i,j)
{
var text=""+this.getDataText(i,j);
var value=Number(text.replace(/[,%\$]/gi,"").replace(/\((.*)\)/,"-$1"));
return isNaN(value)?text.toLowerCase()+" ":value
}
);
obj.defineModel("items");
obj.defineModel("dummy");
obj.defineDummyProperty("count",0);
obj.defineDummyPropertyArray("value",-1);
obj.defineModel("selection");
obj.defineSelectionProperty("index",-1);
obj.defineSelectionProperty("multiple",false);
obj.defineSelectionProperty("count",0);
obj.defineSelectionPropertyArray("value",0);
obj.defineModel("sort");
obj.defineSortProperty("index",-1);
obj.defineSortProperty("direction","none");
obj.defineModel("status");
obj.defineStatusProperty("code",function()
{
var data=this.getDataModel();
if(!data.isReady())
{
    return "loading"
}
if(!this.getRowProperty("count"))
{
    return "nodata"
}
return ""
}
);
obj.defineStatusProperty("text",function()
{
switch(this.getStatusProperty("code"))
{
    case "loading":return "Loading data,please wait...";
    case "nodata":return "没有任何记录!";
    default:return ""
}
}
);
obj.defineStatusProperty("image",function()
{
switch(this.getStatusProperty("code"))
{
    case "loading":return "loading";
    default:return "none"
}
}
);
obj.defineModel("error");
obj.defineErrorProperty("code",0);
obj.defineErrorProperty("text","");
obj.getLeftTemplate=function()
{
var template=this.defaultLeftTemplate();
template.setDataModel(this.getRowModel());
template.setItemsModel(this.getRowModel());
template.setSelectionModel(this.getDummyModel());
return template
};
obj.getTopTemplate=function()
{
var template=this.defaultTopTemplate();
template.setDataModel(this.getColumnModel());
template.setItemsModel(this.getColumnModel());
template.setSelectionModel(this.getDummyModel());
return template
};
obj.getDataTemplate=function()
{
var template=this.defaultDataTemplate();
template.setDataModel(this.getDataModel());
template.setItemsModel(this.getRowModel());
return template
};
obj.setContent(function()
{
    return this.getLayoutTemplate()
}
);
obj.setColumnHeaderHeight=function(height)
{
    var layout=this.getTemplate("layout");
    layout.getContent("top").setStyle("height",height);
    layout.getContent("corner").setStyle("height",height);
    layout.getContent("left").setStyle("padding-top",height);
    layout.getContent("data").setStyle("padding-top",height)
};
obj.setRowHeaderWidth=function(width)
{
    var layout=this.getTemplate("layout");
    layout.getContent("left").setStyle("width",width);
    layout.getContent("corner").setStyle("width",width);
    layout.getContent("top").setStyle("padding-left",width);
    layout.getContent("data").setStyle("padding-left",width)
};
var startColumnResize=function(header)
{
    var el=header.element();
    var pos=event.clientX;
    var size=el.offsetWidth;
    var grid=this;
    var doResize=function()
    {
        var el=header.element();
        var sz=size+event.clientX - pos;
        el.style.width=sz < 10?10:sz;
        el=null
    };
    var endResize=function()
    {
        var el=header.element();
        if(typeof el.onmouseleave=="function")
        {
            el.onmouseleave()
        }
        el.detachEvent("onmousemove",doResize);
        el.detachEvent("onmouseup",endResize);
        el.detachEvent("onlosecapture",endResize);
        el.releaseCapture();
        var width=size+event.clientX - pos;
        if(width < 10)
        {
            width=10
        }
        el.style.width=width;
        var ss=document.styleSheets[document.styleSheets.length-1];
        var i,selector="#"+grid.getId()+" .active-column-"+header.getItemProperty("index");
        for(i=0;i<ss.rules.length;i++)
        {
            if(ss.rules[i].selectorText==selector)
            {
                ss.rules[i].style.width=width;
                el=null;
                grid.getTemplate("layout").action("adjustSize");
                return
            }
        }
        ss.addRule(selector,"width:"+width+"px");
        el=null;
        grid.getTemplate("layout").action("adjustSize")
    };
    el.attachEvent("onmousemove",doResize);
    el.attachEvent("onmouseup",endResize);
    el.attachEvent("onlosecapture",endResize);
    el.setCapture();
    el=null;
    event.cancelBubble=true
};
obj.setAction("startColumnResize",startColumnResize);
var setSelectionIndex=obj.setSelectionIndex;
obj.setSelectionIndex=function(index)
{
    setSelectionIndex.call(this,index);
    this.setSelectionValues([index]);
    var row=this.getTemplate("row",index);
    var data=this.getTemplate("layout").getContent("data");
    var left=this.getTemplate("layout").getContent("left");
    var scrollbars=this.getTemplate("layout").getContent("scrollbars");
    try
    {
        var top,padding=data.element().firstChild.offsetTop;
        if(data.element().scrollTop > row.element().offsetTop - padding)
        {
            top=row.element().offsetTop - padding;
            left.element().scrollTop=top;
            data.element().scrollTop=top;
            scrollbars.element().scrollTop=top
        }
        if(data.element().offsetHeight+data.element().scrollTop < row.element().offsetTop+row.element().offsetHeight)
        {
            top=row.element().offsetTop+row.element().offsetHeight - data.element().offsetHeight;
            left.element().scrollTop=top;
            data.element().scrollTop=top;
            scrollbars.element().scrollTop=top
        }
    }
    catch(error)
    {
    }
};
var setSelectionValues=obj.setSelectionValues;
obj.setSelectionValues=function(array)
{
    var i,current=this.getSelectionValues();
    setSelectionValues.call(this,array);
    var changes=
    {
    };
    for(i=0;i<current.length;i++)
    {
        changes[current[i]]=true
    }
    for(i=0;i<array.length;i++)
    {
        changes[array[i]]=changes[array[i]]?false:true
    }
    for(i in changes)
    {
        if(changes[i]===true)
        {
            this.getRowTemplate(i).refreshClasses()
        }
    }
    this.action("selectionChanged")
};
var selectRow=function(src)
{
    this.setSelectionProperty("index",src.getItemProperty("index"))
};
var selectMultipleRows=function(src)
{
    if(!this.getSelectionProperty("multiple"))
    {
        return this.action("selectRow",src)
    }
    var index=src.getItemProperty("index");
    var selection=this.getSelectionProperty("values");
    for(var i=0;i<selection.length;i++)
    {
        if(selection[i]==index)
        {
            selection.splice(i,1);
            i=-1;
            break
        }
    }
    if(i!=-1)
    {
        selection.push(index)
    }
    this.setSelectionProperty("values",selection);
    setSelectionIndex.call(this,index);
    this.getRowTemplate(index).refreshClasses();
    this.action("selectionChanged")
};
var selectRangeOfRows=function(src)
{
    if(!this.getSelectionProperty("multiple"))
    {
        return this.action("selectRow",src)
    }
    var previous=this.getSelectionProperty("index");
    var index=src.getItemProperty("index");
    var row1=Number(this.getRowProperty("order",previous));
    var row2=Number(this.getRowProperty("order",index));
    var start=row1 > row2?row2:row1;
    var count=row1 > row2?row1 - row2:row2 - row1;
    var i,selection=[];
    for(i=0;i<=count;i++)
    {
        selection.push(this.getRowProperty("value",start+i))
    }
    this.setSelectionProperty("values",selection);
    setSelectionIndex.call(this,index);
    this.getRowTemplate(index).refreshClasses();
    this.action("selectionChanged")
};
obj.setAction("selectRow",selectRow);
obj.setAction("selectMultipleRows",selectMultipleRows);
obj.setAction("selectRangeOfRows",selectRangeOfRows);
obj.sort=function(index,direction)
{
    var model=this.getModel("row");
    if(model.sort)
    {
        return model.sort(index,direction)
    }
function compare(value,pos,dir)
{
    var greater=1,less=-1;
    if(dir=="descending")
    {
        greater=-1;
        less=1
    }
    var types=
    {
        "undefined":0,"boolean":1,"number":2,"string":3,"object":4,"function":5
    };
return function(i,j)
{
    var a=value[i],b=value[j],x,y;
    if(typeof(a)!=typeof(b))
    {
        x=types[typeof(a)];
        y=types[typeof(b)];
        if(x > y)
        {
            return greater
        }
        if(x < y)
        {
            return less
        }
    }
    else if(typeof(a)=="number")
    {
        if(a > b)
        {
            return greater
        }
        if(a < b)
        {
            return less
        }
    }
    else
    {
        var result=(""+a).localeCompare(b);
        if(result)
        {
            return greater * result
        }
    }
    x=pos[i];
    y=pos[j];
    if(x > y)
    {
        return 1
    }
    if(x < y)
    {
        return -1
    }
    return 0
}
}
if(direction && direction !="ascending")
{
direction="descending"
}
else
{
direction="ascending"
}
var i,value=
{
}
,pos=
{
};
var rows=this.getRowProperty("values");
for(i=0;i<rows.length;i++)
{
value[rows[i]]=this.getDataProperty("value",rows[i],index);
pos[rows[i]]=i
}
rows.sort(compare(value,pos,direction));
this.setRowProperty("values",rows);
this.setSortProperty("index",index);
this.setSortProperty("direction",direction)
};
obj.setAction("columnSort",function(src)
{
var i=src.getItemProperty("index");
var d=(this.getSortProperty("index")==i)&&(this.getSortProperty("direction")=="ascending")?"descending":"ascending";
window.status="Sorting...";
this.sort(i,d);
this.refresh();
this.timeout(function()
{
    window.status=""
}
)
}
);
var _getRowOrder=function(i)
{
return this._rowOrders[i]
};
var _setRowValues=obj.setRowValues;
obj.setRowValues=function(values)
{
_setRowValues.call(this,values);
var i,max=values.length,orders=[];
for(i=0;i<max;i++)
{
    orders[values[i]]=i
}
this._rowOrders=orders;
this.getRowOrder=_getRowOrder
};
obj._kbSelect=function(delta)
{
var index=this.getSelectionProperty("index");
var order=this.getRowProperty("order",index);
var count=this.getRowProperty("count");
var newOrder=Number(order)+delta;
if(newOrder<0)
{
    newOrder=0
}
if(newOrder>count-1)
{
    newOrder=count-1
}
if(delta==-100)
{
    newOrder=0
}
if(delta==100)
{
    newOrder=count-1
}
var newIndex=this.getRowProperty("value",newOrder);
this.setSelectionProperty("index",newIndex)
};
obj.setAction("up",function()
{
this._kbSelect(-1)
}
);
obj.setAction("down",function()
{
this._kbSelect(+1)
}
);
obj.setAction("pageUp",function()
{
this._kbSelect(-10)
}
);
obj.setAction("pageDown",function()
{
this._kbSelect(+10)
}
);
obj.setAction("home",function()
{
this._kbSelect(-100)
}
);
obj.setAction("end",function()
{
this._kbSelect(+100)
}
);
var kbActions=
{
38:"up",40:"down",33:"page

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -