diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt
index 7081c632..0983c4f0 100644
--- a/ayanova/devdocs/todo.txt
+++ b/ayanova/devdocs/todo.txt
@@ -7,6 +7,7 @@ PRIORITY - ALWAYS Lowest level stuff first, i.e. TODO at server, api route chang
todo: dark mode / nav append slot logout notify??
move out of user settings into bottom of nav panel maybe like the vuetify website shows
dark mode primary too bright?
+
todo: Backup, probably need to add option "Do not backup automatically"
or something to that effect for scenarios where the built in backup won't be used / won't work
rather than a boot environment option I'm thinking a configuration in backupsettings option so it's visible in UI
diff --git a/ayanova/src/api/gzmenu.js b/ayanova/src/api/gzmenu.js
index 297b59d0..0d4c034a 100644
--- a/ayanova/src/api/gzmenu.js
+++ b/ayanova/src/api/gzmenu.js
@@ -230,6 +230,25 @@ export default {
}
},
///////////////////////////////
+ // CHANGE ICON HANDLER
+ // Change icon dymanically
+ // (note, can pass null for new icon to clear it)
+ //
+ handleChangeMenuItemIcon(vm, key, newIcon) {
+ if (!vm.appBar.menuItems || !key) {
+ return;
+ }
+
+ //Find the menu item and change it's icon
+ for (let i = 0; i < vm.appBar.menuItems.length; i++) {
+ let menuItem = vm.appBar.menuItems[i];
+ if (menuItem.key == key) {
+ vm.$set(vm.appBar.menuItems[i], "icon", newIcon);
+ return;
+ }
+ }
+ },
+ ///////////////////////////////
// APP (GLOBAL) CLICK HANDLER
//
// Deal with a menu change request
@@ -349,6 +368,13 @@ export default {
self.handleDisableMenuItem(vm, key, false);
});
+ window.$gz.eventBus.$on(
+ "menu-change-item-icon",
+ function handleChangeMenuItemIcon(key, newIcon) {
+ self.handleChangeMenuItemIcon(vm, key, newIcon);
+ }
+ );
+
window.$gz.eventBus.$on("menu-click", function handleMenuClick(menuitem) {
self.handleAppClick(vm, menuitem);
});
diff --git a/ayanova/src/api/initialize.js b/ayanova/src/api/initialize.js
index c7bb3274..1226f43c 100644
--- a/ayanova/src/api/initialize.js
+++ b/ayanova/src/api/initialize.js
@@ -734,9 +734,6 @@ function initNavPanel() {
);
window.$gz.store.commit("setHomePage", "/ay-evaluate");
}
-
- // //*** LOGOUT - all users
- // addNavItem("Logout", "fa-sign-out-alt", "/login", [], key++, "logout");
}
async function getUserOptions() {
diff --git a/ayanova/src/views/home-user-settings.vue b/ayanova/src/views/home-user-settings.vue
index 62c7ba26..9f9d62af 100644
--- a/ayanova/src/views/home-user-settings.vue
+++ b/ayanova/src/views/home-user-settings.vue
@@ -84,13 +84,7 @@
@input="fieldValueChanged('timeZoneOverride')"
>
-
-
-
+
@@ -235,8 +229,15 @@ export default {
return window.$gz.form;
},
darkModeChanged() {
- this.$store.commit("setDarkMode", this.darkMode);
- this.$vuetify.theme.dark = this.darkMode;
+ let vm = this;
+ vm.darkMode = !vm.darkMode;
+ vm.$store.commit("setDarkMode", vm.darkMode);
+ vm.$vuetify.theme.dark = vm.darkMode;
+ window.$gz.eventBus.$emit(
+ "menu-change-item-icon",
+ FORM_KEY + ":darkmode",
+ vm.darkMode ? "fa-sun" : "fa-moon"
+ );
},
fieldValueChanged(ref) {
if (!this.formState.loading && !this.formState.readOnly) {
@@ -365,6 +366,9 @@ function clickHandler(menuItem) {
case "save":
m.vm.submit();
break;
+ case "darkmode":
+ m.vm.darkModeChanged();
+ break;
default:
window.$gz.eventBus.$emit(
@@ -400,6 +404,14 @@ function generateMenu(vm) {
});
}
+ menuOptions.menuItems.push({
+ title: "DarkMode",
+ icon: vm.darkMode ? "fa-sun" : "fa-moon",
+ surface: true,
+ key: FORM_KEY + ":darkmode",
+ vm: vm
+ });
+
//change password and login
menuOptions.menuItems.push({
title: "SetLoginPassword",