Skip to content

Commit

Permalink
Convert to a single citations module; this is much easier to manage. …
Browse files Browse the repository at this point in the history
…We're shifting *more* towards encapsulated components and having all this stuff split up makes it more difficult to wrangle.
  • Loading branch information
dannon committed Nov 7, 2017
1 parent 1f0f731 commit 3b7b294
Show file tree
Hide file tree
Showing 18 changed files with 98 additions and 108 deletions.
7 changes: 3 additions & 4 deletions client/galaxy/scripts/apps/analysis.js
Expand Up @@ -20,8 +20,7 @@ import Utils from "utils/utils";
import Ui from "mvc/ui/ui-misc";
import DatasetError from "mvc/dataset/dataset-error";
import DatasetEditAttributes from "mvc/dataset/dataset-edit-attributes";
import CitationModel from "mvc/citation/citation-model";
import CitationView from "mvc/citation/citation-view";
import Citations from "mvc/citations";

/** define the 'Analyze Data'/analysis/main/home page for Galaxy
* * has a masthead
Expand Down Expand Up @@ -123,9 +122,9 @@ window.app = function app(options, bootstrapped) {
},

show_history_citations: function() {
var citations = new CitationModel.HistoryCitationCollection();
var citations = new Citations.HistoryCitationCollection();
citations.history_id = QueryStringParsing.get("id");
this.page.display(new CitationView.CitationListView({ collection: citations }));
this.page.display(new Citations.CitationListView({ collection: citations }));
},

show_histories_rename: function() {
Expand Down
80 changes: 0 additions & 80 deletions client/galaxy/scripts/mvc/citation/citation-model.js

This file was deleted.

@@ -1,6 +1,77 @@
import * as bibtexParse from "libs/bibtexParse";
import baseMVC from "mvc/base-mvc";
import citationModel from "mvc/citation/citation-model";
import _l from "utils/localization";

/* global Backbone */

var logNamespace = "citation";
//==============================================================================
/** @class model for tool citations.
* @name Citation
* @augments Backbone.Model
*/
var Citation = Backbone.Model.extend(baseMVC.LoggableMixin).extend({
_logNamespace: logNamespace,

defaults: {
content: ""
},

initialize: function() {
var parsed;
try {
// TODO: to model.parse/.validate
parsed = bibtexParse.toJSON(this.attributes.content);
} catch (err) {
this.log("Error parsing bibtex: " + err);
}

this._fields = {};
this.entry = _.first(parsed);
if (this.entry) {
var rawFields = this.entry.entryTags;
for (var key in rawFields) {
var value = rawFields[key];
var lowerKey = key.toLowerCase();
this._fields[lowerKey] = value;
}
}
},
entryType: function() {
return this.entry ? this.entry.entryType : undefined;
},
fields: function() {
return this._fields;
}
});

//==============================================================================
/** @class Backbone collection of citations.
*/
var BaseCitationCollection = Backbone.Collection.extend(baseMVC.LoggableMixin).extend({
_logNamespace: logNamespace,

/** root api url */
urlRoot: `${Galaxy.root}api`,
partial: true, // Assume some tools in history/workflow may not be properly annotated yet.
model: Citation
});

var HistoryCitationCollection = BaseCitationCollection.extend({
/** complete api url */
url: function() {
return `${this.urlRoot}/histories/${this.history_id}/citations`;
}
});

var ToolCitationCollection = BaseCitationCollection.extend({
/** complete api url */
url: function() {
return `${this.urlRoot}/tools/${this.tool_id}/citations`;
},
partial: false // If a tool has citations, assume they are complete.
});

var CitationView = Backbone.View.extend({
tagName: "div",
className: "citations",
Expand Down Expand Up @@ -183,8 +254,10 @@ var CitationListView = Backbone.View.extend({
}
});

//==============================================================================
export default {
Citation: Citation,
HistoryCitationCollection: HistoryCitationCollection,
ToolCitationCollection: ToolCitationCollection,
CitationView: CitationView,
CitationListView: CitationListView
};
7 changes: 3 additions & 4 deletions client/galaxy/scripts/mvc/tool/tool-form-base.js
Expand Up @@ -5,8 +5,7 @@ import Utils from "utils/utils";
import Deferred from "utils/deferred";
import Ui from "mvc/ui/ui-misc";
import FormBase from "mvc/form/form-view";
import CitationModel from "mvc/citation/citation-model";
import CitationView from "mvc/citation/citation-view";
import Citations from "mvc/citations";
export default FormBase.extend({
initialize: function(options) {
var self = this;
Expand Down Expand Up @@ -224,9 +223,9 @@ export default FormBase.extend({
var options = this.model.attributes;
var $el = $("<div/>").append(this._templateHelp(options));
if (options.citations) {
var citations = new CitationModel.ToolCitationCollection();
var citations = new Citations.ToolCitationCollection();
citations.tool_id = options.id;
var citation_list_view = new CitationView.CitationListView({
var citation_list_view = new Citations.CitationListView({
collection: citations
});
citation_list_view.render();
Expand Down

0 comments on commit 3b7b294

Please sign in to comment.