From 6f21b40befb77303cc04415b675256b0ba098be3 Mon Sep 17 00:00:00 2001 From: Andreas Brachold Date: Mon, 5 Oct 2009 18:00:06 +0000 Subject: * jason: refactoring view recordings --- skins/jason/common.js | 65 +++++ skins/jason/files.lst | 1 + skins/jason/fixes.js | 205 ++++++++++++++ skins/jason/index.tmpl | 1 + skins/jason/jason.css | 3 +- skins/jason/locale/lang-de.js | 1 + skins/jason/locale/lang-en.js | 1 + skins/jason/locale/lang-it.js | 1 + skins/jason/pic/slide-left.png | Bin 0 -> 548 bytes skins/jason/pic/slide-right.png | Bin 0 -> 603 bytes skins/jason/recordings.js | 580 ++++++++++++++++------------------------ skins/jason/timers.js | 13 +- skins/jason/ux/Carousel.css | 67 +++++ skins/jason/ux/Carousel.js | 457 +++++++++++++++++++++++++++++++ 14 files changed, 1046 insertions(+), 349 deletions(-) create mode 100644 skins/jason/pic/slide-left.png create mode 100644 skins/jason/pic/slide-right.png create mode 100644 skins/jason/ux/Carousel.css create mode 100644 skins/jason/ux/Carousel.js diff --git a/skins/jason/common.js b/skins/jason/common.js index 416f131..355c71a 100644 --- a/skins/jason/common.js +++ b/skins/jason/common.js @@ -113,5 +113,70 @@ Ext.xxv.Panel = Ext.extend(Ext.Panel, { }); +/******************************************************************************/ +Ext.xxv.TagClouds = function(config){ + Ext.xxv.TagClouds.superclass.constructor.call(this, config); + Ext.apply(this, config); +}; + +Ext.extend(Ext.xxv.TagClouds, Ext.Component, { + + initComponent : function(){ + Ext.xxv.TagClouds.superclass.initComponent.call(this); + + this.addEvents({'selectKeyword' : true}); + }, + + setvalue : function(keywords){ + + this.keywords = keywords; + + if(this.cloudlist) { + this.cloudlist.remove(); + delete this.cloudlist; + this.cloudlist = null; + } + }, + + render : function(ct, position){ + + if(!this.cloudlist && this.keywords && this.keywords.length) { + this.cloudlist = ct.createChild({tag: "ol", cls: "x-cloud-list"}); + for(var i = 0, len = this.keywords.length; i < len; i++){ + var child = this.cloudlist.createChild({ + tag: "li", + cls: "x-cloud-item "+this.getWeight(this.keywords[i][1]), + html: ''+this.keywords[i][0]+'' + }); + + child.on('click', this.onSelectKeyWord, this); + } + } + } + /**************************************************************************/ + ,getWeight : function(weight){ + var nmax = 100; + var nmin = 0; + + var styles = new Array('smallest','smaller','small','medium','large','larger','largest'); + var value = weight / (nmax - nmin) * 6; + if(value >= 6.0) + return styles[6]; + if(value <= 0.0) + return styles[0]; + + return styles[Math.round(value)]; + } + /**************************************************************************/ + ,onSelectKeyWord : function(e, t){ + + var tag = t.firstChild.data; + this.fireEvent('selectKeyword', tag); + + // Prevent the link href from being followed + Ext.EventObject.stopEvent(e); + } +}); +Ext.reg('TagClouds', Ext.xxv.TagClouds); diff --git a/skins/jason/files.lst b/skins/jason/files.lst index 73847c8..79524f9 100644 --- a/skins/jason/files.lst +++ b/skins/jason/files.lst @@ -2,6 +2,7 @@ FILES = \ extjs/adapter/ext/ext-base.js \ extjs/ext-all.js \ fixes.js \ +ux/Carousel.js \ ux/DDView.js \ ux/Multiselect.js \ ux/TabCloseMenu.js \ diff --git a/skins/jason/fixes.js b/skins/jason/fixes.js index da74e25..5fb77b8 100644 --- a/skins/jason/fixes.js +++ b/skins/jason/fixes.js @@ -71,3 +71,208 @@ Ext.override(Ext.form.TimeField, { return v; } }); + + +/* http://www.extjs.com/forum/showthread.php?t=78223 */ +Ext.override(Ext.layout.VBoxLayout, { + onLayout : function(ct, target){ + Ext.layout.VBoxLayout.superclass.onLayout.call(this, ct, target); + var cs = this.getItems(ct), cm, ch, margin, + size = this.getTargetSize(target), + w = size.width - target.getPadding('lr'), + h = size.height - target.getPadding('tb') - this.scrollOffset, + l = this.padding.left, t = this.padding.top, + isStart = this.pack == 'start', + isRestore = ['stretch', 'stretchmax'].indexOf(this.align) == -1, + stretchWidth = w - (this.padding.left + this.padding.right), + extraHeight = 0, + maxWidth = 0, + totalFlex = 0, + flexHeight = 0, + usedHeight = 0; + Ext.each(cs, function(c){ + cm = c.margins; + totalFlex += c.flex || 0; + ch = c.getHeight(); + margin = cm.top + cm.bottom; + extraHeight += ch + margin; + flexHeight += margin + (c.flex ? 0 : ch); + maxWidth = Math.max(maxWidth, c.getWidth() + cm.left + cm.right); + }); + extraHeight = h - extraHeight - this.padding.top - this.padding.bottom; + var th = flexHeight + this.padding.top + this.padding.bottom; + if(h < th){ + h = th; + w -= this.scrollOffset; + stretchWidth -= this.scrollOffset; + } + var innerCtWidth = maxWidth + this.padding.left + this.padding.right; + switch(this.align){ + case 'stretch': + this.innerCt.setSize(w, h); + break; + case 'stretchmax': + case 'left': + this.innerCt.setSize(innerCtWidth, h); + break; + case 'center': + this.innerCt.setSize(w = Math.max(w, innerCtWidth), h); + break; + } + var availHeight = Math.max(0, h - this.padding.top - this.padding.bottom - flexHeight), + leftOver = availHeight, + heights = [], + restore = [], + idx = 0, + availableWidth = Math.max(0, w - this.padding.left - this.padding.right); + Ext.each(cs, function(c){ + if(isStart && c.flex){ + ch = Math.floor(availHeight * (c.flex / totalFlex)); + leftOver -= ch; + heights.push(ch); + } + }); + if(this.pack == 'center'){ + t += extraHeight ? extraHeight / 2 : 0; + }else if(this.pack == 'end'){ + t += extraHeight; + } + Ext.each(cs, function(c){ + cm = c.margins; + t += cm.top; + c.setPosition(l + cm.left, t); + if(isStart && c.flex){ + ch = Math.max(0, heights[idx++] + (leftOver-- > 0 ? 1 : 0)); + if(isRestore){ + restore.push(c.getWidth()); + } + c.setSize(availableWidth, ch); + }else{ + ch = c.getHeight(); + } + t += ch + cm.bottom; + }); + idx = 0; + Ext.each(cs, function(c){ + cm = c.margins; + if(this.align == 'stretch'){ + c.setWidth((stretchWidth - (cm.left + cm.right)).constrain( + c.minWidth || 0, c.maxWidth || 1000000)); + }else if(this.align == 'stretchmax'){ + c.setWidth((maxWidth - (cm.left + cm.right)).constrain( + c.minWidth || 0, c.maxWidth || 1000000)); + }else{ + if(this.align == 'center'){ + var diff = availableWidth - (c.getWidth() + cm.left + cm.right); + if(diff > 0){ + c.setPosition(l + cm.left + (diff/2), c.y); + } + } + if(isStart && c.flex){ + c.setWidth(restore[idx++]); + } + } + }, this); + } +}); +Ext.override(Ext.layout.HBoxLayout, { + onLayout : function(ct, target){ + Ext.layout.HBoxLayout.superclass.onLayout.call(this, ct, target); + var cs = this.getItems(ct), cm, cw, margin, + size = this.getTargetSize(target), + w = size.width - target.getPadding('lr') - this.scrollOffset, + h = size.height - target.getPadding('tb'), + l = this.padding.left, t = this.padding.top, + isStart = this.pack == 'start', + isRestore = ['stretch', 'stretchmax'].indexOf(this.align) == -1, + stretchHeight = h - (this.padding.top + this.padding.bottom), + extraWidth = 0, + maxHeight = 0, + totalFlex = 0, + flexWidth = 0, + usedWidth = 0; + Ext.each(cs, function(c){ + cm = c.margins; + totalFlex += c.flex || 0; + cw = c.getWidth(); + margin = cm.left + cm.right; + extraWidth += cw + margin; + flexWidth += margin + (c.flex ? 0 : cw); + maxHeight = Math.max(maxHeight, c.getHeight() + cm.top + cm.bottom); + }); + extraWidth = w - extraWidth - this.padding.left - this.padding.right; + var tw = flexWidth + this.padding.left + this.padding.right; + if(w < tw){ + w = tw; + h -= this.scrollOffset; + stretchHeight -= this.scrollOffset; + } + var innerCtHeight = maxHeight + this.padding.top + this.padding.bottom; + switch(this.align){ + case 'stretch': + this.innerCt.setSize(w, h); + break; + case 'stretchmax': + case 'top': + this.innerCt.setSize(w, innerCtHeight); + break; + case 'middle': + this.innerCt.setSize(w, h = Math.max(h, innerCtHeight)); + break; + } + var availWidth = Math.max(0, w - this.padding.left - this.padding.right - flexWidth), + leftOver = availWidth, + widths = [], + restore = [], + idx = 0, + availableHeight = Math.max(0, h - this.padding.top - this.padding.bottom); + Ext.each(cs, function(c){ + if(isStart && c.flex){ + cw = Math.floor(availWidth * (c.flex / totalFlex)); + leftOver -= cw; + widths.push(cw); + } + }); + if(this.pack == 'center'){ + l += extraWidth ? extraWidth / 2 : 0; + }else if(this.pack == 'end'){ + l += extraWidth; + } + Ext.each(cs, function(c){ + cm = c.margins; + l += cm.left; + c.setPosition(l, t + cm.top); + if(isStart && c.flex){ + cw = Math.max(0, widths[idx++] + (leftOver-- > 0 ? 1 : 0)); + if(isRestore){ + restore.push(c.getHeight()); + } + c.setSize(cw, availableHeight); + }else{ + cw = c.getWidth(); + } + l += cw + cm.right; + }); + idx = 0; + Ext.each(cs, function(c){ + var cm = c.margins; + if(this.align == 'stretch'){ + c.setHeight((stretchHeight - (cm.top + cm.bottom)).constrain( + c.minHeight || 0, c.maxHeight || 1000000)); + }else if(this.align == 'stretchmax'){ + c.setHeight((maxHeight - (cm.top + cm.bottom)).constrain( + c.minHeight || 0, c.maxHeight || 1000000)); + }else{ + if(this.align == 'middle'){ + var diff = availableHeight - (c.getHeight() + cm.top + cm.bottom); + if(diff > 0){ + c.setPosition(c.x, t + cm.top + (diff/2)); + } + } + if(isStart && c.flex){ + c.setHeight(restore[idx++]); + } + } + }, this); + } +}); diff --git a/skins/jason/index.tmpl b/skins/jason/index.tmpl index e2fa6fe..f073515 100644 --- a/skins/jason/index.tmpl +++ b/skins/jason/index.tmpl @@ -10,6 +10,7 @@ +