tvheadend/src/webui/static/app/chconf.js
Piotr Kuchciak 4ad249ec01 WEBUI: Changed icon
-Clean icon image cache
-Reset Icon
2014-10-23 11:15:59 +02:00

252 lines
6.8 KiB
JavaScript

/**
* Channel tags
*/
insertChannelTagsClearOption = function( scope, records, options ){
var placeholder = Ext.data.Record.create(['key', 'val']);
scope.insert(0,new placeholder({key: '-1', val: '(Clear filter)'}));
};
tvheadend.channelTags = tvheadend.idnode_get_enum({
url: 'api/channeltag/list',
event: 'channeltag',
listeners: {
'load': insertChannelTagsClearOption
}
});
tvheadend.comet.on('channeltags', function(m) {
if (m.reload != null)
tvheadend.channelTags.reload();
});
/**
* Channels
*/
tvheadend.channelrec = new Ext.data.Record.create(
['name', 'chid', 'epggrabsrc', 'tags', 'ch_icon', 'epg_pre_start',
'epg_post_end', 'number']);
insertChannelClearOption = function( scope, records, options ){
var placeholder = Ext.data.Record.create(['key', 'val']);
scope.insert(0,new placeholder({key: '-1', val: '(Clear filter)'}));
};
tvheadend.channels = tvheadend.idnode_get_enum({
url: 'api/channel/list',
listeners: {
'load': insertChannelClearOption
}
});
tvheadend.channel_tab = function(panel, index)
{
function decode_dot_number(number) {
var a = number.split('.');
if (a.length !== 2)
return null;
a[0] = parseInt(a[0]);
a[1] = parseInt(a[1]);
return a;
}
function assign_low_number(ctx, e, store, sm) {
if (sm.getCount() !== 1)
return;
var nums = [];
store.each(function() {
var number = this.data.number;
if (typeof number === "number" && number > 0)
nums.push(number);
});
if (nums.length === 0)
{
sm.getSelected().set('number', 1);
return;
}
nums.sort(function(a, b) {
return (a - b);
});
var max = nums[nums.length - 1];
var low = max + 1;
for (var i = 1; i <= max; ++i)
{
var ct = false;
for (var j = 0; j < nums.length; ++j)
if (nums[j] === i)
{
ct = true;
break
}
if (!ct)
{
low = i;
break;
}
}
sm.getSelected().set('number', low);
sm.selectNext();
}
function move_number_up(ctx, e, store, sm) {
Ext.each(sm.getSelections(), function(channel) {
var number = channel.data.number;
if (typeof number !== "string")
channel.set('number', number + 1);
else {
a = decode_dot_number(number);
if (a !== null)
channel.set('number', a[0] + '.' + (a[1] + 1));
}
});
}
function move_number_down(ctx, e, store, sm) {
Ext.each(sm.getSelections(), function(channel) {
var number = channel.data.number;
if (typeof number !== "string" && number > 0)
channel.set('number', number - 1);
else {
a = decode_dot_number(number);
if (a !== null && a[1] > 0)
channel.set('number', a[0] + '.' + (a[1] - 1));
}
});
}
function swap_numbers(ctx, e, store, sm) {
if (sm.getCount() !== 2)
return;
var sel = sm.getSelections();
var tmp = sel[0].data.number;
sel[0].set('number', sel[1].data.number);
sel[1].set('number', tmp);
}
function reset_icons(ctx, e, store, sm) {
Ext.each(sm.getSelections(), function(channel) {
channel.set('icon', '');
});
}
var mapButton = {
name: 'map',
builder: function() {
return new Ext.Toolbar.Button({
tooltip: 'Map services to channels',
iconCls: 'clone',
text: 'Map Services',
disabled: false
});
},
callback: tvheadend.service_mapper
};
var lowNoButton = {
name: 'lowno',
builder: function() {
return new Ext.Toolbar.Button({
tooltip: 'Assign lowest free channel number',
iconCls: 'bullet_add',
text: 'Assign Number',
disabled: false
});
},
callback: assign_low_number
};
var noUpButton = {
name: 'noup',
builder: function() {
return new Ext.Toolbar.Button({
tooltip: 'Move channel one number up',
iconCls: 'arrow_up',
text: 'Number Up',
disabled: false
});
},
callback: move_number_up
};
var noDownButton = {
name: 'nodown',
builder: function() {
return new Ext.Toolbar.Button({
tooltip: 'Move channel one number down',
iconCls: 'arrow_down',
text: 'Number Down',
disabled: false
});
},
callback: move_number_down
};
var noSwapButton = {
name: 'swap',
builder: function() {
return new Ext.Toolbar.Button({
tooltip: 'Swap the two selected channels numbers',
iconCls: 'arrow_switch',
text: 'Swap Numbers',
disabled: false
});
},
callback: swap_numbers
};
var iconResetButton = {
name: 'iconreset',
builder: function() {
return new Ext.Toolbar.Button({
tooltip: 'Reset (clear) the selected icon URLs',
iconCls: 'resetIcon',
text: 'Reset Icon',
disabled: false
});
},
callback: reset_icons
};
tvheadend.idnode_grid(panel, {
url: 'api/channel',
comet: 'channel',
titleS: 'Channel',
titleP: 'Channels',
iconCls: 'channels',
tabIndex: index,
help: function() {
new tvheadend.help('Channels', 'config_channels.html');
},
add: {
url: 'api/channel',
create: {}
},
del: true,
tbar: [mapButton, lowNoButton, noUpButton, noDownButton, noSwapButton, iconResetButton],
lcol: [
{
width: 50,
header: 'Play',
renderer: function(v, o, r) {
var title = '';
if (r.data['number'])
title += r.data['number'] + ' : ';
title += r.data['name'];
return "<a href='play/stream/channel/" + r.id +
"?title=" + encodeURIComponent(title) + "'>Play</a>";
}
}
],
sort: {
field: 'number',
direction: 'ASC'
}
});
};