diff --git a/src/webui/static/app/extensions.js b/src/webui/static/app/extensions.js
index cd6583dc..abd485ed 100644
--- a/src/webui/static/app/extensions.js
+++ b/src/webui/static/app/extensions.js
@@ -347,6 +347,7 @@ Ext.reg("multiselect", Ext.ux.Multiselect);
/**
* 22/07/2014: ceiling support backported from version 1.2, by Kai Sommerfeld
+ * 01/08/2014: tvh_renderer fcn added by Jaroslav Kysela
*/
Ext.namespace('Ext.ux.grid');
@@ -402,7 +403,14 @@ Ext.extend(Ext.ux.grid.ProgressColumn, Ext.util.Observable, {
this.grid.startEditing(rowIndex, colIndex);
}
},
+ tvh_renderer: function (v, p, record) {
+ return v;
+ },
renderer: function(v, p, record) {
+ v = this.tvh_renderer(v, p, record);
+ if (typeof v === "string")
+ return v; // custom string
+
var style = '';
var textClass = (v < (this.ceiling / 1.818)) ? 'x-progress-text-back' : 'x-progress-text-front' + (Ext.isIE6 ? '-ie6' : '');
diff --git a/src/webui/static/app/status.js b/src/webui/static/app/status.js
index 7c8e78b5..5375d124 100644
--- a/src/webui/static/app/status.js
+++ b/src/webui/static/app/status.js
@@ -269,10 +269,41 @@ tvheadend.status_streams = function() {
dataIndex: 'cc'
}]);
- var has_signal_rel = false;
- var has_signal_dbm = false;
- var has_snr_rel = false;
- var has_snr_db = false;
+ cm.config.push(new Ext.ux.grid.ProgressColumn({
+ header: "SNR",
+ dataIndex: 'snr',
+ width: 85,
+ colored: true,
+ ceiling: 65535,
+ tvh_renderer: function(v, p, record) {
+ var scale = record.get('snr_scale');
+ if (scale == 1)
+ return v;
+ if (scale == 2 && v > 0) {
+ var snr = v * 0.0001;
+ return snr.toFixed(1) + " dB";
+ }
+ return 'Unknown';
+ }
+ }));
+
+ cm.config.push(new Ext.ux.grid.ProgressColumn({
+ header: "Signal Strength",
+ dataIndex: 'signal',
+ width: 85,
+ colored: true,
+ ceiling: 65535,
+ tvh_renderer: function(v, p, record) {
+ var scale = record.get('snr_scale');
+ if (scale == 1)
+ return v;
+ if (scale == 2 && v > 0) {
+ var snr = v * 0.0001;
+ return snr.toFixed(1) + " dBm";
+ }
+ return 'Unknown';
+ }
+ }));
tvheadend.comet.on('input_status', function(m) {
if (m.reload != null)
@@ -296,68 +327,6 @@ tvheadend.status_streams = function() {
r.data.ec_block = m.ec_block;
r.data.tc_block = m.tc_block;
- if (r.data.snr_scale == 1 /* scale_relative */) {
- if (!has_snr_rel) {
- cm.config.push(new Ext.ux.grid.ProgressColumn({
- header: "SNR (%)",
- dataIndex: 'snr',
- width: 85,
- colored: true,
- ceiling: 65535
- }));
- has_snr_rel = true;
- }
- }
- else if (r.data.snr_scale == 2 /* scale_decibel */) {
- if (!has_snr_db) {
- cm.config.push(new Ext.grid.Column({
- width: 50,
- header: "SNR (dB)",
- dataIndex: 'snr',
- renderer: function(value) {
- if (value > 0) {
- var snr = value * 0.0001;
- return snr.toFixed(1) + " dB";
- } else {
- return 'Unknown';
- }
- }
- }));
- has_snr_db = true;
- }
- }
-
- if (r.data.signal_scale == 1 /* scale_relative */) {
- if (!has_signal_rel) {
- cm.config.push(new Ext.ux.grid.ProgressColumn({
- header: "Signal Strength (%)",
- dataIndex: 'signal',
- width: 85,
- colored: true,
- ceiling: 65535
- }));
- has_signal_rel = true;
- }
- }
- else if (r.data.signal_scale == 2 /* scale_decibel */) {
- if (!has_signal_dbm) {
- cm.config.push(new Ext.grid.Column({
- width: 50,
- header: "Signal Strength (dBm)",
- dataIndex: 'signal',
- renderer: function(value) {
- if (value > 0) {
- var snr = value * 0.0001;
- return snr.toFixed(1) + " dBm";
- } else {
- return 'Unknown';
- }
- }
- }));
- has_signal_dbm = true;
- }
- }
-
tvheadend.streamStatusStore.afterEdit(r);
tvheadend.streamStatusStore.fireEvent('updated',
tvheadend.streamStatusStore,