Initial commit
This commit is contained in:
78
lib/assets/javascripts/builder/data/query-columns-collection.js
Executable file
78
lib/assets/javascripts/builder/data/query-columns-collection.js
Executable file
@@ -0,0 +1,78 @@
|
||||
var Backbone = require('backbone');
|
||||
var _ = require('underscore');
|
||||
var QueryColumnModel = require('./query-column-model');
|
||||
|
||||
module.exports = Backbone.Collection.extend({
|
||||
|
||||
model: function (attrs, opts) {
|
||||
var self = opts.collection;
|
||||
return new QueryColumnModel(attrs, {
|
||||
configModel: self._configModel,
|
||||
tableName: self._tableName
|
||||
});
|
||||
},
|
||||
|
||||
url: function () {
|
||||
if (this._tableName) {
|
||||
var baseUrl = this._configModel.get('base_url');
|
||||
var version = this._configModel.urlVersion('column');
|
||||
return baseUrl + '/api/' + version + '/tables/' + this._tableName + '/columns';
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
initialize: function (models, opts) {
|
||||
if (!opts.configModel) throw new Error('configModel is required');
|
||||
if (!opts.querySchemaModel) throw new Error('querySchemaModel is required');
|
||||
|
||||
this._tableName = opts.tableName;
|
||||
this._querySchemaModel = opts.querySchemaModel;
|
||||
this._configModel = opts.configModel;
|
||||
this._initBinds();
|
||||
},
|
||||
|
||||
_initBinds: function () {
|
||||
this.bind('add remove change:type change:name', function () {
|
||||
this.reset();
|
||||
this._querySchemaModel.set('status', 'unfetched');
|
||||
this._querySchemaModel.fetch();
|
||||
}, this);
|
||||
this._querySchemaModel.bind('change:status', function (mdl, status) {
|
||||
if (status === 'fetched') {
|
||||
this.reset(this._querySchemaModel.columnsCollection.toJSON());
|
||||
}
|
||||
}, this);
|
||||
},
|
||||
|
||||
setTableName: function (name) {
|
||||
if (!name) return;
|
||||
|
||||
if (this._tableName) {
|
||||
this._tableName = name;
|
||||
|
||||
this.each(function (columnModel) {
|
||||
columnModel._tableName = name;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
addColumn: function (opts) {
|
||||
opts = opts || {};
|
||||
this.create(
|
||||
{
|
||||
name: 'column_' + new Date().getTime(),
|
||||
type: 'string',
|
||||
isNew: true
|
||||
},
|
||||
_.extend(
|
||||
opts,
|
||||
{
|
||||
wait: true,
|
||||
parse: false
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user