adapters.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import _ from 'lodash-es';
  2. export interface ModuleData {
  3. list?: Record<string, string>;
  4. chart?: Record<string, string>;
  5. }
  6. /** 将原本的 formData 格式化为 api.saveOrUpdate 需要的格式 */
  7. export function parseFormDataToParams(formData: Record<string, number | string | undefined>): ModuleData {
  8. const params = {};
  9. _.forEach(formData, (v: string | undefined, k) => {
  10. // 如果是以 moduleData 打头的数据要特殊处理,因为这是配置的主要项目,表单配置见 ./configuration.data
  11. if (v && k.startsWith('moduleData')) {
  12. _.set(params, k, JSON.parse(v));
  13. } else {
  14. _.set(params, k, v);
  15. }
  16. });
  17. return params;
  18. }
  19. /** 将 api.list 返回的 moduleData 格式化,格式化之后可以支持对应的表单以用,该方法会修改源数据 */
  20. export function parseModuleData(listData: { moduleData: ModuleData }) {
  21. _.forEach(listData.moduleData, (v, k) => {
  22. listData[`moduleData.${k}`] = JSON.stringify(v);
  23. });
  24. return listData;
  25. }
  26. // export function parseModuleDataToConfig(moduleData: ModuleData): {
  27. // chart: { label: string; prop: string }[];
  28. // list: { label: string; prop: string }[];
  29. // };
  30. // export function parseModuleDataToConfig(
  31. // moduleData: ModuleData,
  32. // data: any
  33. // ): {
  34. // chart: { label: string; value: string }[];
  35. // list: { label: string; value: string }[];
  36. // };
  37. /** 将 api.list 返回的 moduleData 格式化为配置对象,如果传入了 data,那么会返回带数据的配置,否则返回默认配置,这些配置通常可用于页面展示 */
  38. // export function parseModuleDataToConfig(moduleData: ModuleData): {
  39. // chart: { label: string; prop: string }[];
  40. // list: { label: string; prop: string }[];
  41. // } {
  42. // // if (data) {
  43. // // return {
  44. // // chart: _.map(_.get(moduleData, 'chart', []), (label, prop) => {
  45. // // return { label, value: _.get(data, prop, '/') };
  46. // // }),
  47. // // list: _.map(_.get(moduleData, 'list', []), (label, prop) => {
  48. // // return { label, value: _.get(data, prop, '/') };
  49. // // }),
  50. // // };
  51. // // }
  52. // return {
  53. // chart: _.map(_.get(moduleData, 'chart', []), (label, prop) => {
  54. // return { label, prop };
  55. // }),
  56. // list: _.map(_.get(moduleData, 'list', []), (label, prop) => {
  57. // return { label, prop };
  58. // }),
  59. // };
  60. // }