88 lines
2.5 KiB
JavaScript
88 lines
2.5 KiB
JavaScript
|
var CoreView = require('backbone/core-view');
|
||
|
var ModalExportDataView = require('builder/components/modals/export-data/modal-export-data-view');
|
||
|
var SyncInfoView = require('./dataset-content-sync-view');
|
||
|
var template = require('./dataset-content-options.tpl');
|
||
|
var checkAndBuildOpts = require('builder/helpers/required-opts');
|
||
|
|
||
|
var REQUIRED_OPTS = [
|
||
|
'analysisDefinitionNodeModel',
|
||
|
'configModel',
|
||
|
'modals',
|
||
|
'userModel'
|
||
|
];
|
||
|
|
||
|
module.exports = CoreView.extend({
|
||
|
|
||
|
className: 'Dataset-viewOptions u-flex u-justifySpace u-alignCenter',
|
||
|
|
||
|
events: {
|
||
|
'click .js-addRow': '_onAddRowClick',
|
||
|
'click .js-addColumn': '_onAddColumnClick',
|
||
|
'click .js-export': '_onExportClick'
|
||
|
},
|
||
|
|
||
|
initialize: function (opts) {
|
||
|
checkAndBuildOpts(opts, REQUIRED_OPTS, this);
|
||
|
|
||
|
this._tableModel = this._analysisDefinitionNodeModel.getTableModel();
|
||
|
this._querySchemaModel = this._analysisDefinitionNodeModel.querySchemaModel;
|
||
|
this._queryGeometryModel = this._analysisDefinitionNodeModel.queryGeometryModel;
|
||
|
this._syncModel = this._tableModel.getSyncModel();
|
||
|
|
||
|
this._initBinds();
|
||
|
},
|
||
|
|
||
|
render: function () {
|
||
|
this.clearSubViews();
|
||
|
this.$el.html(
|
||
|
template({
|
||
|
isEditable: !this._analysisDefinitionNodeModel.isReadOnly(),
|
||
|
isCustomQueryApplied: this._analysisDefinitionNodeModel.isCustomQueryApplied()
|
||
|
})
|
||
|
);
|
||
|
this._initViews();
|
||
|
return this;
|
||
|
},
|
||
|
|
||
|
_initBinds: function () {
|
||
|
this.listenTo(this._querySchemaModel, 'change:query', this.render);
|
||
|
this.listenTo(this._syncModel, 'destroy', this.render);
|
||
|
},
|
||
|
|
||
|
_initViews: function () {
|
||
|
if (this._tableModel.isSync() && this._tableModel.isOwner(this._userModel)) {
|
||
|
var syncInfo = new SyncInfoView({
|
||
|
modals: this._modals,
|
||
|
syncModel: this._syncModel,
|
||
|
tableModel: this._tableModel,
|
||
|
querySchemaModel: this._querySchemaModel
|
||
|
});
|
||
|
|
||
|
this.$('.js-sync').html(syncInfo.render().el);
|
||
|
this.addView(syncInfo);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
_onExportClick: function () {
|
||
|
this._modals.create(function (modalModel) {
|
||
|
return new ModalExportDataView({
|
||
|
modalModel: modalModel,
|
||
|
fromView: 'dataset',
|
||
|
configModel: this._configModel,
|
||
|
filename: this._tableModel.getUnquotedName(),
|
||
|
queryGeometryModel: this._queryGeometryModel,
|
||
|
querySchemaModel: this._querySchemaModel,
|
||
|
canHideColumns: false
|
||
|
});
|
||
|
}.bind(this));
|
||
|
},
|
||
|
|
||
|
_onAddRowClick: function () {
|
||
|
this.trigger('addRow', this);
|
||
|
},
|
||
|
|
||
|
_onAddColumnClick: function () {
|
||
|
this.trigger('addColumn', this);
|
||
|
}
|
||
|
});
|