Initial commit
This commit is contained in:
+84
@@ -0,0 +1,84 @@
|
||||
var LocalStorage = require('builder/components/local-storage/local-storage');
|
||||
var CoreView = require('backbone/core-view');
|
||||
var template = require('./analysis-view.tpl');
|
||||
var Analyses = require('builder/data/analyses');
|
||||
var checkAndBuildOpts = require('builder/helpers/required-opts');
|
||||
|
||||
var BASE_STORAGE_KEY = 'onboarding';
|
||||
|
||||
var REQUIRED_OPTS = [
|
||||
'modalModel',
|
||||
'userModel',
|
||||
'editorModel',
|
||||
'visDefinitionModel'
|
||||
];
|
||||
|
||||
module.exports = CoreView.extend({
|
||||
className: 'AnalysisCompletionDetails is-opening',
|
||||
|
||||
events: {
|
||||
'click .js-close': '_close',
|
||||
'click .js-style': '_onStyle'
|
||||
},
|
||||
|
||||
initialize: function (opts) {
|
||||
checkAndBuildOpts(opts, REQUIRED_OPTS, this);
|
||||
|
||||
var storageKey = BASE_STORAGE_KEY + '.' + this._visDefinitionModel.get('id');
|
||||
|
||||
LocalStorage.init(storageKey, {
|
||||
userModel: this._userModel
|
||||
});
|
||||
|
||||
this._initBinds();
|
||||
},
|
||||
|
||||
render: function () {
|
||||
this.$el.html(template({
|
||||
type: this._getGenericAnalysisType()
|
||||
}));
|
||||
|
||||
var onboardingTemplate = this._typeDef().onboardingTemplate;
|
||||
var html = onboardingTemplate && onboardingTemplate(this.model.attributes);
|
||||
this.$('.js-content').html(html);
|
||||
|
||||
this._onChangeEditorModelEdition(this._editorModel);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
_initBinds: function () {
|
||||
this.listenTo(this.model, 'destroy', this._close);
|
||||
this.listenTo(this._editorModel, 'change:edition', this._onChangeEditorModelEdition);
|
||||
this.add_related_model(this._editorModel);
|
||||
},
|
||||
|
||||
_onChangeEditorModelEdition: function (mdl) {
|
||||
var isEditing = !!mdl.get('edition');
|
||||
this.$el.toggleClass('is-editing', isEditing);
|
||||
},
|
||||
|
||||
_close: function () {
|
||||
this._forget();
|
||||
this.trigger('close', this);
|
||||
},
|
||||
|
||||
_onStyle: function () {
|
||||
this._forget();
|
||||
this.trigger('customEvent', 'style', this);
|
||||
},
|
||||
|
||||
_forget: function () {
|
||||
LocalStorage.set(this._getGenericAnalysisType(), true);
|
||||
},
|
||||
|
||||
_typeDef: function (type) {
|
||||
type = type || this.model.get('type');
|
||||
return Analyses.getAnalysisByType(type);
|
||||
},
|
||||
|
||||
_getGenericAnalysisType: function () {
|
||||
var typeDef = this._typeDef();
|
||||
return typeDef && typeDef.genericType || this.model.get('type');
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user