(function() { "use strict"; window.Suricate = window.Suricate || {}; Suricate.Widget = function(id, container, configuration, application) { this.id = id; this.container = container; this.application = application; this.configuration = configuration; }; /* * Public */ Suricate.Widget.prototype.getID = function() { return this.id; }; Suricate.Widget.prototype.getApplication = function() { return this.application; }; Suricate.Widget.prototype.init = function() { this.updater = new Suricate.WidgetUpdater(this, this.configuration.interval); this.view = new Suricate.WidgetView(this.configuration.template); this.view.setPlaceholders(this.configuration.placeholders); this.view.appendTo(this.container); }; Suricate.Widget.prototype.update = function(now) { var self = this; this.updater.update(now, function(data) { self.view.setLastUpdateAt(now); self.updateStatus(data.status); self.setData(data); }); }; /* * Private */ Suricate.Widget.prototype.updateStatus = function(status) { switch (status) { case "ok": this.view.setStatusOK(); break; case "alert": this.view.setStatusAlert(); break; case "warning": this.view.setStatusWarning(); break; } }; Suricate.Widget.prototype.setData = function(data) { console.error("function setData(data) is not defined in Suricate.Widget's subclass", this); }; }());