2023-11-15 01:02:37 -04:00

108 lines
3.4 KiB
JavaScript

module.exports = function ($scope, $timeout, dizquetv) {
$scope.fillers = []
$scope.showFillerConfig = false
$scope.selectedFiller = null
$scope.selectedFillerIndex = -1
$scope.refreshFiller = async () => {
$scope.fillers = [ { id: '?', pending: true} ]
$timeout();
let fillers = await dizquetv.getAllFillersInfo();
fillers.sort( (a,b) => {
return a.name > b.name;
} );
$scope.fillers = fillers;
$timeout();
}
$scope.refreshFiller();
let feedToFillerConfig = () => {};
let feedToDeleteFiller = feedToFillerConfig;
$scope.registerFillerConfig = (feed) => {
feedToFillerConfig = feed;
}
$scope.registerDeleteFiller = (feed) => {
feedToDeleteFiller = feed;
}
$scope.queryChannel = async (index, channel) => {
let ch = await dizquetv.getChannelDescription(channel.number);
ch.pending = false;
$scope.fillers[index] = ch;
$scope.$apply();
}
$scope.onFillerConfigDone = async (filler) => {
if ($scope.selectedChannelIndex != -1) {
$scope.fillers[ $scope.selectedChannelIndex ].pending = false;
}
if (typeof filler !== 'undefined') {
// not canceled
if ($scope.selectedChannelIndex == -1) { // add new channel
await dizquetv.createFiller(filler);
} else {
$scope.fillers[ $scope.selectedChannelIndex ].pending = true;
await dizquetv.updateFiller(filler.id, filler);
}
await $scope.refreshFiller();
}
}
$scope.selectFiller = async (index) => {
try {
if ( (index != -1) && $scope.fillers[index].pending) {
return;
}
$scope.selectedChannelIndex = index;
if (index === -1) {
feedToFillerConfig();
} else {
$scope.fillers[index].pending = true;
let f = await dizquetv.getFiller($scope.fillers[index].id);
feedToFillerConfig(f);
$timeout();
}
} catch( err ) {
console.error("Could not fetch filler.", err);
}
}
$scope.deleteFiller = async (index) => {
try {
if ( $scope.fillers[index].pending) {
return;
}
$scope.deleteFillerIndex = index;
$scope.fillers[index].pending = true;
let id = $scope.fillers[index].id;
let channels = await dizquetv.getChannelsUsingFiller(id);
feedToDeleteFiller( {
id: id,
name: $scope.fillers[index].name,
channels : channels,
} );
$timeout();
} catch (err) {
console.error("Could not start delete filler dialog.", err);
}
}
$scope.onFillerDelete = async( id ) => {
try {
$scope.fillers[ $scope.deleteFillerIndex ].pending = false;
$timeout();
if (typeof(id) !== 'undefined') {
$scope.fillers[ $scope.deleteFillerIndex ].pending = true;
await dizquetv.deleteFiller(id);
$timeout();
await $scope.refreshFiller();
$timeout();
}
} catch (err) {
console.error("Error attempting to delete filler", err);
}
}
}