1
0

adapters.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import _ from 'lodash-es';
  2. import { ModuleData, ShowStyle } from './types';
  3. import { ModulePositionMap, ModuleSizeMap } from './options';
  4. /** 将原本的 formData 格式化为 api.saveOrUpdate 需要的格式 */
  5. export function parseFormDataToParams(formData: Record<string, number | string | undefined>) {
  6. const params = {};
  7. _.forEach(formData, (v: string | undefined, k) => {
  8. if (!v) return;
  9. return _.set(params, k, v);
  10. });
  11. return params;
  12. }
  13. /** 将 api.list 返回的数据格式化,格式化之后可以支持对应的表单使用,该方法会修改源数据 */
  14. export function parseModuleData(listData: { moduleData: ModuleData; showStyle: ShowStyle }) {
  15. _.forEach(listData.showStyle, (v, k) => {
  16. listData[`showStyle.${k}`] = _.get(
  17. {
  18. ...ModuleSizeMap,
  19. ...ModulePositionMap,
  20. },
  21. v,
  22. v
  23. );
  24. });
  25. return listData;
  26. }
  27. /** 根据配置中的 formatter 将文本格式并返回 */
  28. export function getFormattedText(data: any, formatter: string, defaultValue?: any): string {
  29. // e.g. 'pre${prop[0].name}suf' => ['pre${prop[0].name}suf', 'prop[0].name']
  30. const exp = /\$\{([\w|\.|\[|\]]*)\}/g;
  31. const res = exp.exec(formatter);
  32. if (!res) return formatter;
  33. const [__, prop] = res;
  34. const val = defaultValue === undefined ? '-' : defaultValue;
  35. return formatter.replace(exp, _.get(data, prop, val));
  36. }
  37. /** 获取 formatter 需要取的源 prop,用于在一些不支持 formatter 的组件中使用 */
  38. export function getRawProp(formatter: string): string {
  39. // e.g. 'pre${prop[0].name}suf' => ['pre${prop[0].name}suf', 'prop[0].name']
  40. const exp = /\$\{([\w|\.|\[|\]]*)\}/g;
  41. const res = exp.exec(formatter);
  42. if (!res) return '';
  43. const [__, prop] = res;
  44. return prop;
  45. }