Mercurial > hg > dml-open-vis
diff src/DML/MainVisBundle/Resources/assets/marionette/modules/RepresentationModule/RepresentationModule.21-Master.entity._pair.js @ 0:493bcb69166c
added public content
author | Daniel Wolff |
---|---|
date | Tue, 09 Feb 2016 20:54:02 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/DML/MainVisBundle/Resources/assets/marionette/modules/RepresentationModule/RepresentationModule.21-Master.entity._pair.js Tue Feb 09 20:54:02 2016 +0100 @@ -0,0 +1,119 @@ +"use strict"; + +App.module("RepresentationModule", function(RepresentationModule, App, Backbone, Marionette, $, _, Logger) { + + RepresentationModule.addInitializer(function(options){ + + RepresentationModule.registerMaster({ + id: "entity._pair", + inherit: "entity._", + + defaultConfigParameterValues: { + comparisonMode: "superposition" + }, + + + // ================================================================= + // config grid panel + + + // ----------------------------------------------------------------- + // config grid panel - prepare + + prepareConfigGridPanelMainArea: function(configGridPanelView) { + // Comparison mode radio buttons (tick boxes) + var $comparisonModeTickBoxes = configGridPanelView._$mainArea.find("[data-comparison-mode]"); + configGridPanelView._$mainArea.data("$tickboxes_comparisonMode", $comparisonModeTickBoxes); + $comparisonModeTickBoxes.each(function() { + var $tickbox = $(this); + var comparisonMode = $tickbox.data("comparison-mode"); + configGridPanelView._$mainArea.data("$tickbox_comparison-mode_" + comparisonMode, $tickbox); + }); + + // Parent master's behaviour + RepresentationModule.getMasterById("entity._").prepareConfigGridPanelMainArea.apply(this, arguments); + }, + + + __panelInputChangeValueHandler: function(event) { + if (event.type == "tickboxchangevalue") { + var $thickbox = $(event.target); + var comparisonMode = $thickbox.data("comparisonMode"); + if (comparisonMode) { + var configGridPanelView = $thickbox.data("configGridPanelView"); + if (!configGridPanelView._$mainArea.data("ignoreChangesInComparisonModeTickboxes")) { + var master = $thickbox.data("configGridPanelView")._masterBehindMainArea; + master.planConfigParameterUpdateWithRespectToValueAndDefaultValue(configGridPanelView._cachedConfig, "comparisonMode", comparisonMode); + } + return; + }; + } + + // Parent master's behaviour + RepresentationModule.getMasterById("entity._").__panelInputChangeValueHandler.apply(this, arguments); + }, + + + // ----------------------------------------------------------------- + // config grid panel - sync + + syncConfigGridPanelMainArea: function(configGridPanelView, instant) { + + // comparison mode tick boxes + field visibility + var comparisonMode = this.getConfigParameterValueOrDefaultValue(configGridPanelView._cachedConfig, "comparisonMode").toLowerCase(); + var plannedComparisonMode = this.getConfigPlannedParameterValueOrDefaultValue(configGridPanelView._cachedConfig, "comparisonMode").toLowerCase(); + var comparisonModeHash = comparisonMode + plannedComparisonMode; + if (configGridPanelView._$mainArea.data("comparisonModeHash") != comparisonModeHash) { + configGridPanelView._$mainArea.data("comparisonModeHash", comparisonModeHash); + + // tick boxes + configGridPanelView._$mainArea.data("ignoreChangesInComparisonModeTickboxes", true); + configGridPanelView._$mainArea.data("$tickboxes_comparisonMode").each(function() { + var $tickbox = $(this); + var value = plannedComparisonMode == $tickbox.data("comparison-mode") ? "1" : ""; + var baseValue = (comparisonMode !== plannedComparisonMode) + ? (value ? "" : "1") + : (value ? "1" : ""); + + $tickbox.tickbox("option", { + "value": value, + "baseValue": baseValue + }); + }); + configGridPanelView._$mainArea.removeData("ignoreChangesInComparisonModeTickboxes"); + + // show / hide input blocks +// var presentParameterNames = _.keys(this._getPresentParameterNamesForLibrary(plannedComparisonMode)); +// var absentParameterNames = _.difference(_.keys(this.options.presenceOfParameters), presentParameterNames); +// +// for (var i = 0; i < presentParameterNames.length; i++) { +// configGridPanelView._$mainArea.data("$inputBlock_" + presentParameterNames[i]).show(); +// } +// for (var i = 0; i < absentParameterNames.length; i++) { +// configGridPanelView._$mainArea.data("$inputBlock_" + absentParameterNames[i]).hide(); +// } + } + + // Parent master's behaviour + RepresentationModule.getMasterById("entity._").syncConfigGridPanelMainArea.apply(this, arguments); + }, + + + // ================================================================= + // vis instance rendering + + + // ----------------------------------------------------------------- + // debug mode + + _mapDerivedVisInstanceDataAttributesToDebugAPIQueryBoxes: function (viewMaster) { + if (viewMaster.options.visInstanceSupportedComparisonModes.length) { + return [["left", "base", "apiRequestURIOnTheLeft", "apiResponseOnTheLeft"], + ["right", "base", "apiRequestURIOnTheRight", "apiResponseOnTheRight"]]; + } else { + return []; + } + } + }); + }); +}, Logger);