2021SC@SDUSC amis-低代码前端框架代码分析四

2021SC@SDUSC amis-低代码前端框架代码分析四

代码分析

compat.js
关于适配性的代码分析

(0, factory_1.addSchemaFilter)(function FormPropsFilter(schema, renderer) {
      if (renderer.component !== FieldSet_1.FieldSetRenderer) {
          return schema;
      }
      if (Array.isArray(schema.controls)) {
          let flag = false;
          let converted = schema.controls.map((control) => {
              if (Array.isArray(control)) {
                  let converted = convertFieldSetTabs2Controls({
                      type: 'group',
                      controls: control
                  });
                  if (converted !== control) {
                      flag = true;
                  }
                  return converted;
              }
              return control;
          });
          if (flag) {
              schema = Object.assign(Object.assign({}, schema), { controls: converted });
          }
      }
      return schema;
  });`

FieldSet 中把 controls 里面的数组用法转成 {type: ‘group’, controls: []},以便于分析,减少错误

{type: 'group', controls: []}
  function convertArray2Hbox(arr) {
      let flag = false;
      let converted = arr.map((item) => {
          if (Array.isArray(item)) {
              flag = true;
              return convertArray2Hbox(item);
          }
          return item;
      });
      if (!flag) {
          converted = arr;
      }
      return {
          type: 'hbox',
          columns: converted
      };
  }

Form 里面的 Tabs 中把 controls 里面的数组用法转成

  (0, factory_1.addSchemaFilter)(function (schema, renderer) {
      if (renderer.component !== Card_1.CardRenderer &&
          renderer.component !== List_1.ListItemRenderer) {
          return schema;
      }
      if (Array.isArray(schema.body)) {
          let flag = false;
          let converted = schema.body.map((item) => {
              if (Array.isArray(item)) {
                  flag = true;
                  return convertArray2Hbox(item);
              }
              return item;
          });
          if (flag) {
              schema = Object.assign(Object.assign({}, schema), { body: converted });
          }
      }
      return schema;
  });

CRUD/List 和 CRUD/Card 的 body 中的数组用法转成 hbox

  (0, factory_1.addSchemaFilter)(function (scheam, renderer) {
      if (renderer.component !== ButtonGroupSelect_1.ButtonGroupControlRenderer) {
          return scheam;
      }
      if (scheam.btnClassName || scheam.btnActiveClassName) {
          scheam = Object.assign(Object.assign({}, scheam), { btnLevel: (0, helper_1.getLevelFromClassName)(scheam.btnClassName), btnActiveLevel: (0, helper_1.getLevelFromClassName)(scheam.btnActiveClassName) });
          delete scheam.btnClassName;
          delete scheam.btnActiveClassName;
      }
      return scheam;
  });

button group 的 btnClassName 和 btnActiveClassName 改成 btnLevel 和 btnActiveLevel 了

总结

这是为了适应版本,以及更好处理数据而做的临时处理,也能更好兼容旧版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值