summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2009-12-19 13:50:17 +0000
committerAndreas Brachold <vdr07@deltab.de>2009-12-19 13:50:17 +0000
commitac6040823f365ef7bb6d455d070aaecec8dc744a (patch)
treec46d3e883752f58773b7a12cbc226b6842237b02
parent65ababad8a7ef911f29a29cfcac775ad26e68445 (diff)
downloadxxv-ac6040823f365ef7bb6d455d070aaecec8dc744a.tar.gz
xxv-ac6040823f365ef7bb6d455d070aaecec8dc744a.tar.bz2
* CHANNELS: allow query a compact list ( by cmd=clist&compact=1 )
* STATUS: Refactoring output (network/filesys/memory/vitals) * STREAM: Fix SMB streaming (div by zero) * html/xstyle: footer updated * xstyle: css fix correct z-index on schema for timemarker * jason: use one loading mask for many tasks * jason: timer self updating if new timer created * jason: stream allow external video player * jason: use compact channel list (reduce memory footprint) * update translations
-rw-r--r--skins/jason/channels.js18
-rw-r--r--skins/jason/channelspanel.js8
-rw-r--r--skins/jason/index.tmpl7
-rw-r--r--skins/jason/jason.css80
-rw-r--r--skins/jason/main.js4
-rw-r--r--skins/jason/music.js51
-rw-r--r--skins/jason/now.js29
-rw-r--r--skins/jason/program.js2
-rw-r--r--skins/jason/recordings.js59
-rw-r--r--skins/jason/search.js2
-rw-r--r--skins/jason/stream.js38
-rw-r--r--skins/jason/tabpanel.js12
-rw-r--r--skins/jason/teletext.js8
-rw-r--r--skins/jason/timers.js29
-rw-r--r--skins/jason/vtxgfx.css10
-rw-r--r--skins/stone/memory.tmpl56
-rw-r--r--skins/stone/network.tmpl77
-rw-r--r--skins/stone/vitals.tmpl4
-rw-r--r--skins/stone/widgets/wait.tmpl6
-rw-r--r--skins/stone_flat/filesys.tmpl2
-rw-r--r--skins/stone_flat/memory.tmpl64
-rw-r--r--skins/stone_flat/network.tmpl75
-rw-r--r--skins/stone_flat/vitals.tmpl4
-rw-r--r--skins/xstyle/memory.tmpl53
-rw-r--r--skins/xstyle/network.tmpl61
-rw-r--r--skins/xstyle/schema.tmpl88
-rw-r--r--skins/xstyle/style/style.css96
-rw-r--r--skins/xstyle/widgets/footer.tmpl3
28 files changed, 502 insertions, 444 deletions
diff --git a/skins/jason/channels.js b/skins/jason/channels.js
index 3f2beb6..507a1f4 100644
--- a/skins/jason/channels.js
+++ b/skins/jason/channels.js
@@ -14,25 +14,13 @@ Ext.xxv.storeChannels = function() {
fields: [
{name: 'id', type: 'string'},
{name: 'name', type: 'string'},
- {name: 'frequency', type: 'int'},
- {name: 'parameter', type: 'string'},
- {name: 'source', type: 'string'},
- {name: 'srate', type: 'string'},
- {name: 'vpid', type: 'string'},
- {name: 'apid', type: 'string'},
- {name: 'tpid', type: 'string'},
- {name: 'ca', type: 'string'},
- {name: 'sid', type: 'string'},
- {name: 'nid', type: 'string'},
- {name: 'tid', type: 'string'},
- {name: 'rid', type: 'string'},
{name: 'group', type: 'string'},
{name: 'position', type: 'int'},
{name: 'grpname', type: 'string'}
]
}),
proxy : new Ext.data.HttpProxy({
- url: XXV.help.cmdAJAX('cl')
+ url: XXV.help.cmdAJAX('cl',{compact:1})
,method: 'GET'
})
// sortInfo:{field:'position', direction:'ASC'}
@@ -51,10 +39,6 @@ Ext.xxv.ChannelsCombo = function(config){
Ext.xxv.ChannelsCombo.prototype ={
init : function(grid){
-/* this.grid = grid;
- this.grid.on('render', function(){
- var view = this.grid.getView();
- }, this);*/
},
renderer: function(value, p, record) {
diff --git a/skins/jason/channelspanel.js b/skins/jason/channelspanel.js
index a827b39..4c8c881 100644
--- a/skins/jason/channelspanel.js
+++ b/skins/jason/channelspanel.js
@@ -377,11 +377,7 @@ Ext.extend(Ext.xxv.channelsPanel, Ext.tree.TreePanel, {
,title: record.data.name
};
- var viewer = Ext.getCmp('main-tabs');
- if(!viewer.streamwin){
- viewer.streamwin = new Ext.xxv.StreamWindow(item);
- } else {
- viewer.streamwin.show(item);
- }
+ var viewer = Ext.getCmp('main-tabs');
+ viewer.streamwin = Ext.xxv.createStream(item,viewer.streamwin);
}
});
diff --git a/skins/jason/index.tmpl b/skins/jason/index.tmpl
index 0eb6fa0..add803d 100644
--- a/skins/jason/index.tmpl
+++ b/skins/jason/index.tmpl
@@ -19,6 +19,7 @@
,monitorHeight : <?% getModule('GRAB').ysize %?>
,streamWidth : <?% getModule('STREAM').width %?>
,streamHeight : <?% getModule('STREAM').height %?>
+ ,streamWidget : "<?% getModule('STREAM').widget %?>"
,pageSize : 100
};
</script>
@@ -74,8 +75,10 @@
<?% # Template used for EPG Items %?>
<div id="preview-tpl" style="display:none;">
<div class="preview-header">
- <h3 class="preview-title">{content:this.getTitle}</h3><div class="preview-channel">{content:this.getChannel}</div>
- <h4 class="preview-shorttitle">{content:this.getSubtitle}</h4><div class="preview-date">{day:date} {start} - {stop}</div>
+ <div class="preview-topic">
+ <h3 class="preview-title">{content:this.getTitle}</h3><h4 class="preview-shorttitle">{content:this.getSubtitle}</h4>
+ </div>
+ <div class="preview-channel">{content:this.getChannel}</div><div class="preview-date">{day:date} {start} - {stop}</div>
</div>
<div class="preview-body">{content:this.getBody}</div>
</div>
diff --git a/skins/jason/jason.css b/skins/jason/jason.css
index 33705bd..2925f56 100644
--- a/skins/jason/jason.css
+++ b/skins/jason/jason.css
@@ -76,6 +76,66 @@ margin:3px;
display:none;
}
+/*
+.xxv-icon {
+width:16px;
+height:16px;
+background-image:url(pic/xxv-icon.png) !important;
+background-repeat:no-repeat;
+}
+
+.xxv-icon-xxv { background-position:0 0;}
+.xxv-icon-record { background-position:-16px 0;}
+.xxv-icon-backward { background-position:-32px 0;}
+.xxv-icon-forward { background-position:-48px 0;}
+.xxv-icon-pause { background-position:-64px 0;}
+.xxv-icon-playback { background-position:-72px 0;}
+.xxv-icon-stream { background-position:-88px 0;}
+
+.xxv-icon-remote-blue{ background-position:0 -16px;}
+.xxv-icon-remote-green{ background-position:-16px -16px;}
+.xxv-icon-remote-red{ background-position:-32px -16px;}
+.xxv-icon-remote-yellow{ background-position:-48px -16px;}
+.xxv-icon-remote-play { background-position:-64px -16px;}
+.xxv-icon-remote{ background-position:-72px -16px;}
+.xxv-icon-channel{ background-position:-88px -16px;}
+
+.xxv-icon-preview { background-position:0 -32px;}
+.xxv-icon-preview-bottom { background-position:-16px -32px;}
+.xxv-icon-preview-right { background-position:-32px -32px;}
+.xxv-icon-remote-menu { background-position:-48px -32px;}
+.xxv-icon-monitor { background-position:-64px -32px;}
+.xxv-icon-recordings { background-position:-72px -32px;}
+.xxv-icon-remote-back { background-position:-88px -32px;}
+
+.xxv-icon-movetimer { background-position:0 -32px;}
+.xxv-icon-chronicle { background-position:-16px -32px;}
+.xxv-icon-edit { background-position:-32px -32px;}
+.xxv-icon-setup { background-position:-48px -32px;}
+.xxv-icon-upgrade { background-position:-64px -32px;}
+.xxv-icon-users { background-position:-72px -32px;}
+.xxv-icon-vdr { background-position:-88px -32px;}
+.xxv-icon-logout { background-position:-104px -32px;}
+
+.xxv-icon-autotimer { background-position:0 -48px;}
+.xxv-icon-find { background-position:-16px -48px;}
+.xxv-icon-timer { background-position:-32px -48px;}
+.xxv-icon-timer-toggle { background-position:-48px -48px;}
+.xxv-icon-new { background-position:-64px -48px;}
+.xxv-icon-unviewed { background-position:-72px -48px;}
+.xxv-icon-cut { background-position:-88px -48px;}
+.xxv-icon-recover { background-position:-104px -48px;}
+.xxv-icon-delete { background-position:-120px -48px;}
+
+.xxv-icon-playing-music { background-position:0 -64px;}
+.xxv-icon-music { background-position:-16px -64px;}
+.xxv-icon-remote-loud { background-position:-32px -64px;}
+.xxv-icon-remote-quiet { background-position:-48px -64px;}
+.xxv-icon-remote-up { background-position:-64px -64px;}
+.xxv-icon-remote-down { background-position:-72px -64px;}
+.xxv-icon-remote-left { background-position:-88px -64px;}
+.xxv-icon-remote-right { background-position:-104px -64px;}
+*/
.refresh-icon { background-image:url(pic/refresh.png) !important; }
.autotimer-icon { background-image:url(pic/autotimer.png) !important; }
@@ -183,6 +243,13 @@ list-style-type:disc !important;
margin-left:18px;
}
+.preview .x-panel-body .preview-topic {
+overflow:hidden;
+clear:left;
+white-space:nowrap;
+height:1.2em;
+}
+
.preview .x-panel-body h3.preview-title {
text-align:left;
font-weight:bold;
@@ -197,8 +264,7 @@ text-align:left;
font-weight:bold;
color:#555;
font-size:1.0em;
-clear:left;
-float:left;
+/*clear:left;*/
}
.preview .x-panel-body div.preview-date {
@@ -212,9 +278,9 @@ width:100%;
.preview .x-panel-body div.preview-channel {
font-weight:normal;
color:#555;
-text-align:right;
+text-align:left;
font-size:1.0em;
-width:100%;
+float:left;
}
.preview .x-panel-body {
@@ -487,3 +553,9 @@ object#audio-player { display:inline; }
background:repeat-x bottom;
background-image:url(extjs/resources/images/default/grid/invalid_line.gif);
}
+
+.coverimage {
+ text-align:right;
+ height:200px;
+ width:200px;
+}
diff --git a/skins/jason/main.js b/skins/jason/main.js
index f111984..10551e8 100644
--- a/skins/jason/main.js
+++ b/skins/jason/main.js
@@ -41,11 +41,11 @@ Ext.onReady(function(){
if(!subtitle) {
var Woerter = all.title.split("~");
if(Woerter.length > 1) {
- return Woerter.pop();
+ return '&nbsp;-&nbsp;' + Woerter.pop();
}
return '&nbsp;';
}
- return subtitle;
+ return '&nbsp;-&nbsp;' + subtitle;
}
,getChannel : function(v, all){
var channel = v || all.channel;
diff --git a/skins/jason/music.js b/skins/jason/music.js
index bacb475..ebc211f 100644
--- a/skins/jason/music.js
+++ b/skins/jason/music.js
@@ -109,9 +109,48 @@ Ext.xxv.musicGrid = function(viewer) {
singleSelect:false
})
,view: new Ext.grid.GroupingView({
- enableGroupingMenu:false,
- showGroupName: false
+ enableGroupingMenu:false
+ ,showGroupName: false
+ //,groupTextTpl: '{text} <img class="coverimage" src="?cmd=mi&data={[values.rs[0].data["id"]]}" />'
})
+ /*,listeners: {
+ mouseover: function(e, t) {
+ var rowIndex = this.getView().findRowIndex(t);
+ if(rowIndex === false)return;
+ var colIndex = this.getView().findCellIndex(t);
+ if(colIndex === false)return;
+
+ var row = this.getStore().getAt(rowIndex)
+ var id = row.data.id;
+ if(this.CoverTransaction)
+ Ext.Ajax.abort(this.CoverTransaction);
+ this.DetailsTransaction = Ext.Ajax.request({
+ scope: this
+ ,method: 'HEAD'
+ ,url: XXV.help.cmdHTML('mi',{data:row.data.id})
+ ,timeout: 15000
+ ,success: this.onCoverSuccess
+ ,failure: this.onCoverFailure
+ ,params:{ data: row.data.id }
+ });
+ if(this.CoverTT) {
+ this.CoverTT.destroy();
+ delete this.CoverTT;
+ }
+ this.CoverTT = new Ext.ToolTip({
+ target: e.target,
+ title: 'Cover',
+ autoHide: false,
+ closable: true,
+ showDelay:1000,
+ hideDelay:0,
+ autoHeight:true,
+ hidden:true,
+ width:210,
+ html: '<img class="coverimage" src="?cmd=mi&data='+row.data.id +'" />',
+ });
+ }
+ }*/
,tbar:new Ext.PagingToolbar({
pageSize: this.store.autoLoad.params.limit
,store: this.store
@@ -301,6 +340,14 @@ Ext.extend(Ext.xxv.musicGrid, Ext.grid.GridPanel, { // Ext.grid.EditorGridPanel
}
//this.loadMask.hide();
}
+ /******************************************************************************/
+ ,onCoverSuccess : function( response,options )
+ {
+ this.CoverTT.show();
+ }
+ ,onCoverFailure : function( response,options )
+ {
+ }
});
function createMusicView(viewer,id) {
diff --git a/skins/jason/now.js b/skins/jason/now.js
index fd21ccf..b56ef59 100644
--- a/skins/jason/now.js
+++ b/skins/jason/now.js
@@ -45,8 +45,6 @@ Ext.xxv.NowGrid = function(viewer) {
this.viewer = viewer;
this.preview = new Ext.xxv.NowPreview(viewer);
- //this.timerstore = new Ext.xxv.timerStore();
-
// create the data store
this.store = new Ext.xxv.NowStore();
this.store.setDefaultSort('rang', "ASC");
@@ -117,7 +115,7 @@ Ext.xxv.NowGrid = function(viewer) {
Ext.xxv.NowGrid.superclass.constructor.call(this, {
region: 'center'
,id: 'now-grid'
- ,loadMask: true
+ ,loadMask: false
,autoExpandColumn:'expand'
,cm: cm
,sm: new Ext.grid.RowSelectionModel({
@@ -146,10 +144,6 @@ Ext.xxv.NowGrid = function(viewer) {
,'loadexception' : this.onLoadException
,scope:this
});
- //this.timerstore.on({
- // 'loadexception' : this.onLoadException
- // ,scope:this
- //});
this.on('rowcontextmenu', this.onContextClick, this);
this.getSelectionModel().on('rowselect', this.preview.select, this.preview, {buffer:50});
@@ -329,7 +323,7 @@ Ext.extend(Ext.xxv.NowGrid, Ext.grid.GridPanel, {
/******************************************************************************/
,onRecordSuccess : function( response,options )
{
- this.loadMask.hide();
+ this.viewer.loadMask.hide();
var json = response.responseText;
var o = eval("("+json+")");
if(!o || !o.data || typeof(o.data) != 'string') {
@@ -337,21 +331,21 @@ Ext.extend(Ext.xxv.NowGrid, Ext.grid.GridPanel, {
}
if(o.success) {
new Ext.xxv.MessageBox().msgSuccess(this.szRecordSuccess, o.data);
- //this.timerstore.reload();
- }else {
+ this.updateTimer();
+ } else {
new Ext.xxv.MessageBox().msgFailure(this.szRecordFailure, o.data);
}
}
,onRecordFailure : function( response,options )
{
- this.loadMask.hide();
+ this.viewer.loadMask.hide();
new Ext.xxv.MessageBox().msgFailure(this.szRecordFailure, response.statusText);
}
,Record : function(record) {
this.RecordID(record.data.id);
}
,RecordID : function(id) {
- this.loadMask.show();
+ this.viewer.loadMask.show();
Ext.Ajax.request({
scope: this
,url: XXV.help.cmdAJAX('tn',{ data: id, '__fast':'1' })
@@ -359,6 +353,11 @@ Ext.extend(Ext.xxv.NowGrid, Ext.grid.GridPanel, {
,failure: this.onRecordFailure
});
}
+ ,updateTimer : function() {
+ if(this.viewer.gridTimer) {
+ this.viewer.gridTimer.dataDirty = true;
+ }
+ }
,EditTimer : function(record,store) {
var item;
@@ -381,12 +380,6 @@ Ext.extend(Ext.xxv.NowGrid, Ext.grid.GridPanel, {
}
this.viewer.formwin = new Ext.xxv.Question(item,store);
}
- //,TimerPresent : function(eventid) {
- // var records = this.timerstore.query('eventid',eventid,false,false);
- // if(!records || records.getCount() <= 0)
- // return 0;
- // return records.get(0);
- //}
,formatTitle: function(value, p, record) {
var style = "";
diff --git a/skins/jason/program.js b/skins/jason/program.js
index 6f8f442..294c009 100644
--- a/skins/jason/program.js
+++ b/skins/jason/program.js
@@ -85,7 +85,7 @@ Ext.xxv.programGrid = function(viewer, record) {
Ext.xxv.programGrid.superclass.constructor.call(this, {
region: 'center'
,id: 'program-grid'
- ,loadMask: true
+ ,loadMask: false
,autoExpandColumn:'expand'
,cm: cm
,sm: new Ext.grid.RowSelectionModel({
diff --git a/skins/jason/recordings.js b/skins/jason/recordings.js
index eb1daa3..7d80a9b 100644
--- a/skins/jason/recordings.js
+++ b/skins/jason/recordings.js
@@ -128,21 +128,33 @@ Ext.extend(Ext.xxv.RecHeader, Ext.Component, {
this.tpl = new Ext.Template(
'<div class="preview-header">',
- '<h3 class="preview-title">{title}</h3>',
- '<div class="preview-channel">',
- '<tpl if="channel != 0">',
- '<b>{channel}</b> - ',
- '</tpl>',
- '{period}',
- '<tpl if="cutlength != 0">',
- ' ({cutlength})',
- '</tpl>',
+ '<div class="preview-topic">',
+ '<h3 class="preview-title">{title}</h3>',
+ '<h4 class="preview-shorttitle">{subtitle:this.formatSubtitle}</h4>',
+ '</div>',
+ '{channel:this.formatChannel}',
+ '<div class="preview-date">{day:date} {start} - {stop} {period}{cutlength:this.formatCutlength}',
'</div>',
- '<h4 class="preview-shorttitle">{subtitle}&nbsp;</h4>',
- '<div class="preview-date">{day:date} {start} - {stop}</div>'
- ,'</div>'
+ '</div>'
+ ,{
+ compiled: true
+ ,formatSubtitle : function(t) {
+ if(t && t != '')
+ return '&nbsp;-&nbsp;' + t;
+ return '&nbsp;';
+ }
+ ,formatChannel : function(t) {
+ if(t && t != '')
+ return '<div class="preview-channel"><b>' + t + '</b>&nbsp;</div>';
+ return '';
+ }
+ ,formatCutlength : function(t) {
+ if(t && t != '')
+ return '&nbsp;(' + t + ')';
+ return '';
+ }
+ }
);
- this.tpl.compile();
},
setvalue : function(data, lookupdata){
@@ -811,7 +823,8 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
/******************************************************************************/
onCutSuccess : function( response,options )
{
- this.el.unmask();
+ this.viewer.loadMask.hide();
+
var o = eval("("+response.responseText+")");
if(o && o.data && typeof(o.data) == 'string'
@@ -830,7 +843,7 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
onCutFailure : function( response,options )
{
- this.el.unmask();
+ this.viewer.loadMask.hide();
new Ext.xxv.MessageBox().msgFailure(this.szCutFailure, response.statusText);
},
@@ -859,7 +872,7 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
}
}
if(toCut.length) {
- this.el.mask(Ext.LoadMask.prototype.msg, 'x-mask-loading');
+ this.viewer.loadMask.show();
Ext.Ajax.request({
scope: this
,url: XXV.help.cmdAJAX('rcu')
@@ -873,7 +886,8 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
/******************************************************************************/
onDeleteSuccess : function( response,options )
{
- this.el.unmask();
+ this.viewer.loadMask.hide();
+
var o = eval("("+response.responseText+")");
if(o && o.data && typeof(o.data) == 'string'
@@ -917,7 +931,7 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
onDeleteFailure : function( response,options )
{
- this.el.unmask();
+ this.viewer.loadMask.hide();
new Ext.xxv.MessageBox().msgFailure(this.szDeleteFailure, response.statusText);
},
@@ -945,7 +959,7 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
}
}
if(todelete.length) {
- this.el.mask(Ext.LoadMask.prototype.msg, 'x-mask-loading');
+ this.viewer.loadMask.show();
Ext.Ajax.request({
scope: this
,url: XXV.help.cmdAJAX('rr')
@@ -993,12 +1007,7 @@ Ext.extend(Ext.xxv.recordingsDataView, Ext.DataView, {
url : XXV.help.cmdHTML('pre',{data:record.data.id,'__player':'1','__start':begin})
,title: record.data.fulltitle
};
-
- if(!this.viewer.streamwin){
- this.viewer.streamwin = new Ext.xxv.StreamWindow(item);
- } else {
- this.viewer.streamwin.show(item);
- }
+ this.viewer.streamwin = Ext.xxv.createStream(item,this.viewer.streamwin);
}
/******************************************************************************/
,EditItem : function( record ) {
diff --git a/skins/jason/search.js b/skins/jason/search.js
index c17bc91..648a972 100644
--- a/skins/jason/search.js
+++ b/skins/jason/search.js
@@ -78,7 +78,7 @@ Ext.xxv.searchGrid = function(viewer, lookup) {
Ext.xxv.searchGrid.superclass.constructor.call(this, {
region: 'center',
id: 'search-grid',
- loadMask: true,
+ loadMask: false,
sm: new Ext.grid.RowSelectionModel({
singleSelect:false
}),
diff --git a/skins/jason/stream.js b/skins/jason/stream.js
index c973d55..5eba5bb 100644
--- a/skins/jason/stream.js
+++ b/skins/jason/stream.js
@@ -7,7 +7,7 @@
* $Id$
*/
-Ext.xxv.StreamWindow = function(item) {
+Ext.xxv.StreamWindow = function(item,width,height) {
var tpl = new Ext.XTemplate(
'<object id="player_obj" width="{width}" height="{height}"',
@@ -30,17 +30,6 @@ Ext.xxv.StreamWindow = function(item) {
);
- var width = configuration.streamWidth;
- var height = configuration.streamHeight;
- if(Ext.state.Manager.getProvider()) {
- var streamwin = Ext.state.Manager.get('stream-win');
- if(streamwin && streamwin.width && streamwin.width >= 160 && streamwin.width <= 4096) {
- width = streamwin.width;
- }
- if(streamwin && streamwin.height && streamwin.height >= 120 && streamwin.height <= 2048) {
- height = streamwin.height;
- }
- }
var marginHeight = 33;
var marginWidth = 16;
var t = this.szTitle;
@@ -128,3 +117,28 @@ Ext.extend(Ext.xxv.StreamWindow, Ext.Window, {
Ext.xxv.StreamWindow.superclass.show.apply(this, arguments);
}
});
+
+
+Ext.xxv.createStream = function(item,streamwin) {
+ var width = configuration.streamWidth;
+ var height = configuration.streamHeight;
+ if(Ext.state.Manager.getProvider()) {
+ var streamwin = Ext.state.Manager.get('stream-win');
+ if(streamwin && streamwin.width && streamwin.width >= 160 && streamwin.width <= 4096) {
+ width = streamwin.width;
+ }
+ if(streamwin && streamwin.height && streamwin.height >= 120 && streamwin.height <= 2048) {
+ height = streamwin.height;
+ }
+ }
+ if(configuration.streamWidget
+ && configuration.streamWidget == 'external') {
+ window.open(item.url, '_blank', "width=" + width + ",height="+ height);
+ return false;
+ }
+ if(!streamwin){
+ return new Ext.xxv.StreamWindow(item,width,height);
+ } else {
+ streamwin.show(item);
+ }
+};
diff --git a/skins/jason/tabpanel.js b/skins/jason/tabpanel.js
index 461dee3..a15efe6 100644
--- a/skins/jason/tabpanel.js
+++ b/skins/jason/tabpanel.js
@@ -20,15 +20,21 @@ Ext.xxv.tabPanel = function(){
,resizeTabs:true
,tabWidth:150
,minTabWidth: 100
- ,enableTabScroll: true
+ ,enableTabScroll: true
+ ,loadMask: null
+ //,defaults: {hideMode: 'offsets'}
,plugins: [ new Ext.ux.TabCloseMenu() ]
,items: [ tab ]
});
-
+ this.on('render', this.initPanel, this);
};
Ext.extend(Ext.xxv.tabPanel, Ext.TabPanel, {
-
+
+ initPanel : function(){
+ if(!this.loadMask)
+ this.loadMask = new Ext.LoadMask(this.id, {msg: Ext.LoadMask.prototype.msg, msgCls:'x-mask-loading'});
+ },
initPreview : function(){
XXV.BottomPreview = false;
XXV.RightPreview = true;
diff --git a/skins/jason/teletext.js b/skins/jason/teletext.js
index dcdcdff..13dfb01 100644
--- a/skins/jason/teletext.js
+++ b/skins/jason/teletext.js
@@ -95,16 +95,14 @@ Ext.extend(Ext.xxv.TeleTextView, Ext.DataView, {
,szLoadException : "Couldn't get teletext pages!\r\n{0}"
,onLoadException : function( scope, o, arg, e) {
- this.loadMask.hide();
+ this.viewer.loadMask.hide();
new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
var tb = this.ownerCt.getTopToolbar();
tb.get('teletext-refresh').enable();
}
,onBeforeLoad : function( scope, params ) {
- if(!this.loadMask)
- this.loadMask = new Ext.LoadMask(this.viewer.id, {msg: Ext.LoadMask.prototype.msg, msgCls:'x-mask-loading'});
if(this.filter.getValue())
- this.loadMask.show();
+ this.viewer.loadMask.show();
if(this.DetailsTransaction)
Ext.Ajax.abort(this.DetailsTransaction);
@@ -151,7 +149,7 @@ Ext.extend(Ext.xxv.TeleTextView, Ext.DataView, {
tb.get('teletext-next').setDisabled(data.next == 0);
//tb.get('teletext-last').setDisabled(true);
tb.get('teletext-refresh').enable();
- this.loadMask.hide();
+ this.viewer.loadMask.hide();
}
,doClick : function(){
var selNode = this.getSelectedNodes();
diff --git a/skins/jason/timers.js b/skins/jason/timers.js
index d02926a..b088742 100644
--- a/skins/jason/timers.js
+++ b/skins/jason/timers.js
@@ -154,7 +154,7 @@ Ext.xxv.timerGrid = function(viewer) {
Ext.xxv.timerGrid.superclass.constructor.call(this, {
region: 'center'
,id: 'timer-view-grid'
- ,loadMask: true
+ ,loadMask: false
,plugins:[this.activeColumn,this.vpsColumn,this.ChannelsCombo]
,clicksToEdit:1
,autoExpandColumn:'expand'
@@ -220,18 +220,23 @@ Ext.extend(Ext.xxv.timerGrid, Ext.grid.GridPanel, { // Ext.grid.EditorGridPanel
,szToggleFailure : "Couldn't toggle timer!\r\n{0}"
,stateful: true
-
+ ,dataDirty: false
,onLoadException : function( scope, o, arg, e) {
+ this.dataDirty = false;
new Ext.xxv.MessageBox().msgFailure(this.szLoadException, e.message);
}
,onBeforeLoad : function( store, opt ) {
this.preview.clear();
}
,onLoad : function( store, records, opt ) {
+ this.dataDirty = false;
this.getSelectionModel().selectFirstRow();
this.ownerCt.SetPanelTitle(this.szTitle);
}
-
+ ,refreshPanel : function(panel){
+ if(this.dataDirty)
+ this.store.reload();
+ }
,onContextClick : function(grid, index, e){
if(!this.menu){ // create context menu on first right click
this.menu = new Ext.menu.Menu({
@@ -333,7 +338,7 @@ Ext.extend(Ext.xxv.timerGrid, Ext.grid.GridPanel, { // Ext.grid.EditorGridPanel
/******************************************************************************/
,onToggleSuccess : function( response,options )
{
- this.loadMask.hide();
+ this.viewer.loadMask.hide();
var o = eval("("+response.responseText+")");
@@ -372,13 +377,13 @@ Ext.extend(Ext.xxv.timerGrid, Ext.grid.GridPanel, { // Ext.grid.EditorGridPanel
,onToggleFailure : function( response,options )
{
- this.loadMask.hide();
+ this.viewer.loadMask.hide();
new Ext.xxv.MessageBox().msgFailure(this.szToggleFailure, response.statusText);
}
,ToggleItem : function( record ) {
this.stopEditing();
- this.loadMask.show();
+ this.viewer.loadMask.show();
var gsm = this.getSelectionModel();
var sel = gsm.getSelections()
@@ -404,7 +409,7 @@ Ext.extend(Ext.xxv.timerGrid, Ext.grid.GridPanel, { // Ext.grid.EditorGridPanel
/******************************************************************************/
,onDeleteSuccess : function( response,options )
{
- this.loadMask.hide();
+ this.viewer.loadMask.hide();
var o = eval("("+response.responseText+")");
@@ -437,13 +442,13 @@ Ext.extend(Ext.xxv.timerGrid, Ext.grid.GridPanel, { // Ext.grid.EditorGridPanel
,onDeleteFailure : function( response,options )
{
- this.loadMask.hide();
+ this.viewer.loadMask.hide();
new Ext.xxv.MessageBox().msgFailure(this.szDeleteFailure, response.statusText);
}
,DeleteItem : function( record ) {
this.stopEditing();
- this.loadMask.show();
+ this.viewer.loadMask.show();
var gsm = this.getSelectionModel();
var sel = gsm.getSelections()
@@ -606,7 +611,11 @@ function createTimerView(viewer,id) {
hidden:XXV.RightPreview
}
]
-
+ ,listeners: {
+ activate: function(p){
+ viewer.gridTimer.refreshPanel(p);
+ }
+ }
});
viewer.add(tab);
diff --git a/skins/jason/vtxgfx.css b/skins/jason/vtxgfx.css
index f4e7a41..211a95f 100644
--- a/skins/jason/vtxgfx.css
+++ b/skins/jason/vtxgfx.css
@@ -49,6 +49,11 @@ color:#0F0;
color:#FF0;
}
+.vtx-mark{
+ background:repeat-x bottom;
+ background-image:url(extjs/resources/images/default/grid/invalid_line.gif);
+}
+
.vtgfx {
width:12px;
height:18px;
@@ -56,11 +61,6 @@ background-image:url(pic/vtxgfx.gif);
background-repeat:no-repeat;
}
-.vtx-mark{
- background:repeat-x bottom;
- background-image:url(extjs/resources/images/default/grid/invalid_line.gif);
-}
-
.white20{ background-position:0 0;}
.white21{ background-position:0 -18px;}
.white22{ background-position:0 -36px;}
diff --git a/skins/stone/memory.tmpl b/skins/stone/memory.tmpl
index 042dfb0..129f7ff 100644
--- a/skins/stone/memory.tmpl
+++ b/skins/stone/memory.tmpl
@@ -9,43 +9,42 @@
<?%
USE date;
statusfiles = [];
+ fields = data.shift;
FILTER null;
name = 'memory_stat';
swapdata = [];
activedata = [];
cacheddata = [];
- buffersdata = [];
+ inactivedata = [];
timestamps = [];
- FOREACH item = param.stack;
- t = date.format(item.timestamp, '%H:%M');
+ FOREACH row = data;
+ t = date.format(row.6, '%H:%M');
timestamps.push(t);
- swapdata.push(item.memory.SwapTotal);
- activedata.push(item.memory.Active);
- cacheddata.push(item.memory.Cached);
- buffersdata.push(item.memory.Buffers);
+ activedata.push(row.2 / (1024));
+ inactivedata.push(row.3 / (1024));
+ cacheddata.push(row.4 / (1024));
+ swapdata.push(row.5 / (1024));
END;
- # Maximum wert
- max = param.stack.last.memory.MemTotal;
-
# Data ...
d = [
timestamps ,
- swapdata ,
- cacheddata ,
activedata ,
- buffersdata ,
+ inactivedata
+ cacheddata ,
+ swapdata
];
USE my_graph = GD.Graph.lines(375,375);
# Xsteps
- steps = param.stack.size div 5;
+ steps = data.size div 5;
label = gettext('Memory usage since');
- label_y = gettext('Memory usage in bytes')
+ label_y = gettext('Memory usage in MB')
label = "${label} ${d.first.first} (${label_y})";
+
my_graph.set(
x_label_skip => steps,
x_long_ticks => 1,
@@ -54,9 +53,9 @@
line_width => 2,
box_axis => 1,
- boxclr => '#FFFFCC',
+ boxclr => '#FFFFFF',
fgclr => '#BBBBBB'
- legend_placement => 'RD',
+ legend_placement => '>BO',
legend_spacing => 5,
);
my_graph.set_title_font(param.font,10);
@@ -64,28 +63,29 @@
my_graph.set_x_label_font(param.font,10);
my_graph.set_x_axis_font(param.font,6);
my_graph.set_y_axis_font(param.font,6);
- my_graph.set_legend( 'Swap', 'Active', 'Cached', 'Buffers');
+ my_graph.set_legend( fields.2, fields.3, fields.4, fields.5);
file = writefile("status_${name}.gif", my_graph.plot(d).gif );
statusfiles.push([ label , file ]);
-
END;
# ------------------- Piegraph für Speicher
+ row = data.last;
FILTER null;
name = 'memory_now';
- MemTotal = data.MemTotal div 1024;
- Active = data.Active div 1024;
- Cached = data.Cached div 1024;
- Inactive = data.Inactive div 1024;
- MemFree = data.MemFree div 1024;
- Buffers = data.Buffers div 1024;
+ MemTotal = row.0 div 1024;
+ MemFree = row.1 div 1024;
+ Active = row.2 div 1024;
+ Cached = row.4 div 1024;
+ Inactive = row.3 div 1024;
+ Swapped = row.5 div 1024;
d2 = [
- ["Active ${Active} MB","Cached ${Cached} MB","Inactive ${Inactive} MB","MemFree ${MemFree} MB","Buffers ${Buffers} MB"],
- [ data.Active, data.Cached, data.Inactive, data.MemFree, data.Buffers]
+ [ "${fields.2} ${Active} MB","${fields.3} ${Inactive} MB","${fields.4} ${Cached} MB","${fields.5} ${Swapped} MB","${fields.1} ${MemFree} MB"],
+ [ row.2, row.3, row.4, row.5, row.1]
];
+
USE my_graph = GD.Graph.pie(375, 375);
- label = gettext('Total Memory');
+ label = fields.0;
label = "${label} ${MemTotal} MB";
my_graph.set(
axislabelclr => 'black',
diff --git a/skins/stone/network.tmpl b/skins/stone/network.tmpl
index d9f781e..263e0be 100644
--- a/skins/stone/network.tmpl
+++ b/skins/stone/network.tmpl
@@ -10,10 +10,11 @@
statusfiles = [];
FILTER null;
- name = 'network_stat';
+ fields = data.shift;
+
timestamps = [];
- FOREACH entry = param.stack.first.network;
- iname = entry.first.split(':').first;
+ FOREACH row = data;
+ iname = row.0.split(':').first;
rxbytes.${iname} = [];
txbytes.${iname} = [];
@@ -23,27 +24,26 @@
oldentry.${iname} = [];
END;
- FOREACH item = param.stack;
- t = date.format(item.timestamp, '%H:%M');
- timestamps.push(t);
+ FOREACH row = data;
+ IF ot != row.5;
+ t = date.format(row.5, '%H:%M');
+ timestamps.push(t);
+ ot = row.5;
+ END;
- FOREACH entry = item.network;
- iname = entry.first.split(':').first;
+ iname = row.0.split(':').first;
UNLESS oldentry.${iname}.size;
- oldentry.${iname} = entry;
+ oldentry.${iname} = row;
END;
- bytes = entry.1 - oldentry.${iname}.1;
- rxbytes.${iname}.push(bytes);
+ bytes = row.1 - oldentry.${iname}.1;
+ rxbytes.${iname}.push(bytes / (1024*1024));
- bytes = entry.5 - oldentry.${iname}.5;
- txbytes.${iname}.push(bytes);
+ bytes = row.3 - oldentry.${iname}.3;
+ txbytes.${iname}.push(bytes / (1024*1024));
- rxerror.${iname}.push(entry.3);
- txerror.${iname}.push(entry.7);
- oldentry.${iname} = entry;
- END;
+ oldentry.${iname} = row;
END;
FOREACH iname = rxbytes.keys.sort;
@@ -52,17 +52,15 @@
d = [
timestamps,
rxbytes.${iname},
- rxerror.${iname},
- txbytes.${iname},
- txerror.${iname},
+ txbytes.${iname}
];
USE my_graph = GD.Graph.lines(375,375);
# Xsteps
- steps = param.stack.size div 5;
+ steps = timestamps.size div 5;
label = gettext('Traffic on Interface');
- y_label = gettext('Transfer in bytes')
+ y_label = gettext('MB')
label = "${label} ${iname} (${y_label})";
my_graph.set(
x_label_skip => steps,
@@ -72,9 +70,9 @@
line_width => 2,
box_axis => 1,
- boxclr => '#FFFFCC',
+ boxclr => '#FFFFFF',
fgclr => '#BBBBBB'
- legend_placement => 'RD',
+ legend_placement => 'BO',
legend_spacing => 5,
);
my_graph.set_title_font(param.font,10);
@@ -82,7 +80,7 @@
my_graph.set_x_label_font(param.font,10);
my_graph.set_x_axis_font(param.font,6);
my_graph.set_y_axis_font(param.font,6);
- my_graph.set_legend( 'RxBytes', 'RxErrors', 'TxBytes', 'TxErrors');
+ my_graph.set_legend( fields.1, fields.3);
file = writefile("status_network_${iname}.gif", my_graph.plot(d).gif );
statusfiles.push([ label , file ]);
END;
@@ -94,35 +92,6 @@
<h1><?% param.headingText %?></h1>
<?% END %?>
-
-
-<div class="areabegin">
-<table class="largetable" summary="">
- <tr><td class="largehead">&nbsp;</td></tr>
- <tr>
- <td class="largetext">
- <table summary="" width="100%">
- <?% fields = data.shift %?>
- <tr>
- <?% FOREACH field = fields %?>
- <th><?% field %?></th>
- <?% END %?>
- </tr>
- <?% FOREACH zeile = data %?>
- <tr<?% ' class="two"' IF loop.count mod 2 == 1 %?>>
- <?% FOREACH field = zeile %?>
- <td><?% field.replace('\n', '<br />') %?></td>
- <?% END %?>
- </tr>
- <?% END %?>
-
- </table>
- </td>
- </tr>
- <tr><td class="largebottom"></td></tr>
-</table>
-<div class="areaclose"></div>
-
<?% FOREACH file = statusfiles %?>
<div class="areabegin">
<table class="areatable" summary="">
diff --git a/skins/stone/vitals.tmpl b/skins/stone/vitals.tmpl
index 82077f5..1a8d8cd 100644
--- a/skins/stone/vitals.tmpl
+++ b/skins/stone/vitals.tmpl
@@ -57,9 +57,9 @@
line_width => 2,
box_axis => 1,
- boxclr => '#FFFFCC',
+ boxclr => '#FFFFFF',
fgclr => '#BBBBBB'
- legend_placement => 'RD',
+ legend_placement => 'BO',
legend_spacing => 5,
);
my_graph.set_title_font(param.font,10);
diff --git a/skins/stone/widgets/wait.tmpl b/skins/stone/widgets/wait.tmpl
index 14deedd..4598725 100644
--- a/skins/stone/widgets/wait.tmpl
+++ b/skins/stone/widgets/wait.tmpl
@@ -3,16 +3,12 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
+ <link rel="stylesheet" type="text/css" href="style-<?% skin %?>.css" media="all" />
<title>XXV</title>
<meta http-equiv="content-type" content="text/html; charset=<?% charset %?>" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="pragma" content="no-cache" />
<meta name="robots" content="noindex,noarchive,nofollow" />
-<style type="text/css">
-<!--
- <?% INCLUDE style.css %?>
--->
-</style>
</head>
<?% IF info.http_useragent.match('.*MSIE.*') && !info.http_useragent.match('.*Opera.*');
global.imagetyp = "gif";
diff --git a/skins/stone_flat/filesys.tmpl b/skins/stone_flat/filesys.tmpl
index f84509a..a5bd3a3 100644
--- a/skins/stone_flat/filesys.tmpl
+++ b/skins/stone_flat/filesys.tmpl
@@ -24,7 +24,7 @@ IF param.graphic;
[ device.5, free],
];
- USE my_graph = GD.Graph.pie(500, 300);
+ USE my_graph = GD.Graph.pie(300, 200);
label = gettext('Total space');
label = "${device.0} - ${device.6} - ${label} ${device.2}";
diff --git a/skins/stone_flat/memory.tmpl b/skins/stone_flat/memory.tmpl
index 2fc2f1d..27b01fb 100644
--- a/skins/stone_flat/memory.tmpl
+++ b/skins/stone_flat/memory.tmpl
@@ -9,43 +9,42 @@
<?%
USE date;
statusfiles = [];
+ fields = data.shift;
FILTER null;
name = 'memory_stat';
swapdata = [];
activedata = [];
cacheddata = [];
- buffersdata = [];
+ inactivedata = [];
timestamps = [];
- FOREACH item = param.stack;
- t = date.format(item.timestamp, '%H:%M:%S');
+ FOREACH row = data;
+ t = date.format(row.6, '%H:%M');
timestamps.push(t);
- swapdata.push(item.memory.SwapTotal);
- activedata.push(item.memory.Active);
- cacheddata.push(item.memory.Cached);
- buffersdata.push(item.memory.Buffers);
+ activedata.push(row.2 / (1024));
+ inactivedata.push(row.3 / (1024));
+ cacheddata.push(row.4 / (1024));
+ swapdata.push(row.5 / (1024));
END;
- # Maximum wert
- max = param.stack.last.memory.MemTotal;
-
# Data ...
d = [
timestamps ,
- swapdata ,
- cacheddata ,
activedata ,
- buffersdata ,
+ inactivedata
+ cacheddata ,
+ swapdata
];
- USE my_graph = GD.Graph.lines(575,300);
+ USE my_graph = GD.Graph.lines(575,375);
# Xsteps
- steps = param.stack.size div 5;
+ steps = data.size div 5;
label = gettext('Memory usage since');
- y_label = gettext('Memory usage in bytes'),
- label = "${label} ${d.first.first} (${y_label})";
+ label_y = gettext('Memory usage in MB')
+ label = "${label} ${d.first.first} (${label_y})";
+
my_graph.set(
x_label_skip => steps,
x_long_ticks => 1,
@@ -54,9 +53,9 @@
line_width => 2,
box_axis => 1,
- boxclr => '#FFFFCC',
+ boxclr => '#FFFFFF',
fgclr => '#BBBBBB'
- legend_placement => 'RD',
+ legend_placement => '>BO',
legend_spacing => 5,
);
my_graph.set_title_font(param.font,10);
@@ -64,28 +63,29 @@
my_graph.set_x_label_font(param.font,10);
my_graph.set_x_axis_font(param.font,6);
my_graph.set_y_axis_font(param.font,6);
- my_graph.set_legend( 'Swap', 'Active', 'Cached', 'Buffers');
+ my_graph.set_legend( fields.2, fields.3, fields.4, fields.5);
file = writefile("status_${name}.gif", my_graph.plot(d).gif );
- statusfiles.push([label, file]);
+ statusfiles.push([ label , file ]);
END;
# ------------------- Piegraph für Speicher
+ row = data.last;
FILTER null;
name = 'memory_now';
- MemTotal = data.MemTotal div 1024;
- Active = data.Active div 1024;
- Cached = data.Cached div 1024;
- Inactive = data.Inactive div 1024;
- MemFree = data.MemFree div 1024;
- Buffers = data.Buffers div 1024;
+ MemTotal = row.0 div 1024;
+ MemFree = row.1 div 1024;
+ Active = row.2 div 1024;
+ Cached = row.4 div 1024;
+ Inactive = row.3 div 1024;
+ Swapped = row.5 div 1024;
d2 = [
- ["Active ${Active} MB","Cached ${Cached} MB","Inactive ${Inactive} MB","MemFree ${MemFree} MB","Buffers ${Buffers} MB"],
- [ data.Active, data.Cached, data.Inactive, data.MemFree, data.Buffers]
+ [ "${fields.2} ${Active} MB","${fields.3} ${Inactive} MB","${fields.4} ${Cached} MB","${fields.5} ${Swapped} MB","${fields.1} ${MemFree} MB"],
+ [ row.2, row.3, row.4, row.5, row.1]
];
- USE my_graph = GD.Graph.pie(500, 300);
- label = gettext('Total Memory');
+ USE my_graph = GD.Graph.pie(300, 200);
+ label = fields.0;
label = "${label} ${MemTotal} MB";
my_graph.set(
axislabelclr => 'black',
@@ -96,7 +96,7 @@
my_graph.set_label_font(param.font,10);
my_graph.set_value_font(param.font,8);
file = writefile("status_${name}.gif", my_graph.plot(d2).gif );
- statusfiles.push([label, file]);
+ statusfiles.push([ label , file ]);
END;
%?>
diff --git a/skins/stone_flat/network.tmpl b/skins/stone_flat/network.tmpl
index 4683e7f..be95538 100644
--- a/skins/stone_flat/network.tmpl
+++ b/skins/stone_flat/network.tmpl
@@ -10,10 +10,11 @@
statusfiles = [];
FILTER null;
- name = 'network_stat';
+ fields = data.shift;
+
timestamps = [];
- FOREACH entry = param.stack.first.network;
- iname = entry.first.split(':').first;
+ FOREACH row = data;
+ iname = row.0.split(':').first;
rxbytes.${iname} = [];
txbytes.${iname} = [];
@@ -23,27 +24,26 @@
oldentry.${iname} = [];
END;
- FOREACH item = param.stack;
- t = date.format(item.timestamp, '%H:%M:%S');
- timestamps.push(t);
+ FOREACH row = data;
+ IF ot != row.5;
+ t = date.format(row.5, '%H:%M');
+ timestamps.push(t);
+ ot = row.5;
+ END;
- FOREACH entry = item.network;
- iname = entry.first.split(':').first;
+ iname = row.0.split(':').first;
UNLESS oldentry.${iname}.size;
- oldentry.${iname} = entry;
+ oldentry.${iname} = row;
END;
- bytes = entry.1 - oldentry.${iname}.1;
- rxbytes.${iname}.push(bytes);
+ bytes = row.1 - oldentry.${iname}.1;
+ rxbytes.${iname}.push(bytes / (1024*1024));
- bytes = entry.5 - oldentry.${iname}.5;
- txbytes.${iname}.push(bytes);
+ bytes = row.3 - oldentry.${iname}.3;
+ txbytes.${iname}.push(bytes / (1024*1024));
- rxerror.${iname}.push(entry.3);
- txerror.${iname}.push(entry.7);
- oldentry.${iname} = entry;
- END;
+ oldentry.${iname} = row;
END;
FOREACH iname = rxbytes.keys.sort;
@@ -52,17 +52,15 @@
d = [
timestamps,
rxbytes.${iname},
- rxerror.${iname},
- txbytes.${iname},
- txerror.${iname},
+ txbytes.${iname}
];
USE my_graph = GD.Graph.lines(575,300);
# Xsteps
- steps = param.stack.size div 5;
+ steps = timestamps.size div 5;
label = gettext('Traffic on Interface');
- y_label = gettext('Transfer in bytes');
+ y_label = gettext('MB')
label = "${label} ${iname} (${y_label})";
my_graph.set(
x_label_skip => steps,
@@ -72,9 +70,9 @@
line_width => 2,
box_axis => 1,
- boxclr => '#FFFFCC',
+ boxclr => '#FFFFFF',
fgclr => '#BBBBBB'
- legend_placement => 'RD',
+ legend_placement => 'BO',
legend_spacing => 5,
);
my_graph.set_title_font(param.font,10);
@@ -82,10 +80,9 @@
my_graph.set_x_label_font(param.font,10);
my_graph.set_x_axis_font(param.font,6);
my_graph.set_y_axis_font(param.font,6);
- my_graph.set_legend( 'RxBytes', 'RxErrors', 'TxBytes', 'TxErrors');
+ my_graph.set_legend( fields.1, fields.3);
file = writefile("status_network_${iname}.gif", my_graph.plot(d).gif );
- statusfiles.push([label, file]);
-
+ statusfiles.push([ label , file ]);
END;
END;
%?>
@@ -95,30 +92,6 @@
<h1><?% param.headingText %?></h1>
<?% END %?>
-<table class="editortable" summary="">
- <tr><td class="editorhead">&nbsp;</td></tr>
- <tr>
- <td class="editortext">
- <table summary="" width="100%">
- <?% fields = data.shift %?>
- <tr>
- <?% FOREACH field = fields %?>
- <th><?% field %?></th>
- <?% END %?>
- </tr>
- <?% FOREACH zeile = data %?>
- <tr<?% ' class="two"' IF loop.count mod 2 == 1 %?>>
- <?% FOREACH field = zeile %?>
- <td><?% field.replace('\n', '<br />') %?></td>
- <?% END %?>
- </tr>
- <?% END %?>
- </table>
- </td>
- </tr>
- <tr><td class="editorbottom"></td></tr>
-</table>
-
<?% FOREACH file = statusfiles %?>
<table class="editortable" summary="">
<tr><td class="editorhead"><?% file.0 %?></td></tr>
diff --git a/skins/stone_flat/vitals.tmpl b/skins/stone_flat/vitals.tmpl
index f8f9e20..19fa6ae 100644
--- a/skins/stone_flat/vitals.tmpl
+++ b/skins/stone_flat/vitals.tmpl
@@ -57,9 +57,9 @@
line_width => 2,
box_axis => 1,
- boxclr => '#FFFFCC',
+ boxclr => '#FFFFFF',
fgclr => '#BBBBBB'
- legend_placement => 'RD',
+ legend_placement => 'BO',
legend_spacing => 5,
);
my_graph.set_title_font(param.font,10);
diff --git a/skins/xstyle/memory.tmpl b/skins/xstyle/memory.tmpl
index 7c455d9..a0572f3 100644
--- a/skins/xstyle/memory.tmpl
+++ b/skins/xstyle/memory.tmpl
@@ -1,39 +1,37 @@
<?%
USE date;
statusfiles = {};
+ fields = data.shift;
FILTER null;
name = 'memory_stat';
swapdata = [];
activedata = [];
cacheddata = [];
- buffersdata = [];
+ inactivedata = [];
timestamps = [];
- FOREACH item = param.stack;
- t = date.format(item.timestamp, '%H:%M:%S');
+ FOREACH row = data;
+ t = date.format(row.6, '%H:%M');
timestamps.push(t);
- swapdata.push(item.memory.SwapTotal);
- activedata.push(item.memory.Active);
- cacheddata.push(item.memory.Cached);
- buffersdata.push(item.memory.Buffers);
+ activedata.push(row.2 / (1024));
+ inactivedata.push(row.3 / (1024));
+ cacheddata.push(row.4 / (1024));
+ swapdata.push(row.5 / (1024));
END;
- # Maximum wert
- max = param.stack.last.memory.MemTotal;
-
# Data ...
d = [
timestamps ,
- swapdata ,
- cacheddata ,
activedata ,
- buffersdata ,
+ inactivedata
+ cacheddata ,
+ swapdata
];
USE my_graph = GD.Graph.lines(500,300);
# Xsteps
- steps = param.stack.size div 5;
+ steps = data.size div 5;
label = gettext('Memory usage since');
label = "${label} ${d.first.first}";
@@ -42,7 +40,7 @@
x_label_skip => steps,
x_long_ticks => 1,
- y_label => gettext('Memory usage in bytes'),
+ y_label => gettext('Memory usage in MB'),
y_long_ticks => 1,
line_width => 2,
@@ -57,27 +55,28 @@
my_graph.set_x_label_font(param.font,10);
my_graph.set_x_axis_font(param.font,6);
my_graph.set_y_axis_font(param.font,6);
- my_graph.set_legend( 'Swap', 'Active', 'Cached', 'Buffers');
- statusfiles.$name = writefile("status_${name}.png", my_graph.plot(d).gif );
+ my_graph.set_legend( fields.2, fields.3, fields.4, fields.5 );
+ statusfiles.$name = writefile("status_${name}.gif", my_graph.plot(d).gif );
END;
# ------------------- Piegraph für Speicher
+ row = data.last;
FILTER null;
name = 'memory_now';
- MemTotal = data.MemTotal div 1024;
- Active = data.Active div 1024;
- Cached = data.Cached div 1024;
- Inactive = data.Inactive div 1024;
- MemFree = data.MemFree div 1024;
- Buffers = data.Buffers div 1024;
+ MemTotal = row.0 div 1024;
+ MemFree = row.1 div 1024;
+ Active = row.2 div 1024;
+ Cached = row.4 div 1024;
+ Inactive = row.3 div 1024;
+ Swapped = row.5 div 1024;
d2 = [
- ["Active ${Active} MB","Cached ${Cached} MB","Inactive ${Inactive} MB","MemFree ${MemFree} MB","Buffers ${Buffers} MB"],
- [ data.Active, data.Cached, data.Inactive, data.MemFree, data.Buffers]
+ [ "${fields.2} ${Active} MB","${fields.3} ${Inactive} MB","${fields.4} ${Cached} MB","${fields.5} ${Swapped} MB","${fields.1} ${MemFree} MB"],
+ [ row.2, row.3, row.4, row.5, row.1 ]
];
USE my_graph = GD.Graph.pie(400, 300);
- label = gettext('Total Memory');
+ label = fields.0;
label = "${label} ${MemTotal} MB";
my_graph.set(
title => label,
@@ -88,7 +87,7 @@
my_graph.set_title_font(param.font,10);
my_graph.set_label_font(param.font,10);
my_graph.set_value_font(param.font,8);
- statusfiles.$name = writefile("status_${name}.png", my_graph.plot(d2).gif );
+ statusfiles.$name = writefile("status_${name}.gif", my_graph.plot(d2).gif );
END;
%?>
<!-- Vitals Template -->
diff --git a/skins/xstyle/network.tmpl b/skins/xstyle/network.tmpl
index f9b3a93..314c1f2 100644
--- a/skins/xstyle/network.tmpl
+++ b/skins/xstyle/network.tmpl
@@ -3,10 +3,11 @@
statusfiles = {};
FILTER null;
- name = 'network_stat';
+ fields = data.shift;
+
timestamps = [];
- FOREACH entry = param.stack.first.network;
- iname = entry.first.split(':').first;
+ FOREACH row = data;
+ iname = row.0.split(':').first;
rxbytes.${iname} = [];
txbytes.${iname} = [];
@@ -16,27 +17,26 @@
oldentry.${iname} = [];
END;
- FOREACH item = param.stack;
- t = date.format(item.timestamp, '%H:%M:%S');
- timestamps.push(t);
+ FOREACH row = data;
+ IF ot != row.5;
+ t = date.format(row.5, '%H:%M');
+ timestamps.push(t);
+ ot = row.5;
+ END;
- FOREACH entry = item.network;
- iname = entry.first.split(':').first;
+ iname = row.0.split(':').first;
UNLESS oldentry.${iname}.size;
- oldentry.${iname} = entry;
+ oldentry.${iname} = row;
END;
- bytes = entry.1 - oldentry.${iname}.1;
- rxbytes.${iname}.push(bytes);
+ bytes = row.1 - oldentry.${iname}.1;
+ rxbytes.${iname}.push(bytes / (1024*1024));
- bytes = entry.5 - oldentry.${iname}.5;
- txbytes.${iname}.push(bytes);
+ bytes = row.3 - oldentry.${iname}.3;
+ txbytes.${iname}.push(bytes / (1024*1024));
- rxerror.${iname}.push(entry.3);
- txerror.${iname}.push(entry.7);
- oldentry.${iname} = entry;
- END;
+ oldentry.${iname} = row;
END;
FOREACH iname = rxbytes.keys.sort;
@@ -45,23 +45,21 @@
d = [
timestamps,
rxbytes.${iname},
- rxerror.${iname},
- txbytes.${iname},
- txerror.${iname},
+ txbytes.${iname}
];
USE my_graph = GD.Graph.lines(600,300);
# Xsteps
- steps = param.stack.size / 5 | format('%d');
+ steps = timestamps.size div 5;
label = gettext('Traffic on Interface');
- label = "${label} ${iname}";
+ y_label = gettext('MB')
+ label = "${label} ${iname} (${y_label})";
my_graph.set(
title => label,
x_label_skip => steps,
x_long_ticks => 1,
- y_label => gettext('Transfer in bytes'),
y_long_ticks => 1,
line_width => 2,
@@ -76,31 +74,16 @@
my_graph.set_x_label_font(param.font,10);
my_graph.set_x_axis_font(param.font,6);
my_graph.set_y_axis_font(param.font,6);
- my_graph.set_legend( 'RxBytes', 'RxErrors', 'TxBytes', 'TxErrors');
+ my_graph.set_legend( fields.1, fields.3);
statusfiles.$iname = writefile("status_network_${iname}.png", my_graph.plot(d).gif );
END;
END;
%?>
-
<!-- Vitals Template -->
<?% IF param.headingText %?>
<h3><?% param.headingText %?></h3>
<?% END %?>
<table border="0" width="95%">
- <?% fields = data.shift %?>
- <tr>
- <?% FOREACH field = fields %?>
- <th><?% field %?></th>
- <?% END %?>
- </tr>
- <?% FOREACH zeile = data %?>
- <tr>
- <?% FOREACH field = zeile %?>
- <td><?% field %?></td>
- <?% END %?>
- </tr>
- <?% END %?>
-
<?% FOREACH file = statusfiles.keys %?>
<tr>
<td colspan="<?% fields.size %?>" align=center>
diff --git a/skins/xstyle/schema.tmpl b/skins/xstyle/schema.tmpl
index 5d5d23a..c147791 100644
--- a/skins/xstyle/schema.tmpl
+++ b/skins/xstyle/schema.tmpl
@@ -52,104 +52,16 @@ sec_height = 0.1;
<style>
/* Schema */
-#channel
-{
- margin: 3px;
- position: relative;
- float:left;
-}
#channelcontainer
{
height: <?% Duration * sec_height %?>px;
- width: 200px;
- border: 1px solid #999;
- position: relative;
- background:#FFF url(style/tr_bck.gif) repeat-x;
- overflow: hidden;
-}
-
-#channeltitle, #channeltitle a
-{
- font-weight:bold;
- font-size:1.1em;
- background-color:blue;
- color:white;
- padding: 3px;
-
-}
-
-#eventbox
-{
- margin: 1px;
- border: 1px solid #999;
- position: relative;
- overflow: hidden;
- background:#FFF url(style/foot_bck.gif) repeat-x;
-}
-
-#eventbox_time
-{
- margin:3px;
- font-size:0.8em;
- float: left;
- background:#eee;
- height:98%;
-}
-
-#eventbox_title
-{
- font-weight:bold;
- font-size:1.1em;
- margin: 3px;
}
-
-#eventbox_title_link
-{
- font-size:0.7em;
- margin: 2px;
-}
-
-#eventbox_subtitle
-{
- font-weight:bold;
- font-style:italic;
- font-size:0.8em;
- margin: 3px;
-}
-
-#eventbox_text
-{
- font-style:italic;
- font-size:0.8em;
- margin: 3px;
-}
-
-#eventbox_bild
-{
- margin: 3px;
-}
-#eventbox_bild img {
- margin: 0px;
- padding: 0px;
- width : 140px;
- height : 105px;
- display : inline;
-}
-
<?% ttm = date.now - param.zeitvon;
ttm = ttm * sec_height;
%?>
#timemarker
{
- margin: 1px;
- border-top: 1px dashed #F00;
- position: absolute;
top: <?% ttm | format('%d') %?>px;
- width:100%;
- font-size:0.6em;
- text-align: right;
- color:#F00;
- z-index:99;
}
</style>
<table width='<?% (data.keys.size * 210) %?>'><td>
diff --git a/skins/xstyle/style/style.css b/skins/xstyle/style/style.css
index 962e67a..c650f09 100644
--- a/skins/xstyle/style/style.css
+++ b/skins/xstyle/style/style.css
@@ -290,3 +290,99 @@ caption
margin: 0px;
background-color: #ffffff;
}
+
+/* Schema */
+#channel
+{
+ margin: 3px;
+ position: relative;
+ float:left;
+}
+#channelcontainer
+{
+ width: 200px;
+ border: 1px solid #999;
+ position: relative;
+ background:#FFF url(tr_bck.gif) repeat-x;
+ overflow: hidden;
+}
+
+#channeltitle, #channeltitle a
+{
+ font-weight:bold;
+ font-size:1.1em;
+ background-color:blue;
+ color:white;
+ padding: 3px;
+}
+
+#eventbox
+{
+ margin: 1px;
+ border: 1px solid #999;
+ position: relative;
+ overflow: hidden;
+ background:#FFF url(style/foot_bck.gif) repeat-x;
+}
+
+#eventbox_time
+{
+ margin:3px;
+ font-size:0.8em;
+ float: left;
+ background:#eee;
+ height:98%;
+}
+
+#eventbox_title
+{
+ font-weight:bold;
+ font-size:1.1em;
+ margin: 3px;
+}
+
+#eventbox_title_link
+{
+ font-size:0.7em;
+ margin: 2px;
+}
+
+#eventbox_subtitle
+{
+ font-weight:bold;
+ font-style:italic;
+ font-size:0.8em;
+ margin: 3px;
+}
+
+#eventbox_text
+{
+ font-style:italic;
+ font-size:0.8em;
+ margin: 3px;
+}
+
+#eventbox_bild
+{
+ margin: 3px;
+}
+
+#eventbox_bild img {
+ margin: 0px;
+ padding: 0px;
+ width : 140px;
+ height : 105px;
+ display : inline;
+}
+
+#timemarker
+{
+ margin: 1px;
+ border-top: 1px dashed #F00;
+ position: absolute;
+ width:100%;
+ font-size:0.6em;
+ text-align: right;
+ color:#F00;
+ z-index:2;
+}
diff --git a/skins/xstyle/widgets/footer.tmpl b/skins/xstyle/widgets/footer.tmpl
index 61e4372..f7e16b2 100644
--- a/skins/xstyle/widgets/footer.tmpl
+++ b/skins/xstyle/widgets/footer.tmpl
@@ -53,8 +53,7 @@ print Dumper($stash->_dump_frame(5));
<div id="TOOLTIP"></div>
<div class='footer'>
-User: <?% user %?><br>
-<a href="http://xxv.berlios.de">XXV System</a> -- Version: <?% version %?> -- created by xpix, hulk and poetter 2004 - 2008
+<a href="http://xxv.berlios.de">XXV System</a> -- Version: <?% version %?>
</div>
</body>
</HTML>