TT#36010 PBXConfig: As a Customer, I want to see a toast after each successful action

Change-Id: I223e92cfd47358ab4c9fb0df065cc29de616fb05
changes/97/21297/4
Tijana Maksimovic 7 years ago
parent 88499ca9bc
commit 803128ea22

@ -37,7 +37,7 @@
</div> </div>
</div> </div>
<div> <div>
<q-card class="blocked-number" v-for="(number, index) in numbers"> <q-card class="blocked-number" :key="index" v-for="(number, index) in numbers">
<q-card-title> <q-card-title>
<q-icon v-if="!(editing && editingIndex == index) && enabled == 'blacklist'" name="fa-ban" color="negative" size="22px"/> <q-icon v-if="!(editing && editingIndex == index) && enabled == 'blacklist'" name="fa-ban" color="negative" size="22px"/>
<q-icon v-if="!(editing && editingIndex == index) && enabled == 'whitelist'" name="check" color="primary" size="22px"/> <q-icon v-if="!(editing && editingIndex == index) && enabled == 'whitelist'" name="check" color="primary" size="22px"/>

@ -35,6 +35,7 @@
} from 'quasar-framework' } from 'quasar-framework'
import aliasNumberOptions from '../../../mixins/alias-number-options' import aliasNumberOptions from '../../../mixins/alias-number-options'
import itemError from '../../../mixins/item-error' import itemError from '../../../mixins/item-error'
import { showToast } from '../../../helpers/ui'
export default { export default {
mixins: [aliasNumberOptions, itemError], mixins: [aliasNumberOptions, itemError],
@ -93,9 +94,15 @@
'seats', 'seats',
'aliasNumbers', 'aliasNumbers',
'addState', 'addState',
'removeState',
'isAdding', 'isAdding',
'isUpdating', 'isUpdating',
'updateItemId', 'updateItemId',
'isUpdatingAliasNumbers',
'updateAliasNumbersItemId',
'isUpdatingGroupsAndSeats',
'updateGroupsAndSeatsItemId',
'updateState',
'isRemoving', 'isRemoving',
'removeItemId', 'removeItemId',
'listState', 'listState',
@ -103,20 +110,48 @@
'isListRequesting', 'isListRequesting',
'isListLoadingVisible', 'isListLoadingVisible',
'listCurrentPage', 'listCurrentPage',
'listLastPage' 'listLastPage',
'lastAddedGroup',
'lastRemovedGroup',
'lastUpdatedField',
'updateAliasNumbersState',
'updateGroupsAndSeatsState'
]) ])
}, },
watch: { watch: {
addState(state) { addState(state) {
if(state === 'succeeded') { if(state === 'succeeded') {
this.disableAddForm(); this.disableAddForm();
showToast(this.$t('pbxConfig.toasts.addedGroupToast', { group: this.lastAddedGroup }));
}
},
removeState(state) {
if(state === 'succeeded') {
showToast(this.$t('pbxConfig.toasts.removedGroupToast', { group: this.lastRemovedGroup }));
}
},
updateState(state) {
if(state === 'succeeded') {
showToast(this.$t('pbxConfig.toasts.changedFieldToast', this.lastUpdatedField));
}
},
updateAliasNumbersState(state) {
if(state === 'succeeded') {
showToast(this.$t('pbxConfig.toasts.updatedAliasNumbersToast'));
}
},
updateGroupsAndSeatsState(state) {
if(state === 'succeeded') {
showToast(this.$t('pbxConfig.toasts.updatedSeatsInGroupToast', {group: this.seat}));
} }
} }
}, },
methods: { methods: {
isItemLoading(groupId) { isItemLoading(groupId) {
return (this.isUpdating && this.updateItemId + "" === groupId + "") || return (this.isUpdating && this.updateItemId + "" === groupId + "") ||
(this.isRemoving && this.removeItemId + "" === groupId + ""); (this.isRemoving && this.removeItemId + "" === groupId + "") ||
(this.isUpdatingAliasNumbers && this.updateAliasNumbersItemId + "" === groupId + "") ||
(this.isUpdatingGroupsAndSeats && this.updateGroupsAndSeatsItemId + "" === groupId + "");
}, },
resetAddForm() { resetAddForm() {
this.$refs.addForm.reset(); this.$refs.addForm.reset();

@ -33,6 +33,7 @@
import aliasNumberOptions from '../../../mixins/alias-number-options' import aliasNumberOptions from '../../../mixins/alias-number-options'
import itemError from '../../../mixins/item-error' import itemError from '../../../mixins/item-error'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { showToast } from '../../../helpers/ui'
export default { export default {
mixins: [aliasNumberOptions, itemError], mixins: [aliasNumberOptions, itemError],
@ -58,9 +59,14 @@
'seats', 'seats',
'groups', 'groups',
'addState', 'addState',
'removeState',
'isAdding', 'isAdding',
'isUpdating', 'isUpdating',
'updateItemId', 'updateItemId',
'isUpdatingAliasNumbers',
'updateAliasNumbersItemId',
'isUpdatingGroupsAndSeats',
'updateGroupsAndSeatsItemId',
'isRemoving', 'isRemoving',
'removeItemId', 'removeItemId',
'listState', 'listState',
@ -68,7 +74,12 @@
'isListRequesting', 'isListRequesting',
'isListLoadingVisible', 'isListLoadingVisible',
'listCurrentPage', 'listCurrentPage',
'listLastPage' 'listLastPage',
'lastAddedSeat',
'lastRemovedSeat',
'lastUpdatedField',
'updateAliasNumbersState',
'updateGroupsAndSeatsState'
]), ]),
groupOptions() { groupOptions() {
let groups = []; let groups = [];
@ -86,13 +97,36 @@
addState(state) { addState(state) {
if(state === 'succeeded') { if(state === 'succeeded') {
this.disableAddForm(); this.disableAddForm();
showToast(this.$t('pbxConfig.toasts.addedSeatToast', { seat: this.lastAddedSeat }));
}
},
removeState(state) {
if(state === 'succeeded') {
showToast(this.$t('pbxConfig.toasts.removedSeatToast', { seat: this.lastRemovedSeat }));
}
},
updateState(state) {
if(state === 'succeeded') {
showToast(this.$t('pbxConfig.toasts.changedFieldToast', this.lastUpdatedField));
}
},
updateAliasNumbersState(state) {
if(state === 'succeeded') {
showToast(this.$t('pbxConfig.toasts.updatedAliasNumbersToast'));
}
},
updateGroupsAndSeatsState(state) {
if(state === 'succeeded') {
showToast(this.$t('pbxConfig.toasts.updatedGroupsInSeatToast', {seat: this.group}));
} }
} }
}, },
methods: { methods: {
isItemLoading(seatId) { isItemLoading(seatId) {
return (this.isUpdating && this.updateItemId + "" === seatId + "") || return (this.isUpdating && this.updateItemId + "" === seatId + "") ||
(this.isRemoving && this.removeItemId + "" === seatId + ""); (this.isRemoving && this.removeItemId + "" === seatId + "") ||
(this.isUpdatingAliasNumbers && this.updateAliasNumbersItemId + "" === seatId + "") ||
(this.isUpdatingGroupsAndSeats && this.updateGroupsAndSeatsItemId + "" === seatId + "");
}, },
resetAddForm() { resetAddForm() {
this.$refs.addForm.reset(); this.$refs.addForm.reset();

@ -268,12 +268,12 @@
"addGroup": "Add Group", "addGroup": "Add Group",
"removeGroup": "Remove group", "removeGroup": "Remove group",
"removeGroupTitle": "Remove group", "removeGroupTitle": "Remove group",
"removeGroupText": "You are about to remove group \"{group}\"", "removeGroupText": "You are about to remove group {group}",
"seatName": "Seat Name", "seatName": "Seat Name",
"addSeat": "Add Seat", "addSeat": "Add Seat",
"removeSeat": "Remove seat", "removeSeat": "Remove seat",
"removeSeatTitle": "Remove seat", "removeSeatTitle": "Remove seat",
"removeSeatText": "You are about to remove seat \"{seat}\"", "removeSeatText": "You are about to remove seat {seat}",
"devicesTitle": "Devices", "devicesTitle": "Devices",
"deviceStationName": "Station name", "deviceStationName": "Station name",
"deviceIdentifier": "MAC address", "deviceIdentifier": "MAC address",
@ -282,7 +282,17 @@
"seatsTitle": "Seats", "seatsTitle": "Seats",
"noDevices": "No devices created yet", "noDevices": "No devices created yet",
"noGroups": "No groups created yet", "noGroups": "No groups created yet",
"noSeats": "No seats created yet" "noSeats": "No seats created yet",
"toasts": {
"changedFieldToast": "Changed {type} to {name}",
"updatedAliasNumbersToast": "Alias numbers field updated!",
"updatedSeatsInGroupToast": "Group seat field updated!",
"updatedGroupsInSeatToast": "Seat group field updated!",
"addedGroupToast": "Added group {group}",
"removedGroupToast": "Removed group {group}",
"addedSeatToast": "Added seat {seat}",
"removedSeatToast": "Removed seat {seat}"
}
}, },
"communication": { "communication": {
"sendFax": "Send Fax", "sendFax": "Send Fax",

@ -25,6 +25,7 @@ export default {
group.customerId = context.state.pilot.customer_id; group.customerId = context.state.pilot.customer_id;
group.domainId = context.state.pilot.domain_id; group.domainId = context.state.pilot.domain_id;
context.commit('addItemRequesting', group); context.commit('addItemRequesting', group);
context.commit('lastAddedGroup', group.name);
addGroup(group).then(()=>{ addGroup(group).then(()=>{
return context.dispatch('listGroups', true); return context.dispatch('listGroups', true);
}).then(()=>{ }).then(()=>{
@ -35,6 +36,7 @@ export default {
}, },
setGroupName(context, group) { setGroupName(context, group) {
context.commit('updateItemRequesting', group); context.commit('updateItemRequesting', group);
context.commit('lastUpdatedField', {name: group.name, type: 'group name'});
setGroupName(group.id, group.name).then(() => { setGroupName(group.id, group.name).then(() => {
return context.dispatch('listGroups', true); return context.dispatch('listGroups', true);
}).then(()=>{ }).then(()=>{
@ -45,6 +47,7 @@ export default {
}, },
setGroupExtension(context, group) { setGroupExtension(context, group) {
context.commit('updateItemRequesting', group); context.commit('updateItemRequesting', group);
context.commit('lastUpdatedField', {name: group.extension, type: 'group extension'});
setGroupExtension(group.id, group.extension).then(()=>{ setGroupExtension(group.id, group.extension).then(()=>{
return context.dispatch('listGroups', true); return context.dispatch('listGroups', true);
}).then(() => { }).then(() => {
@ -55,6 +58,7 @@ export default {
}, },
setGroupHuntPolicy(context, group) { setGroupHuntPolicy(context, group) {
context.commit('updateItemRequesting', group); context.commit('updateItemRequesting', group);
context.commit('lastUpdatedField', {name: group.huntPolicy + " ringing", type: 'group hunt policy'});
setGroupHuntPolicy(group.id, group.huntPolicy).then(() => { setGroupHuntPolicy(group.id, group.huntPolicy).then(() => {
return context.dispatch('listGroups', true); return context.dispatch('listGroups', true);
}).then(()=>{ }).then(()=>{
@ -65,6 +69,7 @@ export default {
}, },
setGroupHuntTimeout(context, group) { setGroupHuntTimeout(context, group) {
context.commit('updateItemRequesting', group); context.commit('updateItemRequesting', group);
context.commit('lastUpdatedField', {name: group.huntTimeout + " seconds", type: 'group hunt timeout'});
setGroupHuntTimeout(group.id, group.huntTimeout).then(()=>{ setGroupHuntTimeout(group.id, group.huntTimeout).then(()=>{
return context.dispatch('listGroups', true); return context.dispatch('listGroups', true);
}).then(() => { }).then(() => {
@ -74,30 +79,31 @@ export default {
}); });
}, },
updateAliasNumbers(context, data) { updateAliasNumbers(context, data) {
context.commit('updateItemRequesting', data.item); context.commit('updateAliasNumbersRequesting', data.item);
Promise.all([ Promise.all([
assignNumbers(data.add, data.item.id), assignNumbers(data.add, data.item.id),
assignNumbers(data.remove, context.getters.pilotId) assignNumbers(data.remove, context.getters.pilotId)
]).then(()=>{ ]).then(()=>{
return context.dispatch('listGroups', true); return context.dispatch('listGroups', true);
}).then(()=>{ }).then(()=>{
context.commit('updateItemSucceeded'); context.commit('updateAliasNumbersSucceeded');
}).catch((err)=>{ }).catch((err)=>{
context.commit('updateItemFailed', err.message); context.commit('updateAliasNumbersFailed', err.message);
}); });
}, },
updateSeats(context, group) { updateSeats(context, group) {
context.commit('updateItemRequesting', group); context.commit('updateGroupsAndSeatsRequesting', group);
updateGroupSeats(group.id, group.seats).then(()=>{ updateGroupSeats(group.id, group.seats).then(()=>{
return context.dispatch('listGroups', true); return context.dispatch('listGroups', true);
}).then(() => { }).then(() => {
context.commit('updateItemSucceeded'); context.commit('updateGroupsAndSeatsSucceeded');
}).catch((err) => { }).catch((err) => {
context.commit('updateItemFailed', err.message); context.commit('updateGroupsAndSeatsFailed', err.message);
}); });
}, },
removeGroup(context, group) { removeGroup(context, group) {
context.commit('removeItemRequesting', group); context.commit('removeItemRequesting', group);
context.commit('lastRemovedGroup', group.name);
removeGroup(group.id).then(()=>{ removeGroup(group.id).then(()=>{
return context.dispatch('listGroups', true); return context.dispatch('listGroups', true);
}).then(()=>{ }).then(()=>{
@ -124,6 +130,7 @@ export default {
seat.customerId = context.state.pilot.customer_id; seat.customerId = context.state.pilot.customer_id;
seat.domainId = context.state.pilot.domain_id; seat.domainId = context.state.pilot.domain_id;
context.commit('addItemRequesting', seat); context.commit('addItemRequesting', seat);
context.commit('lastAddedSeat', seat.name);
addSeat(seat).then(()=>{ addSeat(seat).then(()=>{
return context.dispatch('listSeats', true); return context.dispatch('listSeats', true);
}).then(()=>{ }).then(()=>{
@ -134,6 +141,7 @@ export default {
}, },
setSeatName(context, seat) { setSeatName(context, seat) {
context.commit('updateItemRequesting', seat); context.commit('updateItemRequesting', seat);
context.commit('lastUpdatedField', {name: seat.name, type: 'seat name'});
setSeatName(seat.id, seat.name).then(() => { setSeatName(seat.id, seat.name).then(() => {
return context.dispatch('listSeats', true); return context.dispatch('listSeats', true);
}).then(()=>{ }).then(()=>{
@ -144,6 +152,7 @@ export default {
}, },
setSeatExtension(context, seat) { setSeatExtension(context, seat) {
context.commit('updateItemRequesting', seat); context.commit('updateItemRequesting', seat);
context.commit('lastUpdatedField', {name: seat.extension, type: 'seat extension'});
setSeatExtension(seat.id, seat.extension).then(()=>{ setSeatExtension(seat.id, seat.extension).then(()=>{
return context.dispatch('listSeats', true); return context.dispatch('listSeats', true);
}).then(() => { }).then(() => {
@ -153,17 +162,18 @@ export default {
}); });
}, },
updateGroups(context, seat) { updateGroups(context, seat) {
context.commit('updateItemRequesting', seat); context.commit('updateGroupsAndSeatsRequesting', seat);
updateSeatGroups(seat.id, seat.groups).then(()=>{ updateSeatGroups(seat.id, seat.groups).then(()=>{
return context.dispatch('listSeats', true); return context.dispatch('listSeats', true);
}).then(() => { }).then(() => {
context.commit('updateItemSucceeded'); context.commit('updateGroupsAndSeatsSucceeded');
}).catch((err) => { }).catch((err) => {
context.commit('updateItemFailed', err.message); context.commit('updateGroupsAndSeatsFailed', err.message);
}); });
}, },
removeSeat(context, seat) { removeSeat(context, seat) {
context.commit('removeItemRequesting', seat); context.commit('removeItemRequesting', seat);
context.commit('lastRemovedSeat', seat.name);
removeSeat(seat.id).then(()=>{ removeSeat(seat.id).then(()=>{
return context.dispatch('listSeats', true); return context.dispatch('listSeats', true);
}).then(()=>{ }).then(()=>{

@ -73,18 +73,42 @@ export default {
isUpdating(state) { isUpdating(state) {
return state.updateState === RequestState.requesting; return state.updateState === RequestState.requesting;
}, },
isUpdatingAliasNumbers(state) {
return state.updateAliasNumbersState === RequestState.requesting;
},
isUpdatingGroupsAndSeats(state) {
return state.updateGroupsAndSeatsState === RequestState.requesting;
},
updateState(state) { updateState(state) {
return state.updateState; return state.updateState;
}, },
updateItem(state) { updateItem(state) {
return state.updateItem; return state.updateItem;
}, },
updateGroupsAndSeatsItem(state) {
return state.updateGroupsAndSeatsItem;
},
updateAliasNumbersItem(state) {
return state.updateAliasNumbersItem;
},
updateItemId(state, getters) { updateItemId(state, getters) {
if(_.isObject(getters.updateItem)) { if(_.isObject(getters.updateItem)) {
return getters.updateItem.id; return getters.updateItem.id;
} }
return null; return null;
}, },
updateGroupsAndSeatsItemId(state, getters) {
if(_.isObject(getters.updateGroupsAndSeatsItem)) {
return getters.updateGroupsAndSeatsItem.id;
}
return null;
},
updateAliasNumbersItemId(state, getters) {
if(_.isObject(getters.updateAliasNumbersItem)) {
return getters.updateAliasNumbersItem.id;
}
return null;
},
updateError(state) { updateError(state) {
return state.updateError; return state.updateError;
}, },
@ -129,5 +153,26 @@ export default {
return (id)=>{ return (id)=>{
return state.deviceLoadingStates[id + ""] === true; return state.deviceLoadingStates[id + ""] === true;
} }
},
lastAddedGroup(state) {
return state.lastAddedGroup;
},
lastRemovedGroup(state) {
return state.lastRemovedGroup;
},
lastUpdatedField(state) {
return state.lastUpdatedField;
},
updateAliasNumbersState(state) {
return state.updateAliasNumbersState;
},
updateGroupsAndSeatsState(state) {
return state.updateGroupsAndSeatsState;
},
lastAddedSeat(state) {
return state.lastAddedSeat;
},
lastRemovedSeat(state) {
return state.lastRemovedSeat;
} }
} }

@ -93,6 +93,32 @@ export default {
state.updateState = RequestState.failed; state.updateState = RequestState.failed;
state.updateError = error; state.updateError = error;
}, },
updateAliasNumbersRequesting(state, item) {
state.updateAliasNumbersState = RequestState.requesting;
state.updateAliasNumbersError = null;
state.updateAliasNumbersItem = item;
},
updateAliasNumbersSucceeded(state) {
state.updateAliasNumbersState = RequestState.succeeded;
state.updateAliasNumbersError = null;
},
updateAliasNumbersFailed(state, error) {
state.updateAliasNumbersState = RequestState.failed;
state.updateAliasNumbersError = error;
},
updateGroupsAndSeatsRequesting(state, item) {
state.updateGroupsAndSeatsState = RequestState.requesting;
state.updateGroupsAndSeatsError = null;
state.updateGroupsAndSeatsItem = item;
},
updateGroupsAndSeatsSucceeded(state) {
state.updateGroupsAndSeatsState = RequestState.succeeded;
state.updateGroupsAndSeatsError = null;
},
updateGroupsAndSeatsFailed(state, error) {
state.updateGroupsAndSeatsState = RequestState.failed;
state.updateGroupsAndSeatsError = error;
},
removeItemRequesting(state, item) { removeItemRequesting(state, item) {
state.removeState = RequestState.requesting; state.removeState = RequestState.requesting;
state.removeError = null; state.removeError = null;
@ -154,5 +180,20 @@ export default {
let deviceLoadingErrors = _.clone(state.deviceLoadingErrors); let deviceLoadingErrors = _.clone(state.deviceLoadingErrors);
deviceLoadingErrors[deviceId + ""] = errorMessage; deviceLoadingErrors[deviceId + ""] = errorMessage;
state.deviceLoadingErrors = deviceLoadingErrors; state.deviceLoadingErrors = deviceLoadingErrors;
},
lastAddedGroup(state, group) {
state.lastAddedGroup = group;
},
lastRemovedGroup(state, group) {
state.lastRemovedGroup = group;
},
lastAddedSeat(state, seat) {
state.lastAddedSeat = seat;
},
lastRemovedSeat(state, seat) {
state.lastRemovedSeat = seat;
},
lastUpdatedField(state, group) {
state.lastUpdatedField = group;
} }
} }

@ -31,5 +31,14 @@ export default {
removeError: null, removeError: null,
removeItem: null, removeItem: null,
deviceLoadingStates: {}, deviceLoadingStates: {},
deviceLoadingErrors: {} deviceLoadingErrors: {},
lastAddedGroup: null,
lastRemovedGroup: null,
lastAddedSeat: null,
lastRemovedSeat: null,
lastUpdatedField: null,
updateAliasNumbersState: RequestState.initiated,
updateAliasNumbersItem: null,
updateGroupsAndSeatsState: RequestState.initiated,
updateGroupsAndSeatsItem: null
} }

Loading…
Cancel
Save