85 lines
2.1 KiB
JavaScript
85 lines
2.1 KiB
JavaScript
|
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');
|
||
|
}
|
||
|
});
|