<template>
	<div class="fullpage">
		<a @click="back()" class="close">
			<icon :icon="['far', 'times-circle']"/>
		</a>
		<h3>Create a new label</h3>
		<form @keyup.esc="back()" @submit.prevent="newlabel">
			<div class="field is-grouped">
				<p class="control is-expanded" v-bind:class="{ 'is-loading': labelService.loading }">
					<input
						:class="{ 'disabled': labelService.loading }"
						class="input"
						placeholder="The label title goes here..." type="text"
						v-focus
						v-model="label.title"/>
				</p>
				<p class="control">
					<button class="button is-primary noshadow" type="submit">
						<span class="icon is-small">
							<icon icon="plus"/>
						</span>
						Add
					</button>
				</p>
			</div>
			<p class="help is-danger" v-if="showError && label.title === ''">
				Please specify a title.
			</p>
		</form>
	</div>
</template>

<script>
import labelModel from '../../models/label'
import labelService from '../../services/label'
import {IS_FULLPAGE} from '@/store/mutation-types'
import LabelModel from '../../models/label'
import LabelService from '../../services/label'

export default {
	name: 'NewLabel',
	data() {
		return {
			labelService: labelService,
			label: labelModel,
			showError: false,
		}
	},
	created() {
		this.labelService = new LabelService()
		this.label = new LabelModel()
		this.$store.commit(IS_FULLPAGE, true)
	},
	mounted() {
		this.setTitle('Create a new label')
	},
	methods: {
		newlabel() {

			if (this.label.title === '') {
				this.showError = true
				return
			}
			this.showError = false

			this.labelService.create(this.label)
				.then(response => {
					this.$router.push({name: 'labels.index', params: {id: response.id}})
					this.success({message: 'The label was successfully created.'}, this)
				})
				.catch(e => {
					this.error(e, this)
				})
		},
		back() {
			this.$router.go(-1)
		},
	},
}
</script>