"use strict";
define(["jquery", "underscore", "backbone", "routers/BaseRouter"],
function($, _, Backbone, BaseRouter) {
/**
* @class UIRouter
* @classdesc MetacatUI Router
* @extends Backbone.Router
* @constructor
*/
var KNBRouter = BaseRouter.extend(
/** @lends UIRouter.prototype */{
/* Extend the routes hash */
routes: function() {
return _.extend({
/* Add a preservation plan route */
"preservation(/:anchorId)(/)" : "renderPreservation",
'profile(/*username)(/s=:section)(/s=:subsection)' : 'renderProfile'
}, BaseRouter.prototype.routes);
},
/*
* Render the preservation plan page
* @param anchorId the page anchor identifier to scroll to
*/
renderPreservation: function(anchorId) {
this.routeHistory.push("preservation");
MetacatUI.appModel.set("anchorId", anchorId);
var options = {
pageName: "preservation",
anchorId: anchorId
}
// Call super.renderText()
this.renderText(options);
},
// Rendering profiles in KNB
renderProfile: function(username, section, subsection){
this.closeLastView();
if(!username || !MetacatUI.appModel.get("enableUserProfiles")){
this.routeHistory.push("summary");
// flag indicating /profile view
var viewOptions = { nodeSummaryView: true };
if(!MetacatUI.appView.statsView){
require(['views/StatsView'], function(StatsView){
MetacatUI.appView.statsView = new StatsView({
userType: "repository"
});
MetacatUI.appView.showView(MetacatUI.appView.statsView, viewOptions);
});
}
else
MetacatUI.appView.showView(MetacatUI.appView.statsView, viewOptions);
}
else{
this.routeHistory.push("profile");
MetacatUI.appModel.set("profileUsername", username);
if(section || subsection){
var viewOptions = { section: section, subsection: subsection }
}
if(!MetacatUI.appView.userView){
require(['views/UserView'], function(UserView){
MetacatUI.appView.userView = new UserView();
MetacatUI.appView.showView(MetacatUI.appView.userView, viewOptions);
});
}
else
MetacatUI.appView.showView(MetacatUI.appView.userView, viewOptions);
}
},
});
return KNBRouter;
});