TreeGridNodeUI.js
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:4k
源码类别:

JavaScript

开发平台:

JavaScript

  1. /*!
  2.  * Ext JS Library 3.1.0
  3.  * Copyright(c) 2006-2009 Ext JS, LLC
  4.  * licensing@extjs.com
  5.  * http://www.extjs.com/license
  6.  */
  7. /**
  8.  * @class Ext.ux.tree.TreeGridNodeUI
  9.  * @extends Ext.tree.TreeNodeUI
  10.  */
  11. Ext.ux.tree.TreeGridNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
  12.     isTreeGridNodeUI: true,
  13.     
  14.     renderElements : function(n, a, targetNode, bulkRender){
  15.         var t = n.getOwnerTree(),
  16.             cols = t.columns,
  17.             c = cols[0],
  18.             i, buf, len;
  19.         this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : '';
  20.         buf = [
  21.              '<tbody class="x-tree-node">',
  22.                 '<tr ext:tree-node-id="', n.id ,'" class="x-tree-node-el ', a.cls, '">',
  23.                     '<td class="x-treegrid-col">',
  24.                         '<span class="x-tree-node-indent">', this.indentMarkup, "</span>",
  25.                         '<img src="', this.emptyIcon, '" class="x-tree-ec-icon x-tree-elbow">',
  26.                         '<img src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon', (a.icon ? " x-tree-node-inline-icon" : ""), (a.iconCls ? " "+a.iconCls : ""), '" unselectable="on">',
  27.                         '<a hidefocus="on" class="x-tree-node-anchor" href="', a.href ? a.href : '#', '" tabIndex="1" ',
  28.                             a.hrefTarget ? ' target="'+a.hrefTarget+'"' : '', '>',
  29.                         '<span unselectable="on">', (c.tpl ? c.tpl.apply(a) : a[c.dataIndex] || c.text), '</span></a>',
  30.                     '</td>'
  31.         ];
  32.         for(i = 1, len = cols.length; i < len; i++){
  33.             c = cols[i];
  34.             buf.push(
  35.                     '<td class="x-treegrid-col ', (c.cls ? c.cls : ''), '">',
  36.                         '<div unselectable="on" class="x-treegrid-text"', (c.align ? ' style="text-align: ' + c.align + ';"' : ''), '>',
  37.                             (c.tpl ? c.tpl.apply(a) : a[c.dataIndex]),
  38.                         '</div>',
  39.                     '</td>'
  40.             );
  41.         }
  42.         buf.push(
  43.             '</tr><tr class="x-tree-node-ct"><td colspan="', cols.length, '">',
  44.             '<table class="x-treegrid-node-ct-table" cellpadding="0" cellspacing="0" style="table-layout: fixed; display: none; width: ', t.innerCt.getWidth() ,'px;"><colgroup>'
  45.         );
  46.         for(i = 0, len = cols.length; i<len; i++) {
  47.             buf.push('<col style="width: ', (cols[i].hidden ? 0 : cols[i].width) ,'px;" />');
  48.         }
  49.         buf.push('</colgroup></table></td></tr></tbody>');
  50.         if(bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()){
  51.             this.wrap = Ext.DomHelper.insertHtml("beforeBegin", n.nextSibling.ui.getEl(), buf.join(''));
  52.         }else{
  53.             this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf.join(''));
  54.         }
  55.         this.elNode = this.wrap.childNodes[0];
  56.         this.ctNode = this.wrap.childNodes[1].firstChild.firstChild;
  57.         var cs = this.elNode.firstChild.childNodes;
  58.         this.indentNode = cs[0];
  59.         this.ecNode = cs[1];
  60.         this.iconNode = cs[2];
  61.         this.anchor = cs[3];
  62.         this.textNode = cs[3].firstChild;
  63.     },
  64.     // private
  65.     animExpand : function(cb){
  66.         this.ctNode.style.display = "";
  67.         Ext.ux.tree.TreeGridNodeUI.superclass.animExpand.call(this, cb);
  68.     }
  69. });
  70. Ext.ux.tree.TreeGridRootNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
  71.     isTreeGridNodeUI: true,
  72.     
  73.     // private
  74.     render : function(){
  75.         if(!this.rendered){
  76.             this.wrap = this.ctNode = this.node.ownerTree.innerCt.dom;
  77.             this.node.expanded = true;
  78.         }
  79.         
  80.         if(Ext.isWebKit) {
  81.             // weird table-layout: fixed issue in webkit
  82.             var ct = this.ctNode;
  83.             ct.style.tableLayout = null;
  84.             (function() {
  85.                 ct.style.tableLayout = 'fixed';
  86.             }).defer(1);
  87.         }
  88.     },
  89.     destroy : function(){
  90.         if(this.elNode){
  91.             Ext.dd.Registry.unregister(this.elNode.id);
  92.         }
  93.         delete this.node;
  94.     },
  95.     
  96.     collapse : Ext.emptyFn,
  97.     expand : Ext.emptyFn
  98. });