/* * 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 }));