import {AnyJson, DataProviderArgs, EnumChoice, EnumChoices, Provider} from "~/types/interfaces"; import BaseProvider from "~/services/dataProvider/provider/baseProvider"; import {QUERY_TYPE} from "~/types/enums"; import * as _ from "lodash"; import {Context} from "@nuxt/types/app"; 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