element()

in src/ui/editor/complex/AArrayGrid.tsx [20:67]


  element() {
    const schema = this.props.schema;

    if (!schema.arrayMember) {
      return MUtil.error("arrayMember未定义", schema);
    }

    const members = schema.arrayMember.objectFields  // 成员是复杂结构
      || [{ name: undefined, ...schema.arrayMember }]; // 成员是简单结构
    // if(!members) {
    //   return MUtil.error("AArrayGrid只适用于对象数组", schema);
    // }

    let data = super.getValue();
    if (!_.isArray(data)) { // 只接受数组
      data = [];
    }

    const cols = 1 + members.length;

    //let headTh = [<td key=":操作栏" width="40px" align="center" style={{backgroundImage: "linear-gradient(to bottom left, transparent calc(50% - 1px), #d3d3d3, transparent calc(50% + 1px))"}}></td>]

    let rows = [];
    for (let idx = 0; idx < data.length; idx++) {
      const i = idx;
      rows.push(<tr key={i}>
        {/* 各个字段 */}
        {
          members.map((f, idx) =>
            <td key={f.name + idx}>
              <MFieldViewer key={this.state.ctrlVersion + "." + f.name} parent={schema} morph={this.props.morph} schema={f} database={data} path={MUtil.jsonPath("[" + i + "]", f.name)} hideBorder={true} afterChange={(path, v, final): void => {
                super.changeValueEx(data, false, final);
              }} />
            </td>)
        }

        {/* 操作栏 */}
        <td key=":option" align="center">
          <CaretUpOutlined style={{ display: "block" }} hidden={data.length <= 1} onClick={() => {
            if (i === 0) {
              message.warn("已经到顶了");
            } else {
              const prev = data[i - 1];
              data[i - 1] = data[i];
              data[i] = prev;
              super.changeValueEx(data, true, true);
            }
          }} />