ApiDelayHour.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React, { useEffect, useState } from "react";
  2. import { Column } from "@ant-design/plots";
  3. import { put } from "../../../request";
  4. import { StatisticCard } from "@ant-design/pro-components";
  5. interface IApiDelay {
  6. date: string;
  7. value: number;
  8. }
  9. interface IApiDelayResponse {
  10. ok: boolean;
  11. message: string;
  12. data: IApiDelay[];
  13. }
  14. interface IApiRequest {
  15. api: string;
  16. item: string;
  17. }
  18. interface IWidget {
  19. title?: React.ReactNode;
  20. type: "average" | "count" | "delay";
  21. api?: string;
  22. }
  23. const ApiDelayHourWidget = ({ title, type, api = "all" }: IWidget) => {
  24. const [delayData, setDelayData] = useState<IApiDelay[]>([]);
  25. useEffect(() => {
  26. put<IApiRequest, IApiDelayResponse>("/v2/api/10", {
  27. api: api,
  28. item: type,
  29. }).then((json) => {
  30. console.log("data", json.data);
  31. setDelayData(json.data);
  32. });
  33. }, []);
  34. const config = {
  35. data: delayData,
  36. xField: "date",
  37. yField: "value",
  38. seriesField: "",
  39. xAxis: {
  40. label: {
  41. autoHide: true,
  42. autoRotate: false,
  43. },
  44. },
  45. };
  46. return (
  47. <StatisticCard
  48. statistic={{
  49. title: title,
  50. value: "",
  51. suffix: "/ ms",
  52. }}
  53. chart={<Column {...config} height={300} />}
  54. />
  55. );
  56. };
  57. export default ApiDelayHourWidget;