separate templates from static files
[myslice.git] / manifold / js / plugin.js
diff --git a/manifold/js/plugin.js b/manifold/js/plugin.js
deleted file mode 100644 (file)
index f392961..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-// INHERITANCE
-// http://alexsexton.com/blog/2010/02/using-inheritance-patterns-to-organize-large-jquery-applications/
-// We will use John Resig's proposal
-
-// http://pastie.org/517177
-
-// NOTE: missing a destroy function
-
-$.plugin = function(name, object) {
-    $.fn[name] = function(options) {
-        var args = Array.prototype.slice.call(arguments, 1);
-        return this.each(function() {
-            var instance = $.data(this, name);
-            if (instance) {
-                instance[options].apply(instance, args);
-            } else {
-                instance = $.data(this, name, new object(options, this));
-            }
-        });
-    };
-};
-
-var Plugin = Class.extend({
-
-    init: function(options, element) {
-        // Mix in the passed in options with the default options
-        this.options = $.extend({}, this.default_options, options);
-
-        // Save the element reference, both as a jQuery
-        // reference and a normal reference
-        this.element  = element;
-        this.$element = $(element);
-
-        // return this so we can chain/use the bridge with less code.
-        return this;
-    },
-
-    has_query_handler: function() {
-        return (typeof this.on_filter_added === 'function');
-    },
-
-    _query_handler: function(prefix, event_type, data) {
-        // We suppose this.query_handler_prefix has been defined if this
-        // callback is triggered    
-        var fn;
-        switch(event_type) {
-        case FILTER_ADDED:
-            fn = 'filter_added';
-            break;
-        case FILTER_REMOVED:
-            fn = 'filter_removed';
-            break;
-        case CLEAR_FILTERS:
-            fn = 'filter_clear';
-            break;
-        case FIELD_ADDED:
-            fn = 'field_added';
-            break;
-        case FIELD_REMOVED:
-            fn = 'field_removed';
-            break;
-        case CLEAR_FIELDS:
-            fn = 'field_clear';
-            break;
-        default:
-            return;
-        } // switch
-        
-        fn = 'on_' + prefix + fn;
-        if (typeof this[fn] === 'function') {
-            // call with data as parameter
-            // XXX implement anti loop
-            this[fn](data);
-        }
-    },
-
-    _record_handler: function(prefix, event_type, record) {
-        // We suppose this.query_handler_prefix has been defined if this
-        // callback is triggered    
-        var fn;
-        switch(event_type) {
-        case NEW_RECORD:
-            fn = 'new_record';
-            break;
-        case CLEAR_RECORDS:
-            fn = 'clear_records';
-            break;
-        case IN_PROGRESS:
-            fn = 'query_in_progress';
-            break;
-        case DONE:
-            fn = 'query_done';
-            break;
-        case FIELD_STATE_CHANGED:
-            fn = 'field_state_changed';
-            break;
-        default:
-            return;
-        } // switch
-        
-        fn = 'on_' + prefix + fn;
-        if (typeof this[fn] === 'function') {
-            // call with data as parameter
-            // XXX implement anti loop
-            this[fn](record);
-        }
-    },
-
-    get_handler_function: function(type, prefix) {
-        
-        return $.proxy(function(e, event_type, record) {
-            return this['_' + type + '_handler'](prefix, event_type, record);
-        }, this);
-    },
-
-    listen_query: function(query_uuid, prefix) {
-        // default: prefix = ''
-        prefix = (typeof prefix === 'undefined') ? '' : (prefix + '_');
-
-        this.$element.on(manifold.get_channel('query', query_uuid),  this.get_handler_function('query',  prefix));
-        this.$element.on(manifold.get_channel('record', query_uuid),  this.get_handler_function('record', prefix));
-    },
-
-    default_options: {},
-
-    /* Helper functions for naming HTML elements (ID, classes), with support for filters and fields */
-
-    id: function() {
-        var ret = this.options.plugin_uuid;
-        for (var i = 0; i < arguments.length; i++) {
-            ret = ret + manifold.separator + arguments[i];
-        }
-        return ret;
-    },
-
-    elmt: function() {
-        if (arguments.length == 0) {
-            return $('#' + this.id());
-        } else {
-            // We make sure to search _inside_ the dom tag of the plugin
-            return $('#' + this.id.apply(this, arguments), this.elmt());
-        }
-    },
-
-    elts: function(cls) {
-        return $('.' + cls, this.elmt());
-    },
-
-    id_from_filter: function(filter, use_value) {
-        use_value = typeof use_value !== 'undefined' ? use_value : true;
-
-        var key    = filter[0];
-        var op     = filter[1];
-        var value  = filter[2];
-        var op_str = this.getOperatorLabel(op);
-        var s      = manifold.separator;
-
-        if (use_value) {
-            return 'filter' + s + key + s + op_str + s + value;
-        } else {
-            return 'filter' + s + key + s + op_str;
-        }
-    },
-
-    str_from_filter: function(filter) {
-        return filter[0] + ' ' + filter[1] + ' ' + filter[2];
-    },
-
-    array_from_id: function(id) {
-        var ret = id.split(manifold.separator);
-        ret.shift(); // remove plugin_uuid at the beginning
-        return ret;
-    },
-
-    id_from_field: function(field) {
-        return 'field' + manifold.separator + field;
-    },
-
-    field_from_id: function(id) {
-        var array;
-        if (typeof id === 'string') {
-            array = id.split(manifold.separator);
-        } else { // We suppose we have an array ('object')
-            array = id;
-        }
-        // array = ['field', FIELD_NAME]
-        return array[1];
-    },
-
-    id_from_key: function(key_field, value) {
-        
-        return key_field + manifold.separator + unfold.escape_id(value).replace(/\\/g, '');
-    },
-
-    id_from_record: function(method, record) {
-        var keys = manifold.metadata.get_key(method);
-        if (!keys)
-            return;
-        if (keys.length > 1)
-            return;
-
-        var key = keys[0];
-        switch (Object.toType(key)) {
-        case 'string':
-            if (!(key in record))
-                return null;
-            return this.id_from_key(key, record[key]);
-           
-        default:
-            throw 'Not implemented';
-        }
-    },
-
-    key_from_id: function(id) {
-        // NOTE this works only for simple keys
-
-        var array;
-        if (typeof id === 'string') {
-            array = id.split(manifold.separator);
-        } else { // We suppose we have an array ('object')
-            array = id;
-        }
-
-        // arguments has the initial id but lacks the key field name (see id_from_key), so we are even
-        // we finally add +1 for the plugin_uuid at the beginning
-        return array[arguments.length + 1];
-    },
-
-    /* SPIN */
-
-    spin: function() {
-        manifold.spin(this.element);
-    },
-
-    unspin: function() {
-        manifold.spin(this.element, false);
-    },
-
-    /* TEMPLATE */
-
-    load_template: function(name, ctx) {
-        return Mustache.render(this.elmt(name).html(), ctx);
-    },
-
-});