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

📄 column.js

📁 上传的控件
💻 JS
字号:
/*
内容:列构造系列类
创建时间: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.length;i++)
            {
                this.aryCols[i].dispose();
            }
            this.aryCols = null;
            this.LastFrame.removeNode(true);
            this.LastFrame = null;
        }
    },
    //私有方法,初始化地创造一个列对象
    CreateCols: function(Count,aryClassName)
    {
        for(var i=1; i<Count; 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<this.aryCols.length;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<FeedNodes.length; 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.length;i++)
            {
                this.aryFeeds[i].dispose();
            }
            this.aryFeeds = null;
        }
    },
    AddFeedToFrame:function(){
        for(var i=0;i<this.aryFeeds.length;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<this.aryFeeds.length; 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<this.aryFeeds.length; 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<this.aryFeeds.length; 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<this.arrFeeds.length; 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<this.aryFeeds.length; 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<this.aryFeeds.length; 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<this.aryFeeds.length; 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
    }
   
}

⌨️ 快捷键说明

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