import * as _ from 'lodash' import { Context } from '@nuxt/types/app' import { AnyJson, DataProviderArgs, EnumChoice, EnumChoices, Provider } from '~/types/interfaces' import BaseProvider from '~/services/dataProvider/provider/baseProvider' import { QUERY_TYPE } from '~/types/enums' class EnumProvider extends BaseProvider implements Provider { constructor (ctx: Context, args: DataProviderArgs) { super(ctx, args) } async invoke (data: AnyJson): Promise { const enums:EnumChoices = [] _.each(data.items, (item, key) => { const entry:EnumChoice = { value: key, label: this.ctx.app.i18n.t(item) as string } enums.push(entry) }) return this.sortEnum(enums) } private sortEnum (enums:EnumChoices) { return enums.sort((a, b) => { if (a.label > b.label) { return 1 } if (a.label < b.label) { return -1 } return 0 }) } static support (args:DataProviderArgs): boolean { return args.type === QUERY_TYPE.ENUM } } export default EnumProvider