define(["jquery",
"underscore",
"backbone",
"text!templates/portals/portalHeader.html"], function($, _, Backbone, PortalHeaderTemplate){
/**
* @class PortalHeaderView
* @classdesc The PortalHeaderView is the view at the top of portal pages
* that shows the portal's title, synopsis, and logo
* @classcategory Views/Portals
*/
var PortalHeaderView = Backbone.View.extend(
/** @lends PortalHeaderView.prototype */{
/* The Portal Header Element */
el: "#portal-header-container",
type: "PortalHeader",
/* Renders the compiled template into HTML */
template: _.template(PortalHeaderTemplate),
initialize: function(options) {
this.model = options.model ? options.model : undefined;
this.nodeView = options.nodeView ? options.nodeView : undefined;
},
/* Render the view */
render: function() {
var templateInfo = {
label: this.model.get("label"),
description: this.model.get("description"),
name: this.model.get("name"),
viewType: "portalView",
}
if ( this.nodeView ) {
templateInfo.imageURL = this.model.get("logo");
templateInfo.viewType = "nodeView"
// Re-inserting the default header
$(".PortalView #Navbar").addClass("RepositoryPortalView");
}
else {
if( this.model.get("logo") ){
templateInfo.imageURL = this.model.get("logo").get("imageURL");
}
else{
templateInfo.imageURL = "";
}
}
this.$el.append(this.template(templateInfo));
// Insert the member since stat
if (this.nodeView) {
this.insertMemberSinceStat();
}
return this;
},
/*
* Insert the member since stat for this node
*/
insertMemberSinceStat: function(){
//Get the member node object
var view = this;
var node = _.find(MetacatUI.nodeModel.get("members"), function(nodeModel) {
return nodeModel.identifier.toLowerCase() == "urn:node:" + (view.model.get("label")).toLowerCase();
});
//If there is no memberSince date, then hide this statistic and exit
if( !node.memberSince ){
this.$("#first-upload-container").hide();
return;
}
else{
var firstUpload = node.memberSince? new Date(node.memberSince.substring(0, node.memberSince.indexOf("T"))) : new Date();
}
// Construct the first upload date sentence
var monthNames = [ "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" ],
m = monthNames[firstUpload.getUTCMonth()],
y = firstUpload.getUTCFullYear(),
d = firstUpload.getUTCDate();
//For Member Nodes, start all dates at July 2012, the beginning of DataONE
this.$("#first-upload-container").text("DataONE Member Repository since " + y);
}
});
return PortalHeaderView;
});