jsonSchema2MFieldSchema: function()

in src/framework/MUtil.tsx [383:440]


  jsonSchema2MFieldSchema: function (e: JSONSchema6, base: MFieldSchema = { name: "", type: "string" }, template: Partial<MFieldSchema> = {}): MFieldSchema {
    switch (e.type) {
      case 'string':
        if (e.enum) {
          base.type = "enum";
          base.enumFields = base.enumFields ?? e.enum.map(v => ({ value: (v ?? "").toString() }))
        } else {
          base.type = "string"
          base.max = e.maxLength
        }
        break;
      case 'number':
      case 'integer':
        base.type = "int";
        break;
      case 'object':
        base.type = "object"
        base.objectFields = [];
        base.uispec = {
          type: "flowForm",
          layout: MUtil.phoneLike() ? "vertical" : "horizontal",
          comma: ":",
        };
        for (let key in e.properties) {
          let jsmField = e.properties[key];
          let m3Field: MFieldSchema = _.assign({}, template, { name: key, label: key, type: "object" });
          if (!_.isBoolean(jsmField)) {
            m3Field.label = jsmField.title ?? key;
            this.jsonSchema2MFieldSchema(jsmField, m3Field, template);
            base.objectFields.push(m3Field);
          } else {
            m3Field.type = "不支持的json schema:object.properties的value是boolean";
            base.objectFields.push()
          }
        }
        break;
      case 'array':
        base.type = "array"
        base.arrayMember = { label: "", type: "array" };
        if (_.isArray(e.items)) {
          base.arrayMember.type = "不支持的json schema:array.items是数组";
        } else if (_.isBoolean(e.items)) {
          base.arrayMember.type = "不支持的json schema:array.items是boolean";
        } else if (e.items) {
          this.jsonSchema2MFieldSchema(e.items, base, template);
        } else {
          base.arrayMember.type = "不支持的json schema:array.items是undefined";
        }
        break;
      case 'null':
      case 'any':
      case 'boolean':
      default:
        base.type = "不支持的json schema:array.items是" + e.type;
        break;
    }
    return base;
  },