Change-Id: Iad49631cbed6b231847af6cefa22ea2a2d4c29a0changes/42/28242/9
parent
81dcafe8e4
commit
fa7f91faab
@ -0,0 +1,277 @@
|
||||
<template>
|
||||
<div class="csc-form csc-pbx-seat-add-form">
|
||||
<q-field
|
||||
:error-label="nameErrorMessage"
|
||||
class="csc-form-field"
|
||||
>
|
||||
<q-input
|
||||
dark
|
||||
autofocus
|
||||
v-model="data.name"
|
||||
:error="$v.data.name.$error"
|
||||
:disable="loading"
|
||||
:readonly="loading"
|
||||
:float-label="$t('pbxConfig.name')"
|
||||
@input="$v.data.name.$touch"
|
||||
@blur="$v.data.name.$touch"
|
||||
clearable
|
||||
/>
|
||||
</q-field>
|
||||
<q-field
|
||||
:error-label="descriptionErrorMessage"
|
||||
class="csc-form-field"
|
||||
>
|
||||
<q-input
|
||||
dark
|
||||
clearable
|
||||
v-model="data.description"
|
||||
:error="$v.data.description.$error"
|
||||
:disable="loading"
|
||||
:readonly="loading"
|
||||
:float-label="$t('pbxConfig.description')"
|
||||
@input="$v.data.description.$touch"
|
||||
@blur="$v.data.description.$touch"
|
||||
/>
|
||||
</q-field>
|
||||
<q-field
|
||||
class="csc-form-field"
|
||||
>
|
||||
<q-toggle
|
||||
v-model="data.contract_default"
|
||||
checked-icon="check_circle"
|
||||
unchecked-icon="check_circle"
|
||||
:class="contractDefaultClasses"
|
||||
:disable="loading"
|
||||
:label="$t('pbxConfig.defaultForSubscribers')"
|
||||
/>
|
||||
</q-field>
|
||||
<q-field
|
||||
class="csc-form-field"
|
||||
>
|
||||
<q-toggle
|
||||
v-model="data.copy_from_default"
|
||||
checked-icon="move_to_inbox"
|
||||
unchecked-icon="move_to_inbox"
|
||||
:class="loadFilesClasses"
|
||||
:disable="loading"
|
||||
:label="$t('pbxConfig.loadFiles')"
|
||||
@input="toggleLoadFiles"
|
||||
/>
|
||||
</q-field>
|
||||
<q-field
|
||||
class="csc-form-field"
|
||||
>
|
||||
<q-toggle
|
||||
v-model="data.loopplay"
|
||||
checked-icon="loop"
|
||||
unchecked-icon="loop"
|
||||
:class="loopplayClasses"
|
||||
:disable="loading || !data.copy_from_default"
|
||||
:label="$t('pbxConfig.playingInLoop')"
|
||||
/>
|
||||
</q-field>
|
||||
<q-field
|
||||
class="csc-form-field"
|
||||
>
|
||||
<q-select
|
||||
dark
|
||||
chips
|
||||
clearable
|
||||
v-model="data.language"
|
||||
:disable="loading || !data.copy_from_default"
|
||||
:readonly="loading"
|
||||
:float-label="$t('pbxConfig.language')"
|
||||
:options="languageOptions"
|
||||
/>
|
||||
</q-field>
|
||||
<div class="csc-form-actions row justify-center">
|
||||
<q-btn
|
||||
flat
|
||||
v-if="!loading"
|
||||
color="default"
|
||||
icon="clear"
|
||||
@mousedown.native="cancel()"
|
||||
>
|
||||
{{ $t('buttons.cancel') }}
|
||||
</q-btn>
|
||||
<q-btn
|
||||
flat
|
||||
v-if="!loading"
|
||||
color="primary"
|
||||
icon="group"
|
||||
:disable="$v.data.$invalid || !data.language"
|
||||
@click="save()"
|
||||
>
|
||||
{{ $t('pbxConfig.createSoundSet') }}
|
||||
</q-btn>
|
||||
</div>
|
||||
<q-inner-loading :visible="loading">
|
||||
<q-spinner-mat size="60px" color="primary" />
|
||||
</q-inner-loading>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
required,
|
||||
maxLength
|
||||
} from 'vuelidate/lib/validators'
|
||||
import {
|
||||
QBtn,
|
||||
QInnerLoading,
|
||||
QSpinnerMat,
|
||||
QField,
|
||||
QInput,
|
||||
QSelect,
|
||||
QIcon,
|
||||
QToggle
|
||||
} from 'quasar-framework'
|
||||
export default {
|
||||
name: 'csc-pbx-sound-set-add-form',
|
||||
props: [
|
||||
'loading'
|
||||
],
|
||||
components: {
|
||||
QBtn,
|
||||
QInnerLoading,
|
||||
QSpinnerMat,
|
||||
QField,
|
||||
QInput,
|
||||
QSelect,
|
||||
QIcon,
|
||||
QToggle
|
||||
},
|
||||
validations: {
|
||||
data: {
|
||||
name: {
|
||||
required,
|
||||
maxLength: maxLength(64)
|
||||
},
|
||||
description: {
|
||||
required,
|
||||
maxLength: maxLength(255)
|
||||
}
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
data: this.getDefaults(),
|
||||
languageOptions: [
|
||||
{
|
||||
value: 'en',
|
||||
label: 'English'
|
||||
},
|
||||
{
|
||||
value: 'es',
|
||||
label: 'Spanish'
|
||||
},
|
||||
{
|
||||
value: 'ru',
|
||||
label: 'Russian'
|
||||
},
|
||||
{
|
||||
value: 'it',
|
||||
label: 'Italian'
|
||||
},
|
||||
{
|
||||
value: 'ro',
|
||||
label: 'Romanian'
|
||||
},
|
||||
{
|
||||
value: 'de',
|
||||
label: 'German'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
nameErrorMessage() {
|
||||
if (!this.$v.data.name.required) {
|
||||
return this.$t('validationErrors.fieldRequired', {
|
||||
field: this.$t('pbxConfig.name')
|
||||
});
|
||||
}
|
||||
else if (!this.$v.data.name.maxLength) {
|
||||
return this.$t('validationErrors.maxLength', {
|
||||
field: this.$t('pbxConfig.name'),
|
||||
maxLength: this.$v.data.name.$params.maxLength.max
|
||||
});
|
||||
}
|
||||
},
|
||||
descriptionErrorMessage() {
|
||||
if (!this.$v.data.description.required) {
|
||||
return this.$t('validationErrors.fieldRequired', {
|
||||
field: this.$t('pbxConfig.description')
|
||||
});
|
||||
}
|
||||
else if (!this.$v.data.description.maxLength) {
|
||||
return this.$t('validationErrors.maxLength', {
|
||||
field: this.$t('pbxConfig.description'),
|
||||
maxLength: this.$v.data.description.$params.maxLength.max
|
||||
});
|
||||
}
|
||||
},
|
||||
contractDefaultClasses() {
|
||||
let classes = [];
|
||||
if (this.contract_default) {
|
||||
classes.push('csc-toggle-enabled');
|
||||
}
|
||||
else {
|
||||
classes.push('csc-toggle-disabled');
|
||||
}
|
||||
return classes;
|
||||
},
|
||||
loadFilesClasses() {
|
||||
let classes = [];
|
||||
if (this.copy_from_default) {
|
||||
classes.push('csc-toggle-enabled');
|
||||
}
|
||||
else {
|
||||
classes.push('csc-toggle-disabled');
|
||||
}
|
||||
return classes;
|
||||
},
|
||||
loopplayClasses() {
|
||||
let classes = [];
|
||||
if (this.loopplay) {
|
||||
classes.push('csc-toggle-enabled');
|
||||
}
|
||||
else {
|
||||
classes.push('csc-toggle-disabled');
|
||||
}
|
||||
return classes;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getDefaults() {
|
||||
return {
|
||||
name: '',
|
||||
loopplay: false,
|
||||
replace_existing: false,
|
||||
language: 'en',
|
||||
contract_default: false,
|
||||
copy_from_default: false,
|
||||
description: ''
|
||||
}
|
||||
},
|
||||
cancel() {
|
||||
this.$emit('cancel');
|
||||
},
|
||||
save() {
|
||||
this.$emit('save', this.data);
|
||||
},
|
||||
reset() {
|
||||
this.data = this.getDefaults();
|
||||
this.$v.$reset();
|
||||
},
|
||||
toggleLoadFiles() {
|
||||
this.data.language = 'en';
|
||||
this.data.loopplay = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" rel="stylesheet/stylus">
|
||||
@import '../../../themes/quasar.variables.styl';
|
||||
</style>
|
Loading…
Reference in new issue