Daniel@0: "use strict"; Daniel@0: App.addInitializer(function(options){ Daniel@0: if (window.location.href.indexOf("reset") > 0) { Daniel@0: localStorage.clear(); Daniel@0: console.log("reset"); Daniel@0: } Daniel@0: Daniel@0: if (navigator.appVersion.indexOf("Mac") > 0) { Daniel@0: App.keyboardMappings = { Daniel@0: ctrl: "meta", Daniel@0: ctrlTitle: "cmd", Daniel@0: ctrlShift: "shift+meta", Daniel@0: ctrlShiftTitle: "cmd+shift", Daniel@0: }; Daniel@0: } else { Daniel@0: App.keyboardMappings = { Daniel@0: ctrl: "ctrl", Daniel@0: ctrlTitle: "ctrl", Daniel@0: ctrlShift: "ctrl+shift", Daniel@0: ctrlShiftTitle: "ctrl+shift", Daniel@0: }; Daniel@0: } Daniel@0: Daniel@0: App.DataModule.start(); Daniel@0: Daniel@0: Daniel@0: // pre-configuring Daniel@0: App.options.debugAPI = !!App.DataModule.Storage.getStrCache(null, "debug-api"); Daniel@0: App.options.defaultEntityWidth = 400; Daniel@0: Daniel@0: App.DataModule.CliopatriaAPI.start({ Daniel@0: apiRootPaths: options.musicLibrary.apiRootPaths, Daniel@0: apiVersion: options.musicLibrary.apiVersion, Daniel@0: dataVersion: options.musicLibrary.dataVersion, Daniel@0: dataCaching: options.musicLibrary.dataCaching Daniel@0: }); Daniel@0: Daniel@0: App.NotificationsModule.start(); Daniel@0: App.ContextModule.start(); Daniel@0: App.RepresentationModule.start(); Daniel@0: App.MainRegionModule.start(); Daniel@0: App.TooltipModule.start(); Daniel@0: Daniel@0: App.HelpModule.start(); Daniel@0: Daniel@0: // Define context and context manager Daniel@0: App.contextManager = new App.ContextModule.AppContextManager(); Daniel@0: App.context = new App.ContextModule.AppContext(); Daniel@0: Daniel@0: try { Daniel@0: App.contextManager.restoreFromStorage(App.context, ""); Daniel@0: } catch (e) { Daniel@0: App.contextManager.restoreDefault(""); Daniel@0: } Daniel@0: App.dynamicDefinitionProviderForCollections = new App.DataModule.DynamicDefinitionProviderForCollections(); Daniel@0: App.dynamicDefinitionProviderForRecordings = new App.DataModule.DymanicDefinitionProviderForRecordings(); Daniel@0: App.dynamicDerivedConfigDataProvider = new App.RepresentationModule.DynanicDerivedConfigDataProvider({ Daniel@0: configGridsByType: { Daniel@0: "collection": App.context.get("state").get("musicCollectionGrid"), Daniel@0: "recording": App.context.get("state").get("musicRecordingGrid") Daniel@0: } Daniel@0: }); Daniel@0: Daniel@0: App.PlayerModule.start(); Daniel@0: Daniel@0: var saveContextToStorage = function() { Daniel@0: App.contextManager.saveToStorage(App.context); Daniel@0: }; Daniel@0: Daniel@0: var throttledSaveAppContextToStorage = _.throttle(saveContextToStorage, 10000, {leading: false}); Daniel@0: Daniel@0: App.context.bind("change", throttledSaveAppContextToStorage); Daniel@0: Daniel@0: $(window).on("beforeunload", saveContextToStorage); Daniel@0: Daniel@0: Daniel@0: // Initialize main region Daniel@0: App.mainRegionView = new App.MainRegionModule.MainRegionView({state: App.context.get("state"), el: ".app__main-region"}); Daniel@0: Daniel@0: // Init main menu Daniel@0: App.MainMenuModule.start(); Daniel@0: Daniel@0: App.TooltipModule.convertTitlesToTooltips($("body")); Daniel@0: });