/*global define */
define(['jquery',
'jqueryui',
'underscore',
'backbone'
],
function($, $ui, _, Backbone) {
'use strict';
/**
* @class ScienceMetadataView
* @classdesc The ScienceMetadataView renders the content of a ScienceMetadata model
* @classcategory Views/Metadata
* @extends Backbone.View
*/
var ScienceMetadataView = Backbone.View.extend(
/** @lends ScienceMetadataView.prototype */{
/**
* The ScienceMetadata model to render
* @type {ScienceMetadata}
*/
type: "ScienceMetadata",
initialize: function(){
},
render: function(){
},
/**
* Takes the text object from a metadata model and returns it as HTML formatted with paragraph elements
*/
formatParagraphs: function(text, edit){
//Get the abstract text
var paragraphs = [],
formattedText = "";
//Get the text from the content attribute is it exists
if(text) text = text;
//Put the abstract in an array format to seperate out paragraphs
if(typeof text.para == "string")
paragraphs.push(text.para);
else if(typeof text == "string")
paragraphs.push(text || text);
else if(Array.isArray(text.para)){
paragraphs = text.para;
}
//For each paragraph, insert a new line
_.each(paragraphs, function(p){
if(edit)
formattedText += p + "\n";
else
formattedText += "<p>" + p + "</p>";
});
return formattedText;
},
unformatParagraphs: function(htmlText){
var paragraphs = htmlText.trim().split("\n"),
paragraphsJSON = [];
_.each(paragraphs, function(p){
paragraphsJSON.push(p);
});
return paragraphsJSON;
},
/**
* When a text element is changed, update the attribute in the model
*/
updateText: function(e){
var textEl = e.target;
//Get the new abstract text
var newAttr = this.unformatParagraphs($(textEl).val());
//Update the model
this.model.set($(textEl).attr("data-category"), newAttr);
}
});
return ScienceMetadataView;
});