enumProvider.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import {AnyJson, DataProviderArgs, EnumChoice, EnumChoices, Provider} from "~/types/interfaces";
  2. import BaseProvider from "~/services/dataProvider/provider/baseProvider";
  3. import {QUERY_TYPE} from "~/types/enums";
  4. import * as _ from "lodash";
  5. import {Context} from "@nuxt/types/app";
  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)
  24. return 1;
  25. if (a.label < b.label)
  26. return -1;
  27. return 0;
  28. });
  29. }
  30. static support(args:DataProviderArgs): boolean{
  31. return args.type === QUERY_TYPE.ENUM
  32. }
  33. }
  34. export default EnumProvider