adapters.ts 2.6 KB

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