From 65e3540b59f53b94cf501aca2d0a3b8717c8e797 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 28 Jul 2020 21:00:51 +0000 Subject: [PATCH] --- ayanova/devdocs/todo.txt | 7 +++---- ayanova/src/api/translation.js | 3 ++- ayanova/src/views/adm-user.vue | 20 ++++++++++++++++++++ ayanova/src/views/adm-users.vue | 20 ++++++++++++++++++++ ayanova/src/views/home-notifications.vue | 3 +-- ayanova/src/views/home-notify-direct.vue | 16 ++++++++++++---- ayanova/src/views/widget.vue | 19 +------------------ 7 files changed, 59 insertions(+), 29 deletions(-) diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index d03c8c25..71b11be2 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -13,11 +13,10 @@ ____________ -todo: Extensions from single edit forms?? -todo: direct notification extension -todo: from User form be able to send a direct notification to that user -todo: from users list form extension for direct notification + +todo: from adm-user form be able to send a direct notification to that user +todo: from adm-users list form extension (or just a menu link?) for direct notification todo: notification system docs diff --git a/ayanova/src/api/translation.js b/ayanova/src/api/translation.js index ff6daa5d..e78fc016 100644 --- a/ayanova/src/api/translation.js +++ b/ayanova/src/api/translation.js @@ -228,7 +228,8 @@ export default { "TimeSpanDays", "TimeSpanHours", "TimeSpanMinutes", - "TimeSpanSeconds" + "TimeSpanSeconds", + "DirectNotification" ], //////////////////////////////////////////////////////// diff --git a/ayanova/src/views/adm-user.vue b/ayanova/src/views/adm-user.vue index df28b1c5..192d2aa8 100644 --- a/ayanova/src/views/adm-user.vue +++ b/ayanova/src/views/adm-user.vue @@ -608,6 +608,19 @@ async function clickHandler(menuItem) { }); } break; + case "directnotify": + //nav to direct notify with list of users appended to route + if (m.vm.obj.id == 0) { + m.vm.$router.push({ + name: "home-notify-direct" + }); + } else { + m.vm.$router.push({ + name: "home-notify-direct", + params: { userIdList: m.vm.obj.id } + }); + } + break; default: window.$gz.eventBus.$emit( "notify-warning", @@ -692,6 +705,13 @@ function generateMenu(vm) { }); } + menuOptions.menuItems.push({ + title: "DirectNotification", + icon: "fa-comment-alt", + key: FORM_KEY + ":directnotify", + vm: vm + }); + window.$gz.eventBus.$emit("menu-change", menuOptions); } diff --git a/ayanova/src/views/adm-users.vue b/ayanova/src/views/adm-users.vue index 541a5c3a..64acb12c 100644 --- a/ayanova/src/views/adm-users.vue +++ b/ayanova/src/views/adm-users.vue @@ -66,6 +66,19 @@ async function clickHandler(menuItem) { case "extensions": let res = await m.vm.$refs.extensions.open(); break; + case "directnotify": + //nav to direct notify with list of users appended to route + if (m.vm.selectedItems.length == 0) { + m.vm.$router.push({ + name: "home-notify-direct" + }); + } else { + m.vm.$router.push({ + name: "home-notify-direct", + params: { userIdList: m.vm.selectedItems.toString() } + }); + } + break; default: window.$gz.eventBus.$emit( "notify-warning", @@ -123,6 +136,13 @@ function generateMenu(vm) { vm: vm }); + menuOptions.menuItems.push({ + title: "DirectNotification", + icon: "fa-comment-alt", + key: FORM_KEY + ":directnotify", + vm: vm + }); + window.$gz.eventBus.$emit("menu-change", menuOptions); } diff --git a/ayanova/src/views/home-notifications.vue b/ayanova/src/views/home-notifications.vue index 1613af74..4c24711d 100644 --- a/ayanova/src/views/home-notifications.vue +++ b/ayanova/src/views/home-notifications.vue @@ -314,8 +314,7 @@ async function fetchTranslatedText(vm) { await window.$gz.translation.cacheTranslations([ "NotifySubscription", "Server", - "Notifications", - "DirectNotification" + "Notifications" ]); } diff --git a/ayanova/src/views/home-notify-direct.vue b/ayanova/src/views/home-notify-direct.vue index a1a2eeb9..d7fba7c7 100644 --- a/ayanova/src/views/home-notify-direct.vue +++ b/ayanova/src/views/home-notify-direct.vue @@ -161,8 +161,6 @@ export default { } }, closeChip(item) { - // console.log(item); - // debugger; let i = this.toUsers.findIndex(z => z.id == item.id); if (i != -1) { this.toUsers.splice(i, 1); @@ -318,7 +316,17 @@ async function fetchTranslatedText(vm) { // Pre fill if pre-selected users // async function preFillSelection(vm) { - let l = vm.$route.params.userIdList.split(",").map(z => parseInt(z, 10)); + var idParam = vm.$route.params.userIdList; + let l = []; + if (idParam.includes(",")) { + //just a random list of user ids seperated by commas + l = idParam.split(",").map(z => parseInt(z, 10)); + } else { + //single value + l.push(parseInt(idParam, 10)); + } + + //l = window.$gz._.uniq(l); //iterate the array, fetch and store each user returned from //pick-list/List?ayaType=3&preId=[IDVALUE] //into vm.toUsers @@ -327,7 +335,7 @@ async function preFillSelection(vm) { continue; } let res = await window.$gz.api.get("pick-list/List?ayaType=3&preId=" + i); - if (res.data) { + if (res.data && res.data.length > 0) { vm.toUsers.push(res.data[0]); } } diff --git a/ayanova/src/views/widget.vue b/ayanova/src/views/widget.vue index 16ecb2e9..a34378e2 100644 --- a/ayanova/src/views/widget.vue +++ b/ayanova/src/views/widget.vue @@ -1,11 +1,5 @@