4
0
mirror of https://github.com/AzuraCast/AzuraCast.git synced 2024-06-15 13:46:37 +00:00
AzuraCast/frontend/vue/components/Admin/Permissions/Form/StationForm.vue

77 lines
2.1 KiB
Vue
Raw Normal View History

<template>
<b-tab :title="$gettext('Station Permissions')">
2022-12-10 02:53:10 +00:00
<permissions-form-station-row
2022-12-29 21:15:05 +00:00
v-for="(row, index) in form.permissions.$model.station"
:key="index"
v-model:row="form.permissions.$model.station[index]"
:stations="stations"
:station-permissions="stationPermissions"
@remove="remove(index)"
/>
<b-button-group v-if="hasRemainingStations">
2022-12-29 21:15:05 +00:00
<b-dropdown
size="sm"
variant="outline-primary"
>
<template #button-content>
{{ $gettext('Add Station') }}
</template>
<div style="max-height: 300px; overflow-y: auto;">
2022-12-29 21:15:05 +00:00
<b-dropdown-item-button
v-for="(stationName, stationId) in remainingStations"
:key="stationId"
@click="add(stationId)"
>
{{ stationName }}
</b-dropdown-item-button>
</div>
</b-dropdown>
</b-button-group>
</b-tab>
</template>
<script setup>
2022-12-24 14:26:01 +00:00
import {find, isEmpty, pickBy} from 'lodash';
2022-12-10 02:53:10 +00:00
import PermissionsFormStationRow from "~/components/Admin/Permissions/Form/StationRow.vue";
import {computed} from "vue";
const props = defineProps({
2022-12-30 14:38:34 +00:00
form: {
type: Object,
required: true
},
stations: {
type: Object,
required: true
},
stationPermissions: {
type: Object,
required: true
}
});
2022-12-30 16:44:47 +00:00
const remainingStations = computed(() => {
2022-12-24 14:26:01 +00:00
return pickBy(props.stations, (stationName, stationId) => {
return !find(props.form.permissions.$model.station, {'station_id': stationId});
});
});
const hasRemainingStations = computed(() => {
2022-12-24 14:26:01 +00:00
return !isEmpty(remainingStations.value);
});
2022-12-30 16:44:47 +00:00
const remove = (index) => {
props.form.permissions.$model.station.splice(index, 1);
};
const add = (stationId) => {
props.form.permissions.$model.station.push({
'station_id': stationId,
'permissions': []
});
};
</script>