aboutsummaryrefslogtreecommitdiff
path: root/src/js/ui/menu.js
diff options
context:
space:
mode:
authorkaotisk <kaotisk@arching-kaos.org>2024-11-23 09:37:00 +0200
committerkaotisk <kaotisk@arching-kaos.org>2024-11-23 09:37:00 +0200
commitc5c3505cbeaae832c0bc42c0583d77fc2bff8b37 (patch)
tree6c790b0508b10d8651babc027cdc02f8df8fad80 /src/js/ui/menu.js
parent7a1f09d3236b74357c92ec18da69c3828c1a6db5 (diff)
downloadarching-kaos-web-ui-master.tar.gz
arching-kaos-web-ui-master.tar.bz2
arching-kaos-web-ui-master.zip
Refactored menu with ak-generator, fixed mobile viewHEADorigin/masterorigin/HEADmaster
Diffstat (limited to 'src/js/ui/menu.js')
-rw-r--r--src/js/ui/menu.js148
1 files changed, 148 insertions, 0 deletions
diff --git a/src/js/ui/menu.js b/src/js/ui/menu.js
new file mode 100644
index 0000000..b9cafaa
--- /dev/null
+++ b/src/js/ui/menu.js
@@ -0,0 +1,148 @@
+/* Arching Kaos Menu
+ *
+ * Kaotisk Hund - 2024
+ *
+ * @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL v3.0
+ *
+ */
+
+var menuButton = {
+ element: "button",
+ id:"mobile-menu",
+ innerText:"Show menu"
+};
+
+makeElement(menuButton, document.querySelector('#menu-placeholder'));
+
+document.querySelector('#mobile-menu').addEventListener("click", toggleMenu);
+
+var menuLayout = {
+ element: 'nav', id:"double-floor", innerHTML:[
+ { element: "div", id:"menu", className:"upper-floor", innerHTML: [
+ { element: "button", onclick:'menusel({id:"#/welcome-section"})', innerText:"Home"},
+ { element: "button", onclick:'modulesSubToggle()', innerText:"Modules"},
+ { element: "button", onclick:'exploreSubToggle()', innerText:"Explore"},
+ { element: "button", onclick:'menusel({id:"#/chat-section"})', innerText:"Chat"},
+ { element: "button", onclick:'menusel({id:"#/radio-section"})', innerText:"Radio"},
+ { element: "button", onclick:'menusel({id:"#/settings-section"})', innerText:"Settings"},
+ { element: "button", onclick:'stellarSubToggle()', innerText:"Stellar"},
+ { element: "button", onclick:'menusel({id:"#/about-section"})', innerText:"About"}
+ ]
+ },
+ { element: "div", id:"menu", className:"lower-floor"}
+ ]
+};
+
+makeElement(menuLayout, document.querySelector('#menu-placeholder'));
+
+var modulesSubmenuTemplate = {
+ element: 'div',
+ className:"dropdown",
+ id:"modules-submenu",
+ innerHTML: [
+ { element:'button', onclick:"modulesSubToggle()", innerText:".."},
+ { element:'button', onclick:'menusel({id:"#/mixtapes-section"})', innerText:"Mixtapes"},
+ { element:'button', onclick:'menusel({id:"#/news-section"})', innerText:"News"},
+ { element:'button', onclick:'menusel({id:"#/comments-section"})', innerText:"Comments"},
+ { element:'button', onclick:'menusel({id:"#/files-section"})', innerText:"Files"}
+ ]
+};
+
+makeElement(modulesSubmenuTemplate, document.querySelector('.lower-floor'));
+
+var exploreSubmenuTemplate = {
+ element: 'div',
+ className:"dropdown",
+ id:"explore-submenu",
+ innerHTML: [
+ { element:'button', onclick:"exploreSubToggle()", innerText:".."},
+ { element:'button', onclick:'menusel({id:"#/zchain-data-section"})', innerText:"zchain"},
+ { element:'button', onclick:'menusel({id:"#/stats-section"})', innerText:"Stats"}
+ ]
+};
+makeElement(exploreSubmenuTemplate, document.querySelector('.lower-floor'));
+
+var stellarSubmenuTemplate = {
+ element: 'div',
+ className:"dropdown",
+ id:"stellar-submenu",
+ innerHTML: [
+ { element:'button', onclick:"stellarSubToggle()", innerText:".."},
+ { element:'button', onclick:'menusel({id:"#/mypage-section"})', innerText:"My page"},
+ { element:'button', onclick:'menusel({id:"#/stellar-balances"})', innerText:"Balances"},
+ { element:'button', onclick:'menusel({id:"#/stellar-data-config"})', innerText:"Data"},
+ { element:'button', onclick:'menusel({id:"#/arching-kaos-node-info"})', innerText:"Node Info"}
+ ]
+};
+
+makeElement(stellarSubmenuTemplate, document.querySelector('.lower-floor'));
+
+
+/*
+ * Menu bar management
+ *
+ * We change the visible floor according to menu selection.
+ *
+ */
+var upperFloor = document.querySelector('.upper-floor');
+var lowerFloor = document.querySelector('.lower-floor');
+var doubleFloorMenu = document.querySelector('#double-floor');
+
+upperFloor.style.display = 'flex';
+lowerFloor.style.display = 'none';
+
+var modulesSubmenu = document.querySelector('#modules-submenu');
+modulesSubmenu.style.display = 'none';
+function modulesSubToggle(){
+ modulesSubmenu.style.display = modulesSubmenu.style.display === 'none' ? 'flex' : 'none';
+ upperFloor.style.display = upperFloor.style.display === 'none' ? 'flex' : 'none';
+ lowerFloor.style.display = lowerFloor.style.display === 'none' ? 'flex' : 'none';
+}
+
+var exploreSubmenu = document.querySelector('#explore-submenu');
+exploreSubmenu.style.display = 'none';
+function exploreSubToggle(){
+ exploreSubmenu.style.display = exploreSubmenu.style.display === 'none' ? 'flex' : 'none';
+ upperFloor.style.display = upperFloor.style.display === 'none' ? 'flex' : 'none';
+ lowerFloor.style.display = lowerFloor.style.display === 'none' ? 'flex' : 'none';
+}
+
+var stellarSubmenu = document.querySelector('#stellar-submenu');
+stellarSubmenu.style.display = 'none';
+function stellarSubToggle(){
+ stellarSubmenu.style.display = stellarSubmenu.style.display === 'none' ? 'flex' : 'none';
+ upperFloor.style.display = upperFloor.style.display === 'none' ? 'flex' : 'none';
+ lowerFloor.style.display = lowerFloor.style.display === 'none' ? 'flex' : 'none';
+}
+
+// Function to hide all the panes
+function menuinit(){
+ menuids.forEach(m=>document.querySelector(m).hidden=true);
+}
+
+/*
+ * Function called on clicks on the menu bar
+ * Unhides the pane connected to the clicked menu entry
+ */
+function menusel(m){
+ menuinit();
+ // document.querySelector(m.id.replace('/','')).hidden=false;
+ locationHashSetter(m.id);
+
+ mainContainer.style.display = 'block';
+ if ( isMobile ) {
+ doubleFloorMenu.style.display = 'none';
+ }
+}
+
+function toggleMenu(){
+ mainContainer.style.display = 'none';
+ doubleFloorMenu.style.display = 'flex';
+}
+
+// And call
+menuinit();
+locationHashOnChange();
+
+isMobile ? doubleFloorMenu.style.display = 'none':doubleFloorMenu.style.display = 'flex';
+// @license-end