TT#79758 CF Offline: Implement and integrate Vue components

Change-Id: I682f62c12c656842ca5599fc0bc725af14e75b1b
changes/50/39550/4
Carlo Venusino 6 years ago
parent 220b59ede7
commit 7065b350da

@ -6,8 +6,10 @@
<div <div
class="row csc-cf-destination-cont" class="row csc-cf-destination-cont"
> >
<div class="col col-xs-12 col-md-4 text-right csc-cf-group-title"> <div
{{ groupTitle }} class="col col-xs-12 col-md-4 text-right csc-cf-group-title"
>
{{ !(groupsCount < 2 && (group.name.includes('timeout') || group.name.includes('unconditional'))) ? groupTitle :"" }}
<q-spinner-dots <q-spinner-dots
v-if="toggleGroupInProgress" v-if="toggleGroupInProgress"
class="csc-call-spinner" class="csc-call-spinner"
@ -153,7 +155,8 @@
computed: { computed: {
...mapGetters('newCallForward', [ ...mapGetters('newCallForward', [
'getOwnPhoneTimeout', 'getOwnPhoneTimeout',
'destinationInCreation' 'destinationInCreation',
'groupsCount'
]), ]),
showAddDestBtn(){ showAddDestBtn(){
const destinations = this.group.destinations; const destinations = this.group.destinations;
@ -166,7 +169,17 @@
}, },
groupTitle(){ groupTitle(){
return ["csc-unconditional", "csc-timeout"].includes(this.group.name) ? `${this.$t('pages.newCallForward.timeoutGroupTitle')}` : ""; let title;
switch(this.group.name){
case "csc-unconditional":
case "csc-timeout":
title = `${this.$t('pages.newCallForward.titles.timeoutGroup')}`;
break;
case "csc-offline":
title = `${this.$t('pages.newCallForward.titles.offlineGroup')}`;
break;
}
return title;
} }
}, },
methods: { methods: {

@ -130,8 +130,7 @@
return { return {
groupInCreation: false, groupInCreation: false,
groupsLoading: false, groupsLoading: false,
toggleDefaultNumber: true, toggleDefaultNumber: true
selectedDestType: null
}; };
}, },
async mounted(){ async mounted(){
@ -153,7 +152,8 @@
...mapGetters('newCallForward', [ ...mapGetters('newCallForward', [
'primaryNumber', 'primaryNumber',
'subscriberDisplayName', 'subscriberDisplayName',
'forwardGroups' 'forwardGroups',
'selectedDestType'
]), ]),
primaryNumberEnabled(){ primaryNumberEnabled(){
return true; return true;
@ -164,21 +164,34 @@
}, },
methods: { methods: {
async addForwardGroup(){ async addForwardGroup(){
// TODO check this.selectedDestType and toggle proper logic
this.groupInCreation = true; this.groupInCreation = true;
const selectedDestType = this.selectedDestType;
switch(selectedDestType){
case "unconditional":{
if(this.toggleDefaultNumber){ if(this.toggleDefaultNumber){
const timeoutFwdGroup = await this.$store.dispatch('newCallForward/getForwardGroupByName', 'timeout'); const timeoutFwdGroup = await this.$store.dispatch('newCallForward/getForwardGroupByName', 'timeout');
if(!timeoutFwdGroup){ if(!timeoutFwdGroup){
await this.$store.dispatch('newCallForward/addTempDestination','timeout' ); await this.$store.dispatch('newCallForward/addTempGroup','timeout' );
} }
} }
else{ else{
const unconditionalFwdGroup = await this.$store.dispatch('newCallForward/getForwardGroupByName', 'unconditional'); const unconditionalFwdGroup = await this.$store.dispatch('newCallForward/getForwardGroupByName', 'unconditional');
if(!unconditionalFwdGroup){ if(!unconditionalFwdGroup){
await this.$store.dispatch('newCallForward/addTempDestination','unconditional' ); await this.$store.dispatch('newCallForward/addTempGroup','unconditional' );
}
}
}
break;
case "offline":{
const offlineFwdGroup = await this.$store.dispatch('newCallForward/getForwardGroupByName', 'offline');
if(!offlineFwdGroup){
await this.$store.dispatch('newCallForward/addTempGroup','offline' );
} }
} }
break;
}
this.groupInCreation = false; this.groupInCreation = false;
}, },
showForm(){ showForm(){
@ -189,8 +202,7 @@
this.groupInCreation = true; this.groupInCreation = true;
await this.$store.dispatch('newCallForward/forwardAllCalls', !this.toggleDefaultNumber); await this.$store.dispatch('newCallForward/forwardAllCalls', !this.toggleDefaultNumber);
this.groupInCreation = false; this.groupInCreation = false;
}, }
addVoicemail(){}
} }
} }
</script> </script>

