上传的控件

源代码在线查看: column.js

软件大小: 206 K
上传用户: lanyiting1
关键词: 控件
下载地址: 免注册下载 普通下载 VIP

相关代码

				/*
				内容:列构造系列类
				创建时间:2006-11-29
				创建人:吴少刚
				项目组:商格里拉项目组
				外部引用类库:1.JS/comjs/prototype1.4.js 作者:Sam Stephenson
				              2.global.js 作者:吴少刚
				              3.Drag.js 作者:吴少刚
				*/
				
				//-----------------------------------------------Columns---------------------------------------------------------//
				/*
				    名称:列集合对象构造类
				    功能及构成描述:用于构造各列容器,列中可以容纳各个Feed对象
				                    并有集合对象,以便可以更快的查找和操作Feed对象  
				    初始化参数:Count=列数, aryWidth=各列宽度数组,条件:Count==aryWidth.length;
				*/
				Columns = Class.create(); 
				
				Columns.prototype = {
				
				    initialize: function(Count,aryClassName) 
				    {
				        var frame = document.createElement("div");  
				        frame.id = "LastDivFrame";//最后一个容纳所有对象的框架,这个框架最后加载到页面上 
				        frame.className = G.Style.LastFrame.lastframe;  
				        this.LastFrame = frame;   
				        //列集合
				        this.aryCols = new Array();
				        this.CreateCols(Count,aryClassName);
				        
				        this.RI = new RequestInterval(2);
				    },
				    
				    dispose:function(){
				        if(this.aryCols.length > 0)
				        {
				            for(var i=0;i				            {
				                this.aryCols[i].dispose();
				            }
				            this.aryCols = null;
				            this.LastFrame.removeNode(true);
				            this.LastFrame = null;
				        }
				    },
				    //私有方法,初始化地创造一个列对象
				    CreateCols: function(Count,aryClassName)
				    {
				        for(var i=1; i				        {   
				             var col = new Column("divCol"+i,aryClassName[i-1]);                          
				             this.aryCols.push(col);            
				        }   
				    },
				    
				    //公共方法 根椐ID,获得列对象,如果没有得到则返回空
				    getColObjByID: function(divObjID)
				    {
				        if(this.aryCols.length >0)
				        {
				            var colObj = null;
				            for(var i=0;i				            {                
				                colObj = this.aryCols[i];
				                if(colObj.ID == divObjID)
				                    return colObj;
				            }   
				        }
				        return null;
				    },
				    //清除指定的Feed,也是出现在点击关闭按钮后的操作
				    //操作步骤:1.发送异步指令从用户的配置文件中删除一个指定的Feed
				    //          2.从页面中删除指定的Feed  
				    //          3.更新各Feed的索引号和序号
				    //          4.更新关联菜单的状态,设置为可用。
				    //传入参数:当前指定的Feed
				    clearSpeFeed: function(Feed)
				    {
				        var param = null;
				        //删除服务器上用户的Feed
				         var FileURL = G.ActionURL.PageDataURL, parames = "";
				         parames ="Type=Feed&Action=Del&Code=" + Feed.objFBaseInfo.Code;
				         parames = "module=xml&action=" + G.ActionURL.SaveData + "&" + parames;
				         G_RequestObj.send(FileURL,parames,null,"get");
				        //G_BLLFeed.SaveData(param);
				        
				        //更新各序号
				        var curCol = this.aryCols[Feed.objFBaseInfo.Column-1];
				        
				        //删除Feed并更新在数组中的序号和索引
				        curCol.RemoveFeed(Feed);
				        
				        //更新关联菜单的状态,如果代号不为空说明和菜单有一对一的关系
				        if(Feed.objFBaseInfo.MenuCode != null&&Feed.objFBaseInfo.MenuCode != "")
				        {
				            //还要再增加一个逻辑,就是检查各菜单下有Feed的代号是否一样,如果一样则也改变过来.
				            
				            G_LoginM.navBar.ChangeMenuSubPartStateByMenuCode(Feed.objFBaseInfo.MenuCode);
				        }
				        else
				        {
				            G_LoginM.navBar.ChangeMenuSubPartStateByFeedCode(Feed.objFBaseInfo.Code);
				        }
				        
				    },
				    //排序Feed在数组中的顺序
				    FeedSortByMpos:function(aryFeeds){
				        
				         return aryFeeds.sortBy(function(value,index){return aryFeeds[index].MPos;});
				           
				    },
				    //增加一个Feed到页面的列上 
				    //传入参数:Feed = 一个feed对象,IsAddToPageNow=是否附加到页面上显示出来
				    AddFeed: function(Feed,IsAddToPageNow)
				    {
				        if(this.aryCols.length != 0&&typeof(Feed) != "undefined")
				        {           
				            var colObj = this.aryCols[parseInt(Feed.objFBaseInfo.Column)-1];
				            colObj.AddFeed(Feed,IsAddToPageNow); 
				        }
				    },
				     //请求页面Feed的事件处理
				    LoadFeedEventHandler: function(response){
				        var rootNode = G_XML.XmlDom.createDomFromResponse(response);
				        var FeedNodes = rootNode.getElementsByTagName("Feed");
				        for(var i=0; i				        {
				            var FBInfo = G_BLLFeed.CreateAllFeedBaseInfo(FeedNodes[i]);
				            var feed = new Feed(FBInfo,true);
				            this.AddFeed(feed);
				        }
				        G_LoginM.LoadSuccessSign.ColFeed = true;
				        G_LoginM.AddToPage();                   
				    },
				    //创建页面Feed
				    CreateFeed:function(){
				       this.RI.Stop1(); 
				       var FileURL = "",parames = "";
				       FileURL = G.ActionURL.PageDataURL;       
				       parames = "Type=Feed&Action=all";
				       parames = "module=xml&action=" + G.ActionURL.GetData + "&" + parames;
				       FileURL = "XML/DefaultFeed.xml";   //paramCancelPosition
				       G_RequestObj.send(FileURL,parames,this.LoadFeedEventHandler.bind(this),"get");
				       //URL,params,SuccessFunc,Method
				        
				    },
				    Start:function(){
				        this.RI.SetInterval(this.CreateFeed.bind(this) ,0.1);
				    }
				    
				}
				
				//-----------------------------------------------Column---------------------------------------------------------//
				/*
				    名称:单一列构造类
				    功能及构成描述:列中有各种自有的方法
				    初始化方法:id=构造列的ID
				*/
				Column = Class.create(); 
				
				Column.prototype = {
				
				    initialize: function(id,className) 
				    {
				          this.aryFeeds = new Array();
				          var col1 = document.createElement("div");
				          col1.id = id;         
				          col1.className = className;
				          this.Frame = col1;
				          this.ID = id; 
				          this.FeedsCount = this.aryFeeds.length;        
				    },
				    dispose:function(){
				        if(this.aryFeeds.length >0)
				        {
				            for(var i=0;i				            {
				                this.aryFeeds[i].dispose();
				            }
				            this.aryFeeds = null;
				        }
				    },
				    AddFeedToFrame:function(){
				        for(var i=0;i				        {
				            //给Feed赋索引值,这是在Feed在数组中的位置
				            this.aryFeeds[i].FeedIndexInColumn = i;
				            this.Frame.appendChild(this.aryFeeds[i].Frame);
				        }
				    },
				    //增加一个提要对象,如果成功则返会true
				    //传入参数:Feed=Feed对象 IsAddToPageNow=是否直接增加到页面上,它是从菜单上增加Feed需要的参数
				    AddFeed: function(Feed,IsAddToPageNow)
				    {
				        if(this.aryFeeds.length > 0)
				        {
				            for(var i=0;i				            {
				                if(this.aryFeeds[i] == Feed)//如果有相同的对象则不能加入
				                {
				                    return false;
				                }
				            }            
				        }        
				        
				        if(IsAddToPageNow)
				        {
				            //给定所在的索引号
				            if(this.aryFeeds.length != 0)
				            {
				                Feed.FeedIndexInColumn = this.aryFeeds.length;
				                Feed.MPos = parseInt(this.aryFeeds[this.aryFeeds.length-1].MPos) + 1;
				            }
				            else
				            {
				                Feed.FeedIndexInColumn = 0;
				                Feed.MPos = 1;
				            }
				            //增加到页面上 
				           this.Frame.appendChild(Feed.Frame);        
				        }
				        this.aryFeeds.push(Feed);
				        return true;        
				    },
				    //删除一个提要对象,删除成功则返回true
				    //传入参数:Feed=一个信息提要对象
				    RemoveFeed: function(Feed)
				    {
				        if(this.aryFeeds.length > 0)
				        {
				            for(var i=0;i				            {
				                if(this.aryFeeds[i].Code == Feed.Code)
				                {
				                    this.aryFeeds[i].Frame.removeNode(true);
				                    this.aryFeeds[i] = null;   
				                    
				                    this.ChangePosAndIndex();  
				                    //移除指定元素
				                    this.aryFeeds.splice(i,1);
				                    
				//                    //异步保存各序号
				//                    var param = "";
				//                    param = "Type=Feed&Action=MPos&MPos=";
				//                    
				//                    var menuPara = "";
				//                    for(var j=0;j				//                    {
				//                        var feed = this.aryFeeds[j];
				//                        menuPara += feed.Code + ":" + feed.MPos + "|";
				//                    }
				//                    param += menuPara;
				//                    G_BLLFeed.SaveData(param);             
				                    return true;
				                }
				            }            
				        }
				        return  false; 
				    },
				    
				    //根据模Feed的代号来查找其在列中的位置,其位置是用索引来表示的
				    //也就是其编号,因为编号决定其在列中上下的位置
				    //返回值:如果找到返回在列中的索引,否则返回-1;
				    getPositionByCode: function(FeedCode)
				    {        
				         if(this.aryFeeds.length >0)
				         {
				            var Feed = null;
				            for(var i=0;i				            {
				                 Feed = this.aryFeeds[i];
				                 if(Feed.objFBaseInfo.Code == FeedCode)
				                   return i;
				            }
				         }
				         
				         return -1;  
				    },
				    //根据排列序号访问一个Feed对象,如果未找到则返回空
				    getFeedByMPos: function(MPos)
				    {
				         if(this.aryFeeds.length >0)
				         {
				          
				            for(var i=0;i				            {
				                if(this.aryFeeds[i].MPos == MPos)
				                     return this.aryFeeds[i]; 
				            }
				         }
				         return null;
				    },
				    //改变列中各Feed的的序号和索引号
				    ChangePosAndIndex: function(){
				        var startIndex = this.aryFeeds.length -1;
				        for(var i=0;i				        {
				            var Feed = this.aryFeeds[i];
				            if(Feed == null)
				            {
				                startIndex = i;
				            }
				            //从i开始更新序号和各Feed的索引号
				            if(i>startIndex)
				            {
				                Feed.MPosSubOne();
				                Feed.FeedIndexInColumn = i-1;
				            }
				        }
				        
				    },
				
				//    //为两个指定的Feed交换序号
				//    //传入参数:oFeed=第一个Feed tFeed=第二个Feed
				//    ExchangeMPosForFeed: function(oFeed,tFeed)
				//    {
				//        var a = oFeed.MPos;
				//        var b = tFeed.MPos;
				//        oFeed.MPos = b;
				//        tFeed.MPos = a;
				//        
				//        // future Ajax 这里调用方法去把用户模块的序号提交到服务器 1.保存序号 
				//         
				//           
				//    },
				    //保存本列中各Feed的序号,当移动结束后,得到当前操作列,然后调用方法即可
				    
				    SaveAllFeedMPos:function(){ 
				        var FileURL = G.ActionURL.PageDataURL, parames = "";
				        for(var j=0;j				        {
				            var feed = this.aryFeeds[j];
				            parames += feed.Code + ":" + (j+1).toString() + "|";
				        }
				        parames = "module=xml&action=" + G.ActionURL.SaveData + "&Type=Feed&Action=MPos&MPos=" + encodeURIComponent(parames);
				        
				        G_RequestObj.send(FileURL,parames,null,"get");
				       //URL,params,SuccessFunc,Method
				    }
				   
				}			

相关资源