108 lines
3.4 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
} |