cartodb/lib/assets/javascripts/builder/components/privacy-dropdown/privacy-dialog-view.js
2020-06-15 10:58:47 +08:00

54 lines
1.5 KiB
JavaScript
Executable File

var CoreView = require('backbone/core-view');
var CustomListView = require('builder/components/custom-list/custom-list-view');
var CustomListItemView = require('builder/components/custom-list/custom-list-item-view');
var privacyCTATemplate = require('./privacy-cta.tpl');
var _ = require('underscore');
var REQUIRED_OPTS = [
'model',
'collection',
'userModel',
'configModel'
];
module.exports = CoreView.extend({
className: 'Editor-boxModal Privacy-dialog',
initialize: function (opts) {
_.each(REQUIRED_OPTS, function (item) {
if (opts[item] === undefined) throw new Error(item + ' is required');
this['_' + item] = opts[item];
}, this);
},
render: function () {
this.$el.empty();
this.clearSubViews();
this._renderList();
return this;
},
_renderList: function () {
var disabledOptions = this._collection.where({ disabled: true });
var customInstall = this._configModel.get('cartodb_com_hosted');
var upgradeURL = this._configModel.get('upgrade_url');
var listView = new CustomListView({
model: this._model,
collection: this._collection,
itemView: CustomListItemView
});
this.$el.append(listView.render().el);
this.addView(listView);
if (disabledOptions.length > 0 && !customInstall && upgradeURL) {
this.$el.append(
privacyCTATemplate({
upgradeURL: upgradeURL,
showTrial: this._userModel.canStartTrial()
})
);
}
}
});