sjy-ecos/public/lib/bokeh/js/tree/models/widgets/dialog.js

132 lines
3.7 KiB
JavaScript

var $, $1, Dialog, DialogView, Widget, _, dialog_template, p,
bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
hasProp = {}.hasOwnProperty;
_ = require("underscore");
$ = require("jquery");
$1 = require("bootstrap/modal");
p = require("../../core/properties");
dialog_template = require("./dialog_template");
Widget = require("./widget");
DialogView = (function(superClass) {
extend(DialogView, superClass);
function DialogView() {
this.change_content = bind(this.change_content, this);
this.change_visibility = bind(this.change_visibility, this);
this.onHide = bind(this.onHide, this);
return DialogView.__super__.constructor.apply(this, arguments);
}
DialogView.prototype.initialize = function(options) {
DialogView.__super__.initialize.call(this, options);
this.render();
this.render_content();
this.render_buttons();
this.listenTo(this.model, 'destroy', this.remove);
this.listenTo(this.model, 'change:visible', this.change_visibility);
return this.listenTo(this.model, 'change:content', this.change_content);
};
DialogView.prototype.render_content = function() {
var content;
if (this.content_view != null) {
this.content_view.remove();
}
content = this.mget('content');
if (content != null) {
if (typeof content === 'object') {
this.content_view = new content.default_view({
model: content
});
this.$el.find('.bk-dialog-content').empty();
this.$el.find('.bk-dialog-content').append(this.content_view.$el);
} else {
this.$el.find('.bk-dialog-content').empty();
this.$el.find('.bk-dialog-content').text(content);
}
}
return this;
};
DialogView.prototype.render_buttons = function() {
var buttons_box;
if (this.buttons_box_view != null) {
this.buttons_box_view.remove();
}
buttons_box = this.mget('buttons_box');
if (buttons_box != null) {
this.buttons_box_view = new buttons_box.default_view({
model: buttons_box
});
this.$el.find('.bk-dialog-buttons_box').empty();
this.$el.find('.bk-dialog-buttons_box').append(this.buttons_box_view.$el);
}
return this;
};
DialogView.prototype.render = function() {
DialogView.__super__.render.call(this);
this.$modal = $(dialog_template(this.model.attributes));
this.$modal.modal({
show: this.mget("visible")
});
this.$modal.on('hidden.bk-bs.modal', this.onHide);
this.$el.html(this.$modal);
return this;
};
DialogView.prototype.onHide = function(event) {
return this.mset("visible", false, {
silent: true
});
};
DialogView.prototype.change_visibility = function() {
return this.$modal.modal(this.mget("visible") ? "show" : "hide");
};
DialogView.prototype.change_content = function() {
return this.render_content();
};
return DialogView;
})(Widget.View);
Dialog = (function(superClass) {
extend(Dialog, superClass);
function Dialog() {
return Dialog.__super__.constructor.apply(this, arguments);
}
Dialog.prototype.type = "Dialog";
Dialog.prototype.default_view = DialogView;
Dialog.define({
visible: [p.Bool, false],
closable: [p.Bool, true],
title: [p.String, ""],
content: [p.String, ""],
buttons: [p.Array, []],
buttons_box: [p.Instance]
});
return Dialog;
})(Widget.Model);
module.exports = {
Model: Dialog,
View: DialogView
};