﻿
__trGroup('Tree view');Ext.namespace("Credit360");Credit360.TreeNode=function(attr){attr=attr||{};Credit360.TreeNode.superclass.constructor.call(this,attr);};Ext.extend(Credit360.TreeNode,Ext.tree.AsyncTreeNode,{getAttribute:function(name){switch(name.toLowerCase()){case"sid":return this.attributes.nodeInfo.sid;case"name":case"description":return this.attributes.nodeInfo.text;case"children":if(this.childNodes&&this.childNodes.length>0){var sids="",sep="";for(var i=0;i<this.childNodes.length;i++){sids+=sep+this.childNodes[i].attributes.nodeInfo.sid;sep=",";}
return sids;}else{return null;}
case"class_name":return this.attributes.nodeInfo.className;}
return null;}});Credit360.AsyncTreeNode=function(attr){attr=attr||{};Credit360.AsyncTreeNode.superclass.constructor.call(this,attr);};Ext.extend(Credit360.AsyncTreeNode,Ext.tree.AsyncTreeNode,{getAttribute:function(name){switch(name.toLowerCase()){case"sid":return this.attributes.nodeInfo.sid;case"name":case"description":return this.attributes.nodeInfo.text;case"children":if(this.childNodes&&this.childNodes.length>0){var sids="",sep="";for(var i=0;i<this.childNodes.length;i++){sids+=sep+this.childNodes[i].attributes.nodeInfo.sid;sep=",";}
return sids;}else{return null;}
case"class_name":return this.attributes.nodeInfo.className;case"level":if(!this.level){var i=0;for(var node=this.parentNode;node;node=node.parentNode){++i;}
this.level=i;}
return this.level;}
return null;}});Credit360.TreeLoader=function(config){Credit360.TreeLoader.superclass.constructor.call(this,config);this.scriptletId=id;this.iconClassPrefix="security-class-";this.maxLabelLength=0;this.fetchDepth=1;Ext.apply(this,config);this.fetchOptions=Ext.apply({selectSid:-1,tagFilter:[],textFilter:""},this.fetchOptions);};Ext.extend(Credit360.TreeLoader,Ext.tree.TreeLoader,{uiProviders:{},clearOnLoad:true,isLoading:false,load:function(node,callback){if(this.clearOnLoad){while(node.firstChild){node.removeChild(node.firstChild);}}
var preloadResult={selPath:null};if(this.doPreload(node,preloadResult)){if(typeof callback=="function"){callback();}
this.includeRoot=false;this.selectSid=-1;this.fireEvent("load",this,node,preloadResult.selPath);}else{this.requestData(node,callback);}},doPreload:function(node,result){if(node.attributes.sid==this.fetchOptions.selectSid){result.selPath=node.getPath('sid');}
if(node.attributes.children||node.attributes.isEmpty){if((!node.childNodes||node.childNodes.length<1)&&node.attributes.children){var cs=node.attributes.children;node.beginUpdate();for(var i=0,len=cs.length;i<len;i++){var cn=node.appendChild(this.createNode(cs[i]));this.doPreload(cn,result);}
node.endUpdate();}
node.attributes.children=null;node.loaded=true;return true;}else{return false;}},requestData:function(node,callback){if(this.fireEvent("beforeload",this,node,callback)!==false){this.isLoading=true;this.fetchOptions.selectSid=this.fetchOptions.selectSid||-1;if(Ext.isArray(node.attributes.nodeInfo.sid)){node.isRoot=false;}
var childNodesFunction=Ext.isArray(node.attributes.nodeInfo.sid)?this.rpcProvider.getChildNodesMultipleParent:this.rpcProvider.getChildNodes;childNodesFunction(node.attributes.nodeInfo.sid,this.fetchDepth,this.fetchOptions,{success:this.handleResponse,error:this.handleFailure,scope:this},this,node,callback);}else{if(typeof callback=="function"){callback();}}},replaceRoot:function(root,newInfo){var ic=Ext.fly(root.getUI().getIconEl());ic.replaceClass('icon-'+root.attributes.nodeInfo.className.toLowerCase(),'icon-'+newInfo.className.toLowerCase());root.attributes=this.createNodeAttributes(newInfo);root.suspendEvents();root.getOwnerTree().suspendEvents();root.setText(newInfo.text);root.resumeEvents();root.getOwnerTree().resumeEvents();},processResponse:function(children,subtreeRootNode,callback){try{var preloadResult={selPath:null};if(this.fetchOptions.includeRoot&&subtreeRootNode.isRoot){if(children&&children.length>0){this.replaceRoot(subtreeRootNode,children[0]);}
this.doPreload(subtreeRootNode,preloadResult);}else{subtreeRootNode.attributes.children=children;this.doPreload(subtreeRootNode,preloadResult);}
if(typeof callback=="function"){callback(this,subtreeRootNode);}
return preloadResult.selPath;}catch(e){this.handleFailure(children,subtreeRootNode,callback);}},handleResponse:function(response,node,callback){if(Ext.isArray(node.attributes.nodeInfo.sid)){var rn=node.ownerTree.getEl().child('div.x-tree-node-el');rn.setVisibilityMode(Ext.Element.DISPLAY);rn.hide();}
var selPath=this.processResponse(response,node,callback);this.fetchOptions.selectSid=-1;this.fetchOptions.includeRoot=false;this.fireEvent("load",this,node,selPath);this.isLoading=false;},handleFailure:function(response,node,callback){this.fireEvent("loadexception",this,node,response);if(typeof callback=="function"){callback(this,node);}},isLoading:function(){return this.isLoading;},abort:function(){},createNodeAttributes:function(nodeInfo){var attr={text:Ext.util.Format.htmlEncode((this.maxLabelLength>0)?Ext.util.Format.ellipsis(nodeInfo.text,this.maxLabelLength):nodeInfo.text),leaf:nodeInfo.isLeaf,sid:nodeInfo.sid,nodeInfo:nodeInfo}
if(!nodeInfo.isLeaf&&nodeInfo.isEmpty){attr.children=[];attr.expanded=true;}
if(nodeInfo.children){attr.children=nodeInfo.children;}
if(nodeInfo.className.length){attr.iconCls=this.iconClassPrefix+nodeInfo.className.toLowerCase();}
if(typeof(nodeInfo.allowDrag)!='undefined'){attr.allowDrag=nodeInfo.allowDrag;}
if(typeof(nodeInfo.allowDrop)!='undefined'){attr.allowDrop=nodeInfo.allowDrop;}
if(typeof attr.uiProvider=='string'){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider);}
if(this.childLoader){attr.loader=this.childLoader;}else{attr.loader=this;}
return attr;},createNode:function(nodeInfo){var attr=this.createNodeAttributes(nodeInfo);var newNode=(attr.leaf?new Credit360.TreeNode(attr):new Credit360.AsyncTreeNode(attr));return newNode;}});Ext.override(Ext.tree.TreeNodeUI,{onSelectedChange:function(state){if(state){this.addClass("x-tree-selected");}else{this.removeClass("x-tree-selected");}}});Ext.override(Ext.tree.TreePanel,{selectPath:function(path,attr,callback){attr=attr||"id";var keys=path.split(this.pathSeparator);var v=keys.pop();if(keys.length>1){var f=function(success,node){if(success&&node){var n=node.findChild(attr,v);if(n){n.select();if(callback){callback(true,n);}}else if(callback){callback(false,n);}}else{if(callback){callback(false,n);}}};this.expandPath(keys.join(this.pathSeparator),attr,f);}else{this.root.select();if(callback){callback(true,this.root);}}}});Credit360.TreeViewListTemplate=function(config){Ext.apply(this,config);}
Credit360.TreeViewListTemplate.prototype={maxLabelLength:0,processPath:function(path,all){var label=path;if(this.maxLabelLength>0&&label.length>this.maxLabelLength){var pathPart=path.match(/^.+\//);var namePart=path.match(/[^\/]+$/);if(namePart&&namePart.length>0&&namePart[0].length>this.maxLabelLength){label=Ext.util.Format.ellipsis(namePart[0],this.maxLabelLength);}else if(pathPart&&pathPart.length>0&&namePart.length>0){label=Ext.util.Format.ellipsis(pathPart[0],this.maxLabelLength-namePart[0].length)+"/"+namePart[0];}}
return label;},overwrite:function(el,values,returnElement){Ext.getDom(el).innerHTML='';el=Ext.get(el);for(var i=0;i<values.length;++i){var v=values[i];if(v.moreData){el.createChild({tag:'div',cls:'treeViewMultiSelectListInfo itemSelector x-unselectable',html:__tr('More items are available, please filter/search your list.')});}else{var div=el.createChild({tag:'div',cls:'x-tree-node treeViewListEntry x-unselectable itemSelector treeViewListIcon-'+v.className.toLowerCase(),title:v.path,html:this.processPath(v.path,v)});div.on('dblclick',function(e,el){this.tv.setView('tree',this.sid);},{tv:this.treeView,sid:v.sid});}}},compile:function(){return this;}};Credit360.TreeView=Ext.extend(Ext.BoxComponent,{defaultHeight:155,minimumWidth:250,filterEmptyText:__tr('Search...'),makeFakeRoot:function(rootSid){if(typeof(rootSid)=='undefined'||!rootSid)
return null;return{isFake:true,sid:rootSid,text:__tr('Loading...'),className:'Container'};},getTreeEl:function(){return this.getEl();},changeRootBeforeRender:function(rootSid){switch(typeof(rootSid)){case"string":this.rootSid=rootSid.split(',');break;case"object":if(!Ext.isArray(rootSid)){throw"root sid "+this.rootSid+" is not an array";}
default:this.rootSid=rootSid;break;}},initComponent:function(){Credit360.TreeView.superclass.initComponent.call(this);this.changeRoot=this.changeRootBeforeRender;this.changeRoot(this.rootSid);this.addEvents("beforeCreateTreePanel","beforeCreateListViewStore","load","change","contextmenu");this.precreatedRootNode=(this.root&&typeof(this.root)=="object");if(!this.id)
throw"treeView: No id set";if(!this.handler)
throw"treeView: "+this.id+": The handler must be set";if(!this.root&&!(this.root=this.makeFakeRoot(this.rootSid))){throw"treeView: "+this.id+": The root node must be set";}
this.rootVisible=this.rootVisible===false?false:true;this.pleaseWaitMessageText=this.pleaseWaitMessageText||__tr('Loading...');this.noDataMessageText=this.noDataMessageText||__tr('No items found');this.isLoaded=false;this.selectedListViewIndex=null;this.treeContainer=null;this.listContainer=null;this.curViewType=null;this.windowToCloseOnLoad=null;this.filterSets=[];this.curTagFilter=[];this.curTextFilter="";this.filterTypePicker=null;this.maxLabelLength=this.initialConfig.maxLabelLength||0;this.defaultFetchOptions=this.initialConfig.defaultFetchOptions||{};},setFetchOptions:function(options){this.defaultFetchOptions=options;if(this.reloadView){this.reloadView(options);}},onRender:function(ct,position){if(!Ext.get(ct)){throw"treeView: "+this.id+": No element to render to";}
var t=new Ext.Template('<div>','<div id="{id}_filter" class="treeViewFilterToolbar" style="display:none;">','<table width="100%" cellpadding="0" cellspacing="0">','<tbody>','<tr valign="middle">','<td width="30px" style="padding:0px; display:none" id="{id}_filterTypeButtonContainer">','<a id="{id}_filterTypeButton" class="treeViewSearchType" href="javascript://">&#160;</a>','</td>','<td class="withoutPadding">','<div id="{id}_filterHeader" class="x-tab-panel-header x-unselectable x-tab-scrolling filterTag">','<div id="{id}_filterStripWrap" class="x-tab-strip-wrap">','<ul id="{id}_filterTagList" class="x-tab-strip x-tab-strip-top"></ul>','</div>','</div>','<div id="{id}_filterText" class="filterText"></div>','</td>','<td width="50px" id="{id}_filterViewImageContainer">','<div id="{id}_filterViewImage" class="treeViewSwitchView">','<button id="{id}_filterToggleButton" class="treeViewToggleButton" type="button" />','</div>','</td>','</tr>','</tbody>','</table>','</div>','<div id="{id}_tv" style="display:none;"></div>','<div id="{id}_lv" style="display:none;"></div>','</div>');this.el=Ext.get(t.append(ct,{id:this.id}));this.ctl('filterToggleButton').on('click',this.onSwitchViewBtnClicked,this,{stopEvent:true});this.viewType=this.viewType||"tree";this.hideTreeView();this.hideListView()
this.setView(this.viewType,this.initialConfig.selectedSid);if(typeof(this.showFilter)=="undefined")
this.showFilter=true;this.initFilter();},onResize:function(adjWidth,adjHeight,rawWidth,rawHeight){this.lastAdjWidth=adjWidth||this.lastAdjWidth;this.lastAdjHeight=adjHeight||this.lastAdjHeight;this.lastRawWidth=rawWidth||this.lastRawWidth;this.lastRawHeight=rawHeight||this.lastRawHeight;var ft=Ext.get(this.id+"_filter");var tv=Ext.get(this.id+"_tv");var lv=Ext.get(this.id+"_lv");if(adjHeight){if(!this.filterBarHeight){var filterBar=Ext.get(this.id+"_filter");this.filterBarHeight=((filterBar&&filterBar.isVisible())?filterBar.getHeight():0);}
var viewHeight=adjHeight-this.filterBarHeight;if(viewHeight>0){if(tv){var padding=parseInt(tv.getStyle("paddingTop"),10)+
parseInt(tv.getStyle("paddingBottom"),10)+
parseInt(tv.getStyle("borderTopWidth"),10)+
parseInt(tv.getStyle("borderBottomWidth"),10);tv.setHeight(viewHeight);if(this.tree){this.tree.setHeight(viewHeight-padding);}}
if(lv){var padding=parseInt(lv.getStyle("paddingTop"),10)+
parseInt(lv.getStyle("paddingBottom"),10)+
parseInt(lv.getStyle("borderTopWidth"),10)+
parseInt(lv.getStyle("borderBottomWidth"),10);lv.setHeight(viewHeight);if(this.listView){this.listView.setHeight(viewHeight-padding);}}}}
if(adjWidth){if(this.minimumWidth&&typeof(this.minimumWidth)=="number"){adjWidth=(adjWidth<this.minimumWidth)?this.minimumWidth:adjWidth;this.setWidth(adjWidth);}
if(ft){ft.setWidth(adjWidth);this.updateFilterToolbarSizes(adjWidth);}
if(tv){var padding=parseInt(tv.getStyle("paddingLeft"),10)+
parseInt(tv.getStyle("paddingRight"),10)+
parseInt(tv.getStyle("borderLeftWidth"),10)+
parseInt(tv.getStyle("borderRightWidth"),10);tv.setWidth(adjWidth);if(this.tree){this.tree.setWidth(adjWidth-padding);}}
if(lv){var padding=parseInt(lv.getStyle("paddingLeft"),10)+
parseInt(lv.getStyle("paddingRight"),10)+
parseInt(lv.getStyle("borderLeftWidth"),10)+
parseInt(lv.getStyle("borderRightWidth"),10);lv.setWidth(adjWidth);if(this.listView){this.listView.setWidth(adjWidth-padding);}}}},updateFilterToolbarSizes:function(adjWidth){var ft=this.ctl("filter");if(!adjWidth){adjWidth=ft.getWidth();}
var fcon=this.ctl("filterHeader");if(fcon){var padding=parseInt(ft.getStyle("paddingLeft"),10)+
parseInt(ft.getStyle("paddingRight"),10)+
parseInt(ft.getStyle("borderLeftWidth"),10)+
parseInt(ft.getStyle("borderRightWidth"),10);var tbc=this.ctl("filterTypeButtonContainer");var fvi=this.ctl("filterViewImageContainer");var fconWidth=adjWidth-
(tbc?tbc.getWidth():0)-
(fvi?fvi.getWidth():0)-
(isNaN(padding)?0:padding);fcon.setWidth(fconWidth);this.autoScrollTabs(adjWidth);}},ctl:function(n){return Ext.get(this.id+'_'+n);},initTreeView:function(selectSid){var img=this.ctl("filterViewImage");if(img){img.replaceClass("listViewSwitchView","treeViewSwitchView");}
var btn=this.ctl("filterToggleButton");if(btn){btn.replaceClass("listViewToggleButton","treeViewToggleButton");}
this.selectSidOnLoad=selectSid;if(this.treeContainer){var loader=this.tree.getLoader();if(loader&&loader.rpcProvider!=this.handler){this.changeHandler(this.handler);}
var root=this.tree.getRootNode();root.attributes.nodeInfo.sid=this.root.sid;this.treeContainer.setVisible(true);this.reloadView({selectSid:this.selectSidOnLoad});return;}
this.treeContainer=this.ctl('tv');this.treeContainer.addClass("treeViewWithBorderExt");this.treeContainer.setVisibilityMode(Ext.Element.DISPLAY);this.treeContainer.setVisible(true);if(!this.height){this.treeContainer.setHeight(this.defaultHeight);}
var loader=new Credit360.TreeLoader({rpcProvider:this.handler,iconClassPrefix:"icon-",fetchDepth:3,maxLabelLength:this.maxLabelLength,fetchOptions:this.defaultFetchOptions,listeners:{'load':function(loader,node,selPath){this.removePleaseWaitMessages();if(selPath){this.tree.selectPath(selPath,'sid',function(success,node){if(success){node.expand(false,false);node.ensureVisible();}
if(this.tree.selectCallback){var callback=this.tree.selectCallback,scope=this.tree.selectCallbackScope;this.tree.selectCallback=this.tree.selectCallbackScope=null;callback.apply(scope,[this,node]);}}.createDelegate(this));}else{var rn=this.tree.getRootNode();if((this.curTagFilter.length>0||this.curTextFilter.length>0)&&node==rn){if(node.isLoaded()&&(!node.childNodes||node.childNodes.length<1)){this.showNoDataMessage();}else{var f=function(n){if(n.childNodes&&n.childNodes.length>0){n.childNodes[0].expand(false,false,f);}};rn.expand(false,false,f);}}else if(node==rn){rn.expand(false,false,function(n){if(n.childNodes&&n.childNodes.length>0){n.childNodes[0].expand(false,false);}});}}
this.fireEvent('load',this,this.id);},scope:this}});loader.fetchOptions.selectSid=this.selectSidOnLoad;var treePanelConfig={animate:false,loader:loader,enableDD:false,containerScroll:true,rootVisible:this.rootVisible,height:this.treeContainer.getHeight(true),autoScroll:true,border:false};this.fireEvent('beforeCreateTreePanel',this,treePanelConfig);Ext.destroy(this.tree);this.tree=new Ext.tree.TreePanel(treePanelConfig);this.relayEvents(this.tree,['beforemovenode','movenode','nodedrop','beforenodedrop']);this.treeEditor=null;this.tree.setRootNode(loader.createNode(Ext.apply({path:'',isLeaf:false,isEmpty:false,className:'',showLeafNodes:true,moreData:false,text:'root'},this.root)));this.tree.on("click",this.onExtTreeClick,this);this.tree.on("contextmenu",function(node,evt){this.fireEvent("contextmenu",this.tree,node,evt)},this);this.tree.on("textChange",this.onTreeNodeTextChange,this);this.tree.getSelectionModel().on("selectionchange",function(model,node,last){this.fireEvent('change',this,node?node.attributes.nodeInfo.sid:null,node?node.attributes.nodeInfo:null);},this);this.tree.on("beforeload",this.onTreeBeforeLoad,this);if(Credit360.WindowResize){Credit360.WindowResize.fireResizeEvent(true);}
this.tree.render(this.treeContainer);if(this.root.isFake){loader.fetchOptions.includeRoot=true;this.tree.getRootNode().reload();}else{this.tree.getRootNode().expand(false,false);}},listDeleteNode:function(sid){var children=this.listViewStore.query('parentSid',sid,false);for(var i=0;i<children.getCount();++i){this.listDeleteNode(children.get(i).get('sid'));}
var recs=this.listViewStore.query('sid',sid,false);if(recs.getCount()==0)
return false;var r=recs.get(0);this.listViewStore.remove(recs.get(0));return true;},deleteNode:function(sid){if(this.curViewType=='tree'){var n=sid?this.searchChildNode(this.tree.getRootNode(),sid):this.getTreeSelectedNode();if(!n)
return false;var m=n?(n.nextSibling?n.nextSibling:(n.previousSibling?n.previousSibling:n.parentNode)):null;n.parentNode.removeChild(n);this.selectSid(m.attributes.nodeInfo.sid,true);return true;}
var idx=this.listView.getSelectedIndexes();if(idx.length>0){idx=idx[0];}else{idx=null;}
this.listViewStore.suspendEvents();var result=this.listDeleteNode(sid);this.listViewStore.resumeEvents();this.listView.refresh();var cnt=this.listViewStore.getCount();if(cnt==0){this.listLastSelectedSid=null;this.fireEvent('change',this,null,null);}else{if(idx>=cnt){idx=cnt-1;}else if(idx<0){idx=0;}
this.listView.select(idx<cnt?idx:idx-1);this.fireEvent('change',this,this.getSelectedSid(),this.getSelectedNode().attributes.nodeInfo);}
return result;},renameTreeNode:function(){var selNode=this.tree.getSelectionModel().getSelectedNode();if(selNode&&this.treeEditor){selNode.nameChangedByCreation=false;setTimeout(function(){this.treeEditor.editNode=selNode;this.treeEditor.startEdit(selNode.ui.textNode);}.createDelegate(this),10);}},createTreeNode:function(){var parent=this.tree.getSelectionModel().getSelectedNode();if(!parent)parent=this.tree.getRootNode();var node=parent.appendChild(new Ext.tree.TreeNode({leaf:false,text:"New folder",nodeInfo:{sid:-1,text:"",path:"",isLeaf:false,isEmpty:false,className:"",showLeafNodes:true,moreData:false}}));node.ensureVisible();this.tree.getSelectionModel().select(node);if(this.treeEditor){node.nameChangedByCreation=true;setTimeout(function(){this.treeEditor.editNode=node;this.treeEditor.startEdit(node.ui.textNode);}.createDelegate(this),10);}},selectTreeSid:function(sid,abortIfNotFound,callback,scope){var node=this.searchChildNode(this.tree.getRootNode(),sid);if(!node){if(abortIfNotFound!==true){this.tree.selectCallback=callback;this.tree.selectCallbackScope=scope;this.tree.getLoader().fetchOptions.selectSid=sid;this.tree.getLoader().fetchOptions.includeRoot=this.rootVisible;this.tree.getRootNode().reload();}
else if(callback){callback.apply(scope,[this,null]);}
return false;}else{this.tree.selectPath(node.getPath('sid'),'sid');node.expand(false,false);node.ensureVisible();if(callback){callback.apply(scope,[this,node]);}
return true;}},selectListSid:function(sid,abortIfNotFound,callback,scope){this.listLastSelectedSid=sid;for(var i=0;i<this.listViewStore.getTotalCount();i++){var r=this.listViewStore.getAt(i);if(!r)continue;if(r.get("sid")==sid){this.listView.select(i);var n=Ext.get(this.listView.getNode(i));var c=this.ctl("lv");n.scrollIntoView(c,false);if(callback){callback.apply(scope,[this,n]);}
return true;}}
this.listLastSelectedSid=null;if(callback){callback.apply(scope,[this,null]);}
return false;},searchChildNode:function(node,sid){if(node.id!="root"&&node.attributes.nodeInfo.sid==sid){return node;}
for(var i=0;node.childNodes&&i<node.childNodes.length;i++){var found=this.searchChildNode(node.childNodes[i],sid);if(found)return found;}
return null;},refreshTree:function(windowToClose){this.windowToCloseOnLoad=windowToClose;this.selectSidOnLoad=this.getSelectedSid();this.reloadView({selectSid:this.selectSidOnLoad});},refreshList:function(){this.reloadView({selectSid:this.getSelectedSid()});},removeAllChildNodes:function(node){while(node.firstChild){node.removeChild(node.firstChild).destroy();}},updateTreeRoot:function(root){if(typeof(root)!="object"||root instanceof Array){root=this.makeFakeRoot(root);}
if(!root){throw"treeView.changeTreeRoot: The root node must be set";}
this.curTagFilter=[];this.curTextFilter="";this.root=root;var rootNode=this.tree.getRootNode();this.removeAllChildNodes(rootNode);this.tree.getLoader().replaceRoot(rootNode,root);if(this.handler.getTagGroups){this.handler.getTagGroups(this.callbackGetTagGroups,this);}},changeTreeRoot:function(root){this.precreatedRootNode=(typeof(root)=="object"&&!(root instanceof Array));this.updateTreeRoot(root);this.reloadView({selectSid:this.selectSidOnLoad});},changeListRoot:function(root){this.updateTreeRoot(root);this.listViewStore.load({rpcParams:[this.root.sid,Ext.apply({selectSid:null,tagFilter:this.curTagFilter,textFilter:this.curTextFilter},this.defaultFetchOptions)]});},getTreeSelectedNode:function(){return this.tree?this.tree.getSelectionModel().getSelectedNode():null;},getTreeAllSelectedNodes:function(){return this.tree?[this.tree.getSelectionModel().getSelectedNode()]:[];},getTreeSelectedSid:function(){var n=this.getTreeSelectedNode();return n?n.attributes.nodeInfo.sid:null;},getTreeAllSelectedSids:function(){var n=this.getTreeSelectedNode();return n?[n.attributes.nodeInfo.sid]:[];},getListSelectedNode:function(){if(!this.listView)
return null;var recs=this.listView.getSelectedRecords();if(recs.length==0)
return null;return this.fakeListNode(recs[0]);},getListAllSelectedNodes:function(){if(!this.listView)
return null;var recs=this.listView.getSelectedRecords();var arr=[];for(var i=0;i<recs.length;i++){arr.push(this.fakeListNode(recs[0]));}
return arr;},getListSelectedSid:function(){if(!this.listView)
return null;var recs=this.listView.getSelectedRecords();if(recs.length==0)
return null;return recs[0].get('sid');},getListAllSelectedSids:function(){if(!this.listView)
return null;var recs=this.listView.getSelectedRecords();var arr=[];for(var i=0;i<recs.length;i++){arr.push(recs[i].get('sid'));}
return arr;},replaceTreeNodeIcon:function(sid,oldClass,newClass){var node=this.getTreeNode(sid);if(!node)
return false;node.attributes.nodeInfo.className=newClass;var ic=Ext.fly(node.ui.getIconEl());ic.replaceClass('icon-'+oldClass.toLowerCase(),'icon-'+newClass.toLowerCase());return true;},replaceListNodeIcon:function(sid,oldClass,newClass){var recs=this.listViewStore.query('sid',sid,false);if(recs.getCount()==0)
return false;var r=recs.get(0);r.set('className',newClass);},getTreeNode:function(sid){var selNode=this.tree.getSelectionModel().getSelectedNode();if(selNode){var node=this.searchChildNode(selNode,sid);if(node)return node;}
return this.searchChildNode(this.tree.getRootNode(),sid);},fakeListNode:function(r){if(r.data.moreData){return null;}
return{attributes:{nodeInfo:r.data},getAttribute:function(name){switch(name.toLowerCase()){case"sid":return this.attributes.nodeInfo.sid;case"name":case"description":return this.attributes.nodeInfo.text;case"children":return null;case"class_name":return this.attributes.nodeInfo.className;case"path_elements":return this.attributes.nodeInfo.pathElements;}
return null;}};},getListNode:function(sid){var recs=this.listViewStore.query('sid',sid,false);if(recs.getCount()==0)
return null;return this.fakeListNode(recs.get(0));},getNodeAttribute:function(sid,attributeName){var node=this.getNode(sid);if(node){return node.getAttribute(attributeName);}
return null;},getNodeLabel:function(sid){var node=this.getNode(sid);if(node){return node.attributes.nodeInfo.text;}
return __tr('unknown name');},onExtTreeClick:function(node,ev){if(!node.isExpanded()){node.expand(false,false);}},onTreeNodeTextChange:function(node,newText,oldText){if(node.nameChangedByCreation){this.handler.createNode(node.attributes.nodeInfo.sid,newText,function(){this.node.reload();},{scope:this,node:node});}else{if(newText==oldText){if(this.maxLabelLength>0){node.text=Ext.util.Format.ellipsis(newText,this.maxLabelLength);}
return;}
this.handler.renameNode(node.attributes.nodeInfo.sid,newText,function(){this.node.enable();this.node.parentNode.reload();},{scope:this,node:node});node.disable();}
node.nameChangedByCreation=null;},onSwitchViewBtnClicked:function(){if(this.nextViewType){this.setView(this.nextViewType,this.getSelectedSid());}},changeTreeHandler:function(handler,reload){this.handler=handler;this.tree.getLoader().rpcProvider=this.handler;if(reload){this.reloadView();}},changeListHandler:function(handler,reload){if(this.listViewStore){delete this.listViewStore;this.listViewStore=null;}
this.handler=handler;this.listViewStore=this.createListViewStore();this.listView.setStore(this.listViewStore);},onTreeBeforeLoad:function(node){if(this.curViewType!="tree"){return;}
this.hideNoDataMessage();if(node.isHiddenRoot()){if(!this.tree.pleaseWait){this.tree.pleaseWait=this.tree.getEl().child("div.x-panel-body").createChild({tag:"div",html:this.pleaseWaitMessageText,cls:"treeViewMultiSelectListInfo"});this.tree.pleaseWait.setVisibilityMode(Ext.Element.DISPLAY);}
this.tree.pleaseWait.setVisible(true);}},removePleaseWaitMessages:function(){if(this.tree&&this.tree.pleaseWait){this.tree.pleaseWait.setVisible(false);}},showNoDataMessage:function(){if(this.tree){if(!this.tree.noDataMessage){this.tree.noDataMessage=this.tree.getEl().child("div.x-panel-body").createChild({tag:"div",html:this.noDataMessageText,cls:"treeViewMultiSelectListInfo"});this.tree.noDataMessage.setVisibilityMode(Ext.Element.DISPLAY);}
this.tree.noDataMessage.setVisible(true);if(this.rootVisible){var rn=this.tree.getEl().child('ul.x-tree-root-ct');rn.setVisibilityMode(Ext.Element.DISPLAY);rn.hide();}}},hideNoDataMessage:function(){if(this.tree&&this.tree.noDataMessage){this.tree.noDataMessage.setVisible(false);if(this.rootVisible){this.tree.getEl().child('ul.x-tree-root-ct').show();}}},createListViewStore:function(){var fields=[{name:"parentSid"},{name:"sid"},{name:"text"},{name:"path"},{name:"pathElements"},{name:"isLeaf"},{name:"isEmpty"},{name:"className"},{name:"showLeafNodes"},{name:"moreData"}];this.fireEvent('beforeCreateListViewStore',this,fields);var rpc=null;if(Ext.isArray(this.root.sid)){rpc=this.handler.getListMultipleParent;}
else{rpc=this.handler.getList;}
var store=new Ext.data.JayrockStore({rpc:rpc,fields:fields});store.on("load",this.onListViewLoaded,this);store.on("beforeload",this.onListBeforeLoad,this);return store;},initListView:function(selectSid){var img=this.ctl("filterViewImage");if(img){img.replaceClass("treeViewSwitchView","listViewSwitchView");}
var btn=this.ctl("filterToggleButton");if(btn){btn.replaceClass("treeViewToggleButton","listViewToggleButton");}
this.selectSidOnLoad=selectSid;if(this.listContainer){var loader=this.tree.getLoader();if(this.listViewStore.rpc!=this.handler.getList){this.changeHandler(this.handler);}
this.listContainer.setVisible(true);this.reloadView({selectSid:this.selectSidOnLoad});return;}
this.listContainer=this.ctl('lv');this.listContainer.addClass("treeViewListWithBorderExt");this.listContainer.setVisibilityMode(Ext.Element.DISPLAY);this.listContainer.setVisible(true);if(!this.height){this.listContainer.setHeight(this.defaultHeight);}
this.listViewStore=this.createListViewStore();var dataViewConfig={tpl:new Credit360.TreeViewListTemplate({maxLabelLength:this.maxLabelLength,treeView:this}),renderTo:this.listContainer.createChild({tag:"div"}),emptyText:'<div class="treeViewMultiSelectListInfo x-unselectable">'+Ext.util.Format.htmlEncode(this.noDataMessageText)+'</div>',loadingText:'<div class="treeViewMultiSelectListInfo x-unselectable">'+Ext.util.Format.htmlEncode(this.pleaseWaitMessageText)+'</div>',singleSelect:!this.multiSelectList,multiSelect:this.multiSelectList,selectedClass:"treeViewListSelected",store:this.listViewStore,itemSelector:'.itemSelector'};this.listView=new Ext.DataView(dataViewConfig);this.listView.on("beforeselect",this.onListBeforeSelect,this);this.listView.on("selectionchange",this.onListSelChanged,this);if(Credit360.WindowResize){Credit360.WindowResize.fireResizeEvent(true);}
this.listViewStore.load({rpcParams:[this.root.sid,Ext.apply({selectSid:null,tagFilter:this.curTagFilter,textFilter:this.curTextFilter},this.defaultFetchOptions)]});},onListBeforeLoad:function(store,opt){if(this.curViewType!="list"){return;}
this.isLoaded=false;},onListViewLoaded:function(){if(this.curViewType!="list"){return;}
if(this.windowToCloseOnLoad){this.windowToCloseOnLoad.close();this.windowToCloseOnLoad=null;}
if(this.selectSidOnLoad){var sid=this.selectSidOnLoad;this.selectSidOnLoad=null;if(!this.selectSid(sid)){this.fireEvent('change',this,null,null);}}else{this.listLastSelectedSid=null;}
if(!this.isLoaded){this.isLoaded=true;this.fireEvent('load',this);}},setView:function(viewType,selectSid){if(typeof(this.hideView)=="function"){this.hideView();}
this.removePleaseWaitMessages();switch(viewType.toLowerCase()){case"tree":this.curViewType="tree";this.nextViewType="list";this.initView=this.initTreeView;this.hideView=this.hideTreeView;this.selectSid=this.selectTreeSid;this.getSelectedNode=this.getTreeSelectedNode;this.getSelectedSid=this.getTreeSelectedSid;this.getAllSelectedNodes=this.getTreeAllSelectedNodes;this.getAllSelectedSids=this.getTreeAllSelectedSids;this.getNode=this.getTreeNode;this.replaceNodeIcon=this.replaceTreeNodeIcon;this.changeRoot=this.changeTreeRoot;this.refresh=this.refreshTree;this.reloadView=this.reloadTree;this.changeHandler=this.changeTreeHandler;this.createNode=this.createTreeNode;this.renameNode=this.renameTreeNode;break;case"list":this.curViewType="list";this.nextViewType="tree";this.initView=this.initListView;this.hideView=this.hideListView;this.selectSid=this.selectListSid;this.getNode=this.getListNode;this.replaceNodeIcon=this.replaceListNodeIcon;this.changeRoot=this.changeListRoot;this.refresh=this.refreshList;this.reloadView=this.reloadList;this.changeHandler=this.changeListHandler;this.getSelectedNode=this.getListSelectedNode;this.getSelectedSid=this.getListSelectedSid;this.getAllSelectedNodes=this.getListAllSelectedNodes;this.getAllSelectedSids=this.getListAllSelectedSids;this.createNode=this.listNotImpl;this.renameNode=this.listNotImpl;break;default:this.nextViewType="tree";alert(__tr('Unknown view type specified: ')+viewType);break;}
this.initView.call(this,selectSid);this.onResize(this.lastAdjWidth,this.lastAdjHeight,this.lastRawWidth,this.lastRawHeight);},hideTreeView:function(){var c=this.treeContainer?this.treeContainer:this.ctl("tv");if(c){c.setVisibilityMode(Ext.Element.DISPLAY);c.setVisible(false);}},hideListView:function(){var c=this.listContainer?this.listContainer:this.ctl("lv");if(c){c.setVisibilityMode(Ext.Element.DISPLAY);c.setVisible(false);}},listNotImpl:function(){alert(__tr('The requested operation is not available in list view mode.'));},reloadTree:function(opt){if(this.precreatedRootNode){opt.includeRoot=false;}else{opt.includeRoot=this.rootVisible;}
Ext.apply(this.tree.getLoader().fetchOptions,opt);this.tree.getRootNode().reload();},reloadList:function(opt){var fetchOptions=Ext.apply({selectSid:null,tagFilter:this.curTagFilter,textFilter:this.curTextFilter},this.defaultFetchOptions);Ext.apply(fetchOptions,opt);this.listViewStore.reload({rpcParams:[this.root.sid,fetchOptions]});},onListBeforeSelect:function(view,el,sel){if(!el.nodeIndex){return true;}
var idx=view.indexOf(el.nodeIndex);var record=this.listViewStore.getAt(idx);if(!record){return true;}
if(record.get("moreData")){if(this.selectedListViewIndex){this.listView.select(this.selectedListViewIndex);}
return false;}
return true;},onListSelChanged:function(view,sel){if(sel.length<1)
return;this.selectedListViewIndex=view.indexOf(sel[0]);var record=this.listViewStore.getAt(this.selectedListViewIndex);var sid=record?record.get('sid'):null;var changed=sid!==this.listLastSelectedSid;this.listLastSelectedSid=sid;if(changed){this.fireEvent('change',this,sid,this.getSelectedNode().attributes.nodeInfo);}},initFilter:function(){if(!this.showFilter)
return;this.filterType="text";this.nextFilterType="tag";this.switchFilterType(this.filterType);var filterToolbarDiv=this.ctl("filter");if(!filterToolbarDiv)return;filterToolbarDiv.dom.style.display="";if(this.handler.getTagGroups){this.handler.getTagGroups(this.callbackGetTagGroups,this);}
this.filterTextInput=new Ext.ux.SearchField({emptyText:this.filterEmptyText,renderTo:this.ctl("filterText"),listeners:{"search":function(){this.applyFilters(false);this.setView("list",this.getSelectedSid());},"clear":function(ctl){this.applyFilters(false);this.setView("tree",this.getSelectedSid());},scope:this}});if(this.filter&&this.filter!=""){this.filterTextInput.setValue(this.filter);this.applyFilters(false);this.setView("list",this.getSelectedSid());}},switchFilterType:function(t){var type=this.nextFilterType;if(typeof(t)=="string"){type=t;}
var btn=this.ctl("filterTypeButton");var tag=this.ctl("filterHeader");var text=this.ctl("filterText");tag.setVisibilityMode(Ext.Element.DISPLAY);text.setVisibilityMode(Ext.Element.DISPLAY);tag.setVisible(false);text.setVisible(false);switch(type){case"tag":this.nextFilterType="text";tag.setVisible(true);this.autoScrollTabs();break;case"text":this.nextFilterType="tag";text.setVisible(true);break;default:alert(__tr('Unknown filter type specified: ')+type);break;}},callbackGetTagGroups:function(tga){var items=[{name:"text",label:__tr('Text search'),cls:"itempicker-list-item"}];if(tga.length!=0){items.push({name:"tag",label:__tr('Search by category'),cls:"itempicker-list-item"});}
if(this.filterTypePicker){delete this.filterTypePicker;this.filterTypePicker=null;}
this.filterTypePicker=new Ext.ux.ItemPicker({tpl:"<div class='{cls}'>{label}</div>",items:items});this.filterTypePicker.on("select",function(picker,index,item){this.switchFilterType(item.name);},this);var typeBtn=this.ctl("filterTypeButton");typeBtn.on("click",function(){this.filterTypePicker.show(typeBtn);},this);var typeBtnContainerCell=typeBtn.parent("td",true);this.switchFilterType("text");for(var i=0;i<this.filterSets.length;i++){this.filterSets[i].destroy();}
this.filterSets=[];if(tga.length==0){typeBtnContainerCell.style.display="none";return;}
typeBtnContainerCell.style.display="";var container=this.ctl("filterTagList");for(var i=0;i<tga.length;i++){var filter=new treeViewFilterSet(tga[i].id,tga[i].name,this.handler,{labelName:"tag"});filter.render(container);filter.on("apply",this.onTagFilterChanged,this);this.filterSets.push(filter);}
this.updateFilterToolbarSizes();},onTagFilterChanged:function(p,i){this.applyFilters();},applyFilters:function(doReload){this.curTagFilter=[];for(var i=0;i<this.filterSets.length;i++){if(!this.filterSets[i]){continue;}
var items=this.filterSets[i].getSelectedItems();if(items.length){var index=this.curTagFilter.push({tagGroupId:this.filterSets[i].tagGroupId,tagIds:[]})-1;for(var j=0;j<items.length;j++){this.curTagFilter[index].tagIds.push(items[j].id);}}}
this.curTextFilter=this.filterTextInput.getValue();var opt={tagFilter:this.curTagFilter,textFilter:this.curTextFilter};if(doReload!==false){this.reloadView(opt);}else{if(this.tree){Ext.apply(this.tree.getLoader().fetchOptions,opt);}}},enableTabScroll:true,scrollIncrement:0,scrollRepeatInterval:400,scrollDuration:.35,animScroll:true,autoScrollTabs:function(){if(this.filterSets.length<1){return;}
if(!this.stripWrap){this.stripWrap=this.ctl("filterStripWrap");}
if(!this.header){this.header=this.ctl("filterHeader");}
if(!this.edge){this.edge=this.filterSets[this.filterSets.length-1].header;}
var count=this.filterSets.length;var ow=this.header.dom.offsetWidth;var tw=this.header.dom.clientWidth;var wrap=this.stripWrap;var wd=wrap.dom;var cw=wd.offsetWidth;var pos=this.getScrollPos();var l=this.getScrollWidth();if(!this.enableTabScroll||count<1||cw<20){return;}
if(l<=tw){wd.scrollLeft=0;wrap.setWidth(tw);if(this.scrolling){this.scrolling=false;this.header.removeClass('x-tab-scrolling');this.scrollLeft.hide();this.scrollRight.hide();if(Ext.isAir){wd.style.marginLeft='';wd.style.marginRight='';}}}else{if(!this.scrolling){this.header.addClass('x-tab-scrolling');if(Ext.isAir){wd.style.marginLeft='18px';wd.style.marginRight='18px';}}
tw-=wrap.getMargins('lr');wrap.setWidth(tw>20?tw:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers();}else{this.scrollLeft.show();this.scrollRight.show();}}
this.scrolling=true;if(pos>(l-tw)){wd.scrollLeft=l-tw;}else{this.scrollToTab(this.activeTab,false);}
this.updateScrollButtons();}},createScrollers:function(){var h=this.stripWrap.dom.offsetHeight;var sl=this.header.insertFirst({cls:'x-tab-scroller-left'});sl.setHeight(h);sl.addClassOnOver('x-tab-scroller-left-over');this.leftRepeater=new Ext.util.ClickRepeater(sl,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=sl;var sr=this.header.insertFirst({cls:'x-tab-scroller-right'});sr.setHeight(h);sr.addClassOnOver('x-tab-scroller-right-over');this.rightRepeater=new Ext.util.ClickRepeater(sr,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=sr;},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()+
this.edge.getWidth()+5;},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0;},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0;},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this};},getScrollIncrement:function(){return this.scrollIncrement||(this.resizeTabs?this.lastTabWidth+2:100);},scrollToTab:function(item,animate){if(!item){return;}
var el=this.getTabEl(item);var pos=this.getScrollPos(),area=this.getScrollArea();var left=Ext.fly(el).getOffsetsTo(this.stripWrap)[0]+pos;var right=left+el.offsetWidth;if(left<pos){this.scrollTo(left,animate);}else if(right>(pos+area)){this.scrollTo(right-area,animate);}},scrollTo:function(pos,animate){this.stripWrap.scrollTo('left',pos,animate?this.getScrollAnim():false);if(!animate){this.updateScrollButtons();}},onWheel:function(e){var d=e.getWheelDelta()*this.wheelIncrement*-1;e.stopEvent();var pos=this.getScrollPos();var newpos=pos+d;var sw=this.getScrollWidth()-this.getScrollArea();var s=Math.max(0,Math.min(sw,newpos));if(s!=pos){this.scrollTo(s,false);}},onScrollRight:function(){var sw=this.getScrollWidth()-this.getScrollArea();var pos=this.getScrollPos();var s=Math.min(sw,pos+this.getScrollIncrement());if(s!=pos){this.scrollTo(s,this.animScroll);}},onScrollLeft:function(){var pos=this.getScrollPos();var s=Math.max(0,pos-this.getScrollIncrement());if(s!=pos){this.scrollTo(s,this.animScroll);}},updateScrollButtons:function(){var pos=this.getScrollPos();this.scrollLeft[pos==0?'addClass':'removeClass']('x-tab-scroller-left-disabled');this.scrollRight[pos>=(this.getScrollWidth()-this.getScrollArea())?'addClass':'removeClass']('x-tab-scroller-right-disabled');},destroy:function(){for(var i=0;i<this.filterSets.length;i++){this.filterSets[i].destroy();}
Ext.destroy(this.tree);}});Ext.reg('Credit360.TreeView',Credit360.TreeView);