From dad4191c404b4f6bafa505672a97a2709abe9163 Mon Sep 17 00:00:00 2001 From: severin Date: Sat, 2 Nov 2013 23:02:07 +0100 Subject: [PATCH] Fixed js --- examples/widgetapp/assets/widget.coffee | 3 + examples/widgetapp/assets/widget.js | 1841 ++++++++++++----------- 2 files changed, 929 insertions(+), 915 deletions(-) diff --git a/examples/widgetapp/assets/widget.coffee b/examples/widgetapp/assets/widget.coffee index 95ed7a47..916564df 100644 --- a/examples/widgetapp/assets/widget.coffee +++ b/examples/widgetapp/assets/widget.coffee @@ -267,6 +267,9 @@ class WSF_PAGE_CONTROL extends WSF_CONTROL class WSF_SLIDER_CONTROL extends WSF_CONTROL requirements: ['assets/bootstrap.min.js'] +class WSF_DROPDOWN_CONTROL extends WSF_CONTROL + requirements: ['assets/bootstrap.min.js'] + controls = {} class WSF_BUTTON_CONTROL extends WSF_CONTROL diff --git a/examples/widgetapp/assets/widget.js b/examples/widgetapp/assets/widget.js index 7e9a4e4e..5cb134cd 100644 --- a/examples/widgetapp/assets/widget.js +++ b/examples/widgetapp/assets/widget.js @@ -1,947 +1,958 @@ // Generated by CoffeeScript 1.6.1 -(function() { - var Mini, WSF_AUTOCOMPLETE_CONTROL, WSF_BUTTON_CONTROL, WSF_CHECKBOX_CONTROL, WSF_CHECKBOX_LIST_CONTROL, WSF_CODEVIEW_CONTROL, WSF_CONTROL, WSF_FORM_ELEMENT_CONTROL, WSF_GRID_CONTROL, WSF_HTML_CONTROL, WSF_INPUT_CONTROL, WSF_MAX_VALIDATOR, WSF_MIN_VALIDATOR, WSF_PAGE_CONTROL, WSF_PAGINATION_CONTROL, WSF_PROGRESS_CONTROL, WSF_REGEXP_VALIDATOR, WSF_REPEATER_CONTROL, WSF_SLIDER_CONTROL, WSF_TEXTAREA_CONTROL, WSF_VALIDATOR, build_control, cache, controls, lazy_load, loaded, show_alert, start_modal, start_modal_big, template, tmpl, - __hasProp = {}.hasOwnProperty, - __extends = 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; }; +var Mini, WSF_AUTOCOMPLETE_CONTROL, WSF_BUTTON_CONTROL, WSF_CHECKBOX_CONTROL, WSF_CHECKBOX_LIST_CONTROL, WSF_CODEVIEW_CONTROL, WSF_CONTROL, WSF_DROPDOWN_CONTROL, WSF_FORM_ELEMENT_CONTROL, WSF_GRID_CONTROL, WSF_HTML_CONTROL, WSF_INPUT_CONTROL, WSF_MAX_VALIDATOR, WSF_MIN_VALIDATOR, WSF_PAGE_CONTROL, WSF_PAGINATION_CONTROL, WSF_PROGRESS_CONTROL, WSF_REGEXP_VALIDATOR, WSF_REPEATER_CONTROL, WSF_SLIDER_CONTROL, WSF_TEXTAREA_CONTROL, WSF_VALIDATOR, build_control, cache, controls, lazy_load, loaded, show_alert, start_modal, start_modal_big, template, tmpl, + __hasProp = {}.hasOwnProperty, + __extends = 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; }; - cache = {}; +cache = {}; - jQuery.cachedAsset = function(url, options) { - var head, onload, script, success, successful, timeoutHandle; - if (/\.css$/.test(url)) { - $("", { - rel: "stylesheet", - type: "text/css", - href: url - }).appendTo("head"); - return { - done: function(fn) { - return fn(); - } - }; - } else { - success = []; - head = document.head || document.getElementsByTagName('head')[0] || document.documentElement; - script = document.createElement('script'); - script.async = 'async'; - script.src = url; - successful = false; - onload = function(_, aborted) { - var s, _i, _len; - if (aborted == null) { - aborted = false; - } - if (!(aborted || !script.readyState || script.readyState === 'complete')) { - return; - } - clearTimeout(timeoutHandle); - script.onload = script.onreadystatechange = script.onerror = null; - if (head && script.parentNode) { - head.removeChild(script); - } - script = void 0; - if (success && !aborted) { - successful = true; - for (_i = 0, _len = success.length; _i < _len; _i++) { - s = success[_i]; - s(); - } - return success = []; - } - }; - script.onload = script.onreadystatechange = onload; - script.onerror = function() { - return onload(null, true); - }; - timeoutHandle = setTimeout(script.onerror, 7500); - head.insertBefore(script, head.firstChild); - return { - done: function(fn) { - if (!successful) { - success.push(fn); - } else { - fn(); - } - } - }; - } - }; - - jQuery.unparam = function(value) { - var i, l, pair, params, pieces; - params = {}; - pieces = value.split("&"); - pair = void 0; - i = void 0; - l = void 0; - i = 0; - l = pieces.length; - while (i < l) { - pair = pieces[i].split("=", 2); - params[decodeURIComponent(pair[0])] = (pair.length === 2 ? decodeURIComponent(pair[1].replace(/\+/g, " ")) : true); - i++; - } - return params; - }; - - template = tmpl = function(str, data) { - var fn; - fn = (!/\W/.test(str) ? cache[str] = cache[str] || tmpl(str) : new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};" + "with(obj){p.push('" + str.replace(/[\r\t\n]/g, " ").split("{{").join("\t").replace(/((^|}})[^\t]*)'/g, "$1\r").replace(/\t=(.*?)}}/g, "',$1,'").split("\t").join("');").split("}}").join("p.push('").split("\r").join("\\'") + "');}return p.join('');")); - if (data) { - return fn(data); - } else { - return fn; - } - }; - - Mini = { - compile: function(t) { - return { - render: template(t) - }; - } - }; - - loaded = {}; - - lazy_load = function(requirements, fn, that) { - if (requirements.length === 0) { - return function() { - var a; - a = arguments; - return fn.apply(that, a); - }; - } - if (that == null) { - that = window; - } - return function() { - var a, args, counter, done, r, self, _i, _len; - a = arguments; - if (typeof args === "undefined" || args === null) { - args = []; - } - counter = requirements.length + 1; - self = this; - done = function() { - counter = counter - 1; - if (counter === 0) { - fn.apply(that, a); - } - }; - for (_i = 0, _len = requirements.length; _i < _len; _i++) { - r = requirements[_i]; - if (loaded[r] == null) { - loaded[r] = $.cachedAsset(r); - } - loaded[r].done(done); - } - return done(); - }; - }; - - build_control = function(control_name, state, control) { - var $el, type, typeclass; - $el = control.$el.find('[data-name=' + control_name + ']'); - type = $el.data('type'); - typeclass = null; - try { - typeclass = eval(type); - } catch (e) { - typeclass = WSF_CONTROL; - } - if ((type != null) && (typeclass != null)) { - return new typeclass(control, $el, control_name, state); - } - return null; - }; - - WSF_VALIDATOR = (function() { - - function WSF_VALIDATOR(parent_control, settings) { - this.parent_control = parent_control; - this.settings = settings; - this.error = this.settings.error; - return; - } - - WSF_VALIDATOR.prototype.validate = function() { - return true; - }; - - return WSF_VALIDATOR; - - })(); - - WSF_REGEXP_VALIDATOR = (function(_super) { - - __extends(WSF_REGEXP_VALIDATOR, _super); - - function WSF_REGEXP_VALIDATOR() { - WSF_REGEXP_VALIDATOR.__super__.constructor.apply(this, arguments); - this.pattern = new RegExp(this.settings.expression, 'g'); - } - - WSF_REGEXP_VALIDATOR.prototype.validate = function() { - var res, val; - val = this.parent_control.value(); - res = val.match(this.pattern); - return res !== null; - }; - - return WSF_REGEXP_VALIDATOR; - - })(WSF_VALIDATOR); - - WSF_MIN_VALIDATOR = (function(_super) { - - __extends(WSF_MIN_VALIDATOR, _super); - - function WSF_MIN_VALIDATOR() { - return WSF_MIN_VALIDATOR.__super__.constructor.apply(this, arguments); - } - - WSF_MIN_VALIDATOR.prototype.validate = function() { - var val; - val = this.parent_control.value(); - return val.length >= this.settings.min; - }; - - return WSF_MIN_VALIDATOR; - - })(WSF_VALIDATOR); - - WSF_MAX_VALIDATOR = (function(_super) { - - __extends(WSF_MAX_VALIDATOR, _super); - - function WSF_MAX_VALIDATOR() { - return WSF_MAX_VALIDATOR.__super__.constructor.apply(this, arguments); - } - - WSF_MAX_VALIDATOR.prototype.validate = function() { - var val; - val = this.parent_control.value(); - return val.length <= this.settings.max; - }; - - return WSF_MAX_VALIDATOR; - - })(WSF_VALIDATOR); - - WSF_CONTROL = (function() { - - WSF_CONTROL.prototype.requirements = []; - - function WSF_CONTROL(parent_control, $el, control_name, fullstate) { - this.parent_control = parent_control; - this.$el = $el; - this.control_name = control_name; - this.fullstate = fullstate; - this.state = this.fullstate.state; - this.load_subcontrols(); - this.isolation = "" + this.$el.data('isolation') === "1"; - this.$el.data('control', this); - this.initialize = lazy_load(this.requirements, this.attach_events, this); - return; - } - - WSF_CONTROL.prototype.load_subcontrols = function() { - var control_name, state; - if (this.fullstate.controls != null) { - return this.controls = (function() { - var _ref, _results; - _ref = this.fullstate.controls; - _results = []; - for (control_name in _ref) { - state = _ref[control_name]; - _results.push(build_control(control_name, state, this)); - } - return _results; - }).call(this); - } else { - return this.controls = []; +jQuery.cachedAsset = function(url, options) { + var head, onload, script, success, successful, timeoutHandle; + if (/\.css$/.test(url)) { + $("", { + rel: "stylesheet", + type: "text/css", + href: url + }).appendTo("head"); + return { + done: function(fn) { + return fn(); } }; - - WSF_CONTROL.prototype.attach_events = function() { - var control, _i, _len, _ref; - console.log("Attached " + this.control_name); - _ref = this.controls; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - control = _ref[_i]; - if (control != null) { - control.initialize(); + } else { + success = []; + head = document.head || document.getElementsByTagName('head')[0] || document.documentElement; + script = document.createElement('script'); + script.async = 'async'; + script.src = url; + successful = false; + onload = function(_, aborted) { + var s, _i, _len; + if (aborted == null) { + aborted = false; + } + if (!(aborted || !script.readyState || script.readyState === 'complete')) { + return; + } + clearTimeout(timeoutHandle); + script.onload = script.onreadystatechange = script.onerror = null; + if (head && script.parentNode) { + head.removeChild(script); + } + script = void 0; + if (success && !aborted) { + successful = true; + for (_i = 0, _len = success.length; _i < _len; _i++) { + s = success[_i]; + s(); } + return success = []; } }; - - WSF_CONTROL.prototype.update = function(state) {}; - - WSF_CONTROL.prototype.process_actions = function(actions) { - var action, fn, _i, _len, _results; - _results = []; - for (_i = 0, _len = actions.length; _i < _len; _i++) { - action = actions[_i]; - try { - fn = eval(action.type); - _results.push(fn(action)); - } catch (e) { - _results.push(console.log("Failed preforming action " + action.type)); - } - } - return _results; + script.onload = script.onreadystatechange = onload; + script.onerror = function() { + return onload(null, true); }; - - WSF_CONTROL.prototype.process_update = function(new_states) { - var control, _i, _len, _ref, _results; - if (new_states[this.control_name] != null) { - this.update(new_states[this.control_name]); - } - _ref = this.controls; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - control = _ref[_i]; - if (control != null) { - _results.push(control.process_update(new_states)); + timeoutHandle = setTimeout(script.onerror, 7500); + head.insertBefore(script, head.firstChild); + return { + done: function(fn) { + if (!successful) { + success.push(fn); } else { - _results.push(void 0); - } - } - return _results; - }; - - WSF_CONTROL.prototype.get_context_state = function() { - if ((this.parent_control != null) && !this.isolation) { - return this.parent_control.get_context_state(); - } - return this.wrap(this.control_name, this.fullstate); - }; - - WSF_CONTROL.prototype.wrap = function(cname, state) { - var ctrs; - ctrs = {}; - ctrs[cname] = state; - state = { - "controls": ctrs - }; - if (this.parent_control != null) { - return this.parent_control.wrap(this.parent_control.control_name, state); - } - return state; - }; - - WSF_CONTROL.prototype.callback_url = function(params) { - if (this.parent_control != null) { - return this.parent_control.callback_url(params); - } - $.extend(params, this.url_params); - return this.url + '?' + $.param(params); - }; - - WSF_CONTROL.prototype.trigger_callback = function(control_name, event, event_parameter) { - var self; - if ((this.parent_control != null) && !this.isolation) { - return this.parent_control.trigger_callback(control_name, event, event_parameter); - } - self = this; - return $.ajax({ - type: 'POST', - url: this.callback_url({ - control_name: control_name, - event: event, - event_parameter: event_parameter - }), - data: JSON.stringify(this.get_context_state()), - processData: false, - contentType: 'application/json', - cache: false - }).done(function(new_states) { - if (new_states.actions != null) { - self.process_actions(new_states.actions); - } - return self.process_update(new_states); - }); - }; - - WSF_CONTROL.prototype.on = function(name, callback, context) { - if (this._events == null) { - this._events = {}; - } - if (this._events[name] == null) { - this._events[name] = []; - } - this._events[name].push({ - callback: callback, - context: context - }); - return this; - }; - - WSF_CONTROL.prototype.trigger = function(name) { - var ev, _i, _len, _ref, _ref1; - if (((_ref = this._events) != null ? _ref[name] : void 0) == null) { - return this; - } - _ref1 = this._events[name]; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - ev = _ref1[_i]; - ev.callback.call(ev.context); - } - return this; - }; - - WSF_CONTROL.prototype.remove = function() { - console.log("Removed " + this.control_name); - return this.$el.remove(); - }; - - return WSF_CONTROL; - - })(); - - WSF_PAGE_CONTROL = (function(_super) { - - __extends(WSF_PAGE_CONTROL, _super); - - function WSF_PAGE_CONTROL(fullstate) { - this.fullstate = fullstate; - this.state = this.fullstate.state; - this.parent_control = null; - this.$el = $('[data-name=' + this.state.id + ']'); - this.control_name = this.state.id; - this.url = this.state['url']; - this.url_params = jQuery.unparam(this.state['url_params']); - this.$el.data('control', this); - this.initialize = lazy_load(this.requirements, this.attach_events, this); - this.load_subcontrols(); - } - - WSF_PAGE_CONTROL.prototype.wrap = function(cname, state) { - return state; - }; - - WSF_PAGE_CONTROL.prototype.remove = function() { - console.log("Removed " + this.control_name); - return this.$el.remove(); - }; - - return WSF_PAGE_CONTROL; - - })(WSF_CONTROL); - - WSF_SLIDER_CONTROL = (function(_super) { - - __extends(WSF_SLIDER_CONTROL, _super); - - function WSF_SLIDER_CONTROL() { - return WSF_SLIDER_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_SLIDER_CONTROL.prototype.requirements = ['assets/bootstrap.min.js']; - - return WSF_SLIDER_CONTROL; - - })(WSF_CONTROL); - - controls = {}; - - WSF_BUTTON_CONTROL = (function(_super) { - - __extends(WSF_BUTTON_CONTROL, _super); - - function WSF_BUTTON_CONTROL() { - return WSF_BUTTON_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_BUTTON_CONTROL.prototype.attach_events = function() { - var self; - WSF_BUTTON_CONTROL.__super__.attach_events.apply(this, arguments); - self = this; - return this.$el.click(function(e) { - e.preventDefault(); - return self.click(); - }); - }; - - WSF_BUTTON_CONTROL.prototype.click = function() { - if (this.state['callback_click']) { - return this.trigger_callback(this.control_name, 'click'); - } - }; - - WSF_BUTTON_CONTROL.prototype.update = function(state) { - if (state.text != null) { - this.state['text'] = state.text; - return this.$el.text(state.text); - } - }; - - return WSF_BUTTON_CONTROL; - - })(WSF_CONTROL); - - WSF_INPUT_CONTROL = (function(_super) { - - __extends(WSF_INPUT_CONTROL, _super); - - function WSF_INPUT_CONTROL() { - return WSF_INPUT_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_INPUT_CONTROL.prototype.attach_events = function() { - var self; - WSF_INPUT_CONTROL.__super__.attach_events.apply(this, arguments); - self = this; - return this.$el.change(function() { - return self.change(); - }); - }; - - WSF_INPUT_CONTROL.prototype.change = function() { - this.state['text'] = this.$el.val(); - if (this.state['callback_change']) { - this.trigger_callback(this.control_name, 'change'); - } - return this.trigger('change'); - }; - - WSF_INPUT_CONTROL.prototype.value = function() { - return this.$el.val(); - }; - - WSF_INPUT_CONTROL.prototype.update = function(state) { - if (state.text != null) { - this.state['text'] = state.text; - return this.$el.val(state.text); - } - }; - - return WSF_INPUT_CONTROL; - - })(WSF_CONTROL); - - WSF_TEXTAREA_CONTROL = (function(_super) { - - __extends(WSF_TEXTAREA_CONTROL, _super); - - function WSF_TEXTAREA_CONTROL() { - return WSF_TEXTAREA_CONTROL.__super__.constructor.apply(this, arguments); - } - - return WSF_TEXTAREA_CONTROL; - - })(WSF_INPUT_CONTROL); - - WSF_CODEVIEW_CONTROL = (function(_super) { - - __extends(WSF_CODEVIEW_CONTROL, _super); - - function WSF_CODEVIEW_CONTROL() { - WSF_CODEVIEW_CONTROL.__super__.constructor.apply(this, arguments); - this.initialize = lazy_load(['assets/codemirror/codemirror.js', 'assets/codemirror/codemirror.css', 'assets/codemirror/estudio.css'], lazy_load(['assets/codemirror/eiffel.js'], this.attach_events, this), this); - } - - WSF_CODEVIEW_CONTROL.prototype.attach_events = function() { - WSF_CODEVIEW_CONTROL.__super__.attach_events.apply(this, arguments); - this.editor = CodeMirror.fromTextArea(this.$el[0], { - mode: "eiffel", - tabMode: "indent", - indentUnit: 4, - lineNumbers: true, - theme: 'estudio' - }); - return this.editor.setSize("100%", 700); - }; - - WSF_CODEVIEW_CONTROL.prototype.remove = function() { - this.editor.toTextArea(); - return WSF_CODEVIEW_CONTROL.__super__.remove.apply(this, arguments); - }; - - return WSF_CODEVIEW_CONTROL; - - })(WSF_INPUT_CONTROL); - - WSF_AUTOCOMPLETE_CONTROL = (function(_super) { - - __extends(WSF_AUTOCOMPLETE_CONTROL, _super); - - function WSF_AUTOCOMPLETE_CONTROL() { - return WSF_AUTOCOMPLETE_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_AUTOCOMPLETE_CONTROL.prototype.requirements = ['assets/typeahead.min.js']; - - WSF_AUTOCOMPLETE_CONTROL.prototype.attach_events = function() { - var self; - WSF_AUTOCOMPLETE_CONTROL.__super__.attach_events.apply(this, arguments); - self = this; - this.$el.typeahead({ - name: this.control_name, - template: this.state['template'], - engine: Mini, - remote: { - url: "", - replace: function(url, uriEncodedQuery) { - self.state['text'] = self.$el.val(); - return '?' + $.param({ - control_name: self.control_name, - event: 'autocomplete', - states: JSON.stringify(self.get_context_state()) - }); - }, - filter: function(parsedResponse) { - return parsedResponse[self.control_name]['suggestions']; - }, - fn: function() { - return self.trigger_callback(self.control_name, 'autocomplete'); - } - } - }); - this.$el.on('typeahead:closed', function() { - return self.change(); - }); - return this.$el.on('typeahead:blured', function() { - return self.change(); - }); - }; - - return WSF_AUTOCOMPLETE_CONTROL; - - })(WSF_INPUT_CONTROL); - - WSF_CHECKBOX_CONTROL = (function(_super) { - - __extends(WSF_CHECKBOX_CONTROL, _super); - - function WSF_CHECKBOX_CONTROL() { - return WSF_CHECKBOX_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_CHECKBOX_CONTROL.prototype.attach_events = function() { - var self; - WSF_CHECKBOX_CONTROL.__super__.attach_events.apply(this, arguments); - self = this; - this.checked_value = this.state['checked_value']; - return this.$el.change(function() { - return self.change(); - }); - }; - - WSF_CHECKBOX_CONTROL.prototype.change = function() { - this.state['checked'] = this.$el.is(':checked'); - if (this.state['callback_change']) { - this.trigger_callback(this.control_name, 'change'); - } - return this.trigger('change'); - }; - - WSF_CHECKBOX_CONTROL.prototype.value = function() { - return this.$el.is(':checked'); - }; - - WSF_CHECKBOX_CONTROL.prototype.update = function(state) { - if (state.text != null) { - this.state['checked'] = state.checked; - return this.$el.prop('checked', state.checked); - } - }; - - return WSF_CHECKBOX_CONTROL; - - })(WSF_CONTROL); - - WSF_FORM_ELEMENT_CONTROL = (function(_super) { - - __extends(WSF_FORM_ELEMENT_CONTROL, _super); - - function WSF_FORM_ELEMENT_CONTROL() { - return WSF_FORM_ELEMENT_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_FORM_ELEMENT_CONTROL.prototype.attach_events = function() { - var self, validator, validatorclass, _i, _len, _ref; - WSF_FORM_ELEMENT_CONTROL.__super__.attach_events.apply(this, arguments); - self = this; - this.value_control = this.controls[0]; - if (this.value_control != null) { - this.value_control.on('change', this.change, this); - } - this.serverside_validator = false; - this.validators = []; - _ref = this.state['validators']; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - validator = _ref[_i]; - try { - validatorclass = eval(validator.name); - this.validators.push(new validatorclass(this, validator)); - } catch (e) { - this.serverside_validator = true; + fn(); } } }; + } +}; - WSF_FORM_ELEMENT_CONTROL.prototype.change = function() { - var validator, _i, _len, _ref; - _ref = this.validators; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - validator = _ref[_i]; - if (!validator.validate()) { - this.showerror(validator.error); - return; - } - } - this.showerror(""); - if (this.serverside_validator) { - this.trigger_callback(this.control_name, 'validate'); - } +jQuery.unparam = function(value) { + var i, l, pair, params, pieces; + params = {}; + pieces = value.split("&"); + pair = void 0; + i = void 0; + l = void 0; + i = 0; + l = pieces.length; + while (i < l) { + pair = pieces[i].split("=", 2); + params[decodeURIComponent(pair[0])] = (pair.length === 2 ? decodeURIComponent(pair[1].replace(/\+/g, " ")) : true); + i++; + } + return params; +}; + +template = tmpl = function(str, data) { + var fn; + fn = (!/\W/.test(str) ? cache[str] = cache[str] || tmpl(str) : new Function("obj", "var p=[],print=function(){p.push.apply(p,arguments);};" + "with(obj){p.push('" + str.replace(/[\r\t\n]/g, " ").split("{{").join("\t").replace(/((^|}})[^\t]*)'/g, "$1\r").replace(/\t=(.*?)}}/g, "',$1,'").split("\t").join("');").split("}}").join("p.push('").split("\r").join("\\'") + "');}return p.join('');")); + if (data) { + return fn(data); + } else { + return fn; + } +}; + +Mini = { + compile: function(t) { + return { + render: template(t) }; + } +}; - WSF_FORM_ELEMENT_CONTROL.prototype.showerror = function(message) { - var errordiv; - this.$el.removeClass("has-error"); - this.$el.find(".validation").remove(); - if (message.length > 0) { - this.$el.addClass("has-error"); - errordiv = $("
").addClass('help-block').addClass('validation').text(message); - return this.$el.find(".col-lg-10").append(errordiv); - } +loaded = {}; + +lazy_load = function(requirements, fn, that) { + if (requirements.length === 0) { + return function() { + var a; + a = arguments; + return fn.apply(that, a); }; - - WSF_FORM_ELEMENT_CONTROL.prototype.update = function(state) { - if (state.error != null) { - return this.showerror(state.error); - } - }; - - WSF_FORM_ELEMENT_CONTROL.prototype.value = function() { - return this.value_control.value(); - }; - - return WSF_FORM_ELEMENT_CONTROL; - - })(WSF_CONTROL); - - WSF_HTML_CONTROL = (function(_super) { - - __extends(WSF_HTML_CONTROL, _super); - - function WSF_HTML_CONTROL() { - return WSF_HTML_CONTROL.__super__.constructor.apply(this, arguments); + } + if (that == null) { + that = window; + } + return function() { + var a, args, counter, done, r, self, _i, _len; + a = arguments; + if (typeof args === "undefined" || args === null) { + args = []; } - - WSF_HTML_CONTROL.prototype.value = function() { - return this.$el.html(); - }; - - WSF_HTML_CONTROL.prototype.update = function(state) { - if (state.html != null) { - this.state['html'] = state.html; - return this.$el.html(state.html); + counter = requirements.length + 1; + self = this; + done = function() { + counter = counter - 1; + if (counter === 0) { + fn.apply(that, a); } }; - - return WSF_HTML_CONTROL; - - })(WSF_CONTROL); - - WSF_CHECKBOX_LIST_CONTROL = (function(_super) { - - __extends(WSF_CHECKBOX_LIST_CONTROL, _super); - - function WSF_CHECKBOX_LIST_CONTROL() { - return WSF_CHECKBOX_LIST_CONTROL.__super__.constructor.apply(this, arguments); + for (_i = 0, _len = requirements.length; _i < _len; _i++) { + r = requirements[_i]; + if (loaded[r] == null) { + loaded[r] = $.cachedAsset(r); + } + loaded[r].done(done); } + return done(); + }; +}; - WSF_CHECKBOX_LIST_CONTROL.prototype.attach_events = function() { - var control, _i, _len, _ref; - WSF_CHECKBOX_LIST_CONTROL.__super__.attach_events.apply(this, arguments); - _ref = this.controls; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - control = _ref[_i]; - control.on('change', this.change, this); - } - }; +build_control = function(control_name, state, control) { + var $el, type, typeclass; + $el = control.$el.find('[data-name=' + control_name + ']'); + type = $el.data('type'); + typeclass = null; + try { + typeclass = eval(type); + } catch (e) { + typeclass = WSF_CONTROL; + } + if ((type != null) && (typeclass != null)) { + return new typeclass(control, $el, control_name, state); + } + return null; +}; - WSF_CHECKBOX_LIST_CONTROL.prototype.change = function() { - return this.trigger("change"); - }; +WSF_VALIDATOR = (function() { - WSF_CHECKBOX_LIST_CONTROL.prototype.value = function() { - var result, subc, _i, _len, _ref; - result = []; - _ref = this.controls; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - subc = _ref[_i]; - if (subc.value()) { - result.push(subc.checked_value); - } - } - return result; - }; + function WSF_VALIDATOR(parent_control, settings) { + this.parent_control = parent_control; + this.settings = settings; + this.error = this.settings.error; + return; + } - return WSF_CHECKBOX_LIST_CONTROL; - - })(WSF_CONTROL); - - WSF_PROGRESS_CONTROL = (function(_super) { - - __extends(WSF_PROGRESS_CONTROL, _super); - - function WSF_PROGRESS_CONTROL() { - return WSF_PROGRESS_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_PROGRESS_CONTROL.prototype.attach_events = function() { - var runfetch, self; - WSF_PROGRESS_CONTROL.__super__.attach_events.apply(this, arguments); - self = this; - runfetch = function() { - return self.fetch(); - }; - return this.int = setInterval(runfetch, 5000); - }; - - WSF_PROGRESS_CONTROL.prototype.fetch = function() { - return this.trigger_callback(this.control_name, 'progress_fetch'); - }; - - WSF_PROGRESS_CONTROL.prototype.update = function(state) { - if (state.progress != null) { - this.state['progress'] = state.progress; - return this.$el.children('.progress-bar').attr('aria-valuenow', state.progress).width(state.progress + '%'); - } - }; - - WSF_PROGRESS_CONTROL.prototype.remove = function() { - clearInterval(this.int); - return WSF_PROGRESS_CONTROL.__super__.remove.apply(this, arguments); - }; - - return WSF_PROGRESS_CONTROL; - - })(WSF_CONTROL); - - WSF_PAGINATION_CONTROL = (function(_super) { - - __extends(WSF_PAGINATION_CONTROL, _super); - - function WSF_PAGINATION_CONTROL() { - return WSF_PAGINATION_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_PAGINATION_CONTROL.prototype.attach_events = function() { - var self; - self = this; - return this.$el.on('click', 'a', function(e) { - e.preventDefault(); - return self.click(e); - }); - }; - - WSF_PAGINATION_CONTROL.prototype.click = function(e) { - var nr; - nr = $(e.target).data('nr'); - if (nr === "next") { - return this.trigger_callback(this.control_name, "next"); - } else if (nr === "prev") { - return this.trigger_callback(this.control_name, "prev"); - } else { - return this.trigger_callback(this.control_name, "goto", nr); - } - }; - - WSF_PAGINATION_CONTROL.prototype.update = function(state) { - if (state._html != null) { - return this.$el.html($(state._html).html()); - } - }; - - return WSF_PAGINATION_CONTROL; - - })(WSF_CONTROL); - - WSF_GRID_CONTROL = (function(_super) { - - __extends(WSF_GRID_CONTROL, _super); - - function WSF_GRID_CONTROL() { - return WSF_GRID_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_GRID_CONTROL.prototype.attach_events = function() { - var self; - WSF_GRID_CONTROL.__super__.attach_events.apply(this, arguments); - return self = this; - }; - - WSF_GRID_CONTROL.prototype.update = function(state) { - if (state.datasource != null) { - this.state['datasource'] = state.datasource; - } - if (state._body != null) { - return this.$el.find('tbody').html(state._body); - } - }; - - return WSF_GRID_CONTROL; - - })(WSF_CONTROL); - - WSF_REPEATER_CONTROL = (function(_super) { - - __extends(WSF_REPEATER_CONTROL, _super); - - function WSF_REPEATER_CONTROL() { - return WSF_REPEATER_CONTROL.__super__.constructor.apply(this, arguments); - } - - WSF_REPEATER_CONTROL.prototype.attach_events = function() { - var self; - WSF_REPEATER_CONTROL.__super__.attach_events.apply(this, arguments); - return self = this; - }; - - WSF_REPEATER_CONTROL.prototype.update = function(state) { - if (state.datasource != null) { - this.state['datasource'] = state.datasource; - } - if (state._body != null) { - this.$el.find('.repeater_content').html(state._body); - return console.log(state._body); - } - }; - - return WSF_REPEATER_CONTROL; - - })(WSF_CONTROL); - - show_alert = function(action) { - return alert(action.message); + WSF_VALIDATOR.prototype.validate = function() { + return true; }; - start_modal = lazy_load(['assets/bootstrap.min.js'], function(action) { - var cssclass, modal; - cssclass = ""; - if (action.type === "start_modal_big") { - cssclass = " big"; + return WSF_VALIDATOR; + +})(); + +WSF_REGEXP_VALIDATOR = (function(_super) { + + __extends(WSF_REGEXP_VALIDATOR, _super); + + function WSF_REGEXP_VALIDATOR() { + WSF_REGEXP_VALIDATOR.__super__.constructor.apply(this, arguments); + this.pattern = new RegExp(this.settings.expression, 'g'); + } + + WSF_REGEXP_VALIDATOR.prototype.validate = function() { + var res, val; + val = this.parent_control.value(); + res = val.match(this.pattern); + return res !== null; + }; + + return WSF_REGEXP_VALIDATOR; + +})(WSF_VALIDATOR); + +WSF_MIN_VALIDATOR = (function(_super) { + + __extends(WSF_MIN_VALIDATOR, _super); + + function WSF_MIN_VALIDATOR() { + return WSF_MIN_VALIDATOR.__super__.constructor.apply(this, arguments); + } + + WSF_MIN_VALIDATOR.prototype.validate = function() { + var val; + val = this.parent_control.value(); + return val.length >= this.settings.min; + }; + + return WSF_MIN_VALIDATOR; + +})(WSF_VALIDATOR); + +WSF_MAX_VALIDATOR = (function(_super) { + + __extends(WSF_MAX_VALIDATOR, _super); + + function WSF_MAX_VALIDATOR() { + return WSF_MAX_VALIDATOR.__super__.constructor.apply(this, arguments); + } + + WSF_MAX_VALIDATOR.prototype.validate = function() { + var val; + val = this.parent_control.value(); + return val.length <= this.settings.max; + }; + + return WSF_MAX_VALIDATOR; + +})(WSF_VALIDATOR); + +WSF_CONTROL = (function() { + + WSF_CONTROL.prototype.requirements = []; + + function WSF_CONTROL(parent_control, $el, control_name, fullstate) { + this.parent_control = parent_control; + this.$el = $el; + this.control_name = control_name; + this.fullstate = fullstate; + this.state = this.fullstate.state; + this.load_subcontrols(); + this.isolation = "" + this.$el.data('isolation') === "1"; + this.$el.data('control', this); + this.initialize = lazy_load(this.requirements, this.attach_events, this); + return; + } + + WSF_CONTROL.prototype.load_subcontrols = function() { + var control_name, state; + if (this.fullstate.controls != null) { + return this.controls = (function() { + var _ref, _results; + _ref = this.fullstate.controls; + _results = []; + for (control_name in _ref) { + state = _ref[control_name]; + _results.push(build_control(control_name, state, this)); + } + return _results; + }).call(this); + } else { + return this.controls = []; } - modal = $("
\n
\n
\n
\n \n

