/** * Currently selected broadcast zone row in the table * @type {JQuery|null} */ window.selectedBroadcastZoneRow = null; /** * Fill broadcast zone table body with values * @param {BroadcastZone[]} vv values to fill */ function fill_broadcastzonetablebody(vv) { $('#broadcastzonetablebody').empty(); if (!Array.isArray(vv) || vv.length === 0) return; vv.forEach(item => { const row = ` ${item.index} ${item.description} ${item.soundChannel} ${item.id} ${item.bp} `; $('#broadcastzonetablebody').append(row); let $addedrow = $('#broadcastzonetablebody tr:last'); $addedrow.click(function () { if (window.selectedBroadcastZoneRow) { window.selectedBroadcastZoneRow.find('td').css('background-color', ''); if (window.selectedBroadcastZoneRow.is($(this))) { window.selectedBroadcastZoneRow = null; $('#btnRemove').prop('disabled', true); $('#btnEdit').prop('disabled', true); return; } } $(this).find('td').css('background-color', '#ffeeba'); window.selectedBroadcastZoneRow = $(this); $('#btnRemove').prop('disabled', false); $('#btnEdit').prop('disabled', false); }); }); $('#tablesize').text("Table Size: " + vv.length); } $(document).ready(function () { console.log("broadcastzones.js loaded successfully"); window.selectedBroadcastZoneRow = null; let $btnClear = $('#btnClear'); let $btnAdd = $('#btnAdd'); let $btnEdit = $('#btnEdit'); let $btnRemove = $('#btnRemove'); let $btnExport = $('#btnExport'); let $btnImport = $('#btnImport'); $btnEdit.prop('disabled', true); $btnRemove.prop('disabled', true); let APIURL_BroadcastZone = "BroadcastZones/"; let $broadcastzonemodal = $('#broadcastzonemodal'); let $broadcastzoneindex = $broadcastzonemodal.find('#broadcastzoneindex'); let $broadcastzonedescription = $broadcastzonemodal.find('#broadcastzonedescription'); let $broadcastzonesoundchannel = $broadcastzonemodal.find('#broadcastzonesoundchannel'); let $broadcastzonebox = $broadcastzonemodal.find('#broadcastzonebox'); let $findzone = $('#findzone'); $findzone.on('input', function () { let searchTerm = $findzone.val().trim().toLowerCase(); if (searchTerm.length > 0) { window.selectedBroadcastZoneRow = null; let filtered = window.BroadcastZoneList.filter(item => item.description.toLowerCase().includes(searchTerm) || item.id.toLowerCase().includes(searchTerm) || item.soundChannel.toLowerCase().includes(searchTerm) || item.bp.toLowerCase().includes(searchTerm)); fill_broadcastzonetablebody(filtered); } else { window.selectedBroadcastZoneRow = null; fill_broadcastzonetablebody(window.BroadcastZoneList); } }); /** * Find Checkbox for relays 1 to 32 * Checkbox id is 01 to 32 with leading zero for 1 to 9 * @param {number} id 1 - 32 * @returns JQuery */ function cbRelay(id) { return $broadcastzonemodal.find('#R' + (id < 10 ? '0' : '') + id); } /** * Clear broadcast zone modal to default state */ function clearBroadcastZoneModal() { $broadcastzoneindex.prop('disabled', true).val(''); $broadcastzonedescription.val(''); // fill broadcastzonesoundchannel from SoundChannelList $broadcastzonesoundchannel.empty(); if (Array.isArray(SoundChannelList) && SoundChannelList.length > 0) { // SoundChannelList ada isinya SoundChannelList.forEach(ch => { if (ch.channel && ch.channel.length > 0){ // hanya yang punya channel saja $broadcastzonesoundchannel.append($('