/** * Currently selected messagebank row in the table * @type {JQuery|null} */ window.selectedmessagerow = null; dtMessageBank = null; /** * Fill messagebank table body with values * @param {MessageBank[]} vv values to fill */ function fill_messagebanktablebody(vv) { dtMessageBank.clear(); if (!Array.isArray(vv) || vv.length === 0) return; dtMessageBank.rows.add(vv); dtMessageBank.draw(); $('#messagebanktable tbody').off('click').on('click', 'tr', function () { // if no data if (!dtMessageBank) return; // if user click an empty row if (!dtMessageBank.data().any()) return; const selected = dtMessageBank.row(this) // toggle behaviour - unselect if already selected if ($(this).hasClass('row-selected')) { $(this).removeClass('row-selected').find('td').css('background-color', ''); window.selectedmessagerow = null; $('#btnRemove').prop('disabled', true); $('#btnEdit').prop('disabled', true); return; } // unselect previously selected row $('#messagebanktable tbody tr.row-selected').removeClass('row-selected').find('td').css('background-color', ''); $(this).addClass('row-selected').find('td').css('background-color', '#ffeeba'); window.selectedmessagerow = selected.data(); $('#btnRemove').prop('disabled', false); $('#btnEdit').prop('disabled', false); }) $('#tablesize').text("Table Size: " + vv.length); } /** * @typedef {Object} MessageBank * @property {string} Description - Description of the messagebank entry * @property {string} Language - Language code * @property {number} ANN_ID - ANN ID (1-100) * @property {string} Voice_Type - Voice type * @property {string} Message_Detail - Detailed message constructed from categories and phrases * @property {string} Message_TAGS - Tags associated with the message */ $(document).ready(function () { console.log("messagebank.js loaded"); window.selectedmessagerow = null; let $btnClear = $('#btnClear'); let $btnAdd = $('#btnAdd'); let $btnRemove = $('#btnRemove'); let $btnEdit = $('#btnEdit'); let $btnExport = $('#btnExport'); let $btnImport = $('#btnImport'); $btnRemove.prop('disabled', true); $btnEdit.prop('disabled', true); let APIURL = "MessageBank/"; let $findmessage = $('#findmessage'); if (dtMessageBank === null) { dtMessageBank = new DataTable('#messagebanktable', { data: [], pageLength: 25, columns: [ { title: "Index", data: "index" }, { title: "Description", data: "description" }, { title: "Language", data: "language" }, { title: "ANN ID", data: "aNN_ID" }, { title: "Type", data: "voice_Type" }, { title: "Message Details", data: "message_Detail" }, { title: "Message TAGS", data: "message_TAGS" } ] }); } // modal for add / edit messagebank let $modal = $('#messagebankmodal'); // text input, disabled by default let $messageindex = $modal.find('#messageindex'); // text input let $messagedescription = $modal.find('#messagedescription'); // select input, options loaded from languages[] let $messagelanguage = $modal.find('#messagelanguage'); // number input from 1 to 100 let $messageannid = $modal.find('#messageannid'); // select input, options loaded from voiceTypes[] let $messagevoicetype = $modal.find('#messagevoicetype'); // list