/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ define([ 'jquery', 'underscore', 'backbone', 'App', 'utils/Globals', 'utils/Utils' ], function($, _, Backbone, App, Globals, Utils) { var AppRouter = Backbone.Router.extend({ routes: { // Define some URL routes '': 'assetPageLoad', '!/': 'assetPageLoad', "!/dashboard/assetPage": 'assetPageLoad', '!/dashboard/detailPage/:id': 'detailPageLoad', '!/dashboard/createTags': 'tagPageLoad', // Default '*actions': 'defaultAction' }, initialize: function() { this.showRegions(); this.bindCommonEvents(); this.listenTo(this, 'route', this.postRouteExecute, this); this.globalVent = new Backbone.Wreqr.EventAggregator(); this.catalogVent = new Backbone.Wreqr.EventAggregator(); this.tagVent = new Backbone.Wreqr.EventAggregator(); }, bindCommonEvents: function() { var that = this; $('body').on('click', 'li.aboutAtlas', function() { that.aboutAtlas(); }); }, aboutAtlas: function() { var that = this; require([ 'hbs!tmpl/common/aboutAtlas_tmpl', 'modules/Modal' ], function(aboutAtlasTmpl, Modal) { var aboutAtlas = Marionette.LayoutView.extend({ template: aboutAtlasTmpl, events: {}, }); var view = new aboutAtlas(); var modal = new Modal({ title: 'About', content: view, okCloses: true, showFooter: true, }).open(); view.on('closeModal', function() { modal.trigger('cancel'); }); }); }, showRegions: function() {}, /** * @override * Execute a route handler with the provided parameters. This is an * excellent place to do pre-route setup or post-route cleanup. * @param {Function} callback - route handler * @param {Array} args - route params */ execute: function(callback, args) { this.preRouteExecute(); if (callback) callback.apply(this, args); this.postRouteExecute(); }, preRouteExecute: function() { // console.log("Pre-Route Change Operations can be performed here !!"); }, postRouteExecute: function(name, args) { // console.log("Post-Route Change Operations can be performed here !!"); // console.log("Route changed: ", name); }, /** * Define route handlers here */ assetPageLoad: function() { var that = this; $('#old').show(); $('#new').hide(); require([ 'views/asset/AssetPageLayoutView', 'collection/VSearchList', 'views/site/Header', /*'views/site/footer',*/ ], function(AssetPageLayoutView, VSearchList, HeaderView /*, FooterView*/ ) { that.searchCollection = new VSearchList([], { state: { firstPage: 0, pageSize: 10 } }); App.rHeader.show(new HeaderView({ 'globalVent': that.globalVent })); App.rContent.show(new AssetPageLayoutView({ 'globalVent': that.globalVent, 'collection': that.searchCollection, 'vent': that.tagVent })); }); }, detailPageLoad: function(id) { var that = this; $('#old').show(); $('#new').hide(); if (id) { require([ 'views/detail_page/DetailPageLayoutView', 'collection/VEntityList', 'views/site/Header', ], function(DetailPageLayoutView, VEntityList, HeaderView) { this.entityCollection = new VEntityList([], {}); App.rHeader.show(new HeaderView({ 'globalVent': that.globalVent })); App.rContent.show(new DetailPageLayoutView({ 'globalVent': that.globalVent, 'collection': entityCollection, 'id': id, 'vent': that.tagVent })); entityCollection.url = "/api/atlas/entities/" + id; entityCollection.fetch({ reset: true }); }); } }, tagPageLoad: function() { var that = this; $('#old').show(); $('#new').hide(); require([ 'views/tag/createTagsLayoutView', 'collection/VTagList', 'views/site/Header', ], function(CreateTagsLayoutView, VTagList, HeaderView) { this.tagsCollection = new VTagList([], {}); App.rHeader.show(new HeaderView({ 'globalVent': that.globalVent })); App.rContent.show(new CreateTagsLayoutView({ 'globalVent': that.globalVent, 'tagsCollection': tagsCollection, })); }); }, defaultAction: function(actions) { // We have no matching route, lets just log what the URL was console.log('No route:', actions); } }); return AppRouter; });