let pbc = undefined;
let dataUpdateIntervalMs = 3000;
let playedAnything = false;
let playbackWaitingOnUser = false;
let removedInteractNag = false;
let setChainOptionSelectFromSettings = false;
let chainOption = 'none'; //expected to be one of 'none', 'tg', 'group'
let lastPlayedGroup = undefined;
let lastPlayedTg = undefined;
let groupEnable = {
'jeff-law': false,
'jeff-fire': false,
'jeff-govt': false,
'jeff-bus': false,
'berk-law': false,
'berk-fire': false,
'berk-govt': false,
'wash-law': false,
'wash-fire': false,
'wash-govt': false,
'wash-bus': false,
'fred-law': false,
'fred-fire': false,
'fred-govt': false,
'fred-bus': false,
'loud-law': false,
'loud-fire': false,
'loud-govt': false,
'wvsp': false,
'msp': false,
'wv-ambulance': false,
'md-ambulance': false,
'va-ambulance': false,
}
let groupButtonMap = {
'jeff-law': jefflawButton,
'jeff-fire': jefffireButton,
'jeff-govt': jeffgovtButton,
'jeff-bus': jeffbusButton,
'berk-law': berklawButton,
'berk-fire': berkfireButton,
'berk-govt': berkgovtButton,
'wash-law': washlawButton,
'wash-fire': washfireButton,
'wash-govt': washgovtButton,
'wash-bus': washbusButton,
'fred-law': fredlawButton,
'fred-fire': fredfireButton,
'fred-govt': fredgovtButton,
'fred-bus': fredbusButton,
'loud-law': loudlawButton,
'loud-fire': loudfireButton,
'loud-govt': loudgovtButton,
'wvsp': wvspButton,
'msp': mspButton,
'wv-ambulance': wvambulanceButton,
'md-ambulance': mdambulanceButton,
'va-ambulance': vaambulanceButton,
}
function displayUpdate() {
if (!navigator.userActivation.hasBeenActive) {
interactNag.innerText = 'Please click/tap anywhere to enable playback!';
} else {
interactNag.innerText = '';
removedInteractNag = true;
}
if (removedInteractNag && !setChainOptionSelectFromSettings) {
chainOptionSelect.value = chainOption;
setChainOptionSelectFromSettings = true;
}
if (!anyGroupSelected() && nothingSelectedNagDiv.style.display == 'none') {
nothingSelectedNagDiv.style.display = 'block';
} else if (anyGroupSelected() && nothingSelectedNagDiv.style.display == 'block') {
nothingSelectedNagDiv.style.display = 'none';
}
pbc.displayUpdate();
displayUpdateTimeout = requestAnimationFrame(displayUpdate);
}
function showHideGroupSelect() {
let div = document.getElementById('group-select-expand-div');
if (div.style.display == 'none') { div.style.display = "block";}
else {div.style.display = "none";}
}
class PlaybackController {
constructor () {
this.calls = [];
this.lastUpdateMaxId = '' + (Date.now() - 300000) + '-0';
this.dataUpdateEnabled = true;
this.playbackActive = false;
this.player = document.getElementById('audioPlayer');
}
displayUpdate () {
if (pbc.playbackActive && !isNaN(pbc.player.duration) && !isNaN(pbc.player.currentTime)) {
playbackTimeUsedSpan.innerText = pbc.player.currentTime.toFixed(1);
playbackDurationSpan.innerText = pbc.player.duration.toFixed(1);
} else {
playbackTimeUsedSpan.innerText = '---';
playbackDurationSpan.innerText = '---';
}
horizBarChart(clipProgressCanvas, [pbc.player.currentTime], pbc.player.duration);
}
updatePlaylistHtml () {
let playlistHtml = 'Playback Queue - ' + pbc.calls.length;
if (pbc.calls.length == 1) { playlistHtml += ' item'; } else { playlistHtml += ' items'; }
playlistHtml += '
';
playlistHtml += '
| Time | Talkgroup | Radio ID | Transcription | ' + pbc.calls[i]['call_data']['nice_start'] + ' | ' + metaTagEmojiMap[metaTagFromTags(pbc.calls[i]['call_data']['tg_tags'])] + ' ' + pbc.calls[i]['call_data']['tg_name'] + ' | ' + pbc.calls[i]['call_data']['talker_id'] + ' | ' + transcription + ' | '; } playlistHtml += '