/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import { TransformMetadata } from "../../../../models/interfaces";
import React, { ChangeEvent } from "react";
import moment from "moment-timezone";
import { EuiFieldNumber, EuiFlexGroup, EuiFlexItem, EuiIcon, EuiFormRow, EuiLink, EuiSelect, EuiTextArea, EuiText } from "@elastic/eui";
import { ScheduleIntervalTimeunitOptions } from "../../CreateTransform/utils/constants";
import ErrorModal from "../components/ErrorModal";
import { ModalConsumer } from "../../../components/Modal";
// TODO: merge with rollup helper to have a common helper
export const renderStatus = (metadata: TransformMetadata | undefined): JSX.Element => {
if (metadata == null || metadata.transform_metadata == null) return
-;
// Notes regarding color options:
// 'subdued' = a shade of black
// 'success' = a shade of green
// 'danger' = a shade of red
// '#DDDDDD' = a shade of grey
let iconColor: "subdued" | "success" | "danger" | "#DDDDDD" | undefined;
let text;
switch (metadata.transform_metadata.status) {
case "failed":
iconColor = "danger";
text = "Error";
return (
{({ onShow }) => onShow(ErrorModal, { metadata })}>{text}}
);
case "finished":
iconColor = "success";
text = "Complete";
break;
case "init":
iconColor = "subdued";
text = "Initializing...";
break;
case "started":
iconColor = "success";
text = "Started";
break;
case "stopped":
iconColor = "#DDDDDD";
text = "Stopped";
break;
default:
return -;
}
return (
{text}
);
};
export const renderEnabled = (isEnabled: boolean): string => {
return isEnabled ? "Enabled" : "Disabled";
};
export const selectInterval = (
interval: number,
intervalTimeunit: string,
intervalError: string,
onChangeInterval: (e: ChangeEvent) => void,
onChangeTimeunit: (value: ChangeEvent) => void
) => (
);
export const selectCronExpression = (
cronExpression: string,
onCronExpressionChange: (e: ChangeEvent) => void,
cronTimeZone: string,
onCronTimeZoneChange: (e: ChangeEvent) => void
) => (
);
export const timezones = moment.tz.names().map((tz) => ({ label: tz, text: tz }));