cartodb-4.42/lib/assets/javascripts/deep-insights/widgets/histogram/histogram-title-view.js
2024-04-06 05:25:13 +00:00

85 lines
2.4 KiB
JavaScript

var CoreView = require('backbone/core-view');
var TipsyTooltipView = require('../../../builder/components/tipsy-tooltip-view');
var template = require('./histogram-title-template.tpl');
/**
* Show title + show if histogram sizes are applied or not
*
*/
module.exports = CoreView.extend({
className: 'CDB-Widget-title CDB-Widget-contentSpaced',
events: {
'click .js-autoStyle': '_autoStyle',
'click .js-cancelAutoStyle': '_cancelAutoStyle'
},
initialize: function (opts) {
if (!opts.widgetModel) throw new Error('widgetModel is required');
if (!opts.dataviewModel) throw new Error('dataviewModel is required');
if (!opts.layerModel) throw new Error('layerModel is required');
this.widgetModel = opts.widgetModel;
this.dataviewModel = opts.dataviewModel;
this._layerModel = opts.layerModel;
this._initBinds();
},
render: function () {
this.clearSubViews();
this.$el.html(
template({
title: this.widgetModel.get('title'),
isAutoStyleEnabled: this._isAutoStyleButtonVisible(),
isAutoStyle: this.widgetModel.get('autoStyle'),
isCollapsed: this.widgetModel.get('collapsed')
})
);
this._initViews();
return this;
},
_initBinds: function () {
this.widgetModel.bind('change:title change:collapsed change:autoStyle change:style', this.render, this);
this.add_related_model(this.widgetModel);
this._layerModel.bind('change:visible change:cartocss', this.render, this);
this.add_related_model(this._layerModel);
},
_initViews: function () {
var sizesTooltip = new TipsyTooltipView({
el: this.$el.find('.js-sizes'),
gravity: 'auto'
});
this.addView(sizesTooltip);
var actionsTooltip = new TipsyTooltipView({
el: this.$el.find('.js-actions'),
gravity: 'auto'
});
this.addView(actionsTooltip);
},
_isAutoStyleButtonVisible: function () {
var layerModelMeta = this._layerModel.get('meta');
var cartocss = this._layerModel.get('cartocss') || (layerModelMeta && layerModelMeta.cartocss);
var hasColorsAutoStyle = cartocss && this.widgetModel.hasColorsAutoStyle();
return this.widgetModel.isAutoStyleEnabled() &&
this._layerModel.get('visible') &&
hasColorsAutoStyle;
},
_autoStyle: function () {
this.widgetModel.autoStyle();
},
_cancelAutoStyle: function () {
this.widgetModel.cancelAutoStyle();
}
});