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 };