| 12345678910111213141516171819202122232425262728293031323334353637 |
- 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<any> {
- 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
|