From 7065b350da21311e3a172c1d538427b62855c843 Mon Sep 17 00:00:00 2001 From: Carlo Venusino Date: Wed, 22 Apr 2020 16:57:53 +0200 Subject: [PATCH] TT#79758 CF Offline: Implement and integrate Vue components Change-Id: I682f62c12c656842ca5599fc0bc725af14e75b1b --- .../NewCallForward/CscCallForwardGroup.vue | 21 ++++- .../NewCallForward/CscNewCallForward.vue | 42 ++++++---- ...NewCallForwardDestinationsetTypeSelect.vue | 8 +- src/locales/en.json | 5 +- src/store/new-call-forward.js | 84 ++++++++++++------- 5 files changed, 106 insertions(+), 54 deletions(-) diff --git a/src/components/pages/NewCallForward/CscCallForwardGroup.vue b/src/components/pages/NewCallForward/CscCallForwardGroup.vue index c5494469..de1867b6 100644 --- a/src/components/pages/NewCallForward/CscCallForwardGroup.vue +++ b/src/components/pages/NewCallForward/CscCallForwardGroup.vue @@ -6,8 +6,10 @@
-
- {{ groupTitle }} +
+ {{ !(groupsCount < 2 && (group.name.includes('timeout') || group.name.includes('unconditional'))) ? groupTitle :"" }} diff --git a/src/components/pages/NewCallForward/CscNewCallForwardDestinationsetTypeSelect.vue b/src/components/pages/NewCallForward/CscNewCallForwardDestinationsetTypeSelect.vue index c3357c03..e0c664b7 100644 --- a/src/components/pages/NewCallForward/CscNewCallForwardDestinationsetTypeSelect.vue +++ b/src/components/pages/NewCallForward/CscNewCallForwardDestinationsetTypeSelect.vue @@ -32,12 +32,12 @@ } }, methods: { - addDestinationsetUnconditional(){ - this.$parent.selectedDestType = "unconditional"; + async addDestinationsetUnconditional(){ + await this.$store.dispatch('newCallForward/setSelectedDestType', 'unconditional'); this.$parent.close() }, - addDestinationsetOffline(){ - this.$parent.selectedDestType = "offline"; + async addDestinationsetOffline(){ + await this.$store.dispatch('newCallForward/setSelectedDestType', 'offline'); this.$parent.close() }, cancel() { diff --git a/src/locales/en.json b/src/locales/en.json index 889387a5..1d01d032 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -211,6 +211,10 @@ "recurrenceChangedToast": "Reminder: Recurrence changed to \"{recurrence}\"" }, "newCallForward": { + "titles": { + "timeoutGroup" : "Else", + "offlineGroup" : "If offline" + }, "primarNumberEnabled": "All calls go to the primary number", "primarNumberDisabled": "No call goes to primary number", "forwardBtnLabel": "Add forwarding", @@ -224,7 +228,6 @@ "allCallsForwardedTo": "All calls forwarded to", "cancelDialogTitle": "Delete from {groupName} forwarding", "cancelDialogText": "You are about to delete {destination} from {groupName} call forwarding", - "timeoutGroupTitle" : "", "uncoditionalLabel": "Unconditional", "offlinelLabel": "If offline" }, diff --git a/src/store/new-call-forward.js b/src/store/new-call-forward.js index 81c46fbf..4d3ba434 100644 --- a/src/store/new-call-forward.js +++ b/src/store/new-call-forward.js @@ -18,6 +18,10 @@ const ForwardGroup = { timeout: { name: 'csc-timeout', mapping: 'cft' + }, + offline: { + name: 'csc-offline', + mapping: 'cfo' } }; @@ -26,7 +30,8 @@ export default { state: { mappings: [], forwardGroups: [], - destinationInCreation: false + destinationInCreation: false, + selectedDestType: null }, getters: { primaryNumber(state, getters, rootState, rootGetters) { @@ -52,6 +57,12 @@ export default { }, destinationInCreation(state){ return state.destinationInCreation; + }, + selectedDestType(state){ + return state.selectedDestType; + }, + groupsCount(state){ + return state.forwardGroups.length; } }, mutations: { @@ -82,10 +93,16 @@ export default { state.mappings = mappings; }, loadForwardGroups(state, forwardGroups){ + if(forwardGroups[0] && (forwardGroups[0].name.includes('unconditional') || forwardGroups[0].name.includes('timeout'))){ + forwardGroups.push(forwardGroups.shift()) + } state.forwardGroups = forwardGroups; }, setDestinationInCreation(state, isInCreation){ state.destinationInCreation = isInCreation; + }, + setSelectedDestType(state, destType){ + state.selectedDestType = destType; } }, actions: { @@ -134,22 +151,10 @@ export default { } }, - createEmptyForwardGroup(context, groupName){ - const destination = { - "announcement_id": null, - "simple_destination": " ", - "destination": " ", - "priority": 1, - "timeout": 5 - }; - context.state.tempForwardGroups.push({ - name: groupName, - destinations:[destination] - }); - }, async addForwardGroup(context, data) { try{ const newForwardGroupId = await addNewDestinationsetWithName(ForwardGroup[data.name] ? ForwardGroup[data.name].name : data.name); + const destination = { "announcement_id": null, "simple_destination": data.destination || " ", @@ -183,7 +188,7 @@ export default { async deleteForwardGroup(context, group) { try{ const subscriberId = localStorage.getItem('subscriberId'); - const groupMappingId = group.name === 'csc-unconditional' ? 'cfu' : 'cft'; + const groupMappingId = await context.dispatch('getMappingIdByGroupName', group.name); await deleteDestinationsetById(group.id); await addNewMapping({ mappings: [], @@ -203,8 +208,8 @@ export default { }); return forwardGroups.length > 0 ? forwardGroups[0] : null; }, - addTempDestination(context, groupName){ - context.state.forwardGroups.push({ + addTempGroup(context, groupName){ + const data = { id: "temp-" + ForwardGroup[groupName].name, name: ForwardGroup[groupName].name, destinations: [{ @@ -214,7 +219,14 @@ export default { "priority": 1, "timeout": 5 }] - }); + }; + if(!groupName.includes('timeout') && !groupName.includes('unconditional')){ + context.state.forwardGroups.unshift(data); + } + else{ + context.state.forwardGroups.push(data); + } + }, async addDestination(context, data){ try{ @@ -258,8 +270,8 @@ export default { }, async replaceDestinations(context, data){ try{ - let group = context.state.forwardGroups.find((group)=>{ - return group.name === ForwardGroup[data.groupName].name; + let group = context.state.forwardGroups.find(($group)=>{ + return $group.name === ForwardGroup[data.groupName].name; }); await addDestinationToDestinationset({ id: group.id, @@ -272,19 +284,22 @@ export default { }, async removeDestination(context, data){ try{ + let destinations, group = context.state.forwardGroups.find((group)=>{ return group.id === data.forwardGroupId; }); + destinations = group.destinations.filter(($destination) => { return $destination.destination !== data.destination.destination; }); + await addDestinationToDestinationset({ id: group.id, data: destinations }); if(destinations.length < 1){ - context.dispatch('deleteForwardGroup', group); - context.dispatch('loadForwardGroups', group); + await context.dispatch('deleteForwardGroup', group); + await context.dispatch('loadForwardGroups'); } } catch(err){ @@ -347,28 +362,30 @@ export default { try{ let unconditionalGroup = await context.dispatch('getForwardGroupByName', 'unconditional') let timeoutGroup = await context.dispatch('getForwardGroupByName', 'timeout'); + if(noSelfNumber){ if(timeoutGroup && !timeoutGroup.id.toString().includes('temp')){ + const destinations = [...timeoutGroup.destinations] await context.dispatch('addForwardGroup', { name: 'unconditional' }); await context.dispatch('loadMappings'); await context.dispatch('loadForwardGroups'); - //unconditionalGroup = await context.dispatch('getForwardGroupByName', 'unconditional'); await context.dispatch('replaceDestinations', { groupName: 'unconditional', - destinations: timeoutGroup.destinations + destinations: destinations }); await context.dispatch('deleteForwardGroup', timeoutGroup); - + await context.dispatch('loadForwardGroups'); } else { - await context.dispatch('addTempDestination', 'temp-unconditional') + await context.dispatch('loadForwardGroups'); + await context.dispatch('addTempGroup', 'unconditional'); } - await context.dispatch('loadForwardGroups'); } else{ if(unconditionalGroup && !unconditionalGroup.id.toString().includes('temp')){ + const destinations = [...unconditionalGroup.destinations] await context.dispatch('addForwardGroup', { name: 'timeout' }); @@ -376,14 +393,18 @@ export default { await context.dispatch('loadForwardGroups'); await context.dispatch('replaceDestinations', { groupName: 'timeout', - destinations: unconditionalGroup.destinations + destinations: destinations }); await context.dispatch('deleteForwardGroup', unconditionalGroup); + await context.dispatch('loadForwardGroups'); } else{ - await context.dispatch('addTempDestination', 'temp-timeout') + await context.dispatch('loadForwardGroups'); + await context.dispatch('addTempGroup', 'timeout'); } - await context.dispatch('loadForwardGroups'); + + + } } catch(err){ @@ -431,6 +452,9 @@ export default { }, setDestinationInCreation(context, isInCreation){ context.commit('setDestinationInCreation', isInCreation); + }, + setSelectedDestType(context, destType){ + context.commit('setSelectedDestType', destType); } } };