diff --git a/dev-config.sh b/dev-config.sh index f7e6bf8a..22e2a138 100755 --- a/dev-config.sh +++ b/dev-config.sh @@ -5,16 +5,11 @@ case "$1" in ngcpcfg set /etc/ngcp-config/config.yml www_admin.http_csc.csc_dev=yes ngcpcfg set /etc/ngcp-config/config.yml www_admin.http_csc.csc_js_enable=yes ngcpcfg set /etc/ngcp-config/config.yml rtcengine.enable=yes - ngcpcfg set /etc/ngcp-config/config.yml pbx.enable=yes - ngcpcfg set /etc/ngcp-config/config.yml www_admin.privileges.subscriberadmin.subscribers.0=write - ngcpcfg set /etc/ngcp-config/config.yml email.smarthost.hostname=mail.sipwise.com - - # Mandatory flags to enable conferencing ngcpcfg set /etc/ngcp-config/config.yml rtcengine.conference.enable=yes ngcpcfg set /etc/ngcp-config/config.yml janus.enable=yes ngcpcfg set /etc/ngcp-config/config.yml fileshare.enable=yes - - # Apply changes + ngcpcfg set /etc/ngcp-config/config.yml pbx.enable=yes + ngcpcfg set /etc/ngcp-config/config.yml www_admin.privileges.subscriberadmin.subscribers.0=write ngcpcfg apply 'Enable CSC, PBX and RtcEngine' ;; esac diff --git a/src/api/pbx-config.js b/src/api/pbx-config.js index 8cf47710..8c2874b2 100644 --- a/src/api/pbx-config.js +++ b/src/api/pbx-config.js @@ -16,7 +16,8 @@ import { setPbxGroupIds, getSubscribers, getSubscriber, - getSubscribersByCallQueueEnabled + getSubscribersByCallQueueEnabled, + addNewCallQueueConfig } from './subscriber'; import uuid from 'uuid'; import { getList, get, patchReplace } from './common' @@ -528,6 +529,7 @@ export function getCallQueueConfigurations() { getSubscribersByCallQueueEnabled().then((subscribers)=>{ let callQueues = subscribers.map((subscriber)=>{ return { + id: _.get(subscriber, 'id', null), display_name: _.get(subscriber, 'display_name', null), is_pbx_group: _.get(subscriber, 'is_pbx_group', null), max_queue_length: _.get(subscriber, 'prefs.max_queue_length', 5), @@ -542,3 +544,13 @@ export function getCallQueueConfigurations() { }); }); } + +export function addCallQueueConfig(id, config) { + return new Promise((resolve, reject)=>{ + addNewCallQueueConfig(id, config).then(() => { + resolve(); + }).catch((err)=>{ + reject(err); + }); + }); +} diff --git a/src/api/subscriber.js b/src/api/subscriber.js index 96db5fdf..68ec473e 100644 --- a/src/api/subscriber.js +++ b/src/api/subscriber.js @@ -332,3 +332,7 @@ export function getSubscribersByCallQueueEnabled() { }); }); } + +export function addNewCallQueueConfig(id, config) { + return Vue.http.put('api/subscriberpreferences/' + id, config); +} diff --git a/src/components/pages/PbxConfiguration/CscPbxCallQueue.vue b/src/components/pages/PbxConfiguration/CscPbxCallQueue.vue index df6f2c11..d3f486e3 100644 --- a/src/components/pages/PbxConfiguration/CscPbxCallQueue.vue +++ b/src/components/pages/PbxConfiguration/CscPbxCallQueue.vue @@ -66,6 +66,7 @@ dark readonly :value="subscriber.max_queue_length" + suffix="callers" /> +
+ + + + + + + + + +
+ + {{ $t('buttons.cancel') }} + + + {{ $t('pbxConfig.createConfig') }} + +
+ + + +
+ + + + + diff --git a/src/components/pages/PbxConfiguration/CscPbxCallQueues.vue b/src/components/pages/PbxConfiguration/CscPbxCallQueues.vue index 94323562..490cf02b 100644 --- a/src/components/pages/PbxConfiguration/CscPbxCallQueues.vue +++ b/src/components/pages/PbxConfiguration/CscPbxCallQueues.vue @@ -3,6 +3,32 @@ +
+ + {{ $t('pbxConfig.addConfig') }} + +
+
+ +
import CscPage from '../../CscPage' import CscPbxCallQueue from './CscPbxCallQueue' + import CscPbxCallQueueAddForm from './CscPbxCallQueueAddForm' import { mapGetters } from 'vuex' import { QField, @@ -51,12 +78,14 @@ QItemMain, QItemTile, Platform, - QSpinnerDots + QSpinnerDots, + QBtn } from 'quasar-framework' export default { components: { - CscPbxCallQueue, CscPage, + CscPbxCallQueue, + CscPbxCallQueueAddForm, QField, QInput, QIcon, @@ -67,28 +96,60 @@ QItemSide, QItemMain, QItemTile, - QSpinnerDots + QSpinnerDots, + QBtn }, data () { return { + addFormEnabled: false } }, mounted() { this.$store.dispatch('pbxConfig/listCallQueueGroupsAndSeats'); + this.$store.dispatch('pbxConfig/getAllGroupsAndSeats'); }, computed: { ...mapGetters('pbxConfig', [ 'callQueueGroupsAndSeats', 'isListLoadingVisible', - 'isListRequesting' + 'isListRequesting', + 'callQueueGroupsAndSeatsOptions', + 'isAdding', + 'addState' ]), isMobile() { return Platform.is.mobile; } }, methods: { + addConfig(data) { + let config = { + max_queue_length: data.max_queue_length, + queue_wrap_up_time: data.queue_wrap_up_time + }; + this.$store.dispatch('pbxConfig/addCallQueueConfig', { + id: data.subscriber_id, + config: config + }); + }, + enableAddForm() { + this.resetAddForm(); + this.addFormEnabled = true; + }, + disableAddForm() { + this.resetAddForm(); + this.addFormEnabled = false; + }, + resetAddForm() { + this.$refs.addForm.reset(); + } }, watch: { + addState(state) { + if (state === 'succeeded') { + this.disableAddForm(); + } + } } } diff --git a/src/components/pages/PbxConfiguration/CscPbxSeats.vue b/src/components/pages/PbxConfiguration/CscPbxSeats.vue index a2e3dee6..8b5ad81a 100644 --- a/src/components/pages/PbxConfiguration/CscPbxSeats.vue +++ b/src/components/pages/PbxConfiguration/CscPbxSeats.vue @@ -29,7 +29,6 @@ @cancel="disableAddForm" />
-