" + action.title + "

\n
\n
\n \n
\n
\n
\n
"); - modal.appendTo('body'); - modal.modal('show'); - modal.on('hidden.bs.modal', function() { - $(modal.find('[data-name]').get().reverse()).each(function(i, value) { - $(value).data('control').remove(); - }); + }; + + WSF_CONTROL.prototype.attach_events = function() { + var control, _i, _len, _ref; + console.log("Attached " + this.control_name); + _ref = this.controls; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + control = _ref[_i]; + if (control != null) { + control.initialize(); + } + } + }; + + WSF_CONTROL.prototype.update = function(state) {}; + + WSF_CONTROL.prototype.process_actions = function(actions) { + var action, fn, _i, _len, _results; + _results = []; + for (_i = 0, _len = actions.length; _i < _len; _i++) { + action = actions[_i]; + try { + fn = eval(action.type); + _results.push(fn(action)); + } catch (e) { + _results.push(console.log("Failed preforming action " + action.type)); + } + } + return _results; + }; + + WSF_CONTROL.prototype.process_update = function(new_states) { + var control, _i, _len, _ref, _results; + if (new_states[this.control_name] != null) { + this.update(new_states[this.control_name]); + } + _ref = this.controls; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + control = _ref[_i]; + if (control != null) { + _results.push(control.process_update(new_states)); + } else { + _results.push(void 0); + } + } + return _results; + }; + + WSF_CONTROL.prototype.get_context_state = function() { + if ((this.parent_control != null) && !this.isolation) { + return this.parent_control.get_context_state(); + } + return this.wrap(this.control_name, this.fullstate); + }; + + WSF_CONTROL.prototype.wrap = function(cname, state) { + var ctrs; + ctrs = {}; + ctrs[cname] = state; + state = { + "controls": ctrs + }; + if (this.parent_control != null) { + return this.parent_control.wrap(this.parent_control.control_name, state); + } + return state; + }; + + WSF_CONTROL.prototype.callback_url = function(params) { + if (this.parent_control != null) { + return this.parent_control.callback_url(params); + } + $.extend(params, this.url_params); + return this.url + '?' + $.param(params); + }; + + WSF_CONTROL.prototype.trigger_callback = function(control_name, event, event_parameter) { + var self; + if ((this.parent_control != null) && !this.isolation) { + return this.parent_control.trigger_callback(control_name, event, event_parameter); + } + self = this; + return $.ajax({ + type: 'POST', + url: this.callback_url({ + control_name: control_name, + event: event, + event_parameter: event_parameter + }), + data: JSON.stringify(this.get_context_state()), + processData: false, + contentType: 'application/json', + cache: false + }).done(function(new_states) { + if (new_states.actions != null) { + self.process_actions(new_states.actions); + } + return self.process_update(new_states); }); - return $.get(action.url, { - ajax: 1 - }).done(function(data) { - return modal.find('.modal-body').append(data); + }; + + WSF_CONTROL.prototype.on = function(name, callback, context) { + if (this._events == null) { + this._events = {}; + } + if (this._events[name] == null) { + this._events[name] = []; + } + this._events[name].push({ + callback: callback, + context: context + }); + return this; + }; + + WSF_CONTROL.prototype.trigger = function(name) { + var ev, _i, _len, _ref, _ref1; + if (((_ref = this._events) != null ? _ref[name] : void 0) == null) { + return this; + } + _ref1 = this._events[name]; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + ev = _ref1[_i]; + ev.callback.call(ev.context); + } + return this; + }; + + WSF_CONTROL.prototype.remove = function() { + console.log("Removed " + this.control_name); + return this.$el.remove(); + }; + + return WSF_CONTROL; + +})(); + +WSF_PAGE_CONTROL = (function(_super) { + + __extends(WSF_PAGE_CONTROL, _super); + + function WSF_PAGE_CONTROL(fullstate) { + this.fullstate = fullstate; + this.state = this.fullstate.state; + this.parent_control = null; + this.$el = $('[data-name=' + this.state.id + ']'); + this.control_name = this.state.id; + this.url = this.state['url']; + this.url_params = jQuery.unparam(this.state['url_params']); + this.$el.data('control', this); + this.initialize = lazy_load(this.requirements, this.attach_events, this); + this.load_subcontrols(); + } + + WSF_PAGE_CONTROL.prototype.wrap = function(cname, state) { + return state; + }; + + WSF_PAGE_CONTROL.prototype.remove = function() { + console.log("Removed " + this.control_name); + return this.$el.remove(); + }; + + return WSF_PAGE_CONTROL; + +})(WSF_CONTROL); + +WSF_SLIDER_CONTROL = (function(_super) { + + __extends(WSF_SLIDER_CONTROL, _super); + + function WSF_SLIDER_CONTROL() { + return WSF_SLIDER_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_SLIDER_CONTROL.prototype.requirements = ['assets/bootstrap.min.js']; + + return WSF_SLIDER_CONTROL; + +})(WSF_CONTROL); + +WSF_DROPDOWN_CONTROL = (function(_super) { + + __extends(WSF_DROPDOWN_CONTROL, _super); + + function WSF_DROPDOWN_CONTROL() { + return WSF_DROPDOWN_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_DROPDOWN_CONTROL.prototype.requirements = ['assets/bootstrap.min.js']; + + return WSF_DROPDOWN_CONTROL; + +})(WSF_CONTROL); + +controls = {}; + +WSF_BUTTON_CONTROL = (function(_super) { + + __extends(WSF_BUTTON_CONTROL, _super); + + function WSF_BUTTON_CONTROL() { + return WSF_BUTTON_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_BUTTON_CONTROL.prototype.attach_events = function() { + var self; + WSF_BUTTON_CONTROL.__super__.attach_events.apply(this, arguments); + self = this; + return this.$el.click(function(e) { + e.preventDefault(); + return self.click(); + }); + }; + + WSF_BUTTON_CONTROL.prototype.click = function() { + if (this.state['callback_click']) { + return this.trigger_callback(this.control_name, 'click'); + } + }; + + WSF_BUTTON_CONTROL.prototype.update = function(state) { + if (state.text != null) { + this.state['text'] = state.text; + return this.$el.text(state.text); + } + }; + + return WSF_BUTTON_CONTROL; + +})(WSF_CONTROL); + +WSF_INPUT_CONTROL = (function(_super) { + + __extends(WSF_INPUT_CONTROL, _super); + + function WSF_INPUT_CONTROL() { + return WSF_INPUT_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_INPUT_CONTROL.prototype.attach_events = function() { + var self; + WSF_INPUT_CONTROL.__super__.attach_events.apply(this, arguments); + self = this; + return this.$el.change(function() { + return self.change(); + }); + }; + + WSF_INPUT_CONTROL.prototype.change = function() { + this.state['text'] = this.$el.val(); + if (this.state['callback_change']) { + this.trigger_callback(this.control_name, 'change'); + } + return this.trigger('change'); + }; + + WSF_INPUT_CONTROL.prototype.value = function() { + return this.$el.val(); + }; + + WSF_INPUT_CONTROL.prototype.update = function(state) { + if (state.text != null) { + this.state['text'] = state.text; + return this.$el.val(state.text); + } + }; + + return WSF_INPUT_CONTROL; + +})(WSF_CONTROL); + +WSF_TEXTAREA_CONTROL = (function(_super) { + + __extends(WSF_TEXTAREA_CONTROL, _super); + + function WSF_TEXTAREA_CONTROL() { + return WSF_TEXTAREA_CONTROL.__super__.constructor.apply(this, arguments); + } + + return WSF_TEXTAREA_CONTROL; + +})(WSF_INPUT_CONTROL); + +WSF_CODEVIEW_CONTROL = (function(_super) { + + __extends(WSF_CODEVIEW_CONTROL, _super); + + function WSF_CODEVIEW_CONTROL() { + WSF_CODEVIEW_CONTROL.__super__.constructor.apply(this, arguments); + this.initialize = lazy_load(['assets/codemirror/codemirror.js', 'assets/codemirror/codemirror.css', 'assets/codemirror/estudio.css'], lazy_load(['assets/codemirror/eiffel.js'], this.attach_events, this), this); + } + + WSF_CODEVIEW_CONTROL.prototype.attach_events = function() { + WSF_CODEVIEW_CONTROL.__super__.attach_events.apply(this, arguments); + this.editor = CodeMirror.fromTextArea(this.$el[0], { + mode: "eiffel", + tabMode: "indent", + indentUnit: 4, + lineNumbers: true, + theme: 'estudio' + }); + return this.editor.setSize("100%", 700); + }; + + WSF_CODEVIEW_CONTROL.prototype.remove = function() { + this.editor.toTextArea(); + return WSF_CODEVIEW_CONTROL.__super__.remove.apply(this, arguments); + }; + + return WSF_CODEVIEW_CONTROL; + +})(WSF_INPUT_CONTROL); + +WSF_AUTOCOMPLETE_CONTROL = (function(_super) { + + __extends(WSF_AUTOCOMPLETE_CONTROL, _super); + + function WSF_AUTOCOMPLETE_CONTROL() { + return WSF_AUTOCOMPLETE_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_AUTOCOMPLETE_CONTROL.prototype.requirements = ['assets/typeahead.min.js']; + + WSF_AUTOCOMPLETE_CONTROL.prototype.attach_events = function() { + var self; + WSF_AUTOCOMPLETE_CONTROL.__super__.attach_events.apply(this, arguments); + self = this; + this.$el.typeahead({ + name: this.control_name, + template: this.state['template'], + engine: Mini, + remote: { + url: "", + replace: function(url, uriEncodedQuery) { + self.state['text'] = self.$el.val(); + return '?' + $.param({ + control_name: self.control_name, + event: 'autocomplete', + states: JSON.stringify(self.get_context_state()) + }); + }, + filter: function(parsedResponse) { + return parsedResponse[self.control_name]['suggestions']; + }, + fn: function() { + return self.trigger_callback(self.control_name, 'autocomplete'); + } + } + }); + this.$el.on('typeahead:closed', function() { + return self.change(); + }); + return this.$el.on('typeahead:blured', function() { + return self.change(); + }); + }; + + return WSF_AUTOCOMPLETE_CONTROL; + +})(WSF_INPUT_CONTROL); + +WSF_CHECKBOX_CONTROL = (function(_super) { + + __extends(WSF_CHECKBOX_CONTROL, _super); + + function WSF_CHECKBOX_CONTROL() { + return WSF_CHECKBOX_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_CHECKBOX_CONTROL.prototype.attach_events = function() { + var self; + WSF_CHECKBOX_CONTROL.__super__.attach_events.apply(this, arguments); + self = this; + this.checked_value = this.state['checked_value']; + return this.$el.change(function() { + return self.change(); + }); + }; + + WSF_CHECKBOX_CONTROL.prototype.change = function() { + this.state['checked'] = this.$el.is(':checked'); + if (this.state['callback_change']) { + this.trigger_callback(this.control_name, 'change'); + } + return this.trigger('change'); + }; + + WSF_CHECKBOX_CONTROL.prototype.value = function() { + return this.$el.is(':checked'); + }; + + WSF_CHECKBOX_CONTROL.prototype.update = function(state) { + if (state.text != null) { + this.state['checked'] = state.checked; + return this.$el.prop('checked', state.checked); + } + }; + + return WSF_CHECKBOX_CONTROL; + +})(WSF_CONTROL); + +WSF_FORM_ELEMENT_CONTROL = (function(_super) { + + __extends(WSF_FORM_ELEMENT_CONTROL, _super); + + function WSF_FORM_ELEMENT_CONTROL() { + return WSF_FORM_ELEMENT_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_FORM_ELEMENT_CONTROL.prototype.attach_events = function() { + var self, validator, validatorclass, _i, _len, _ref; + WSF_FORM_ELEMENT_CONTROL.__super__.attach_events.apply(this, arguments); + self = this; + this.value_control = this.controls[0]; + if (this.value_control != null) { + this.value_control.on('change', this.change, this); + } + this.serverside_validator = false; + this.validators = []; + _ref = this.state['validators']; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + validator = _ref[_i]; + try { + validatorclass = eval(validator.name); + this.validators.push(new validatorclass(this, validator)); + } catch (e) { + this.serverside_validator = true; + } + } + }; + + WSF_FORM_ELEMENT_CONTROL.prototype.change = function() { + var validator, _i, _len, _ref; + _ref = this.validators; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + validator = _ref[_i]; + if (!validator.validate()) { + this.showerror(validator.error); + return; + } + } + this.showerror(""); + if (this.serverside_validator) { + this.trigger_callback(this.control_name, 'validate'); + } + }; + + WSF_FORM_ELEMENT_CONTROL.prototype.showerror = function(message) { + var errordiv; + this.$el.removeClass("has-error"); + this.$el.find(".validation").remove(); + if (message.length > 0) { + this.$el.addClass("has-error"); + errordiv = $("
").addClass('help-block').addClass('validation').text(message); + return this.$el.find(".col-lg-10").append(errordiv); + } + }; + + WSF_FORM_ELEMENT_CONTROL.prototype.update = function(state) { + if (state.error != null) { + return this.showerror(state.error); + } + }; + + WSF_FORM_ELEMENT_CONTROL.prototype.value = function() { + return this.value_control.value(); + }; + + return WSF_FORM_ELEMENT_CONTROL; + +})(WSF_CONTROL); + +WSF_HTML_CONTROL = (function(_super) { + + __extends(WSF_HTML_CONTROL, _super); + + function WSF_HTML_CONTROL() { + return WSF_HTML_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_HTML_CONTROL.prototype.value = function() { + return this.$el.html(); + }; + + WSF_HTML_CONTROL.prototype.update = function(state) { + if (state.html != null) { + this.state['html'] = state.html; + return this.$el.html(state.html); + } + }; + + return WSF_HTML_CONTROL; + +})(WSF_CONTROL); + +WSF_CHECKBOX_LIST_CONTROL = (function(_super) { + + __extends(WSF_CHECKBOX_LIST_CONTROL, _super); + + function WSF_CHECKBOX_LIST_CONTROL() { + return WSF_CHECKBOX_LIST_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_CHECKBOX_LIST_CONTROL.prototype.attach_events = function() { + var control, _i, _len, _ref; + WSF_CHECKBOX_LIST_CONTROL.__super__.attach_events.apply(this, arguments); + _ref = this.controls; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + control = _ref[_i]; + control.on('change', this.change, this); + } + }; + + WSF_CHECKBOX_LIST_CONTROL.prototype.change = function() { + return this.trigger("change"); + }; + + WSF_CHECKBOX_LIST_CONTROL.prototype.value = function() { + var result, subc, _i, _len, _ref; + result = []; + _ref = this.controls; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + subc = _ref[_i]; + if (subc.value()) { + result.push(subc.checked_value); + } + } + return result; + }; + + return WSF_CHECKBOX_LIST_CONTROL; + +})(WSF_CONTROL); + +WSF_PROGRESS_CONTROL = (function(_super) { + + __extends(WSF_PROGRESS_CONTROL, _super); + + function WSF_PROGRESS_CONTROL() { + return WSF_PROGRESS_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_PROGRESS_CONTROL.prototype.attach_events = function() { + var runfetch, self; + WSF_PROGRESS_CONTROL.__super__.attach_events.apply(this, arguments); + self = this; + runfetch = function() { + return self.fetch(); + }; + return this.int = setInterval(runfetch, 5000); + }; + + WSF_PROGRESS_CONTROL.prototype.fetch = function() { + return this.trigger_callback(this.control_name, 'progress_fetch'); + }; + + WSF_PROGRESS_CONTROL.prototype.update = function(state) { + if (state.progress != null) { + this.state['progress'] = state.progress; + return this.$el.children('.progress-bar').attr('aria-valuenow', state.progress).width(state.progress + '%'); + } + }; + + WSF_PROGRESS_CONTROL.prototype.remove = function() { + clearInterval(this.int); + return WSF_PROGRESS_CONTROL.__super__.remove.apply(this, arguments); + }; + + return WSF_PROGRESS_CONTROL; + +})(WSF_CONTROL); + +WSF_PAGINATION_CONTROL = (function(_super) { + + __extends(WSF_PAGINATION_CONTROL, _super); + + function WSF_PAGINATION_CONTROL() { + return WSF_PAGINATION_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_PAGINATION_CONTROL.prototype.attach_events = function() { + var self; + self = this; + return this.$el.on('click', 'a', function(e) { + e.preventDefault(); + return self.click(e); + }); + }; + + WSF_PAGINATION_CONTROL.prototype.click = function(e) { + var nr; + nr = $(e.target).data('nr'); + if (nr === "next") { + return this.trigger_callback(this.control_name, "next"); + } else if (nr === "prev") { + return this.trigger_callback(this.control_name, "prev"); + } else { + return this.trigger_callback(this.control_name, "goto", nr); + } + }; + + WSF_PAGINATION_CONTROL.prototype.update = function(state) { + if (state._html != null) { + return this.$el.html($(state._html).html()); + } + }; + + return WSF_PAGINATION_CONTROL; + +})(WSF_CONTROL); + +WSF_GRID_CONTROL = (function(_super) { + + __extends(WSF_GRID_CONTROL, _super); + + function WSF_GRID_CONTROL() { + return WSF_GRID_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_GRID_CONTROL.prototype.attach_events = function() { + var self; + WSF_GRID_CONTROL.__super__.attach_events.apply(this, arguments); + return self = this; + }; + + WSF_GRID_CONTROL.prototype.update = function(state) { + if (state.datasource != null) { + this.state['datasource'] = state.datasource; + } + if (state._body != null) { + return this.$el.find('tbody').html(state._body); + } + }; + + return WSF_GRID_CONTROL; + +})(WSF_CONTROL); + +WSF_REPEATER_CONTROL = (function(_super) { + + __extends(WSF_REPEATER_CONTROL, _super); + + function WSF_REPEATER_CONTROL() { + return WSF_REPEATER_CONTROL.__super__.constructor.apply(this, arguments); + } + + WSF_REPEATER_CONTROL.prototype.attach_events = function() { + var self; + WSF_REPEATER_CONTROL.__super__.attach_events.apply(this, arguments); + return self = this; + }; + + WSF_REPEATER_CONTROL.prototype.update = function(state) { + if (state.datasource != null) { + this.state['datasource'] = state.datasource; + } + if (state._body != null) { + this.$el.find('.repeater_content').html(state._body); + return console.log(state._body); + } + }; + + return WSF_REPEATER_CONTROL; + +})(WSF_CONTROL); + +show_alert = function(action) { + return alert(action.message); +}; + +start_modal = lazy_load(['assets/bootstrap.min.js'], function(action) { + var cssclass, modal; + cssclass = ""; + if (action.type === "start_modal_big") { + cssclass = " big"; + } + modal = $("
\n
\n
\n
\n \n

" + action.title + "

\n
\n
\n \n
\n
\n
\n
"); + modal.appendTo('body'); + modal.modal('show'); + modal.on('hidden.bs.modal', function() { + $(modal.find('[data-name]').get().reverse()).each(function(i, value) { + $(value).data('control').remove(); }); }); + return $.get(action.url, { + ajax: 1 + }).done(function(data) { + return modal.find('.modal-body').append(data); + }); +}); - start_modal_big = start_modal; - -}).call(this); +start_modal_big = start_modal;