diff --git a/common/lkt.js b/common/lkt.js index 09b3ba557ab4e67577817315898bed752ad4d5d3..8353bacde2b54c18565bd61ce45e6dde35b96f68 100644 --- a/common/lkt.js +++ b/common/lkt.js @@ -121,7 +121,7 @@ class LktClient { return new Promise(resolv => { client.m_socket.on('data', data => { if (!once) { - client.m_socket.write(`${command}\n`); + client.m_socket.write(`command_list_begin\n${command}\ncommand_list_end\n`); once = true; return null; } else { diff --git a/instance/index.ejs b/instance/index.ejs new file mode 100644 index 0000000000000000000000000000000000000000..6b24ab728c69ebb360b2d8ca71168064cc4a2553 --- /dev/null +++ b/instance/index.ejs @@ -0,0 +1,30 @@ +<%# vim: ts=4 syntax=html + The template for the main page %> +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8" /> + <title>Amadeus</title> + <script> + window.$ = window.jQuery = require('../style/jquery/jquery-3.5.1.js'); + </script> + <script src="../style/bootstrap-4.5.2-dist/js/bootstrap.min.js"></script> + <link rel="stylesheet" href="../style/bootstrap-4.5.2-dist/css/bootstrap.min.css" /> + <link rel="stylesheet" href="../style/css/instance.css" /> + <link rel="stylesheet" href="../style/fontawesome-free-5.15.1-web/css/all.min.css" /> + <script src="./main.js"></script> + <script></script> + </head> + <body> + <%- include('views/settings.ejs'); %> + <div id="mainFrame" class="container-fluid"> + <div + id="buttonPanelListLeft" + class="d-flex flex-row bd-highlight mb-3 row card" + style="-webkit-app-region: drag" + ></div> + <%- include('views/panels.ejs'); %> + <%- include('views/progressBar.ejs'); %> + </div> + </body> +</html> diff --git a/instance/index.html b/instance/index.html deleted file mode 100644 index 204672b57b6a486d065cdd17a87b2eafea753b38..0000000000000000000000000000000000000000 --- a/instance/index.html +++ /dev/null @@ -1,227 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8" /> - <title>Amadeus</title> - <script> - window.$ = window.jQuery = require('../style/jquery/jquery-3.5.1.js'); - </script> - <script src="../style/bootstrap-4.5.2-dist/js/bootstrap.min.js"></script> - <link rel="stylesheet" href="../style/bootstrap-4.5.2-dist/css/bootstrap.min.css" /> - <link rel="stylesheet" href="../style/css/instance.css" /> - <link rel="stylesheet" href="../style/fontawesome-free-5.15.1-web/css/all.min.css" /> - <script src="./main.js"></script> - <script></script> - </head> - <body> - <div - id="modal-settings" - class="modal bd-example-modal-lg" - tabindex="-1" - role="dialog" - style="overflow-y: scroll" - > - <div class="modal-dialog modal-lg modal-dialog-centered" role="document"> - <div class="modal-content"> - <div class="modal-header"> - <h2 class="modal-title">Amadeus settings</h2> - <button type="button" class="btn btn-outline-primary btn-lg modal-close" aria-label="Close"> - <i class="fas fa-window-close"></i> - </button> - </div> - <div class="modal-body"> - <form> - <h3>Running processes</h3> - <p - >Here is a list of related processes that may run. The box is checked when the process - is running.</p - > - <div class="form-group row"> - <div class="col-sm-2">Lektord</div> - <div class="col-sm-10"> - <div class="form-check"> - <input class="form-check-input" type="checkbox" id="running-lektord" disabled /> - <label class="form-check-label" for="running-lektord"></label> - </div> - </div> - </div> - <div class="form-group row"> - <div class="col-sm-2">Klkt</div> - <div class="col-sm-10"> - <div class="form-check"> - <input class="form-check-input" type="checkbox" id="running-klkt" disabled /> - <label class="form-check-label" for="running-klkt"></label> - </div> - </div> - </div> - <hr /> - - <h3>Lektord settings</h3> - <p>Configure which lektord to use or if 'attach' mode is enabled.</p> - <div class="form-group row"> - <label for="inputHost" class="col-sm-2 col-form-label">Host</label> - <div class="col-sm-10"> - <input type="text" class="form-control" id="inputHost" placeholder="Host..." /> - </div> - </div> - <div class="form-group row"> - <label for="inputPort" class="col-sm-2 col-form-label">Port</label> - <div class="col-sm-10"> - <input type="int" class="form-control" id="inputPort" placeholder="6600" /> - </div> - </div> - <div class="form-group row"> - <div class="col-sm-2">Attach mode</div> - <div class="col-sm-10"> - <div class="form-check"> - <input class="form-check-input" type="checkbox" id="inputAttachMode" /> - <label class="form-check-label" for="inputAttachMode"> - Enable attach mode - </label> - </div> - </div> - </div> - <hr /> - - <h3>Client interface settings</h3> - <p>Express server settings for the client interface.</p> - <div class="form-group row"> - <label for="inputClientPort" class="col-sm-2 col-form-label">Port</label> - <div class="col-sm-10"> - <input type="int" class="form-control" id="inputClientPort" placeholder="3000" /> - </div> - </div> - <hr /> - - <h3>Database settings</h3> - <p>Which database to use, and other options.</p> - <div class="form-group row"> - <label for="inputDbPath" class="col-sm-2 col-form-label">Host</label> - <div class="col-sm-10"> - <input type="text" class="form-control" id="inputDbPath" placeholder="kara.db..." /> - </div> - </div> - <hr /> - - <h3>Kurisu settings</h3> - <p>Where to find Kurisu.</p> - <div class="form-group row"> - <label for="inputKurisuUrl" class="col-sm-2 col-form-label">URL</label> - <div class="col-sm-10"> - <input - type="text" - class="form-control" - id="inputKurisuUrl" - placeholder="https://kurisu.iiens.net/..." - /> - </div> - </div> - <hr /> - - <h3>Log settings</h3> - <p>Log options, this is a developper section.</p> - <fieldset class="form-group"> - <div class="row"> - <legend class="col-form-label col-sm-2 pt-0">Log level</legend> - <div class="col-sm-10" id="inputLogLevel"> - <div class="form-check"> - <input - class="form-check-input" - type="radio" - name="gridRadios" - id="logERROR" - value="ERROR" - checked - /> - <label class="form-check-label" for="logERROR">Error</label> - </div> - <div class="form-check"> - <input - class="form-check-input" - type="radio" - name="gridRadios" - id="logWARNING" - value="WARNING" - /> - <label class="form-check-label" for="logWARNING">Warning</label> - </div> - <div class="form-check"> - <input - class="form-check-input" - type="radio" - name="gridRadios" - id="logINFO" - value="INFO" - /> - <label class="form-check-label" for="logINFO">Info</label> - </div> - <div class="form-check"> - <input - class="form-check-input" - type="radio" - name="gridRadios" - id="logDEBUG" - value="DEBUG" - /> - <label class="form-check-label" for="logDEBUG">Debug</label> - </div> - </div> - </div> - </fieldset> - <div class="form-group row"> - <div class="col-sm-2">Lektord logs</div> - <div class="col-sm-10"> - <div class="form-check"> - <input class="form-check-input" type="checkbox" id="inputLogLektord" /> - <label class="form-check-label" for="inputLogLektord"> - Enable lektord logs when possible - </label> - </div> - </div> - </div> - </form> - </div> - <div class="modal-footer"> For changes to be applied you need to restart Amadeus. </div> - </div> - </div> - </div> - - <div id="mainFrame" class="container-fluid"> - <div - id="buttonPanelListLeft" - class="d-flex flex-row bd-highlight mb-3 row card" - style="-webkit-app-region: drag" - ></div> - <div id="panelWrapper" class="row" style="margin-bottom: 13px"> - <ul - id="panelLeft" - style="padding: 0px; margin-right: 10px" - class="col panel d-flex flex-column bd-highlight mb-3" - ></ul> - <ul - id="panelRight" - style="padding: 0px; margin-left: 10px" - class="col panel d-flex flex-column bd-highlight mb-3" - ></ul> - </div> - <div - id="progress" - class="progress" - style="z-index: 666; position: fixed !important; right: 0; left: 0; bottom: 0; height: 14px" - > - <div - class="progress-bar" - id="progressBar" - role="progressbar" - style=" - -webkit-transition: none; - -moz-transition: none; - -ms-transition: none; - -o-transition: none; - transition: none; - " - ></div> - </div> - </div> - </body> -</html> diff --git a/instance/views/panels.ejs b/instance/views/panels.ejs new file mode 100644 index 0000000000000000000000000000000000000000..fa8effde5f8d3067ecc27995bd52590a103471ac --- /dev/null +++ b/instance/views/panels.ejs @@ -0,0 +1,14 @@ +<%# vim: ts=4 syntax=html + The template for the main panels %> +<div id="panelWrapper" class="row" style="margin-bottom: 13px"> + <ul + id="panelLeft" + style="padding: 0px; margin-right: 10px" + class="col panel d-flex flex-column bd-highlight mb-3" + ></ul> + <ul + id="panelRight" + style="padding: 0px; margin-left: 10px" + class="col panel d-flex flex-column bd-highlight mb-3" + ></ul> +</div> diff --git a/instance/views/progressBar.ejs b/instance/views/progressBar.ejs new file mode 100644 index 0000000000000000000000000000000000000000..fefec9b813b67f153d00ebbcea4231cc21a6f295 --- /dev/null +++ b/instance/views/progressBar.ejs @@ -0,0 +1,7 @@ +<%# vim: ts=4 syntax=html + The template for the progress bar at the bottom of the screen %> +<div id="progress" class="progress" style="z-index: 666; position: fixed !important; right: 0; left: 0; bottom: 0; height: 14px"> + <div class="progress-bar" id="progressBar" role="progressbar" + style="-webkit-transition: none; -moz-transition: none; -ms-transition: none; -o-transition: none; transition: none;"> + </div> +</div> diff --git a/instance/views/settings.ejs b/instance/views/settings.ejs new file mode 100644 index 0000000000000000000000000000000000000000..45d8f40e2505bafc7dc5fea0f90077e915435e3a --- /dev/null +++ b/instance/views/settings.ejs @@ -0,0 +1,140 @@ +<%# vim: ts=4 syntax=html + The template for the settings modal %> +<div id="modal-settings" class="modal bd-example-modal-lg" tabindex="-1" role="dialog" style="overflow-y: scroll"> + <div class="modal-dialog modal-lg modal-dialog-centered" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <h2 class="modal-title">Amadeus settings</h2> + <button type="button" class="btn btn-outline-primary btn-lg modal-close" aria-label="Close"> + <i class="fas fa-window-close"></i> + </button> + </div> + <div class="modal-body"> + <form> + <h3>Running processes</h3> + <p>Here is a list of related processes that may run. The box is checked when the process is running.</p> + <div class="form-group row"> + <div class="col-sm-2">Lektord</div> + <div class="col-sm-10"> + <div class="form-check"> + <input class="form-check-input" type="checkbox" id="running-lektord" disabled /> + <label class="form-check-label" for="running-lektord"></label> + </div> + </div> + </div> + <div class="form-group row"> + <div class="col-sm-2">Klkt</div> + <div class="col-sm-10"> + <div class="form-check"> + <input class="form-check-input" type="checkbox" id="running-klkt" disabled /> + <label class="form-check-label" for="running-klkt"></label> + </div> + </div> + </div> + <hr /> + + <h3>Lektord settings</h3> + <p>Configure which lektord to use or if 'attach' mode is enabled.</p> + <div class="form-group row"> + <label for="inputHost" class="col-sm-2 col-form-label">Host</label> + <div class="col-sm-10"> + <input type="text" class="form-control" id="inputHost" placeholder="Host..." /> + </div> + </div> + <div class="form-group row"> + <label for="inputPort" class="col-sm-2 col-form-label">Port</label> + <div class="col-sm-10"> + <input type="int" class="form-control" id="inputPort" placeholder="6600" /> + </div> + </div> + <div class="form-group row"> + <div class="col-sm-2">Attach mode</div> + <div class="col-sm-10"> + <div class="form-check"> + <input class="form-check-input" type="checkbox" id="inputAttachMode" /> + <label class="form-check-label" for="inputAttachMode"> + Enable attach mode + </label> + </div> + </div> + </div> + <hr /> + + <h3>Client interface settings</h3> + <p>Express server settings for the client interface.</p> + <div class="form-group row"> + <label for="inputClientPort" class="col-sm-2 col-form-label">Port</label> + <div class="col-sm-10"> + <input type="int" class="form-control" id="inputClientPort" placeholder="3000" /> + </div> + </div> + <hr /> + + <h3>Database settings</h3> + <p>Which database to use, and other options.</p> + <div class="form-group row"> + <label for="inputDbPath" class="col-sm-2 col-form-label">Host</label> + <div class="col-sm-10"> + <input type="text" class="form-control" id="inputDbPath" placeholder="kara.db..." /> + </div> + </div> + <hr /> + + <h3>Kurisu settings</h3> + <p>Where to find Kurisu.</p> + <div class="form-group row"> + <label for="inputKurisuUrl" class="col-sm-2 col-form-label">URL</label> + <div class="col-sm-10"> + <input type="text" class="form-control" id="inputKurisuUrl" placeholder="https://kurisu.iiens.net/..." /> + </div> + </div> + <hr /> + + <h3>Log settings</h3> + <p>Log options, this is a developper section.</p> + <fieldset class="form-group"> + <div class="row"> + <legend class="col-form-label col-sm-2 pt-0">Log level</legend> + <div class="col-sm-10" id="inputLogLevel"> + <div class="form-check"> + <input class="form-check-input" type="radio" name="gridRadios" id="logERROR" value="ERROR" checked /> + <label class="form-check-label" for="logERROR">Error</label> + </div> + <div class="form-check"> + <input + class="form-check-input" + type="radio" + name="gridRadios" + id="logWARNING" + value="WARNING" + /> + <label class="form-check-label" for="logWARNING">Warning</label> + </div> + <div class="form-check"> + <input class="form-check-input" type="radio" name="gridRadios" id="logINFO" value="INFO" /> + <label class="form-check-label" for="logINFO">Info</label> + </div> + <div class="form-check"> + <input class="form-check-input" type="radio" name="gridRadios" id="logDEBUG" value="DEBUG" /> + <label class="form-check-label" for="logDEBUG">Debug</label> + </div> + </div> + </div> + </fieldset> + <div class="form-group row"> + <div class="col-sm-2">Lektord logs</div> + <div class="col-sm-10"> + <div class="form-check"> + <input class="form-check-input" type="checkbox" id="inputLogLektord" /> + <label class="form-check-label" for="inputLogLektord"> + Enable lektord logs when possible + </label> + </div> + </div> + </div> + </form> + </div> + <div class="modal-footer"> For changes to be applied you need to restart Amadeus. </div> + </div> + </div> +</div> diff --git a/main.js b/main.js index 563c60680b6816f13559e8424d03fef14dfd8aee..0008f92a0d11f1df75574f246c306ba4c024fa4e 100644 --- a/main.js +++ b/main.js @@ -6,6 +6,9 @@ const logger = require.main.require('./common/logger.js'), lkt = require.main.require('./common/lkt.js'), isRunning = require('./common/isRunning.js'); +let electronEjs = require('electron-ejs'); +let ejs = new electronEjs({ app: 'Amadeus' }, {}); + const packageConfig = require('./package.json').config; logger.debug('main', 'Package config is ' + JSON.stringify(packageConfig)); @@ -86,7 +89,8 @@ function createInstanceWindow() { contextIsolation: false /* XXX: Otherwise 'require' is not defined in instance/index.html */, }, }); - win.loadFile('instance/index.html'); + win.loadURL(`file://${__dirname}/instance/index.ejs`); + // win.loadFile('instance/index.html'); } function createUserViewWindow() { diff --git a/package.json b/package.json index da07bed2aab9288d51f9c00577391702070624e6..40aaa64f365d4b9870f274735cbac1719f00f527 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "dependencies": { "ejs": "^3.1.5", "electron": "^10.1.1", + "electron-ejs": "^1.2.1", "express": "^4.17.1", "ini": "^2.0.0", "node": "<14.0.0 ",