You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-csc-ui/src/pages/CscPageCf.vue

141 lines
4.6 KiB

<template>
<csc-page-sticky
id="csc-page-call-forwarding"
class="q-pa-lg"
>
<template
v-if="hasSubscriberProfileAttributes(['cfu', 'cfna', 'cfb'])"
v-slot:header
>
<q-btn
flat
icon="add"
color="primary"
:label="$t('Add forwarding')"
data-cy="csc-add-forwarding"
:disable="$wait.is('csc-cf-mappings-full')"
:loading="$wait.is('csc-cf-mappings-full')"
>
<csc-popup-menu>
<csc-popup-menu-item
v-if="hasSubscriberProfileAttribute('cfu')"
color="primary"
:label="$t('If available')"
data-cy="csc-add-forwarding-available"
@click="createMapping({ type: 'cfu'})"
/>
<csc-popup-menu-item
v-if="hasSubscriberProfileAttribute('cfna')"
color="primary"
:label="$t('If not available')"
data-cy="csc-add-forwarding-not-available"
@click="createMapping({ type: 'cfna'})"
/>
<csc-popup-menu-item
v-if="hasSubscriberProfileAttribute('cfb')"
color="primary"
:label="$t('If busy')"
data-cy="csc-add-forwarding-busy"
@click="createMapping({ type: 'cfb'})"
/>
</csc-popup-menu>
<template
v-slot:loading
>
<csc-spinner />
</template>
</q-btn>
</template>
<div
class="row justify-center q-pt-lg"
>
<div
id="csc-wrapper-call-forwarding"
class="col-xs-12 col-lg-8"
>
<q-list
v-if="groups.length === 0 && !$wait.is('csc-cf-mappings-full')"
dense
separator
>
<q-item
:disable="$wait.is('csc-cf-mappings-full')"
>
<q-item-section>
<q-item-label
class="text-weight-bold"
>
{{ $t('Always') }}
</q-item-label>
</q-item-section>
</q-item>
<csc-cf-group-item-primary-number />
</q-list>
<template
v-for="group in groups"
>
<csc-cf-group
:key="group.cfm_id"
class="q-mb-lg"
:loading="$wait.is('csc-cf-mappings-full')"
:mapping="group"
:destination-set="destinationSetMap[group.destinationset_id]"
:source-set="sourceSetMap[group.sourceset_id]"
:time-set="timeSetMap[group.timeset_id]"
/>
</template>
</div>
</div>
</csc-page-sticky>
</template>
<script>
import CscCfGroup from 'components/call-forwarding/CscCfGroup'
import {
mapActions,
mapState,
mapGetters
} from 'vuex'
import CscPopupMenuItem from 'components/CscPopupMenuItem'
import CscPopupMenu from 'components/CscPopupMenu'
import CscSpinner from 'components/CscSpinner'
import CscCfGroupItemPrimaryNumber from 'components/call-forwarding/CscCfGroupItemPrimaryNumber'
import CscPageSticky from 'components/CscPageSticky'
export default {
name: 'CscPageCf',
components: {
CscPageSticky,
CscCfGroupItemPrimaryNumber,
CscSpinner,
CscPopupMenu,
CscPopupMenuItem,
CscCfGroup
},
computed: {
...mapState('callForwarding', [
'mappings',
'destinationSetMap',
'sourceSetMap',
'timeSetMap'
]),
...mapGetters('callForwarding', [
'groups'
]),
...mapGetters('user', [
'hasSubscriberProfileAttribute',
'hasSubscriberProfileAttributes'
])
},
async mounted () {
await this.loadAnnouncements()
this.loadMappingsFull()
},
methods: {
...mapActions('callForwarding', [
'loadMappingsFull',
'createMapping',
'loadAnnouncements'
])
}
}
</script>