diff -r 322d0feea350 -r 89ef5ed3c48b src/cm/media/js/lib/yui/yui_3.10.3/build/datatable-message/datatable-message-debug.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.10.3/build/datatable-message/datatable-message-debug.js Tue Jul 16 14:29:46 2013 +0200 @@ -0,0 +1,297 @@ +/* +YUI 3.10.3 (build 2fb5187) +Copyright 2013 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ + +YUI.add('datatable-message', function (Y, NAME) { + +/** +Adds support for a message container to appear in the table. This can be used +to indicate loading progress, lack of records, or any other communication +needed. + +@module datatable +@submodule datatable-message +@since 3.5.0 +**/ +var Message; + +/** +_API docs for this extension are included in the DataTable class._ + +Adds support for a message container to appear in the table. This can be used +to indicate loading progress, lack of records, or any other communication +needed. + +Features added to `Y.DataTable`, and made available for custom classes at +`Y.DataTable.Message`. + +@class DataTable.Message +@for DataTable +@since 3.5.0 +**/ +Y.namespace('DataTable').Message = Message = function () {}; + +Message.ATTRS = { + /** + Enables the display of messages in the table. Setting this to false will + prevent the message Node from being created and `showMessage` from doing + anything. + + @attribute showMessages + @type {Boolean} + @default true + @since 3.5.0 + **/ + showMessages: { + value: true, + validator: Y.Lang.isBoolean + } +}; + +Y.mix(Message.prototype, { + /** + Template used to generate the node that will be used to report messages. + + @property MESSAGE_TEMPLATE + @type {HTML} + @default + @since 3.5.0 + **/ + MESSAGE_TEMPLATE: '', + + /** + Hides the message node. + + @method hideMessage + @return {DataTable} + @chainable + @since 3.5.0 + **/ + hideMessage: function () { + this.get('boundingBox').removeClass( + this.getClassName('message', 'visible')); + + return this; + }, + + /** + Display the message node and set its content to `message`. If there is a + localized `strings` entry for the value of `message`, that string will be + used. + + @method showMessage + @param {String} message The message name or message itself to display + @return {DataTable} + @chainable + @since 3.5.0 + **/ + showMessage: function (message) { + var content = this.getString(message) || message; + + if (!this._messageNode) { + this._initMessageNode(); + } + + if (this.get('showMessages')) { + if (content) { + this._messageNode.one( + '.' + this.getClassName('message', 'content')) + .setHTML(content); + + this.get('boundingBox').addClass( + this.getClassName('message','visible')); + } else { + // TODO: is this right? + // If no message provided, remove the message node. + this.hideMessage(); + } + } + + return this; + }, + + //-------------------------------------------------------------------------- + // Protected methods + //-------------------------------------------------------------------------- + /** + Updates the colspan of the `` used to display the messages. + + @method _afterMessageColumnsChange + @param {EventFacade} e The columnsChange event + @protected + @since 3.5.0 + **/ + _afterMessageColumnsChange: function () { + var contentNode; + + if (this._messageNode) { + contentNode = this._messageNode.one( + '.' + this.getClassName('message', 'content')); + + if (contentNode) { + // FIXME: This needs to become a class extension plus a view or + // plugin for the table view. + contentNode.set('colSpan', this._displayColumns.length); + } + } + }, + + /** + Relays to `_uiSetMessage` to hide or show the message node. + + @method _afterMessageDataChange + @param {EventFacade} e The dataChange event + @protected + @since 3.5.0 + **/ + _afterMessageDataChange: function () { + this._uiSetMessage(); + }, + + /** + Removes the message node if `showMessages` is `false`, or relays to + `_uiSetMessage` if `true`. + + @method _afterShowMessagesChange + @param {EventFacade} e The showMessagesChange event + @protected + @since 3.5.0 + **/ + _afterShowMessagesChange: function (e) { + if (e.newVal) { + this._uiSetMessage(e); + } else if (this._messageNode) { + this.get('boundingBox').removeClass( + this.getClassName('message', 'visible')); + + this._messageNode.remove().destroy(true); + this._messageNode = null; + } + }, + + /** + Binds the events necessary to keep the message node in sync with the current + table and configuration state. + + @method _bindMessageUI + @protected + @since 3.5.0 + **/ + _bindMessageUI: function () { + this.after(['dataChange', '*:add', '*:remove', '*:reset'], + Y.bind('_afterMessageDataChange', this)); + + this.after('columnsChange', Y.bind('_afterMessageColumnsChange', this)); + + this.after('showMessagesChange', + Y.bind('_afterShowMessagesChange', this)); + }, + + /** + Merges in the message related strings and hooks into the rendering cycle to + also render and bind the message node. + + @method initializer + @protected + @since 3.5.0 + **/ + initializer: function () { + this._initMessageStrings(); + + if (this.get('showMessages')) { + this.after('table:renderBody', Y.bind('_initMessageNode', this)); + } + + this.after(Y.bind('_bindMessageUI', this), this, 'bindUI'); + this.after(Y.bind('_syncMessageUI', this), this, 'syncUI'); + }, + + /** + Creates the `_messageNode` property from the configured `MESSAGE_TEMPLATE` + and inserts it before the ``'s `` node. + + @method _initMessageNode + @protected + @since 3.5.0 + **/ + _initMessageNode: function () { + if (!this._messageNode) { + this._messageNode = Y.Node.create( + Y.Lang.sub(this.MESSAGE_TEMPLATE, { + className: this.getClassName('message'), + contentClass: this.getClassName('message', 'content'), + colspan: this._displayColumns.length || 1 + })); + + this._tableNode.insertBefore(this._messageNode, this._tbodyNode); + } + }, + + /** + Add the messaging related strings to the `strings` map. + + @method _initMessageStrings + @protected + @since 3.5.0 + **/ + _initMessageStrings: function () { + // Not a valueFn because other class extensions will want to add to it + this.set('strings', Y.mix((this.get('strings') || {}), + Y.Intl.get('datatable-message'))); + }, + + /** + Node used to display messages from `showMessage`. + + @property _messageNode + @type {Node} + @value `undefined` (not initially set) + @since 3.5.0 + **/ + //_messageNode: null, + + /** + Synchronizes the message UI with the table state. + + @method _syncMessageUI + @protected + @since 3.5.0 + **/ + _syncMessageUI: function () { + this._uiSetMessage(); + }, + + /** + Calls `hideMessage` or `showMessage` as appropriate based on the presence of + records in the `data` ModelList. + + This is called when `data` is reset or records are added or removed. Also, + if the `showMessages` attribute is updated. In either case, if the + triggering event has a `message` property on the EventFacade, it will be + passed to `showMessage` (if appropriate). If no such property is on the + facade, the `emptyMessage` will be used (see the strings). + + @method _uiSetMessage + @param {EventFacade} e The columnsChange event + @protected + @since 3.5.0 + **/ + _uiSetMessage: function (e) { + if (!this.data.size()) { + this.showMessage((e && e.message) || 'emptyMessage'); + } else { + this.hideMessage(); + } + } +}); + + +if (Y.Lang.isFunction(Y.DataTable)) { + Y.Base.mix(Y.DataTable, [ Message ]); +} + + +}, '3.10.3', {"requires": ["datatable-base"], "lang": ["en", "fr", "es", "it"], "skinnable": true});