@eturnity/eturnity_reusable_components 7.48.1-EPDM-12680.24 → 7.48.1-EPDM-13082.0

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 (384) hide show
  1. package/README.md +29 -29
  2. package/package.json +85 -84
  3. package/src/App.vue +30 -30
  4. package/src/Test.vue +128 -128
  5. package/src/assets/icons/arrow_down.svg +3 -3
  6. package/src/assets/icons/arrow_up_red.svg +3 -3
  7. package/src/assets/icons/black_spinner.svg +35 -35
  8. package/src/assets/icons/delete_icon.svg +11 -11
  9. package/src/assets/icons/delete_icon_gray.svg +11 -11
  10. package/src/assets/icons/drag_icon.svg +8 -8
  11. package/src/assets/icons/external_icon.svg +6 -6
  12. package/src/assets/icons/language_icon.svg +6 -6
  13. package/src/assets/icons/pdf_icon.svg +6 -6
  14. package/src/assets/icons/plus_button.svg +4 -4
  15. package/src/assets/icons/search_icon_black.svg +3 -3
  16. package/src/assets/icons/subposition_icon.svg +3 -3
  17. package/src/assets/icons/subposition_marker.svg +3 -3
  18. package/src/assets/icons/warning_icon.svg +3 -3
  19. package/src/assets/svgIcons/2d_active.svg +7 -7
  20. package/src/assets/svgIcons/2d_inactive.svg +8 -8
  21. package/src/assets/svgIcons/3d_active.svg +7 -7
  22. package/src/assets/svgIcons/3d_inactive.svg +8 -8
  23. package/src/assets/svgIcons/_readme.md +7 -7
  24. package/src/assets/svgIcons/accept.svg +5 -5
  25. package/src/assets/svgIcons/activate_panels_active.svg +22 -22
  26. package/src/assets/svgIcons/activate_panels_inactive.svg +20 -20
  27. package/src/assets/svgIcons/add_icon-1.svg +3 -3
  28. package/src/assets/svgIcons/add_icon.svg +4 -4
  29. package/src/assets/svgIcons/address_book.svg +3 -3
  30. package/src/assets/svgIcons/adjust_roof.svg +6 -6
  31. package/src/assets/svgIcons/after_sale_as_a_service.svg +6 -6
  32. package/src/assets/svgIcons/all_good.svg +3 -3
  33. package/src/assets/svgIcons/angle_active.svg +5 -5
  34. package/src/assets/svgIcons/angle_inactive.svg +4 -4
  35. package/src/assets/svgIcons/area_active.svg +11 -11
  36. package/src/assets/svgIcons/area_inactive.svg +26 -26
  37. package/src/assets/svgIcons/areas_tool.svg +14 -14
  38. package/src/assets/svgIcons/arrow_down.svg +3 -3
  39. package/src/assets/svgIcons/arrow_left.svg +4 -4
  40. package/src/assets/svgIcons/arrow_right.svg +4 -4
  41. package/src/assets/svgIcons/arrow_up.svg +3 -3
  42. package/src/assets/svgIcons/attachment.svg +3 -3
  43. package/src/assets/svgIcons/base_layer.svg +3 -3
  44. package/src/assets/svgIcons/battery.svg +3 -3
  45. package/src/assets/svgIcons/bell.svg +3 -3
  46. package/src/assets/svgIcons/bexio.svg +4 -4
  47. package/src/assets/svgIcons/bold.svg +3 -3
  48. package/src/assets/svgIcons/bom.svg +3 -3
  49. package/src/assets/svgIcons/bom_generation.svg +10 -10
  50. package/src/assets/svgIcons/bookmaker.svg +3 -3
  51. package/src/assets/svgIcons/bubble.svg +3 -3
  52. package/src/assets/svgIcons/bug.svg +5 -5
  53. package/src/assets/svgIcons/buildings.svg +55 -55
  54. package/src/assets/svgIcons/bullet_list.svg +8 -8
  55. package/src/assets/svgIcons/calendar.svg +7 -7
  56. package/src/assets/svgIcons/calendar_icon.svg +7 -7
  57. package/src/assets/svgIcons/call.svg +3 -3
  58. package/src/assets/svgIcons/camera.svg +3 -3
  59. package/src/assets/svgIcons/car.svg +3 -3
  60. package/src/assets/svgIcons/cart.svg +3 -3
  61. package/src/assets/svgIcons/charger_icon_white.svg +44 -44
  62. package/src/assets/svgIcons/checkbox.svg +3 -3
  63. package/src/assets/svgIcons/clear_formatting.svg +7 -7
  64. package/src/assets/svgIcons/clenergy.svg +4 -0
  65. package/src/assets/svgIcons/clickable_info.svg +4 -4
  66. package/src/assets/svgIcons/clip.svg +3 -3
  67. package/src/assets/svgIcons/clock.svg +17 -17
  68. package/src/assets/svgIcons/clock_full.svg +3 -3
  69. package/src/assets/svgIcons/close_for_modals,_tool_tips.svg +4 -4
  70. package/src/assets/svgIcons/co_branding.svg +5 -5
  71. package/src/assets/svgIcons/collapse.svg +4 -4
  72. package/src/assets/svgIcons/collections.svg +3 -3
  73. package/src/assets/svgIcons/component_library.svg +7 -7
  74. package/src/assets/svgIcons/consumption_tariffs.svg +43 -43
  75. package/src/assets/svgIcons/context_menu-1.svg +6 -6
  76. package/src/assets/svgIcons/context_menu-2.svg +5 -5
  77. package/src/assets/svgIcons/context_menu.svg +5 -5
  78. package/src/assets/svgIcons/context_menu_tabs.svg +5 -5
  79. package/src/assets/svgIcons/cross.svg +4 -4
  80. package/src/assets/svgIcons/current_variant.svg +4 -4
  81. package/src/assets/svgIcons/dashboard.svg +3 -3
  82. package/src/assets/svgIcons/data_transfer.svg +3 -3
  83. package/src/assets/svgIcons/deadline.svg +4 -4
  84. package/src/assets/svgIcons/deal_flow.svg +5 -5
  85. package/src/assets/svgIcons/delete.svg +4 -4
  86. package/src/assets/svgIcons/delete_area_active.svg +16 -16
  87. package/src/assets/svgIcons/delete_area_inactive.svg +15 -15
  88. package/src/assets/svgIcons/direction_active-1.svg +12 -12
  89. package/src/assets/svgIcons/direction_active.svg +5 -5
  90. package/src/assets/svgIcons/direction_arrow.svg +4 -4
  91. package/src/assets/svgIcons/direction_inactive.svg +4 -4
  92. package/src/assets/svgIcons/dislike.svg +3 -3
  93. package/src/assets/svgIcons/distance_tool.svg +8 -8
  94. package/src/assets/svgIcons/distances_active.svg +9 -9
  95. package/src/assets/svgIcons/distances_inactive.svg +8 -8
  96. package/src/assets/svgIcons/distort_tool.svg +10 -10
  97. package/src/assets/svgIcons/distort_tool2.svg +16 -16
  98. package/src/assets/svgIcons/document.svg +3 -3
  99. package/src/assets/svgIcons/documents.svg +4 -4
  100. package/src/assets/svgIcons/downarrow.svg +3 -3
  101. package/src/assets/svgIcons/download.svg +4 -4
  102. package/src/assets/svgIcons/drag_icon.svg +8 -8
  103. package/src/assets/svgIcons/draggable_corner.svg +5 -5
  104. package/src/assets/svgIcons/draw_tool.svg +3 -3
  105. package/src/assets/svgIcons/duplicate-1.svg +8 -8
  106. package/src/assets/svgIcons/duplicate-2.svg +5 -5
  107. package/src/assets/svgIcons/duplicate.svg +4 -4
  108. package/src/assets/svgIcons/e-mobility_configurator.svg +6 -6
  109. package/src/assets/svgIcons/e_signature.svg +5 -5
  110. package/src/assets/svgIcons/edit_button.svg +3 -3
  111. package/src/assets/svgIcons/electricity_tariff.svg +3 -3
  112. package/src/assets/svgIcons/email.svg +3 -3
  113. package/src/assets/svgIcons/ems-1.svg +3 -3
  114. package/src/assets/svgIcons/ems.svg +3 -3
  115. package/src/assets/svgIcons/end_of_the_list.svg +5 -5
  116. package/src/assets/svgIcons/erase.svg +4 -4
  117. package/src/assets/svgIcons/external_icon.svg +5 -5
  118. package/src/assets/svgIcons/fav_icon.svg +4 -4
  119. package/src/assets/svgIcons/finance.svg +3 -3
  120. package/src/assets/svgIcons/financing_for_pv-1.svg +5 -5
  121. package/src/assets/svgIcons/financing_for_pv-2.svg +3 -3
  122. package/src/assets/svgIcons/financing_for_pv.svg +6 -6
  123. package/src/assets/svgIcons/finish-1.svg +4 -4
  124. package/src/assets/svgIcons/finish.svg +3 -3
  125. package/src/assets/svgIcons/flatten.svg +11 -11
  126. package/src/assets/svgIcons/flatten_roof.svg +20 -20
  127. package/src/assets/svgIcons/folder.svg +3 -3
  128. package/src/assets/svgIcons/free_technology.svg +5 -5
  129. package/src/assets/svgIcons/handle.svg +5 -5
  130. package/src/assets/svgIcons/heat_calc.svg +7 -7
  131. package/src/assets/svgIcons/height_equalize.svg +3 -3
  132. package/src/assets/svgIcons/height_snap.svg +3 -3
  133. package/src/assets/svgIcons/house.svg +3 -3
  134. package/src/assets/svgIcons/house_3d-1.svg +7 -7
  135. package/src/assets/svgIcons/house_3d.svg +7 -7
  136. package/src/assets/svgIcons/inclination.svg +2 -2
  137. package/src/assets/svgIcons/info.svg +3 -3
  138. package/src/assets/svgIcons/initial_situation.svg +3 -3
  139. package/src/assets/svgIcons/integrations.svg +3 -3
  140. package/src/assets/svgIcons/intro-tour-1.svg +3 -3
  141. package/src/assets/svgIcons/intro-tour.svg +3 -3
  142. package/src/assets/svgIcons/inverter-1.svg +5 -5
  143. package/src/assets/svgIcons/inverter.svg +3 -3
  144. package/src/assets/svgIcons/italic.svg +3 -3
  145. package/src/assets/svgIcons/key.svg +3 -3
  146. package/src/assets/svgIcons/lake.svg +29 -29
  147. package/src/assets/svgIcons/layers_close.svg +4 -4
  148. package/src/assets/svgIcons/layers_open.svg +4 -4
  149. package/src/assets/svgIcons/lead_marketplace.svg +6 -6
  150. package/src/assets/svgIcons/lead_provider.svg +4 -4
  151. package/src/assets/svgIcons/length_2d.svg +2 -2
  152. package/src/assets/svgIcons/length_3d.svg +4 -4
  153. package/src/assets/svgIcons/length_calculator.svg +2 -2
  154. package/src/assets/svgIcons/length_in_2d_active.svg +12 -12
  155. package/src/assets/svgIcons/length_in_2d_inctive.svg +13 -13
  156. package/src/assets/svgIcons/light_bulb.svg +3 -3
  157. package/src/assets/svgIcons/like.svg +3 -3
  158. package/src/assets/svgIcons/line_graph.svg +3 -3
  159. package/src/assets/svgIcons/local_subsidies.svg +18 -18
  160. package/src/assets/svgIcons/location.svg +3 -3
  161. package/src/assets/svgIcons/lock.svg +3 -3
  162. package/src/assets/svgIcons/logout.svg +3 -3
  163. package/src/assets/svgIcons/loop.svg +3 -3
  164. package/src/assets/svgIcons/low-vegetation.svg +37 -37
  165. package/src/assets/svgIcons/lunch.svg +4 -4
  166. package/src/assets/svgIcons/magic_tool.svg +6 -6
  167. package/src/assets/svgIcons/map_icon.svg +5 -5
  168. package/src/assets/svgIcons/map_settings.svg +3 -3
  169. package/src/assets/svgIcons/margin_tool.svg +4 -4
  170. package/src/assets/svgIcons/meeting.svg +6 -6
  171. package/src/assets/svgIcons/move_copy.svg +4 -4
  172. package/src/assets/svgIcons/new_area_inactive.svg +11 -11
  173. package/src/assets/svgIcons/next.svg +4 -4
  174. package/src/assets/svgIcons/normal-tg.svg +30 -30
  175. package/src/assets/svgIcons/normal-vegetation.svg +53 -53
  176. package/src/assets/svgIcons/not_equal_to.svg +3 -3
  177. package/src/assets/svgIcons/numbered_list.svg +6 -6
  178. package/src/assets/svgIcons/obstacle_tool.svg +8 -8
  179. package/src/assets/svgIcons/obstacle_tool_origin.svg +3 -3
  180. package/src/assets/svgIcons/offset_tool.svg +8 -8
  181. package/src/assets/svgIcons/open-tg.svg +21 -21
  182. package/src/assets/svgIcons/outline_tool.svg +11 -11
  183. package/src/assets/svgIcons/pan_tool.svg +12 -12
  184. package/src/assets/svgIcons/panels_tool.svg +8 -8
  185. package/src/assets/svgIcons/pen_tool.svg +4 -4
  186. package/src/assets/svgIcons/picker_tool.svg +4 -4
  187. package/src/assets/svgIcons/picture.svg +3 -3
  188. package/src/assets/svgIcons/pin.svg +5 -5
  189. package/src/assets/svgIcons/presentation.svg +3 -3
  190. package/src/assets/svgIcons/previous.svg +4 -4
  191. package/src/assets/svgIcons/profile-1.svg +4 -4
  192. package/src/assets/svgIcons/profile.svg +4 -4
  193. package/src/assets/svgIcons/profitability.svg +3 -3
  194. package/src/assets/svgIcons/project_analysis.svg +4 -4
  195. package/src/assets/svgIcons/project_settings.svg +4 -4
  196. package/src/assets/svgIcons/protected-tg.svg +47 -47
  197. package/src/assets/svgIcons/pv.svg +3 -3
  198. package/src/assets/svgIcons/quotations.svg +6 -6
  199. package/src/assets/svgIcons/redo.svg +6 -6
  200. package/src/assets/svgIcons/resizer.svg +5 -5
  201. package/src/assets/svgIcons/roof_layer.svg +3 -3
  202. package/src/assets/svgIcons/rotate_tool.svg +3 -3
  203. package/src/assets/svgIcons/rotate_view.svg +5 -5
  204. package/src/assets/svgIcons/ruler_tool.svg +3 -3
  205. package/src/assets/svgIcons/run_simulation.svg +3 -3
  206. package/src/assets/svgIcons/save.svg +3 -3
  207. package/src/assets/svgIcons/scaling_tool.svg +8 -8
  208. package/src/assets/svgIcons/sea.svg +34 -34
  209. package/src/assets/svgIcons/search.svg +3 -3
  210. package/src/assets/svgIcons/security.svg +3 -3
  211. package/src/assets/svgIcons/settings.svg +3 -3
  212. package/src/assets/svgIcons/show_in_a_new_tab.svg +12 -12
  213. package/src/assets/svgIcons/smartphone.svg +4 -4
  214. package/src/assets/svgIcons/solar_calc.svg +13 -13
  215. package/src/assets/svgIcons/solarmarkt.svg +3 -0
  216. package/src/assets/svgIcons/sorting.svg +4 -4
  217. package/src/assets/svgIcons/split.svg +12 -12
  218. package/src/assets/svgIcons/start_of_the_list.svg +5 -5
  219. package/src/assets/svgIcons/strikethrough.svg +4 -4
  220. package/src/assets/svgIcons/subscriptions.svg +3 -3
  221. package/src/assets/svgIcons/subsidies-1.svg +5 -5
  222. package/src/assets/svgIcons/subsidies-2.svg +3 -3
  223. package/src/assets/svgIcons/subsidies.svg +3 -3
  224. package/src/assets/svgIcons/subtract_icon.svg +3 -3
  225. package/src/assets/svgIcons/suitcase.svg +3 -3
  226. package/src/assets/svgIcons/summer.svg +3 -3
  227. package/src/assets/svgIcons/template_icon_not_clickable.svg +6 -6
  228. package/src/assets/svgIcons/transfer.svg +4 -4
  229. package/src/assets/svgIcons/trim_tool.svg +4 -4
  230. package/src/assets/svgIcons/truck.svg +3 -3
  231. package/src/assets/svgIcons/underlined.svg +3 -3
  232. package/src/assets/svgIcons/undo.svg +6 -6
  233. package/src/assets/svgIcons/uparrow.svg +3 -3
  234. package/src/assets/svgIcons/update.svg +3 -3
  235. package/src/assets/svgIcons/upload_avatar-1.svg +12 -12
  236. package/src/assets/svgIcons/upload_avatar.svg +5 -5
  237. package/src/assets/svgIcons/upload_image.svg +8 -8
  238. package/src/assets/svgIcons/upload_image_tool.svg +7 -7
  239. package/src/assets/svgIcons/variants.svg +6 -6
  240. package/src/assets/svgIcons/vertical_tool.svg +3 -3
  241. package/src/assets/svgIcons/virtual_storage.svg +4 -4
  242. package/src/assets/svgIcons/warning.svg +4 -4
  243. package/src/assets/svgIcons/way.svg +5 -5
  244. package/src/assets/svgIcons/wifi.svg +3 -3
  245. package/src/assets/svgIcons/winter.svg +3 -3
  246. package/src/assets/svgIcons/workflow_template.svg +11 -11
  247. package/src/assets/tests/__mocks__/iconCache.js +1 -1
  248. package/src/assets/tests/__mocks__/svgMock.js +1 -1
  249. package/src/assets/tests/helpers.js +12 -12
  250. package/src/assets/theme.js +45 -44
  251. package/src/components/addNewButton/AddNewButton.stories.js +17 -17
  252. package/src/components/addNewButton/addNewButton.spec.js +23 -23
  253. package/src/components/addNewButton/index.vue +62 -62
  254. package/src/components/banner/actionBanner/ActionBanner.stories.js +45 -45
  255. package/src/components/banner/actionBanner/actionBanner.spec.js +76 -76
  256. package/src/components/banner/actionBanner/index.vue +86 -86
  257. package/src/components/banner/banner/Banner.stories.js +64 -64
  258. package/src/components/banner/banner/banner.spec.js +149 -149
  259. package/src/components/banner/banner/index.vue +205 -205
  260. package/src/components/banner/infoBanner/InfoBanner.spec.js +70 -70
  261. package/src/components/banner/infoBanner/InfoBanner.stories.js +42 -42
  262. package/src/components/banner/infoBanner/index.vue +97 -97
  263. package/src/components/buttons/buttonIcon/index.vue +145 -147
  264. package/src/components/buttons/closeButton/CloseButton.stories.js +25 -25
  265. package/src/components/buttons/closeButton/index.vue +62 -62
  266. package/src/components/buttons/mainButton/MainButton.stories.js +51 -51
  267. package/src/components/buttons/mainButton/index.vue +150 -164
  268. package/src/components/buttons/mainButton/mainButton.spec.js +35 -35
  269. package/src/components/card/Card.stories.js +79 -79
  270. package/src/components/card/card.spec.js +135 -135
  271. package/src/components/card/index.vue +116 -116
  272. package/src/components/collapsableInfoText/index.vue +127 -127
  273. package/src/components/deleteIcon/DeleteIcon.stories.js +29 -29
  274. package/src/components/deleteIcon/index.vue +78 -78
  275. package/src/components/draggableInputHandle/index.vue +46 -46
  276. package/src/components/dropdown/Dropdown.stories.js +53 -53
  277. package/src/components/dropdown/index.vue +138 -138
  278. package/src/components/errorMessage/index.vue +64 -64
  279. package/src/components/filter/filterSettings.vue +669 -669
  280. package/src/components/filter/index.vue +154 -154
  281. package/src/components/filter/parentDropdown.vue +91 -91
  282. package/src/components/icon/Icons.stories.js +41 -41
  283. package/src/components/icon/iconCache.mjs +23 -23
  284. package/src/components/icon/iconCollection.vue +82 -82
  285. package/src/components/icon/index.vue +140 -141
  286. package/src/components/iconWrapper/index.vue +179 -179
  287. package/src/components/infoCard/InfoCard.stories.js +170 -0
  288. package/src/components/infoCard/defaultProps.js +7 -0
  289. package/src/components/infoCard/index.vue +152 -67
  290. package/src/components/infoCard/infoCard.spec.js +64 -0
  291. package/src/components/infoText/index.vue +190 -379
  292. package/src/components/inputs/checkbox/Checkbox.stories.js +63 -63
  293. package/src/components/inputs/checkbox/checkbox.spec.js +109 -109
  294. package/src/components/inputs/checkbox/index.vue +225 -225
  295. package/src/components/inputs/inputNumber/InputNumber.stories.js +150 -150
  296. package/src/components/inputs/inputNumber/index.vue +789 -977
  297. package/src/components/inputs/inputNumberQuestion/index.vue +218 -218
  298. package/src/components/inputs/inputText/InputText.stories.js +70 -70
  299. package/src/components/inputs/inputText/index.vue +417 -438
  300. package/src/components/inputs/inputText/inputText.spec.js +588 -588
  301. package/src/components/inputs/radioButton/RadioButton.stories.js +77 -77
  302. package/src/components/inputs/radioButton/defaultProps.js +31 -33
  303. package/src/components/inputs/radioButton/index.vue +309 -330
  304. package/src/components/inputs/radioButton/radioButton.spec.js +269 -306
  305. package/src/components/inputs/searchInput/SearchInput.stories.js +66 -66
  306. package/src/components/inputs/searchInput/defaultProps.js +12 -12
  307. package/src/components/inputs/searchInput/index.vue +159 -159
  308. package/src/components/inputs/searchInput/searchInput.spec.js +64 -64
  309. package/src/components/inputs/select/index.vue +918 -958
  310. package/src/components/inputs/select/option/index.vue +156 -165
  311. package/src/components/inputs/select/select.stories.js +58 -58
  312. package/src/components/inputs/slider/index.vue +126 -126
  313. package/src/components/inputs/switchField/index.vue +254 -254
  314. package/src/components/inputs/textAreaInput/TextAreaInput.stories.js +127 -127
  315. package/src/components/inputs/textAreaInput/index.vue +198 -198
  316. package/src/components/inputs/toggle/Toggle.stories.js +77 -77
  317. package/src/components/inputs/toggle/index.vue +317 -317
  318. package/src/components/inputs/toggle/toggle.spec.js +102 -102
  319. package/src/components/label/index.vue +99 -99
  320. package/src/components/markerItem/index.vue +88 -95
  321. package/src/components/modals/actionModal/index.vue +64 -64
  322. package/src/components/modals/infoModal/index.vue +52 -52
  323. package/src/components/modals/modal/index.vue +196 -190
  324. package/src/components/modals/modal/modal.stories.js +31 -31
  325. package/src/components/navigationTabs/index.vue +114 -114
  326. package/src/components/pageSubtitle/PageSubtitle.stories.js +59 -59
  327. package/src/components/pageSubtitle/index.vue +78 -78
  328. package/src/components/pageSubtitle/pageSubtitle.spec.js +46 -46
  329. package/src/components/pageTitle/PageTitle.stories.js +95 -95
  330. package/src/components/pageTitle/index.vue +91 -91
  331. package/src/components/pageTitle/pageTitle.spec.js +46 -46
  332. package/src/components/pagination/index.vue +148 -148
  333. package/src/components/progressBar/index.vue +125 -125
  334. package/src/components/projectMarker/index.vue +300 -300
  335. package/src/components/rangeSlider/Slider.vue +573 -573
  336. package/src/components/rangeSlider/index.vue +517 -517
  337. package/src/components/rangeSlider/utils/dom.js +49 -49
  338. package/src/components/rangeSlider/utils/fns.js +26 -26
  339. package/src/components/roundTabs/index.vue +107 -107
  340. package/src/components/selectedOptions/index.vue +471 -471
  341. package/src/components/selectedOptions/selectedOptions.spec.js +176 -176
  342. package/src/components/selectedOptions/selectedOptions.stories.js +155 -155
  343. package/src/components/sideMenu/index.vue +279 -270
  344. package/src/components/spinner/Spinner.stories.js +34 -34
  345. package/src/components/spinner/index.vue +85 -96
  346. package/src/components/spinner/spinner.spec.js +69 -69
  347. package/src/components/tableDropdown/index.vue +638 -638
  348. package/src/components/tables/mainTable/exampleNested.vue +328 -328
  349. package/src/components/tables/mainTable/index.vue +510 -510
  350. package/src/components/tables/viewTable/index.vue +195 -195
  351. package/src/components/tabsHeader/index.vue +83 -83
  352. package/src/components/threeDots/index.vue +413 -413
  353. package/src/components/videoThumbnail/index.vue +103 -103
  354. package/src/components/videoThumbnail/videoThumbnail.stories.js +33 -33
  355. package/src/helpers/currencyMapping.js +28 -28
  356. package/src/helpers/numberConverter.js +103 -103
  357. package/src/helpers/translateLang.js +128 -128
  358. package/src/main.js +7 -7
  359. package/src/mixins/inputValidations.js +97 -97
  360. package/src/router/dynamicRoutes.js +23 -23
  361. package/src/stories/Button.stories.js +48 -48
  362. package/src/stories/Button.vue +52 -52
  363. package/src/stories/Configure.mdx +364 -364
  364. package/src/stories/Header.stories.js +41 -41
  365. package/src/stories/Header.vue +59 -59
  366. package/src/stories/Page.stories.js +30 -30
  367. package/src/stories/Page.vue +83 -83
  368. package/src/stories/button.css +30 -30
  369. package/src/stories/header.css +32 -32
  370. package/src/stories/page.css +69 -69
  371. package/src/utils/index.js +12 -12
  372. package/src/assets/gifs/spinner.gif +0 -0
  373. package/src/assets/svgIcons/collapse_all.svg +0 -4
  374. package/src/assets/svgIcons/export_document.svg +0 -3
  375. package/src/assets/svgIcons/hybrid.svg +0 -4
  376. package/src/assets/svgIcons/module.svg +0 -3
  377. package/src/assets/svgIcons/move_down.svg +0 -3
  378. package/src/assets/svgIcons/move_up.svg +0 -3
  379. package/src/assets/svgIcons/optimizer.svg +0 -6
  380. package/src/assets/svgIcons/string_design.svg +0 -5
  381. package/src/assets/svgIcons/string_directions.svg +0 -10
  382. package/src/components/infoText/placeholder.vue +0 -225
  383. package/src/components/spinnerGif/index.vue +0 -98
  384. package/src/components/stringDesign/DropdownMenu/index.vue +0 -898
