| 12 |
- AUI.add("aui-data-browser",function(i){var R=i.Lang,n=R.isArray,f=R.isString,F=R.isNull,j=R.isFunction,M=i.getClassName,x="databrowser",C="bindUI",v="icon",g="search",G="circle-triangle-r",r="folder-open",d="image",u="renderUI",q="search",K="text",E="tree",s=x+"-"+q+"control",c=x+"-"+E+"control",L=function(S){for(var A in S){if(S[A].children||(S[A].leaf!=undefined&&!S[A].leaf)){L(S[A].children);}else{S[A].cssClass=(S[A].cssClass?" ":"")+N;}}},t=function(A){return A.hasClass(N);},b=function(A){return(A instanceof i.TreeView);},N=M(x,"results","item"),p=M(x,q),z=M(x,q,"list"),k=M(x,q,"list","item"),I=M(x,q,"view","only"),a=M(x,E),J=M(E,"node","leaf"),o=M(x,E,"view","only"),e='<div class="'+p+'"></div>',Q='<ul class="'+z+'"></ul>',B='<li class="'+N+" "+k+'-{1}">{0}</li>',m='<img src="{2}" title="{1}" alt="" /><div>{0}</div>',l='<span class="{2}" title="{1}"></span><div>{0}</div>',y='<div title="{1}">{0}</div>',D='<div class="'+a+'"></div>';var w=function(){var A=this;i.after(A._renderUISearchBrowserView,A,u);i.after(A._bindUISearchBrowserView,A,C);};w.ATTRS={displayName:{value:false},matchKey:{value:""}};w.prototype={_renderUISearchBrowserView:function(){var A=this;var S=i.Node.create(e);A.get("contentBox").append(S);A._viewNode=S;},_bindUISearchBrowserView:function(){var A=this;A.on("handleResponse",A._populateResultView,A);},hideView:function(){var A=this;A._viewNode.hide();},showView:function(){var A=this;A._viewNode.show();},_populateResultView:function(ab){var ag=this;var S=ab.response;var Y=ag.doBeforeLoadData(ab);if(Y&&!ab.error){ag.fire("dataReturn",ab);var ad=S.results;var U=ag.get("displayName");var V=ag.get("matchKey");var A=[];if(V){var X=[];var ah=[];var W=0;for(var ac=0;ac<ad.length;ac++){var ak=ad[ac][V];if(ak!=null){if(X[ak]!=null){A[X[ak]].data.push(ad[ac]);}else{X[ak]=W;A[W]={name:ak,data:[ad[ac]]};W++;}}else{ah.push(ad[ac]);}}A.sort(function(am,al){return(am.data.length==al.data.length?0:(am.data.length>al.data.length?-1:1));});if(ah.length>0){A.push({name:"",data:ah});}}else{A.push({name:"",data:ad});}ag._viewNode.html("");for(var ac=0;ac<A.length;ac++){var Z=i.Node.create(Q);for(var aa=0;aa<A[ac].data.length;aa++){var ai=A[ac].data[aa];var aj;var ae;var T;if(ai.imageUri){aj=m;ae=ai.imageUri;T=d;}else{if(ai.iconCss){aj=l;ae=ai.iconCss;T=v;}else{aj=y;T=K;}}aj=R.sub(B,[R.sub(aj,[(U?ai.name:""),ai.title||"",ae||""]),T]);var af=i.Node.create(aj);af.setData(x,ai);Z.append(af);}if(V){new i.Panel({collapsible:true,collapsed:(ag._viewNode.html()!=""),headerContent:A[ac].name,bodyContent:Z}).render(ag._viewNode);}else{ag._viewNode.append(Z);}}}},_uiSetHeight:function(V){var S=this;var A=parseInt(V);var T=S._viewNode;if(A){var U=T.getBorderWidth("tb")+T.getPadding("tb");T.setStyle("height",(A-U));}else{T.setStyle("height","");}}};var O=i.Component.build(s,i.Component,[i.DataSourceControl,i.InputTextControl,w]);var P=function(){var A=this;i.after(A._renderUITreeBrowserView,A,u);i.after(A._bindUITreeBrowserView,A,C);};P.ATTRS={rootLabel:{value:""}};P.prototype={_renderUITreeBrowserView:function(){var A=this;var T=A.get("contentBox");var V=A.get("dataSource");var S=i.Node.create(D);T.append(S);var U=new i.TreeView().render(S);U.on("expand",function(Y){var W=this;var X=Y.tree.node;W._expandNode(X,V);},A);A._treeView=U;A._viewNode=S;},_bindUITreeBrowserView:function(){var A=this;A._expandNode(A._treeView,A.get("dataSource"));},doBeforeLoadData:function(A){return true;},hideView:function(){var A=this;A._viewNode.hide();},showView:function(){var A=this;A._viewNode.show();},_expandNode:function(T,U){var A=this;if(T&&!T.hasChildNodes()){var S={cfg:(!b(T)?T._originalConfig:null),callback:{success:function(V){A._populateResultView(i.mix(V,{node:T}));}}};A.fire("dataRequest",{request:S});U.sendRequest(S);}},_populateResultView:function(Y){var S=this;var V=Y.response;var X=Y.node;var W=S.doBeforeLoadData(Y);if(W&&!Y.error&&X){S.fire("dataReturn",Y);var A=V.results;if(A.length>0){var T=S.get("rootLabel");if(T&&b(X)){var U=new i.TreeNode({label:T,children:A});X.appendChild(U);}else{i.each(A,function(Z){var aa=X.createNode.apply(S,[Z]);X.appendChild(aa);});}}}else{S.fire("dataError",Y);}},_uiSetHeight:function(V){var S=this;var A=parseInt(V);var T=S._viewNode;if(A){var U=T.getBorderWidth("tb")+T.getPadding("tb");T.setStyle("height",(A-U));}else{T.setStyle("height","");}}};var h=i.Component.build(c,i.Component,[i.DataSourceControl,P]);var H=i.Component.create({NAME:x,ATTRS:{currentView:{value:q},searchView:{value:null},treeView:{value:null}},prototype:{renderUI:function(){var A=this;var S=A.get("contentBox");var Y=A.get("searchView");var U=A.get("treeView");if(Y){var T=new O(i.mix({iconButton:G},Y)).render(S);A._searchBrowser=T;}else{S.addClass(o);}if(U){var X=new h(U).render(S);A._treeBrowser=X;}else{S.addClass(I);}if(Y&&U){var W=A._searchBrowser.comboBox;var V=new i.Toolbar({children:[{icon:g,handler:{fn:function(){var Z=this;Z.set("currentView",q);Z._updateViews();},context:A}},{icon:r,handler:{fn:function(){var Z=this;Z.set("currentView",E);Z._updateViews();},context:A}}]}).render(W.get("boundingBox"));}},bindUI:function(){var A=this;A.get("contentBox").delegate("click",function(T){var S=T.currentTarget;var U;if(t(S)){U=S.getData(x);}else{S=i.Widget.getByNode(S);if(S){U=S._originalConfig;}}if(U){A.fire("itemSelected",{item:U,node:S});}else{A.fire("itemError",T);}},"."+N+", ."+J);},syncUI:function(){var A=this;A._updateViews();A._syncDimensions();},_syncDimensions:function(){var W=this;var Y=W.get("height");if(Y){var S=W.get("boundingBox");var V=W._searchBrowser;var A=W._treeBrowser;var T=0;if(V){var U=V.comboBox;if(U){var X=U.get("boundingBox");T+=X.getBorderWidth("tb")+X.getMargin("tb")+X.get("offsetHeight");}}var Z=parseInt(W.get("height"),10)-T;if(V){V.set("height",Z);}if(A){A.set("height",Z);}}},_updateViews:function(){var A=this;var U=A.get("currentView");var S=A._searchBrowser;var T=A._treeBrowser;if(S&&T){if(U==q){T.hideView();S.showView();}else{if(U==E){S.hideView();T.showView();}}}}}});
- i.DataBrowser=H;},"@VERSION@",{requires:["aui-base","aui-datasource-control-base","aui-input-text-control","aui-tree","aui-panel"],skinnable:true});
|