--- /dev/null
+dojo.require('dijit.layout.TabContainer');
+dojo.require('dijit.form.FilteringSelect');
+dojo.require('dijit.form.TextBox');
+dojo.require('dojo.data.ItemFileReadStore');
+dojo.require('openils.widget.AutoGrid');
+dojo.require('openils.Util');
+dojo.require('openils.PermaCrud');
+dojo.require('openils.widget.Textarea');
+dojo.require('openils.widget.ProgressDialog');
+dojo.require('dojox.string.sprintf');
+dojo.requireLocalization('openils.conify', 'conify');
+
+var localeStrings = dojo.i18n.getLocalization('openils.conify', 'conify');
+var eventDef = null;
+
+function loadEventDef() {
+ eventDefGranularity.attr('value', null);
+ edGrid.overrideEditWidgets.granularity = eventDefGranularity;
+ edGrid.overrideEditWidgets.granularity.shove = {"create": ""};
+ edGrid.loadAll({order_by:{atevdef : 'name'}});
+ openils.widget.Textarea.width = '600px';
+ openils.widget.Textarea.height = '600px';
+ edGrid.overrideEditWidgetClass.template = 'openils.widget.Textarea';
+ dojo.connect(eventDefTabs,'selectChild', tabLoader);
+}
+
+/**
+ * After an event def is cloned, see if the user wants to also clone the event def environment
+ * @param {Object} oldItem Grid store item that was cloned
+ * @param {Object} newObject Newly created fieldmapper object
+ */
+function cloneEventEnv(oldItem, newObject) {
+ if(!confirm('Clone event definition environment as well?')) return; // TODO i18n
+ progressDialog.show(true);
+ var pcrud = new openils.PermaCrud();
+
+ // fetch the env list for the cloned object
+ var env_list = pcrud.search('atenv', {event_def : edGrid.store.getValue(oldItem, 'id')});
+
+ if(env_list && env_list.length) {
+
+ // clone the environment
+ env_list = env_list.map(
+ function(item) {
+ item.id(null);
+ item.event_def(newObject.id());
+ return item;
+ }
+ );
+
+ // create the cloned environment list
+ pcrud.create(env_list);
+ }
+
+ progressDialog.hide();
+}
+
+function loadEventDefData() {
+ var pcrud = new openils.PermaCrud();
+ eventDef = pcrud.retrieve('atevdef', eventDefId);
+ var hook = pcrud.retrieve('ath', eventDef.hook());
+
+ if(hook.core_type() == 'circ') {
+ openils.Util.hide('at-test-none');
+ openils.Util.show('at-test-circ');
+ }
+
+ dojo.byId('at-event-def-name').innerHTML = eventDef.name();
+ teeGrid.loadAll({order_by:{atenv : 'path'}}, {event_def : eventDefId});
+ dojo.connect(eventDefTabs,'selectChild', tabLoader);
+
+ teeGrid.overrideEditWidgets.event_def = new dijit.form.TextBox({value: eventDefId, disabled : true});
+ tepGrid.overrideEditWidgets.event_def = new dijit.form.TextBox({value: eventDefId, disabled : true});
+}
+
+var loadedTabs = {'tab-atevdef' : true};
+function tabLoader(child) {
+ if(loadedTabs[child.id]) return;
+ loadedTabs[child.id] = true;
+
+ switch(child.id) {
+ case 'tab-atevparam':
+ tepGrid.loadAll({order_by:{atevparam : 'param'}}, {event_def : eventDefId});
+ break;
+ case 'tab-ath':
+ thGrid.loadAll({order_by:{ath : 'key'}});
+ break;
+ case 'tab-atreact':
+ trGrid.loadAll({order_by:{atreact : 'module'}});
+ break;
+ case 'tab-atval':
+ tvGrid.loadAll({order_by:{atval : 'module'}});
+ break;
+ /*
+ case 'tab-test':
+ loadTestTab();
+ break;
+ */
+ }
+}
+
+function getEventDefNameLink(rowIdx, item) {
+ if(!item) return
+ return this.grid.store.getValue(item, 'id') + ':' + this.grid.store.getValue(item, 'name');
+}
+
+function formatEventDefNameLink(data) {
+ if(!data) return;
+ var parts = data.split(/:/);
+ return dojox.string.sprintf(
+ '<a href="%s/conify/global/action_trigger/event_definition_data/%s">%s</a>',
+ oilsBasePath, parts[0], parts[1]);
+}
+
+
+function evtTestCirc() {
+ var barcode = circTestBarcode.attr('value');
+ if(!barcode) return;
+
+ progressDialog.show();
+
+ function handleResponse(r) {
+ var evt = openils.Util.readResponse(r);
+ progressDialog.hide();
+ if(evt && evt != '0') {
+ var output = evt.template_output();
+ if(!output) output = evt.error_output();
+ var pre = document.createElement('pre');
+ pre.innerHTML = output.data();
+ openils.Util.appendClear('test-event-output', pre);
+ openils.Util.show('test-event-output');
+ }
+ }
+
+ fieldmapper.standardRequest(
+ ['open-ils.circ', 'open-ils.circ.trigger_event_by_def_and_barcode.fire'],
+ { async: true,
+ params: [openils.User.authtoken, eventDefId, barcode],
+ oncomplete: handleResponse
+ }
+ );
+}
+