use new event_def name field. added delete buttons for more event_def grids
[working/Evergreen.git] / Open-ILS / web / js / ui / default / conify / global / action_trigger / event_definition.js
1 dojo.require('dijit.layout.TabContainer');
2 dojo.require('dijit.form.Textarea');
3 dojo.require('dijit.form.FilteringSelect');
4 dojo.require('dijit.form.TextBox');
5 dojo.require('dojo.data.ItemFileReadStore');
6 dojo.require('openils.widget.AutoGrid');
7 dojo.require('openils.Util');
8 dojo.require('openils.PermaCrud');
9 dojo.require('openils.widget.ProgressDialog');
10 dojo.requireLocalization('openils.conify', 'conify');
11
12 var localeStrings = dojo.i18n.getLocalization('openils.conify', 'conify');
13
14 function loadEventDef() { 
15     edGrid.loadAll({order_by:{atevdef : 'hook'}}); 
16     edGrid.overrideEditWidgetClass.template = 'dijit.form.Textarea';
17     dojo.connect(eventDefTabs,'selectChild', tabLoader);
18 }
19
20 var loadedTabs = {'tab-atevdef' : true};
21 function tabLoader(child) {
22     if(loadedTabs[child.id]) return;
23     loadedTabs[child.id] = true;
24     switch(child.id) {
25         case 'tab-atevparam': 
26             tepGrid.loadAll({order_by:{atevparam : 'event_def'}}); 
27             break;
28         case 'tab-ath': 
29             thGrid.loadAll({order_by:{ath : 'key'}}); 
30             break;
31         case 'tab-atenv': 
32             teeGrid.loadAll({order_by:{atenv : 'event_def'}}); 
33             break;
34         case 'tab-atreact': 
35             trGrid.loadAll({order_by:{atreact : 'module'}}); 
36             break;
37         case 'tab-atval': 
38             tvGrid.loadAll({order_by:{atval : 'module'}}); 
39             break;
40         case 'tab-test': 
41             loadTestTab();
42             break;
43     }
44 }
45
46 function loadTestTab() {
47     var pcrud = new openils.PermaCrud();
48     var hooks = pcrud.search('ath', {core_type : 'circ'});
49
50     circTestHookSelector.store = new dojo.data.ItemFileReadStore({data : ath.toStoreData(hooks, 'key', {identifier:'key'})});
51     circTestHookSelector.searchAttr = 'key';
52     circTestHookSelector.startup();
53
54     var defs = pcrud.search('atevdef', {hook : hooks.map(function(i){return i.key()})});
55     var defData = atevdef.toStoreData(defs);
56     circTestDefSelector.store = new dojo.data.ItemFileReadStore({data : defData});
57     circTestDefSelector.searchAttr = 'name';
58     circTestDefSelector.startup();
59
60     dojo.connect(circTestHookSelector, 'onChange',
61         function() {
62             circTestDefSelector.query = {hook : this.attr('value')};
63         }
64     );
65 }
66
67
68 function eventDefGetter(rowIdx, item) {
69     if(!item) return '';
70     var def = this.grid.store.getValue(item, 'event_def');
71     return getDefName(def);
72 }
73
74 function getDefName(def) {
75
76     if(typeof def != 'object') {
77         edGrid.store.fetchItemByIdentity({
78             identity : def,
79             onItem : function(item) { def = new fieldmapper.atevdef().fromStoreItem(item); }
80         });
81     }
82
83     return dojo.string.substitute(
84         localeStrings.EVENT_DEF_LABEL, [
85             fieldmapper.aou.findOrgUnit(def.owner()).shortname(), 
86             def.name()
87         ]);
88 }
89
90
91 function evtTestCirc() {
92     var def = circTestDefSelector.attr('value');
93     var barcode = circTestBarcode.attr('value');
94     if(!(def && barcode)) return;
95
96     progressDialog.show();
97
98     function handleResponse(r) {
99         var evt = openils.Util.readResponse(r);
100         progressDialog.hide();
101         if(evt && evt != '0') {
102             var output = evt.template_output();
103             if(!output) output = evt.error_output();
104             var pre = document.createElement('pre');
105             pre.innerHTML = output.data();
106             openils.Util.appendClear('test-event-output', pre);
107             openils.Util.show('test-event-output');
108         }
109     }
110
111     fieldmapper.standardRequest(
112         ['open-ils.circ', 'open-ils.circ.trigger_event_by_def_and_barcode.fire'],
113         {   async: true,
114             params: [openils.User.authtoken, def, barcode],
115             oncomplete: handleResponse
116         }
117     );
118 }
119
120 openils.Util.addOnLoad(loadEventDef);