@@ -1,898 +0,0 @@
1
- <template>
2
- <PageContainer>
3
- <PageTitleContainer>
4
- <SectionTitleText>{{ $gettext('inverters') }}</SectionTitleText>
5
- <ButtonIcon
6
- v-if="hasStringsOrStorage"
7
- custom-color="black"
8
- :icon-name="hasExpandedSection ? 'collapse_all' : 'expand'"
9
- :text="$gettext(hasExpandedSection ? 'collapse_all' : 'expand_all')"
10
- @click="toggleAllSections"
11
- />
12
- </PageTitleContainer>
13
- <SectionContainer v-for="(item, index) in dataList" :key="item.inverterId">
14
- <TopContainer>
15
- <LeftContainer>
16
- <TitleContainer>
17
- <IconWrapper
18
- v-if="item.type != 'optimizer'"
19
- size="36px"
20
- @click="toggleSection(item.inverterId)"
21
- >
22
- <RCIcon
23
- v-if="isItemCollapsible(item)"
24
- color="white"
25
- :name="isExpanded(item.inverterId) ? 'arrow_up' : 'arrow_down'"
26
- size="10px"
27
- />
28
- <IconPlaceholder v-else />
29
- </IconWrapper>
30
- <TextContainer
31
- :style="{ marginLeft: item.type == 'optimizer' ? '36px' : '0' }"
32
- >
33
- <TitleText :title="item.model">
34
- {{
35
- item.type === 'optimizer' && item.quantity
36
- ? item.quantity + ' x'
37
- : ''
38
- }}
39
- {{ item.model }}
40
- </TitleText>
41
- <TitleSubText>
42
- <span>{{ item.brandName }}</span>
43
- <template
44
- v-if="itemHasStrings(item) || item.type === 'optimizer'"
45
- >
46
- <ContainerValue v-if="item.getkWp() > 1">
47
- |
48
- {{
49
- numberToString({
50
- value: item.getkWp(),
51
- numberPrecision: 2,
52
- })
53
- }}
54
- kWp
55
- </ContainerValue>
56
- <ContainerValue v-else>
57
- |
58
- {{
59
- numberToString({
60
- value: 1000 * item.getkWp(),
61
- numberPrecision: 2,
62
- minDecimals: 2,
63
- })
64
- }}
65
- Wp
66
- </ContainerValue>
67
- </template>
68
- </TitleSubText>
69
- </TextContainer>
70
- </TitleContainer>
71
- <MarkersContainer>
72
- <MarkerItem
73
- v-if="item.mppts.length"
74
- :background-color="isTargetRatioInRange(item) ? 'green' : 'red'"
75
- >{{
76
- numberToString({
77
- value: 100 * item.getTargetRatio(),
78
- numberPrecision: 2,
79
- minDecimals: 0,
80
- })
81
- }}%</MarkerItem
82
- >
83
- <MarkerItem v-if="item.hasTemplate && !item.isLoading">
84
- <span
85
- :title="
86
- item.companyProductTemplateName
87
- ? item.companyProductTemplateName
88
- : $gettext('no_template_selected')
89
- "
90
- >
91
- {{
92
- item.companyProductTemplateName
93
- ? item.companyProductTemplateName
94
- : $gettext('no_template_selected')
95
- }}
96
- </span>
97
- </MarkerItem>
98
- <MarkerItem>
99
- <RCIcon color="white" :name="getIconName(item)" size="14px" />
100
- <div>{{ getTypeName(item.type) }}</div>
101
- </MarkerItem>
102
- </MarkersContainer>
103
- <IconsContainer>
104
- <IconWrapper
105
- v-if="nonOptimizerInverterCount > 1 || item.type === 'optimizer'"
106
- >
107
- <RCIcon
108
- :color="item.isLoading ? 'grey' : 'red'"
109
- :cursor="item.isLoading ? 'not-allowed' : 'pointer'"
110
- :is-disabled="item.isLoading"
111
- name="delete"
112
- size="14px"
113
- @click="!item.isLoading && $emit('on-delete', item)"
114
- />
115
- </IconWrapper>
116
- <InfoWrapper v-if="isEditDisabled(item)">
117
- <InfoText
118
- icon-color="grey"
119
- icon-name="edit_button"
120
- is-disabled="true"
121
- :text="$gettext('string_design_edit_not_allowed')"
122
- />
123
- </InfoWrapper>
124
- <IconWrapper
125
- v-else
126
- @click="
127
- !(item.isLoading || isEditDisabled(item)) &&
128
- $emit('on-edit', item)
129
- "
130
- >
131
- <RCIcon
132
- :color="item.isLoading ? 'grey' : 'white'"
133
- :cursor="item.isLoading ? 'not-allowed' : 'pointer'"
134
- :is-disabled="item.isLoading"
135
- name="edit_button"
136
- size="14px"
137
- />
138
- </IconWrapper>
139
- <IconWrapper>
140
- <RCIcon
141
- color="white"
142
- cursor="pointer"
143
- name="document"
144
- size="14px"
145
- @click="$emit('on-datasheet', item)"
146
- />
147
- </IconWrapper>
148
- </IconsContainer>
149
- </LeftContainer>
150
- <SortingContainer v-if="dataList.length > 1">
151
- <SortingIconWrapper
152
- :data-test-id="'move_up_' + index"
153
- :is-disabled="index === 0"
154
- @click="index > 0 && handleMoveClick('up', index)"
155
- >
156
- <RCIcon
157
- :color="index === 0 ? 'grey6' : 'grey3'"
158
- :cursor="index === 0 ? 'not-allowed' : 'pointer'"
159
- name="move_up"
160
- size="14px"
161
- />
162
- </SortingIconWrapper>
163
- <SortingIconWrapper
164
- :data-test-id="'move_down_' + index"
165
- :is-disabled="index === dataList.length - 1"
166
- @click="
167
- index < dataList.length - 1 && handleMoveClick('down', index)
168
- "
169
- >
170
- <RCIcon
171
- :color="index === dataList.length - 1 ? 'grey6' : 'grey3'"
172
- :cursor="
173
- index === dataList.length - 1 ? 'not-allowed' : 'pointer'
174
- "
175
- :is-disabled="index === dataList.length - 1"
176
- name="move_down"
177
- size="14px"
178
- />
179
- </SortingIconWrapper>
180
- </SortingContainer>
181
- </TopContainer>
182
- <BoxContainer
183
- v-for="mppt in item.mppts"
184
- v-show="isExpanded(item.inverterId)"
185
- :key="mppt.mpptId"
186
- >
187
- <BoxTitleWrapper>
188
- <IconWrapper
189
- margin-left="4px"
190
- size="8px"
191
- @click="toggleMppt(mppt.mpptId)"
192
- >
193
- <RCIcon
194
- color="white"
195
- cursor="pointer"
196
- :name="isMpptExpanded(mppt.mpptId) ? 'arrow_up' : 'arrow_down'"
197
- size="10px"
198
- />
199
- </IconWrapper>
200
- <BoxTitleText>{{ mppt.name }}</BoxTitleText>
201
- <BoxIconsContainer>
202
- <BoxIconWrapper>
203
- <RCIcon
204
- color="white"
205
- cursor="pointer"
206
- name="string_design"
207
- size="11px"
208
- />
209
- <div>
210
- {{ mppt.strings.length }}/{{ mppt.getNumberOfTerminals() }}
211
- </div>
212
- </BoxIconWrapper>
213
- <BoxIconWrapper>
214
- <RCIcon
215
- color="white"
216
- cursor="pointer"
217
- name="panels_tool"
218
- size="11px"
219
- />
220
- <div>{{ getNumberOfMpptModules(mppt.strings) }}</div>
221
- </BoxIconWrapper>
222
- </BoxIconsContainer>
223
- </BoxTitleWrapper>
224
- <div v-show="isMpptExpanded(mppt.mpptId)">
225
- <StringBox v-for="string in mppt.strings" :key="string.id">
226
- <StringColorContainer :background-color="string.color" />
227
- <StringContainer>
228
- <div>{{ string.name }}</div>
229
- <StringIconContainer>
230
- <div>{{ string.modules.length }}</div>
231
- <RCIcon color="white" name="module" size="14px" />
232
- </StringIconContainer>
233
- </StringContainer>
234
- </StringBox>
235
- </div>
236
- </BoxContainer>
237
- <template v-if="availableMPPTData(item)">
238
- <BoxContainer
239
- v-for="availableItem in availableMPPTData(item)"
240
- v-show="isExpanded(item.inverterId)"
241
- :key="availableItem.mpptId"
242
- >
243
- <BoxTitleWrapper>
244
- <IconWrapper
245
- margin-left="4px"
246
- size="8px"
247
- @click="toggleMppt(availableItem.mpptId)"
248
- >
249
- <RCIcon
250
- color="white"
251
- cursor="pointer"
252
- :name="
253
- isMpptExpanded(availableItem.mpptId)
254
- ? 'arrow_up'
255
- : 'arrow_down'
256
- "
257
- size="10px"
258
- />
259
- </IconWrapper>
260
- <BoxTitleText>{{ availableItem.name }}</BoxTitleText>
261
- <BoxIconsContainer>
262
- <BoxIconWrapper>
263
- <RCIcon
264
- color="white"
265
- cursor="pointer"
266
- name="string_design"
267
- size="11px"
268
- />
269
- <div>0/{{ availableItem.numberOfTerminals }}</div>
270
- </BoxIconWrapper>
271
- <BoxIconWrapper>
272
- <RCIcon
273
- color="white"
274
- cursor="pointer"
275
- name="panels_tool"
276
- size="11px"
277
- />
278
- <div>0</div>
279
- </BoxIconWrapper>
280
- </BoxIconsContainer>
281
- </BoxTitleWrapper>
282
- <EmptyStringBox v-show="isMpptExpanded(availableItem.mpptId)" />
283
- </BoxContainer>
284
- </template>
285
- <BoxContainer
286
- v-if="item.storageSystem && Object.keys(item.storageSystem).length > 0"
287
- v-show="isExpanded(item.inverterId)"
288
- :key="item.storageSystem.storage_system_id"
289
- >
290
- <BoxTitleWrapper>
291
- <IconWrapper
292
- margin-left="4px"
293
- size="8px"
294
- @click="toggleMppt(item.storageSystem.storage_system_id)"
295
- >
296
- <RCIcon
297
- color="white"
298
- cursor="pointer"
299
- :name="
300
- isMpptExpanded(item.storageSystem.storage_system_id)
301
- ? 'arrow_up'
302
- : 'arrow_down'
303
- "
304
- size="10px"
305
- />
306
- </IconWrapper>
307
- <BoxTitleText>{{ $gettext('battery') }}</BoxTitleText>
308
- </BoxTitleWrapper>
309
- <div v-show="isMpptExpanded(item.storageSystem.storage_system_id)">
310
- <BatteryBox>
311
- <RCIcon color="white" name="battery" size="14px" />
312
- <BatteryDetailsContainer>
313
- <BatteryType>{{ item.storageSystem.brand_name }}</BatteryType>
314
- <BatteryModel>{{ item.storageSystem.model }}</BatteryModel>
315
- </BatteryDetailsContainer>
316
- <BatteryValue>
317
- {{
318
- numberToString({
319
- value: item.storageSystem.nominal_capacity_kWh,
320
- numberPrecision: 2,
321
- minDecimals: 0,
322
- })
323
- }}
324
- kWh
325
- </BatteryValue>
326
- </BatteryBox>
327
- </div>
328
- </BoxContainer>
329
- </SectionContainer>
330
- <DividerContainer v-if="batteryData.length" />
331
- <UnassignedContainer v-if="batteryData.length">
332
- <SectionTitleText>{{ $gettext('battery_information') }}</SectionTitleText>
333
- <BatteryBox
334
- v-for="battery in batteryData"
335
- :key="battery.id"
336
- :is-unassigned="true"
337
- >
338
- <RCIcon color="black" name="battery" size="14px" />
339
- <BatteryDetailsContainer>
340
- <UnassignedType>{{ battery.brand_name }}</UnassignedType>
341
- <UnassignedModel>{{ battery.model }}</UnassignedModel>
342
- </BatteryDetailsContainer>
343
- <BatteryValue>
344
- {{
345
- numberToString({
346
- value: battery.nominal_capacity_kWh,
347
- numberPrecision: 2,
348
- minDecimals: 0,
349
- })
350
- }}
351
- kWh
352
- </BatteryValue>
353
- </BatteryBox>
354
- </UnassignedContainer>
355
- </PageContainer>
356
- </template>
357
-
358
- <script>
359
- // import DropdownMenu from '@eturnity/eturnity_reusable_components/src/components/stringDesign/DropdownMenu'
360
- import styled from 'vue3-styled-components'
361
- import RCIcon from '../../icon'
362
- import ButtonIcon from '../../buttons/buttonIcon'
363
- import InfoText from '../../infoText'
364
- import { numberToString } from '../../../helpers/numberConverter'
365
-
366
- const PageContainer = styled.div`
367
- position: relative;
368
- `
369
-
370
- const SectionContainer = styled.div`
371
- &:not(:last-child) {
372
- margin-bottom: 8px;
373
- }
374
- background-color: ${(props) => props.theme.colors.black};
375
- padding: 8px;
376
- border-radius: 4px;
377
- color: ${(props) => props.theme.colors.white};
378
- `
379
-
380
- const TitleContainer = styled.div`
381
- display: flex;
382
- align-items: center;
383
- `
384
-
385
- const IconsContainer = styled.div`
386
- display: flex;
387
- align-items: center;
388
- margin-left: 36px;
389
- `
390
-
391
- const TextContainer = styled.div`
392
- display: grid;
393
- `
394
-
395
- const TitleText = styled.div`
396
- font-size: 14px;
397
- white-space: nowrap;
398
- overflow: hidden;
399
- text-overflow: ellipsis;
400
- `
401
-
402
- const TitleSubText = styled.div`
403
- font-size: 12px;
404
- display: flex;
405
- gap: 4px;
406
- `
407
-
408
- const MarkersContainer = styled.div`
409
- display: flex;
410
- flex-wrap: wrap;
411
- gap: 8px;
412
- margin: 4px 0 2px 36px;
413
- align-items: end;
414
- `
415
-
416
- const MarkerAttrs = { backgroundColor: String }
417
- const MarkerItem = styled('div', MarkerAttrs)`
418
- display: flex;
419
- gap: 5px;
420
- align-items: center;
421
- padding: 2px 7px;
422
- border-radius: 4px;
423
- background-color: ${(props) =>
424
- props.backgroundColor
425
- ? props.theme.colors[props.backgroundColor]
426
- : props.theme.colors.grey6};
427
- font-size: 11px;
428
- color: ${(props) => props.theme.colors.white};
429
- max-width: 11ch;
430
- white-space: nowrap;
431
- overflow: hidden;
432
- text-overflow: ellipsis;
433
- & > span {
434
- overflow: hidden;
435
- text-overflow: ellipsis;
436
- }
437
- `
438
-
439
- const ContainerValue = styled.div`
440
- font-size: 12px;
441
- `
442
-
443
- const IconAttrs = {
444
- size: { type: String, default: '36px' },
445
- marginLeft: String,
446
- }
447
- const IconWrapper = styled('div', IconAttrs)`
448
- display: flex;
449
- align-items: center;
450
- justify-content: center;
451
- border-radius: 4px;
452
- cursor: pointer;
453
- width: ${(props) => props.size};
454
- height: ${(props) => props.size};
455
- margin-left: ${(props) => props.marginLeft};
456
- &:hover {
457
- background: ${(props) =>
458
- props.marginLeft ? 'transparent' : 'rgba(255, 255, 255, 0.1)'};
459
- }
460
-
461
- &:active {
462
- background: rgba(255, 255, 255, 0.2);
463
- }
464
- `
465
-
466
- const BoxContainer = styled.div`
467
- border-radius: 4px;
468
- background: ${(props) => props.theme.colors.grey6};
469
- padding: 8px;
470
- margin-top: 8px;
471
- margin-left: 30px;
472
- `
473
-
474
- const BoxTitleWrapper = styled.div`
475
- display: flex;
476
- align-items: center;
477
- gap: 8px;
478
- `
479
-
480
- const BoxTitleText = styled.div`
481
- font-size: 13px;
482
- `
483
-
484
- const BoxIconsContainer = styled.div`
485
- display: flex;
486
- gap: 8px;
487
- align-items: center;
488
- margin-left: auto;
489
- font-size: 11px;
490
- `
491
-
492
- const BoxIconWrapper = styled.div`
493
- display: flex;
494
- align-items: center;
495
- justify-content: center;
496
- gap: 4px;
497
- padding: 4px;
498
- `
499
-
500
- const StringBox = styled.div`
501
- display: grid;
502
- grid-template-columns: auto 1fr;
503
- margin-top: 8px;
504
- border-radius: 4px;
505
- border: 1px solid ${(props) => props.theme.colors.grey3};
506
- `
507
-
508
- const StringContainer = styled.div`
509
- display: flex;
510
- justify-content: space-between;
511
- gap: 8px;
512
- padding: 8px;
513
- font-size: 11px;
514
- `
515
-
516
- const StringColorAttrs = { backgroundColor: String }
517
- const StringColorContainer = styled('div', StringColorAttrs)`
518
- background-color: ${(props) => props.backgroundColor};
519
- width: 22px;
520
- min-height: 100%;
521
- border-top-left-radius: 4px;
522
- border-bottom-left-radius: 4px;
523
- `
524
-
525
- const StringIconContainer = styled.div`
526
- display: flex;
527
- align-items: center;
528
- justify-content: center;
529
- gap: 2px;
530
- padding: 0 4px;
531
- `
532
-
533
- const PageTitleContainer = styled.div`
534
- position: sticky;
535
- top: 0;
536
- background-color: ${(props) => props.theme.colors.black};
537
- z-index: 99;
538
- padding: 8px;
539
- display: flex;
540
- justify-content: space-between;
541
- align-items: center;
542
- padding-bottom: 8px;
543
- `
544
-
545
- const SectionTitleText = styled.div`
546
- font-size: 14px;
547
- font-weight: 700;
548
- color: ${(props) => props.theme.colors.white};
549
- `
550
-
551
- const BatteryBoxAttrs = { isUnassigned: Boolean }
552
- const BatteryBox = styled('div', BatteryBoxAttrs)`
553
- display: flex;
554
- align-items: center;
555
- gap: 8px;
556
- border: 1px solid ${(props) => props.theme.colors.white};
557
- border-radius: 4px;
558
- padding: 8px;
559
- margin-top: 8px;
560
- background-color: ${(props) =>
561
- props.isUnassigned ? props.theme.colors.grey2 : ''};
562
- `
563
-
564
- const BatteryDetailsContainer = styled.div`
565
- display: flex;
566
- flex-direction: column;
567
- gap: 4px;
568
- `
569
-
570
- const BatteryType = styled.div`
571
- font-size: 11px;
572
- `
573
-
574
- const BatteryModel = styled.div`
575
- font-size: 10px;
576
- `
577
-
578
- const BatteryValue = styled.div`
579
- font-size: 10px;
580
- align-self: flex-end;
581
- margin-left: auto;
582
- `
583
- const TopContainer = styled.div`
584
- display: flex;
585
- justify-content: space-between;
586
- `
587
-
588
- const LeftContainer = styled.div``
589
-
590
- const SortingContainer = styled.div`
591
- display: flex;
592
- flex-direction: column;
593
- align-items: center;
594
- `
595
-
596
- const SortingIconWrapperAttrs = { isDisabled: Boolean }
597
- const SortingIconWrapper = styled('div', SortingIconWrapperAttrs)`
598
- cursor: ${(props) => (props.isDisabled ? 'not-allowed' : 'pointer')};
599
- width: 30px;
600
- height: 30px;
601
- display: flex;
602
- align-items: center;
603
- justify-content: center;
604
- `
605
-
606
- const UnassignedContainer = styled.div`
607
- margin-top: 8px;
608
- `
609
-
610
- const DividerContainer = styled.div`
611
- height: 0.5px;
612
- width: 100%;
613
- background-color: ${(props) => props.theme.colors.grey4};
614
- opacity: 0.6;
615
- `
616
-
617
- const UnassignedType = styled.div`
618
- font-size: 12px;
619
- line-height: 150%;
620
- `
621
-
622
- const UnassignedModel = styled.div`
623
- font-size: 10px;
624
- line-height: 150%;
625
- `
626
-
627
- const IconPlaceholder = styled.div`
628
- width: 36px;
629
- `
630
-
631
- const EmptyStringBox = styled.div`
632
- border: 0.8px dashed ${(props) => props.theme.colors.black};
633
- border-radius: 4px;
634
- padding: 8px 8px 8px 0;
635
- height: 32px;
636
- width: 233px;
637
- margin-top: 8px;
638
- `
639
-
640
- const InfoWrapper = styled.div`
641
- display: flex;
642
- align-items: center;
643
- justify-content: center;
644
- width: 36px;
645
- `
646
-
647
- export default {
648
- name: 'DropdownMenu',
649
- components: {
650
- SectionContainer,
651
- TitleContainer,
652
- IconsContainer,
653
- TextContainer,
654
- TitleText,
655
- TitleSubText,
656
- RCIcon,
657
- MarkersContainer,
658
- MarkerItem,
659
- ContainerValue,
660
- IconWrapper,
661
- BoxContainer,
662
- BoxTitleWrapper,
663
- BoxTitleText,
664
- BoxIconsContainer,
665
- BoxIconWrapper,
666
- StringBox,
667
- StringContainer,
668
- StringColorContainer,
669
- StringIconContainer,
670
- PageTitleContainer,
671
- SectionTitleText,
672
- ButtonIcon,
673
- PageContainer,
674
- BatteryBox,
675
- BatteryDetailsContainer,
676
- BatteryType,
677
- BatteryModel,
678
- BatteryValue,
679
- TopContainer,
680
- LeftContainer,
681
- SortingContainer,
682
- SortingIconWrapper,
683
- UnassignedContainer,
684
- DividerContainer,
685
- UnassignedType,
686
- UnassignedModel,
687
- IconPlaceholder,
688
- EmptyStringBox,
689
- InfoText,
690
- InfoWrapper,
691
- },
692
- props: {
693
- dataList: {
694
- required: true,
695
- type: Array,
696
- },
697
- batteryData: {
698
- required: true,
699
- type: Array,
700
- },
701
- inverterParameters: {
702
- required: true,
703
- type: Object,
704
- },
705
- isPvAndBatteryActive: {
706
- required: false,
707
- type: Boolean,
708
- },
709
- },
710
- emits: ['on-edit', 'on-move'],
711
- data() {
712
- return {
713
- expandedInverters: [],
714
- expandedMppts: [],
715
- numberToString,
716
- }
717
- },
718
- computed: {
719
- hasExpandedSection() {
720
- return this.expandedInverters.length > 0
721
- },
722
- hasStringsOrStorage() {
723
- return this.dataList.some((item) => {
724
- return (
725
- item.mppts.some((mppt) => mppt.strings.length > 0) ||
726
- (item.storageSystem && Object.keys(item.storageSystem).length > 0)
727
- )
728
- })
729
- },
730
- nonOptimizerInverterCount() {
731
- return this.dataList.filter((item) => item.type !== 'optimizer').length
732
- },
733
- },
734
- created() {
735
- // Expand all items on creation
736
- if (this.hasStringsOrStorage) {
737
- this.expandedInverters = this.dataList.map((item) => item.inverterId)
738
- this.expandedMppts = this.dataList.flatMap((item) => {
739
- const availableMppts = this.availableMPPTData(item)
740
- return [
741
- ...item.mppts.map((mppt) => mppt.mpptId),
742
- ...(item.storageSystem
743
- ? [item.storageSystem.storage_system_id]
744
- : []),
745
- ...(availableMppts?.map((mppt) => mppt.mpptId) || []),
746
- ]
747
- })
748
- }
749
- },
750
- methods: {
751
- isTargetRatioInRange(inverter) {
752
- const currentTargetRatio = inverter.getTargetRatio()
753
- return (
754
- this.inverterParameters.target_power_ratio - 20 <=
755
- 100 * currentTargetRatio &&
756
- this.inverterParameters.target_power_ratio + 20 >=
757
- 100 * currentTargetRatio
758
- )
759
- },
760
- isEditDisabled(item) {
761
- const isOptimizer = item.type === 'optimizer'
762
- const hasTemplate = item.hasTemplate
763
- const isHybrid = item.type === 'pv_storage'
764
- const allTechnologiesActive = this.isPvAndBatteryActive
765
-
766
- if (isOptimizer) {
767
- return false
768
- } else if (isHybrid && !allTechnologiesActive) {
769
- return true
770
- } else if (isHybrid && allTechnologiesActive) {
771
- return false
772
- } else if (!hasTemplate) {
773
- return true
774
- }
775
- return false
776
- },
777
- getNumberOfMpptModules(strings) {
778
- return strings.reduce((acc, curr) => acc + curr.modules.length, 0)
779
- },
780
- availableMPPTData(item) {
781
- if (item.type === 'optimizer' || item.type === 'storage') {
782
- return []
783
- }
784
- const existingTrackerNumbers = item.mppts.map(
785
- (mppt) => mppt.trackerNumber
786
- )
787
- const filteredAvailableMPPTs = item.availableMPPTs.filter(
788
- (mppt) => !existingTrackerNumbers.includes(mppt.tracker_number)
789
- )
790
-
791
- let mpptData = []
792
- filteredAvailableMPPTs.forEach((mppt) => {
793
- mpptData.push({
794
- mpptId:
795
- 'available_mppt_' +
796
- item.companyComponentLibraryId +
797
- '_' +
798
- mppt.tracker_number,
799
- numberOfTerminals: mppt.number_of_terminals,
800
- name:
801
- 'MPPT ' +
802
- (item.mppts.length + filteredAvailableMPPTs.indexOf(mppt) + 1),
803
- })
804
- })
805
- return mpptData
806
- },
807
- isExpanded(id) {
808
- return this.expandedInverters.includes(id)
809
- },
810
- isMpptExpanded(id) {
811
- return this.expandedMppts.includes(id)
812
- },
813
- toggleSection(id) {
814
- const index = this.expandedInverters.indexOf(id)
815
- if (index === -1) {
816
- this.expandedInverters.push(id)
817
- } else {
818
- this.expandedInverters.splice(index, 1)
819
- }
820
- },
821
- toggleMppt(id) {
822
- const index = this.expandedMppts.indexOf(id)
823
- if (index === -1) {
824
- this.expandedMppts.push(id)
825
- } else {
826
- this.expandedMppts.splice(index, 1)
827
- }
828
- },
829
- toggleAllSections() {
830
- if (this.hasExpandedSection) {
831
- this.expandedInverters = []
832
- this.expandedMppts = []
833
- } else {
834
- this.expandedInverters = this.dataList.map((item) => item.inverterId)
835
- this.expandedMppts = this.dataList.flatMap((item) => {
836
- return [
837
- ...item.mppts.map((mppt) => mppt.mpptId),
838
- ...(item.storageSystem
839
- ? [item.storageSystem.storage_system_id]
840
- : []),
841
- ]
842
- })
843
- }
844
- },
845
- isItemCollapsible(item) {
846
- return (
847
- item.mppts.some((mppt) => mppt.strings.length > 0) ||
848
- (item.storageSystem && Object.keys(item.storageSystem).length > 0) ||
849
- item.availableMPPTs.length
850
- )
851
- },
852
- itemHasStrings(item) {
853
- return item.mppts.some((mppt) => mppt.strings.length > 0)
854
- },
855
- getTypeName(type) {
856
- const value = type.toLowerCase()
857
- switch (value) {
858
- case 'pv':
859
- return this.$gettext('PV')
860
- case 'pv_storage':
861
- return this.$gettext('hybrid')
862
- case 'storage':
863
- return this.$gettext('battery')
864
- case 'optimizer':
865
- return this.$gettext('inverter_type_optimizer')
866
- default:
867
- return this.$gettext('PV')
868
- }
869
- },
870
- getIconName(item) {
871
- const value =
872
- item.type === 'pv_storage'
873
- ? item.iconName.technology_choice
874
- : item.type
875
- switch (value) {
876
- case 'photovoltaics':
877
- return 'pv'
878
- case 'pv':
879
- return 'pv'
880
- case 'storage':
881
- return 'battery'
882
- case 'battery':
883
- return 'battery'
884
- case 'optimizer':
885
- return 'optimizer'
886
- default:
887
- return 'pv'
888
- }
889
- },
890
- handleMoveClick(direction, index) {
891
- this.$emit('on-move', {
892
- direction: direction,
893
- index: index,
894
- })
895
- },
896
- },
897
- }
898
- </script>