diff src/DML/MainVisBundle/Resources/assets/marionette/modules/DataModule/DataModule.33-DymanicDefinitionProviderForRecordings.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/DataModule/DataModule.33-DymanicDefinitionProviderForRecordings.js	Tue Feb 09 20:54:02 2016 +0100
@@ -0,0 +1,64 @@
+"use strict";
+
+App.module("DataModule", function(DataModule, App, Backbone, Marionette, $, _, Logger) {
+    // Prevent auto start
+    //CollectionDefinitionProvider.startWithParent = false;
+
+    // Define private variables
+    var logger = null;
+
+    /**
+     * Module initializer
+     * 
+     */
+    DataModule.addInitializer(function(){
+
+        logger = Logger.get("App.DataModule");
+
+        DataModule.DynamicDefinitionForRecording = DataModule.DynamicDefinition.extend({});
+        DataModule.DymanicDefinitionProviderForRecordings = DataModule.DynamicDefinitionProvider.extend({
+            
+            options: {
+                DynamicDefinition:                 DataModule.DynamicDefinitionForRecording,
+                apiMethod:                         "getRecordingPerspective",
+                customAttributesWhenNotApplicable: {label: undefined},
+                customAttributesWhileBeingUpdated: {label: null},
+                customAttributesWhenFaulty:        {label: false}
+            },
+            
+            isFaulty: function(dynamicDefinition) {
+                return dynamicDefinition.attributes.label === false;
+            },
+
+            isBeingUpdated: function(dynamicDefinition) {
+                return dynamicDefinition.attributes.label === null;
+            },
+            
+            configParametersToRequestParameters: function(config) {
+                var rawConfigParameters = config.attributes.parameters.attributes;
+                if (rawConfigParameters.recordingURI) {
+                    return {"uri": rawConfigParameters.recordingURI, "pid": "properties"};
+                } else {
+                    return null;
+                }
+            },
+            
+            apiResponseToAttributes: function(data, query) {
+                var attributes = {};
+                
+                if (data && data.label) {
+                    attributes = data;
+                } else {
+                    attributes = {label: false};
+                    if (data.errors) {
+                        attributes = _.clone(this.options.customAttributesWhenFaulty)
+                        attributes.errors = data.errors;
+                    }
+                    logger.warn("An error occured when attempting to obtain new recording definition. Query / response:", query, data);
+                };
+                attributes.query = query;
+                return attributes;
+            }
+        });
+    });
+}, Logger);