📄 rollinglist.js
字号:
/* Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details*/if(!dojo._hasResource["dojox.widget.RollingList"]){dojo._hasResource["dojox.widget.RollingList"]=true;dojo.provide("dojox.widget.RollingList");dojo.experimental("dojox.widget.RollingList");dojo.require("dijit._Templated");dojo.require("dijit.layout.ContentPane");dojo.require("dijit.Menu");dojo.require("dojox.html.metrics");dojo.require("dojo.i18n");dojo.requireLocalization("dojox.widget","RollingList",null,"ROOT");dojo.declare("dojox.widget._RollingListPane",[dijit.layout.ContentPane,dijit._Templated,dijit._Contained],{templateString:"<div class=\"dojoxRollingListPane\"><table><tbody><tr><td dojoAttachPoint=\"containerNode\"></td></tr></tbody></div>",parentWidget:null,parentPane:null,store:null,items:null,query:null,queryOptions:null,_focusByNode:true,_setContentAndScroll:function(_1){this._setContent(_1);this.parentWidget.scrollIntoView(this);},startup:function(){if(this._started){return;}if(this.store&&this.store.getFeatures()["dojo.data.api.Notification"]){window.setTimeout(dojo.hitch(this,function(){this.connect(this.store,"onSet","_onSetItem");this.connect(this.store,"onNew","_onNewItem");this.connect(this.store,"onDelete","_onDeleteItem");}),1);}this.connect(this.focusNode||this.domNode,"onkeypress","_focusKey");this.parentWidget._updateClass(this.domNode,"Pane");this.inherited(arguments);},_focusKey:function(e){if(e.charOrCode==dojo.keys.BACKSPACE){dojo.stopEvent(e);return;}else{if(e.charOrCode==dojo.keys.LEFT_ARROW&&this.parentPane){this.parentPane.focus();this.parentWidget.scrollIntoView(this.parentPane);}else{if(e.charOrCode==dojo.keys.ENTER){this.parentWidget.onExecute();}}}},focus:function(_3){if(this.parentWidget._focusedPane!=this){this.parentWidget._focusedPane=this;this.parentWidget.scrollIntoView(this);if(this._focusByNode&&(!this.parentWidget._savedFocus||_3)){try{(this.focusNode||this.domNode).focus();}catch(e){}}}},_loadCheck:function(_4){if(!this._started){var c=this.connect(this,"startup",function(){this.disconnect(c);this._loadCheck(_4);});}var _6=this.domNode&&this._isShown();if((this.store||this.items)&&(_4||(this.refreshOnShow&&_6)||(!this.isLoaded&&_6))){this._doQuery();}},_doQuery:function(){this.isLoaded=false;if(this.items){var _7=0,_8=this.store,_9=this.items;dojo.forEach(_9,function(_a){if(!_8.isItemLoaded(_a)){_7++;}});if(_7===0){this.onItems();}else{var _b=dojo.hitch(this,function(_c){_7--;if((_7)===0){this.onItems();}});this._setContentAndScroll(this.onLoadStart());dojo.forEach(_9,function(_d){if(!_8.isItemLoaded(_d)){_8.loadItem({item:_d,onItem:_b});}});}}else{this._setContentAndScroll(this.onFetchStart());this.store.fetch({query:this.query,onComplete:function(_e){this.items=_e;this.onItems();},onError:function(e){this._onError("Fetch",e);},scope:this});}},_hasItem:function(_10){var _11=this.items||[];for(var i=0,_13;(_13=_11[i]);i++){if(this.parentWidget._itemsMatch(_13,_10)){return true;}}return false;},_onSetItem:function(_14,_15,_16,_17){if(this._hasItem(_14)){this._loadCheck(true);}},_onNewItem:function(_18,_19){var sel;if((!_19&&!this.parentPane)||(_19&&this.parentPane&&this.parentPane._hasItem(_19.item)&&(sel=this.parentPane._getSelected())&&this.parentWidget._itemsMatch(sel.item,_19.item))){this.items.push(_18);this._loadCheck(true);}else{if(_19&&this.parentPane&&this._hasItem(_19.item)){this._loadCheck(true);}}},_onDeleteItem:function(_1b){if(this._hasItem(_1b)){this.items=dojo.filter(this.items,function(i){return (i!=_1b);});this._loadCheck(true);}},onFetchStart:function(){return this.loadingMessage;},onFetchError:function(_1d){return this.errorMessage;},onLoadStart:function(){return this.loadingMessage;},onLoadError:function(_1e){return this.errorMessage;},onItems:function(){this._onLoadHandler();}});dojo.declare("dojox.widget._RollingListGroupPane",[dojox.widget._RollingListPane],{templateString:"<div><div dojoAttachPoint=\"containerNode\"></div>"+"<div dojoAttachPoint=\"menuContainer\">"+"<div dojoAttachPoint=\"menuNode\"></div>"+"</div></div>",_menu:null,_loadCheck:function(_1f){var _20=this._isShown();if((this.store||this.items)&&(_1f||(this.refreshOnShow&&_20)||(!this.isLoaded&&_20))){this._doQuery();}},_setContent:function(_21){if(!this._menu){this.inherited(arguments);}},onItems:function(){var _22,_23=false;if(this._menu){_22=this._getSelected();this._menu.destroyRecursive();}this._menu=this._getMenu();var _24,_25;if(this.items.length){dojo.forEach(this.items,function(_26){_24=this.parentWidget._getMenuItemForItem(_26,this);if(_24){if(_22&&this.parentWidget._itemsMatch(_24.item,_22.item)){_25=_24;}this._menu.addChild(_24);}},this);}else{_24=this.parentWidget._getMenuItemForItem(null,this);if(_24){this._menu.addChild(_24);}}if(_25){this._setSelected(_25);if((_22&&!_22.children&&_25.children)||(_22&&_22.children&&!_25.children)){var _27=this.parentWidget._getPaneForItem(_25.item,this,_25.children);if(_27){this.parentWidget.addChild(_27,this.getIndexInParent()+1);}else{this.parentWidget._removeAfter(this);this.parentWidget._onItemClick(null,this,_25.item,_25.children);}}}else{if(_22){this.parentWidget._removeAfter(this);}}this.containerNode.innerHTML="";this.containerNode.appendChild(this._menu.domNode);this.parentWidget.scrollIntoView(this);this.inherited(arguments);},startup:function(){this.inherited(arguments);this.parentWidget._updateClass(this.domNode,"GroupPane");},focus:function(_28){if(this._menu){if(this._pendingFocus){this.disconnect(this._pendingFocus);}delete this._pendingFocus;var _29=this._menu.focusedChild;if(!_29){var _2a=dojo.query(".dojoxRollingListItemSelected",this.domNode)[0];if(_2a){_29=dijit.byNode(_2a);}}if(!_29){_29=this._menu.getChildren()[0]||this._menu;}this._focusByNode=false;if(_29.focusNode){if(!this.parentWidget._savedFocus||_28){try{_29.focusNode.focus();}catch(e){}}window.setTimeout(function(){try{dijit.scrollIntoView(_29.focusNode);}catch(e){}},1);}else{if(_29.focus){if(!this.parentWidget._savedFocus||_28){_29.focus();}}else{this._focusByNode=true;}}this.inherited(arguments);}else{if(!this._pendingFocus){this._pendingFocus=this.connect(this,"onItems","focus");}}},_getMenu:function(){var _2b=this;var _2c=new dijit.Menu({parentMenu:this.parentPane?this.parentPane._menu:null,onCancel:function(_2d){if(_2b.parentPane){_2b.parentPane.focus(true);}},_moveToPopup:function(evt){if(this.focusedChild&&!this.focusedChild.disabled){this.focusedChild._onClick(evt);}}},this.menuNode);this.connect(_2c,"onItemClick",function(_2f,evt){if(_2f.disabled){return;}evt.alreadySelected=dojo.hasClass(_2f.domNode,"dojoxRollingListItemSelected");if(evt.alreadySelected&&((evt.type=="keypress"&&evt.charOrCode!=dojo.keys.ENTER)||(evt.type=="internal"))){var p=this.parentWidget.getChildren()[this.getIndexInParent()+1];if(p){p.focus(true);this.parentWidget.scrollIntoView(p);}}else{this._setSelected(_2f,_2c);this.parentWidget._onItemClick(evt,this,_2f.item,_2f.children);if(evt.type=="keypress"&&evt.charOrCode==dojo.keys.ENTER){this.parentWidget.onExecute();}}});if(!_2c._started){_2c.startup();}return _2c;},_getSelected:function(_32){if(!_32){_32=this._menu;}if(_32){var _33=this._menu.getChildren();for(var i=0,_35;(_35=_33[i]);i++){if(dojo.hasClass(_35.domNode,"dojoxRollingListItemSelected")){return _35;}}}return null;},_setSelected:function(_36,_37){if(!_37){_37=this._menu;}if(_37){dojo.forEach(_37.getChildren(),function(i){this.parentWidget._updateClass(i.domNode,"Item",{"Selected":(_36&&(i==_36&&!i.disabled))});},this);}}});dojo.declare("dojox.widget.RollingList",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:"<div class=\"dojoxRollingList ${className}\" dojoAttachPoint=\"containerNode\" dojoAttachEvent=\"onkeypress:_onKey\"></div>",className:"",store:null,query:null,queryOptions:null,childrenAttrs:["children"],parentAttr:"",value:null,_itemsMatch:function(_39,_3a){if(!_39&&!_3a){return true;}else{if(!_39||!_3a){return false;}}return (_39==_3a||(this._isIdentity&&this.store.getIdentity(_39)==this.store.getIdentity(_3a)));},_removeAfter:function(idx){if(typeof idx!="number"){idx=this.getIndexOfChild(idx);}if(idx>=0){dojo.forEach(this.getChildren(),function(c,i){if(i>idx){this.removeChild(c);c.destroyRecursive();}},this);}var _3e=this.getChildren(),_3f=_3e[_3e.length-1];var _40=null;while(_3f&&!_40){var val=_3f._getSelected?_3f._getSelected():null;if(val){_40=val.item;}_3f=_3f.parentPane;}if(!this._setInProgress){this._setValue(_40);}},addChild:function(_42,_43){if(_43>0){this._removeAfter(_43-1);}this.inherited(arguments);if(!_42._started){_42.startup();}this.layout();if(!this._savedFocus){_42.focus();}},_updateClass:function(_44,_45,_46){if(!this._declaredClasses){this._declaredClasses=("dojoxRollingList "+this.className).split(" ");}dojo.forEach(this._declaredClasses,function(c){if(c){dojo.addClass(_44,c+_45);for(var k in _46||{}){dojo.toggleClass(_44,c+_45+k,_46[k]);}dojo.toggleClass(_44,c+_45+"FocusSelected",(dojo.hasClass(_44,c+_45+"Focus")&&dojo.hasClass(_44,c+_45+"Selected")));dojo.toggleClass(_44,c+_45+"HoverSelected",(dojo.hasClass(_44,c+_45+"Hover")&&dojo.hasClass(_44,c+_45+"Selected")));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -