src/cm/media/js/lib/yui/yui_3.0.0b1/build/datasource/datasource-function.js
changeset 0 40c8f766c9b8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/media/js/lib/yui/yui_3.0.0b1/build/datasource/datasource-function.js	Mon Nov 23 15:14:29 2009 +0100
@@ -0,0 +1,109 @@
+/*
+Copyright (c) 2009, Yahoo! Inc. All rights reserved.
+Code licensed under the BSD License:
+http://developer.yahoo.net/yui/license.txt
+version: 3.0.0b1
+build: 1163
+*/
+YUI.add('datasource-function', function(Y) {
+
+/**
+ * Provides a DataSource implementation which can be used to retrieve data from a custom function.
+ *
+ * @module datasource
+ * @submodule datasource-function
+ */
+
+/**
+ * Function subclass for the DataSource Utility.
+ * @class DataSource.Function
+ * @extends DataSource.Local
+ * @constructor
+ */    
+var LANG = Y.Lang,
+
+    DSFn = function() {
+        DSFn.superclass.constructor.apply(this, arguments);
+    };
+    
+
+    /////////////////////////////////////////////////////////////////////////////
+    //
+    // DataSource.Function static properties
+    //
+    /////////////////////////////////////////////////////////////////////////////
+Y.mix(DSFn, {
+    /**
+     * Class name.
+     *
+     * @property NAME
+     * @type String
+     * @static     
+     * @final
+     * @value "dataSourceFunction"
+     */
+    NAME: "dataSourceFunction",
+
+
+    /////////////////////////////////////////////////////////////////////////////
+    //
+    // DataSource.Function Attributes
+    //
+    /////////////////////////////////////////////////////////////////////////////
+
+    ATTRS: {
+        /**
+        * @attribute source
+        * @description Pointer to live data.
+        * @type MIXED
+        * @default null
+        */
+        source: {
+            validator: LANG.isFunction
+        }
+    }
+});
+    
+Y.extend(DSFn, Y.DataSource.Local, {
+    /**
+     * Passes query string to IO. Fires <code>response</code> event when
+     * response is received asynchronously.
+     *
+     * @method _defRequestFn
+     * @param e {Event.Facade} Event Facade with the following properties:
+     * <dl>
+     * <dt>tId (Number)</dt> <dd>Unique transaction ID.</dd>
+     * <dt>request (Object)</dt> <dd>The request.</dd>
+     * <dt>callback (Object)</dt> <dd>The callback object with the following properties:
+     *     <dl>
+     *         <dt>success (Function)</dt> <dd>Success handler.</dd>
+     *         <dt>failure (Function)</dt> <dd>Failure handler.</dd>
+     *     </dl>
+     * </dd>
+     * <dt>cfg (Object)</dt> <dd>Configuration object.</dd>
+     * </dl>
+     * @protected
+     */
+    _defRequestFn: function(e) {
+        var fn = this.get("source"),
+            response;
+            
+            if(fn) {
+                response = fn(e.request, this, e);
+                this.fire("data", Y.mix({data:response}, e));
+            }
+            else {
+                e.error = new Error("Function data failure");
+                this.fire("error", e);
+            }
+            
+        return e.tId;
+    }
+});
+  
+Y.DataSource.Function = DSFn;
+    
+
+
+
+}, '3.0.0b1' ,{requires:['datasource-local']});