diff --git a/app/components/PriceCalculatorComponent.tsx b/app/components/PriceCalculatorComponent.tsx index 8fba198..87b8f5b 100644 --- a/app/components/PriceCalculatorComponent.tsx +++ b/app/components/PriceCalculatorComponent.tsx @@ -101,204 +101,211 @@ export function PriceCalculatorComponent() {
- {/* Storage size slider */} -
-
- +
+ {/* Left column: sliders */} +
+ {/* Storage size slider */} +
+
+ - - {formatSize(storageSizeGb)} - -
- - setStorageSliderPos(Number(e.target.value))} - /> - -
- {formatSize(MIN_GB_AMOUNT)} - 10 TB -
-
- - {/* Single backup size slider */} -
-
- - - - {formatSize(singleBackupSizeGb)} - -
- -

- - Approximate DB size{" "} - - - - - - - Estimated with ~10x compression ratio typical for database - backups. Can differ based on the database type, structure, - and content. + + {formatSize(storageSizeGb)} - - +

- - ~{formatSize(approximateDbSize)} - -

+ setStorageSliderPos(Number(e.target.value))} + /> - {/* DB size commands */} -
- - - - - How to check DB size? - - -
- {DB_SIZE_COMMANDS.map((cmd, index) => ( -
-

{cmd.label}

-
-
-                        
-                          {cmd.code}
-                        
-                      
- -
-
- ))} +
+ {formatSize(MIN_GB_AMOUNT)} + 10 TB +
-
- setBackupSliderPos(Number(e.target.value))} - /> + {/* Single backup size slider */} +
+
+ -
- 1 GB - 200 GB -
-
+ + {formatSize(singleBackupSizeGb)} + +
- {/* Retention estimation (GFS) */} -
-

- Estimated retention (GFS) -

- -

- Keeps recent backups frequently, older ones less often — broad - time at the lowest cost -

- - {(() => { - const gfs = distributeGfs(backupsFit); - return ( -
-
-

Total backups

-

- {backupsFit} -

-
- -

- It is enough to keep the following amount of backups: -

- -
- {( - [ - ["Daily", gfs.daily], - ["Weekly", gfs.weekly], - ["Monthly", gfs.monthly], - ["Yearly", gfs.yearly], - ] as const - ).map(([label, value]) => ( -
+ + Approximate DB size{" "} + + -

{label}

-

- {value} -

+ + + + + Estimated with ~10x compression ratio typical for + database backups. Can differ based on the database type, + structure, and content. + +
+
+ + + ~{formatSize(approximateDbSize)} + +

+ + {/* DB size commands */} +
+ + + + + How to check DB size? + + +
+ {DB_SIZE_COMMANDS.map((cmd, index) => ( +
+

{cmd.label}

+
+
+                            
+                              {cmd.code}
+                            
+                          
+ +
))}
-
- ); - })()} + -

- You can fine-tune retention values (change daily coutn, keep only - monthly, keep N latest, etc.) -

+ setBackupSliderPos(Number(e.target.value))} + /> + +
+ 1 GB + 200 GB +
+
+
+ + {/* Right column: retention */} +
+ {/* Retention estimation (GFS) */} +
+ {(() => { + const gfs = distributeGfs(backupsFit); + return ( +
+
+

Total backups

+

+ {backupsFit} +

+
+ +
+
+ or +
+
+ +

+ Keeps recent backups frequently, older ones less often — + broad time at the lowest cost. It is enough to keep the + following amount of backups in GFS: +

+ +
+ {( + [ + ["Daily", gfs.daily], + ["Weekly", gfs.weekly], + ["Monthly", gfs.monthly], + ["Yearly", gfs.yearly], + ] as const + ).map(([label, value]) => ( +
+

{label}

+

+ {value} +

+
+ ))} +
+
+ ); + })()} + +

+ You can fine-tune retention values (change daily count, keep + only monthly, keep N latest, etc.) +

+
+
{/* Price display */}