render()

in public/pages/Transforms/containers/Transforms/TransformSettings.tsx [54:129]


  render() {
    const { groupsShown, aggregationsShown } = this.props;

    const groupItems = () => {
      return groupsShown.map((group, index) => {
        return (
          <EuiFlexItem key={index}>
            <EuiText size="xs">
              <dt>Group by {group.aggregationMethod}</dt>
              <dd>{group.field.label}</dd>
            </EuiText>
          </EuiFlexItem>
        );
      });
    };

    const aggItems = () => {
      return Object.keys(aggregationsShown).map((key, index) => {
        let aggregationType = Object.keys(aggregationsShown[key])[0];
        let sourceField = "";
        if (aggregationType != TRANSFORM_AGG_TYPE.scripted_metric) {
          sourceField = aggregationsShown[key][aggregationType].field;
        } else {
          sourceField = key;
        }

        return (
          <EuiFlexItem key={index}>
            <EuiText size="xs">
              <dt>{aggregationType}()</dt>
              <dd>{sourceField}</dd>
            </EuiText>
          </EuiFlexItem>
        );
      });
    };

    return (
      <ContentPanel bodyStyles={{ padding: "initial" }} title="Transform settings" titleSize="m">
        <div style={{ paddingLeft: "10px" }}>
          <EuiSpacer size="m" />
          <EuiFlexGrid columns={4}>
            {groupItems()}
            {aggItems()}
          </EuiFlexGrid>
          <EuiSpacer size="m" />
        </div>
        <div style={{ padding: "10px" }}>
          <EuiAccordion id={htmlIdGenerator()()} buttonContent="Sample source index and transform result" onClick={this.onClick}>
            <div style={{ padding: "10px" }}>
              <EuiSpacer size={"m"} />

              {/*// TODO: Use the source data preview table from create workflow */}
              <EuiText>
                <h5>Preview result based on sample data</h5>
              </EuiText>
              <EuiSpacer size={"s"} />
              <PreviewTransforms
                onRemoveTransformation={() => {}}
                previewTransform={this.state.previewTransform}
                aggList={[]}
                isReadOnly={true}
              />
            </div>
          </EuiAccordion>
        </div>
      </ContentPanel>
    );
  }

  onClick = async () => {
    // Only call preview when preview transform is empty
    const { previewTransform } = this.state;
    if (!previewTransform.length) await this.previewTransform({ transform: this.props.transformJson.transform });
  };
}