Skip to content

Commit e50899f

Browse files
committed
feat(new tool): Visual Subnet Calculator
Fix CorentinTh#1746
1 parent 4ade15b commit e50899f

28 files changed

Lines changed: 6664 additions & 1 deletion

public/visualsubnetcalc/calc.html

Lines changed: 1377 additions & 0 deletions
Large diffs are not rendered by default.

public/visualsubnetcalc/css/bootstrap.min.css

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/visualsubnetcalc/css/bootstrap.min.css.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/visualsubnetcalc/css/font/bootstrap-icons.css

Lines changed: 2078 additions & 0 deletions
Large diffs are not rendered by default.
172 KB
Binary file not shown.
128 KB
Binary file not shown.
Lines changed: 371 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,371 @@
1+
:root {
2+
/*
3+
Color Palette
4+
https://coolors.co/palette/033270-1368aa-4091c9-9dcee2-fedfd4-f29479-f26a4f-ef3c2d-cb1b16-65010c
5+
--yale-blue: #033270ff;
6+
--green-blue: #1368aaff;
7+
--celestial-blue: #4091c9ff;
8+
--light-blue: #9dcee2ff;
9+
--misty-rose: #fedfd4ff;
10+
--salmon: #f29479ff;
11+
--tomato: #f26a4fff;
12+
--vermilion: #ef3c2dff;
13+
--engineering-orange: #cb1b16ff;
14+
--rosewood: #65010cff;
15+
*/
16+
--split-foreground: #000000;
17+
/* Combination of Salmon/Tomato */
18+
--split-background: #F27F64;
19+
--join-foreground: #000000;
20+
/* Combination of Light/Celestial Blue */
21+
--join-background: #6FB0D6;
22+
23+
/* Color Palettes for subnet highlights
24+
https://coolors.co/palette/f0d7df-f9e0e2-f8eaec-f7ddd9-f7e6da-e3e9dd-c4dbd9-d4e5e3-cae0e4-c8c7d6
25+
https://coolors.co/palette/54478c-2c699a-048ba8-0db39e-16db93-83e377-b9e769-efea5a-f1c453-f29e4c
26+
https://coolors.co/palette/e2e2df-d2d2cf-e2cfc4-f7d9c4-faedcb-c9e4de-c6def1-dbcdf0-f2c6de-f9c6c9
27+
https://coolors.co/palette/54478c-2c699a-048ba8-0db39e-16db93-83e377-b9e769-efea5a-f1c453-f29e4c
28+
https://coolors.co/palette/ffadad-ffd6a5-fdffb6-caffbf-9bf6ff-a0c4ff-bdb2ff-ffc6ff-e6e6e6
29+
*/
30+
--subpal-1-1: #ffadadff;
31+
--subpal-1-2: #ffd6a5ff;
32+
--subpal-1-3: #fdffb6ff;
33+
--subpal-1-4: #caffbfff;
34+
--subpal-1-5: #9bf6ffff;
35+
--subpal-1-6: #a0c4ffff;
36+
--subpal-1-7: #bdb2ffff;
37+
--subpal-1-8: #ffc6ffff;
38+
--subpal-1-9: #e6e6e6ff;
39+
--subpal-1-10: #ffffffff;
40+
}
41+
42+
.table>:not(caption)>*>* {
43+
background-color: unset;
44+
}
45+
46+
#bottom_nav {
47+
height:2rem;
48+
}
49+
50+
#bottom_nav span {
51+
border-bottom:1px black dotted;
52+
}
53+
54+
#whats_new {
55+
cursor:pointer !important;
56+
text-align: right;
57+
width:15rem;
58+
float:right;
59+
}
60+
61+
#whats_new a {
62+
width:15rem;
63+
text-align: right;
64+
text-decoration: none;
65+
border-bottom:1px var(--bs-success) dotted;
66+
}
67+
68+
69+
#copy_url {
70+
cursor:pointer !important;
71+
text-align: center;
72+
width:11rem;
73+
}
74+
75+
#copy_url span {
76+
width:11rem;
77+
text-align: center;
78+
}
79+
80+
#color_palette {
81+
min-width: 0rem;
82+
}
83+
84+
#color_palette #colors_word_close {
85+
line-height: 2rem;
86+
cursor:pointer;
87+
}
88+
89+
#color_palette #colors_word_open {
90+
display:inline-block;
91+
height:2rem;
92+
cursor:pointer;
93+
white-space: nowrap;
94+
}
95+
96+
#color_palette div {
97+
display:inline-block;
98+
height:2rem;
99+
cursor:pointer;
100+
white-space: nowrap;
101+
}
102+
103+
#color_palette div[id^='palette_picker_'] {
104+
width:2rem;
105+
border:1px solid;
106+
}
107+
108+
#color_palette #reset_colors {
109+
padding: 0 0.5rem;
110+
border: 1px solid;
111+
background-color: #f8f9fa;
112+
}
113+
114+
#color_palette #palette_picker_1 {
115+
background-color: var(--subpal-1-1);
116+
}
117+
#color_palette #palette_picker_2 {
118+
background-color: var(--subpal-1-2);
119+
}
120+
#color_palette #palette_picker_3 {
121+
background-color: var(--subpal-1-3);
122+
}
123+
#color_palette #palette_picker_4 {
124+
background-color: var(--subpal-1-4);
125+
}
126+
#color_palette #palette_picker_5 {
127+
background-color: var(--subpal-1-5);
128+
}
129+
#color_palette #palette_picker_6 {
130+
background-color: var(--subpal-1-6);
131+
}
132+
#color_palette #palette_picker_7 {
133+
background-color: var(--subpal-1-7);
134+
}
135+
#color_palette #palette_picker_8 {
136+
background-color: var(--subpal-1-8);
137+
}
138+
#color_palette #palette_picker_9 {
139+
background-color: var(--subpal-1-9);
140+
}
141+
#color_palette #palette_picker_10 {
142+
background-color: var(--subpal-1-10);
143+
}
144+
145+
.container-xxl {
146+
min-width: 576px;
147+
}
148+
149+
#navigation a {
150+
color:#000000;
151+
text-decoration: none;
152+
}
153+
154+
/* Dark mode adjustments */
155+
[data-bs-theme="dark"] #navigation a {
156+
color:#ffffff;
157+
}
158+
159+
[data-bs-theme="dark"] #bottom_nav span {
160+
border-bottom:1px white dotted;
161+
}
162+
163+
[data-bs-theme="dark"] #calc td.split {
164+
background-color: #d9634f;
165+
color: #ffffff;
166+
}
167+
168+
[data-bs-theme="dark"] #calc td.join {
169+
background-color: #4d8fa6;
170+
color: #ffffff;
171+
}
172+
173+
[data-bs-theme="dark"] #calc span.split {
174+
color: #d9634f;
175+
}
176+
177+
[data-bs-theme="dark"] #calc span.join {
178+
color: #4d8fa6;
179+
}
180+
181+
/* Adjust color palette borders for dark mode */
182+
[data-bs-theme="dark"] #color_palette div[id^='palette_picker_'] {
183+
border-color: #dee2e6;
184+
}
185+
186+
/* Dark mode reset button */
187+
[data-bs-theme="dark"] #color_palette #reset_colors {
188+
background-color: #495057;
189+
color: #ffffff;
190+
}
191+
192+
/* Dark mode color palette - darker colors for better contrast with white text */
193+
[data-bs-theme="dark"] #color_palette #palette_picker_1 {
194+
background-color: #8b3a3a; /* Deep red */
195+
}
196+
[data-bs-theme="dark"] #color_palette #palette_picker_2 {
197+
background-color: #8b5a2b; /* Deep orange/brown */
198+
}
199+
[data-bs-theme="dark"] #color_palette #palette_picker_3 {
200+
background-color: #8b7500; /* Deep gold */
201+
}
202+
[data-bs-theme="dark"] #color_palette #palette_picker_4 {
203+
background-color: #2e7d32; /* Deep green */
204+
}
205+
[data-bs-theme="dark"] #color_palette #palette_picker_5 {
206+
background-color: #006064; /* Deep cyan */
207+
}
208+
[data-bs-theme="dark"] #color_palette #palette_picker_6 {
209+
background-color: #1565c0; /* Deep blue */
210+
}
211+
[data-bs-theme="dark"] #color_palette #palette_picker_7 {
212+
background-color: #6a1b9a; /* Deep purple */
213+
}
214+
[data-bs-theme="dark"] #color_palette #palette_picker_8 {
215+
background-color: #880e4f; /* Deep magenta */
216+
}
217+
[data-bs-theme="dark"] #color_palette #palette_picker_9 {
218+
background-color: #424242; /* Deep gray */
219+
}
220+
[data-bs-theme="dark"] #color_palette #palette_picker_10 {
221+
background-color: #616161; /* Medium gray */
222+
}
223+
224+
/* Cloud mode links styling */
225+
.cloud-mode-link {
226+
color: #000;
227+
border-bottom: 1px dotted #000;
228+
text-decoration: none;
229+
}
230+
231+
.cloud-mode-link:hover {
232+
color: #333;
233+
border-bottom-style: solid;
234+
}
235+
236+
/* Dark mode cloud links */
237+
[data-bs-theme="dark"] .cloud-mode-link {
238+
color: #fff;
239+
border-bottom-color: #fff;
240+
}
241+
242+
[data-bs-theme="dark"] .cloud-mode-link:hover {
243+
color: #ddd;
244+
border-bottom-style: solid;
245+
}
246+
247+
#subnet_input #network {
248+
flex-grow: 0;
249+
flex-basis: 11rem;
250+
}
251+
#subnet_input #netsize {
252+
flex-grow: 0;
253+
flex-basis: 4rem;
254+
}
255+
256+
#calc {
257+
vertical-align: middle;
258+
}
259+
260+
#calc>tbody>tr>td, #calc>tbody>tr>th, #calc>tfoot>tr>td, #calc>tfoot>tr>th, #calc>thead>tr>td, #calc>thead>tr>th {
261+
/* Equivalent to p-1 */
262+
padding: 0.25rem;
263+
/* Equivalent to p-2 */
264+
padding-top: 0.25rem;
265+
padding-bottom: 0.25rem;
266+
}
267+
268+
/*
269+
#joinHeader {
270+
border:none;
271+
}
272+
273+
#calc thead {
274+
border-right-width: 1px;
275+
border-bottom-width: 0px;
276+
}*/
277+
278+
#calc span.split {
279+
color: var(--split-background);
280+
}
281+
282+
#calc span.join {
283+
color: var(--join-background);
284+
}
285+
286+
#calc td.split {
287+
background-color: var(--split-background);
288+
color: var(--split-foreground);
289+
cursor: pointer;
290+
min-width: 2.3rem;
291+
width: 1%;
292+
font-size:1rem;
293+
}
294+
295+
#notifyModal .modal-content {
296+
background-color: var(--bs-alert-bg);
297+
}
298+
299+
#calc td.join {
300+
background-color: var(--join-background);
301+
color: var(--join-foreground);
302+
cursor: pointer;
303+
min-width: 2.3rem;
304+
width: 1%;
305+
font-size:1rem;
306+
}
307+
308+
#calc td.split, #calc td.join {
309+
padding: 0;
310+
}
311+
312+
#calc td.split span, #calc td.join span {
313+
padding-right: 0.4rem;
314+
}
315+
#calc .note {
316+
padding-left:0.5rem;
317+
padding-right:0.5rem;
318+
}
319+
320+
#calc .note label,input {
321+
width: 100%;
322+
}
323+
324+
#calc .row_address {
325+
white-space: nowrap;
326+
padding-left:0.5rem;
327+
padding-right:0.5rem;
328+
}
329+
330+
#calc .row_range {
331+
/* TODO: Make this a checkbox?
332+
white-space: nowrap;
333+
*/
334+
padding-left:0.5rem;
335+
padding-right:0.5rem;
336+
}
337+
338+
#calc .row_usable {
339+
/* TODO: Make this a checkbox?
340+
white-space: nowrap;
341+
*/
342+
padding-left:0.5rem;
343+
padding-right:0.5rem;
344+
}
345+
346+
#calc .row_hosts {
347+
width:1%;
348+
white-space: nowrap;
349+
padding-left:0.5rem;
350+
padding-right:0.5rem;
351+
}
352+
353+
354+
#calc .note input {
355+
border: none !important;
356+
border-color: transparent !important;
357+
background-color: transparent;
358+
}
359+
360+
/* https://stackoverflow.com/a/47245068/606974 */
361+
.rotate {
362+
vertical-align: middle;
363+
text-align: end;
364+
}
365+
.rotate span {
366+
-ms-writing-mode: tb-rl;
367+
-webkit-writing-mode: vertical-rl;
368+
writing-mode: vertical-rl;
369+
white-space: nowrap;
370+
padding-top: 0.25rem;
371+
}
14.7 KB
Binary file not shown.
8.51 KB
Loading
21.9 KB
Loading

0 commit comments

Comments
 (0)