diff src/DML/MainVisBundle/Resources/assets/marionette/App.99-etc.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/App.99-etc.js	Tue Feb 09 20:54:02 2016 +0100
@@ -0,0 +1,149 @@
+"use strict";
+
+App.addInitializer(function(options){
+
+    var $document = $(document);
+
+    // A box that randomly changes colour when css assets become new
+    if (window.location.href.indexOf("track_assets_version") > 0) {
+        var cssHref = $("link[rel=stylesheet]").attr("href");
+        var assetsVersion = cssHref.slice(cssHref.indexOf("?") + 1);
+        var $cssUpdateIndicator = $.bem.generateElement("app", "assets-version-indicator");
+        $cssUpdateIndicator.text("assets version: " + assetsVersion);
+        $cssUpdateIndicator.appendTo($(".app"));
+        $cssUpdateIndicator.click(function() {
+            App.showNotification({id: "assets-version-indicator", content: "This element changes colour when the css file recomplies."});
+        });
+    }
+    var codeVersion = "2015-03-12";
+    var latestChange = "Comparison views and also three new views for collections were added (<b>tuning stats</b>, <b>tonic histogram</b> and <b>pitch class histogram</b>). All three demo states now have the same sets of rows."
+    var previouslyOpenedCodeVersion = App.DataModule.Storage.getStrCache(null, "code-version");
+    if (codeVersion != previouslyOpenedCodeVersion) {
+        App.DataModule.Storage.setStrCache(null, "introductory-hint-was-read", undefined);
+        App.DataModule.Storage.setStrCache(null, "code-version", codeVersion);
+    }
+
+    if (previouslyOpenedCodeVersion < "2015-03-12") {
+        App.contextManager.restoreDefault(App.context, "empty");
+    };
+
+    // introductory hint
+//    if (!App.DataModule.Storage.getStrCache(null, "introductory-hint-was-read")) {
+//        setTimeout(function() {
+//            App.showNotification({
+//                content: Backbone.Marionette.TemplateCache.get("#notification-content_tmp-instructions")({
+//                    codeVersion: codeVersion,
+//                    latestChange: latestChange,
+//                    ctrl:  App.keyboardMappings.ctrlTitle,
+//                }),
+//                onClose: function() {
+//                    App.DataModule.Storage.setStrCache(null, "introductory-hint-was-read", "yes")
+//                },
+//                modifiers: ["ttl_ever"]
+//            });
+//        }, 3000);
+//        //}, 0);
+//    }
+
+    // scrollable data in vis instances for Samer (if he adds ?scroll)
+    if (window.location.href.indexOf("scroll") > 0) {
+        $("body").addClass("scrollable-pres-in-vis-instances");
+    }
+
+    var latestVisit = App.DataModule.Storage.getStrCache(null, "latest-visit");
+
+    // Flash help when a user sees the vis for the first time
+    if (!latestVisit) {
+        setTimeout(function() {
+            if (!App.helpIsShowing()) {
+                App.MainMenuModule.flashItem("help", 20);
+                // Show help when a user sees the vis for the first time
+//                App.MainMenuModule.flashItem("help", 20, function() {
+//                    App.showHelp();
+//                });
+            }
+        }, 5000);
+    }
+
+
+    App.DataModule.Storage.setStrCache(null, "latest-visit", (new Date().toString()));
+
+
+    // A warning that a backup api is being used
+    var defaultURIIdentifier = options.musicLibrary.defaultApiRootPaths[0];
+    if (options.musicLibrary.apiRootPaths[0].indexOf(defaultURIIdentifier) == -1) {
+        var currentURIIdentifier = options.musicLibrary.apiRootPaths[0].replace(/^[a-zA-Z]*:?\/\//, "").replace(/\/$/, "");
+        setTimeout(function() {
+            App.showNotification({
+                content: Backbone.Marionette.TemplateCache.get("#notification-content_alternative-api")({
+                    defaultURIIdentifier: defaultURIIdentifier,
+                    currentURIIdentifier: currentURIIdentifier,
+                    stuffToRemoveFromAddess: "api2",
+                }),
+                modifiers: ["ttl_30", "type_warning"]
+            });
+        }, 1000);
+    }
+
+    // Debug API on / off
+    var debugAPIShortcut = App.keyboardMappings.ctrlShift + "+8";
+    var debugAPIShortcutTitle = App.keyboardMappings.ctrlShiftTitle + "+8";
+    var debugAPIMessageVersion = 1;
+    var showDebugAPIModeNotificationIfNeeded = function() {
+        if (App.options.debugAPI && App.DataModule.Storage.getStrCache(null, "debug-api-message-shown") != debugAPIMessageVersion) {
+            App.showNotification({
+                id: "debug-api",
+                content: Backbone.Marionette.TemplateCache.get("#notification-content_debug-api")({
+                    debugAPIShortcut: debugAPIShortcutTitle,
+                }),
+                onClose: function() {
+                    App.DataModule.Storage.setStrCache(null, "debug-api-message-shown", debugAPIMessageVersion ? "1" : 0);
+                },
+                modifiers: ["ttl_ever", "type_warning"]
+            });
+        }
+    };
+
+    $document.bind("keydown", debugAPIShortcut, function(event) {
+        App.options.debugAPI = !App.options.debugAPI;
+        if (!App.options.debugAPI) {
+            App.hideNotification("debug-api");
+        }
+        showDebugAPIModeNotificationIfNeeded();
+        App.mainRegionView.render(true);
+        App.DataModule.Storage.setStrCache(null, "debug-api", App.options.debugAPI ? "1" : "");
+    });
+    showDebugAPIModeNotificationIfNeeded();
+
+    // Change entity width
+
+    //var widths = [100, 200, 300, 500, 750, 1000, 1]
+    var minWidth = 100;
+    var step = 20;
+    var maxWidth = 2000;
+    var changeEntityWidth = function(direction) {
+        var currentGrid = App.context.get("state").getConfigGridBeingShown();
+        var currentEntityWidth = (currentGrid.get("entityWidth") || App.options.defaultEntityWidth) * 1;
+
+        var diff = direction > 0 ? step : -step;
+        var newEntityWidth = currentEntityWidth + diff;
+        if (newEntityWidth > maxWidth) {
+            newEntityWidth = maxWidth;
+        }
+
+        if (newEntityWidth < minWidth) {
+            newEntityWidth = minWidth;
+        }
+
+        currentGrid.set("entityWidth", newEntityWidth);
+    };
+
+    $document.bind("keydown", "pageup", function(event) {
+        changeEntityWidth(1);
+        event.preventDefault();
+    });
+    $document.bind("keydown", "pagedown", function(event) {
+        changeEntityWidth(-1);
+        event.preventDefault();
+    });
+});