@cloud-ru/uikit-product-calculator 0.33.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/CHANGELOG.md +1508 -0
  2. package/LICENSE +201 -0
  3. package/README.md +85 -0
  4. package/package.json +75 -0
  5. package/src/components/Calculator/Calculator.tsx +79 -0
  6. package/src/components/Calculator/index.ts +1 -0
  7. package/src/components/CalculatorContent/CalculatorContent.tsx +38 -0
  8. package/src/components/CalculatorContent/index.ts +1 -0
  9. package/src/components/CalculatorContent/styles.module.scss +79 -0
  10. package/src/components/Catalog/Catalog.tsx +225 -0
  11. package/src/components/Catalog/components/PrivateCardHeader.tsx +63 -0
  12. package/src/components/Catalog/components/index.ts +1 -0
  13. package/src/components/Catalog/components/styles.module.scss +35 -0
  14. package/src/components/Catalog/index.ts +1 -0
  15. package/src/components/Catalog/styles.module.scss +104 -0
  16. package/src/components/Controls/AlertControl/AlertControl.tsx +44 -0
  17. package/src/components/Controls/AlertControl/index.ts +1 -0
  18. package/src/components/Controls/ArrayControl/ArrayControl.tsx +105 -0
  19. package/src/components/Controls/ArrayControl/index.ts +1 -0
  20. package/src/components/Controls/ArrayControl/styles.module.scss +33 -0
  21. package/src/components/Controls/CarouselControl/CarouselControl.tsx +173 -0
  22. package/src/components/Controls/CarouselControl/index.ts +1 -0
  23. package/src/components/Controls/CarouselControl/styles.module.scss +32 -0
  24. package/src/components/Controls/Control/Control.tsx +205 -0
  25. package/src/components/Controls/Control/index.ts +1 -0
  26. package/src/components/Controls/ObjectControl/ObjectControl.tsx +150 -0
  27. package/src/components/Controls/ObjectControl/index.ts +1 -0
  28. package/src/components/Controls/ObjectControl/styles.module.scss +18 -0
  29. package/src/components/Controls/ObjectDecorator/ObjectDecorator.tsx +23 -0
  30. package/src/components/Controls/ObjectDecorator/index.ts +1 -0
  31. package/src/components/Controls/ObjectDecorator/styles.module.scss +15 -0
  32. package/src/components/Controls/SegmentedControl/SegmentedControl.tsx +79 -0
  33. package/src/components/Controls/SegmentedControl/SegmentedControlCard.tsx +38 -0
  34. package/src/components/Controls/SegmentedControl/index.ts +1 -0
  35. package/src/components/Controls/SegmentedControl/styles.module.scss +8 -0
  36. package/src/components/Controls/SelectControl/SelectControl.tsx +172 -0
  37. package/src/components/Controls/SelectControl/index.ts +1 -0
  38. package/src/components/Controls/SelectControl/styles.module.scss +5 -0
  39. package/src/components/Controls/SliderControl/SliderControl.tsx +92 -0
  40. package/src/components/Controls/SliderControl/index.ts +1 -0
  41. package/src/components/Controls/StepperControl/StepperControl.tsx +160 -0
  42. package/src/components/Controls/StepperControl/index.ts +1 -0
  43. package/src/components/Controls/StepperControl/styles.module.scss +16 -0
  44. package/src/components/Controls/TableControl/TableControl.tsx +162 -0
  45. package/src/components/Controls/TableControl/helperComponents/StepperWithAllowedValues.tsx +50 -0
  46. package/src/components/Controls/TableControl/helperComponents/index.ts +1 -0
  47. package/src/components/Controls/TableControl/helperComponents/styles.module.scss +53 -0
  48. package/src/components/Controls/TableControl/index.ts +1 -0
  49. package/src/components/Controls/TableControl/styles.module.scss +104 -0
  50. package/src/components/Controls/ToggleCard/ToggleCard.tsx +46 -0
  51. package/src/components/Controls/ToggleCard/index.ts +1 -0
  52. package/src/components/Controls/ToggleCard/styles.module.scss +11 -0
  53. package/src/components/Controls/ToggleCardsControl/ToggleCardsControl.tsx +93 -0
  54. package/src/components/Controls/ToggleCardsControl/index.ts +1 -0
  55. package/src/components/Controls/ToggleCardsControl/styles.module.scss +40 -0
  56. package/src/components/Controls/ToggleControl/ToggleControl.tsx +59 -0
  57. package/src/components/Controls/ToggleControl/components/SwitchRow.tsx +98 -0
  58. package/src/components/Controls/ToggleControl/components/index.ts +1 -0
  59. package/src/components/Controls/ToggleControl/components/styles.module.scss +110 -0
  60. package/src/components/Controls/ToggleControl/index.ts +1 -0
  61. package/src/components/Controls/ToggleObjectControl/ToggleObjectControl.tsx +111 -0
  62. package/src/components/Controls/ToggleObjectControl/index.ts +1 -0
  63. package/src/components/Controls/ToggleObjectControl/styles.module.scss +13 -0
  64. package/src/components/Controls/constants.ts +16 -0
  65. package/src/components/Controls/index.tsx +26 -0
  66. package/src/components/Controls/types.ts +181 -0
  67. package/src/components/Controls/utils.ts +49 -0
  68. package/src/components/Disclaimer/Disclaimer.tsx +33 -0
  69. package/src/components/Disclaimer/index.ts +1 -0
  70. package/src/components/Disclaimer/styles.module.scss +14 -0
  71. package/src/components/HeaderContainer/index.tsx +32 -0
  72. package/src/components/HeaderContainer/styles.module.scss +24 -0
  73. package/src/components/PriceSummary/PriceSummary.tsx +158 -0
  74. package/src/components/PriceSummary/components/PricePeriodSelect/PricePeriodSelect.tsx +81 -0
  75. package/src/components/PriceSummary/components/PricePeriodSelect/index.ts +1 -0
  76. package/src/components/PriceSummary/components/ProductCard/ProductCard.tsx +85 -0
  77. package/src/components/PriceSummary/components/ProductCard/index.ts +1 -0
  78. package/src/components/PriceSummary/components/ProductCard/styles.module.scss +7 -0
  79. package/src/components/PriceSummary/components/ProductListActions/ProductListActions.tsx +118 -0
  80. package/src/components/PriceSummary/components/ProductListActions/index.ts +1 -0
  81. package/src/components/PriceSummary/components/ProductListActions/styles.module.scss +38 -0
  82. package/src/components/PriceSummary/components/index.ts +3 -0
  83. package/src/components/PriceSummary/hooks.ts +36 -0
  84. package/src/components/PriceSummary/index.ts +1 -0
  85. package/src/components/PriceSummary/styles.module.scss +110 -0
  86. package/src/components/PriceSummary/utils/getTotalPrice.ts +19 -0
  87. package/src/components/PriceSummary/utils/index.ts +2 -0
  88. package/src/components/PriceSummary/utils/transformToProductCardData.ts +36 -0
  89. package/src/components/ProductHeadline/ProductPageHeadline.tsx +134 -0
  90. package/src/components/ProductHeadline/components/PriceCount.tsx +93 -0
  91. package/src/components/ProductHeadline/components/index.ts +1 -0
  92. package/src/components/ProductHeadline/components/styles.module.scss +52 -0
  93. package/src/components/ProductHeadline/index.ts +1 -0
  94. package/src/components/ProductHeadline/styles.module.scss +32 -0
  95. package/src/components/ProductPage/ProductPage.tsx +105 -0
  96. package/src/components/ProductPage/index.ts +1 -0
  97. package/src/components/ProductPage/styles.module.scss +13 -0
  98. package/src/components/Welcome/Welcome.tsx +138 -0
  99. package/src/components/Welcome/index.ts +1 -0
  100. package/src/components/Welcome/styles.module.scss +155 -0
  101. package/src/components/index.ts +3 -0
  102. package/src/config/config.tsx +27 -0
  103. package/src/config/index.ts +2 -0
  104. package/src/config/platforms/advanced/catalog.ts +82 -0
  105. package/src/config/platforms/advanced/constants.ts +23 -0
  106. package/src/config/platforms/advanced/index.ts +5 -0
  107. package/src/config/platforms/advanced/platform.tsx +13 -0
  108. package/src/config/platforms/advanced/product-config/AdvancedCloudBackup.ts +76 -0
  109. package/src/config/platforms/advanced/product-config/AdvancedCloudContainerEngine.tsx +260 -0
  110. package/src/config/platforms/advanced/product-config/AdvancedCloudServer.tsx +526 -0
  111. package/src/config/platforms/advanced/product-config/AdvancedDataAsYouUse.ts +159 -0
  112. package/src/config/platforms/advanced/product-config/AdvancedDataLakeInsight.ts +134 -0
  113. package/src/config/platforms/advanced/product-config/AdvancedDataWarehouseService.ts +94 -0
  114. package/src/config/platforms/advanced/product-config/AdvancedDcsMemcached.ts +69 -0
  115. package/src/config/platforms/advanced/product-config/AdvancedDcsRedis.ts +220 -0
  116. package/src/config/platforms/advanced/product-config/AdvancedDmsKafka.tsx +186 -0
  117. package/src/config/platforms/advanced/product-config/AdvancedDmsRabbitMq.ts +202 -0
  118. package/src/config/platforms/advanced/product-config/AdvancedDocumentDatabase.tsx +323 -0
  119. package/src/config/platforms/advanced/product-config/AdvancedElasticLoadBalance.tsx +252 -0
  120. package/src/config/platforms/advanced/product-config/AdvancedElasticSearch.ts +365 -0
  121. package/src/config/platforms/advanced/product-config/AdvancedFunctionGraph.tsx +65 -0
  122. package/src/config/platforms/advanced/product-config/AdvancedMapReduce.tsx +394 -0
  123. package/src/config/platforms/advanced/product-config/AdvancedMySqlDataBase.ts +417 -0
  124. package/src/config/platforms/advanced/product-config/AdvancedNetwork.ts +146 -0
  125. package/src/config/platforms/advanced/product-config/AdvancedObjectStorage.ts +232 -0
  126. package/src/config/platforms/advanced/product-config/AdvancedPostgreSqlDatabase.ts +402 -0
  127. package/src/config/platforms/advanced/product-config/AdvancedScalableFile.tsx +161 -0
  128. package/src/config/platforms/advanced/product-config/AdvancedSqlDatabase.ts +380 -0
  129. package/src/config/platforms/advanced/product-config/index.ts +21 -0
  130. package/src/config/platforms/advanced/products.ts +267 -0
  131. package/src/config/platforms/evolution/catalog.tsx +107 -0
  132. package/src/config/platforms/evolution/constants.ts +80 -0
  133. package/src/config/platforms/evolution/index.ts +5 -0
  134. package/src/config/platforms/evolution/platform.tsx +13 -0
  135. package/src/config/platforms/evolution/product-config/EvolutionArenadataDb.ts +151 -0
  136. package/src/config/platforms/evolution/product-config/EvolutionArtifactRegistry.ts +57 -0
  137. package/src/config/platforms/evolution/product-config/EvolutionBareMetal.tsx +172 -0
  138. package/src/config/platforms/evolution/product-config/EvolutionCloudServer.tsx +407 -0
  139. package/src/config/platforms/evolution/product-config/EvolutionCloudServerFreeTier.tsx +185 -0
  140. package/src/config/platforms/evolution/product-config/EvolutionCloudServerGpu.tsx +301 -0
  141. package/src/config/platforms/evolution/product-config/EvolutionContainerApps.ts +84 -0
  142. package/src/config/platforms/evolution/product-config/EvolutionContainerAppsFreeTier.ts +29 -0
  143. package/src/config/platforms/evolution/product-config/EvolutionKubernetes.ts +388 -0
  144. package/src/config/platforms/evolution/product-config/EvolutionManagedMetastore.ts +38 -0
  145. package/src/config/platforms/evolution/product-config/EvolutionManagedRedis.ts +161 -0
  146. package/src/config/platforms/evolution/product-config/EvolutionManagedSpark.ts +360 -0
  147. package/src/config/platforms/evolution/product-config/EvolutionManagedTrino.ts +53 -0
  148. package/src/config/platforms/evolution/product-config/EvolutionMlInference.tsx +703 -0
  149. package/src/config/platforms/evolution/product-config/EvolutionPostgreSql.ts +217 -0
  150. package/src/config/platforms/evolution/product-config/EvolutionPublicIp.ts +39 -0
  151. package/src/config/platforms/evolution/product-config/EvolutionSnatGateway.ts +22 -0
  152. package/src/config/platforms/evolution/product-config/EvolutionStorageS3.ts +223 -0
  153. package/src/config/platforms/evolution/product-config/EvolutionStorageS3FreeTier.ts +97 -0
  154. package/src/config/platforms/evolution/product-config/index.ts +17 -0
  155. package/src/config/platforms/evolution/products.ts +260 -0
  156. package/src/config/platforms/index.ts +3 -0
  157. package/src/config/platforms/vmware/catalog.ts +19 -0
  158. package/src/config/platforms/vmware/constants.ts +6 -0
  159. package/src/config/platforms/vmware/index.ts +5 -0
  160. package/src/config/platforms/vmware/platform.tsx +13 -0
  161. package/src/config/platforms/vmware/product-config/VmWareCloudBackup.ts +56 -0
  162. package/src/config/platforms/vmware/product-config/VmWareVirtualDataCenter.ts +309 -0
  163. package/src/config/platforms/vmware/product-config/VmWareVirtualMachinesBackup.ts +58 -0
  164. package/src/config/platforms/vmware/product-config/VmWareVirtualWorkspaces.tsx +210 -0
  165. package/src/config/platforms/vmware/product-config/index.ts +4 -0
  166. package/src/config/platforms/vmware/products.ts +63 -0
  167. package/src/config/styles.module.scss +9 -0
  168. package/src/config/utils/disk.ts +94 -0
  169. package/src/config/utils/diskPostgreSqlMySQL.ts +94 -0
  170. package/src/config/utils/eip.ts +104 -0
  171. package/src/config/utils/index.ts +52 -0
  172. package/src/config/utils/obs.ts +100 -0
  173. package/src/constants.ts +56 -0
  174. package/src/contexts/CalculatorContext.tsx +193 -0
  175. package/src/contexts/ProductContext.ts +25 -0
  176. package/src/contexts/index.ts +2 -0
  177. package/src/hooks/index.ts +6 -0
  178. package/src/hooks/useAdaptive.ts +20 -0
  179. package/src/hooks/useCatalogCardClick.ts +37 -0
  180. package/src/hooks/useProductClick.ts +14 -0
  181. package/src/hooks/useProductDelete.ts +46 -0
  182. package/src/index.ts +6 -0
  183. package/src/services/constants.ts +5 -0
  184. package/src/services/getFetcherFn.ts +57 -0
  185. package/src/services/getInitPrice.ts +64 -0
  186. package/src/services/getOnDownloadFileClick.ts +37 -0
  187. package/src/services/getOnShareClick.ts +56 -0
  188. package/src/services/index.ts +4 -0
  189. package/src/types/CalculatorType.ts +16 -0
  190. package/src/types/CatalogConfig.ts +13 -0
  191. package/src/types/Category.ts +14 -0
  192. package/src/types/FetcherFn.ts +26 -0
  193. package/src/types/FormValues.ts +4 -0
  194. package/src/types/Platform.ts +24 -0
  195. package/src/types/Price.ts +18 -0
  196. package/src/types/Product.ts +39 -0
  197. package/src/types/ProductState.ts +11 -0
  198. package/src/types/State.ts +7 -0
  199. package/src/types/index.ts +10 -0
  200. package/src/utils/filterNonEmptyArrays.ts +13 -0
  201. package/src/utils/formatNumber.ts +5 -0
  202. package/src/utils/getPrice.ts +38 -0
  203. package/src/utils/index.ts +5 -0
  204. package/src/utils/parseKeyToDataTest.ts +14 -0
  205. package/src/utils/value.ts +11 -0
