Skip to content

Commit

Permalink
Avoid 'figure from json' code duplication
Browse files Browse the repository at this point in the history
  • Loading branch information
dominikl committed Aug 5, 2016
1 parent 3435c0c commit e36d0f5
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 144 deletions.
121 changes: 49 additions & 72 deletions static/figure/figure.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,47 +50,53 @@

var load_url = BASE_WEBFIGURE_URL + "load_web_figure/" + fileId + "/",
self = this;



$.getJSON(load_url, function(data){

// bring older files up-to-date
data = self.version_transform(data);

var name = data.figureName || "UN-NAMED",
n = {'fileId': fileId,
'figureName': name,
'canEdit': data.canEdit,
'paper_width': data.paper_width,
'paper_height': data.paper_height,
'page_size': data.page_size || 'letter',
'page_count': data.page_count,
'paper_spacing': data.paper_spacing,
'page_col_count': data.page_col_count,
'orientation': data.orientation,
'legend': data.legend,
'legend_collapsed': data.legend_collapsed,
};

// For missing attributes, we fill in with defaults
// so as to clear everything from previous figure.
n = $.extend({}, self.defaults, n);

self.set(n);

_.each(data.panels, function(p){
p.selected = false;
self.panels.create(p);
});

self.set('unsaved', false);
// wait for undo/redo to handle above, then...
setTimeout(function() {
self.trigger("reset_undo_redo");
}, 50);
data.fileId = fileId;
self.load_from_JSON(data);
});

self.set('unsaved', false);
},


load_from_JSON: function(data) {
self = this;

// bring older files up-to-date
data = self.version_transform(data);

var name = data.figureName || "UN-NAMED",
n = {'fileId': data.fileId,
'figureName': name,
'canEdit': data.canEdit,
'paper_width': data.paper_width,
'paper_height': data.paper_height,
'page_size': data.page_size || 'letter',
'page_count': data.page_count,
'paper_spacing': data.paper_spacing,
'page_col_count': data.page_col_count,
'orientation': data.orientation,
'legend': data.legend,
'legend_collapsed': data.legend_collapsed,
};

// For missing attributes, we fill in with defaults
// so as to clear everything from previous figure.
n = $.extend({}, self.defaults, n);

self.set(n);

_.each(data.panels, function(p){
p.selected = false;
self.panels.create(p);
});

// wait for undo/redo to handle above, then...
setTimeout(function() {
self.trigger("reset_undo_redo");
}, 50);
},

// take Figure_JSON from a previous version,
// and transform it to latest version
version_transform: function(json) {
Expand All @@ -109,7 +115,7 @@

return json;
},

figure_toJSON: function() {
// Turn panels into json
var p_json = [],
Expand Down Expand Up @@ -143,39 +149,10 @@
},

figure_fromJSON: function(data) {
data = this.version_transform(JSON.parse(data));

var n = {'figureName': data.figureName,
'canEdit': data.canEdit,
'paper_width': data.paper_width,
'paper_height': data.paper_height,
'page_size': data.page_size || 'letter',
'page_count': data.page_count,
'paper_spacing': data.paper_spacing,
'page_col_count': data.page_col_count,
'orientation': data.orientation,
'legend': data.legend,
'legend_collapsed': data.legend_collapsed,
};

// For missing attributes, we fill in with defaults
// so as to clear everything from previous figure.
n = $.extend({}, this.defaults, n);

this.clearFigure();
this.set(n);

_.each(data.panels, function(p){
p.selected = false;
this.panels.create(p);
}.bind(this));

this.set('unsaved', true);

// wait for undo/redo to handle above, then...
setTimeout(function() {
this.trigger("reset_undo_redo");
}.bind(this), 50);
var parsed = JSON.parse(data);
delete parsed.fileId;
this.load_from_JSON(parsed);
this.set('unsaved', true);
},

save_to_OMERO: function(options) {
Expand Down
121 changes: 49 additions & 72 deletions static/figure/js/models/figure_model.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,47 +45,53 @@

var load_url = BASE_WEBFIGURE_URL + "load_web_figure/" + fileId + "/",
self = this;



$.getJSON(load_url, function(data){

// bring older files up-to-date
data = self.version_transform(data);

var name = data.figureName || "UN-NAMED",
n = {'fileId': fileId,
'figureName': name,
'canEdit': data.canEdit,
'paper_width': data.paper_width,
'paper_height': data.paper_height,
'page_size': data.page_size || 'letter',
'page_count': data.page_count,
'paper_spacing': data.paper_spacing,
'page_col_count': data.page_col_count,
'orientation': data.orientation,
'legend': data.legend,
'legend_collapsed': data.legend_collapsed,
};

// For missing attributes, we fill in with defaults
// so as to clear everything from previous figure.
n = $.extend({}, self.defaults, n);

self.set(n);

_.each(data.panels, function(p){
p.selected = false;
self.panels.create(p);
});

self.set('unsaved', false);
// wait for undo/redo to handle above, then...
setTimeout(function() {
self.trigger("reset_undo_redo");
}, 50);
data.fileId = fileId;
self.load_from_JSON(data);
});

self.set('unsaved', false);
},


load_from_JSON: function(data) {
self = this;

// bring older files up-to-date
data = self.version_transform(data);

var name = data.figureName || "UN-NAMED",
n = {'fileId': data.fileId,
'figureName': name,
'canEdit': data.canEdit,
'paper_width': data.paper_width,
'paper_height': data.paper_height,
'page_size': data.page_size || 'letter',
'page_count': data.page_count,
'paper_spacing': data.paper_spacing,
'page_col_count': data.page_col_count,
'orientation': data.orientation,
'legend': data.legend,
'legend_collapsed': data.legend_collapsed,
};

// For missing attributes, we fill in with defaults
// so as to clear everything from previous figure.
n = $.extend({}, self.defaults, n);

self.set(n);

_.each(data.panels, function(p){
p.selected = false;
self.panels.create(p);
});

// wait for undo/redo to handle above, then...
setTimeout(function() {
self.trigger("reset_undo_redo");
}, 50);
},

// take Figure_JSON from a previous version,
// and transform it to latest version
version_transform: function(json) {
Expand All @@ -104,7 +110,7 @@

return json;
},

figure_toJSON: function() {
// Turn panels into json
var p_json = [],
Expand Down Expand Up @@ -138,39 +144,10 @@
},

figure_fromJSON: function(data) {
data = this.version_transform(JSON.parse(data));

var n = {'figureName': data.figureName,
'canEdit': data.canEdit,
'paper_width': data.paper_width,
'paper_height': data.paper_height,
'page_size': data.page_size || 'letter',
'page_count': data.page_count,
'paper_spacing': data.paper_spacing,
'page_col_count': data.page_col_count,
'orientation': data.orientation,
'legend': data.legend,
'legend_collapsed': data.legend_collapsed,
};

// For missing attributes, we fill in with defaults
// so as to clear everything from previous figure.
n = $.extend({}, this.defaults, n);

this.clearFigure();
this.set(n);

_.each(data.panels, function(p){
p.selected = false;
this.panels.create(p);
}.bind(this));

this.set('unsaved', true);

// wait for undo/redo to handle above, then...
setTimeout(function() {
this.trigger("reset_undo_redo");
}.bind(this), 50);
var parsed = JSON.parse(data);
delete parsed.fileId;
this.load_from_JSON(parsed);
this.set('unsaved', true);
},

save_to_OMERO: function(options) {
Expand Down

0 comments on commit e36d0f5

Please sign in to comment.