ffplayout/components/PlayoutConfig.vue
2023-01-11 10:54:25 +01:00

95 lines
4.1 KiB
Vue

<template>
<div>
<div class="container">
<h2 class="pb-4 pt-3">Playout Configuration</h2>
<form v-if="configStore.configPlayout" @submit.prevent="onSubmitPlayout">
<div v-for="(item, key) in configStore.configPlayout" class="mb-2 row" :key="key">
<div class="col-sm-1">
<strong>{{ key }}:</strong>
</div>
<div class="col-sm-11 pb-4 mt-4">
<div v-for="(prop, name) in (item as Record<string, any>)" class="mb-2 row">
<label :for="name" class="col-sm-2 col-form-label">{{ name }}:</label>
<div class="col-sm-10">
<div v-if="name.toString() === 'help_text'" class="pt-2 pb-2">{{ prop }}</div>
<input
v-else-if="name.toString() === 'sender_pass'"
type="password"
class="form-control"
:id="name"
v-model="item[name]"
/>
<textarea
v-else-if="
name.toString() === 'output_param' || name.toString() === 'custom_filter'
"
class="form-control"
:id="name"
v-model="item[name]"
rows="5"
/>
<input
v-else-if="typeof prop === 'number' && prop % 1 === 0"
type="number"
class="form-control"
:id="name"
v-model="item[name]"
style="max-width: 250px"
/>
<input
v-else-if="typeof prop === 'number'"
type="number"
class="form-control"
:id="name"
v-model="item[name]"
step="0.0001"
style="max-width: 250px"
/>
<input
v-else-if="typeof prop === 'boolean'"
type="checkbox"
class="form-check-input mt-2"
:id="name"
v-model="item[name]"
/>
<input v-else type="text" class="form-control" :id="name" v-model="item[name]" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-1" style="min-width: 85px">
<button class="btn btn-primary" type="submit" variant="primary">Save</button>
</div>
</div>
</form>
</div>
</div>
</template>
<script setup lang="ts">
import { useConfig } from '~/stores/config'
import { useIndex } from '~/stores/index'
const configStore = useConfig()
const indexStore = useIndex()
async function onSubmitPlayout() {
const update = await configStore.setPlayoutConfig(configStore.configPlayout)
if (update.status === 200) {
indexStore.alertVariant = 'alert-success'
indexStore.alertMsg = 'Update playout config success!'
} else {
indexStore.alertVariant = 'alert-danger'
indexStore.alertMsg = 'Update playout config failed!'
}
indexStore.showAlert = true
setTimeout(() => {
indexStore.showAlert = false
}, 2000)
}
</script>