diff --git a/client/galaxy/scripts/mvc/citation/citation-model.js b/client/galaxy/scripts/mvc/citation/citation-model.js index b05a373fe54..46702ec0047 100644 --- a/client/galaxy/scripts/mvc/citation/citation-model.js +++ b/client/galaxy/scripts/mvc/citation/citation-model.js @@ -13,26 +13,37 @@ define([ * @borrows LoggableMixin#log as #log * @constructs */ -var Citation = Backbone.Model.extend( baseMVC.LoggableMixin ).extend( { - initialize: function( ) { +var Citation = Backbone.Model.extend( baseMVC.LoggableMixin ).extend({ + initialize: function() { var bibtex = this.attributes.content; - var entry = new BibtexParser(bibtex).entries[0]; - this.entry = entry; + var parsed = BibtexParser( bibtex ); + // bibtex returns successfully parsed in .entries and any parsing errors in .errors + if( parsed.errors.length ){ + // the gen. form of these errors seems to be [ line, col, char, error message ] + var errors = parsed.errors.reduce( function( all, current ){ return all + '; ' + current; }); + // throw new Error( 'Error parsing bibtex: ' + errors ); + this.log( 'Error parsing bibtex: ' + errors ); + } + this._fields = {}; - var rawFields = entry.Fields; - for(key in rawFields) { - var value = rawFields[ key ]; - var lowerKey = key.toLowerCase(); - this._fields[ lowerKey ] = value; + this.entry = _.first( parsed.entries ); + if( this.entry ){ + var rawFields = this.entry.Fields; + for( var key in rawFields ){ + var value = rawFields[ key ]; + var lowerKey = key.toLowerCase(); + this._fields[ lowerKey ] = value; + } } }, entryType: function() { - return this.entry.EntryType; + return this.entry? this.entry.EntryType : undefined; }, fields: function() { return this._fields; } -} ); +}); + //============================================================================== /** @class Backbone collection of citations. diff --git a/static/maps/mvc/citation/citation-model.js.map b/static/maps/mvc/citation/citation-model.js.map index 9a20e93bb63..bdaed41844a 100644 --- a/static/maps/mvc/citation/citation-model.js.map +++ b/static/maps/mvc/citation/citation-model.js.map @@ -1 +1 @@ -{"version":3,"file":"citation-model.js","sources":["../../../src/mvc/citation/citation-model.js"],"names":["define","baseMVC","Citation","Backbone","Model","extend","LoggableMixin","initialize","bibtex","this","attributes","content","entry","BibtexParser","entries","_fields","rawFields","Fields","key","value","lowerKey","toLowerCase","entryType","EntryType","fields","BaseCitationCollection","Collection","urlRoot","galaxy_config","root","partial","model","HistoryCitationCollection","url","history_id","ToolCitationCollection","tool_id"],"mappings":"AAAAA,QACI,eACA,sBACD,SAAUC,GAYb,GAAIC,GAAWC,SAASC,MAAMC,OAAQJ,EAAQK,eAAgBD,QAC1DE,WAAY,WACR,GAAIC,GAASC,KAAKC,WAAWC,QACzBC,EAAQ,GAAIC,cAAaL,GAAQM,QAAQ,EAC7CL,MAAKG,MAAQA,EACbH,KAAKM,UACL,IAAIC,GAAYJ,EAAMK,MACtB,KAAIC,MAAOF,GAAW,CAClB,GAAIG,GAAQH,EAAWE,KACnBE,EAAWF,IAAIG,aACnBZ,MAAKM,QAASK,GAAaD,IAGnCG,UAAW,WACP,MAAOb,MAAKG,MAAMW,WAEtBC,OAAQ,WACJ,MAAOf,MAAKM,WAWhBU,EAAyBtB,SAASuB,WAAWrB,OAAQJ,EAAQK,eAAgBD,QAE7EsB,QAAUC,cAAcC,KAAO,MAC/BC,SAAU,EACVC,MAAQ7B,IAGR8B,EAA4BP,EAAuBpB,QAEnD4B,IAAM,WACF,MAAOxB,MAAKkB,QAAU,cAAgBlB,KAAKyB,WAAa,gBAI5DC,EAAyBV,EAAuBpB,QAEhD4B,IAAM,WACF,MAAOxB,MAAKkB,QAAU,UAAYlB,KAAK2B,QAAU,cAErDN,SAAU,GAId,QACI5B,SAAWA,EACX8B,0BAA6BA,EAC7BG,uBAAwBA"} \ No newline at end of file +{"version":3,"file":"citation-model.js","sources":["../../../src/mvc/citation/citation-model.js"],"names":["define","baseMVC","Citation","Backbone","Model","extend","LoggableMixin","initialize","bibtex","this","attributes","content","parsed","BibtexParser","errors","length","reduce","all","current","log","_fields","entry","_","first","entries","rawFields","Fields","key","value","lowerKey","toLowerCase","entryType","EntryType","undefined","fields","BaseCitationCollection","Collection","urlRoot","galaxy_config","root","partial","model","HistoryCitationCollection","url","history_id","ToolCitationCollection","tool_id"],"mappings":"AAAAA,QACI,eACA,sBACD,SAAUC,GAYb,GAAIC,GAAWC,SAASC,MAAMC,OAAQJ,EAAQK,eAAgBD,QAC1DE,WAAY,WACR,GAAIC,GAASC,KAAKC,WAAWC,QACzBC,EAASC,aAAcL,EAE3B,IAAII,EAAOE,OAAOC,OAAQ,CAEtB,GAAID,GAASF,EAAOE,OAAOE,OAAQ,SAAUC,EAAKC,GAAW,MAAOD,GAAM,KAAOC,GAEjFT,MAAKU,IAAK,yBAA2BL,GAKzC,GAFAL,KAAKW,WACLX,KAAKY,MAAQC,EAAEC,MAAOX,EAAOY,SACzBf,KAAKY,MAAO,CACZ,GAAII,GAAYhB,KAAKY,MAAMK,MAC3B,KAAK,GAAIC,KAAOF,GAAW,CACvB,GAAIG,GAAQH,EAAWE,GACnBE,EAAWF,EAAIG,aACnBrB,MAAKW,QAASS,GAAaD,KAIvCG,UAAW,WACP,MAAOtB,MAAKY,MAAOZ,KAAKY,MAAMW,UAAYC,QAE9CC,OAAQ,WACJ,MAAOzB,MAAKW,WAYhBe,EAAyBhC,SAASiC,WAAW/B,OAAQJ,EAAQK,eAAgBD,QAE7EgC,QAAUC,cAAcC,KAAO,MAC/BC,SAAU,EACVC,MAAQvC,IAGRwC,EAA4BP,EAAuB9B,QAEnDsC,IAAM,WACF,MAAOlC,MAAK4B,QAAU,cAAgB5B,KAAKmC,WAAa,gBAI5DC,EAAyBV,EAAuB9B,QAEhDsC,IAAM,WACF,MAAOlC,MAAK4B,QAAU,UAAY5B,KAAKqC,QAAU,cAErDN,SAAU,GAId,QACItC,SAAWA,EACXwC,0BAA6BA,EAC7BG,uBAAwBA"} \ No newline at end of file diff --git a/static/scripts/mvc/citation/citation-model.js b/static/scripts/mvc/citation/citation-model.js index b4530a04658..bd6d3f517b1 100644 --- a/static/scripts/mvc/citation/citation-model.js +++ b/static/scripts/mvc/citation/citation-model.js @@ -1,2 +1,2 @@ -define(["mvc/base-mvc","utils/localization"],function(a){var b=Backbone.Model.extend(a.LoggableMixin).extend({initialize:function(){var a=this.attributes.content,b=new BibtexParser(a).entries[0];this.entry=b,this._fields={};var c=b.Fields;for(key in c){var d=c[key],e=key.toLowerCase();this._fields[e]=d}},entryType:function(){return this.entry.EntryType},fields:function(){return this._fields}}),c=Backbone.Collection.extend(a.LoggableMixin).extend({urlRoot:galaxy_config.root+"api",partial:!0,model:b}),d=c.extend({url:function(){return this.urlRoot+"/histories/"+this.history_id+"/citations"}}),e=c.extend({url:function(){return this.urlRoot+"/tools/"+this.tool_id+"/citations"},partial:!1});return{Citation:b,HistoryCitationCollection:d,ToolCitationCollection:e}}); +define(["mvc/base-mvc","utils/localization"],function(a){var b=Backbone.Model.extend(a.LoggableMixin).extend({initialize:function(){var a=this.attributes.content,b=BibtexParser(a);if(b.errors.length){var c=b.errors.reduce(function(a,b){return a+"; "+b});this.log("Error parsing bibtex: "+c)}if(this._fields={},this.entry=_.first(b.entries),this.entry){var d=this.entry.Fields;for(var e in d){var f=d[e],g=e.toLowerCase();this._fields[g]=f}}},entryType:function(){return this.entry?this.entry.EntryType:void 0},fields:function(){return this._fields}}),c=Backbone.Collection.extend(a.LoggableMixin).extend({urlRoot:galaxy_config.root+"api",partial:!0,model:b}),d=c.extend({url:function(){return this.urlRoot+"/histories/"+this.history_id+"/citations"}}),e=c.extend({url:function(){return this.urlRoot+"/tools/"+this.tool_id+"/citations"},partial:!1});return{Citation:b,HistoryCitationCollection:d,ToolCitationCollection:e}}); //# sourceMappingURL=../../../maps/mvc/citation/citation-model.js.map \ No newline at end of file