From ae0822c994ed3de9da744a41e3451c5cbc1662ab Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Mon, 5 Oct 2020 17:50:25 +0200
Subject: [PATCH] INSTANCE: Generate button from list

---
 client/index.html       |  6 ++++--
 client/main.js          |  4 ++--
 instance/index.html     | 11 +++++-----
 instance/main.js        | 47 ++++++++++++++++++++++++++++++++++-------
 instance/views/main.ejs |  0
 5 files changed, 50 insertions(+), 18 deletions(-)
 create mode 100644 instance/views/main.ejs

diff --git a/client/index.html b/client/index.html
index 93c36a9..4446e03 100644
--- a/client/index.html
+++ b/client/index.html
@@ -3,11 +3,13 @@
     <head>
         <meta charset="UTF-8">
         <title>Lektor App</title>
+        <script src="../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">
     </head>
     <body>
         <!-- main file running the express app -->
         <script src='./main.js' type='text/javascript'></script>
-        
+
     </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/client/main.js b/client/main.js
index 9d81ac4..d4c84d5 100644
--- a/client/main.js
+++ b/client/main.js
@@ -8,9 +8,9 @@ function launcher () {
 
     var publicRouter = require('./routes/public.js');
 
-    app.set('views', __dirname + '/views');
+    app.set('views', `${__dirname}/views`);
     app.set('view engine', 'ejs');
-    app.use(express.static(__dirname + '/../style'));
+    app.use(express.static(`${__dirname}/../style`));
     app.use('/', publicRouter);
 
     app.listen(port, () => {
diff --git a/instance/index.html b/instance/index.html
index 12f138d..43230f5 100644
--- a/instance/index.html
+++ b/instance/index.html
@@ -24,19 +24,18 @@
                             LektorApp Admin Interface
                         </h2>
                     </div>
-                    <div id="headerBody" class="card-body text-center">
-                        <button id="closeButton" type="button" class="btn btn-outline-primary">
-                            Quit LektorApp
-                        </button>
+                    <div id="buttonPanelListLeft" class="card-body text-left"
+                         style="padding-top: 0px;padding-bottom: 0px;padding-right: 0px;padding-left: 0px;">
+                    <!-- Will be generated on loading page --!>
                     </div>
                 </div>
             </div>
             <div id="panelWrapper" class="row">
                 <div id="panelLeft" class="col panel">
-
+                <!-- Will be generated on loading page --!>
                 </div>
                 <div id="panelRight" class="col panel">
-
+                <!-- Will be generated on loading page --!>
                 </div>
             </div>
         </div>
diff --git a/instance/main.js b/instance/main.js
index 147a392..14abccc 100644
--- a/instance/main.js
+++ b/instance/main.js
@@ -1,22 +1,53 @@
 const { ipcRenderer } = require('electron');
-const logger = require('../common/logger.js');
+const logger          = require('../common/logger.js');
 
 const karaJSON = require('../test/dummyKara.json');
+const buttonList = [
+    [ "left", "Play", "commandPlay" ],
+    [ "left", "Stop", "commandStop" ],
+    [ "right", "Quit LektorApp", "closeButton" ]
+];
 
-window.onload = function(){
-    const closeApp = document.getElementById("closeButton");
-    closeApp.addEventListener('click', () => {
+window.onload = () => {
+    createButtonList(buttonList);
+    karaList(karaJSON);
+
+    document.getElementById("closeButton").addEventListener('click', () => {
         ipcRenderer.send('close-app')
     });
-    karaList(karaJSON);
+    document.getElementById("commandPlay").addEventListener('click', () => {
+        logger.debug("Command play !");
+    });
+
     logger.debug("Window loaded");
 }
 
-function karaList(karas){
+function createButtonList(list) {
+    var renderHtmlLeft  = "";
+    var renderHtmlRight = "";
+    list.forEach( (btn) => {
+        if (btn[0] == "left") {
+            renderHtmlLeft = `${renderHtmlLeft}
+                              <button id="${btn[2]}" type="button" class="btn btn-outline-primary">
+                                  ${btn[1]}
+                              </button>`;
+            logger.debug(`Create button for "${btn[1]}" with id "${btn[2]} at the left"`);
+        } else if (btn[0] == "right") {
+            renderHtmlRight = `${renderHtmlRight}
+                               <button id="${btn[2]}" type="button" class="btn btn-outline-primary">
+                                   ${btn[1]}
+                               </button>`;
+            logger.debug(`Create button for "${btn[1]}" with id "${btn[2]} at the right"`);
+        }
+    });
+    document.getElementById("buttonPanelListLeft").innerHTML = renderHtmlLeft + renderHtmlRight;
+}
+
+function karaList(karas) {
     var karaList = "";
     var playingList = "";
-    karas.forEach(function(kara) {
-        if(kara.author_name === "Sting"){
+    karas.forEach( (kara) => {
+        if (kara.author_name === "Sting") {
             playingList += '<div class="card shadow" style="margin: 5px; border-radius: 10px; margin: 20px 0px 20px 0px;"><div class="card-body">' + kara.source_name + ' - ' + kara.song_name + '</div></div>';
         }
         karaList += '<div class="card shadow" style="margin: 5px; border-radius: 10px; margin: 20px 0px 20px 0px;"><div class="card-body">' + kara.source_name + ' - ' + kara.song_name + '</div></div>';
diff --git a/instance/views/main.ejs b/instance/views/main.ejs
new file mode 100644
index 0000000..e69de29
-- 
GitLab