AzuraCast/frontend/vue/station_playlists/form/PlaylistFormBasicInfo.vue

233 lines
13 KiB
Vue

<template>
<b-tab :title="langTabTitle" active>
<b-form-group>
<b-row>
<b-form-group class="col-md-6" label-for="form_edit_name">
<template v-slot:label>
<translate key="lang_form_edit_name">Playlist Name</translate>
</template>
<b-form-input id="form_edit_name" type="text" v-model="form.name.$model"
:state="form.name.$dirty ? !form.name.$error : null"></b-form-input>
<b-form-invalid-feedback>
<translate key="lang_error_required">This field is required.</translate>
</b-form-invalid-feedback>
</b-form-group>
<b-form-group class="col-md-6" label-for="form_edit_weight">
<template v-slot:label>
<translate key="lang_form_edit_weight">Playlist Weight</translate>
</template>
<template v-slot:description>
<translate key="lang_form_edit_weight_desc">Higher weight playlists are played more frequently compared to other lower-weight playlists.</translate>
</template>
<b-form-select id="form_edit_weight" v-model="form.weight.$model" :options="weightOptions"
:state="form.weight.$dirty ? !form.weight.$error : null"></b-form-select>
<b-form-invalid-feedback>
<translate key="lang_error_required">This field is required.</translate>
</b-form-invalid-feedback>
</b-form-group>
<b-form-group class="col-md-6" label-for="form_edit_is_enabled">
<template v-slot:description>
<translate key="lang_form_edit_is_enabled_desc">If disabled, the playlist will not be included in radio playback, but can still be managed.</translate>
</template>
<b-form-checkbox id="form_edit_is_enabled" v-model="form.is_enabled.$model">
<translate key="lang_form_edit_is_enabled">Is Enabled</translate>
</b-form-checkbox>
</b-form-group>
<b-form-group class="col-md-6" label-for="form_edit_avoid_duplicates">
<template v-slot:description>
<translate key="lang_form_edit_avoid_duplicates_desc">Whether the AutoDJ should attempt to avoid duplicate artists and track titles when playing media from this playlist.</translate>
</template>
<b-form-checkbox id="form_edit_avoid_duplicates" v-model="form.avoid_duplicates.$model">
<translate key="lang_form_edit_avoid_duplicates">Avoid Duplicate Artists/Titles</translate>
</b-form-checkbox>
</b-form-group>
<b-form-group class="col-md-12" label-for="form_edit_include_in_on_demand">
<template v-slot:description>
<translate key="lang_form_edit_include_in_on_demand_desc">If this station has on-demand streaming and downloading enabled, only songs that are in playlists with this setting enabled will be visible.</translate>
</template>
<b-form-checkbox id="form_edit_include_in_on_demand" v-model="form.include_in_on_demand.$model">
<translate key="lang_form_edit_include_in_on_demand">Include in On-Demand Player</translate>
</b-form-checkbox>
</b-form-group>
<b-form-group class="col-md-12" label-for="edit_form_type">
<template v-slot:label>
<translate key="lang_edit_form_type">Playlist Type</translate>
</template>
<b-form-radio-group stacked id="edit_form_type" v-model="form.type.$model">
<b-form-radio value="default">
<translate key="lang_form_type_default">General Rotation</translate>
<translate class="form-text mt-0" key="lang_form_type_default_desc">Standard playlist, shuffles with other standard playlists based on weight.</translate>
</b-form-radio>
<b-form-radio value="once_per_x_songs">
<translate key="lang_form_type_once_per_x_songs">Once per x Songs</translate>
<translate class="form-text mt-0" key="lang_form_type_once_per_x_songs_desc">Play exactly once every $x songs.</translate>
</b-form-radio>
<b-form-radio value="once_per_x_minutes">
<translate key="lang_form_type_once_per_x_minutes">Once per x Minutes</translate>
<translate class="form-text mt-0" key="lang_form_type_once_per_x_minutes_desc">Play exactly once every $x minutes.</translate>
</b-form-radio>
<b-form-radio value="once_per_hour">
<translate key="lang_form_type_once_per_hour">Once per Hour</translate>
<translate class="form-text mt-0" key="lang_form_type_once_per_hour_desc">Play once per hour at the specified minute.</translate>
</b-form-radio>
<b-form-radio value="custom">
<translate key="lang_form_type_custom">Advanced</translate>
<span class="form-text mt-0">
<translate key="lang_form_type_custom_desc">Manually define how this playlist is used in Liquidsoap configuration.</translate>
<a href="https://docs.azuracast.com/en/user-guide/playlists/advanced-playlists" target="_blank">
<translate key="lang_form_type_custom_more">Learn about Advanced Playlists</translate>
</a>
</span>
</b-form-radio>
</b-form-radio-group>
</b-form-group>
</b-row>
</b-form-group>
<b-card v-show="form.type.$model === 'default'" class="mb-3" no-body>
<div class="card-header bg-primary-dark">
<h2 class="card-title">
<translate key="lang_type_default">General Rotation</translate>
</h2>
</div>
<b-card-body>
<b-form-group>
<b-row>
<b-form-group class="col-md-6" label-for="form_edit_include_in_automation">
<template v-slot:description>
<translate key="lang_form_edit_include_in_automation_desc">If auto-assignment is enabled, use this playlist as one of the targets for songs to be redistributed into. This will overwrite the existing contents of this playlist.</translate>
</template>
<b-form-checkbox id="form_edit_include_in_automation" v-model="form.include_in_automation.$model">
<translate key="lang_form_edit_include_in_automation">Include in Automated Assignment</translate>
</b-form-checkbox>
</b-form-group>
</b-row>
</b-form-group>
</b-card-body>
</b-card>
<b-card v-show="form.type.$model === 'once_per_x_songs'" class="mb-3" no-body>
<div class="card-header bg-primary-dark">
<h2 class="card-title">
<translate key="lang_type_once_per_x_songs">Once per x Songs</translate>
</h2>
</div>
<b-card-body>
<b-form-group>
<b-row>
<b-form-group class="col-md-6" label-for="form_edit_play_per_songs">
<template v-slot:label>
<translate key="lang_form_edit_play_per_songs">Number of Songs Between Plays</translate>
</template>
<template v-slot:description>
<translate key="lang_form_edit_play_per_songs_desc">This playlist will play every $x songs, where $x is specified below.</translate>
</template>
<b-form-input id="form_edit_play_per_songs" type="number" min="0" max="150"
v-model="form.play_per_songs.$model"
:state="form.play_per_songs.$dirty ? !form.play_per_songs.$error : null"></b-form-input>
<b-form-invalid-feedback>
<translate key="lang_error_required">This field is required.</translate>
</b-form-invalid-feedback>
</b-form-group>
</b-row>
</b-form-group>
</b-card-body>
</b-card>
<b-card v-show="form.type.$model === 'once_per_x_minutes'" class="mb-3" no-body>
<div class="card-header bg-primary-dark">
<h2 class="card-title">
<translate key="lang_form_type_once_per_x_minutes">Once per x Minutes</translate>
</h2>
</div>
<b-card-body>
<b-form-group>
<b-row>
<b-form-group class="col-md-6" label-for="form_edit_play_per_minutes">
<template v-slot:label>
<translate key="form_edit_play_per_minutes">Number of Minutes Between Plays</translate>
</template>
<template v-slot:description>
<translate key="form_edit_play_per_minutes_desc">This playlist will play every $x minutes, where $x is specified below.</translate>
</template>
<b-form-input id="form_edit_play_per_minutes" type="number" min="0" max="360"
v-model="form.play_per_minutes.$model"
:state="form.play_per_minutes.$dirty ? !form.play_per_minutes.$error : null"></b-form-input>
<b-form-invalid-feedback>
<translate key="lang_error_required">This field is required.</translate>
</b-form-invalid-feedback>
</b-form-group>
</b-row>
</b-form-group>
</b-card-body>
</b-card>
<b-card v-show="form.type.$model === 'once_per_hour'" class="mb-3" no-body>
<div class="card-header bg-primary-dark">
<h2 class="card-title">
<translate key="lang_type_once_per_hour">Once per Hour</translate>
</h2>
</div>
<b-card-body>
<b-form-group>
<b-row>
<b-form-group class="col-md-6" label-for="form_edit_play_per_hour_minute">
<template v-slot:label>
<translate key="lang_form_edit_play_per_hour_minute">Minute of Hour to Play</translate>
</template>
<template v-slot:description>
<translate key="lang_form_edit_play_per_hour_minute_desc">Specify the minute of every hour that this playlist should play.</translate>
</template>
<b-form-input id="form_edit_play_per_hour_minute" type="number" min="0" max="59"
v-model="form.play_per_hour_minute.$model"
:state="form.play_per_hour_minute.$dirty ? !form.play_per_hour_minute.$error : null"></b-form-input>
<b-form-invalid-feedback>
<translate key="lang_error_required">This field is required.</translate>
</b-form-invalid-feedback>
</b-form-group>
</b-row>
</b-form-group>
</b-card-body>
</b-card>
</b-tab>
</template>
<script>
export default {
name: 'PlaylistEditBasicInfo',
props: {
form: Object
},
data () {
let weightOptions = [
{ value: 1, text: '1 - ' + this.$gettext('Low') },
{ value: 2, text: '2' },
{ value: 3, text: '3 - ' + this.$gettext('Default') },
{ value: 4, text: '4' },
{ value: 5, text: '5 - ' + this.$gettext('High') }
];
for (var i = 6; i <= 25; i++) {
weightOptions.push({ value: i, text: i });
}
return {
weightOptions: weightOptions
};
},
computed: {
langTabTitle () {
return this.$gettext('Basic Info');
}
}
};
</script>