121 lines
No EOL
4.5 KiB
JavaScript
121 lines
No EOL
4.5 KiB
JavaScript
/*
|
|
This file is part of Ext JS 3.4
|
|
|
|
Copyright (c) 2011-2013 Sencha Inc
|
|
|
|
Contact: http://www.sencha.com/contact
|
|
|
|
GNU General Public License Usage
|
|
This file may be used under the terms of the GNU General Public License version 3.0 as
|
|
published by the Free Software Foundation and appearing in the file LICENSE included in the
|
|
packaging of this file.
|
|
|
|
Please review the following information to ensure the GNU General Public License version 3.0
|
|
requirements will be met: http://www.gnu.org/copyleft/gpl.html.
|
|
|
|
If you are unsure which license is appropriate for your use, please contact the sales department
|
|
at http://www.sencha.com/contact.
|
|
|
|
Build date: 2013-04-03 15:07:25
|
|
*/
|
|
/**
|
|
* @class Ext.ux.tree.TreeGridNodeUI
|
|
* @extends Ext.tree.TreeNodeUI
|
|
*/
|
|
Ext.ux.tree.TreeGridNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
|
|
isTreeGridNodeUI: true,
|
|
|
|
renderElements : function(n, a, targetNode, bulkRender){
|
|
var t = n.getOwnerTree(),
|
|
cols = t.columns,
|
|
c = cols[0],
|
|
i, buf, len;
|
|
|
|
this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : '';
|
|
|
|
buf = [
|
|
'<tbody class="x-tree-node">',
|
|
'<tr ext:tree-node-id="', n.id ,'" class="x-tree-node-el x-tree-node-leaf ', a.cls, '">',
|
|
'<td class="x-treegrid-col">',
|
|
'<span class="x-tree-node-indent">', this.indentMarkup, "</span>",
|
|
'<img src="', this.emptyIcon, '" class="x-tree-ec-icon x-tree-elbow" />',
|
|
'<img src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon', (a.icon ? " x-tree-node-inline-icon" : ""), (a.iconCls ? " "+a.iconCls : ""), '" unselectable="on" />',
|
|
'<a hidefocus="on" class="x-tree-node-anchor" href="', a.href ? a.href : '#', '" tabIndex="1" ',
|
|
a.hrefTarget ? ' target="'+a.hrefTarget+'"' : '', '>',
|
|
'<span unselectable="on">', (c.tpl ? c.tpl.apply(a) : a[c.dataIndex] || c.text), '</span></a>',
|
|
'</td>'
|
|
];
|
|
|
|
for(i = 1, len = cols.length; i < len; i++){
|
|
c = cols[i];
|
|
buf.push(
|
|
'<td class="x-treegrid-col ', (c.cls ? c.cls : ''), '">',
|
|
'<div unselectable="on" class="x-treegrid-text"', (c.align ? ' style="text-align: ' + c.align + ';"' : ''), '>',
|
|
(c.tpl ? c.tpl.apply(a) : a[c.dataIndex]),
|
|
'</div>',
|
|
'</td>'
|
|
);
|
|
}
|
|
|
|
buf.push(
|
|
'</tr><tr class="x-tree-node-ct"><td colspan="', cols.length, '">',
|
|
'<table class="x-treegrid-node-ct-table" cellpadding="0" cellspacing="0" style="table-layout: fixed; display: none; width: ', t.innerCt.getWidth() ,'px;"><colgroup>'
|
|
);
|
|
for(i = 0, len = cols.length; i<len; i++) {
|
|
buf.push('<col style="width: ', (cols[i].hidden ? 0 : cols[i].width) ,'px;" />');
|
|
}
|
|
buf.push('</colgroup></table></td></tr></tbody>');
|
|
|
|
if(bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()){
|
|
this.wrap = Ext.DomHelper.insertHtml("beforeBegin", n.nextSibling.ui.getEl(), buf.join(''));
|
|
}else{
|
|
this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf.join(''));
|
|
}
|
|
|
|
this.elNode = this.wrap.childNodes[0];
|
|
this.ctNode = this.wrap.childNodes[1].firstChild.firstChild;
|
|
var cs = this.elNode.firstChild.childNodes;
|
|
this.indentNode = cs[0];
|
|
this.ecNode = cs[1];
|
|
this.iconNode = cs[2];
|
|
this.anchor = cs[3];
|
|
this.textNode = cs[3].firstChild;
|
|
},
|
|
|
|
// private
|
|
animExpand : function(cb){
|
|
this.ctNode.style.display = "";
|
|
Ext.ux.tree.TreeGridNodeUI.superclass.animExpand.call(this, cb);
|
|
}
|
|
});
|
|
|
|
Ext.ux.tree.TreeGridRootNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {
|
|
isTreeGridNodeUI: true,
|
|
|
|
// private
|
|
render : function(){
|
|
if(!this.rendered){
|
|
this.wrap = this.ctNode = this.node.ownerTree.innerCt.dom;
|
|
this.node.expanded = true;
|
|
}
|
|
|
|
if(Ext.isWebKit) {
|
|
// weird table-layout: fixed issue in webkit
|
|
var ct = this.ctNode;
|
|
ct.style.tableLayout = null;
|
|
(function() {
|
|
ct.style.tableLayout = 'fixed';
|
|
}).defer(1);
|
|
}
|
|
},
|
|
|
|
destroy : function(){
|
|
if(this.elNode){
|
|
Ext.dd.Registry.unregister(this.elNode.id);
|
|
}
|
|
delete this.node;
|
|
},
|
|
|
|
collapse : Ext.emptyFn,
|
|
expand : Ext.emptyFn
|
|
}); |