Changeset 367
- Timestamp:
- 07/19/12 14:23:21 (13 years ago)
- Location:
- Dev/branches/rest-dojo-ui/client/rft
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
Dev/branches/rest-dojo-ui/client/rft/elastic/ElasticReadStore.js
r365 r367 5 5 6 6 dojo.declare("rft.elastic.ElasticReadStore", dojox.data.QueryReadStore, { 7 fetch:function(request){ 8 request.serverQuery = dojo.toJson({ 9 query: 10 { 11 query_string: 12 { 13 default_field: "title", 14 query: request.query.title 15 } 16 } 17 }); 18 // Call superclasses' fetch 19 return this.inherited("fetch", arguments); 20 }, 21 22 fetch:function(/* Object? */ request){ 23 // summary: 24 // See dojo.data.util.simpleFetch.fetch() this is just a copy and I adjusted 25 // only the paging, since it happens on the server if doClientPaging is 26 // false, thx to http://trac.dojotoolkit.org/ticket/4761 reporting this. 27 // Would be nice to be able to use simpleFetch() to reduce copied code, 28 // but i dont know how yet. Ideas please! 29 request = request || {}; 30 if(!request.store){ 31 request.store = this; 7 fetch:function(request){ 8 var attr = Object.keys(request.query)[0]; 9 request.serverQuery = dojo.toJson({ 10 query: 11 { 12 query_string: 13 { 14 default_field: attr, 15 query: request.query[attr] 16 } 17 } 18 }); 19 // Call superclasses' fetch 20 return this.inherited("fetch", arguments); 21 }, 22 _fetchItems: function(request, fetchHandler, errorHandler){ 23 var serverQuery = request.serverQuery; 24 var xhrHandler = dojo.xhrPost( { url:this.url, 25 handleAs: "json", 26 postData: serverQuery }); 27 request.abort = function(){ 28 xhrHandler.cancel(); 29 }; 30 xhrHandler.addCallback(dojo.hitch(this, function(data){ 31 this._xhrFetchHandler(data, request, fetchHandler, errorHandler); 32 })); 33 xhrHandler.addErrback(function(error){ 34 errorHandler(error, request); 35 }); 36 }, 37 _xhrFetchHandler: function(data, request, fetchHandler, errorHandler) { 38 data = this._filterResponse(data); 39 this._items = []; 40 var numHits = data.hits.total || -1; 41 if(numHits > 0) { 42 this._items.push({i:data.hits.hits[0]._source, r:this, n:0}); 32 43 } 33 var self = this; 34 35 var _errorHandler = function(errorData, requestObject){ 36 if(requestObject.onError){ 37 var scope = requestObject.scope || dojo.global; 38 requestObject.onError.call(scope, errorData, requestObject); 39 } 40 }; 41 42 var _fetchHandler = function(items, requestObject, numRows){ 43 var oldAbortFunction = requestObject.abort || null; 44 var aborted = false; 45 46 var startIndex = requestObject.start?requestObject.start:0; 47 if(self.doClientPaging == false){ 48 // For client paging we dont need no slicing of the result. 49 startIndex = 0; 50 } 51 var endIndex = requestObject.count?(startIndex + requestObject.count):items.length; 52 53 requestObject.abort = function(){ 54 aborted = true; 55 if(oldAbortFunction){ 56 oldAbortFunction.call(requestObject); 57 } 58 }; 59 60 var scope = requestObject.scope || dojo.global; 61 if(!requestObject.store){ 62 requestObject.store = self; 63 } 64 if(requestObject.onBegin){ 65 requestObject.onBegin.call(scope, numRows, requestObject); 66 } 67 if(requestObject.sort && self.doClientSorting){ 68 items.sort(dojo.data.util.sorter.createSortFunction(requestObject.sort, self)); 69 } 70 if(requestObject.onItem){ 71 for(var i = startIndex; (i < items.length) && (i < endIndex); ++i){ 72 var item = items[i]; 73 if(!aborted){ 74 requestObject.onItem.call(scope, item, requestObject); 75 } 76 } 77 } 78 if(requestObject.onComplete && !aborted){ 79 var subset = null; 80 if(!requestObject.onItem){ 81 subset = items.slice(startIndex, endIndex); 82 } 83 requestObject.onComplete.call(scope, subset, requestObject); 84 } 85 }; 86 this._fetchItems(request, _fetchHandler, _errorHandler); 87 return request; // Object 88 }, 44 fetchHandler(this._items, request, data.hits.total); 45 this._numRows = data.hits.total; 46 } 89 47 }); 90 48 }) -
Dev/branches/rest-dojo-ui/client/rft/pages/session.js
r365 r367 3 3 'dojo/_base/event', 4 4 'dojo/_base/Deferred', 5 ' dijit/form/FilteringSelect',5 'rft/elastic/ElasticSearchFilteringSelect', 6 6 'rft/elastic/ElasticReadStore', 7 7 'rft/store', … … 10 10 'rft/ui/AccountListView' 11 11 ], 12 function(declare,lang,event,Deferred, FilteringSelect,ElasticReadStore,store,_Page,content,AccountListView){12 function(declare,lang,event,Deferred,ElasticSearchFilteringSelect,ElasticReadStore,store,_Page,content,AccountListView){ 13 13 return declare('rft.pages.session',[_Page],{ 14 14 session: null, 15 listView: null, 15 _listView: null, 16 _select: null, 16 17 onVisit: function() { 17 18 if ( this.pageArgs.uid ) { … … 35 36 }, 36 37 onInvite: function() { 37 this._addAccount({ title : this. accountBox.get('value')});38 this. accountBox.set('value', "");38 this._addAccount({ title : this._select.displayedValue }); 39 this._select.reset(); 39 40 }, 40 41 onSave: function(evt) { … … 54 55 }, 55 56 _addAccount: function(item) { 56 this. listView.insertItem(item);57 this._listView.insertItem(item); 57 58 }, 58 59 _setupListView: function() { 59 this. listView = new AccountListView( {60 this._listView = new AccountListView( { 60 61 controller: this 61 62 }).placeAt(this.listViewNode); 62 this. listView.startup();63 this._listView.startup(); 63 64 }, 64 65 _setupAutoComplete: function() { … … 68 69 requestMethod: "POST" 69 70 }); 70 var accountText = newFilteringSelect({71 this._select = new ElasticSearchFilteringSelect({ 71 72 name: "accountBox", 72 73 store: accountStore, 73 74 autoComplete: false, 74 required: true,75 required: false, 75 76 labelType: "text", 76 77 placeHolder: "Enter email address here...", … … 81 82 id: "accountText" 82 83 }, "accountBox"); 83 accountText.startup();84 this._select.startup(); 84 85 } 85 86 -
Dev/branches/rest-dojo-ui/client/rft/ui/MenuLink.js
r366 r367 6 6 }, 7 7 onClick: function(){ 8 debugger;9 8 content.goTo(this.pageId); 10 9 } -
Dev/branches/rest-dojo-ui/client/rft/ui/_Page.js
r366 r367 36 36 /** Event fired before leaving the page. Return false to prevent */ 37 37 onLeave: function(){ 38 debugger;39 38 dijit.findWidgets(this.domNode).forEach(function(w){ 40 39 w.destroyRecursive(false);
Note: See TracChangeset
for help on using the changeset viewer.