- Changing list view to 8 rows with 3 columns. - Preferences/Edit are now open in a separate page. - Adding the new 4 preferences ( - Admin Name/ Disable web GUI/ User config priority over-provisioning/FW upgrade disable) together with the existing parameters. Change-Id: Iae92c3313c592f7662587f52d0d4c9293ba41a97mr13.0
parent
35a4b263ea
commit
f11e89813e
@ -0,0 +1,415 @@
|
|||||||
|
<template>
|
||||||
|
<csc-page-sticky-tabs
|
||||||
|
id="csc-page-pbx-devices-details"
|
||||||
|
ref="pageSticky"
|
||||||
|
:value="selectedTab"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
#tabs
|
||||||
|
>
|
||||||
|
<q-breadcrumbs
|
||||||
|
class="q-item absolute absolute-left text-weight-light"
|
||||||
|
active-color="primary"
|
||||||
|
separator-color="primary"
|
||||||
|
>
|
||||||
|
<q-breadcrumbs-el
|
||||||
|
key="devices"
|
||||||
|
class="cursor-pointer"
|
||||||
|
to="/user/pbx-configuration/devices"
|
||||||
|
:label="$t('Devices')"
|
||||||
|
icon="fas fa-fax"
|
||||||
|
/>
|
||||||
|
<q-breadcrumbs-el
|
||||||
|
v-if="deviceSelected"
|
||||||
|
key="device"
|
||||||
|
:label="deviceSelected.station_name"
|
||||||
|
/>
|
||||||
|
</q-breadcrumbs>
|
||||||
|
|
||||||
|
<q-tab
|
||||||
|
v-for="tab in tabs"
|
||||||
|
:key="tab.value"
|
||||||
|
class="d-flex justify-content-center"
|
||||||
|
:name="tab.value"
|
||||||
|
:icon="tab.icon"
|
||||||
|
:label="tab.label"
|
||||||
|
:default="tab.value === selectedTab"
|
||||||
|
@click="selectTab(tab.value)"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<q-item
|
||||||
|
v-if="selectedTab === 'preferences'"
|
||||||
|
class="col col-xs-12 col-md-6"
|
||||||
|
>
|
||||||
|
<q-list
|
||||||
|
v-if="changes"
|
||||||
|
class="col-xs-12 col-md-6 q-mr-xl"
|
||||||
|
side
|
||||||
|
top
|
||||||
|
>
|
||||||
|
<q-input
|
||||||
|
v-model="changes.station_name"
|
||||||
|
:label="$t('Station name')"
|
||||||
|
:disable="isLoading"
|
||||||
|
@keyup.enter="save"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
v-if="hasStationNameChanged"
|
||||||
|
#append
|
||||||
|
>
|
||||||
|
<csc-input-button-save
|
||||||
|
@click.stop="save"
|
||||||
|
/>
|
||||||
|
<csc-input-button-reset
|
||||||
|
@click.stop="resetStationName"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
<q-input
|
||||||
|
v-model="changes.identifier"
|
||||||
|
:disable="isLoading"
|
||||||
|
:label="$t('MAC address')"
|
||||||
|
@keyup.enter="save"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
v-if="hasIdentifierChanged"
|
||||||
|
#append
|
||||||
|
>
|
||||||
|
<csc-input-button-save
|
||||||
|
@click.stop="save"
|
||||||
|
/>
|
||||||
|
<csc-input-button-reset
|
||||||
|
@click.stop="resetIdentifier"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
<csc-pbx-model-select
|
||||||
|
v-model="changes.profile_id"
|
||||||
|
:profiles="deviceProfileList"
|
||||||
|
:profile-map="deviceProfileMap"
|
||||||
|
:has-reset-button="false"
|
||||||
|
@opened="$emit('model-select-opened')"
|
||||||
|
@input="selectedProfile"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
v-if="hasProfileChanged"
|
||||||
|
#append
|
||||||
|
>
|
||||||
|
<csc-input-button-save
|
||||||
|
@click.stop="save"
|
||||||
|
/>
|
||||||
|
<csc-input-button-reset
|
||||||
|
@click.stop="resetProfile"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</csc-pbx-model-select>
|
||||||
|
</q-list>
|
||||||
|
<q-list
|
||||||
|
v-if="changes"
|
||||||
|
class="col-xs-12 col-md-5 q-mr-xl"
|
||||||
|
side
|
||||||
|
top
|
||||||
|
>
|
||||||
|
<q-input
|
||||||
|
v-model="changes.admin_name"
|
||||||
|
:label="$t('Admin name')"
|
||||||
|
:disable="isLoadingPreferences"
|
||||||
|
@keyup.enter="save"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
v-if="hasAdminNameChanged"
|
||||||
|
#append
|
||||||
|
>
|
||||||
|
<csc-input-button-save
|
||||||
|
@click.stop="save"
|
||||||
|
/>
|
||||||
|
<csc-input-button-reset
|
||||||
|
@click.stop="resetAdminName"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
<q-toggle
|
||||||
|
v-model="changes.web_gui_dis"
|
||||||
|
class="q-pa-sm"
|
||||||
|
:label="$t('Disable phone web interface')"
|
||||||
|
:disable="isLoadingPreferences"
|
||||||
|
@update:model-value="changeGui"
|
||||||
|
/>
|
||||||
|
<q-toggle
|
||||||
|
v-model="changes.user_conf_priority"
|
||||||
|
class="q-pa-sm"
|
||||||
|
:label="$t('User config priority over provisioning')"
|
||||||
|
:disable="isLoadingPreferences"
|
||||||
|
@update:model-value="changeUserConfig"
|
||||||
|
/>
|
||||||
|
<q-toggle
|
||||||
|
v-model="changes.FW_upg_dis"
|
||||||
|
class="q-pa-sm"
|
||||||
|
:label="$t('FW Upgrade disable')"
|
||||||
|
:disable="isLoadingPreferences"
|
||||||
|
@update:model-value="changeFW"
|
||||||
|
/>
|
||||||
|
</q-list>
|
||||||
|
<q-list
|
||||||
|
v-if="changes"
|
||||||
|
class="col-xs-12 col-md-16 q-mr-xl"
|
||||||
|
>
|
||||||
|
<csc-pbx-device-config
|
||||||
|
v-if="deviceModelImageMap[deviceProfileMap[deviceSelected.profile_id].device_id]"
|
||||||
|
:device="deviceSelected"
|
||||||
|
:model="deviceModelMap[deviceProfileMap[deviceSelected.profile_id].device_id]"
|
||||||
|
:model-image="deviceModelImageMap[deviceProfileMap[deviceSelected.profile_id].device_id]"
|
||||||
|
:loading="isSubscribersRequesting"
|
||||||
|
:subscribers="subscriberList"
|
||||||
|
:subscriber-map="subscriberMap"
|
||||||
|
:device-preferences="true"
|
||||||
|
@keysChanged="keysSave"
|
||||||
|
/>
|
||||||
|
</q-list>
|
||||||
|
</q-item>
|
||||||
|
</csc-page-sticky-tabs>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import CscInputButtonReset from 'components/form/CscInputButtonReset'
|
||||||
|
import CscInputButtonSave from 'components/form/CscInputButtonSave'
|
||||||
|
import CscPageStickyTabs from 'components/CscPageStickyTabs'
|
||||||
|
import CscPbxDeviceConfig from 'components/pages/PbxConfiguration/CscPbxDeviceConfig'
|
||||||
|
import CscPbxModelSelect from 'components/pages/PbxConfiguration/CscPbxModelSelect'
|
||||||
|
import useValidate from '@vuelidate/core'
|
||||||
|
import {
|
||||||
|
mapActions,
|
||||||
|
mapGetters,
|
||||||
|
mapMutations,
|
||||||
|
mapState
|
||||||
|
} from 'vuex'
|
||||||
|
import { RequestState } from 'src/store/common'
|
||||||
|
import {
|
||||||
|
showGlobalError,
|
||||||
|
showToast
|
||||||
|
} from 'src/helpers/ui'
|
||||||
|
export default {
|
||||||
|
name: 'CscPagePbxDeviceDetails',
|
||||||
|
components: {
|
||||||
|
CscPageStickyTabs,
|
||||||
|
CscInputButtonSave,
|
||||||
|
CscInputButtonReset,
|
||||||
|
CscPbxModelSelect,
|
||||||
|
CscPbxDeviceConfig
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
initialTab: {
|
||||||
|
type: String,
|
||||||
|
default: 'preferences'
|
||||||
|
},
|
||||||
|
device: {
|
||||||
|
type: Object,
|
||||||
|
default: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
changes: null,
|
||||||
|
id: this.$route.params.id,
|
||||||
|
selectedTab: this.initialTab,
|
||||||
|
v$: useValidate()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState('pbxDevices', [
|
||||||
|
'deviceSelected',
|
||||||
|
'deviceUpdateError',
|
||||||
|
'devicePreferencesUpdateError',
|
||||||
|
'deviceUpdateState',
|
||||||
|
'devicePreferencesUpdateState',
|
||||||
|
'devicePreferencesSelected'
|
||||||
|
]),
|
||||||
|
...mapState('pbx', [
|
||||||
|
'deviceProfileList',
|
||||||
|
'deviceProfileMap',
|
||||||
|
'deviceModelImageMap',
|
||||||
|
'deviceModelMap',
|
||||||
|
'subscriberList',
|
||||||
|
'subscriberMap'
|
||||||
|
]),
|
||||||
|
...mapGetters('pbx', [
|
||||||
|
'getSubscriberOptions',
|
||||||
|
'isSubscribersRequesting'
|
||||||
|
]),
|
||||||
|
...mapGetters('pbxDevices', [
|
||||||
|
'getDeviceUpdateToastMessage',
|
||||||
|
'getDevicePreferencesUpdateToastMessage',
|
||||||
|
'isDeviceLoading',
|
||||||
|
'isDevicePreferencesLoading'
|
||||||
|
]),
|
||||||
|
tabs () {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: this.$t('Preferences'),
|
||||||
|
value: 'preferences',
|
||||||
|
icon: 'perm_phone_msg'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
isLoading () {
|
||||||
|
return this.isDeviceLoading(this.deviceSelected.id)
|
||||||
|
},
|
||||||
|
isLoadingPreferences () {
|
||||||
|
return this.isDevicePreferencesLoading(this.devicePreferencesSelected.id)
|
||||||
|
},
|
||||||
|
hasStationNameChanged () {
|
||||||
|
return this.changes.station_name !== this.deviceSelected.station_name
|
||||||
|
},
|
||||||
|
hasIdentifierChanged () {
|
||||||
|
return this.changes.identifier !== this.deviceSelected.identifier
|
||||||
|
},
|
||||||
|
hasProfileChanged () {
|
||||||
|
return this.changes.profile_id !== this.deviceSelected.profile_id
|
||||||
|
},
|
||||||
|
imageUrl () {
|
||||||
|
if (this.modelImage && this.modelImage.url) {
|
||||||
|
return this.modelImage.url
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
},
|
||||||
|
hasAdminNameChanged () {
|
||||||
|
return this.changes.admin_name !== this.devicePreferencesSelected.admin_name
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
deviceSelected () {
|
||||||
|
this.changes = this.getDeviceData()
|
||||||
|
},
|
||||||
|
deviceUpdateState (state) {
|
||||||
|
if (state === RequestState.succeeded) {
|
||||||
|
showToast(this.getDeviceUpdateToastMessage)
|
||||||
|
} else if (state === RequestState.failed) {
|
||||||
|
showGlobalError(this.deviceUpdateError)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
devicePreferencesUpdateState (state) {
|
||||||
|
if (state === RequestState.succeeded) {
|
||||||
|
showToast(this.getDevicePreferencesUpdateToastMessage)
|
||||||
|
} else if (state === RequestState.failed) {
|
||||||
|
showGlobalError(this.devicePreferencesUpdateError)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
this.expandDevice(this.id)
|
||||||
|
this.expandDevicePreferences(this.id)
|
||||||
|
this.loadSubscribers()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapMutations('pbxDevices', [
|
||||||
|
'expandDevice',
|
||||||
|
'expandDevicePreferences'
|
||||||
|
]),
|
||||||
|
...mapActions('pbxDevices', [
|
||||||
|
'setDeviceKeys',
|
||||||
|
'setDeviceStationName',
|
||||||
|
'setDeviceIdentifier',
|
||||||
|
'setDeviceProfile',
|
||||||
|
'setAdminName',
|
||||||
|
'setGui',
|
||||||
|
'setUserConfig',
|
||||||
|
'setFW'
|
||||||
|
]),
|
||||||
|
...mapActions('pbx', [
|
||||||
|
'loadSubscribers'
|
||||||
|
]),
|
||||||
|
getDeviceData () {
|
||||||
|
return (this.deviceSelected && this.devicePreferencesSelected)
|
||||||
|
? {
|
||||||
|
station_name: this.deviceSelected.station_name,
|
||||||
|
identifier: this.deviceSelected.identifier,
|
||||||
|
profile_id: this.deviceSelected.profile_id,
|
||||||
|
admin_name: this.devicePreferencesSelected.admin_name ? this.devicePreferencesSelected.admin_name : undefined,
|
||||||
|
web_gui_dis: this.devicePreferencesSelected.web_gui_dis ? this.devicePreferencesSelected.web_gui_dis : false,
|
||||||
|
user_conf_priority: this.devicePreferencesSelected.user_conf_priority ? this.devicePreferencesSelected.user_conf_priority : false,
|
||||||
|
FW_upg_dis: this.devicePreferencesSelected.FW_upg_dis ? this.devicePreferencesSelected.FW_upg_dis : false
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
},
|
||||||
|
resetStationName () {
|
||||||
|
this.changes.station_name = this.deviceSelected.station_name
|
||||||
|
},
|
||||||
|
resetIdentifier () {
|
||||||
|
this.changes.identifier = this.deviceSelected.identifier
|
||||||
|
},
|
||||||
|
resetAdminName () {
|
||||||
|
this.changes.admin_name = this.devicePreferencesSelected.admin_name
|
||||||
|
},
|
||||||
|
selectedProfile (profileId) {
|
||||||
|
this.changes.profile_id = profileId
|
||||||
|
},
|
||||||
|
resetProfile () {
|
||||||
|
this.changes.profile_id = this.deviceSelected.profile_id
|
||||||
|
},
|
||||||
|
selectTab (tabName) {
|
||||||
|
if (this.selectedTab !== tabName) {
|
||||||
|
this.forceTabReload(tabName)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
forceTabReload (tabName) {
|
||||||
|
this.selectedTab = tabName
|
||||||
|
},
|
||||||
|
keysSave (keys) {
|
||||||
|
this.setDeviceKeys({
|
||||||
|
deviceId: this.deviceSelected.id,
|
||||||
|
keys: keys
|
||||||
|
})
|
||||||
|
},
|
||||||
|
save () {
|
||||||
|
if (this.hasStationNameChanged) {
|
||||||
|
this.setDeviceStationName({
|
||||||
|
deviceId: this.deviceSelected.id,
|
||||||
|
stationName: this.changes.station_name
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.hasIdentifierChanged) {
|
||||||
|
this.setDeviceIdentifier({
|
||||||
|
deviceId: this.deviceSelected.id,
|
||||||
|
identifier: this.changes.identifier
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.hasProfileChanged) {
|
||||||
|
this.setDeviceProfile({
|
||||||
|
deviceId: this.deviceSelected.id,
|
||||||
|
profileId: this.changes.profile_id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.hasAdminNameChanged) {
|
||||||
|
this.setAdminName({
|
||||||
|
deviceId: this.devicePreferencesSelected.id,
|
||||||
|
adminName: this.changes.admin_name
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeGui () {
|
||||||
|
this.setGui({
|
||||||
|
deviceId: this.devicePreferencesSelected.id,
|
||||||
|
webGui: this.changes.web_gui_dis
|
||||||
|
})
|
||||||
|
},
|
||||||
|
changeUserConfig () {
|
||||||
|
this.setUserConfig({
|
||||||
|
deviceId: this.devicePreferencesSelected.id,
|
||||||
|
userConf: this.changes.user_conf_priority
|
||||||
|
})
|
||||||
|
},
|
||||||
|
changeFW () {
|
||||||
|
this.setFW({
|
||||||
|
deviceId: this.devicePreferencesSelected.id,
|
||||||
|
FWupg: this.changes.FW_upg_dis
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.no-wrap {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in new issue