enumProvider.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import * as _ from 'lodash'
  2. import { Context } from '@nuxt/types/app'
  3. import { AnyJson, DataProviderArgs, EnumChoice, EnumChoices, Provider } from '~/types/interfaces'
  4. import BaseProvider from '~/services/dataProvider/provider/baseProvider'
  5. import { QUERY_TYPE } from '~/types/enums'
  6. class EnumProvider extends BaseProvider implements Provider {
  7. constructor (ctx: Context, args: DataProviderArgs) {
  8. super(ctx, args)
  9. }
  10. async invoke (data: AnyJson): Promise<any> {
  11. const enums:EnumChoices = []
  12. _.each(data.items, (item, key) => {
  13. const entry:EnumChoice = {
  14. value: key,
  15. label: this.ctx.app.i18n.t(item) as string
  16. }
  17. enums.push(entry)
  18. })
  19. return this.sortEnum(enums)
  20. }
  21. private sortEnum (enums:EnumChoices) {
  22. return enums.sort((a, b) => {
  23. if (a.label > b.label) { return 1 }
  24. if (a.label < b.label) { return -1 }
  25. return 0
  26. })
  27. }
  28. static support (args:DataProviderArgs): boolean {
  29. return args.type === QUERY_TYPE.ENUM
  30. }
  31. }
  32. export default EnumProvider