cartodb/lib/assets/javascripts/builder/dataset/dataset-content/dataset-content-view.js

61 lines
1.9 KiB
JavaScript
Raw Normal View History

2020-06-15 10:58:47 +08:00
var CoreView = require('backbone/core-view');
var TableManager = require('builder/components/table/table-manager');
var DatasetContentOptionsView = require('./dataset-content-options-view');
var checkAndBuildOpts = require('builder/helpers/required-opts');
var REQUIRED_OPTS = [
'analysisDefinitionNodeModel',
'configModel',
'modals',
'userModel',
'visModel'
];
module.exports = CoreView.extend({
initialize: function (opts) {
checkAndBuildOpts(opts, REQUIRED_OPTS, this);
this.listenTo(this._visModel, 'change:name', this._onChangeTableVisName);
},
render: function () {
this.clearSubViews();
this._initViews();
return this;
},
_initViews: function () {
this._tableView = TableManager.create({
relativePositionated: true,
analysisDefinitionNodeModel: this._analysisDefinitionNodeModel,
configModel: this._configModel,
modals: this._modals,
userModel: this._userModel
});
this.addView(this._tableView);
this.$el.append(this._tableView.render().el);
var datasetContentOptionsView = new DatasetContentOptionsView({
modals: this._modals,
userModel: this._userModel,
analysisDefinitionNodeModel: this._analysisDefinitionNodeModel,
configModel: this._configModel
});
datasetContentOptionsView.bind('addColumn', function () {
this._tableView.addColumn();
}, this);
datasetContentOptionsView.bind('addRow', function () {
this._tableView.addRow();
}, this);
this.addView(datasetContentOptionsView);
this.$el.prepend(datasetContentOptionsView.render().el);
},
_onChangeTableVisName: function () {
// Although all operations related with table rename are managed in the analysis-definition-source-node-model
// this columnsCollection doesn't belong to it and we need to take from it is generated.
this._tableView && this._tableView.getColumnsCollection().setTableName(this._visModel.get('name'));
}
});