dizquetv/web/controllers/channels.js

98 lines
3.6 KiB
JavaScript

module.exports = function ($scope, dizquetv) {
$scope.channels = []
$scope.showChannelConfig = false
$scope.selectedChannel = null
$scope.selectedChannelIndex = -1
$scope.refreshChannels = async () => {
$scope.channels = [ { number: 1, pending: true} ]
let channelNumbers = await dizquetv.getChannelNumbers();
$scope.channels = channelNumbers.map( (x) => {
return {
number: x,
pending: true,
}
});
$scope.$apply();
$scope.queryChannels();
}
$scope.refreshChannels();
$scope.queryChannels = () => {
for (let i = 0; i < $scope.channels.length; i++) {
$scope.queryChannel(i, $scope.channels[i] );
}
}
$scope.queryChannel = async (index, channel) => {
let ch = await dizquetv.getChannelDescription(channel.number);
ch.pending = false;
$scope.channels[index] = ch;
$scope.$apply();
}
$scope.removeChannel = async ($index, channel) => {
if (confirm("Are you sure to delete channel: " + channel.name + "?")) {
$scope.channels[$index].pending = true;
await dizquetv.removeChannel(channel);
$scope.refreshChannels();
}
}
$scope.onChannelConfigDone = async (channel) => {
if ($scope.selectedChannelIndex != -1) {
$scope.channels[ $scope.selectedChannelIndex ].pending = false;
}
if (typeof channel !== 'undefined') {
if ($scope.selectedChannelIndex == -1) { // add new channel
await dizquetv.addChannel(channel);
$scope.showChannelConfig = false
$scope.refreshChannels();
} else if (
(typeof($scope.originalChannelNumber) !== 'undefined')
&& ($scope.originalChannelNumber != channel.number)
) {
//update + change channel number.
$scope.channels[ $scope.selectedChannelIndex ].pending = true;
await dizquetv.updateChannel(channel),
await dizquetv.removeChannel( { number: $scope.originalChannelNumber } )
$scope.showChannelConfig = false
$scope.$apply();
$scope.refreshChannels();
} else { // update existing channel
$scope.channels[ $scope.selectedChannelIndex ].pending = true;
await dizquetv.updateChannel(channel);
$scope.showChannelConfig = false
$scope.$apply();
$scope.refreshChannels();
}
} else {
$scope.showChannelConfig = false
}
}
$scope.selectChannel = async (index) => {
if ( (index === -1) || $scope.channels[index].pending ) {
$scope.originalChannelNumber = undefined;
$scope.selectedChannel = null
$scope.selectedChannelIndex = -1
$scope.showChannelConfig = true
} else {
$scope.channels[index].pending = true;
let p = await Promise.all([
dizquetv.getChannelProgramless($scope.channels[index].number),
dizquetv.getChannelPrograms($scope.channels[index].number),
]);
let ch = p[0];
ch.programs = p[1];
let newObj = ch;
newObj.startTime = new Date(newObj.startTime)
$scope.originalChannelNumber = newObj.number;
$scope.selectedChannel = newObj
$scope.selectedChannelIndex = index
$scope.showChannelConfig = true
$scope.$apply();
}
}
}