]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/acq/picklist/view_list.js
implemented inline update for picklist names. shorter default date format
[working/Evergreen.git] / Open-ILS / web / js / ui / default / acq / picklist / view_list.js
1 dojo.require('dojox.grid.DataGrid');
2 dojo.require('dojo.data.ItemFileWriteStore');
3 dojo.require('dijit.Dialog');
4 dojo.require('dijit.form.Button');
5 dojo.require('dijit.form.TextBox');
6 dojo.require('dijit.form.Button');
7 dojo.require('dojox.grid.cells.dijit');
8 dojo.require('openils.acq.Picklist');
9 dojo.require('openils.Util');
10
11 var listAll = false;
12 var plCache = {};
13
14 function loadGrid() {
15     var method = 'open-ils.acq.picklist.user.retrieve';
16     if(listAll)
17         method = method.replace(/user/, 'user.all');
18
19     var store = new dojo.data.ItemFileWriteStore({data:acqpl.initStoreData()});
20     plListGrid.setStore(store);
21     plListGrid.render();
22     dojo.connect(store, 'onSet', plGridChanged);
23
24     fieldmapper.standardRequest(
25         ['open-ils.acq', method],
26
27         {   async: true,
28             params: [openils.User.authtoken, 
29                 {flesh_lineitem_count:1, flesh_owner:1}],
30
31             onresponse : function(r) {
32                 if(pl = openils.Util.readResponse(r)) {
33                     plCache[pl.id()] = pl;
34                     store.newItem(acqpl.itemToStoreData(pl));
35                 }
36             }
37         }
38     );
39 }
40 function getOwnerName(rowIndex, item) {
41     if(!item) return ''; 
42     var id= this.grid.store.getValue(item, 'id'); 
43     var pl = plCache[id];
44     return pl.owner().usrname();
45 }
46
47 function createPL(fields) {
48     if(fields.name == '') return;
49
50     openils.acq.Picklist.create(fields,
51
52         function(plId) {
53             fieldmapper.standardRequest(
54
55                 ['open-ils.acq', 'open-ils.acq.picklist.retrieve'],
56                 {   async: true,
57                     params: [openils.User.authtoken, plId,
58                         {flesh_lineitem_count:1, flesh_username:1}],
59
60                     oncomplete: function(r) {
61                         if(pl = openils.Util.readResponse(r)) 
62                            plListGrid.store.newItem(acqpl.toStoreData([pl]).items[0]);
63                     }
64                 }
65             );
66         }
67     );
68 }
69 function plGridChanged(item, attr, oldVal, newVal) {
70     var pl = plCache[plListGrid.store.getValue(item, 'id')];
71     console.log("changing pl " + pl.id() + " object: " + attr + " = " + newVal);
72     pl[attr](newVal);
73     pl.ischanged(true);
74     plSaveButton.setDisabled(false);
75 }
76 function saveChanges() {
77     plListGrid.doclick(0);   
78     var changedObjects = [];
79     for(var i in plCache){
80         var pl = plCache[i];
81         if(pl.ischanged())
82             changedObjects.push(pl);
83     }   
84     _saveChanges(changedObjects, 0);
85 }
86 function _saveChanges(changedObjects, idx) {
87     
88     if(idx >= changedObjects.length) {
89         // we've made it through the list
90         plSaveButton.setDisabled(true);
91         return;
92     }
93
94     var pl = changedObjects[idx];
95     var owner = pl.owner();
96     pl.owner(owner.id()); // un-flesh the owner object
97
98     fieldmapper.standardRequest(
99         ['open-ils.acq', 'open-ils.acq.picklist.update'],
100         {   async: true,
101             params: [openils.User.authtoken, pl],
102             oncomplete: function(r) {
103                 if(stat = openils.Util.readResponse(r)) {
104                     _saveChanges(changedObjects, ++idx);
105                 }
106             }
107         }
108     );
109 }
110
111 function getDateTimeField(rowIndex, item) {
112     if(!item) return '';
113     var data = this.grid.store.getValue(item, this.field);
114     var date = dojo.date.stamp.fromISOString(data);
115     return dojo.date.locale.format(date, {formatLength:'short'});
116 }
117 function deleteFromGrid() {
118     var list = []
119     var selected = plListGrid.selection.getSelected();
120     for(var idx = 0; idx < selected.length; idx++) {
121         var item = selected[idx];
122         list.push(item.id);
123         plListGrid.store.deleteItem(item);
124     }
125     openils.acq.Picklist.deleteList(list);
126 }
127
128 openils.Util.addOnLoad(loadGrid);
129
130