From 3e5e4c6bfde81168de29754e51b03c8a4d934706 Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 14 May 2008 17:01:47 +0000 Subject: [PATCH] moved picklist list displays to dojo added a picklist create and deleteList static methods need to work out a bug in the delete code. git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@9602 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/js/dojo/openils/acq/Picklist.js | 43 ++++++++++ .../oilsweb/oilsweb/controllers/acq/picklist.py | 6 +- .../ui_js/oils/default/acq/picklist/view_list.js | 86 ++++++++++++++++++++ .../oils/default/acq/picklist/view_list.html | 95 ++++++++++++++++------ .../oils/default/acq/picklist/view_listall.html | 39 --------- 5 files changed, 198 insertions(+), 71 deletions(-) create mode 100644 Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/picklist/view_list.js delete mode 100644 Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_listall.html diff --git a/Open-ILS/web/js/dojo/openils/acq/Picklist.js b/Open-ILS/web/js/dojo/openils/acq/Picklist.js index 2346e7c2f2..57cee2e2b7 100644 --- a/Open-ILS/web/js/dojo/openils/acq/Picklist.js +++ b/Open-ILS/web/js/dojo/openils/acq/Picklist.js @@ -96,5 +96,48 @@ dojo.declare('openils.acq.Picklist', null, { }, }); +/** Creates a new picklist. fields.name is required */ +openils.acq.Picklist.create = function(fields, oncomplete) { + var picklist = new acqpl(); + picklist.owner(fields.owner || new openils.User().user.id()); + picklist.name(fields.name); + + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.picklist.create'], + { async: true, + params: [openils.User.authtoken, picklist], + oncomplete: function(r) { + // XXX event/error handling + oncomplete(r.recv().content()); + } + } + ); +} + +/** Deletes a list of picklists + * @param list Array of picklist IDs + */ +openils.acq.Picklist.deleteList = function(list, onComplete) { + openils.acq.Picklist._deleteList(list, 0, onComplete); +} + +/* iterate through the list of IDs deleting asynchronously as we go... */ +openils.acq.Picklist._deleteList = function(list, idx, onComplete) { + if(idx >= list.length) + return onComplete(); + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.picklist.delete'], + { async: true, + params: [openils.User.authtoken, list[idx]], + oncomplete: function(r) { + msg = r.recv() + stat = msg.content(); + /* XXX CHECH FOR EVENT */ + openils.acq.Picklist._deleteList(list, ++idx, onComplete); + } + } + ); +} + } diff --git a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py index 223fc0619e..bd5bb5f302 100644 --- a/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py +++ b/Open-ILS/web/oilsweb/oilsweb/controllers/acq/picklist.py @@ -86,15 +86,11 @@ class PicklistController(BaseController): def list(self): r = RequestMgr() - pl_manager = oilsweb.lib.acq.picklist.PicklistMgr(r) - r.ctx.acq.picklist_list.value = pl_manager.retrieve_list() return r.render('acq/picklist/view_list.html') def listall(self): r = RequestMgr() - pl_manager = oilsweb.lib.acq.picklist.PicklistMgr(r) - r.ctx.acq.picklist_list.value = pl_manager.retrieve_list(all=True) - return r.render('acq/picklist/view_listall.html') + return r.render('acq/picklist/view_list.html') def bib_search(self): r = RequestMgr() diff --git a/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/picklist/view_list.js b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/picklist/view_list.js new file mode 100644 index 0000000000..3a417c28b5 --- /dev/null +++ b/Open-ILS/web/oilsweb/oilsweb/public/oils/media/ui_js/oils/default/acq/picklist/view_list.js @@ -0,0 +1,86 @@ +dojo.require('dojox.grid.Grid'); +dojo.require('dijit.Dialog'); +dojo.require('dijit.form.Button'); +dojo.require('dijit.form.TextBox'); +dojo.require('dijit.form.Button'); +dojo.require('openils.acq.Picklist'); + +var plList = []; +var listAll = false; + +function makeGridFromList() { + var store = new dojo.data.ItemFileReadStore({data:acqpl.toStoreData(plList)}); + var model = new dojox.grid.data.DojoData(null, store, + {rowsPerPage: 20, clientSort: true, query:{id:'*'}}); + plListGrid.setModel(model); + plListGrid.update(); +} + + +function loadGrid() { + + function handleResponse(r) { + plList.push(r.recv().content()); + } + + var method = 'open-ils.acq.picklist.user.retrieve'; + if(listAll) + method = method.replace(/user/, 'user.all'); + + fieldmapper.standardRequest( + ['open-ils.acq', method], + { async: true, + params: [openils.User.authtoken, + {flesh_lineitem_count:1, flesh_username:1}], + onresponse: handleResponse, + oncomplete: makeGridFromList + } + ); +} + +function createPL(fields) { + if(fields.name == '') return; + openils.acq.Picklist.create(fields, + function(plId) { + fieldmapper.standardRequest( + ['open-ils.acq', 'open-ils.acq.picklist.retrieve'], + { async: true, + params: [openils.User.authtoken, plId, + {flesh_lineitem_count:1, flesh_username:1}], + oncomplete: function(r) { + var pl = r.recv().content(); + plList.push(pl); + makeGridFromList(); + } + } + ); + } + ); +} + +function deleteFromGrid() { + var list = [] + var selected = plListGrid.selection.getSelected(); + alert('selected = ' + selected); + for(var rowIdx in selected) { + var id = plListGrid.model.getRow(rowIdx).id; + for(var i = 0; i < plList.length; i++) { + var pl = plList[i]; + if(pl.id() == id && pl.owner() == new openils.User().user.usrname()) { + list.push(id); + plList = (plList.slice(0, i) || []).concat(plList.slice(i+1, plList.length) || []); + } + } + } + alert('deleting: ' + list); + var names = []; + for(var i = 0; i < plList.length; i++) + names.push(plList[i].name()); + alert('keeping ' + names); + return; + openils.acq.Picklist.deleteList(list, function() { makeGridFromList(); }); +} + +dojo.addOnLoad(loadGrid); + + diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_list.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_list.html index b810f61184..d81598da14 100644 --- a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_list.html +++ b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_list.html @@ -4,34 +4,75 @@ <%def name="block_content()">
-
${_('My Picklists')}
-
- ${_('View All Picklists')} - ${_('New Picklist')} +
+
${_('My Picklists')}
+ +
+
+
${_('All Picklists')}
+
- - - - - - - - - - - % for picklist in c.oils.acq.picklist_list.value: - - - - - - - - % endfor - -
${_('Name')}${_('Selector')}${_('Edit Date')}${_('Number of Entries')} - -
${picklist.name()}${picklist.owner()}${picklist.edit_time()}${picklist.entry_count()}${_('Delete')}
+ + + + + +
+
+ ${('New Picklist')} +
+ + + + + + + + +
+ +
+
+
+ +
+ + + +
+ diff --git a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_listall.html b/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_listall.html deleted file mode 100644 index ba45909a6d..0000000000 --- a/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/view_listall.html +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -<%inherit file='../base.html'/> -<%def name="page_title()">${_('Evergreen All Picklists')} -<%def name="block_content()"> - -
-
${_('All Picklists')}
- -
- - - - - - - - - - - - - % for picklist in c.oils.acq.picklist_list.value: - - - - - - - - - % endfor - -
${_('Name')}${_('Owner')}${_('Creation Date')}${_('Edit Date')}${_('Number of Entries')} - -
${picklist.name()}${picklist.owner()}${picklist.create_time()}${picklist.edit_time()}${picklist.entry_count()}${_('Delete')}
- -- 2.11.0