@ -32,12 +32,12 @@
} }
}, },
methods: { methods: {
addDestinationsetUnconditional(){ async addDestinationsetUnconditional(){
this.$parent.selectedDestType = "unconditional"; await this.$store.dispatch('newCallForward/setSelectedDestType', 'unconditional');
this.$parent.close() this.$parent.close()
}, },
addDestinationsetOffline(){ async addDestinationsetOffline(){
this.$parent.selectedDestType = "offline"; await this.$store.dispatch('newCallForward/setSelectedDestType', 'offline');
this.$parent.close() this.$parent.close()
}, },
cancel() { cancel() {

@ -211,6 +211,10 @@
"recurrenceChangedToast": "Reminder: Recurrence changed to \"{recurrence}\"" "recurrenceChangedToast": "Reminder: Recurrence changed to \"{recurrence}\""
}, },
"newCallForward": { "newCallForward": {
"titles": {
"timeoutGroup" : "Else",
"offlineGroup" : "If offline"
},
"primarNumberEnabled": "All calls go to the primary number", "primarNumberEnabled": "All calls go to the primary number",
"primarNumberDisabled": "No call goes to primary number", "primarNumberDisabled": "No call goes to primary number",
"forwardBtnLabel": "Add forwarding", "forwardBtnLabel": "Add forwarding",
@ -224,7 +228,6 @@
"allCallsForwardedTo": "All calls forwarded to", "allCallsForwardedTo": "All calls forwarded to",
"cancelDialogTitle": "Delete from {groupName} forwarding", "cancelDialogTitle": "Delete from {groupName} forwarding",
"cancelDialogText": "You are about to delete {destination} from {groupName} call forwarding", "cancelDialogText": "You are about to delete {destination} from {groupName} call forwarding",
"timeoutGroupTitle" : "",
"uncoditionalLabel": "Unconditional", "uncoditionalLabel": "Unconditional",
"offlinelLabel": "If offline" "offlinelLabel": "If offline"
}, },

@ -18,6 +18,10 @@ const ForwardGroup = {
timeout: { timeout: {
name: 'csc-timeout', name: 'csc-timeout',
mapping: 'cft' mapping: 'cft'
},
offline: {
name: 'csc-offline',
mapping: 'cfo'
} }
}; };
@ -26,7 +30,8 @@ export default {
state: { state: {
mappings: [], mappings: [],
forwardGroups: [], forwardGroups: [],
destinationInCreation: false destinationInCreation: false,
selectedDestType: null
}, },
getters: { getters: {
primaryNumber(state, getters, rootState, rootGetters) { primaryNumber(state, getters, rootState, rootGetters) {
@ -52,6 +57,12 @@ export default {
}, },
destinationInCreation(state){ destinationInCreation(state){
return state.destinationInCreation; return state.destinationInCreation;
},
selectedDestType(state){
return state.selectedDestType;
},
groupsCount(state){
return state.forwardGroups.length;
} }
}, },
mutations: { mutations: {
@ -82,10 +93,16 @@ export default {
state.mappings = mappings; state.mappings = mappings;
}, },
loadForwardGroups(state, forwardGroups){ loadForwardGroups(state, forwardGroups){
if(forwardGroups[0] && (forwardGroups[0].name.includes('unconditional') || forwardGroups[0].name.includes('timeout'))){
forwardGroups.push(forwardGroups.shift())
}
state.forwardGroups = forwardGroups; state.forwardGroups = forwardGroups;
}, },
setDestinationInCreation(state, isInCreation){ setDestinationInCreation(state, isInCreation){
state.destinationInCreation = isInCreation; state.destinationInCreation = isInCreation;
},
setSelectedDestType(state, destType){
state.selectedDestType = destType;
} }
}, },
actions: { 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) { async addForwardGroup(context, data) {
try{ try{
const newForwardGroupId = await addNewDestinationsetWithName(ForwardGroup[data.name] ? ForwardGroup[data.name].name : data.name); const newForwardGroupId = await addNewDestinationsetWithName(ForwardGroup[data.name] ? ForwardGroup[data.name].name : data.name);
const destination = { const destination = {
"announcement_id": null, "announcement_id": null,
"simple_destination": data.destination || " ", "simple_destination": data.destination || " ",
@ -183,7 +188,7 @@ export default {
async deleteForwardGroup(context, group) { async deleteForwardGroup(context, group) {
try{ try{
const subscriberId = localStorage.getItem('subscriberId'); 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 deleteDestinationsetById(group.id);
await addNewMapping({ await addNewMapping({
mappings: [], mappings: [],
@ -203,8 +208,8 @@ export default {
}); });
return forwardGroups.length > 0 ? forwardGroups[0] : null; return forwardGroups.length > 0 ? forwardGroups[0] : null;
}, },
addTempDestination(context, groupName){ addTempGroup(context, groupName){
context.state.forwardGroups.push({ const data = {
id: "temp-" + ForwardGroup[groupName].name, id: "temp-" + ForwardGroup[groupName].name,
name: ForwardGroup[groupName].name, name: ForwardGroup[groupName].name,
destinations: [{ destinations: [{
@ -214,7 +219,14 @@ export default {
"priority": 1, "priority": 1,
"timeout": 5 "timeout": 5
}] }]
}); };
if(!groupName.includes('timeout') && !groupName.includes('unconditional')){
context.state.forwardGroups.unshift(data);
}
else{
context.state.forwardGroups.push(data);
}
}, },
async addDestination(context, data){ async addDestination(context, data){
try{ try{
@ -258,8 +270,8 @@ export default {
}, },
async replaceDestinations(context, data){ async replaceDestinations(context, data){
try{ try{
let group = context.state.forwardGroups.find((group)=>{ let group = context.state.forwardGroups.find(($group)=>{
return group.name === ForwardGroup[data.groupName].name; return $group.name === ForwardGroup[data.groupName].name;
}); });
await addDestinationToDestinationset({ await addDestinationToDestinationset({
id: group.id, id: group.id,
@ -272,19 +284,22 @@ export default {
}, },
async removeDestination(context, data){ async removeDestination(context, data){
try{ try{
let destinations, group = context.state.forwardGroups.find((group)=>{ let destinations, group = context.state.forwardGroups.find((group)=>{
return group.id === data.forwardGroupId; return group.id === data.forwardGroupId;
}); });
destinations = group.destinations.filter(($destination) => { destinations = group.destinations.filter(($destination) => {
return $destination.destination !== data.destination.destination; return $destination.destination !== data.destination.destination;
}); });
await addDestinationToDestinationset({ await addDestinationToDestinationset({
id: group.id, id: group.id,
data: destinations data: destinations
}); });
if(destinations.length < 1){ if(destinations.length < 1){
context.dispatch('deleteForwardGroup', group); await context.dispatch('deleteForwardGroup', group);
context.dispatch('loadForwardGroups', group); await context.dispatch('loadForwardGroups');
} }
} }
catch(err){ catch(err){
@ -347,28 +362,30 @@ export default {
try{ try{
let unconditionalGroup = await context.dispatch('getForwardGroupByName', 'unconditional') let unconditionalGroup = await context.dispatch('getForwardGroupByName', 'unconditional')
let timeoutGroup = await context.dispatch('getForwardGroupByName', 'timeout'); let timeoutGroup = await context.dispatch('getForwardGroupByName', 'timeout');
if(noSelfNumber){ if(noSelfNumber){
if(timeoutGroup && !timeoutGroup.id.toString().includes('temp')){ if(timeoutGroup && !timeoutGroup.id.toString().includes('temp')){
const destinations = [...timeoutGroup.destinations]
await context.dispatch('addForwardGroup', { await context.dispatch('addForwardGroup', {
name: 'unconditional' name: 'unconditional'
}); });
await context.dispatch('loadMappings'); await context.dispatch('loadMappings');
await context.dispatch('loadForwardGroups'); await context.dispatch('loadForwardGroups');
//unconditionalGroup = await context.dispatch('getForwardGroupByName', 'unconditional');
await context.dispatch('replaceDestinations', { await context.dispatch('replaceDestinations', {
groupName: 'unconditional', groupName: 'unconditional',
destinations: timeoutGroup.destinations destinations: destinations
}); });
await context.dispatch('deleteForwardGroup', timeoutGroup); await context.dispatch('deleteForwardGroup', timeoutGroup);
await context.dispatch('loadForwardGroups');
} }
else { else {
await context.dispatch('addTempDestination', 'temp-unconditional')
}
await context.dispatch('loadForwardGroups'); await context.dispatch('loadForwardGroups');
await context.dispatch('addTempGroup', 'unconditional');
}
} }
else{ else{
if(unconditionalGroup && !unconditionalGroup.id.toString().includes('temp')){ if(unconditionalGroup && !unconditionalGroup.id.toString().includes('temp')){
const destinations = [...unconditionalGroup.destinations]
await context.dispatch('addForwardGroup', { await context.dispatch('addForwardGroup', {
name: 'timeout' name: 'timeout'
}); });
@ -376,14 +393,18 @@ export default {
await context.dispatch('loadForwardGroups'); await context.dispatch('loadForwardGroups');
await context.dispatch('replaceDestinations', { await context.dispatch('replaceDestinations', {
groupName: 'timeout', groupName: 'timeout',
destinations: unconditionalGroup.destinations destinations: destinations
}); });
await context.dispatch('deleteForwardGroup', unconditionalGroup); await context.dispatch('deleteForwardGroup', unconditionalGroup);
await context.dispatch('loadForwardGroups');
} }
else{ else{
await context.dispatch('addTempDestination', 'temp-timeout')
}
await context.dispatch('loadForwardGroups'); await context.dispatch('loadForwardGroups');
await context.dispatch('addTempGroup', 'timeout');
}
} }
} }
catch(err){ catch(err){
@ -431,6 +452,9 @@ export default {
}, },
setDestinationInCreation(context, isInCreation){ setDestinationInCreation(context, isInCreation){
context.commit('setDestinationInCreation', isInCreation); context.commit('setDestinationInCreation', isInCreation);
},
setSelectedDestType(context, destType){
context.commit('setSelectedDestType', destType);
} }
} }
}; };

Loading…
Cancel
Save