/
var
/
www
/
html
/
poli
/
lib
/
yui
/
src
/
dock
/
js
/
Upload File
HOME
/** * Dock JS. * * This file contains the tab height manager. * The tab height manager is responsible for ensure all tabs are visible all the time. * * @module moodle-core-dock */ /** * Tab height manager. * * @namespace M.core.dock * @class TabHeightManager * @constructor * @extends Base */ TABHEIGHTMANAGER = function() { TABHEIGHTMANAGER.superclass.constructor.apply(this, arguments); }; TABHEIGHTMANAGER.prototype = { /** * Initialises the dock sizer which then attaches itself to the required * events in order to monitor the dock * @method initializer */ initializer : function() { var dock = this.get('dock'); dock.on('dock:itemschanged', this.checkSizing, this); Y.on('windowresize', this.checkSizing, this); }, /** * Check if the size dock items needs to be adjusted * @method checkSizing */ checkSizing : function() { var dock = this.get('dock'), node = dock.get('dockNode'), items = dock.dockeditems, containermargin = parseInt(node.one('.dockeditem_container').getStyle('marginTop').replace('/[^0-9]+$/', ''), 10), dockheight = node.get('offsetHeight') - containermargin, controlheight = node.one('.controls').get('offsetHeight'), buffer = (dock.get('bufferPanel') * 3), possibleheight = dockheight - controlheight - buffer - (items.length*2), totalheight = 0, id, dockedtitle; if (items.length > 0) { for (id in items) { if (Y.Lang.isNumber(id) || Y.Lang.isString(id)) { dockedtitle = Y.one(items[id].get('title')).ancestor('.'+CSS.dockedtitle); if (dockedtitle) { if (this.get('enabled')) { dockedtitle.setStyle('height', 'auto'); } totalheight += dockedtitle.get('offsetHeight') || 0; } } } if (totalheight > possibleheight) { this.enable(possibleheight); } } }, /** * Enables the dock sizer and resizes where required. * @method enable * @param {Number} possibleheight */ enable : function(possibleheight) { var dock = this.get('dock'), items = dock.dockeditems, count = dock.count, runningcount = 0, usedheight = 0, id, itemtitle, itemheight, offsetheight; Y.log('Enabling the dock tab sizer.', 'debug', LOGNS); this.set('enabled', true); for (id in items) { if (Y.Lang.isNumber(id) || Y.Lang.isString(id)) { itemtitle = Y.one(items[id].get('title')).ancestor('.'+CSS.dockedtitle); if (!itemtitle) { continue; } itemheight = Math.floor((possibleheight-usedheight) / (count - runningcount)); offsetheight = itemtitle.get('offsetHeight'); itemtitle.setStyle('overflow', 'hidden'); if (offsetheight > itemheight) { itemtitle.setStyle('height', itemheight+'px'); usedheight += itemheight; } else { usedheight += offsetheight; } runningcount++; } } } }; Y.extend(TABHEIGHTMANAGER, Y.Base, TABHEIGHTMANAGER.prototype, { NAME : 'moodle-core-tabheightmanager', ATTRS : { /** * The dock. * @attribute dock * @type DOCK * @writeOnce */ dock : { writeOnce : 'initOnly' }, /** * True if the item_sizer is being used, false otherwise. * @attribute enabled * @type Bool */ enabled : { value : false } } });