/*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 + "
"; }); 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; });