tabview.js

来自「国外很不错的一个开源OA系统Group-Office」· JavaScript 代码 · 共 1,950 行 · 第 1/4 页

JS
1,950
字号
/*Copyright (c) 2006, Yahoo! Inc. All rights reserved.Code licensed under the BSD License:http://developer.yahoo.net/yui/license.txtversion: 0.12.0*/(function() {    YAHOO.util.Lang = {        isArray: function(val) { // frames lose type, so test constructor string            if (val.constructor && val.constructor.toString().indexOf('Array') > -1) {                return true;            } else {                return YAHOO.util.Lang.isObject(val) && val.constructor == Array;            }        },        isBoolean: function(val) {            return typeof val == 'boolean';        },        isFunction: function(val) {            return typeof val == 'function';        },        isNull: function(val) {            return val === null;        },        isNumber: function(val) {            return !isNaN(val);        },        isObject: function(val) {            return typeof val == 'object' || YAHOO.util.Lang.isFunction(val);        },        isString: function(val) {            return typeof val == 'string';        },        isUndefined: function(val) {            return typeof val == 'undefined';        }    };})();/** * Provides Attribute configurations. * @namespace YAHOO.util * @class Attribute * @constructor * @param hash {Object} The intial Attribute. * @param {YAHOO.util.AttributeProvider} The owner of the Attribute instance. */YAHOO.util.Attribute = function(hash, owner) {    if (owner) {        this.owner = owner;        this.configure(hash, true);    }};YAHOO.util.Attribute.prototype = {	/**     * The name of the attribute.	 * @property name	 * @type String	 */    name: undefined,	/**     * The value of the attribute.	 * @property value	 * @type String	 */    value: null,	/**     * The owner of the attribute.	 * @property owner	 * @type YAHOO.util.AttributeProvider	 */    owner: null,	/**     * Whether or not the attribute is read only.	 * @property readOnly	 * @type Boolean	 */    readOnly: false,	/**     * Whether or not the attribute can only be written once.	 * @property writeOnce	 * @type Boolean	 */    writeOnce: false,	/**     * The attribute's initial configuration.     * @private	 * @property _initialConfig	 * @type Object	 */    _initialConfig: null,	/**     * Whether or not the attribute's value has been set.     * @private	 * @property _written	 * @type Boolean	 */    _written: false,	/**     * The method to use when setting the attribute's value.     * The method recieves the new value as the only argument.	 * @property method	 * @type Function	 */    method: null,	/**     * The validator to use when setting the attribute's value.	 * @property validator	 * @type Function     * @return Boolean	 */    validator: null,    /**     * Retrieves the current value of the attribute.     * @method getValue     * @return {any} The current value of the attribute.     */    getValue: function() {        return this.value;    },    /**     * Sets the value of the attribute and fires beforeChange and change events.     * @method setValue     * @param {Any} value The value to apply to the attribute.     * @param {Boolean} silent If true the change events will not be fired.     * @return {Boolean} Whether or not the value was set.     */    setValue: function(value, silent) {        var beforeRetVal;        var owner = this.owner;        var name = this.name;        var event = {            type: name,            prevValue: this.getValue(),            newValue: value        };        if (this.readOnly || ( this.writeOnce && this._written) ) {            return false; // write not allowed        }        if (this.validator && !this.validator.call(owner, value) ) {            return false; // invalid value        }        if (!silent) {            beforeRetVal = owner.fireBeforeChangeEvent(event);            if (beforeRetVal === false) {                YAHOO.log('setValue ' + name +                        'cancelled by beforeChange event', 'info', 'Attribute');                return false;            }        }        if (this.method) {            this.method.call(owner, value);        }        this.value = value;        this._written = true;        event.type = name;        if (!silent) {            this.owner.fireChangeEvent(event);        }        return true;    },    /**     * Allows for configuring the Attribute's properties.     * @method configure     * @param {Object} map A key-value map of Attribute properties.     * @param {Boolean} init Whether or not this should become the initial config.     */    configure: function(map, init) {        map = map || {};        this._written = false; // reset writeOnce        this._initialConfig = this._initialConfig || {};        for (var key in map) {            if ( key && map.hasOwnProperty(key) ) {                this[key] = map[key];                if (init) {                    this._initialConfig[key] = map[key];                }            }        }    },    /**     * Resets the value to the initial config value.     * @method resetValue     * @return {Boolean} Whether or not the value was set.     */    resetValue: function() {        return this.setValue(this._initialConfig.value);    },    /**     * Resets the attribute config to the initial config state.     * @method resetConfig     */    resetConfig: function() {        this.configure(this._initialConfig);    },    /**     * Resets the value to the current value.     * Useful when values may have gotten out of sync with actual properties.     * @method refresh     * @return {Boolean} Whether or not the value was set.     */    refresh: function(silent) {        this.setValue(this.value, silent);    }};(function() {    var Lang = YAHOO.util.Lang;    /*    Copyright (c) 2006, Yahoo! Inc. All rights reserved.    Code licensed under the BSD License:    http://developer.yahoo.net/yui/license.txt    */    /**     * Provides and manages YAHOO.util.Attribute instances     * @namespace YAHOO.util     * @class AttributeProvider     * @uses YAHOO.util.EventProvider     */    YAHOO.util.AttributeProvider = function() {};    YAHOO.util.AttributeProvider.prototype = {        /**         * A key-value map of Attribute configurations         * @property _configs         * @protected (may be used by subclasses and augmentors)         * @private         * @type {Object}         */        _configs: null,        /**         * Returns the current value of the attribute.         * @method get         * @param {String} key The attribute whose value will be returned.         */        get: function(key){            var configs = this._configs || {};            var config = configs[key];            if (!config) {                YAHOO.log(key + ' not found', 'error', 'AttributeProvider');                return undefined;            }            return config.value;        },        /**         * Sets the value of a config.         * @method set         * @param {String} key The name of the attribute         * @param {Any} value The value to apply to the attribute         * @param {Boolean} silent Whether or not to suppress change events         * @return {Boolean} Whether or not the value was set.         */        set: function(key, value, silent){            var configs = this._configs || {};            var config = configs[key];            if (!config) {                YAHOO.log('set failed: ' + key + ' not found',                        'error', 'AttributeProvider');                return false;            }            return config.setValue(value, silent);        },        /**         * Returns an array of attribute names.         * @method getAttributeKeys         * @return {Array} An array of attribute names.         */        getAttributeKeys: function(){            var configs = this._configs;            var keys = [];            var config;            for (var key in configs) {                config = configs[key];                if ( configs.hasOwnProperty(key) &&                        !Lang.isUndefined(config) ) {                    keys[keys.length] = key;                }            }            return keys;        },        /**         * Sets multiple attribute values.         * @method setAttributes         * @param {Object} map  A key-value map of attributes         * @param {Boolean} silent Whether or not to suppress change events         */        setAttributes: function(map, silent){            for (var key in map) {                if ( map.hasOwnProperty(key) ) {                    this.set(key, map[key], silent);                }            }        },        /**         * Resets the specified attribute's value to its initial value.         * @method resetValue         * @param {String} key The name of the attribute         * @param {Boolean} silent Whether or not to suppress change events         * @return {Boolean} Whether or not the value was set         */        resetValue: function(key, silent){            var configs = this._configs || {};            if (configs[key]) {                this.set(key, configs[key]._initialConfig.value, silent);                return true;            }            return false;        },        /**         * Sets the attribute's value to its current value.         * @method refresh         * @param {String | Array} key The attribute(s) to refresh         * @param {Boolean} silent Whether or not to suppress change events         */        refresh: function(key, silent){            var configs = this._configs;            key = ( ( Lang.isString(key) ) ? [key] : key ) ||                    this.getAttributeKeys();            for (var i = 0, len = key.length; i < len; ++i) {                if ( // only set if there is a value and not null                    configs[key[i]] &&                    ! Lang.isUndefined(configs[key[i]].value) &&                    ! Lang.isNull(configs[key[i]].value) ) {                    configs[key[i]].refresh(silent);                }            }        },        /**         * Adds an Attribute to the AttributeProvider instance.         * @method register         * @param {String} key The attribute's name         * @param {Object} map A key-value map containing the         * attribute's properties.         */        register: function(key, map) {            this._configs = this._configs || {};            if (this._configs[key]) { // dont override                return false;            }            map.name = key;            this._configs[key] = new YAHOO.util.Attribute(map, this);            return true;        },        /**         * Returns the attribute's properties.         * @method getAttributeConfig         * @param {String} key The attribute's name         * @private         * @return {object} A key-value map containing all of the         * attribute's properties.         */        getAttributeConfig: function(key) {            var configs = this._configs || {};            var config = configs[key] || {};            var map = {}; // returning a copy to prevent overrides            for (key in config) {                if ( config.hasOwnProperty(key) ) {                    map[key] = config[key];                }            }            return map;        },        /**         * Sets or updates an Attribute instance's properties.         * @method configureAttribute         * @param {String} key The attribute's name.         * @param {Object} map A key-value map of attribute properties         * @param {Boolean} init Whether or not this should become the intial config.         */        configureAttribute: function(key, map, init) {            var configs = this._configs || {};            if (!configs[key]) {                YAHOO.log('unable to configure, ' + key + ' not found',                        'error', 'AttributeProvider');                return false;            }            configs[key].configure(map, init);        },        /**         * Resets an attribute to its intial configuration.         * @method resetAttributeConfig         * @param {String} key The attribute's name.         * @private         */        resetAttributeConfig: function(key){            var configs = this._configs || {};            configs[key].resetConfig();        },        /**         * Fires the attribute's beforeChange event.         * @method fireBeforeChangeEvent         * @param {String} key The attribute's name.         * @param {Obj} e The event object to pass to handlers.         */        fireBeforeChangeEvent: function(e) {            var type = 'before';            type += e.type.charAt(0).toUpperCase() + e.type.substr(1) + 'Change';            e.type = type;            return this.fireEvent(e.type, e);        },        /**         * Fires the attribute's change event.         * @method fireChangeEvent         * @param {String} key The attribute's name.         * @param {Obj} e The event object to pass to the handlers.         */        fireChangeEvent: function(e) {            e.type += 'Change';            return this.fireEvent(e.type, e);        }    };    YAHOO.augment(YAHOO.util.AttributeProvider, YAHOO.util.EventProvider);})();(function() {// internal shorthandvar Dom = YAHOO.util.Dom,    Lang = YAHOO.util.Lang,    EventPublisher = YAHOO.util.EventPublisher,    AttributeProvider = YAHOO.util.AttributeProvider;/** * Element provides an interface to an HTMLElement's attributes and common * methods.  Other commonly used attributes are added as well. * @namespace YAHOO.util * @class Element * @uses YAHOO.util.AttributeProvider * @constructor * @param el {HTMLElement | String} The html element that * represents the Element. * @param {Object} map A key-value map of initial config names and values */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?