3 _App.DataStore = function()
8 _App.DataStore.prototype =
16 reverse : {'years': true},
18 initialize : function()
20 this.listenerStore = {};
24 * Set param for storage.
28 setItem : function( param, value )
30 this.itemStore[param] = value;
34 * Retrieve param from storage
39 getItem : function( param, defaultValue )
41 return this.itemStore[param]
42 ? this.itemStore[param]
47 * Remove param from storage
50 removeItem : function( param )
52 if (this.itemStore[param])
54 delete this.itemStore[param];
59 * Register an Event Listener.
65 listen : function( id, dataId, callback, type )
67 if (!this.listenerStore[dataId])
69 this.listenerStore[dataId] = {};
71 this.listenerStore[dataId][id] = {
73 "type": (type ? type : "UseOnce")
75 if (this.dataStore[dataId])
77 this.listenerStore[dataId][id]["callback"](dataId, this.dataStore[dataId]);
82 * Remove a registered Event Listener.
86 removeListener : function( id, dataId )
88 if (this.listenerStore[dataId] && this.listenerStore[dataId][id])
90 delete this.listenerStore[dataId][id];
99 setData : function( dataId, data, noSwap )
101 if (!noSwap && this.reverse[dataId])
105 this.dataStore[dataId] = data;
106 if (this.listenerStore[dataId])
108 for (var id in this.listenerStore[dataId])
110 this.listenerStore[dataId][id]["callback"](dataId, data);
111 if ("UseOnce" == this.listenerStore[dataId][id]["type"])
113 delete this.listenerStore[dataId][id];
123 getData : function ( dataId )
125 return undefined != this.dataStore[dataId]
126 ? this.dataStore[dataId]
131 * Extract data from api response and set to dataStore.
135 setDataFromApiResponse : function( dataId, callback, apiResponse )
138 (apiResponse.Data.DataSet)
139 ? apiResponse.Data.DataSet
142 if (undefined != callback)
149 * Extract data from api response and set to dataStore.
153 setDataGroupFromApiResponse : function( requests, callback, responses )
155 for (var i in requests)
157 this.setData(requests[i].dataId,
158 (responses[i].Data.DataSet)
159 ? responses[i].Data.DataSet
162 if (undefined != requests[i].callback)
164 requests[i].callback();
167 if (undefined != callback)
174 * Load a group of select lists.
178 loadSelectListGroup : function( requests, callback )
182 for (var i in requests)
184 if (requests[i].isStatic && App.DataStore.dataStore[requests[i].dataId])
186 App.DataStore.setData(requests[i].dataId, App.DataStore.dataStore[requests[i].dataId], true);
189 req.push(requests[i]);
190 App.DataStore.metaStore[requests[i].dataId] = {};
191 App.DataStore.metaStore[requests[i].dataId].data = requests[i].data
194 App.DataStore.metaStore[requests[i].dataId].options = requests[i].options
195 ? requests[i].options
198 id: 'DataStore.' + requests[i].dataId,
199 workspace: requests[i].workspace,
200 task: requests[i].task,
201 jobId: requests[i].jobId,
202 data: requests[i].data,
203 callback: requests[i].callback,
204 errorCallback: requests[i].errorCallback
211 $.proxy(App.DataStore._loadDataGroup, this, req, callback)
216 _loadDataGroup : function( requests, callback )
219 for (var i in requests)
222 id: 'DataStore.' + requests[i].dataId,
223 data: App.DataStore.metaStore[requests[i].dataId].data,
224 options: App.DataStore.metaStore[requests[i].dataId].options
227 this.bulkRequestId++;
230 $.proxy(App.DataStore.setDataGroupFromApiResponse, this, requests, callback)
235 * Load a select list dataset via api.
244 loadSelectListData : function( dataId, isStatic, workspace, task, jobId, data, options, callback )
246 if (isStatic && App.DataStore.dataStore[dataId])
248 App.DataStore.setData(dataId, App.DataStore.dataStore[dataId], true);
251 App.DataStore.metaStore[dataId] = {};
252 App.DataStore.metaStore[dataId].data = data
255 App.DataStore.metaStore[dataId].options = options
259 var taskContract = App.API.taskContract('DataStore.' + dataId);
260 if (null == taskContract
261 || undefined == taskContract.Hash
262 || null == taskContract.Hash)
265 'DataStore.' + dataId, workspace, task, jobId,
267 $.proxy(App.DataStore._loadData, this, dataId, isStatic, callback),
273 App.DataStore._loadData(dataId, isStatic, callback);
277 _loadData : function( dataId, isStatic, callback )
280 'DataStore.' + dataId,
281 App.DataStore.metaStore[dataId].data,
282 App.DataStore.metaStore[dataId].options,
283 $.proxy(App.DataStore.setDataFromApiResponse, this, dataId, callback),