public renderInferences()

in src/app/views/file_view/export_view.tsx [475:714]


  public renderInferences() {
    const template = this.state.template;
    if (template.inference.length == 0) {
      return <p>{strings.core.none}</p>;
    }
    return (
      template.inference
        // Only show axis and scale inferences
        .filter((inference) => inference.axis || inference.scale)
        // eslint-disable-next-line
        .map((inference, index) => {
          let descriptionMin: string;
          let descriptionMax: string;
          const object = findObjectById(
            this.props.store.chart,
            inference.objectID
          );
          const temaplteObject = findObjectById(
            template.specification,
            inference.objectID
          );
          const objectName = object.properties.name;
          if (inference.scale) {
            descriptionMin = strings.fileExport.inferScaleMin(objectName);
            descriptionMax = strings.fileExport.inferScaleMax(objectName);
          }
          if (inference.axis) {
            descriptionMin = strings.fileExport.inferAxisMin(
              objectName,
              inference.axis.property.toString()
            );
            descriptionMax = strings.fileExport.inferAxisMax(
              objectName,
              inference.axis.property.toString()
            );
          }
          const keyAutoDomainMin = "autoDomainMin";
          const keyAutoDomainMax = "autoDomainMax";

          let onClickAutoDomainMin = noop;

          let onClickAutoDomainMax = noop;

          let getAutoDomainMinPropertyValue: () => boolean = null;

          let getAutoDomainMaxPropertyValue: () => boolean = null;

          if (inference.axis) {
            if (
              (object.properties[inference.axis.property as string] as any)[
                keyAutoDomainMax
              ] === undefined
            ) {
              this.props.store.dispatcher.dispatch(
                new Actions.SetObjectProperty(
                  object,
                  inference.axis.property as string,
                  keyAutoDomainMax,
                  true,
                  true,
                  true
                )
              );
              temaplteObject.properties[keyAutoDomainMax] = true;
              inference.autoDomainMax = true;
            } else {
              inference.autoDomainMax = (object.properties[
                inference.axis.property as string
              ] as any)[keyAutoDomainMax] as boolean;
            }

            onClickAutoDomainMax = () => {
              this.props.store.dispatcher.dispatch(
                new Actions.SetObjectProperty(
                  object,
                  inference.axis.property as string,
                  keyAutoDomainMax,
                  !((object.properties[
                    inference.axis.property as string
                  ] as any)[keyAutoDomainMax] as boolean),
                  true,
                  true
                )
              );
              this.setState({ template });
            };
            getAutoDomainMaxPropertyValue = () => {
              return (object.properties[
                inference.axis.property as string
              ] as any)[keyAutoDomainMax] as boolean;
            };
          }
          if (inference.scale) {
            if (object.properties[keyAutoDomainMax] === undefined) {
              this.props.store.dispatcher.dispatch(
                new Actions.SetObjectProperty(
                  object,
                  keyAutoDomainMax,
                  null,
                  true,
                  true,
                  true
                )
              );
              temaplteObject.properties[keyAutoDomainMax] = true;
              inference.autoDomainMax = true;
            } else {
              inference.autoDomainMax = temaplteObject.properties[
                keyAutoDomainMax
              ] as boolean;
            }

            onClickAutoDomainMax = () => {
              this.props.store.dispatcher.dispatch(
                new Actions.SetObjectProperty(
                  object,
                  keyAutoDomainMax,
                  null,
                  !object.properties[keyAutoDomainMax],
                  true,
                  true
                )
              );
              this.setState({ template });
            };
            getAutoDomainMaxPropertyValue = () => {
              return object.properties[keyAutoDomainMax] as boolean;
            };
          }

          if (inference.axis) {
            if (
              (object.properties[inference.axis.property as string] as any)[
                keyAutoDomainMin
              ] === undefined
            ) {
              this.props.store.dispatcher.dispatch(
                new Actions.SetObjectProperty(
                  object,
                  inference.axis.property as string,
                  keyAutoDomainMin,
                  true,
                  true,
                  true
                )
              );
              temaplteObject.properties[keyAutoDomainMin] = true;
              inference.autoDomainMin = true;
            } else {
              inference.autoDomainMin = (object.properties[
                inference.axis.property as string
              ] as any)[keyAutoDomainMin] as boolean;
            }

            onClickAutoDomainMin = () => {
              this.props.store.dispatcher.dispatch(
                new Actions.SetObjectProperty(
                  object,
                  inference.axis.property as string,
                  keyAutoDomainMin,
                  !((object.properties[
                    inference.axis.property as string
                  ] as any)[keyAutoDomainMin] as boolean),
                  true,
                  true
                )
              );
              this.setState({ template });
            };
            getAutoDomainMinPropertyValue = () => {
              return (object.properties[
                inference.axis.property as string
              ] as any)[keyAutoDomainMin] as boolean;
            };
          }
          if (inference.scale) {
            if (object.properties[keyAutoDomainMin] === undefined) {
              this.props.store.dispatcher.dispatch(
                new Actions.SetObjectProperty(
                  object,
                  keyAutoDomainMin,
                  null,
                  true,
                  true,
                  true
                )
              );
              temaplteObject.properties[keyAutoDomainMin] = true;
              inference.autoDomainMin = true;
            } else {
              inference.autoDomainMin = object.properties[
                keyAutoDomainMin
              ] as boolean;
            }

            onClickAutoDomainMin = () => {
              this.props.store.dispatcher.dispatch(
                new Actions.SetObjectProperty(
                  object,
                  keyAutoDomainMin,
                  null,
                  !object.properties[keyAutoDomainMin],
                  true,
                  true
                )
              );
              this.setState({ template });
            };
            getAutoDomainMinPropertyValue = () => {
              return object.properties[keyAutoDomainMin] as boolean;
            };
          }

          return (
            <React.Fragment key={index}>
              <div className="el-inference-item" onClick={onClickAutoDomainMin}>
                <SVGImageIcon
                  url={
                    getAutoDomainMinPropertyValue()
                      ? R.getSVGIcon("checkbox/checked")
                      : R.getSVGIcon("checkbox/empty")
                  }
                />
                <span className="el-text">{descriptionMin}</span>
              </div>
              <div className="el-inference-item" onClick={onClickAutoDomainMax}>
                <SVGImageIcon
                  url={
                    getAutoDomainMaxPropertyValue()
                      ? R.getSVGIcon("checkbox/checked")
                      : R.getSVGIcon("checkbox/empty")
                  }
                />
                <span className="el-text">{descriptionMax}</span>
              </div>
            </React.Fragment>
          );
        })
    );
  }