@@ -0,0 +1,260 @@
1
+ import {
2
+ ArenadataDbSVG,
3
+ ArtifactRegistrySVG,
4
+ BareMetalSVG,
5
+ ContainerAppsSVG,
6
+ ElasticCloudServerWithGpuSVG,
7
+ EvolutionComputeSVG,
8
+ ManagedKubernetesSVG,
9
+ ManagedPostgreSqlSVG,
10
+ MetastoreSVG,
11
+ MlInferenceSVG,
12
+ PublicIpSVG,
13
+ RedisSVG,
14
+ S3StorageSVG,
15
+ SnatSVG,
16
+ SparkSVG,
17
+ TrinoSVG,
18
+ } from '@cloud-ru/uikit-product-icons';
19
+
20
+ import { PLATFORM } from '../../../constants';
21
+ import { CatalogConfig } from '../../../types';
22
+ import { EVOLUTION_PRODUCT } from './constants';
23
+ import {
24
+ EVOLUTION_ARENADATA_DB_FORM_CONFIG,
25
+ EVOLUTION_ARTIFACT_REGISTRY,
26
+ EVOLUTION_BARE_METAL_FORM_CONFIG,
27
+ EVOLUTION_CLOUD_SERVER_FORM_CONFIG,
28
+ EVOLUTION_CLOUD_SERVER_FREE_TIER_FORM_CONFIG,
29
+ EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG,
30
+ EVOLUTION_CONTAINER_APPS_CONFIG,
31
+ EVOLUTION_CONTAINER_APPS_FREE_TIER_CONFIG,
32
+ EVOLUTION_KUBERNETES_FORM_CONFIG,
33
+ EVOLUTION_MANAGED_METASTORE_CONFIG,
34
+ EVOLUTION_MANAGED_TRINO_CONFIG,
35
+ EVOLUTION_ML_INFERENCE_FORM_CONFIG,
36
+ EVOLUTION_POSTGRE_SQL_FORM_CONFIG,
37
+ EVOLUTION_PUBLIC_IP_FORM_CONFIG,
38
+ EVOLUTION_SNAT_GATEWAY_FORM_CONFIG,
39
+ EVOLUTION_STORAGE_S3_FORM_CONFIG,
40
+ EVOLUTION_STORAGE_S3_FREE_TIER_FORM_CONFIG,
41
+ } from './product-config';
42
+ import { EVOLUTION_MANAGED_REDIS_CONFIG } from './product-config/EvolutionManagedRedis';
43
+ import { EVOLUTION_MANAGED_SPARK_CONFIG } from './product-config/EvolutionManagedSpark';
44
+
45
+ export const EVOLUTION_PRODUCTS: CatalogConfig['products'] = {
46
+ [EVOLUTION_PRODUCT.EvolutionCloudServer]: {
47
+ id: EVOLUTION_PRODUCT.EvolutionCloudServer,
48
+ platform: PLATFORM.Evolution,
49
+ label: 'Evolution Compute',
50
+ caption: 'Виртуальные машины для развертывания сервисов и приложений',
51
+ icon: EvolutionComputeSVG,
52
+ dataTestId: 'evolutionCloudServer',
53
+ formConfig: EVOLUTION_CLOUD_SERVER_FORM_CONFIG,
54
+ enableChangeProductQuantity: true,
55
+ enableConnectToConsole: true,
56
+ },
57
+ [EVOLUTION_PRODUCT.EvolutionCloudServerFreeTier]: {
58
+ id: EVOLUTION_PRODUCT.EvolutionCloudServerFreeTier,
59
+ platform: PLATFORM.Evolution,
60
+ label: 'Evolution Compute Free Tier',
61
+ caption: 'Бесплатная виртуальная машина в заданной конфигурации',
62
+ formConfig: EVOLUTION_CLOUD_SERVER_FREE_TIER_FORM_CONFIG,
63
+ icon: EvolutionComputeSVG,
64
+ dataTestId: 'evolutionCloudServerFreeTier',
65
+ freeTier: true,
66
+ enableConnectToConsole: true,
67
+ },
68
+ [EVOLUTION_PRODUCT.EvolutionManagedMetastore]: {
69
+ id: EVOLUTION_PRODUCT.EvolutionManagedMetastore,
70
+ platform: PLATFORM.Evolution,
71
+ label: 'Evolution Managed Metastore',
72
+ caption: 'Хранение метаданных с Metastore',
73
+ formConfig: EVOLUTION_MANAGED_METASTORE_CONFIG,
74
+ icon: MetastoreSVG,
75
+ dataTestId: 'evolutionManagedMetastore',
76
+ enableConnectToConsole: true,
77
+ },
78
+ [EVOLUTION_PRODUCT.EvolutionKubernetes]: {
79
+ id: EVOLUTION_PRODUCT.EvolutionKubernetes,
80
+ platform: PLATFORM.Evolution,
81
+ label: 'Evolution Managed Kubernetes',
82
+ caption: 'Управление контейнерными приложениями в кластере Kubernetes',
83
+ formConfig: EVOLUTION_KUBERNETES_FORM_CONFIG,
84
+ icon: ManagedKubernetesSVG,
85
+ dataTestId: 'evolutionKubernetes',
86
+ enableChangeProductQuantity: true,
87
+ enableConnectToConsole: true,
88
+ },
89
+ [EVOLUTION_PRODUCT.EvolutionStorageS3FreeTier]: {
90
+ id: EVOLUTION_PRODUCT.EvolutionStorageS3FreeTier,
91
+ platform: PLATFORM.Evolution,
92
+ label: 'Evolution Object Storage Free Tier',
93
+ caption: 'Ежемесячный объем бесплатных ресурсов в хранилище',
94
+ formConfig: EVOLUTION_STORAGE_S3_FREE_TIER_FORM_CONFIG,
95
+ icon: S3StorageSVG,
96
+ dataTestId: 'evolutionStorageS3FreeTier',
97
+ freeTier: true,
98
+ enableConnectToConsole: true,
99
+ },
100
+ [EVOLUTION_PRODUCT.EvolutionManagedTrino]: {
101
+ id: EVOLUTION_PRODUCT.EvolutionManagedTrino,
102
+ platform: PLATFORM.Evolution,
103
+ label: 'Evolution Managed Trino',
104
+ caption: 'Аналитический SQL-движок Trino',
105
+ formConfig: EVOLUTION_MANAGED_TRINO_CONFIG,
106
+ icon: TrinoSVG,
107
+ dataTestId: 'evolutionManagedTrino',
108
+ enableConnectToConsole: true,
109
+ },
110
+ [EVOLUTION_PRODUCT.EvolutionManagedSpark]: {
111
+ id: EVOLUTION_PRODUCT.EvolutionManagedSpark,
112
+ platform: PLATFORM.Evolution,
113
+ label: 'Evolution Managed Spark',
114
+ caption: 'Распределенная обработка данных в Spark',
115
+ formConfig: EVOLUTION_MANAGED_SPARK_CONFIG,
116
+ icon: SparkSVG,
117
+ dataTestId: 'evolutionManagedSpark',
118
+ enableConnectToConsole: true,
119
+ },
120
+ [EVOLUTION_PRODUCT.EvolutionManagedRedis]: {
121
+ id: EVOLUTION_PRODUCT.EvolutionManagedRedis,
122
+ platform: PLATFORM.Evolution,
123
+ label: 'Evolution Managed Redis®',
124
+ caption: 'Управляемая база данных Redis®',
125
+ formConfig: EVOLUTION_MANAGED_REDIS_CONFIG,
126
+ icon: RedisSVG,
127
+ dataTestId: 'EvolutionManagedRedis',
128
+ enableConnectToConsole: true,
129
+ },
130
+ [EVOLUTION_PRODUCT.EvolutionStorageS3]: {
131
+ id: EVOLUTION_PRODUCT.EvolutionStorageS3,
132
+ platform: PLATFORM.Evolution,
133
+ label: 'Evolution Object Storage',
134
+ caption: 'Масштабируемое хранилище S3 для всех типов данных',
135
+ icon: S3StorageSVG,
136
+ formConfig: EVOLUTION_STORAGE_S3_FORM_CONFIG,
137
+ dataTestId: 'evolutionStorageS3',
138
+ enableChangeProductQuantity: true,
139
+ enableConnectToConsole: true,
140
+ },
141
+ [EVOLUTION_PRODUCT.EvolutionManagedPostgreSQL]: {
142
+ id: EVOLUTION_PRODUCT.EvolutionManagedPostgreSQL,
143
+ platform: PLATFORM.Evolution,
144
+ label: 'Evolution Managed PostgreSQL®',
145
+ caption: 'Управляемые базы данных PostgreSQL®',
146
+ icon: ManagedPostgreSqlSVG,
147
+ formConfig: EVOLUTION_POSTGRE_SQL_FORM_CONFIG,
148
+ dataTestId: 'evolutionPostgreSql',
149
+ enableChangeProductQuantity: true,
150
+ enableConnectToConsole: true,
151
+ },
152
+ [EVOLUTION_PRODUCT.EvolutionBareMetal]: {
153
+ id: EVOLUTION_PRODUCT.EvolutionBareMetal,
154
+ platform: PLATFORM.Evolution,
155
+ label: 'Evolution Bare Metal',
156
+ caption: 'Сервис аренды физических серверов с доступом и управлением только для вас',
157
+ icon: BareMetalSVG,
158
+ formConfig: EVOLUTION_BARE_METAL_FORM_CONFIG,
159
+ dataTestId: EVOLUTION_PRODUCT.EvolutionBareMetal,
160
+ enableChangeProductQuantity: false,
161
+ enableConnectToConsole: true,
162
+ },
163
+ [EVOLUTION_PRODUCT.EvolutionCloudServerGpu]: {
164
+ id: EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
165
+ platform: PLATFORM.Evolution,
166
+ label: 'Вычислительные мощности с GPU',
167
+ caption: 'Аренда виртуальных машин, серверов и ML-сервисов с графическими ускорителями',
168
+ icon: ElasticCloudServerWithGpuSVG,
169
+ formConfig: EVOLUTION_CLOUD_SERVER_GPU_FORM_CONFIG,
170
+ dataTestId: EVOLUTION_PRODUCT.EvolutionCloudServerGpu,
171
+ enableChangeProductQuantity: true,
172
+ enableConnectToConsole: true,
173
+ },
174
+ [EVOLUTION_PRODUCT.EvolutionContainerApps]: {
175
+ id: EVOLUTION_PRODUCT.EvolutionContainerApps,
176
+ platform: PLATFORM.Evolution,
177
+ label: 'Evolution Container Apps',
178
+ caption: 'Сервис для запуска контейнерных приложений в облаке',
179
+ icon: ContainerAppsSVG,
180
+ formConfig: EVOLUTION_CONTAINER_APPS_CONFIG,
181
+ dataTestId: EVOLUTION_PRODUCT.EvolutionContainerApps,
182
+ enableChangeProductQuantity: true,
183
+ productQuantityValues: {
184
+ max: 5,
185
+ },
186
+ enableConnectToConsole: true,
187
+ },
188
+ [EVOLUTION_PRODUCT.EvolutionContainerAppsFreeTier]: {
189
+ id: EVOLUTION_PRODUCT.EvolutionContainerAppsFreeTier,
190
+ platform: PLATFORM.Evolution,
191
+ label: 'Evolution Container Apps Free Tier',
192
+ caption: 'Сервис для запуска контейнерных приложений в облаке',
193
+ icon: ContainerAppsSVG,
194
+ formConfig: EVOLUTION_CONTAINER_APPS_FREE_TIER_CONFIG,
195
+ dataTestId: EVOLUTION_PRODUCT.EvolutionContainerAppsFreeTier,
196
+ enableChangeProductQuantity: true,
197
+ freeTier: true,
198
+ disabledProductQuantity: true,
199
+ enableConnectToConsole: true,
200
+ },
201
+ [EVOLUTION_PRODUCT.EvolutionArenadataDb]: {
202
+ id: EVOLUTION_PRODUCT.EvolutionArenadataDb,
203
+ platform: PLATFORM.Evolution,
204
+ label: 'Evolution Managed Arenadata DB',
205
+ caption: 'Управляемые инстансы базы данных Greenplum',
206
+ icon: ArenadataDbSVG,
207
+ formConfig: EVOLUTION_ARENADATA_DB_FORM_CONFIG,
208
+ dataTestId: EVOLUTION_PRODUCT.EvolutionArenadataDb,
209
+ enableChangeProductQuantity: true,
210
+ enableConnectToConsole: false,
211
+ productQuantityValues: {
212
+ max: 3,
213
+ },
214
+ },
215
+ [EVOLUTION_PRODUCT.EvolutionMlInference]: {
216
+ id: EVOLUTION_PRODUCT.EvolutionMlInference,
217
+ platform: PLATFORM.Evolution,
218
+ label: 'Evolution ML Inference',
219
+ caption:
220
+ 'Cервис для запуска и развертывания моделей машинного (ML) и глубокого обучения (DL) из библиотеки Hugging Face на облачных GPU',
221
+ icon: MlInferenceSVG,
222
+ formConfig: EVOLUTION_ML_INFERENCE_FORM_CONFIG,
223
+ dataTestId: EVOLUTION_PRODUCT.EvolutionMlInference,
224
+ enableChangeProductQuantity: true,
225
+ enableConnectToConsole: true,
226
+ },
227
+ [EVOLUTION_PRODUCT.EvolutionSnatGateway]: {
228
+ id: EVOLUTION_PRODUCT.EvolutionSnatGateway,
229
+ platform: PLATFORM.Evolution,
230
+ label: 'Evolution SNAT Gateway',
231
+ caption: 'Доступ виртуальных машин и серверов к внешним ресурсам',
232
+ icon: SnatSVG,
233
+ formConfig: EVOLUTION_SNAT_GATEWAY_FORM_CONFIG,
234
+ dataTestId: EVOLUTION_PRODUCT.EvolutionSnatGateway,
235
+ enableChangeProductQuantity: true,
236
+ enableConnectToConsole: true,
237
+ },
238
+ [EVOLUTION_PRODUCT.EvolutionPublicIp]: {
239
+ id: EVOLUTION_PRODUCT.EvolutionPublicIp,
240
+ platform: PLATFORM.Evolution,
241
+ label: 'Evolution Public IP',
242
+ caption: 'Управление публичными IP-адресами для облачных ресурсов',
243
+ icon: PublicIpSVG,
244
+ formConfig: EVOLUTION_PUBLIC_IP_FORM_CONFIG,
245
+ dataTestId: EVOLUTION_PRODUCT.EvolutionPublicIp,
246
+ enableChangeProductQuantity: true,
247
+ enableConnectToConsole: true,
248
+ },
249
+ [EVOLUTION_PRODUCT.EvolutionArtifactRegistry]: {
250
+ id: EVOLUTION_PRODUCT.EvolutionArtifactRegistry,
251
+ platform: PLATFORM.Evolution,
252
+ label: 'Evolution Artifact Registry',
253
+ caption: 'Реестр для хранения и распространения артефактов',
254
+ icon: ArtifactRegistrySVG,
255
+ formConfig: EVOLUTION_ARTIFACT_REGISTRY,
256
+ dataTestId: EVOLUTION_PRODUCT.EvolutionArtifactRegistry,
257
+ enableChangeProductQuantity: false,
258
+ enableConnectToConsole: true,
259
+ },
260
+ };
@@ -0,0 +1,3 @@
1
+ export * from './advanced';
2
+ export * from './evolution';
3
+ export * from './vmware';
@@ -0,0 +1,19 @@
1
+ import { CATEGORY, PLATFORM } from '../../../constants';
2
+ import { CatalogConfig } from '../../../types';
3
+ import { VM_WARE_PRODUCT } from './constants';
4
+
5
+ export const VM_WARE_CATALOG: CatalogConfig['catalog'] = {
6
+ [PLATFORM.VmWare]: [
7
+ {
8
+ id: CATEGORY.Popular,
9
+ label: 'Популярное',
10
+ dataTestId: 'popular',
11
+ visibleProducts: [
12
+ VM_WARE_PRODUCT.VmWareVirtualDataCenter,
13
+ VM_WARE_PRODUCT.VmWareCloudBackup,
14
+ VM_WARE_PRODUCT.VmWareVirtualMachinesBackup,
15
+ VM_WARE_PRODUCT.VmWareVirtualWorkspaces,
16
+ ],
17
+ },
18
+ ],
19
+ };
@@ -0,0 +1,6 @@
1
+ export const VM_WARE_PRODUCT = {
2
+ VmWareVirtualDataCenter: 'virtualDataCenter',
3
+ VmWareCloudBackup: 'vmWareCloudBackup',
4
+ VmWareVirtualMachinesBackup: 'vmWareVirtualMachinesBackup',
5
+ VmWareVirtualWorkspaces: 'vmWareVirtualWorkspaces',
6
+ } as const;
@@ -0,0 +1,5 @@
1
+ export * from './catalog';
2
+ export * from './constants';
3
+ export * from './platform';
4
+ export * from './products';
5
+ export * from './product-config';
@@ -0,0 +1,13 @@
1
+ import { VmwareSVG } from '@cloud-ru/uikit-product-icons';
2
+
3
+ import { PLATFORM } from '../../../constants';
4
+ import { Platform } from '../../../types';
5
+
6
+ export const VM_WARE_PLATFORM: Platform = {
7
+ id: PLATFORM.VmWare,
8
+ icon: <VmwareSVG />,
9
+ label: 'Облако VMware',
10
+ description: 'Облачная инфраструктура на базе технологий VMware',
11
+ access: 'legal',
12
+ dataTestId: 'calculator-catalog-platform-enterprise',
13
+ };
@@ -0,0 +1,56 @@
1
+ import { CONTROL, FormConfig } from '../../../../components';
2
+
3
+ export const VM_WARE_CLOUD_BACKUP_FORM_CONFIG: FormConfig = {
4
+ ui: ['vmWareCloudBackup'],
5
+ controls: {
6
+ vmWareCloudBackup: {
7
+ type: CONTROL.Table,
8
+ accessorKey: 'vmWareCloudBackup',
9
+ defaultValue: {
10
+ backupVM: 0,
11
+ backupWorkStation: 0,
12
+ backupServer: 0,
13
+ cloudStorage: 0,
14
+ },
15
+ rows: [
16
+ {
17
+ label: 'Резервное копирование ВМ',
18
+ accessorKey: 'backupVM',
19
+ uiProps: {
20
+ min: 0,
21
+ max: 50_000,
22
+ postfix: 'Шт',
23
+ },
24
+ },
25
+ {
26
+ label: 'Резервное копирование рабочей станции',
27
+ accessorKey: 'backupWorkStation',
28
+ uiProps: {
29
+ min: 0,
30
+ max: 50_000,
31
+ postfix: 'Шт',
32
+ },
33
+ },
34
+ {
35
+ label: 'Резервное копирование сервера',
36
+ accessorKey: 'backupServer',
37
+ uiProps: {
38
+ min: 0,
39
+ max: 50_000,
40
+ postfix: 'Шт',
41
+ },
42
+ },
43
+ {
44
+ label: 'Облачное хранилище',
45
+ accessorKey: 'cloudStorage',
46
+ uiProps: {
47
+ min: 0,
48
+ max: 999_999,
49
+ postfix: 'ГБ',
50
+ },
51
+ labelTooltip: 'Данные хранятся в облачном репозитории Cloud.ru',
52
+ },
53
+ ],
54
+ },
55
+ },
56
+ };
@@ -0,0 +1,309 @@
1
+ import { CONTROL, FormConfig } from '../../../../components';
2
+
3
+ const payAsYouGoTooltip =
4
+ 'При модели pay-as-you-go оплачивается фактическое использование ресурсов в почасовом режиме, начиная с первой минуты использования ресурсов. Тарифицируется сумма используемых ресурсов для всех VM. Ресурсы виртуального процессора и памяти тарифицируются в период работы VM. Ресурсы хранения тарифицируются после создания VM и не зависят от состояния активности VM. Для каждой VM учитываются максимальные значения ресурсов за каждый час. Неполные часы использования ресурсов округляются до полного часа.';
5
+ const payAsYouAllocateTooltip =
6
+ 'При модели Allocation ресурсы начинают тарифицироваться при создании виртуального ЦОД. Использование или не использование ресурсов внутри виртуального ЦОД не влияет на тарификацию. Например, если вы создали виртуальный ЦОД с объемом оперативной памяти 500 ГБ, а VM внутри ЦОД используют только 100 ГБ, тарифицироваться будут 500 ГБ.';
7
+
8
+ export const VIRTUAL_DATA_CENTER_FORM_CONFIG: FormConfig = {
9
+ ui: ['instancePayg', 'instancePaya', 'additionalServices', 'os'],
10
+ controls: {
11
+ instancePayg: {
12
+ type: CONTROL.Table,
13
+ decoratorProps: {
14
+ label: 'Pay As You Go',
15
+ labelTooltip: payAsYouGoTooltip,
16
+ },
17
+ accessorKey: 'instancePayg',
18
+ defaultValue: {
19
+ vCpu26: 0,
20
+ vCpu30: 0,
21
+ ram: 0,
22
+ sata: 0,
23
+ ssd: 0,
24
+ workTime: 1,
25
+ },
26
+ counter: {
27
+ label: 'Время работы в месяц',
28
+ accessorKey: 'workTime',
29
+ uiProps: {
30
+ min: 1,
31
+ max: 744,
32
+ postfix: 'ч',
33
+ },
34
+ },
35
+ rows: [
36
+ {
37
+ label: 'Количество vCPU 3.0 GHz',
38
+ accessorKey: 'vCpu30',
39
+ uiProps: {
40
+ min: 0,
41
+ max: 9_999,
42
+ postfix: 'Шт',
43
+ },
44
+ },
45
+ {
46
+ label: 'Оперативная память (RAM)',
47
+ accessorKey: 'ram',
48
+ uiProps: {
49
+ min: 0,
50
+ max: 99_999,
51
+ postfix: 'ГБ',
52
+ },
53
+ },
54
+ {
55
+ label: 'Жесткий диск SATA',
56
+ accessorKey: 'sata',
57
+ uiProps: {
58
+ min: 0,
59
+ max: 999_999,
60
+ postfix: 'ГБ',
61
+ },
62
+ },
63
+ {
64
+ label: 'Жесткий диск SSD',
65
+ accessorKey: 'ssd',
66
+ uiProps: {
67
+ min: 0,
68
+ max: 999_999,
69
+ postfix: 'ГБ',
70
+ },
71
+ },
72
+ ],
73
+ },
74
+ instancePaya: {
75
+ type: CONTROL.Table,
76
+ decoratorProps: {
77
+ label: 'Pay As You Allocate',
78
+ labelTooltip: payAsYouAllocateTooltip,
79
+ labelTooltipPlacement: 'right',
80
+ },
81
+ accessorKey: 'instancePaya',
82
+ defaultValue: {
83
+ vCpu26: 0,
84
+ vCpu30: 0,
85
+ vCpu35: 0,
86
+ ram: 0,
87
+ sata: 0,
88
+ ssd: 0,
89
+ },
90
+ rows: [
91
+ {
92
+ label: 'Количество vCPU 3.0 GHz',
93
+ accessorKey: 'vCpu30',
94
+ uiProps: {
95
+ min: 0,
96
+ max: 9_999,
97
+ postfix: 'Шт',
98
+ },
99
+ },
100
+ {
101
+ label: 'Количество vCPU 3.5 GHz',
102
+ accessorKey: 'vCpu35',
103
+ uiProps: {
104
+ min: 0,
105
+ max: 9_999,
106
+ postfix: 'Шт',
107
+ },
108
+ },
109
+ {
110
+ label: 'Оперативная память (RAM)',
111
+ accessorKey: 'ram',
112
+ uiProps: {
113
+ min: 0,
114
+ max: 99_999,
115
+ postfix: 'ГБ',
116
+ },
117
+ },
118
+ {
119
+ label: 'Жесткий диск SATA',
120
+ accessorKey: 'sata',
121
+ uiProps: {
122
+ min: 0,
123
+ max: 999_999,
124
+ postfix: 'ГБ',
125
+ },
126
+ },
127
+ {
128
+ label: 'Жесткий диск SSD',
129
+ accessorKey: 'ssd',
130
+ uiProps: {
131
+ min: 0,
132
+ max: 999_999,
133
+ postfix: 'ГБ',
134
+ },
135
+ },
136
+ ],
137
+ },
138
+ additionalServices: {
139
+ type: CONTROL.Table,
140
+ decoratorProps: {
141
+ label: 'Дополнительные сервисы',
142
+ },
143
+ accessorKey: 'additionalServices',
144
+ defaultValue: {
145
+ ipQuantity: 0,
146
+ velocity: 0,
147
+ virtualMachineBackup: 0,
148
+ dataCenterBackup: 0,
149
+ remoteBackup: 0,
150
+ databaseManageSystemEnterpriseCore: 0,
151
+ databaseManageSystemStandardCore: 0,
152
+ databaseManageSystemStandard: 0,
153
+ databaseManageSystemWebEdition: 0,
154
+ },
155
+ rows: [
156
+ {
157
+ label: 'Количество IP-адресов',
158
+ accessorKey: 'ipQuantity',
159
+ uiProps: {
160
+ min: 0,
161
+ max: 100,
162
+ postfix: 'Шт',
163
+ },
164
+ },
165
+ {
166
+ label: 'Скорость доступа в интернет',
167
+ labelTooltip: 'Доступ в интернет до 100Мбит/с не тарифицируется',
168
+ accessorKey: 'velocity',
169
+ allowedValues: [0, 100, 200, 500, 1000],
170
+ uiProps: {
171
+ min: 0,
172
+ max: 1_000,
173
+ step: 100,
174
+ postfix: 'Мбит/с',
175
+ },
176
+ },
177
+ {
178
+ label: 'Резервное копирование ВМ',
179
+ accessorKey: 'virtualMachineBackup',
180
+ uiProps: {
181
+ min: 0,
182
+ max: 999,
183
+ postfix: 'Шт',
184
+ },
185
+ },
186
+ {
187
+ label: 'Хранение копий в том же ЦОД',
188
+ accessorKey: 'dataCenterBackup',
189
+ uiProps: {
190
+ min: 0,
191
+ max: 999_999,
192
+ postfix: 'ГБ',
193
+ },
194
+ },
195
+ {
196
+ label: 'Хранение копий в другом ЦОД',
197
+ accessorKey: 'remoteBackup',
198
+ uiProps: {
199
+ min: 0,
200
+ max: 999_999,
201
+ postfix: 'ГБ',
202
+ },
203
+ },
204
+ {
205
+ label: 'Серверная СУБД Enterprise Core',
206
+ labelTooltip: 'Лицензия на 2 ядра',
207
+ accessorKey: 'databaseManageSystemEnterpriseCore',
208
+ uiProps: {
209
+ min: 0,
210
+ max: 999,
211
+ postfix: 'Шт',
212
+ },
213
+ },
214
+ {
215
+ label: 'Серверная СУБД Standard Core',
216
+ labelTooltip: 'Лицензия на 2 ядра',
217
+ accessorKey: 'databaseManageSystemStandardCore',
218
+ uiProps: {
219
+ min: 0,
220
+ max: 999,
221
+ postfix: 'Шт',
222
+ },
223
+ },
224
+ {
225
+ label: 'Серверная СУБД Standard',
226
+ accessorKey: 'databaseManageSystemStandard',
227
+ uiProps: {
228
+ min: 0,
229
+ max: 999,
230
+ postfix: 'Шт',
231
+ },
232
+ },
233
+ {
234
+ label: 'Серверная СУБД Web Edition',
235
+ labelTooltip: 'Лицензия на 2 ядра',
236
+ accessorKey: 'databaseManageSystemWebEdition',
237
+ uiProps: {
238
+ min: 0,
239
+ max: 999,
240
+ postfix: 'Шт',
241
+ },
242
+ },
243
+ ],
244
+ },
245
+ os: {
246
+ type: CONTROL.Table,
247
+ decoratorProps: {
248
+ label: 'Операционные системы',
249
+ },
250
+ accessorKey: 'os',
251
+ defaultValue: {
252
+ osRosaServerKobaltFstek: 0,
253
+ osRosaServerHromStandart: 0,
254
+ osRosaRabochayaStantsiyaHromStandart: 0,
255
+ osStandard: 0,
256
+ osDatacenter: 0,
257
+ },
258
+ rows: [
259
+ {
260
+ label: 'Роса Сервер "КОБАЛЬТ" ФСТЭК',
261
+ accessorKey: 'osRosaServerKobaltFstek',
262
+ uiProps: {
263
+ min: 0,
264
+ max: 999,
265
+ postfix: 'Шт',
266
+ },
267
+ },
268
+ {
269
+ label: 'Роса Сервер "ХРОМ" Стандарт',
270
+ accessorKey: 'osRosaServerHromStandart',
271
+ uiProps: {
272
+ min: 0,
273
+ max: 999,
274
+ postfix: 'Шт',
275
+ },
276
+ },
277
+ {
278
+ label: 'Роса Рабочая станция "ХРОМ" Стандарт',
279
+ accessorKey: 'osRosaRabochayaStantsiyaHromStandart',
280
+ uiProps: {
281
+ min: 0,
282
+ max: 999,
283
+ postfix: 'Шт',
284
+ },
285
+ },
286
+ {
287
+ label: 'Dataсenter',
288
+ labelTooltip: 'Лицензия на 2 ядра',
289
+ accessorKey: 'osDatacenter',
290
+ uiProps: {
291
+ min: 0,
292
+ max: 999,
293
+ postfix: 'Шт',
294
+ },
295
+ },
296
+ {
297
+ label: 'Standard',
298
+ labelTooltip: 'Лицензия на 2 ядра',
299
+ accessorKey: 'osStandard',
300
+ uiProps: {
301
+ min: 0,
302
+ max: 999,
303
+ postfix: 'Шт',
304
+ },
305
+ },
306
+ ],
307
+ },
308
+ },
309
+ };