index.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import {isBasicData, isNull} from "planning-tools";
  2. import {IRenderProcessor, isNameValue, isNgxModuleValue, NgxModuleData, KeyValue, ProcessorData} from "../input.ts";
  3. import {isBoolean} from "lodash";
  4. /**
  5. * 渲染基础类型的数据,int,string,bool
  6. * @param lines
  7. * @param k
  8. * @param value
  9. */
  10. export const renderBasicData = (lines: string[], k: string, value: any)=>{
  11. if (!isBasicData(value)){
  12. return false
  13. }
  14. if (isBoolean(value)){
  15. value = value ? 'on': 'off'
  16. }
  17. lines.push(`${k} ${value};`)
  18. return true
  19. }
  20. /**
  21. * 自定义输入项的通用渲染规则,
  22. * @param values
  23. * @param processor 自定义渲染方法,仅能处理一级,别搞多
  24. */
  25. export const renderInputLines = (values: any, processor?: IRenderProcessor) => {
  26. console.log('renderLines',values)
  27. const lines: string[] = [];
  28. const httpLines:string[] = [];
  29. Object.keys(values).forEach(k=>{
  30. let value = values[k];
  31. if (isNull(value)){
  32. return;
  33. }
  34. const processData: ProcessorData = {
  35. lines,
  36. httpLines,
  37. key: k,
  38. value: value
  39. }
  40. if (processor?.(processData)){
  41. return;
  42. }
  43. if (isNgxModuleValue(value)){
  44. const ngxData = value as NgxModuleData
  45. ngxData.lines?.forEach((item: string)=>lines.push(`${item}`))
  46. ngxData.http?.forEach(line=>httpLines.push(line))
  47. return;
  48. }
  49. if (renderBasicData(lines,k,value)){
  50. return;
  51. }
  52. if (Array.isArray(value) && value.length){
  53. const firstValue = value[0]
  54. if (isNgxModuleValue(firstValue)){
  55. value.forEach((data: NgxModuleData)=>{
  56. data.http?.forEach(line=>httpLines.push(line))
  57. data.lines?.forEach(line=>lines.push(`${line}`))
  58. })
  59. }else if (isNameValue(firstValue)){
  60. value.forEach((data: KeyValue)=>{
  61. lines.push(`${data.name} ${data.value};`)
  62. })
  63. }else if (isBasicData(firstValue)){
  64. value = value.join(' ')
  65. lines.push(`${k} ${value};`)
  66. }
  67. }else {
  68. console.warn('data format not valid', k, value)
  69. }
  70. })
  71. return { lines, httpLines}
  72. }