]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/conify/global/action_trigger/event_definition.js
LP#1205072 A/T granularity UI sane default, honors case
[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.FilteringSelect');
3 dojo.require('dijit.form.TextBox');
4 dojo.require('dojo.data.ItemFileReadStore');
5 dojo.require('openils.widget.AutoGrid');
6 dojo.require('openils.Util');
7 dojo.require('openils.PermaCrud');
8 dojo.require('openils.widget.Textarea');
9 dojo.require('openils.widget.ProgressDialog');
10 dojo.require('dojox.string.sprintf');
11 dojo.requireLocalization('openils.conify', 'conify');
12
13 var localeStrings = dojo.i18n.getLocalization('openils.conify', 'conify');
14 var eventDef = null;
15
16 function loadEventDef() { 
17     eventDefGranularity.attr('value', null);
18     eventDefGranularity.ignoreCase = false;
19     edGrid.overrideEditWidgets.granularity = eventDefGranularity;
20     edGrid.overrideEditWidgets.granularity.shove = {"create": ""};
21     edGrid.loadAll({order_by:{atevdef : 'name, owner, hook, reactor, delay'}});
22     openils.widget.Textarea.width = '600px';
23     openils.widget.Textarea.height = '600px';
24     edGrid.overrideEditWidgetClass.template = 'openils.widget.Textarea';
25     edGrid.overrideEditWidgetClass.message_template = 'openils.widget.Textarea';
26     dojo.connect(eventDefTabs,'selectChild', tabLoader);
27 }
28
29 /**
30  * After an event def is cloned, see if the user wants to also clone the event def environment
31  * @param {Object} oldItem Grid store item that was cloned
32  * @param {Object} newObject Newly created fieldmapper object
33  */
34 function cloneEventEnv(oldItem, newObject) {
35     if(!confirm('Clone event definition environment as well?')) return; // TODO i18n
36     progressDialog.show(true);
37     var pcrud = new openils.PermaCrud();
38
39     // fetch the env list for the cloned object
40     var env_list = pcrud.search('atenv', {event_def : edGrid.store.getValue(oldItem, 'id')});
41
42     if(env_list && env_list.length) {
43         
44         // clone the environment 
45         env_list = env_list.map(
46             function(item) { 
47                 item.id(null);
48                 item.event_def(newObject.id()); 
49                 return item; 
50             }
51         );
52     
53         // create the cloned environment list
54         pcrud.create(env_list);
55     }
56
57     progressDialog.hide();
58 }
59
60 function loadEventDefData() { 
61     var pcrud = new openils.PermaCrud();
62     eventDef = pcrud.retrieve('atevdef', eventDefId);
63     var hook = pcrud.retrieve('ath', eventDef.hook());
64
65     if(hook.core_type() == 'circ') {
66         openils.Util.hide('at-test-none');
67         openils.Util.show('at-test-circ');
68     }
69
70     dojo.byId('at-event-def-name').innerHTML = eventDef.name();
71     teeGrid.loadAll({order_by:{atenv : 'path'}}, {event_def : eventDefId}); 
72     dojo.connect(eventDefTabs,'selectChild', tabLoader);
73
74     teeGrid.overrideEditWidgets.event_def = new dijit.form.TextBox({value: eventDefId, disabled : true});
75     tepGrid.overrideEditWidgets.event_def = new dijit.form.TextBox({value: eventDefId, disabled : true});
76 }
77
78 var loadedTabs = {'tab-atevdef' : true};
79 function tabLoader(child) {
80     if(loadedTabs[child.id]) return;
81     loadedTabs[child.id] = true;
82
83     switch(child.id) {
84         case 'tab-atevparam': 
85             tepGrid.loadAll({order_by:{atevparam : 'param'}}, {event_def : eventDefId}); 
86             break;
87         case 'tab-ath': 
88             thGrid.loadAll({order_by:{ath : 'key'}}); 
89             break;
90         case 'tab-atreact': 
91             trGrid.loadAll({order_by:{atreact : 'module'}}); 
92             break;
93         case 'tab-atval': 
94             tvGrid.loadAll({order_by:{atval : 'module'}}); 
95             break;
96         /*
97         case 'tab-test': 
98             loadTestTab();
99             break;
100         */
101     }
102 }
103
104 function getEventDefNameLink(rowIdx, item) {
105     if(!item) return
106     return this.grid.store.getValue(item, 'id') + ':' + this.grid.store.getValue(item, 'name');
107 }
108
109 function formatEventDefNameLink(data) {
110     if(!data) return;
111     var parts = data.split(/:/);
112     return dojox.string.sprintf(
113         '<a href="%s/conify/global/action_trigger/event_definition_data/%s">%s</a>',
114         oilsBasePath, parts[0], parts[1]);
115 }
116
117
118 function evtTestCirc() {
119     var barcode = circTestBarcode.attr('value');
120     if(!barcode) return;
121
122     progressDialog.show();
123
124     function handleResponse(r) {
125         var evt = openils.Util.readResponse(r);
126         progressDialog.hide();
127         if(evt && evt != '0') {
128             var output = evt.template_output();
129             if(!output) output = evt.error_output();
130             var pre = document.createElement('pre');
131             pre.innerHTML = output.data();
132             openils.Util.appendClear('test-event-output', pre);
133             openils.Util.show('test-event-output');
134         }
135     }
136
137     fieldmapper.standardRequest(
138         ['open-ils.circ', 'open-ils.circ.trigger_event_by_def_and_barcode.fire'],
139         {   async: true,
140             params: [openils.User.authtoken, eventDefId, barcode],
141             oncomplete: handleResponse
142         }
143     );
144 }
145