github.com/minio/console@v1.4.1/web-app/src/screens/Console/Dashboard/Prometheus/Widgets/LayoutUtil.tsx (about)

     1  // This file is part of MinIO Console Server
     2  // Copyright (c) 2021 MinIO, Inc.
     3  //
     4  // This program is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Affero General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // This program is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  // GNU Affero General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Affero General Public License
    15  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    16  
    17  import { Box } from "mds";
    18  import { CSSObject } from "styled-components";
    19  import { breakPoints } from "mds";
    20  
    21  export type DLayoutColumnProps = {
    22    componentId: number;
    23    sx?: CSSObject;
    24  };
    25  export type DLayoutRowProps = {
    26    sx?: CSSObject;
    27    columns: DLayoutColumnProps[];
    28  };
    29  
    30  export const summaryPanelsLayout: DLayoutRowProps[] = [
    31    {
    32      sx: {
    33        minWidth: 0,
    34        display: "grid",
    35        gap: "30px",
    36        gridTemplateColumns: "1fr 1fr 1fr 1fr",
    37        [`@media (max-width: ${breakPoints.sm}px)`]: {
    38          gridTemplateColumns: "1fr",
    39        },
    40        [`@media (max-width: ${breakPoints.md}px)`]: {
    41          gridTemplateColumns: "1fr 1fr",
    42        },
    43      },
    44      columns: [
    45        {
    46          componentId: 66,
    47        },
    48        {
    49          componentId: 44,
    50        },
    51        {
    52          componentId: 500,
    53        },
    54        {
    55          componentId: 501,
    56        },
    57      ],
    58    },
    59    {
    60      sx: {
    61        display: "grid",
    62        minWidth: 0, // important to avoid css grid blow out.
    63        gap: "30px",
    64        gridTemplateColumns: "1fr 1fr",
    65        [`@media (max-width: ${breakPoints.md}px)`]: {
    66          gridTemplateColumns: "1fr",
    67        },
    68      },
    69      columns: [
    70        {
    71          componentId: 50,
    72        },
    73        {
    74          componentId: 502,
    75        },
    76      ],
    77    },
    78    {
    79      sx: {
    80        display: "grid",
    81        minWidth: 0,
    82        gap: "30px",
    83        gridTemplateColumns: "1fr 1fr 1fr",
    84        [`@media (max-width: ${breakPoints.md}px)`]: {
    85          gridTemplateColumns: "1fr",
    86        },
    87      },
    88      columns: [
    89        {
    90          componentId: 80,
    91        },
    92        {
    93          componentId: 81,
    94        },
    95        {
    96          componentId: 1,
    97        },
    98      ],
    99    },
   100    {
   101      sx: {
   102        display: "grid",
   103        minWidth: 0,
   104        gap: "30px",
   105        gridTemplateColumns: "1fr 1fr",
   106        [`@media (max-width: ${breakPoints.md}px)`]: {
   107          gridTemplateColumns: "1fr",
   108        },
   109      },
   110      columns: [
   111        {
   112          componentId: 68,
   113        },
   114        {
   115          componentId: 52,
   116        },
   117      ],
   118    },
   119    {
   120      sx: {
   121        display: "grid",
   122        minWidth: 0,
   123        gap: "30px",
   124        gridTemplateColumns: "1fr 1fr",
   125        [`@media (max-width: ${breakPoints.md}px)`]: {
   126          gridTemplateColumns: "1fr",
   127        },
   128      },
   129      columns: [
   130        {
   131          componentId: 63,
   132        },
   133        {
   134          componentId: 70,
   135        },
   136      ],
   137    },
   138  ];
   139  
   140  export const trafficPanelsLayout: DLayoutRowProps[] = [
   141    {
   142      sx: {
   143        display: "grid",
   144        gridTemplateColumns: "1fr",
   145        gap: "30px",
   146      },
   147      columns: [
   148        {
   149          componentId: 60,
   150        },
   151      ],
   152    },
   153    {
   154      sx: {
   155        display: "grid",
   156        minWidth: 0,
   157        gap: "30px",
   158        gridTemplateColumns: "1fr 1fr",
   159        [`@media (max-width: ${breakPoints.md}px)`]: {
   160          gridTemplateColumns: "1fr",
   161        },
   162      },
   163      columns: [
   164        {
   165          componentId: 71,
   166          sx: {
   167            flex: 1,
   168            width: "50%",
   169            flexShrink: 0,
   170          },
   171        },
   172        {
   173          componentId: 17,
   174          sx: {
   175            flex: 1,
   176            width: "50%",
   177            flexShrink: 0,
   178          },
   179        },
   180      ],
   181    },
   182    {
   183      sx: {
   184        display: "grid",
   185        gridTemplateColumns: "1fr",
   186        gap: "30px",
   187      },
   188      columns: [
   189        {
   190          componentId: 73,
   191        },
   192      ],
   193    },
   194  ];
   195  
   196  export const resourcesPanelsLayout: DLayoutRowProps[] = [
   197    {
   198      sx: {
   199        display: "grid",
   200        minWidth: 0,
   201        gridTemplateColumns: "1fr 1fr",
   202        gap: "30px",
   203      },
   204      columns: [
   205        {
   206          componentId: 76,
   207        },
   208        {
   209          componentId: 77,
   210        },
   211      ],
   212    },
   213    {
   214      sx: {
   215        display: "grid",
   216        minWidth: 0,
   217        gridTemplateColumns: "1fr 1fr",
   218        gap: "30px",
   219      },
   220      columns: [
   221        {
   222          componentId: 82,
   223        },
   224        {
   225          componentId: 74,
   226        },
   227      ],
   228    },
   229  ];
   230  export const resourcesPanelsLayoutAdvanced: DLayoutRowProps[] = [
   231    {
   232      sx: {
   233        display: "grid",
   234        minWidth: 0,
   235        gridTemplateColumns: "1fr 1fr",
   236        gap: "30px",
   237      },
   238      columns: [
   239        {
   240          componentId: 11,
   241        },
   242        {
   243          componentId: 8,
   244        },
   245      ],
   246    },
   247  ];
   248  
   249  export const RowPanelLayout = ({ children }: { children: any }) => {
   250    return (
   251      <Box
   252        sx={{
   253          display: "grid",
   254          gridTemplateColumns: "1fr",
   255          gap: "30px",
   256        }}
   257      >
   258        {children}
   259      </Box>
   260    );
   261  };