commit 09/09/2025
This commit is contained in:
6
.idea/copilot.data.migration.agent.xml
generated
Normal file
6
.idea/copilot.data.migration.agent.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AgentMigrationStateService">
|
||||
<option name="migrationStatus" value="COMPLETED" />
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/copilot.data.migration.edit.xml
generated
Normal file
6
.idea/copilot.data.migration.edit.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EditMigrationStateService">
|
||||
<option name="migrationStatus" value="COMPLETED" />
|
||||
</component>
|
||||
</project>
|
||||
20
.idea/jarRepositories.xml
generated
Normal file
20
.idea/jarRepositories.xml
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="0dccb4d0-b5b2-4677-8ad3-caea8077052f" />
|
||||
<option name="name" value="0dccb4d0-b5b2-4677-8ad3-caea8077052f" />
|
||||
<option name="url" value="https://mvnrepository.com/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
||||
@@ -25,19 +25,14 @@
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://C:/SLC/Apache POI/poi-5.4.1.jar!/" />
|
||||
<root url="file://C:/SLC/Apache POI" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://C:/SLC/Apache POI/poi-ooxml-5.4.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
<SOURCES>
|
||||
<root url="file://C:/SLC/Apache POI" />
|
||||
</SOURCES>
|
||||
<jarDirectory url="file://C:/SLC/Apache POI" recursive="false" />
|
||||
<jarDirectory url="file://C:/SLC/Apache POI" recursive="false" type="SOURCES" />
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
|
||||
@@ -55,3 +55,8 @@
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.pad-icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
|
||||
190
html/webpage/assets/css/styles.css
Normal file
190
html/webpage/assets/css/styles.css
Normal file
@@ -0,0 +1,190 @@
|
||||
body {
|
||||
background-color: #f8f9fd;
|
||||
overflow-x: hidden;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pad-header {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
.pad-button {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.search {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.text-header {
|
||||
color: #2d3578;
|
||||
}
|
||||
|
||||
.bg-header {
|
||||
background-color: #f0f2ff !important;
|
||||
}
|
||||
|
||||
.text-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.bg-status-1 {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.bg-status-2 {
|
||||
background-color: #dce5f4;
|
||||
}
|
||||
|
||||
.neu-button {
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 20px;
|
||||
box-shadow: inset 4px 4px 10px #88a5bf7b, inset -4px -4px 10px #ffffff;
|
||||
/*color: #4d4d4d;*/
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
/*padding: 15px 40px;*/
|
||||
transition: all 0.2s ease-in-out;
|
||||
border: 1px solid #88a5bf7b;
|
||||
}
|
||||
|
||||
.neu-button:hover {
|
||||
box-shadow: inset 2px 2px 5px #bcbcbc, inset -2px -2px 5px #ffffff, 2px 2px 5px #bcbcbc, -2px -2px 5px #ffffff;
|
||||
}
|
||||
|
||||
.neu-button:focus {
|
||||
outline: none;
|
||||
box-shadow: inset 2px 2px 5px #bcbcbc, inset -2px -2px 5px #ffffff, 2px 2px 5px #bcbcbc, -2px -2px 5px #ffffff;
|
||||
}
|
||||
|
||||
.btn-round-basic:focus {
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 20px;
|
||||
box-shadow: inset 4px 4px 10px #88a5bf7b, inset -4px -4px 10px #ffffff;
|
||||
color: #4d4d4d;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
transition: all 0.2s ease-in-out;
|
||||
border: 1px solid #88a5bf7b;
|
||||
}
|
||||
|
||||
.btn-round-basic {
|
||||
border-radius: 20px;
|
||||
box-shadow: rgba(136, 165, 191, 0.48) 6px 2px 16px 0px, rgba(255, 255, 255, 0.8) -6px -2px 16px 0px;
|
||||
--bs-btn-hover-bg: #ffffff;
|
||||
}
|
||||
|
||||
.btn-round-basic:hover {
|
||||
outline: none;
|
||||
box-shadow: inset 2px 2px 5px #bcbcbc, inset -2px -2px 5px #ffffff, 2px 2px 5px #bcbcbc, -2px -2px 5px #ffffff;
|
||||
}
|
||||
|
||||
.color-import {
|
||||
color: var(--bs-teal);
|
||||
}
|
||||
|
||||
.color-remove {
|
||||
color: var(--bs-danger);
|
||||
}
|
||||
|
||||
.color-edit {
|
||||
color: var(--bs-primary-text-emphasis);
|
||||
}
|
||||
|
||||
.color-add {
|
||||
color: var(--bs-primary);
|
||||
}
|
||||
|
||||
.input-login {
|
||||
border-radius: 50px;
|
||||
box-shadow: rgba(9, 30, 66, 0.25) 0px 4px 8px -2px, rgba(9, 30, 66, 0.08) 0px 0px 0px 1px;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
border-radius: 20px;
|
||||
box-shadow: rgba(136, 165, 191, 0.48) 6px 2px 16px 0px, rgba(255, 255, 255, 0.8) -6px -2px 16px 0px;
|
||||
--bs-btn-hover-bg: #5780f2;
|
||||
background-color: #5278e1;
|
||||
}
|
||||
|
||||
.input-add {
|
||||
border-radius: 8px;
|
||||
padding: .375rem .75rem;
|
||||
margin: 0.3rem 0;
|
||||
}
|
||||
|
||||
.text-add {
|
||||
margin: 0.6rem 0;
|
||||
}
|
||||
|
||||
.display-show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.class25 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.card-login {
|
||||
background-color: white;
|
||||
box-shadow: rgba(0, 0, 0, 0.15) 0px 15px 25px, rgba(0, 0, 0, 0.05) 0px 5px 10px;
|
||||
border-radius: 20px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.icon-menu {
|
||||
color: #2c316d;
|
||||
}
|
||||
|
||||
.text-menu {
|
||||
color: #2c316d !important;
|
||||
}
|
||||
|
||||
nav-item:hover {
|
||||
background-color: #2d3578;
|
||||
color: white;
|
||||
}
|
||||
|
||||
nav-item:focus {
|
||||
background-color: #4450b1;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.img-indicator {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.font-top-menu {
|
||||
font-size: 2em!important;
|
||||
font-weight: 200;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
.card-status {
|
||||
background-color: var(--card-color);
|
||||
box-shadow: rgba(0, 0, 0, 0.1) -4px 9px 25px -6px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
padding: 15px;
|
||||
margin: 10px;
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
margin-bottom: 0rem;
|
||||
}
|
||||
|
||||
.text-status {
|
||||
margin-bottom: 0rem !important;
|
||||
}
|
||||
|
||||
.pad-container {
|
||||
padding-top: 1em;
|
||||
}
|
||||
|
||||
.bread-menu {
|
||||
background: #2d3578;
|
||||
border: none;
|
||||
}
|
||||
|
||||
BIN
html/webpage/assets/img/logogtc-grey.png
Normal file
BIN
html/webpage/assets/img/logogtc-grey.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
BIN
html/webpage/assets/img/logogtc.png
Normal file
BIN
html/webpage/assets/img/logogtc.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
File diff suppressed because it is too large
Load Diff
6108
html/webpage/assets/js/select2.js
Normal file
6108
html/webpage/assets/js/select2.js
Normal file
File diff suppressed because it is too large
Load Diff
@@ -4,54 +4,63 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen</title>
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1 style="text-align: center;">Automatic Announcement System</h1>
|
||||
<div class="text-dark bg-light pad-header bg-header" id="header_home">
|
||||
<div class="row">
|
||||
<div class="col-2 col-sm-2 col-md-1 col-lg-1 col-xl-1"><button class="btn btn-primary h-100 bread-menu" id="showmenu" type="button"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" style="width: 32px;height: 32px;">
|
||||
<path d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path>
|
||||
</svg></button></div>
|
||||
<div class="col-8 col-sm-8 col-md-10 col-lg-10 col-xl-10 col-xxl-10">
|
||||
<h1 class="text-header" style="text-align: left;">Automatic Announcement System</h1>
|
||||
</div>
|
||||
<div class="col-2 col-sm-2 col-md-1 col-lg-1 col-xl-1 col-xxl-1 offset-xxl-0 align-items-end align-ite"><img id="onlineindicator" class="img-indicator" src="assets/img/red_circle.png" width="24" height="24"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="offcanvas offcanvas-start bg-body" tabindex="-1" data-bs-backdrop="false" id="offcanvas-menu">
|
||||
<div class="offcanvas-header"><a class="link-body-emphasis d-flex align-items-center me-md-auto mb-3 mb-md-0 text-decoration-none" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-bootstrap-fill me-3" style="font-size: 25px;">
|
||||
<path d="M6.375 7.125V4.658h1.78c.973 0 1.542.457 1.542 1.237 0 .802-.604 1.23-1.764 1.23zm0 3.762h1.898c1.184 0 1.81-.48 1.81-1.377 0-.885-.65-1.348-1.886-1.348H6.375v2.725z"></path>
|
||||
<path d="M4.002 0a4 4 0 0 0-4 4v8a4 4 0 0 0 4 4h8a4 4 0 0 0 4-4V4a4 4 0 0 0-4-4h-8zm1.06 12V3.545h3.399c1.587 0 2.543.809 2.543 2.11 0 .884-.65 1.675-1.483 1.816v.1c1.143.117 1.904.931 1.904 2.033 0 1.488-1.084 2.396-2.888 2.396z"></path>
|
||||
</svg><span class="fs-4">Galva Technologies</span></a><button class="btn-close" type="button" aria-label="Close" data-bs-dismiss="offcanvas"></button></div>
|
||||
<div class="offcanvas-header"><a class="link-body-emphasis d-flex align-items-center me-md-auto mb-3 mb-md-0 text-decoration-none" href="/"><img src="assets/img/logogtc-grey.png" width="48" height="48"><span class="fs-4 font-top-menu">AAS v.2 </span></a><button class="btn-close" type="button" aria-label="Close" data-bs-dismiss="offcanvas"></button></div>
|
||||
<div class="offcanvas-body d-flex flex-column justify-content-between pt-0">
|
||||
<div>
|
||||
<hr class="mt-0">
|
||||
<ul class="nav nav-pills flex-column mb-auto">
|
||||
<li class="nav-item"><a class="nav-link active link-light" id="homelink" href="#" aria-current="page"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-house-door me-2">
|
||||
<li class="nav-item"><a class="nav-link active link-light text-menu" id="homelink" href="#" aria-current="page"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-house-door me-2" style="font-size: 20px;">
|
||||
<path d="M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4z"></path>
|
||||
</svg> Home </a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis" id="soundbanklink" href="#"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-soundwave me-2">
|
||||
</svg> Overview</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis text-menu" id="soundbanklink" href="#"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-soundwave me-2 icon-menu" style="font-size: 20px;">
|
||||
<path fill-rule="evenodd" d="M8.5 2a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-1 0v-11a.5.5 0 0 1 .5-.5m-2 2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m4 0a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5m-6 1.5A.5.5 0 0 1 5 6v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m8 0a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m-10 1A.5.5 0 0 1 3 7v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5m12 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5"></path>
|
||||
</svg> Soundbank</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis" id="messagebanklink" href="#"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2">
|
||||
</svg> Sound Bank</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis text-menu" id="messagebanklink" href="#"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2 icon-menu" style="font-size: 20px;">
|
||||
<path d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z"></path>
|
||||
</svg> Messagebank</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis" id="languagelink" href="#"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2">
|
||||
</svg> Message Bank</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis text-menu" id="languagelink" href="#"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2 icon-menu" style="font-size: 20px;">
|
||||
<path d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path>
|
||||
</svg> Language Link</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis" id="timerlink" href="#"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2">
|
||||
<li class="nav-item .icon-menu"><a class="nav-link link-body-emphasis text-menu" id="timerlink" href="#"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2 icon-menu" style="font-size: 20px;">
|
||||
<path d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"></path>
|
||||
<path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"></path>
|
||||
</svg> Timer</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis" id="loglink" href="#"><svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2">
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis text-menu" id="loglink" href="#"><svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="icon-menu" style="font-size: 20px;">
|
||||
<g>
|
||||
<rect fill="none" height="24" width="24"></rect>
|
||||
<path d="M19,7H9C7.9,7,7,7.9,7,9v10c0,1.1,0.9,2,2,2h10c1.1,0,2-0.9,2-2V9C21,7.9,20.1,7,19,7z M19,9v2H9V9H19z M13,15v-2h2v2H13z M15,17v2h-2v-2H15z M11,15H9v-2h2V15z M17,13h2v2h-2V13z M9,17h2v2H9V17z M17,19v-2h2v2H17z M6,17H5c-1.1,0-2-0.9-2-2V5 c0-1.1,0.9-2,2-2h10c1.1,0,2,0.9,2,2v1h-2V5H5v10h1V17z"></path>
|
||||
</g>
|
||||
</svg> Log</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis" id="settinglink" href="#"><svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2">
|
||||
</svg> Log</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis text-menu" id="settinglink" href="#"><svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2 icon-menu" style="font-size: 20px;">
|
||||
<g>
|
||||
<path d="M0,0h24v24H0V0z" fill="none"></path>
|
||||
<path d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z"></path>
|
||||
</g>
|
||||
</svg> Setting</a></li>
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis" id="logoutlink" href="#"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2">
|
||||
<li class="nav-item"><a class="nav-link link-body-emphasis text-menu" id="logoutlink" href="#"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" class="me-2 icon-menu" style="font-size: 20px;">
|
||||
<path d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M17 7l-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z"></path>
|
||||
</svg> Logout</a></li>
|
||||
@@ -60,38 +69,26 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-2 border border-dark">
|
||||
<div class="row">
|
||||
<div class="col"><button class="btn btn-primary h-100" id="showmenu" type="button"><svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 24 24" width="1em" fill="currentColor" style="width: 32px;height: 32px;">
|
||||
<path d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path>
|
||||
</svg></button></div>
|
||||
<div class="col"><img class="img-fluid" id="onlineindicator" src="assets/img/red_circle.png" width="32px" height="32px"></div>
|
||||
</div>
|
||||
<div class="col card-status">
|
||||
<p class="w-100 h-100 text-status" id="cpustatus">CPU Status : <br><br></p>
|
||||
</div>
|
||||
<div class="col border border-dark">
|
||||
<p class="w-100 h-100" id="cpustatus">CPU Status</p>
|
||||
<div class="col card-status">
|
||||
<p class="w-100 h-100 text-status" id="ramstatus">RAM Status : <br><br></p>
|
||||
</div>
|
||||
<div class="col border border-dark">
|
||||
<p class="w-100 h-100" id="ramstatus">RAM Status</p>
|
||||
<div class="col card-status">
|
||||
<p class="w-100 h-100 text-status" id="diskstatus">Disk Status : <br><br></p>
|
||||
</div>
|
||||
<div class="col border border-dark">
|
||||
<p class="w-100 h-100" id="diskstatus">Disk Status</p>
|
||||
<div class="col card-status">
|
||||
<p class="w-100 h-100 text-status" id="networkstatus">Network </p>
|
||||
</div>
|
||||
<div class="col border border-dark">
|
||||
<p class="w-100 h-100" id="networkstatus">Network Status</p>
|
||||
</div>
|
||||
<div class="col border border-dark">
|
||||
<p class="w-100 h-100" id="datetimetext">Date and Time</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row w-100">
|
||||
<div class="col w-100">
|
||||
<div class="container w-100" id="content"></div>
|
||||
<div class="col card-status">
|
||||
<p class="w-100 h-100 text-status" id="datetimetext">Date and Time </p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container w-100 pad-container" id="content"></div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/jquery-3.7.1.min.js"></script>
|
||||
<script src="assets/js/select2.js"></script>
|
||||
<script src="assets/js/script.js"></script>
|
||||
</body>
|
||||
|
||||
|
||||
@@ -4,24 +4,25 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen</title>
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="col w-100 h-100">
|
||||
<h1 style="text-align: center;">Language Link</h1>
|
||||
<div class="col w-100 h-100 pad-header">
|
||||
<h2 style="text-align: center;">Language Link</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnClear" type="button">Clear</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnAdd" type="button">Add</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnRemove" type="button">Remove</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnEdit" type="button">Edit</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnExport" type="button">Export</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnImport" type="button">Import</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-add" id="btnClear" type="button">Clear</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-add" id="btnAdd" type="button">Add</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-remove" id="btnRemove" type="button">Remove</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-edit" id="btnEdit" type="button">Edit</button></div>
|
||||
<div class="col-6 col-sm-6 col-md-6 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-import" id="btnExport" type="button">Export</button></div>
|
||||
<div class="col-6 col-sm-6 col-md-6 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-import" id="btnImport" type="button">Import</button></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="table-responsive">
|
||||
@@ -69,22 +70,23 @@
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Index</p>
|
||||
<p class="text-add">Index</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-25" type="text"></div>
|
||||
<div class="col"><input type="text" id="languagelinkindex" class="form-control input-add"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Tag</p>
|
||||
<p class="text-add">Tag</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-50" type="text"></div>
|
||||
<div class="col"><input type="text" id="languagelinktag" class="form-control input-add"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Language</p>
|
||||
<p class="text-add">Language</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="col text-add">
|
||||
<div class="form-check"><input class="form-check-input" type="checkbox" id="langId" name="languages[]" value="id"><label class="form-check-label" for="langId">Indonesia</label></div>
|
||||
<div class="form-check"><input class="form-check-input" type="checkbox" id="langLocal" name="languages[]" value="id"><label class="form-check-label" for="langId-1">Local</label></div>
|
||||
<div class="form-check"><input class="form-check-input" type="checkbox" id="langEn" name="languages[]" value="en"><label class="form-check-label" for="langEn">English</label></div>
|
||||
<div class="form-check"><input class="form-check-input" type="checkbox" id="langJap" name="languages[]" value="jap"><label class="form-check-label" for="langJap">Japanese</label></div>
|
||||
<div class="form-check"><input class="form-check-input" type="checkbox" id="langChi" name="languages[]" value="chi"><label class="form-check-label" for="langChi">Chinese</label></div>
|
||||
@@ -92,12 +94,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer"><button class="btn btn-light" type="button" data-bs-dismiss="modal">Close</button><button class="btn btn-primary" type="button">Save</button></div>
|
||||
<div class="modal-footer"><button class="btn btn-round-basic color-edit class25" id="languagelinkclose" type="button" data-bs-dismiss="modal">Close</button><button class="btn btn-round-basic color-add class25" id="languagelinksave" type="button">Save</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/jquery-3.7.1.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -4,34 +4,28 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen</title>
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="col w-100 h-100">
|
||||
<h1 style="text-align: center;">Operational Log</h1>
|
||||
<div class="col w-100 h-100 pad-header">
|
||||
<h2 style="text-align: center;">Operational Log</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6 col-sm-6 col-md-5 col-xxl-5">
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-6 col-md-5 col-lg-4 col-xl-4 col-xxl-3">
|
||||
<p>Select Log Date</p>
|
||||
</div>
|
||||
<div class="col-sm-7 col-md-6 col-lg-5 col-xl-4 col-xxl-4"><input id="logdate" type="date"></div>
|
||||
</div>
|
||||
<div class="col-6 col-sm col-md-2 col-lg-2 col-xl-2">
|
||||
<p class="text-add">Select Log Date</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col col-md-3 col-lg-2">
|
||||
<p>Search</p>
|
||||
</div>
|
||||
<div class="col"><input type="text" id="searchfilter" placeholder="Search Filter"></div>
|
||||
</div>
|
||||
<div class="col-6 col-sm col-md-2 col-lg-2 col-xl-2"><input id="logdate" class="form-control" type="date"></div>
|
||||
<div class="col-md-4 col-lg-4 col-xl-4"></div>
|
||||
<div class="col-6 col-sm col-md-2 col-lg-2 col-xl-2">
|
||||
<p class="text-add">Search</p>
|
||||
</div>
|
||||
<div class="col-6 col-sm col-md-2 col-lg-2 col-xl-2"><input type="text" id="searchfilter" class="form-control" placeholder="Search Filter"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="table-responsive">
|
||||
@@ -62,7 +56,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/jquery-3.7.1.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -4,9 +4,10 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen</title>
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -14,20 +15,20 @@
|
||||
<div class="container">
|
||||
<div class="row mb-5">
|
||||
<div class="col-md-8 col-xl-6 text-center mx-auto">
|
||||
<h2>Log in</h2>
|
||||
<h2>Sign In</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row d-flex justify-content-center">
|
||||
<div class="col-md-6 col-xl-4">
|
||||
<div class="card mb-5">
|
||||
<div class="card mb-5 card-login">
|
||||
<div class="card-body d-flex flex-column align-items-center">
|
||||
<div class="bs-icon-xl bs-icon-circle bs-icon-primary my-4 bs-icon"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-person">
|
||||
<div class="bs-icon-xl bs-icon-circle bs-icon-primary my-4 bs-icon"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-person bg-icon-login">
|
||||
<path d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664z"></path>
|
||||
</svg></div>
|
||||
<form class="text-center" method="post">
|
||||
<div class="mb-3"><input class="form-control" type="text" name="username" placeholder="Username"></div>
|
||||
<div class="mb-3"><input class="form-control" type="password" name="password" placeholder="Password"></div>
|
||||
<div class="mb-3"><button class="btn btn-primary w-100 d-block" type="submit">Login</button></div>
|
||||
<div class="mb-3"><input class="form-control input-login" type="text" name="username" placeholder="Username"></div>
|
||||
<div class="mb-3"><input class="form-control input-login" type="password" name="password" placeholder="Password"></div>
|
||||
<div class="mb-3"><button class="btn btn-primary d-block w-100 btn-login" type="submit">Sign In</button></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -36,7 +37,6 @@
|
||||
</div>
|
||||
</section>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/jquery-3.7.1.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -4,24 +4,25 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen</title>
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="col w-100 h-100">
|
||||
<h1 style="text-align: center;">Message Bank</h1>
|
||||
<div class="col w-100 h-100 pad-header">
|
||||
<h2 style="text-align: center;">Message Bank</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnClear" type="button">Clear</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnAdd" type="button">Add</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnRemove" type="button">Remove</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnEdit" type="button">Edit</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnExport" type="button">Export</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnImport" type="button">Import</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-add" id="btnClear" type="button">Clear</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-add" id="btnAdd" type="button">Add</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-remove" id="btnRemove" type="button">Remove</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-edit" id="btnEdit" type="button">Edit</button></div>
|
||||
<div class="col-6 col-sm-6 col-md-6 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-import" id="btnExport" type="button">Export</button></div>
|
||||
<div class="col-6 col-sm-6 col-md-6 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-import" id="btnImport" type="button">Import</button></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="table-responsive">
|
||||
@@ -69,23 +70,73 @@
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Index</p>
|
||||
<p class="text-add">Index</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-25" type="text"></div>
|
||||
<div class="col"><input type="number" id="messageindex" class="input-add form-control" placeholder="Index"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Description</p>
|
||||
<p class="text-add">Description</p>
|
||||
</div>
|
||||
<div class="col"><input type="text" id="messagedescription" class="input-add form-control" placeholder="Description"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p class="text-add">Language</p>
|
||||
</div>
|
||||
<div class="col"><select id="messagelanguage" class="input-add form-control">
|
||||
<option value="INDONESIA">Indonesia</option>
|
||||
<option value="LOCAL">Local</option>
|
||||
<option value="ENGLISH">English</option>
|
||||
<option value="JAPANESE">Japanese</option>
|
||||
<option value="CHINESE">Chinese</option>
|
||||
<option value="ARABIC">Arabic</option>
|
||||
</select></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p class="text-add">ANN ID</p>
|
||||
</div>
|
||||
<div class="col"><input type="number" id="messageannid" class="input-add form-control" min="1" max="100" value="1" step="1" placeholder="Announcement ID"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p class="text-add">Voice Type</p>
|
||||
</div>
|
||||
<div class="col"><select id="messagevoicetype" class="input-add form-control">
|
||||
<option value="VOICE_1">Voice 1</option>
|
||||
<option value="VOICE_2">Voice 2</option>
|
||||
<option value="VOICE_3">Voice 3</option>
|
||||
</select></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<ul class="list-unstyled w-100 h-100" id="messageavailablevariables"></ul>
|
||||
</div>
|
||||
<div class="col-2">
|
||||
<div class="row"><button class="btn btn-danger" id="btnclearlist" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="1em" height="1em" fill="currentColor" style="font-size: 32;">
|
||||
<!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. -->
|
||||
<path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z"></path>
|
||||
</svg></button></div>
|
||||
<div class="row"><button class="btn btn-warning" id="btnremovefromlist" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="1em" height="1em" fill="currentColor" style="font-size: 32;">
|
||||
<!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. -->
|
||||
<path d="M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3V304h96c17.7 0 32-14.3 32-32V240c0-17.7-14.3-32-32-32H256V150.3c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z"></path>
|
||||
</svg></button></div>
|
||||
<div class="row"><button class="btn btn-success" id="btnaddtolist" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="1em" height="1em" fill="currentColor" style="font-size: 32;">
|
||||
<!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. -->
|
||||
<path d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1c-4.2-4.5-10.1-7.1-16.3-7.1C266 128 256 138 256 150.3V208H160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96v57.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.3-7.1l99.9-107.1c3.5-3.8 5.5-8.7 5.5-13.8s-2-10.1-5.5-13.8L294.6 135.1z"></path>
|
||||
</svg></button></div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ul class="list-unstyled w-100 h-100" id="messageselectedvariables"></ul>
|
||||
</div>
|
||||
<div class="col"><input class="w-100" type="text"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer"><button class="btn btn-light" type="button" data-bs-dismiss="modal">Close</button><button class="btn btn-primary" type="button">Save</button></div>
|
||||
<div class="modal-footer"><button class="btn btn-round-basic color-edit class25" type="button" data-bs-dismiss="modal">Close</button><button class="btn btn-round-basic color-add class25" type="button">Save</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/jquery-3.7.1.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
1325
html/webpage/overview.html
Normal file
1325
html/webpage/overview.html
Normal file
File diff suppressed because it is too large
Load Diff
@@ -4,19 +4,19 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen</title>
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="col w-100 h-100">
|
||||
<h1 style="text-align: center;">Setting</h1>
|
||||
<div class="col w-100 h-100 pad-header">
|
||||
<h2 style="text-align: center;">Setting</h2>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/jquery-3.7.1.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -4,35 +4,37 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen</title>
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body class="bg-body">
|
||||
<div class="row">
|
||||
<div class="col w-100 h-100">
|
||||
<h1 style="text-align: center;">Sound Bank</h1>
|
||||
<div class="col w-100 h-100 pad-header">
|
||||
<h2 style="text-align: center;">Sound Bank</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-2">
|
||||
<p>Search</p>
|
||||
<div class="col-md-7 col-lg-7 col-xl-7"></div>
|
||||
<div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2 search">
|
||||
<p class="text-add">Search</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-100" type="text" id="findsoundbank" placeholder="Search keyword" name="findsoundbank"></div>
|
||||
<div class="col-10 col-sm-10 col-md-3 col-lg-3 col-xl-3"><input class="w-100 form-control" type="text" id="findsoundbank" placeholder="Search keyword" name="findsoundbank"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<p id="tablesize" style="text-align: center;">Table Length : N/A</p>
|
||||
<p id="tablesize" class="text-add" style="text-align: center;">Table Length : N/A</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnClear" type="button">Clear</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnAdd" type="button">Add</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnRemove" type="button">Remove</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnEdit" type="button">Edit</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnExport" type="button">Export</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnImport" type="button">Import</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-add" id="btnClear" type="button">Clear</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-add" id="btnAdd" type="button">Add</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-remove" id="btnRemove" type="button">Remove</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-edit" id="btnEdit" type="button">Edit</button></div>
|
||||
<div class="col-6 col-sm-6 col-md-6 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-import" id="btnExport" type="button">Export</button></div>
|
||||
<div class="col-6 col-sm-6 col-md-6 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-import" id="btnImport" type="button">Import</button></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="table-responsive">
|
||||
@@ -71,62 +73,61 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" role="dialog" tabindex="-1" id="soundbankmodal">
|
||||
<div class="modal fade border-0" role="dialog" tabindex="-1" id="soundbankmodal">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Add / Edit Soundbank</h4>
|
||||
<div class="modal-header show">
|
||||
<h4 class="modal-title align-content-center">Add / Edit Soundbank</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Index</p>
|
||||
<p class="text-add">Index</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-25" type="text"></div>
|
||||
<div class="col"><input type="text" id="modalindex" class="input-add form-control"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Description</p>
|
||||
<p class="text-add">Description</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-100" type="text"></div>
|
||||
<div class="col"><input type="text" id="modaldescription" class="form-control input-add"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>TAG</p>
|
||||
<p class="text-add">TAG</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-50" type="text"></div>
|
||||
<div class="col"><input type="text" id="modaltag" class="form-control input-add"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Category</p>
|
||||
<p class="text-add">Category</p>
|
||||
</div>
|
||||
<div class="col"><select class="w-50"></select></div>
|
||||
<div class="col"><select id="modalcategory" class="input-add form-select"></select></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Language</p>
|
||||
<p class="text-add">Language</p>
|
||||
</div>
|
||||
<div class="col"><select class="w-50"></select></div>
|
||||
<div class="col" id="modallanguage"><select class="input-add form-select"></select></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Voice Type</p>
|
||||
<p class="text-add">Voice Type</p>
|
||||
</div>
|
||||
<div class="col"><select class="w-50"></select></div>
|
||||
<div class="col"><select id="modalvoicetype" class="input-add form-select"></select></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Path</p>
|
||||
<p class="text-add">Path</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-100" type="text"></div>
|
||||
<div class="col"><select id="modalpath" class="js-example-basic-single" name="modalpath"></select></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer"><button class="btn btn-light" type="button" data-bs-dismiss="modal">Close</button><button class="btn btn-primary" type="button">Save</button></div>
|
||||
<div class="modal-footer"><button class="btn btn-round-basic color-edit class25" id="soundbankclose" type="button" data-bs-dismiss="modal">Close</button><button class="btn btn-round-basic color-add class25" id="soundbanksave" type="button">Save</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/jquery-3.7.1.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
34
html/webpage/streamerstatus.html
Normal file
34
html/webpage/streamerstatus.html
Normal file
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="card" id="streamercard">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title" id="streamertitle">Channel 01</h4>
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<h6 class="text-muted mb-2" id="streamerip">IP : 192.168.10.10</h6>
|
||||
</div>
|
||||
<div class="col">
|
||||
<h6 class="text-muted mb-2" id="streamerbuffer">Free : 64KB</h6>
|
||||
</div>
|
||||
</div>
|
||||
<p class="card-text" id="streamerstatus">Status : Idle</p>
|
||||
<div class="progress" id="streamervu">
|
||||
<div class="progress-bar" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" style="width: 50%;">50%</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -4,24 +4,25 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>AAS_NewGen</title>
|
||||
<title>AAS_NewGen_03Sept25</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/css/Login-Form-Basic-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="col w-100 h-100">
|
||||
<h1 style="text-align: center;">Timer</h1>
|
||||
<div class="col w-100 h-100 pad-header">
|
||||
<h2 style="text-align: center;">Timer</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnClear" type="button">Clear</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnAdd" type="button">Add</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnRemove" type="button">Remove</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnEdit" type="button">Edit</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnExport" type="button">Export</button></div>
|
||||
<div class="col"><button class="btn btn-primary w-100" id="btnImport" type="button">Import</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-add" id="btnClear" type="button">Clear</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-add" id="btnAdd" type="button">Add</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-remove" id="btnRemove" type="button">Remove</button></div>
|
||||
<div class="col-3 col-sm-3 col-md-3 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-edit" id="btnEdit" type="button">Edit</button></div>
|
||||
<div class="col-6 col-sm-6 col-md-6 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-import" id="btnExport" type="button">Export</button></div>
|
||||
<div class="col-6 col-sm-6 col-md-6 col-lg-2 col-xl-2"><button class="btn w-100 pad-button btn-round-basic color-import" id="btnImport" type="button">Import</button></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="table-responsive">
|
||||
@@ -69,49 +70,49 @@
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Index</p>
|
||||
<p class="text-add">Index</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-25" type="text"></div>
|
||||
<div class="col"><input type="text" class="input-add form-control"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Description</p>
|
||||
<p class="text-add">Description</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-100" type="text"></div>
|
||||
<div class="col"><input type="text" class="input-add form-control"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Day</p>
|
||||
<p class="text-add">Day</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-25" type="text"></div>
|
||||
<div class="col"><input type="text" class="input-add form-control"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Time</p>
|
||||
<p class="text-add">Time</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-25" type="text"></div>
|
||||
<div class="col"><input type="text" class="input-add form-control"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Sound Path</p>
|
||||
<p class="text-add">Sound Path</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-100" type="text"></div>
|
||||
<div class="col"><input type="text" class="input-add form-control"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Repeat</p>
|
||||
<p class="text-add">Repeat</p>
|
||||
</div>
|
||||
<div class="col"><input class="w-25" type="number" min="1" max="5" step="1" value="1"></div>
|
||||
<div class="col"><input class="w-25 form-select input-add" type="number" min="1" max="5" step="1" value="1"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Enable</p>
|
||||
<p class="text-add">Enable</p>
|
||||
</div>
|
||||
<div class="col"><input type="checkbox" checked=""></div>
|
||||
<div class="col"><input type="checkbox" class="form-check-input form-check text-add" checked=""></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 col-sm-3">
|
||||
<p>Broadcast Zones</p>
|
||||
<p class="text-add">Broadcast Zones</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<ul class="list-group">
|
||||
@@ -122,12 +123,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer"><button class="btn btn-light" type="button" data-bs-dismiss="modal">Close</button><button class="btn btn-primary" type="button">Save</button></div>
|
||||
<div class="modal-footer"><button class="btn btn-round-basic color-edit class25" type="button" data-bs-dismiss="modal">Close</button><button class="btn btn-round-basic class25 color-add" type="button">Save</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/jquery-3.7.1.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
4
src/barix/BarixConnection.kt
Normal file
4
src/barix/BarixConnection.kt
Normal file
@@ -0,0 +1,4 @@
|
||||
package barix
|
||||
|
||||
class BarixConnection {
|
||||
}
|
||||
101
src/barix/TCP_Barix_Command_Server.kt
Normal file
101
src/barix/TCP_Barix_Command_Server.kt
Normal file
@@ -0,0 +1,101 @@
|
||||
package barix
|
||||
|
||||
import codes.Somecodes.Companion.ValidString
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.isActive
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.tinylog.Logger
|
||||
import java.net.ServerSocket
|
||||
import java.net.Socket
|
||||
import java.util.function.Consumer
|
||||
|
||||
@Suppress("unused")
|
||||
class TCP_Barix_Command_Server {
|
||||
private var tcpserver: ServerSocket? = null
|
||||
private var job: Job? = null
|
||||
private val socketMap = mutableMapOf<String, Socket>()
|
||||
|
||||
/**
|
||||
* Start TCP Command Server
|
||||
* @param port The port number to listen on (default is 5001)
|
||||
* @param cb A callback function that will be called when a valid command is received
|
||||
* @return true if successful
|
||||
*/
|
||||
fun StartTcpServer(port: Int = 5001, cb: Consumer<String>): Boolean {
|
||||
try {
|
||||
val tcp = ServerSocket(port)
|
||||
tcpserver = tcp
|
||||
job = CoroutineScope(Dispatchers.IO).launch {
|
||||
Logger.info { "TCP server started" }
|
||||
while (isActive) {
|
||||
if (tcpserver?.isClosed == true) break
|
||||
try {
|
||||
tcpserver?.accept().use { socket ->
|
||||
{
|
||||
CoroutineScope(Dispatchers.Main).launch {
|
||||
if (socket != null) {
|
||||
val key : String = socket.inetAddress.hostAddress+":"+socket.port
|
||||
socketMap[key] = socket
|
||||
Logger.info { "Start communicating with $key" }
|
||||
socket.getInputStream().use { din ->
|
||||
{
|
||||
while (isActive) {
|
||||
if (din.available()>0){
|
||||
val bb = ByteArray(din.available())
|
||||
din.read(bb)
|
||||
// B4A format, 4 bytes di depan adalah size
|
||||
val str = String(bb)
|
||||
if (ValidString(str)) cb.accept(str)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Logger.info { "Finished communicating with $key" }
|
||||
socketMap.remove(key)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} catch (ex: Exception) {
|
||||
Logger.error { "Failed accepting TCP Socket, Message : ${ex.message}" }
|
||||
}
|
||||
|
||||
}
|
||||
Logger.info { "TCP server stopped" }
|
||||
}
|
||||
return true
|
||||
} catch (e: Exception) {
|
||||
Logger.error { "Failed to StartTcpServer, Message : ${e.message}" }
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop TCP Command Server
|
||||
* @return true if succesful
|
||||
*/
|
||||
fun StopTcpCommand(): Boolean {
|
||||
try {
|
||||
tcpserver?.close()
|
||||
runBlocking {
|
||||
socketMap.values.forEach {
|
||||
it.close()
|
||||
}
|
||||
socketMap.clear()
|
||||
job?.join()
|
||||
}
|
||||
Logger.info { "StopTcpCommand success" }
|
||||
return true
|
||||
} catch (e: Exception) {
|
||||
Logger.error { "Failed to StopTcpServer, Message : ${e.message}" }
|
||||
} finally {
|
||||
tcpserver = null
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.time.format.DateTimeFormatter
|
||||
import java.util.function.Consumer
|
||||
import kotlin.io.path.name
|
||||
|
||||
|
||||
@Suppress("unused")
|
||||
@@ -30,6 +31,34 @@ class Somecodes {
|
||||
const val GB_threshold = MB_threshold * 1024.0
|
||||
const val TB_threshold = GB_threshold * 1024.0
|
||||
|
||||
/**
|
||||
* List all audio files (.mp3 and .wav) in the specified directory and its subdirectories.
|
||||
* Only files larger than 1KB are included.
|
||||
* @param dir The directory to search in (default is the current working directory).
|
||||
* @return A list of absolute paths to the audio files found.
|
||||
*/
|
||||
fun ListAudioFiles(dir: String = current_directory) : List<String>{
|
||||
return try{
|
||||
// find all files that ends with .mp3 or .wav
|
||||
// and find them recursively
|
||||
val p = Path.of(dir)
|
||||
if (Files.exists(p) && Files.isDirectory(p)){
|
||||
Files.walk(p)
|
||||
// cari file regular saja
|
||||
.filter { Files.isRegularFile(it)}
|
||||
// size lebih dari 1KB
|
||||
.filter { Files.size(it) > 1024}
|
||||
// extension .mp3 atau .wav
|
||||
.filter { it.name.endsWith(".mp3",true) || it.name.endsWith(".wav",true) }
|
||||
.map { it.toAbsolutePath().toString() }
|
||||
.toList()
|
||||
} else throw Exception()
|
||||
|
||||
} catch (_ : Exception){
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a size in bytes to a human-readable format.
|
||||
* @param size Size in bytes.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package web
|
||||
|
||||
import codes.Somecodes
|
||||
import codes.Somecodes.Companion.ListAudioFiles
|
||||
import codes.Somecodes.Companion.ValidDate
|
||||
import codes.Somecodes.Companion.ValidFile
|
||||
import codes.Somecodes.Companion.ValidScheduleDay
|
||||
@@ -10,7 +11,9 @@ import com.fasterxml.jackson.databind.JsonNode
|
||||
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||
import content.Category
|
||||
import content.Language
|
||||
import content.ScheduleDay
|
||||
import content.VoiceType
|
||||
import database.LanguageLink
|
||||
import database.MariaDB
|
||||
import database.Soundbank
|
||||
import io.javalin.Javalin
|
||||
@@ -123,7 +126,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>, val
|
||||
SendReply(wsMessageContext, cmd.command, MariaDB.ArrayListtoString(db.Read_Queue_Paging()))
|
||||
}
|
||||
|
||||
"getAASPagingQueue" ->{
|
||||
"getAASQueue" ->{
|
||||
SendReply(wsMessageContext, cmd.command, MariaDB.ArrayListtoString(db.Read_Queue_Table()))
|
||||
}
|
||||
|
||||
@@ -162,11 +165,34 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>, val
|
||||
before { CheckUsers(it) }
|
||||
}
|
||||
path("api") {
|
||||
path("VoiceType"){
|
||||
get{
|
||||
it.result(objectmapper.writeValueAsString(VoiceType.entries.map { vt -> vt.name }))
|
||||
}
|
||||
}
|
||||
path("Category") {
|
||||
get {
|
||||
it.result(objectmapper.writeValueAsString(Category.entries.map { cat -> cat.name }) )
|
||||
}
|
||||
}
|
||||
path("Language") {
|
||||
get {
|
||||
it.result(objectmapper.writeValueAsString(Language.entries.map { lang -> lang.name }) )
|
||||
}
|
||||
}
|
||||
path("ScheduleDay") {
|
||||
get {
|
||||
it.result(objectmapper.writeValueAsString(ScheduleDay.entries.map { day -> day.toString() }))
|
||||
}
|
||||
}
|
||||
path("SoundBank") {
|
||||
get("List") {
|
||||
// get soundbank list
|
||||
it.result(MariaDB.ArrayListtoString(db.SoundbankList))
|
||||
}
|
||||
get("ListFiles"){
|
||||
it.result(objectmapper.writeValueAsString(ListAudioFiles("C:\\soundbank")))
|
||||
}
|
||||
post("Add") {
|
||||
try {
|
||||
val addvalue = objectmapper.readValue(it.body(), Soundbank::class.java)
|
||||
@@ -322,6 +348,9 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>, val
|
||||
// get messagebank list
|
||||
it.result(MariaDB.ArrayListtoString(db.MessagebankList))
|
||||
}
|
||||
post("Add"){
|
||||
// TODO add new messagebank
|
||||
}
|
||||
delete("List") {
|
||||
// truncate messagebank table
|
||||
if (db.Clear_Messagebank()) {
|
||||
@@ -443,6 +472,22 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>, val
|
||||
// get language link list
|
||||
it.result(MariaDB.ArrayListtoString(db.LanguageLinkList))
|
||||
}
|
||||
post("Add"){
|
||||
// Parse JSON from request body
|
||||
val json: JsonNode = objectmapper.readTree(it.body())
|
||||
val tag = json.get("tag").asText()
|
||||
val languages = json.get("language").asText().split(";")
|
||||
if (ValidString(tag)){
|
||||
if (languages.all { xx -> Language.entries.any { yy -> yy.name== xx} }){
|
||||
if (db.LanguageLinkList.any { ll -> ll.TAG==tag }){
|
||||
val newvalue = LanguageLink(0u, tag, languages.joinToString(";"))
|
||||
if (db.Add_LanguageLink(newvalue)){
|
||||
it.result("OK")
|
||||
} else it.status(500).result("Failed to add language link to database")
|
||||
} else it.status(400).result("TAG=$tag already exists" )
|
||||
} else it.status(400).result("Contains unsupported language" )
|
||||
} else it.status(400).result("Invalid tag or language")
|
||||
}
|
||||
delete("List") {
|
||||
// truncate language link table
|
||||
if (db.Clear_LanguageLink()) {
|
||||
|
||||
Reference in New Issue
Block a user