commit 19/01/2026
This commit is contained in:
49
.idea/misc.xml
generated
49
.idea/misc.xml
generated
@@ -1,4 +1,53 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="NullableNotNullManager">
|
||||||
|
<option name="myDefaultNullable" value="org.jetbrains.annotations.Nullable" />
|
||||||
|
<option name="myDefaultNotNull" value="org.jetbrains.annotations.NotNull" />
|
||||||
|
<option name="myOrdered" value="false" />
|
||||||
|
<option name="myNullables">
|
||||||
|
<value>
|
||||||
|
<list size="16">
|
||||||
|
<item index="0" class="java.lang.String" itemvalue="org.jspecify.annotations.Nullable" />
|
||||||
|
<item index="1" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
|
||||||
|
<item index="2" class="java.lang.String" itemvalue="android.annotation.Nullable" />
|
||||||
|
<item index="3" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
|
||||||
|
<item index="4" class="java.lang.String" itemvalue="com.android.annotations.Nullable" />
|
||||||
|
<item index="5" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
|
||||||
|
<item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
|
||||||
|
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
|
||||||
|
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableDecl" />
|
||||||
|
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
|
||||||
|
<item index="10" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.Nullable" />
|
||||||
|
<item index="11" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
|
||||||
|
<item index="12" class="java.lang.String" itemvalue="jakarta.annotation.Nullable" />
|
||||||
|
<item index="13" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
|
||||||
|
<item index="14" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
|
||||||
|
<item index="15" class="java.lang.String" itemvalue="org.springframework.lang.Nullable" />
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="myNotNulls">
|
||||||
|
<value>
|
||||||
|
<list size="16">
|
||||||
|
<item index="0" class="java.lang.String" itemvalue="org.jspecify.annotations.NonNull" />
|
||||||
|
<item index="1" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
|
||||||
|
<item index="2" class="java.lang.String" itemvalue="android.annotation.NonNull" />
|
||||||
|
<item index="3" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
|
||||||
|
<item index="4" class="java.lang.String" itemvalue="com.android.annotations.NonNull" />
|
||||||
|
<item index="5" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
|
||||||
|
<item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
|
||||||
|
<item index="7" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.NonNull" />
|
||||||
|
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
|
||||||
|
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
|
||||||
|
<item index="10" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.NonNull" />
|
||||||
|
<item index="11" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
|
||||||
|
<item index="12" class="java.lang.String" itemvalue="jakarta.annotation.Nonnull" />
|
||||||
|
<item index="13" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
||||||
|
<item index="14" class="java.lang.String" itemvalue="lombok.NonNull" />
|
||||||
|
<item index="15" class="java.lang.String" itemvalue="org.springframework.lang.NonNull" />
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
<component name="ProjectInspectionProfilesVisibleTreeState">
|
<component name="ProjectInspectionProfilesVisibleTreeState">
|
||||||
<entry key="Project Default">
|
<entry key="Project Default">
|
||||||
<profile-state>
|
<profile-state>
|
||||||
|
|||||||
@@ -54,67 +54,7 @@ function fill_messagebanktablebody(vv) {
|
|||||||
* @property {string} Message_TAGS - Tags associated with the message
|
* @property {string} Message_TAGS - Tags associated with the message
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* Get data from modal inputs and return as MessageBank object
|
|
||||||
* @returns {MessageBank} messagebank object or null if validation fails
|
|
||||||
*/
|
|
||||||
function GetDataFromModal() {
|
|
||||||
let description = $messagedescription.val().trim();
|
|
||||||
let language = $messagelanguage.val();
|
|
||||||
let annid = parseInt($messageannid.val());
|
|
||||||
let voicetype = $messagevoicetype.val();
|
|
||||||
let messagedetail = "";
|
|
||||||
let messagetags = "";
|
|
||||||
|
|
||||||
// iterate messageselectedvariables children
|
|
||||||
$messageselectedvariables.children().each(function () {
|
|
||||||
let text = $(this).text().trim();
|
|
||||||
let value = $(this).val().trim();
|
|
||||||
console.log('selected text:' + text + ', value:' + value);
|
|
||||||
if (text.length > 0) {
|
|
||||||
k
|
|
||||||
if (value.length > 0) {
|
|
||||||
messagetags += (messagetags.length > 0 ? " " : "") + value;
|
|
||||||
messagedetail += (messagedetail.length > 0 ? " " : "") + text;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
console.log(`Constructed Message_Detail: ${messagedetail}`);
|
|
||||||
console.log(`Constructed Message_TAGS: ${messagetags}`);
|
|
||||||
|
|
||||||
if (description.length === 0) {
|
|
||||||
alert("Description cannot be empty");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (!language) {
|
|
||||||
alert("Language cannot be empty");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (isNaN(annid) || annid < 1 || annid > 100) {
|
|
||||||
alert("ANN_ID must be a number between 1 and 100");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (!voicetype) {
|
|
||||||
alert("Voice Type cannot be empty");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (messagedetail.length === 0 || messagetags.length === 0) {
|
|
||||||
alert("Message haven't been constructed, please add categories and phrases");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let mb = {
|
|
||||||
Description: description,
|
|
||||||
Language: language,
|
|
||||||
ANN_ID: annid,
|
|
||||||
Voice_Type: voicetype,
|
|
||||||
Message_Detail: messagedetail,
|
|
||||||
Message_TAGS: messagetags
|
|
||||||
};
|
|
||||||
return mb;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
@@ -158,39 +98,110 @@ $(document).ready(function () {
|
|||||||
/**
|
/**
|
||||||
* Refill messageavailablevariables options from categories[]
|
* Refill messageavailablevariables options from categories[]
|
||||||
* and soundbankdata with category "Phrase" if messagelanguage and messagevoicetype are selected
|
* and soundbankdata with category "Phrase" if messagelanguage and messagevoicetype are selected
|
||||||
|
* @param {Function} cbLoaded - callback function when phrases are loaded
|
||||||
*/
|
*/
|
||||||
function refill_messageavailablevariables() {
|
function refill_messageavailablevariables(cbLoaded) {
|
||||||
$messageavailablevariables.empty();
|
$messageavailablevariables.empty();
|
||||||
categories.forEach(cat => {
|
categories.forEach(cat => {
|
||||||
if ("Phrase" === cat) return; // skip Phrase category
|
if ("Phrase" === cat) return; // skip Phrase category
|
||||||
|
if ("Airline_Code" === cat) cat = "Flight_Number"; // revisi 15012026 karena inconsistensi penamaan tag
|
||||||
let displayCat = `[${cat}]`;
|
let displayCat = `[${cat}]`;
|
||||||
$messageavailablevariables.append(new Option(displayCat, displayCat));
|
$messageavailablevariables.append(new Option(text=displayCat.toUpperCase(), value=displayCat.toUpperCase()));
|
||||||
});
|
});
|
||||||
|
// tambah [ETAD], [BCB] revisi 19012026
|
||||||
|
$messageavailablevariables.append(new Option(text='[ETAD]', value='[ETAD]'));
|
||||||
|
$messageavailablevariables.append(new Option(text='[BCB]', value='[BCB]'));
|
||||||
|
|
||||||
let lang = $messagelanguage.val();
|
let lang = $messagelanguage.val();
|
||||||
let vt = $messagevoicetype.val();
|
let vt = $messagevoicetype.val();
|
||||||
if (lang && lang.length > 0) {
|
if (lang && lang.length > 0 && vt && vt.length > 0) {
|
||||||
//console.log("Selected Language:", lang);
|
fetchAPI(`SoundBank/GetPhrases/${lang}/${vt}`, "GET", {}, null, (okdata) => {
|
||||||
if (vt && vt.length > 0) {
|
|
||||||
//console.log("Selected Voice Type:", vt);
|
|
||||||
|
|
||||||
fetchAPI(`SoundBank/GetPhrases/${lang}/${vt}`, "GET", {}, null, (okdata) => {
|
|
||||||
if (Array.isArray(okdata) && okdata.length > 0) {
|
if (Array.isArray(okdata) && okdata.length > 0) {
|
||||||
console.log(`Loaded ${okdata.length} phrases from soundbank for language=${lang} and voiceType=${vt}`);
|
console.log(`Loaded ${okdata.length} phrases from soundbank for language=${lang} and voiceType=${vt}`);
|
||||||
//console.log(JSON.stringify(okdata));
|
//console.log(JSON.stringify(okdata));
|
||||||
okdata.forEach(sb => {
|
okdata.forEach(sb => {
|
||||||
if (sb.description && sb.description.length > 0) {
|
if (sb.description && sb.description.length > 0) {
|
||||||
$messageavailablevariables.append($('<option>', { value: sb.tag, text: sb.description, title: sb.description }));
|
$messageavailablevariables.append($('<option>', { value: sb.tag.toUpperCase(), text: sb.description, title: sb.description }));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (cbLoaded && typeof cbLoaded === 'function') {
|
||||||
|
cbLoaded();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, (errdata) => {
|
}, (errdata) => {
|
||||||
//alert("Error loading phrases from soundbank : " + errdata.message);
|
//alert("Error loading phrases from soundbank : " + errdata.message);
|
||||||
|
if (cbLoaded && typeof cbLoaded === 'function') {
|
||||||
|
cbLoaded();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
if (cbLoaded && typeof cbLoaded === 'function') {
|
||||||
|
cbLoaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get data from modal inputs and return as MessageBank object
|
||||||
|
* @returns {MessageBank} messagebank object or null if validation fails
|
||||||
|
*/
|
||||||
|
function GetDataFromModal() {
|
||||||
|
let description = $messagedescription.val().trim();
|
||||||
|
let language = $messagelanguage.val();
|
||||||
|
let annid = parseInt($messageannid.val());
|
||||||
|
let voicetype = $messagevoicetype.val();
|
||||||
|
let messagedetail = "";
|
||||||
|
let messagetags = "";
|
||||||
|
|
||||||
|
// iterate messageselectedvariables children
|
||||||
|
$messageselectedvariables.children().each(function () {
|
||||||
|
let text = $(this).text().trim();
|
||||||
|
let value = $(this).val().trim();
|
||||||
|
console.log('selected text:' + text + ', value:' + value);
|
||||||
|
if (text.length > 0) {
|
||||||
|
if (value.length > 0) {
|
||||||
|
messagetags += (messagetags.length > 0 ? " " : "") + value;
|
||||||
|
messagedetail += (messagedetail.length > 0 ? " " : "") + text;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (description.length === 0) {
|
||||||
|
alert("Description cannot be empty");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (!language) {
|
||||||
|
alert("Language cannot be empty");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (isNaN(annid) || annid < 1 || annid > 100) {
|
||||||
|
alert("ANN_ID must be a number between 1 and 100");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (!voicetype) {
|
||||||
|
alert("Voice Type cannot be empty");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (messagedetail.length === 0 || messagetags.length === 0) {
|
||||||
|
alert("Message haven't been constructed, please add categories and phrases");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let mb = {
|
||||||
|
Description: description,
|
||||||
|
Language: language,
|
||||||
|
ANN_ID: annid,
|
||||||
|
Voice_Type: voicetype,
|
||||||
|
Message_Detail: messagedetail,
|
||||||
|
Message_TAGS: messagetags
|
||||||
|
};
|
||||||
|
console.log("Constructed MessageBank object:", JSON.stringify(mb));
|
||||||
|
return mb;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -198,24 +209,24 @@ $(document).ready(function () {
|
|||||||
*/
|
*/
|
||||||
function clearMessageModal() {
|
function clearMessageModal() {
|
||||||
$messageindex.val('').prop('disabled', true);
|
$messageindex.val('').prop('disabled', true);
|
||||||
$messagedescription.val('');
|
$messagedescription.val('').prop('disabled', false);
|
||||||
// fill messagelanguage options from languages[]
|
// fill messagelanguage options from languages[]
|
||||||
$messagelanguage.empty();
|
$messagelanguage.empty().prop('disabled', false);
|
||||||
window.languages.forEach(lang => {
|
window.languages.forEach(lang => {
|
||||||
$messagelanguage.append(new Option(lang, lang));
|
$messagelanguage.append(new Option(lang, lang));
|
||||||
});
|
});
|
||||||
$messagelanguage.val(null);
|
$messagelanguage.val(null).prop('disabled', false);
|
||||||
$messagelanguage.on('change', function () {
|
$messagelanguage.on('change', function () {
|
||||||
refill_messageavailablevariables();
|
refill_messageavailablevariables();
|
||||||
});
|
});
|
||||||
// set default annid to 1
|
// set default annid to 1
|
||||||
$messageannid.val(1);
|
$messageannid.val(1).prop('disabled', false);
|
||||||
// fill messagevoicetype options from voiceTypes[]
|
// fill messagevoicetype options from voiceTypes[]
|
||||||
$messagevoicetype.empty();
|
$messagevoicetype.empty().prop('disabled', false);
|
||||||
window.voiceTypes.forEach(vt => {
|
window.voiceTypes.forEach(vt => {
|
||||||
$messagevoicetype.append(new Option(vt, vt));
|
$messagevoicetype.append(new Option(vt, vt));
|
||||||
});
|
});
|
||||||
$messagevoicetype.val(null);
|
$messagevoicetype.val(null).prop('disabled', false);
|
||||||
$messagevoicetype.on('change', function () {
|
$messagevoicetype.on('change', function () {
|
||||||
refill_messageavailablevariables();
|
refill_messageavailablevariables();
|
||||||
});
|
});
|
||||||
@@ -282,6 +293,8 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
$modal.modal('show');
|
$modal.modal('show');
|
||||||
clearMessageModal();
|
clearMessageModal();
|
||||||
|
|
||||||
|
|
||||||
$('#closemodalbutton').off('click').on('click', function () {
|
$('#closemodalbutton').off('click').on('click', function () {
|
||||||
console.log('Close button clicked')
|
console.log('Close button clicked')
|
||||||
$modal.modal('hide');
|
$modal.modal('hide');
|
||||||
@@ -293,7 +306,7 @@ $(document).ready(function () {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// send to server using fetchAPI
|
// send to server using fetchAPI
|
||||||
fetchAPI(APIURL + "Add", "POST", mb, null, (okdata) => {
|
fetchAPI(APIURL + "Add", "POST", {}, mb, (okdata) => {
|
||||||
reloadMessageBank(APIURL, () => fill_messagebanktablebody(window.messagebankdata));
|
reloadMessageBank(APIURL, () => fill_messagebanktablebody(window.messagebankdata));
|
||||||
alert("Success add new messagebank : " + okdata.message);
|
alert("Success add new messagebank : " + okdata.message);
|
||||||
}, (errdata) => {
|
}, (errdata) => {
|
||||||
@@ -347,12 +360,13 @@ $(document).ready(function () {
|
|||||||
clearMessageModal();
|
clearMessageModal();
|
||||||
// Fill modal fields with selected messagebank data
|
// Fill modal fields with selected messagebank data
|
||||||
$messageindex.val(mb.index).prop('disabled', true);
|
$messageindex.val(mb.index).prop('disabled', true);
|
||||||
$messagedescription.val(mb.description);
|
// Edit mode cant change description, language, voicetype, annid
|
||||||
$messagelanguage.val(mb.language);
|
$messagedescription.val(mb.description).prop('disabled', true);
|
||||||
$messagevoicetype.val(mb.voice_Type);
|
$messagelanguage.val(mb.language).prop('disabled', true);
|
||||||
$messageannid.val(mb.aNN_ID);
|
$messagevoicetype.val(mb.voice_Type).prop('disabled', true);
|
||||||
|
$messageannid.val(mb.aNN_ID).prop('disabled', true);
|
||||||
// Refill message available variables
|
// Refill message available variables
|
||||||
refill_messageavailablevariables();
|
refill_messageavailablevariables(() => {
|
||||||
// Fill messageselectedvariables from message_Detail and message_TAGS
|
// Fill messageselectedvariables from message_Detail and message_TAGS
|
||||||
$messageselectedvariables.empty();
|
$messageselectedvariables.empty();
|
||||||
if (mb.message_Detail && mb.message_Detail.length > 0) {
|
if (mb.message_Detail && mb.message_Detail.length > 0) {
|
||||||
@@ -361,18 +375,33 @@ $(document).ready(function () {
|
|||||||
tags.forEach((tag, idx) => {
|
tags.forEach((tag, idx) => {
|
||||||
console.log(`Restoring tag[${idx}]: ${tag}`);
|
console.log(`Restoring tag[${idx}]: ${tag}`);
|
||||||
let tagLower = tag.toLowerCase();
|
let tagLower = tag.toLowerCase();
|
||||||
|
let isfound = false;
|
||||||
|
if (tagLower==="[airline_code]") {
|
||||||
|
tagLower = "[flight_number]";
|
||||||
|
}
|
||||||
|
if (tagLower==="[gatenumber]") {
|
||||||
|
tagLower = "[gate]";
|
||||||
|
}
|
||||||
// find <option> in messageavailablevariables with value=tag
|
// find <option> in messageavailablevariables with value=tag
|
||||||
$messageavailablevariables.find('option').each(function () {
|
$messageavailablevariables.find('option').each(function () {
|
||||||
let val = $(this).val().toLowerCase();
|
let valx = $(this).val().toLowerCase();
|
||||||
console.log(`Available option value: ${val}`);
|
//console.log(`Available option value: ${valx}`);
|
||||||
if (val === tagLower) {
|
if (valx === tagLower) {
|
||||||
console.log(`Found matching option for tag: ${tag}`);
|
isfound = true;
|
||||||
|
//console.log(`Found matching option for tag: ${tag}`);
|
||||||
$messageselectedvariables.append($(this).clone());
|
$messageselectedvariables.append($(this).clone());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (isfound) {
|
||||||
|
console.log(`Appended tag to selected variables: ${tag}`);
|
||||||
|
} else {
|
||||||
|
console.log(`Tag not found in available variables: ${tag}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// Save button event
|
// Save button event
|
||||||
$('#savemodalbutton').off('click').on('click', function () {
|
$('#savemodalbutton').off('click').on('click', function () {
|
||||||
@@ -381,7 +410,7 @@ $(document).ready(function () {
|
|||||||
if (!mbUpdate) {
|
if (!mbUpdate) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fetchAPI(APIURL + "UpdateByIndex/" + mb.index, "PATCH", mbUpdate, null, (okdata) => {
|
fetchAPI(APIURL + "UpdateByIndex/" + mb.index, "PATCH", {}, mbUpdate, (okdata) => {
|
||||||
reloadMessageBank(APIURL, () => fill_messagebanktablebody(window.messagebankdata));
|
reloadMessageBank(APIURL, () => fill_messagebanktablebody(window.messagebankdata));
|
||||||
alert("Success edit messagebank : " + okdata.message);
|
alert("Success edit messagebank : " + okdata.message);
|
||||||
}, (errdata) => {
|
}, (errdata) => {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ window.scheduledays = []
|
|||||||
* List of broadcast zones available
|
* List of broadcast zones available
|
||||||
* @type {BroadcastZone[]}
|
* @type {BroadcastZone[]}
|
||||||
*/
|
*/
|
||||||
window.BroadcastZoneList ??= [];
|
window.BroadcastZoneList = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} MessageBank
|
* @typedef {Object} MessageBank
|
||||||
@@ -50,7 +50,7 @@ window.BroadcastZoneList ??= [];
|
|||||||
* List of Messagebank data loaded from server
|
* List of Messagebank data loaded from server
|
||||||
* @type {MessageBank[]}
|
* @type {MessageBank[]}
|
||||||
*/
|
*/
|
||||||
window.messagebankdata ??= [];
|
window.messagebankdata = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reload message bank from server
|
* Reload message bank from server
|
||||||
@@ -58,7 +58,7 @@ window.messagebankdata ??= [];
|
|||||||
* @param {function|null} cbOK callback on success, default null
|
* @param {function|null} cbOK callback on success, default null
|
||||||
*/
|
*/
|
||||||
function reloadMessageBank(APIURL = "MessageBank/", cbOK = null) {
|
function reloadMessageBank(APIURL = "MessageBank/", cbOK = null) {
|
||||||
window.messagebankdata ??= [];
|
window.messagebankdata = [];
|
||||||
fetchAPI(APIURL + "List", "GET", {}, null, (okdata) => {
|
fetchAPI(APIURL + "List", "GET", {}, null, (okdata) => {
|
||||||
//console.log("Message bank data loaded : ", okdata);
|
//console.log("Message bank data loaded : ", okdata);
|
||||||
if (Array.isArray(okdata)) {
|
if (Array.isArray(okdata)) {
|
||||||
|
|||||||
@@ -466,7 +466,7 @@ class MainExtension01 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"[GATENUMBER]" -> {
|
"[GATENUMBER]","[GATE]" -> {
|
||||||
// gate number bisa angka saja, misalnya 1,2,3
|
// gate number bisa angka saja, misalnya 1,2,3
|
||||||
// atau huruf dan angka, misalnya A1, B2, C3, 1A, 2B, 3C
|
// atau huruf dan angka, misalnya A1, B2, C3, 1A, 2B, 3C
|
||||||
val value = variables["GATECODE"].orEmpty()
|
val value = variables["GATECODE"].orEmpty()
|
||||||
|
|||||||
@@ -802,6 +802,7 @@ class WebApp(val listenPort: Int, var userlist: List<Pair<String, String>>, val
|
|||||||
}
|
}
|
||||||
post("Add") {
|
post("Add") {
|
||||||
val json: JsonNode = objectmapper.readTree(it.body())
|
val json: JsonNode = objectmapper.readTree(it.body())
|
||||||
|
Logger.info { "Add MessageBank JSON: ${json}" }
|
||||||
val description = json.get("Description")?.asText("") ?: ""
|
val description = json.get("Description")?.asText("") ?: ""
|
||||||
val language = json.get("Language")?.asText("") ?: ""
|
val language = json.get("Language")?.asText("") ?: ""
|
||||||
val ann_id = json.get("ANN_ID")?.asInt()?.toUInt() ?: 0u
|
val ann_id = json.get("ANN_ID")?.asInt()?.toUInt() ?: 0u
|
||||||
@@ -823,11 +824,15 @@ class WebApp(val listenPort: Int, var userlist: List<Pair<String, String>>, val
|
|||||||
message_detail,
|
message_detail,
|
||||||
message_tags
|
message_tags
|
||||||
)
|
)
|
||||||
if (db.messageDB.Add(mb)) {
|
val existed = db.messageDB.List.any{ it.ANN_ID== mb.ANN_ID && it.Language == mb.Language && it.Voice_Type == mb.Voice_Type }
|
||||||
db.messageDB.Resort()
|
if (!existed){
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
if (db.messageDB.Add(mb)) {
|
||||||
} else it.status(500)
|
db.messageDB.Resort()
|
||||||
.result(objectmapper.writeValueAsString(resultMessage("Failed to add messagebank to database")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
} else it.status(500)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to add messagebank to database")))
|
||||||
|
} else it.status(400)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("Messagebank with ANN_ID=${mb.ANN_ID}, Language=${mb.Language} and Voice_Type=${mb.Voice_Type} already exists")))
|
||||||
} else it.status(400)
|
} else it.status(400)
|
||||||
.result(objectmapper.writeValueAsString(resultMessage("Invalid Message_TAGS")))
|
.result(objectmapper.writeValueAsString(resultMessage("Invalid Message_TAGS")))
|
||||||
} else it.status(400)
|
} else it.status(400)
|
||||||
|
|||||||
Reference in New Issue
Block a user