From 115c85420bb99d419446b9e2f69703be4a592f0c Mon Sep 17 00:00:00 2001 From: guerler Date: Fri, 13 Mar 2015 16:51:07 -0400 Subject: [PATCH] Remove unnecessary files --- static/scripts/mvc/Archive.zip | Bin 29497 -> 0 bytes static/scripts/mvc/tools/tools-input.js | 147 -------- static/scripts/mvc/tools/tools-parameters.js | 263 -------------- static/scripts/mvc/tools/tools-repeat.js | 166 --------- static/scripts/mvc/tools/tools-section.js | 343 ------------------ .../scripts/mvc/tools/tools-select-content.js | 336 ----------------- static/scripts/mvc/tools/tools-tree.js | 300 --------------- .../scripts/packed/mvc/tools/tools-input.js | 1 - .../packed/mvc/tools/tools-parameters.js | 1 - .../scripts/packed/mvc/tools/tools-repeat.js | 1 - .../scripts/packed/mvc/tools/tools-section.js | 1 - .../packed/mvc/tools/tools-select-content.js | 1 - static/scripts/packed/mvc/tools/tools-tree.js | 1 - 13 files changed, 1561 deletions(-) delete mode 100644 static/scripts/mvc/Archive.zip delete mode 100644 static/scripts/mvc/tools/tools-input.js delete mode 100644 static/scripts/mvc/tools/tools-parameters.js delete mode 100644 static/scripts/mvc/tools/tools-repeat.js delete mode 100644 static/scripts/mvc/tools/tools-section.js delete mode 100644 static/scripts/mvc/tools/tools-select-content.js delete mode 100644 static/scripts/mvc/tools/tools-tree.js delete mode 100644 static/scripts/packed/mvc/tools/tools-input.js delete mode 100644 static/scripts/packed/mvc/tools/tools-parameters.js delete mode 100644 static/scripts/packed/mvc/tools/tools-repeat.js delete mode 100644 static/scripts/packed/mvc/tools/tools-section.js delete mode 100644 static/scripts/packed/mvc/tools/tools-select-content.js delete mode 100644 static/scripts/packed/mvc/tools/tools-tree.js diff --git a/static/scripts/mvc/Archive.zip b/static/scripts/mvc/Archive.zip deleted file mode 100644 index 102b75b3343753f5064b8ea2e791a288a80c41bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29497 zcmc$`bC9LmmiC*rZQHhO+qR8L+jdquvob4fyVAC8+q$(+pFX|M{(AQpaU<^Swc=gz z{xeprImd`+{^oe+vlOI(L7)Kscy-tsiT&f|pC6zA2mogGPPX)_8ZZEF)%PlUzpn>C z6aa)M>{-D=5P2OB*OGp66E3WhJ0FW^yCR?hOVpVQgMItB9* z`MJXL=kSdEtay!`+p5(itMGg1rCha2g&|_px!BG7w~-!T`gYgyGNrC?OHCH|L6>9iyNP?>$E$+dO-~!=Yx#ZS}32=FM z%m+epW4Z JIetm1*d6w+`0o?~zbJ9T3)3P1n=5Db8S%=v$$Y4tB@g8V(_`uehh z!t%-*|40>f&ArMW*MFw!zYqH(RsRb6SDODC``@P-^Z$sY)BoFy8ylb+n;RGzT+7O+ zUBjz|EBFJ&V*ryQU<1}-BLqF83XB7&6ZZH6bA$$i2xg!%=pO$uT5yPa%%u*N-=*mB z`}(hntNqL95&yH|{ulzSiJ^-jot5(+Mfb-@CjMEl8(Px#Ya9q&N9r{KiX$lUFF=Eio`O_t z(j1GI6Vf72f(+gYxat}>m~2J@+MzC~Q&HHp$C%8OFfiF{iilHarc zwfw-E)HKu{kC=7{7mq}Jo+DSS0G1}%JZq5YVTqys&`v4;EW zQt*2$WDMZb^Hk?O+jW`W4r-7h0iG!PgSG;Cl%oVt6f5|MUL?(iiIQb*FtKof1~6R5yu~I#YMj+mCcK5`7Ohr1J^vL!TJ*sL-C)Pm>h5d9Qn=eSMMQ zky9q{_P3G;RFPL~1^9HDq!-{3lv5cKZ|bv&5dIH23$+_@d-kSkD5oxefLP!F`=hMs zS?n@VP?&*6tP}#N5$gn6%N3&agddb`uB7vnceotOlhJmeZXp6E*v?$Nyt{8k?FpWq zv)CDQns3M%Wfy3r#hH(*tyB5d9@%ged6hiw5DT@;Zs@3MP#+W`n{41y%3#57 zEUIJH5xs6IE7i&E&mw~KBW4891%BHiUWZCC&~9OS z99KP1)J*N(*CCVCs@Gst>5@@FRGJNQD-tGPv#TW%%w^ZMnYs?fOq+0-joJ-PjMX?5~*`q^@t)c2-% zhlJh%qfiF9JoPTcL#TyoRqXn(6#P_*4;j7Je&5gNyP~o30;mt4^%3FDz1^0w{Zws* zlyW7GcB3_HH$9m!-K5zuB5;rEI`o!Cz_VmjRW9OpSu?F#e6vA>ly3nl&f^zIW)M9z zt0LEF8Z8|-fkHQKeaM3s?VuYxFvu1Lm>6=Tl&o2OX7;Bn0>)a8Xbe

;P=<5*dqX!H|ogB~;mN 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' + - '' + - '' + - '

'; - - // is optional - if (options.optional) { - tmp += '
' + - '' + options.label + - '
'; - } else { - tmp += options.label; - } - - // finalize title - tmp += '
' + - '
'; - - // add help - tmp += '
'; - if (options.help) { - tmp += options.help; - } - tmp += '
'; - - // finalize - tmp += '
' + - ''; - - // return input element - return tmp; - } - }); -}); \ No newline at end of file diff --git a/static/scripts/mvc/tools/tools-parameters.js b/static/scripts/mvc/tools/tools-parameters.js deleted file mode 100644 index 0724e6d4910..00000000000 --- a/static/scripts/mvc/tools/tools-parameters.js +++ /dev/null @@ -1,263 +0,0 @@ -/** - This class creates input elements. New input parameter types should be added to the types dictionary. -*/ -define(['utils/utils', - 'mvc/ui/ui-misc', - 'mvc/tools/tools-select-content', - 'mvc/ui/ui-color-picker'], - function(Utils, Ui, SelectContent, ColorPicker) { - - // create form view - return Backbone.Model.extend({ - /** Available parameter types */ - types: { - 'text' : '_fieldText', - 'select' : '_fieldSelect', - 'data_column' : '_fieldSelect', - 'genomebuild' : '_fieldSelect', - 'data' : '_fieldData', - 'data_collection' : '_fieldData', - 'integer' : '_fieldSlider', - 'float' : '_fieldSlider', - 'boolean' : '_fieldBoolean', - 'drill_down' : '_fieldDrilldown', - 'color' : '_fieldColor', - 'hidden' : '_fieldHidden', - 'hidden_data' : '_fieldHidden', - 'baseurl' : '_fieldHidden', - }, - - // initialize - initialize: function(app, options) { - this.app = app; - }, - - /** Returns an input field for a given field type - */ - create: function(input_def) { - // add regular/default value if missing - if (input_def.value === undefined) { - input_def.value = null; - } - if (input_def.default_value === undefined) { - input_def.default_value = input_def.value; - } - - // field wrapper - var field = null; - - // get field class - var fieldClass = this.types[input_def.type]; - if (fieldClass && typeof(this[fieldClass]) === 'function') { - field = this[fieldClass].call(this, input_def); - } - - // identify field type - if (!field) { - // flag - this.app.incompatible = true; - - // with or without options - if (input_def.options) { - // assign select field - field = this._fieldSelect(input_def); - } else { - // assign text field - field = this._fieldText(input_def); - } - - // log - console.debug('tools-form::_addRow() : Auto matched field type (' + input_def.type + ').'); - } - - // set field value - if (input_def.value !== undefined) { - field.value(input_def.value); - } - - // return field element - return field; - }, - - /** Data input field - */ - _fieldData : function(input_def) { - if (!this.app.options.is_dynamic) { - input_def.info = 'Data input \'' + input_def.name + '\' (' + Utils.textify(input_def.extensions.toString()) + ')'; - input_def.value = null; - return this._fieldHidden(input_def); - } - var self = this; - return new SelectContent.View(this.app, { - id : 'field-' + input_def.id, - extensions : input_def.extensions, - optional : input_def.optional, - multiple : input_def.multiple, - type : input_def.type, - data : input_def.options, - onchange : function() { - self.app.trigger('refresh'); - } - }); - }, - - /** Select/Checkbox/Radio options field - */ - _fieldSelect : function (input_def) { - // show text field in if dynamic fields are disabled e.g. in workflow editor - if (!this.app.options.is_dynamic && input_def.is_dynamic) { - return this._fieldText(input_def); - } - - // customize properties - if (input_def.type == 'data_column') { - input_def.error_text = 'Missing columns in referenced dataset.' - } - if (input_def.type == 'genomebuild') { - input_def.searchable = true; - } - - // configure options fields - var options = []; - for (var i in input_def.options) { - var option = input_def.options[i]; - options.push({ - label: option[0], - value: option[1] - }); - } - - // identify display type - var SelectClass = Ui.Select; - switch (input_def.display) { - case 'checkboxes': - SelectClass = Ui.Checkbox; - break; - case 'radio': - SelectClass = Ui.Radio; - break; - } - - // select field - var self = this; - return new SelectClass.View({ - id : 'field-' + input_def.id, - data : options, - error_text : input_def.error_text || 'No options available', - multiple : input_def.multiple, - searchable : input_def.searchable, - onchange : function() { - self.app.trigger('refresh'); - } - }); - }, - - /** Drill down options field - */ - _fieldDrilldown : function (input_def) { - // show text field in if dynamic fields are disabled e.g. in workflow editor - if (!this.app.options.is_dynamic && input_def.is_dynamic) { - return this._fieldText(input_def); - } - - // create drill down field - var self = this; - return new Ui.Drilldown.View({ - id : 'field-' + input_def.id, - data : input_def.options, - display : input_def.display, - onchange : function() { - self.app.trigger('refresh'); - } - }); - }, - - /** Text input field - */ - _fieldText : function(input_def) { - // field replaces e.g. a select field - if (input_def.options) { - // show text area if selecting multiple entries is allowed - input_def.area = input_def.multiple; - - // validate value - if (!Utils.validate(input_def.value)) { - input_def.value = ''; - } else { - if (input_def.value instanceof Array) { - input_def.value = value.toString(); - } else { - input_def.value = String(input_def.value).replace(/[\[\]'"\s]/g, ''); - if (input_def.multiple) { - input_def.value = input_def.value.replace(/,/g, '\n'); - } - } - } - } - - // create input element - var self = this; - return new Ui.Input({ - id : 'field-' + input_def.id, - area : input_def.area, - onchange : function() { - self.app.trigger('refresh'); - } - }); - }, - - /** Slider field - */ - _fieldSlider: function(input_def) { - var self = this; - return new Ui.Slider.View({ - id : 'field-' + input_def.id, - precise : input_def.type == 'float', - min : input_def.min, - max : input_def.max, - onchange : function() { - self.app.trigger('refresh'); - } - }); - }, - - /** Hidden field - */ - _fieldHidden : function(input_def) { - return new Ui.Hidden({ - id : 'field-' + input_def.id, - info : input_def.info - }); - }, - - /** Boolean field - */ - _fieldBoolean : function(input_def) { - var self = this; - return new Ui.RadioButton.View({ - id : 'field-' + input_def.id, - data : [ { label : 'Yes', value : 'true' }, - { label : 'No', value : 'false' }], - onchange : function() { - self.app.trigger('refresh'); - } - }); - }, - - /** Color picker field - */ - _fieldColor : function(input_def) { - var self = this; - return new ColorPicker({ - id : 'field-' + input_def.id, - onchange : function() { - self.app.trigger('refresh'); - } - }); - } - }); - - return { - View: View - }; -}); diff --git a/static/scripts/mvc/tools/tools-repeat.js b/static/scripts/mvc/tools/tools-repeat.js deleted file mode 100644 index 3f78bffbee9..00000000000 --- a/static/scripts/mvc/tools/tools-repeat.js +++ /dev/null @@ -1,166 +0,0 @@ -// dependencies -define(['utils/utils', 'mvc/ui/ui-table', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc'], function(Utils, Table, Portlet, Ui) { - -/** This class creates a ui component which enables the dynamic creation of portlets -*/ -var View = Backbone.View.extend({ - // default options - optionsDefault : { - title : 'Section', - max : null, - min : null - }, - - /** Initialize - */ - initialize : function(options) { - // configure options - this.options = Utils.merge(options, this.optionsDefault); - - // create new element - this.setElement('
'); - - // link this - var self = this; - - // create button - this.button_new = new Ui.ButtonIcon({ - icon : 'fa-plus', - title : 'Insert ' + options.title_new, - tooltip : 'Add new ' + options.title_new + ' block', - floating: 'clear', - onclick : function() { - if (options.onnew) { - options.onnew(); - } - } - }); - - // create table - this.table = new Table.View({ - cls : 'ui-table-plain', - content : '' - }); - - // append button - this.$el.append(this.table.$el); - - // add button - this.$el.append($('
').append(this.button_new.$el)); - - // clear list - this.list = {}; - - // number of available repeats - this.n = 0; - }, - - /** Number of repeat blocks - */ - size: function() { - return this.n; - }, - - /** Add new repeat block - */ - add: function(options) { - // repeat block already exists - if (!options.id || this.list[options.id]) { - console.debug('tools-repeat::add - Duplicate repeat block id.'); - return; - } - - // increase repeat block counter - this.n++; - - // delete button - var button_delete = new Ui.ButtonIcon({ - icon : 'fa-trash-o', - tooltip : 'Delete this repeat block', - cls : 'ui-button-icon-plain', - onclick : function() { - if (options.ondel) { - options.ondel(); - } - } - }); - - // create portlet - var portlet = new Portlet.View({ - id : options.id, - title : 'placeholder', - cls : 'ui-portlet-repeat', - operations : { - button_delete : button_delete - } - }); - - // append content - portlet.append(options.$el); - - // tag as section row - portlet.$el.addClass('section-row'); - - // append to dom - this.list[options.id] = portlet; - - // append to dom - this.table.add(portlet.$el); - this.table.append('row_' + options.id, true); - - // validate maximum - if (this.options.max > 0 && this.n >= this.options.max) { - this.button_new.disable(); - } - - // refresh view - this._refresh(); - }, - - /** Delete repeat block - */ - del: function(id) { - // could not find element - if (!this.list[id]) { - console.debug('tools-repeat::del - Invalid repeat block id.'); - return; - } - - // decrease repeat block counter - this.n--; - - // delete table row - var table_row = this.table.get('row_' + id); - table_row.remove(); - - // remove from list - delete this.list[id]; - - // enable new button - this.button_new.enable(); - - // refresh delete button visibility - this._refresh(); - }, - - /** Refresh view - */ - _refresh: function() { - var index = 0; - for (var id in this.list) { - var portlet = this.list[id]; - portlet.title(++index + ': ' + this.options.title); - if (this.n > this.options.min) { - portlet.showOperation('button_delete'); - } else { - portlet.hideOperation('button_delete'); - } - } - } -}); - -return { - View : View -} - -}); diff --git a/static/scripts/mvc/tools/tools-section.js b/static/scripts/mvc/tools/tools-section.js deleted file mode 100644 index c779d73acdb..00000000000 --- a/static/scripts/mvc/tools/tools-section.js +++ /dev/null @@ -1,343 +0,0 @@ -/** - This class creates a tool form section and populates it with input elements. It also handles repeat blocks and conditionals by recursively creating new sub sections. -*/ -define(['utils/utils', - 'mvc/ui/ui-table', - 'mvc/ui/ui-misc', - 'mvc/ui/ui-portlet', - 'mvc/tools/tools-repeat', - 'mvc/tools/tools-input', - 'mvc/tools/tools-parameters'], - function(Utils, Table, Ui, Portlet, Repeat, InputElement, Parameters) { - - // create form view - var View = Backbone.View.extend({ - // initialize - initialize: function(app, options) { - // link app - this.app = app; - - // link inputs - this.inputs = options.inputs; - - // fix table style - options.cls = 'ui-table-plain'; - - // add table class for tr tag - // this assist in transforming the form into a json structure - options.cls_tr = 'section-row'; - - // create table - this.table = new Table.View(options); - - // create parameter handler - this.parameters = new Parameters(app, options); - - // configure portlet and form table - this.setElement(this.table.$el); - - // render tool section - this.render(); - }, - - /** Render section view - */ - render: function() { - // reset table - this.table.delAll(); - - // load settings elements into table - for (var i in this.inputs) { - this.add(this.inputs[i]); - } - }, - - /** Add a new input element - */ - add: function(input) { - // link this - var self = this; - - // clone definition - var input_def = jQuery.extend(true, {}, input); - - // create unique id - input_def.id = input.id = Utils.uuid(); - - // add to sequential list of inputs - this.app.input_list[input_def.id] = input_def; - - // identify field type - var type = input_def.type; - switch(type) { - // conditional field - case 'conditional': - this._addConditional(input_def); - break; - // repeat block - case 'repeat': - this._addRepeat(input_def); - break; - // customized section - case 'section': - this._addSection(input_def); - break; - // default single element row - default: - this._addRow(input_def); - } - }, - - /** Add a conditional block - */ - _addConditional: function(input_def) { - // link this - var self = this; - - // copy identifier - input_def.test_param.id = input_def.id; - - // build test parameter - var field = this._addRow(input_def.test_param); - - // set onchange event for test parameter - field.options.onchange = function(value) { - // identify the selected case - var selectedCase = self.app.tree.matchCase(input_def, value); - - // check value in order to hide/show options - for (var i in input_def.cases) { - // get case - var case_def = input_def.cases[i]; - - // identify subsection name - var section_id = input_def.id + '-section-' + i; - - // identify row - var section_row = self.table.get(section_id); - - // check if non-hidden elements exist - var nonhidden = false; - for (var j in case_def.inputs) { - if (!case_def.inputs[j].hidden) { - nonhidden = true; - break; - } - } - - // show/hide sub form - if (i == selectedCase && nonhidden) { - section_row.fadeIn('fast'); - } else { - section_row.hide(); - } - } - - // refresh form inputs - self.app.trigger('refresh'); - }; - - // add conditional sub sections - for (var i in input_def.cases) { - // create id tag - var sub_section_id = input_def.id + '-section-' + i; - - // create sub section - var sub_section = new View(this.app, { - inputs : input_def.cases[i].inputs - }); - - // displays as grouped subsection - sub_section.$el.addClass('ui-table-section'); - - // create table row - this.table.add(sub_section.$el); - - // append to table - this.table.append(sub_section_id); - } - - // trigger refresh on conditional input field after all input elements have been created - field.trigger('change'); - }, - - /** Add a repeat block - */ - _addRepeat: function(input_def) { - // link this - var self = this; - - // block index - var block_index = 0; - - // create repeat block element - var repeat = new Repeat.View({ - title : input_def.title, - title_new : input_def.title, - min : input_def.min, - max : input_def.max, - onnew : function() { - // create - create(input_def.inputs); - - // trigger refresh - self.app.trigger('refresh'); - } - }); - - // helper function to create new repeat blocks - function create (inputs) { - // create id tag - var sub_section_id = input_def.id + '-section-' + (block_index++); - - // create sub section - var sub_section = new View(self.app, { - inputs : inputs - }); - - // add tab - repeat.add({ - id : sub_section_id, - $el : sub_section.$el, - ondel : function() { - // delete repeat block - repeat.del(sub_section_id); - - // trigger refresh - self.app.trigger('refresh'); - } - }); - } - - // - // add parsed/minimum number of repeat blocks - // - var n_min = input_def.min; - var n_cache = _.size(input_def.cache); - for (var i = 0; i < Math.max(n_cache, n_min); i++) { - var inputs = null; - if (i < n_cache) { - inputs = input_def.cache[i]; - } else { - inputs = input_def.inputs; - } - - // create repeat block - create(inputs); - } - - // create input field wrapper - var input_element = new InputElement(this.app, { - label : input_def.title, - help : input_def.help, - field : repeat - }); - - // create table row - this.table.add(input_element.$el); - - // append row to table - this.table.append(input_def.id); - }, - - /** Add a customized section - */ - _addSection: function(input_def) { - // link this - var self = this; - - // create sub section - var sub_section = new View(self.app, { - inputs : input_def.inputs - }); - - // delete button - var button_visible = new Ui.ButtonIcon({ - icon : 'fa-eye-slash', - tooltip : 'Show/hide section', - cls : 'ui-button-icon-plain' - }); - - // create portlet for sub section - var portlet = new Portlet.View({ - title : input_def.label, - cls : 'ui-portlet-section', - operations : { - button_visible: button_visible - } - }); - portlet.append(sub_section.$el); - portlet.append($('
').addClass('ui-table-form-info').html(input_def.help)); - - // add event handler visibility button - var visible = false; - portlet.$content.hide(); - portlet.$header.css('cursor', 'pointer'); - portlet.$header.on('click', function() { - if (visible) { - visible = false; - portlet.$content.hide(); - button_visible.setIcon('fa-eye-slash'); - } else { - visible = true; - portlet.$content.fadeIn('fast'); - button_visible.setIcon('fa-eye'); - } - }); - - // show sub section if requested - if (input_def.expand) { - portlet.$header.trigger('click'); - } - - // create table row - this.table.add(portlet.$el); - - // append row to table - this.table.append(input_def.id); - }, - - /** Add a single input field element - */ - _addRow: function(input_def) { - // get id - var id = input_def.id; - - // create input field - var field = this.parameters.create(input_def); - - // add to field list - this.app.field_list[id] = field; - - // create input field wrapper - var input_element = new InputElement(this.app, { - label : input_def.label, - default_value : input_def.default_value, - optional : input_def.optional, - help : input_def.help, - field : field - }); - - // add to element list - this.app.element_list[id] = input_element; - - // create table row - this.table.add(input_element.$el); - - // append to table - this.table.append(id); - - // hide row if neccessary - if (input_def.hidden) { - this.table.get(id).hide(); - } - - // return created field - return field; - } - }); - - return { - View: View - }; -}); diff --git a/static/scripts/mvc/tools/tools-select-content.js b/static/scripts/mvc/tools/tools-select-content.js deleted file mode 100644 index 77120f092c8..00000000000 --- a/static/scripts/mvc/tools/tools-select-content.js +++ /dev/null @@ -1,336 +0,0 @@ -// dependencies -define(['utils/utils', 'mvc/ui/ui-misc', 'mvc/ui/ui-tabs', 'mvc/tools/tools-template'], function(Utils, Ui, Tabs, ToolTemplate) { - -var View = Backbone.View.extend({ - // initialize - initialize : function(app, options) { - // link app and options - this.app = app; - this.options = options; - - // link this - var self = this; - - // add element - this.setElement('
'); - - // list of select fields - this.list = {}; - - // radio button options - var radio_buttons = []; - - // identify selector type - if (options.type == 'data_collection') { - this.mode = 'collection'; - } else { - if (options.multiple) { - this.mode = 'multiple'; - } else { - this.mode = 'single'; - } - } - - // set initial state - this.current = this.mode; - this.list = {}; - - // error messages - var extensions = Utils.textify(options.extensions); - var hda_error = 'No dataset available.'; - if (extensions) { - hda_error = 'No ' + extensions + ' dataset available.'; - } - var hdca_error = 'No dataset list available.'; - if (extensions) { - hdca_error = 'No ' + extensions + ' dataset collection available.'; - } - - // add single dataset selector - if (this.mode == 'single') { - radio_buttons.push({ - icon : 'fa-file-o', - value : 'single', - tooltip : 'Single dataset' - }); - this.select_single = new Ui.Select.View({ - optional : options.optional, - error_text : hda_error, - onchange : function() { - self.trigger('change'); - } - }); - this.list['single'] = { - field: this.select_single, - type : 'hda' - }; - } - - // add multiple dataset selector - if (this.mode == 'single' || this.mode == 'multiple') { - radio_buttons.push({ - icon : 'fa-files-o', - value : 'multiple', - tooltip : 'Multiple datasets' - }); - this.select_multiple = new Ui.Select.View({ - multiple : true, - searchable : false, - error_text : hda_error, - onchange : function() { - self.trigger('change'); - } - }); - this.list['multiple'] = { - field: this.select_multiple, - type : 'hda' - }; - } - - // add collection selector - if (this.mode == 'single' || this.mode == 'multiple' || this.mode == 'collection') { - radio_buttons.push({ - icon : 'fa-folder-o', - value : 'collection', - tooltip : 'Dataset collection' - }); - this.select_collection = new Ui.Select.View({ - error_text : hdca_error, - optional : options.optional, - onchange : function() { - self.trigger('change'); - } - }); - this.list['collection'] = { - field: this.select_collection, - type : 'hdca' - }; - } - - // create button - this.button_type = new Ui.RadioButton.View({ - value : this.current, - data : radio_buttons, - onchange: function(value) { - self.current = value; - self.refresh(); - self.trigger('change'); - } - }); - - // add batch mode information - this.$batch = $(ToolTemplate.batchMode()); - - // number of radio buttons - var n_buttons = _.size(this.list); - - // add button to dom - var button_width = 0; - if (n_buttons > 1) { - this.$el.append(this.button_type.$el); - button_width = Math.max(0, _.size(this.list) * 35) + 'px'; - } - - // append field elements - for (var i in this.list) { - this.$el.append(this.list[i].field.$el.css({ - 'margin-left': button_width - })); - } - - // append batch message - this.$el.append(this.$batch.css({ - 'margin-left': button_width - })); - - // update options - this.update(options.data); - - // set initial value - if (this.options.value !== undefined) { - this.value(this.options.value); - } - - // refresh view - this.refresh(); - - // add change event. fires on trigger - this.on('change', function() { - if (options.onchange) { - options.onchange(self.value()); - } - }); - }, - - /** Indicate that select fields are being updated */ - wait: function() { - for (var i in this.list) { - this.list[i].field.wait(); - } - }, - - /** Indicate that the options update has been completed */ - unwait: function() { - for (var i in this.list) { - this.list[i].field.unwait(); - } - }, - - /** Update content selector */ - update: function(options) { - // update a particular select field - var self = this; - function _update(field, options) { - if (field) { - // identify available options - var select_options = []; - for (var i in options) { - var item = options[i]; - select_options.push({ - label: item.hid + ': ' + item.name, - value: item.id - }); - // backup to local history - self.app.history[item.id + '_' + item.src] = item; - } - // update field - field.update(select_options); - } - } - - // update available options - _update(this.select_single, options.hda); - _update(this.select_multiple, options.hda); - _update(this.select_collection, options.hdca); - }, - - /** Return the currently selected dataset values */ - value : function (new_value) { - // update current value - if (new_value !== undefined) { - if (new_value && new_value.values) { - try { - // create list with values - var list = []; - for (var i in new_value.values) { - list.push(new_value.values[i].id); - } - - // identify suitable select field - if (new_value && new_value.values.length > 0 && new_value.values[0].src == 'hdca') { - this.current = 'collection'; - this.select_collection.value(list[0]); - } else { - if (this.mode == 'multiple') { - this.current = 'multiple'; - this.select_multiple.value(list); - } else { - this.current = 'single'; - this.select_single.value(list[0]); - } - } - } catch (err) { - console.debug('tools-select-content::value() - Skipped.'); - } - } else { - for (var i in this.list) { - this.list[i].field.value(null); - } - } - } - - // refresh view - this.refresh(); - - // validate value - var id_list = this._select().value(); - if (id_list === null) { - return null; - } - - // transform into an array - if (!(id_list instanceof Array)) { - id_list = [id_list]; - } - - // check if value exists - if (id_list.length === 0) { - return null; - } - - // prepare result dict - var result = { - batch : this._batch(), - values : [] - } - - // append to dataset ids - for (var i in id_list) { - var details = _.findWhere(this.app.history, { - id : id_list[i], - src : this.list[this.current].type - }); - if (details) { - result.values.push(details); - } else { - return null; - } - } - - // sort by history ids - result.values.sort(function(a, b){ - return a.hid - b.hid; - }); - - // return - return result; - }, - - /** Refreshes data selection view */ - refresh: function() { - this.button_type.value(this.current); - for (var i in this.list) { - var $el = this.list[i].field.$el; - if (this.current == i) { - $el.show(); - } else { - $el.hide(); - } - } - if (this._batch()) { - this.$batch.show(); - } else { - this.$batch.hide(); - } - }, - - /** Assists in selecting the current field */ - _select: function() { - return this.list[this.current].field; - }, - - /** Assists in identifying the batch mode */ - _batch: function() { - if (this.current == 'collection') { - var hdca = _.findWhere(this.app.history, { - id : this._select().value(), - src : 'hdca' - }); - if (hdca && hdca.map_over_type) { - return true; - } - } - if (this.current != 'single') { - if (this.mode == 'single') { - return true; - } - } - return false; - } -}); - -return { - View: View -} - -}); diff --git a/static/scripts/mvc/tools/tools-tree.js b/static/scripts/mvc/tools/tools-tree.js deleted file mode 100644 index fe060ad7bb9..00000000000 --- a/static/scripts/mvc/tools/tools-tree.js +++ /dev/null @@ -1,300 +0,0 @@ -/* - This class maps the tool form dom to an api compatible javascript dictionary. -*/ -// dependencies -define(['utils/utils'], function(Utils) { - -// tool form tree -return Backbone.Model.extend({ - // initialize - initialize: function(app) { - this.app = app; - }, - - /** Convert dictionary representation into tool api specific flat dictionary format. - */ - finalize: function(patch) { - // link this - var self = this; - - // dictionary with api specific identifiers - this.map_dict = {}; - - // check if section is available - if (!this.app.section) { - return {}; - } - - // ensure that dictionary with patching functions exists - patch = patch || {}; - - // dictionary formatted for job submission or tool form update - var result_dict = {}; - - // prepare full dictionary - var dict = {}; - - // fill dictionary from dom - this._iterate(this.app.section.$el, dict); - - // add identifier and value to job definition - function add(job_input_id, input_id, input_value) { - // add entry to result dictionary - result_dict[job_input_id] = input_value; - - // backup id mapping - self.map_dict[job_input_id] = input_id; - }; - - // converter between raw dictionary and job dictionary - function convert(identifier, head) { - for (var index in head) { - var node = head[index]; - if (node.input) { - // get node - var input = node.input; - - // create identifier - var job_input_id = identifier; - if (identifier != '') { - job_input_id += '|'; - } - job_input_id += input.name; - - // process input type - switch (input.type) { - // handle repeats - case 'repeat': - // section identifier - var section_label = 'section-'; - - // collect repeat block identifiers - var block_indices = []; - var block_prefix = null; - for (var block_label in node) { - var pos = block_label.indexOf(section_label); - if (pos != -1) { - pos += section_label.length; - block_indices.push(parseInt(block_label.substr(pos))); - if (!block_prefix) { - block_prefix = block_label.substr(0, pos); - } - } - } - - // sort repeat blocks - block_indices.sort(function(a,b) { return a - b; }); - - // add to response dictionary in created order - var index = 0; - for (var i in block_indices) { - convert(job_input_id + '_' + index++, node[block_prefix + block_indices[i]]); - } - break; - // handle conditionals - case 'conditional': - // get and patch conditional value - var value = self.app.field_list[input.id].value(); - if (patch[input.test_param.type]) { - value = patch[input.test_param.type](value); - } - - // add conditional value - add (job_input_id + '|' + input.test_param.name, input.id, value); - - // identify selected case - var selectedCase = self.matchCase(input, value); - if (selectedCase != -1) { - convert(job_input_id, head[input.id + '-section-' + selectedCase]); - } - break; - // handle custom sub sections - case 'section': - convert('', node); - break; - default: - // get field - var field = self.app.field_list[input.id]; - if (field && field.value) { - // validate field value - var value = field.value(); - - // get and patch field value - if (patch[input.type]) { - value = patch[input.type](value); - } - - // ignore certain values - if (input.ignore === undefined || input.ignore != value) { - // add value to submission - add (job_input_id, input.id, value); - - // add payload to submission - if (input.payload) { - for (var p_id in input.payload) { - add (p_id, input.id, input.payload[p_id]); - } - } - } - } - } - } - } - } - - // start conversion - convert('', dict); - - // return result - return result_dict; - }, - - /** Match job definition identifier to input element identifier - */ - match: function (job_input_id) { - return this.map_dict && this.map_dict[job_input_id]; - }, - - /** Match conditional values to selected cases - */ - matchCase: function(input, value) { - // format value for boolean inputs - if (input.test_param.type == 'boolean') { - if (value == 'true') { - value = input.test_param.truevalue || 'true'; - } else { - value = input.test_param.falsevalue || 'false'; - } - } - - // find selected case - for (var i in input.cases) { - if (input.cases[i].value == value) { - return i; - } - } - - // selected case not found - return -1; - }, - - /** Matches identifier from api model to input elements - */ - matchModel: function(model, callback) { - // final result dictionary - var result = {}; - - // link this - var self = this; - - // search throughout response - function search (id, head) { - for (var i in head) { - var node = head[i]; - var index = node.name; - if (id != '') { - index = id + '|' + index; - } - switch (node.type) { - case 'repeat': - for (var j in node.cache) { - search (index + '_' + j, node.cache[j]); - } - break; - case 'conditional': - var value = node.test_param && node.test_param.value; - var selectedCase = self.matchCase(node, value); - if (selectedCase != -1) { - search (index, node.cases[selectedCase].inputs); - } - break; - default: - var input_id = self.map_dict[index]; - if (input_id) { - callback(input_id, node); - } - } - } - } - - // match all ids and return messages - search('', model.inputs); - - // return matched results - return result; - }, - - /** Matches identifier from api response to input elements - */ - matchResponse: function(response) { - // final result dictionary - var result = {}; - - // link this - var self = this; - - // search throughout response - function search (id, head) { - if (typeof head === 'string') { - var input_id = self.map_dict[id]; - if (input_id) { - result[input_id] = head; - } - } else { - for (var i in head) { - var new_id = i; - if (id !== '') { - var separator = '|'; - if (head instanceof Array) { - separator = '_'; - } - new_id = id + separator + new_id; - } - search (new_id, head[i]); - } - } - } - - // match all ids and return messages - search('', response); - - // return matched results - return result; - }, - - /** Iterate through the tool form dom and map it to the dictionary. - */ - _iterate: function(parent, dict) { - // get child nodes - var self = this; - var children = $(parent).children(); - children.each(function() { - // get child element - var child = this; - - // get id - var id = $(child).attr('id'); - - // create new branch - if ($(child).hasClass('section-row')) { - // create sub dictionary - dict[id] = {}; - - // add input element if it exists - var input = self.app.input_list[id]; - if (input) { - dict[id] = { - input : input - } - } - - // fill sub dictionary - self._iterate(child, dict[id]); - } else { - self._iterate(child, dict); - } - }); - } -}); - -}); \ No newline at end of file diff --git a/static/scripts/packed/mvc/tools/tools-input.js b/static/scripts/packed/mvc/tools/tools-input.js deleted file mode 100644 index 0c4bb1fdce3..00000000000 --- a/static/scripts/packed/mvc/tools/tools-input.js +++ /dev/null @@ -1 +0,0 @@ -define([],function(){return Backbone.View.extend({initialize:function(d,c){this.app=d;this.text_enable=d.options.text_enable||"Enable";this.text_disable=d.options.text_disable||"Disable";this.cls_enable=d.options.cls_enable||"fa fa-plus-square";this.cls_disable=d.options.cls_disable||"fa fa-minus-square";this.field=c.field;this.default_value=c.default_value;this.setElement(this._template(c));this.$field=this.$el.find(".ui-table-form-field");this.$optional=this.$el.find(".ui-table-form-optional");this.$optional_icon=this.$el.find(".ui-table-form-optional").find(".icon");this.$error_text=this.$el.find(".ui-table-form-error-text");this.$error=this.$el.find(".ui-table-form-error");this.$field.prepend(this.field.$el);this.field.skip=false;var b=this.field.value&&this.field.value();this.field.skip=Boolean(c.optional&&(b===null||b===""||b===this.default_value||String(b)===String(this.default_value)||Number(b)===Number(this.default_value)||JSON.stringify(b)===JSON.stringify(this.default_value)));this._refresh();var a=this;this.$optional.on("click",function(){a.field.skip=!a.field.skip;a._refresh();a.app.trigger("refresh")})},error:function(a){this.$error_text.html(a);this.$error.show();this.$el.addClass("ui-error")},reset:function(){this.$error.hide();this.$el.removeClass("ui-error")},_refresh:function(){this.$optional_icon.removeClass().addClass("icon");if(!this.field.skip){this.$field.fadeIn("fast");this._tooltip(this.text_disable,this.cls_disable)}else{this.$field.hide();this._tooltip(this.text_enable,this.cls_enable);this.field.value&&this.field.value(this.default_value)}},_tooltip:function(b,a){if(this.$optional.length){this.$optional_icon.addClass(a).tooltip({placement:"bottom"}).attr("data-original-title",b).tooltip("fixTitle").tooltip("hide")}},_template:function(a){var b='
';if(a.optional){b+='
'+a.label+"
"}else{b+=a.label}b+='
';b+='
';if(a.help){b+=a.help}b+="
";b+="
";return b}})}); \ No newline at end of file diff --git a/static/scripts/packed/mvc/tools/tools-parameters.js b/static/scripts/packed/mvc/tools/tools-parameters.js deleted file mode 100644 index 727faefed37..00000000000 --- a/static/scripts/packed/mvc/tools/tools-parameters.js +++ /dev/null @@ -1 +0,0 @@ -define(["utils/utils","mvc/ui/ui-misc","mvc/tools/tools-select-content","mvc/ui/ui-color-picker"],function(c,d,a,b){return Backbone.Model.extend({types:{text:"_fieldText",select:"_fieldSelect",data_column:"_fieldSelect",genomebuild:"_fieldSelect",data:"_fieldData",data_collection:"_fieldData",integer:"_fieldSlider","float":"_fieldSlider","boolean":"_fieldBoolean",drill_down:"_fieldDrilldown",color:"_fieldColor",hidden:"_fieldHidden",hidden_data:"_fieldHidden",baseurl:"_fieldHidden",},initialize:function(f,e){this.app=f},create:function(e){if(e.value===undefined){e.value=null}if(e.default_value===undefined){e.default_value=e.value}var g=null;var f=this.types[e.type];if(f&&typeof(this[f])==="function"){g=this[f].call(this,e)}if(!g){this.app.incompatible=true;if(e.options){g=this._fieldSelect(e)}else{g=this._fieldText(e)}console.debug("tools-form::_addRow() : Auto matched field type ("+e.type+").")}if(e.value!==undefined){g.value(e.value)}return g},_fieldData:function(e){if(!this.app.options.is_dynamic){e.info="Data input '"+e.name+"' ("+c.textify(e.extensions.toString())+")";e.value=null;return this._fieldHidden(e)}var f=this;return new a.View(this.app,{id:"field-"+e.id,extensions:e.extensions,optional:e.optional,multiple:e.multiple,type:e.type,data:e.options,onchange:function(){f.app.trigger("refresh")}})},_fieldSelect:function(e){if(!this.app.options.is_dynamic&&e.is_dynamic){return this._fieldText(e)}if(e.type=="data_column"){e.error_text="Missing columns in referenced dataset."}if(e.type=="genomebuild"){e.searchable=true}var g=[];for(var h in e.options){var j=e.options[h];g.push({label:j[0],value:j[1]})}var k=d.Select;switch(e.display){case"checkboxes":k=d.Checkbox;break;case"radio":k=d.Radio;break}var f=this;return new k.View({id:"field-"+e.id,data:g,error_text:e.error_text||"No options available",multiple:e.multiple,searchable:e.searchable,onchange:function(){f.app.trigger("refresh")}})},_fieldDrilldown:function(e){if(!this.app.options.is_dynamic&&e.is_dynamic){return this._fieldText(e)}var f=this;return new d.Drilldown.View({id:"field-"+e.id,data:e.options,display:e.display,onchange:function(){f.app.trigger("refresh")}})},_fieldText:function(e){if(e.options){e.area=e.multiple;if(!c.validate(e.value)){e.value=""}else{if(e.value instanceof Array){e.value=value.toString()}else{e.value=String(e.value).replace(/[\[\]'"\s]/g,"");if(e.multiple){e.value=e.value.replace(/,/g,"\n")}}}}var f=this;return new d.Input({id:"field-"+e.id,area:e.area,onchange:function(){f.app.trigger("refresh")}})},_fieldSlider:function(e){var f=this;return new d.Slider.View({id:"field-"+e.id,precise:e.type=="float",min:e.min,max:e.max,onchange:function(){f.app.trigger("refresh")}})},_fieldHidden:function(e){return new d.Hidden({id:"field-"+e.id,info:e.info})},_fieldBoolean:function(e){var f=this;return new d.RadioButton.View({id:"field-"+e.id,data:[{label:"Yes",value:"true"},{label:"No",value:"false"}],onchange:function(){f.app.trigger("refresh")}})},_fieldColor:function(e){var f=this;return new b({id:"field-"+e.id,onchange:function(){f.app.trigger("refresh")}})}});return{View:View}}); \ No newline at end of file diff --git a/static/scripts/packed/mvc/tools/tools-repeat.js b/static/scripts/packed/mvc/tools/tools-repeat.js deleted file mode 100644 index 47b5d8c6f19..00000000000 --- a/static/scripts/packed/mvc/tools/tools-repeat.js +++ /dev/null @@ -1 +0,0 @@ -define(["utils/utils","mvc/ui/ui-table","mvc/ui/ui-portlet","mvc/ui/ui-misc"],function(c,a,b,e){var d=Backbone.View.extend({optionsDefault:{title:"Section",max:null,min:null},initialize:function(g){this.options=c.merge(g,this.optionsDefault);this.setElement("
");var f=this;this.button_new=new e.ButtonIcon({icon:"fa-plus",title:"Insert "+g.title_new,tooltip:"Add new "+g.title_new+" block",floating:"clear",onclick:function(){if(g.onnew){g.onnew()}}});this.table=new a.View({cls:"ui-table-plain",content:""});this.$el.append(this.table.$el);this.$el.append($("
").append(this.button_new.$el));this.list={};this.n=0},size:function(){return this.n},add:function(g){if(!g.id||this.list[g.id]){console.debug("tools-repeat::add - Duplicate repeat block id.");return}this.n++;var f=new e.ButtonIcon({icon:"fa-trash-o",tooltip:"Delete this repeat block",cls:"ui-button-icon-plain",onclick:function(){if(g.ondel){g.ondel()}}});var h=new b.View({id:g.id,title:"placeholder",cls:"ui-portlet-repeat",operations:{button_delete:f}});h.append(g.$el);h.$el.addClass("section-row");this.list[g.id]=h;this.table.add(h.$el);this.table.append("row_"+g.id,true);if(this.options.max>0&&this.n>=this.options.max){this.button_new.disable()}this._refresh()},del:function(g){if(!this.list[g]){console.debug("tools-repeat::del - Invalid repeat block id.");return}this.n--;var f=this.table.get("row_"+g);f.remove();delete this.list[g];this.button_new.enable();this._refresh()},_refresh:function(){var f=0;for(var h in this.list){var g=this.list[h];g.title(++f+": "+this.options.title);if(this.n>this.options.min){g.showOperation("button_delete")}else{g.hideOperation("button_delete")}}}});return{View:d}}); \ No newline at end of file diff --git a/static/scripts/packed/mvc/tools/tools-section.js b/static/scripts/packed/mvc/tools/tools-section.js deleted file mode 100644 index d1ded2499e8..00000000000 --- a/static/scripts/packed/mvc/tools/tools-section.js +++ /dev/null @@ -1 +0,0 @@ -define(["utils/utils","mvc/ui/ui-table","mvc/ui/ui-misc","mvc/ui/ui-portlet","mvc/tools/tools-repeat","mvc/tools/tools-input","mvc/tools/tools-parameters"],function(e,a,h,d,c,f,b){var g=Backbone.View.extend({initialize:function(j,i){this.app=j;this.inputs=i.inputs;i.cls="ui-table-plain";i.cls_tr="section-row";this.table=new a.View(i);this.parameters=new b(j,i);this.setElement(this.table.$el);this.render()},render:function(){this.table.delAll();for(var j in this.inputs){this.add(this.inputs[j])}},add:function(k){var j=this;var i=jQuery.extend(true,{},k);i.id=k.id=e.uuid();this.app.input_list[i.id]=i;var l=i.type;switch(l){case"conditional":this._addConditional(i);break;case"repeat":this._addRepeat(i);break;case"section":this._addSection(i);break;default:this._addRow(i)}},_addConditional:function(j){var k=this;j.test_param.id=j.id;var n=this._addRow(j.test_param);n.options.onchange=function(w){var v=k.app.tree.matchCase(j,w);for(var u in j.cases){var q=j.cases[u];var t=j.id+"-section-"+u;var p=k.table.get(t);var s=false;for(var r in q.inputs){if(!q.inputs[r].hidden){s=true;break}}if(u==v&&s){p.fadeIn("fast")}else{p.hide()}}k.app.trigger("refresh")};for(var m in j.cases){var l=j.id+"-section-"+m;var o=new g(this.app,{inputs:j.cases[m].inputs});o.$el.addClass("ui-table-section");this.table.add(o.$el);this.table.append(l)}n.trigger("change")},_addRepeat:function(p){var s=this;var q=0;var l=new c.View({title:p.title,title_new:p.title,min:p.min,max:p.max,onnew:function(){n(p.inputs);s.app.trigger("refresh")}});function n(i){var t=p.id+"-section-"+(q++);var u=new g(s.app,{inputs:i});l.add({id:t,$el:u.$el,ondel:function(){l.del(t);s.app.trigger("refresh")}})}var j=p.min;var r=_.size(p.cache);for(var m=0;m").addClass("ui-table-form-info").html(i.help));var k=false;l.$content.hide();l.$header.css("cursor","pointer");l.$header.on("click",function(){if(k){k=false;l.$content.hide();m.setIcon("fa-eye-slash")}else{k=true;l.$content.fadeIn("fast");m.setIcon("fa-eye")}});if(i.expand){l.$header.trigger("click")}this.table.add(l.$el);this.table.append(i.id)},_addRow:function(i){var l=i.id;var j=this.parameters.create(i);this.app.field_list[l]=j;var k=new f(this.app,{label:i.label,default_value:i.default_value,optional:i.optional,help:i.help,field:j});this.app.element_list[l]=k;this.table.add(k.$el);this.table.append(l);if(i.hidden){this.table.get(l).hide()}return j}});return{View:g}}); \ No newline at end of file diff --git a/static/scripts/packed/mvc/tools/tools-select-content.js b/static/scripts/packed/mvc/tools/tools-select-content.js deleted file mode 100644 index a50fbfd7493..00000000000 --- a/static/scripts/packed/mvc/tools/tools-select-content.js +++ /dev/null @@ -1 +0,0 @@ -define(["utils/utils","mvc/ui/ui-misc","mvc/ui/ui-tabs","mvc/tools/tools-template"],function(c,e,b,a){var d=Backbone.View.extend({initialize:function(g,p){this.app=g;this.options=p;var o=this;this.setElement('
');this.list={};var m=[];if(p.type=="data_collection"){this.mode="collection"}else{if(p.multiple){this.mode="multiple"}else{this.mode="single"}}this.current=this.mode;this.list={};var k=c.textify(p.extensions);var j="No dataset available.";if(k){j="No "+k+" dataset available."}var l="No dataset list available.";if(k){l="No "+k+" dataset collection available."}if(this.mode=="single"){m.push({icon:"fa-file-o",value:"single",tooltip:"Single dataset"});this.select_single=new e.Select.View({optional:p.optional,error_text:j,onchange:function(){o.trigger("change")}});this.list.single={field:this.select_single,type:"hda"}}if(this.mode=="single"||this.mode=="multiple"){m.push({icon:"fa-files-o",value:"multiple",tooltip:"Multiple datasets"});this.select_multiple=new e.Select.View({multiple:true,searchable:false,error_text:j,onchange:function(){o.trigger("change")}});this.list.multiple={field:this.select_multiple,type:"hda"}}if(this.mode=="single"||this.mode=="multiple"||this.mode=="collection"){m.push({icon:"fa-folder-o",value:"collection",tooltip:"Dataset collection"});this.select_collection=new e.Select.View({error_text:l,optional:p.optional,onchange:function(){o.trigger("change")}});this.list.collection={field:this.select_collection,type:"hdca"}}this.button_type=new e.RadioButton.View({value:this.current,data:m,onchange:function(i){o.current=i;o.refresh();o.trigger("change")}});this.$batch=$(a.batchMode());var f=_.size(this.list);var n=0;if(f>1){this.$el.append(this.button_type.$el);n=Math.max(0,_.size(this.list)*35)+"px"}for(var h in this.list){this.$el.append(this.list[h].field.$el.css({"margin-left":n}))}this.$el.append(this.$batch.css({"margin-left":n}));this.update(p.data);if(this.options.value!==undefined){this.value(this.options.value)}this.refresh();this.on("change",function(){if(p.onchange){p.onchange(o.value())}})},wait:function(){for(var f in this.list){this.list[f].field.wait()}},unwait:function(){for(var f in this.list){this.list[f].field.unwait()}},update:function(h){var f=this;function g(m,j){if(m){var n=[];for(var k in j){var l=j[k];n.push({label:l.hid+": "+l.name,value:l.id});f.app.history[l.id+"_"+l.src]=l}m.update(n)}}g(this.select_single,h.hda);g(this.select_multiple,h.hda);g(this.select_collection,h.hdca)},value:function(j){if(j!==undefined){if(j&&j.values){try{var m=[];for(var h in j.values){m.push(j.values[h].id)}if(j&&j.values.length>0&&j.values[0].src=="hdca"){this.current="collection";this.select_collection.value(m[0])}else{if(this.mode=="multiple"){this.current="multiple";this.select_multiple.value(m)}else{this.current="single";this.select_single.value(m[0])}}}catch(l){console.debug("tools-select-content::value() - Skipped.")}}else{for(var h in this.list){this.list[h].field.value(null)}}}this.refresh();var k=this._select().value();if(k===null){return null}if(!(k instanceof Array)){k=[k]}if(k.length===0){return null}var f={batch:this._batch(),values:[]};for(var h in k){var g=_.findWhere(this.app.history,{id:k[h],src:this.list[this.current].type});if(g){f.values.push(g)}else{return null}}f.values.sort(function(n,i){return n.hid-i.hid});return f},refresh:function(){this.button_type.value(this.current);for(var g in this.list){var f=this.list[g].field.$el;if(this.current==g){f.show()}else{f.hide()}}if(this._batch()){this.$batch.show()}else{this.$batch.hide()}},_select:function(){return this.list[this.current].field},_batch:function(){if(this.current=="collection"){var f=_.findWhere(this.app.history,{id:this._select().value(),src:"hdca"});if(f&&f.map_over_type){return true}}if(this.current!="single"){if(this.mode=="single"){return true}}return false}});return{View:d}}); \ No newline at end of file diff --git a/static/scripts/packed/mvc/tools/tools-tree.js b/static/scripts/packed/mvc/tools/tools-tree.js deleted file mode 100644 index d820cd44581..00000000000 --- a/static/scripts/packed/mvc/tools/tools-tree.js +++ /dev/null @@ -1 +0,0 @@ -define(["utils/utils"],function(a){return Backbone.Model.extend({initialize:function(b){this.app=b},finalize:function(g){var b=this;this.map_dict={};if(!this.app.section){return{}}g=g||{};var f={};var e={};this._iterate(this.app.section.$el,e);function d(j,i,h){f[j]=h;b.map_dict[j]=i}function c(p,s){for(var n in s){var k=s[n];if(k.input){var u=k.input;var o=p;if(p!=""){o+="|"}o+=u.name;switch(u.type){case"repeat":var j="section-";var x=[];var r=null;for(var w in k){var q=w.indexOf(j);if(q!=-1){q+=j.length;x.push(parseInt(w.substr(q)));if(!r){r=w.substr(0,q)}}}x.sort(function(y,i){return y-i});var n=0;for(var l in x){c(o+"_"+n++,k[r+x[l]])}break;case"conditional":var v=b.app.field_list[u.id].value();if(g[u.test_param.type]){v=g[u.test_param.type](v)}d(o+"|"+u.test_param.name,u.id,v);var h=b.matchCase(u,v);if(h!=-1){c(o,s[u.id+"-section-"+h])}break;case"section":c("",k);break;default:var t=b.app.field_list[u.id];if(t&&t.value){var v=t.value();if(g[u.type]){v=g[u.type](v)}if(u.ignore===undefined||u.ignore!=v){d(o,u.id,v);if(u.payload){for(var m in u.payload){d(m,u.id,u.payload[m])}}}}}}}}c("",e);return f},match:function(b){return this.map_dict&&this.map_dict[b]},matchCase:function(b,d){if(b.test_param.type=="boolean"){if(d=="true"){d=b.test_param.truevalue||"true"}else{d=b.test_param.falsevalue||"false"}}for(var c in b.cases){if(b.cases[c].value==d){return c}}return -1},matchModel:function(d,f){var b={};var c=this;function e(g,p){for(var m in p){var k=p[m];var n=k.name;if(g!=""){n=g+"|"+n}switch(k.type){case"repeat":for(var l in k.cache){e(n+"_"+l,k.cache[l])}break;case"conditional":var q=k.test_param&&k.test_param.value;var h=c.matchCase(k,q);if(h!=-1){e(n,k.cases[h].inputs)}break;default:var o=c.map_dict[n];if(o){f(o,k)}}}}e("",d.inputs);return b},matchResponse:function(d){var b={};var c=this;function e(l,j){if(typeof j==="string"){var g=c.map_dict[l];if(g){b[g]=j}}else{for(var h in j){var f=h;if(l!==""){var k="|";if(j instanceof Array){k="_"}f=l+k+f}e(f,j[h])}}}e("",d);return b},_iterate:function(d,e){var b=this;var c=$(d).children();c.each(function(){var h=this;var g=$(h).attr("id");if($(h).hasClass("section-row")){e[g]={};var f=b.app.input_list[g];if(f){e[g]={input:f}}b._iterate(h,e[g])}else{b._iterate(h,e)}})}})}); \ No newline at end of file