author | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2012-03-17 21:08:23 (UTC) |
---|---|---|
committer | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2012-03-17 21:08:23 (UTC) |
commit | 928f3f3ed3981f7f81b69ed94f2a315205db39fa (patch) (side-by-side diff) | |
tree | 8a47229b56e4c906de8512baf0c5ca100bc03dfb /frontend/gamma/js/MochiKit/Visual.js | |
parent | bf7d8191a3a6dbd092a88911098a3e7f6cf30cf7 (diff) | |
download | clipperz-928f3f3ed3981f7f81b69ed94f2a315205db39fa.zip clipperz-928f3f3ed3981f7f81b69ed94f2a315205db39fa.tar.gz clipperz-928f3f3ed3981f7f81b69ed94f2a315205db39fa.tar.bz2 |
Fixed frontend properties and updated MochiKit version
Diffstat (limited to 'frontend/gamma/js/MochiKit/Visual.js') (more/less context) (show whitespace changes)
-rw-r--r-- | frontend/gamma/js/MochiKit/Visual.js | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/frontend/gamma/js/MochiKit/Visual.js b/frontend/gamma/js/MochiKit/Visual.js index 648d82a..372d99a 100644 --- a/frontend/gamma/js/MochiKit/Visual.js +++ b/frontend/gamma/js/MochiKit/Visual.js @@ -1,59 +1,59 @@ /*** MochiKit.Visual 1.5 See <http://mochikit.com/> for documentation, downloads, license, etc. (c) 2005 Bob Ippolito and others. All rights Reserved. ***/ -MochiKit.Base._module('Visual', '1.5', ['Base', 'DOM', 'Style', 'Color', 'Position']); +MochiKit.Base.module(MochiKit, 'Visual', '1.5', ['Base', 'DOM', 'Style', 'Color', 'Position']); MochiKit.Visual._RoundCorners = function (e, options) { e = MochiKit.DOM.getElement(e); this._setOptions(options); if (this.options.__unstable__wrapElement) { e = this._doWrap(e); } var color = this.options.color; var C = MochiKit.Color.Color; if (this.options.color === "fromElement") { color = C.fromBackground(e); } else if (!(color instanceof C)) { color = C.fromString(color); } this.isTransparent = (color.asRGB().a <= 0); var bgColor = this.options.bgColor; if (this.options.bgColor === "fromParent") { bgColor = C.fromBackground(e.offsetParent); } else if (!(bgColor instanceof C)) { bgColor = C.fromString(bgColor); } this._roundCornersImpl(e, color, bgColor); }; MochiKit.Visual._RoundCorners.prototype = { _doWrap: function (e) { var parent = e.parentNode; var doc = MochiKit.DOM.currentDocument(); if (typeof(doc.defaultView) === "undefined" || doc.defaultView === null) { return e; } var style = doc.defaultView.getComputedStyle(e, null); if (typeof(style) === "undefined" || style === null) { return e; } var wrapper = MochiKit.DOM.DIV({"style": { display: "block", // convert padding to margin marginTop: style.getPropertyValue("padding-top"), marginRight: style.getPropertyValue("padding-right"), marginBottom: style.getPropertyValue("padding-bottom"), marginLeft: style.getPropertyValue("padding-left"), // remove padding so the rounding looks right padding: "0px" @@ -424,161 +424,171 @@ MochiKit.Visual.toggle = function (element, /* optional */effect, /* optional */ Transitions: define functions calculating variations depending of a position. ***/ MochiKit.Visual.Transitions = { __export__: false }; /** @id MochiKit.Visual.Transitions.linear */ MochiKit.Visual.Transitions.linear = function (pos) { return pos; }; /** @id MochiKit.Visual.Transitions.sinoidal */ MochiKit.Visual.Transitions.sinoidal = function (pos) { return 0.5 - Math.cos(pos*Math.PI)/2; }; /** @id MochiKit.Visual.Transitions.reverse */ MochiKit.Visual.Transitions.reverse = function (pos) { return 1 - pos; }; /** @id MochiKit.Visual.Transitions.flicker */ MochiKit.Visual.Transitions.flicker = function (pos) { return 0.25 - Math.cos(pos*Math.PI)/4 + Math.random()/2; }; /** @id MochiKit.Visual.Transitions.wobble */ MochiKit.Visual.Transitions.wobble = function (pos) { return 0.5 - Math.cos(9*pos*Math.PI)/2; }; /** @id MochiKit.Visual.Transitions.pulse */ MochiKit.Visual.Transitions.pulse = function (pos, pulses) { if (pulses) { pos *= 2 * pulses; } else { pos *= 10; } var decimals = pos - Math.floor(pos); return (Math.floor(pos) % 2 == 0) ? decimals : 1 - decimals; }; /** @id MochiKit.Visual.Transitions.parabolic */ MochiKit.Visual.Transitions.parabolic = function (pos) { return pos * pos; }; +/** @id MochiKit.Visual.Transitions.spring */ +MochiKit.Visual.Transitions.spring = function (pos) { + return 1 - (Math.cos(pos * 2.5 * Math.PI) * Math.exp(-pos * 6)); +}; + /** @id MochiKit.Visual.Transitions.none */ MochiKit.Visual.Transitions.none = function (pos) { return 0; }; /** @id MochiKit.Visual.Transitions.full */ MochiKit.Visual.Transitions.full = function (pos) { return 1; }; /*** Core effects ***/ MochiKit.Visual.ScopedQueue = function () { var cls = arguments.callee; if (!(this instanceof cls)) { return new cls(); } this.__init__(); }; MochiKit.Visual.ScopedQueue.__export__ = false; MochiKit.Base.update(MochiKit.Visual.ScopedQueue.prototype, { __init__: function () { this.effects = []; this.interval = null; }, /** @id MochiKit.Visual.ScopedQueue.prototype.add */ add: function (effect) { var timestamp = new Date().getTime(); var position = (typeof(effect.options.queue) == 'string') ? effect.options.queue : effect.options.queue.position; var ma = MochiKit.Base.map; switch (position) { case 'front': // move unstarted effects after this effect ma(function (e) { if (e.state == 'idle') { e.startOn += effect.finishOn; e.finishOn += effect.finishOn; } }, this.effects); break; case 'end': var finish; // start effect after last queued effect has finished ma(function (e) { var i = e.finishOn; if (i >= (finish || i)) { finish = i; } }, this.effects); timestamp = finish || timestamp; break; case 'break': ma(function (e) { e.finalize(); }, this.effects); break; + case 'replace': + ma(function (e) { + e.cancel(); + }, this.effects); + break; } effect.startOn += timestamp; effect.finishOn += timestamp; if (!effect.options.queue.limit || this.effects.length < effect.options.queue.limit) { this.effects.push(effect); } if (!this.interval) { this.interval = this.startLoop(MochiKit.Base.bind(this.loop, this), 40); } }, /** @id MochiKit.Visual.ScopedQueue.prototype.startLoop */ startLoop: function (func, interval) { return setInterval(func, interval); }, /** @id MochiKit.Visual.ScopedQueue.prototype.remove */ remove: function (effect) { this.effects = MochiKit.Base.filter(function (e) { return e != effect; }, this.effects); if (!this.effects.length) { this.stopLoop(this.interval); this.interval = null; } }, /** @id MochiKit.Visual.ScopedQueue.prototype.stopLoop */ stopLoop: function (interval) { clearInterval(interval); }, /** @id MochiKit.Visual.ScopedQueue.prototype.loop */ loop: function () { var timePos = new Date().getTime(); MochiKit.Base.map(function (effect) { effect.loop(timePos); }, this.effects); } }); MochiKit.Visual.Queues = { __export__: false, instances: {}, @@ -617,98 +627,102 @@ MochiKit.Visual.Base.prototype = { Basic class for all Effects. Define a looping mechanism called for each step of an effect. Don't instantiate it, only subclass it. ***/ __class__ : MochiKit.Visual.Base, /** @id MochiKit.Visual.Base.prototype.start */ start: function (options) { var v = MochiKit.Visual; this.options = MochiKit.Base.setdefault(options, v.DefaultOptions); this.currentFrame = 0; this.state = 'idle'; this.startOn = this.options.delay*1000; this.finishOn = this.startOn + (this.options.duration*1000); this.event('beforeStart'); if (!this.options.sync) { v.Queues.get(typeof(this.options.queue) == 'string' ? 'global' : this.options.queue.scope).add(this); } }, /** @id MochiKit.Visual.Base.prototype.loop */ loop: function (timePos) { if (timePos >= this.startOn) { if (timePos >= this.finishOn) { return this.finalize(); } var pos = (timePos - this.startOn) / (this.finishOn - this.startOn); var frame = Math.round(pos * this.options.fps * this.options.duration); if (frame > this.currentFrame) { this.render(pos); this.currentFrame = frame; } } }, /** @id MochiKit.Visual.Base.prototype.render */ render: function (pos) { if (this.state == 'idle') { this.state = 'running'; this.event('beforeSetup'); this.setup(); this.event('afterSetup'); } if (this.state == 'running') { - if (this.options.transition) { - pos = this.options.transition(pos); + var trans = this.options.transition; + if (typeof(trans) == "string") { + trans = MochiKit.Visual.Transitions[trans]; + } + if (typeof(trans) == "function") { + pos = trans(pos); } pos *= (this.options.to - this.options.from); pos += this.options.from; this.event('beforeUpdate'); this.update(pos); this.event('afterUpdate'); } }, /** @id MochiKit.Visual.Base.prototype.cancel */ cancel: function () { if (!this.options.sync) { MochiKit.Visual.Queues.get(typeof(this.options.queue) == 'string' ? 'global' : this.options.queue.scope).remove(this); } this.state = 'finished'; }, /** @id MochiKit.Visual.Base.prototype.finalize */ finalize: function () { this.render(1.0); this.cancel(); this.event('beforeFinish'); this.finish(); this.event('afterFinish'); }, setup: function () { }, finish: function () { }, update: function (position) { }, /** @id MochiKit.Visual.Base.prototype.event */ event: function (eventName) { if (this.options[eventName + 'Internal']) { this.options[eventName + 'Internal'](this); } if (this.options[eventName]) { this.options[eventName](this); } }, /** @id MochiKit.Visual.Base.prototype.repr */ repr: function () { @@ -1641,98 +1655,98 @@ MochiKit.Visual.slideUp = function (element, /* optional */ options) { options = b.update({ scaleContent: false, scaleX: false, scaleMode: {originalHeight: elementDimensions.h, originalWidth: elementDimensions.w}, scaleFrom: 100, restoreAfterFinish: true, beforeStartInternal: function (effect) { s.makePositioned(effect.element); s.makePositioned(effect.element.firstChild); if (/Opera/.test(navigator.userAgent)) { s.setStyle(effect.element, {top: ''}); } elemClip = s.makeClipping(effect.element); s.showElement(effect.element); }, afterUpdateInternal: function (effect) { var elementDimensions = s.getElementDimensions(effect.element, true); s.setStyle(effect.element.firstChild, {bottom: (effect.dims[0] - elementDimensions.h) + 'px'}); }, afterFinishInternal: function (effect) { s.hideElement(effect.element); s.undoClipping(effect.element, elemClip); s.undoPositioned(effect.element.firstChild); s.undoPositioned(effect.element); s.setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); } }, options); return new MochiKit.Visual.Scale(element, 0, options); }; // Bug in opera makes the TD containing this element expand for a instance // after finish /** @id MochiKit.Visual.squish */ MochiKit.Visual.squish = function (element, /* optional */ options) { /*** Reduce an element and make it disappear. ***/ var d = MochiKit.DOM; var b = MochiKit.Base; var s = MochiKit.Style; var elementDimensions = s.getElementDimensions(element, true); var elemClip; options = b.update({ restoreAfterFinish: true, - scaleMode: {originalHeight: elementDimensions.w, - originalWidth: elementDimensions.h}, + scaleMode: {originalHeight: elementDimensions.h, + originalWidth: elementDimensions.w}, beforeSetupInternal: function (effect) { elemClip = s.makeClipping(effect.element); }, afterFinishInternal: function (effect) { s.hideElement(effect.element); s.undoClipping(effect.element, elemClip); } }, options); return new MochiKit.Visual.Scale(element, /Opera/.test(navigator.userAgent) ? 1 : 0, options); }; /** @id MochiKit.Visual.grow */ MochiKit.Visual.grow = function (element, /* optional */ options) { /*** Grow an element to its original size. Make it zero-sized before if necessary. ***/ var d = MochiKit.DOM; var v = MochiKit.Visual; var s = MochiKit.Style; element = d.getElement(element); options = MochiKit.Base.update({ direction: 'center', moveTransition: v.Transitions.sinoidal, scaleTransition: v.Transitions.sinoidal, opacityTransition: v.Transitions.full, scaleContent: true, scaleFromCenter: false }, options); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: s.getStyle(element, 'opacity') }; var dims = s.getElementDimensions(element, true); var initialMoveX, initialMoveY; var moveX, moveY; switch (options.direction) { case 'top-left': initialMoveX = initialMoveY = moveX = moveY = 0; break; case 'top-right': @@ -1913,63 +1927,50 @@ MochiKit.Visual.pulsate = function (element, /* optional */ options) { options.transition = function (pos) { return transition(1 - v.Transitions.pulse(pos, options.pulses)); }; return new v.Opacity(element, options); }; /** @id MochiKit.Visual.fold */ MochiKit.Visual.fold = function (element, /* optional */ options) { /*** Fold an element, first vertically, then horizontally. ***/ var d = MochiKit.DOM; var v = MochiKit.Visual; var s = MochiKit.Style; element = d.getElement(element); var elementDimensions = s.getElementDimensions(element, true); var oldStyle = { top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; var elemClip = s.makeClipping(element); options = MochiKit.Base.update({ scaleContent: false, scaleX: false, scaleMode: {originalHeight: elementDimensions.h, originalWidth: elementDimensions.w}, afterFinishInternal: function (effect) { new v.Scale(element, 1, { scaleContent: false, scaleY: false, scaleMode: {originalHeight: elementDimensions.h, originalWidth: elementDimensions.w}, afterFinishInternal: function (effect) { s.hideElement(effect.element); s.undoClipping(effect.element, elemClip); s.setStyle(effect.element, oldStyle); } }); } }, options); return new v.Scale(element, 5, options); }; -/* end of Rico adaptation */ - -MochiKit.Visual.__new__ = function () { - var m = MochiKit.Base; - - // Backwards compatibility aliases - m._deprecated(this, 'Color', 'MochiKit.Color.Color', '1.1'); - m._deprecated(this, 'getElementsComputedStyle', 'MochiKit.Style.getStyle', '1.1'); - - m.nameFunctions(this); -}; - -MochiKit.Visual.__new__(); - +MochiKit.Base.nameFunctions(MochiKit.Visual); MochiKit.Base._exportSymbols(this, MochiKit.Visual); |