<template>
  <div>
    <div class="control">
      <label class="control__label control__label--small">{{
        $t('fieldFormulaNumberSubForm.typeLabel')
      }}</label>
      <div class="control__elements">
        <Dropdown
          :class="{ 'dropdown--error': $v.numberType.$error }"
          :value="numberType"
          @input="changeNumberType($event)"
          @hide="$v.numberType.$touch()"
        >
          <DropdownItem
            :name="$t('fieldFormulaNumberSubForm.integer') + ' (1)'"
            value="INTEGER"
          ></DropdownItem>
          <DropdownItem
            :name="$t('fieldFormulaNumberSubForm.decimal') + ' (1.0)'"
            value="DECIMAL"
          ></DropdownItem>
        </Dropdown>
      </div>
    </div>
    <div v-show="numberType === 'DECIMAL'" class="control">
      <label class="control__label control__label--small">{{
        $t('fieldFormulaNumberSubForm.decimalPlacesLabel')
      }}</label>
      <div class="control__elements">
        <Dropdown
          v-model="values.number_decimal_places"
          :class="{ 'dropdown--error': $v.values.number_decimal_places.$error }"
          @hide="$v.values.number_decimal_places.$touch()"
        >
          <DropdownItem name="1.0" :value="1"></DropdownItem>
          <DropdownItem name="1.00" :value="2"></DropdownItem>
          <DropdownItem name="1.000" :value="3"></DropdownItem>
          <DropdownItem name="1.0000" :value="4"></DropdownItem>
          <DropdownItem name="1.00000" :value="5"></DropdownItem>
        </Dropdown>
      </div>
    </div>
  </div>
</template>

<script>
import { required } from 'vuelidate/lib/validators'

import form from '@baserow/modules/core/mixins/form'

import fieldSubForm from '@baserow/modules/database/mixins/fieldSubForm'

export default {
  name: 'FieldNumberSubForm',
  mixins: [form, fieldSubForm],
  data() {
    return {
      allowedValues: ['number_decimal_places'],
      values: {
        number_decimal_places: 0,
      },
    }
  },
  computed: {
    numberType() {
      return this.values.number_decimal_places === 0 ? 'INTEGER' : 'DECIMAL'
    },
  },
  methods: {
    changeNumberType(newValue) {
      if (newValue === 'INTEGER') {
        this.values.number_decimal_places = 0
      } else {
        this.values.number_decimal_places = 1
      }
    },
  },
  validations: {
    values: {
      number_decimal_places: { required },
    },
    numberType: {
      required,
    },
  },
}
</script>
<i18n>
{
  "en": {
    "fieldFormulaNumberSubForm": {
      "typeLabel": "Number type",
      "integer": "Integer",
      "decimal": "Decimal",
      "decimalPlacesLabel": "Decimal places",
      "allowNegative": "Allow negative"
    }
  },
  "fr": {
    "fieldFormulaNumberSubForm": {
      "typeLabel": "Type numérique",
      "integer": "Entier",
      "decimal": "Décimal",
      "decimalPlacesLabel": "Précision",
      "allowNegative": "Autoriser les nombres négatifs"
    }
  }
}
</i18n>