import { ActionIcon, Badge, Grid, Space, Title } from '@mantine/core'; import React, { useState } from 'react'; import { FaPause, FaPlay, FaStop } from 'react-icons/fa'; import { Service } from '../../js/models'; import { MdOutlineArrowForwardIos } from "react-icons/md" import style from "./ServiceRow.module.scss"; import YesNoModal from '../YesNoModal'; //"status":"stop"/"wait"/"active"/"pause", function ServiceRow({ service, onClick, additional_buttons }:{ service:Service, onClick?:()=>void, additional_buttons?:any }) { let status_color = "gray"; switch(service.status){ case "stop": status_color = "red"; break; case "wait": status_color = "yellow"; break; case "active": status_color = "teal"; break; case "pause": status_color = "cyan"; break; } const [stopModal, setStopModal] = useState(false); const [buttonLoading, setButtonLoading] = useState(false) const stopService = () => { setButtonLoading(true) console.log("Stop this service please!") setButtonLoading(false) } const startService = () => { setButtonLoading(true) console.log("Start this service please!") setButtonLoading(false) } const pauseService = () => { if (service.status === "pause") return setStopModal(true) setButtonLoading(true) console.log("Pause this service please!") setButtonLoading(false) } return <> {service.name} :{service.public_port} {service.internal_port} {"->"} {service.public_port} Status: {service.status} Regex: {service.n_regex} Connections Blocked: {service.n_packets} {additional_buttons} {service.status === "pause"?:} {onClick?:null} setStopModal(false)} action={stopService} opened={stopModal} /> > } export default ServiceRow;