src/js/widgets.js
changeset 998 9521347ede1d
parent 997 1615c7e4ef9d
child 999 7130fcc8ce9c
--- a/src/js/widgets.js	Tue Apr 23 15:23:20 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/* Definition of an ancestor for the Widget classes */
-
-if (typeof IriSP.Widgets === "undefined") {
-    IriSP.Widgets = {}
-}
-
-/**
- * @class IriSP.Widget is an "abstract" class. It's mostly used to define some properties common to every widget.
- *
- *  Note that widget constructors are never called directly by the user. Instead, the widgets are instantiated by functions
- *  defined in init.js
- *
- * @constructor
- * @param player - a reference to the player widget
- * @param config - configuration options for the widget
- */
-
-
-IriSP.Widgets.Widget = function(player, config) {
-    
-    if( typeof player === "undefined") {
-        /* Probably an abstract call of the class when
-         * individual widgets set their prototype */
-        return;
-    }
-    
-    this.__subwidgets = [];
-    
-    /* Setting all the configuration options */
-    var _type = config.type,
-        _config = IriSP._.defaults({}, config, player.config.default_options, this.defaults),
-        _this = this;
-    
-    IriSP._(_config).forEach(function(_value, _key) {
-       _this[_key] = _value;
-    });
-    
-    this.$ = IriSP.jQuery('#' + this.container);
-    
-    if (typeof this.width === "undefined") {
-        this.width = this.$.width();
-    } else {
-        this.$.css("width", this.width);
-    }
-    
-    if (typeof this.height !== "undefined") {
-        this.$.css("height", this.height);
-    }
-    
-    /* Setting this.player at the end in case it's been overriden
-     * by a configuration option of the same name :-(
-     */
-    this.player = player;
-    
-    /* Adding classes and html attributes */
-    this.$.addClass("Ldt-TraceMe Ldt-Widget").attr("widget-type", _type);
-    
-    this.l10n = (
-        typeof this.messages[IriSP.language] !== "undefined"
-        ? this.messages[IriSP.language]
-        : (
-            IriSP.language.length > 2 && typeof this.messages[IriSP.language.substr(0,2)] !== "undefined"
-            ? this.messages[IriSP.language.substr(0,2)]
-            : this.messages["en"]
-        )
-    );
-    
-    /* Loading Metadata if required */
-    
-    if (this.metadata) {
-        /* Getting metadata */
-        this.source = player.loadMetadata(this.metadata);
-        
-        /* Call draw when loaded */
-        this.source.onLoad(function() {
-            if (_this.media_id) {
-                _this.media = this.getElement(_this.media_id);
-            } else {
-                var _mediaopts = {
-                    is_mashup: _this.is_mashup || false
-                }
-                _this.media = this.getCurrentMedia(_mediaopts);
-            }
-            
-            _this.draw();
-            player.trigger("widget-loaded");
-        });
-    } else {
-        this.draw();
-    }
-    
-    
-};
-
-IriSP.Widgets.Widget.prototype.defaults = {}
-
-IriSP.Widgets.Widget.prototype.template = '';
-
-IriSP.Widgets.Widget.prototype.messages = {"en":{}};
-
-IriSP.Widgets.Widget.prototype.templateToHtml = function(_template) {
-    return Mustache.to_html(_template, this);
-}
-
-IriSP.Widgets.Widget.prototype.renderTemplate = function() {
-    this.$.append(this.templateToHtml(this.template));
-}
-
-IriSP.Widgets.Widget.prototype.functionWrapper = function(_name) {
-    var _this = this,
-        _function = this[_name];
-    if (typeof _function !== "undefined") {
-        return function() {
-            return _function.apply(_this, Array.prototype.slice.call(arguments, 0));
-        }
-    } else {
-        console.log("Error, Unknown function IriSP.Widgets." + this.type + "." + _name)
-    }
-}
-
-IriSP.Widgets.Widget.prototype.getFunctionOrName = function(_functionOrName) {
-    switch (typeof _functionOrName) {
-        case "function":
-            return _functionOrName;
-        case "string":
-            return this.functionWrapper(_functionOrName);
-        default:
-            return undefined;
-    }
-}
-
-IriSP.Widgets.Widget.prototype.onMdpEvent = function(_eventName, _functionOrName) {
-    this.player.on(_eventName, this.getFunctionOrName(_functionOrName));
-}
-
-IriSP.Widgets.Widget.prototype.onMediaEvent = function(_eventName, _functionOrName) {
-    this.media.on(_eventName, this.getFunctionOrName(_functionOrName));
-}
-
-IriSP.Widgets.Widget.prototype.getWidgetAnnotations = function() {
-    if (typeof this.annotation_type === "undefined") {
-        return this.media.getAnnotations();
-    }
-    if (this.annotation_type.elementType === "annotationType") {
-        return this.annotation_type.getAnnotations();
-    }
-    return this.media.getAnnotationsByTypeTitle(this.annotation_type);
-}
-
-IriSP.Widgets.Widget.prototype.getWidgetAnnotationsAtTime = function() {
-    var _time = this.media.getCurrentTime();
-    return this.getWidgetAnnotations().filter(function(_annotation) {
-        return _annotation.begin <= _time && _annotation.end > _time;
-    });
-}
-
-IriSP.Widgets.Widget.prototype.isLoaded = function() {
-    var isloaded = !IriSP._(this.__subwidgets).any(function(w) {
-        return !(w && w.isLoaded());
-    });
-    return isloaded;
-}
-
-IriSP.Widgets.Widget.prototype.insertSubwidget = function(_selector, _widgetoptions, _propname) {
-    var _id = _selector.attr("id"),
-        _this = this,
-        _type = _widgetoptions.type,
-        $L = $LAB,
-        key = this.__subwidgets.length;
-    this.__subwidgets.push(null);
-    if (typeof _id == "undefined") {
-        _id = IriSP._.uniqueId(this.container + '_sub_widget_' + _widgetoptions.type);
-        _selector.attr("id", _id);
-    }
-    _widgetoptions.container = _id;
-    if (typeof IriSP.widgetsRequirements[_type] !== "undefined" && typeof IriSP.widgetsRequirements[_type].requires !== "undefined" ) {
-        for (var _j = 0; _j < IriSP.widgetsRequirements[_type].requires.length; _j++) {
-            $L.script(IriSP.getLib(IriSP.widgetsRequirements[_type].requires[_j]));
-        }
-    }
-    $L.wait(function() {
-        _this.player.loadWidget(_widgetoptions, function(_widget) {
-            if (_propname) {
-                _this[_propname] = _widget;
-            }
-            _this.__subwidgets[key] = _widget;
-        });
-    });
-}
-
-/**
- * This method responsible of drawing a widget on screen.
- */
-IriSP.Widgets.Widget.prototype.draw = function() {
-    /* implemented by "sub-classes" */
-};
\ No newline at end of file