X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/ff3ac103aa103b9b5cb56e71a6782c9ca98acf94..25400813a0ea9828e39975bf166672b97d3c16b7:/project/static/js/views/html.js diff --git a/project/static/js/views/html.js b/project/static/js/views/html.js index 65c8af02..41c34979 100644 --- a/project/static/js/views/html.js +++ b/project/static/js/views/html.js @@ -1,20 +1,42 @@ -/*global Class render_template panels */ -var HTMLView = Class.extend({ +/*global View render_template panels */ +var HTMLView = View.extend({ + _className: 'HTMLView', element: null, model: null, template: 'html-view-template', - init: function(element, model, template) { - this.element = $(element); - this.model = model; - this.template = template || this.template; - this.element.html(render_template(this.template, {})); + init: function(element, model, parent, template) { + this._super(element, model, template); + this.parent = parent; + + this.model + .addObserver(this, 'data', this.modelDataChanged.bind(this)) + .addObserver(this, 'synced', this.modelSyncChanged.bind(this)); + + $('.htmlview', this.element).html(this.model.get('data')); + if (!this.model.get('synced')) { + this.parent.freeze('Niezsynchronizowany...'); + this.model.load(); + } + }, + + modelDataChanged: function(property, value) { + $('.htmlview', this.element).html(value); + }, + + modelSyncChanged: function(property, value) { + if (value) { + this.parent.unfreeze(); + } else { + this.parent.freeze('Niezsynchronizowany...'); + } }, dispose: function() { - + this.model.removeObserver(this); + this._super(); } }); // Register view -panels.push({name: 'html', klass: HTMLView}); \ No newline at end of file +panels['html'] = HTMLView; \ No newline at end of file