@rws-framework/client 2.13.1 → 2.13.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 (288) hide show
  1. package/.bin/add-v.sh +9 -9
  2. package/.bin/emerge.sh +15 -15
  3. package/.emerge-fast.yaml +46 -46
  4. package/.emerge-typescript-template.yaml +23 -23
  5. package/.emerge-vis-output/fast-element/emerge-file_result_dependency_graph.graphml +693 -693
  6. package/.emerge-vis-output/fast-element/emerge-filesystem_graph.graphml +705 -705
  7. package/.emerge-vis-output/fast-element/emerge-statistics-metrics.txt +440 -440
  8. package/.emerge-vis-output/fast-element/html/emerge.html +500 -500
  9. package/.emerge-vis-output/fast-element/html/jsconfig.json +8 -8
  10. package/.emerge-vis-output/fast-element/html/resources/css/custom.css +211 -211
  11. package/.emerge-vis-output/fast-element/html/resources/js/emerge_common.js +44 -44
  12. package/.emerge-vis-output/fast-element/html/resources/js/emerge_data.js +13 -13
  13. package/.emerge-vis-output/fast-element/html/resources/js/emerge_git.js +1413 -1413
  14. package/.emerge-vis-output/fast-element/html/resources/js/emerge_graph.js +539 -539
  15. package/.emerge-vis-output/fast-element/html/resources/js/emerge_heatmap.js +219 -219
  16. package/.emerge-vis-output/fast-element/html/resources/js/emerge_hull.js +179 -179
  17. package/.emerge-vis-output/fast-element/html/resources/js/emerge_main.js +1002 -1002
  18. package/.emerge-vis-output/fast-element/html/resources/js/emerge_search.js +71 -71
  19. package/.emerge-vis-output/fast-element/html/resources/js/emerge_ui.js +199 -199
  20. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-grid.css +4123 -4123
  21. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-grid.min.css +6 -6
  22. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-grid.rtl.css +4122 -4122
  23. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-grid.rtl.min.css +6 -6
  24. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-reboot.css +487 -487
  25. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-reboot.min.css +6 -6
  26. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-reboot.rtl.css +484 -484
  27. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-reboot.rtl.min.css +6 -6
  28. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-utilities.css +4265 -4265
  29. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-utilities.min.css +6 -6
  30. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-utilities.rtl.css +4256 -4256
  31. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap-utilities.rtl.min.css +6 -6
  32. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap.css +10877 -10877
  33. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap.min.css +6 -6
  34. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap.rtl.css +10841 -10841
  35. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/css/bootstrap.rtl.min.css +6 -6
  36. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.bundle.js +7075 -7075
  37. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.bundle.min.js +6 -6
  38. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.esm.js +5202 -5202
  39. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.esm.min.js +6 -6
  40. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.js +5249 -5249
  41. package/.emerge-vis-output/fast-element/html/vendors/bootstrap/js/bootstrap.min.js +6 -6
  42. package/.emerge-vis-output/fast-element/html/vendors/d3/d3.v7.8.4.min.js +2 -2
  43. package/.emerge-vis-output/fast-element/html/vendors/d3/d3.v7.min.js +2 -2
  44. package/.emerge-vis-output/fast-element/html/vendors/dark-mode-switch/css/dark-mode.css +148 -148
  45. package/.emerge-vis-output/fast-element/html/vendors/daterangepicker/daterangepicker.min.js +7 -7
  46. package/.emerge-vis-output/fast-element/html/vendors/daterangepicker/moment.min.js +6 -6
  47. package/.emerge-vis-output/fast-element/html/vendors/hull/hull.js +373 -373
  48. package/.emerge-vis-output/fast-element/html/vendors/jquery/jquery-3.6.0.min.js +2 -2
  49. package/.emerge-vis-output/fast-element/html/vendors/popper/popper.min.js +6 -6
  50. package/.emerge-vis-output/fast-element/html/vendors/simpleheat/simpleheat.js +141 -141
  51. package/.emerge-vis-output/fast-foundation/emerge-file_result_dependency_graph.graphml +4043 -4043
  52. package/.emerge-vis-output/fast-foundation/emerge-filesystem_graph.graphml +4538 -4538
  53. package/.emerge-vis-output/fast-foundation/emerge-statistics-metrics.txt +2510 -2510
  54. package/.emerge-vis-output/fast-foundation/html/emerge.html +500 -500
  55. package/.emerge-vis-output/fast-foundation/html/jsconfig.json +8 -8
  56. package/.emerge-vis-output/fast-foundation/html/resources/css/custom.css +211 -211
  57. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_common.js +44 -44
  58. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_data.js +13 -13
  59. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_git.js +1413 -1413
  60. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_graph.js +539 -539
  61. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_heatmap.js +219 -219
  62. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_hull.js +179 -179
  63. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_main.js +1002 -1002
  64. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_search.js +71 -71
  65. package/.emerge-vis-output/fast-foundation/html/resources/js/emerge_ui.js +199 -199
  66. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-grid.css +4123 -4123
  67. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-grid.min.css +6 -6
  68. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-grid.rtl.css +4122 -4122
  69. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-grid.rtl.min.css +6 -6
  70. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-reboot.css +487 -487
  71. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-reboot.min.css +6 -6
  72. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-reboot.rtl.css +484 -484
  73. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-reboot.rtl.min.css +6 -6
  74. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-utilities.css +4265 -4265
  75. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-utilities.min.css +6 -6
  76. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-utilities.rtl.css +4256 -4256
  77. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap-utilities.rtl.min.css +6 -6
  78. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap.css +10877 -10877
  79. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap.min.css +6 -6
  80. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap.rtl.css +10841 -10841
  81. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/css/bootstrap.rtl.min.css +6 -6
  82. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.bundle.js +7075 -7075
  83. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.bundle.min.js +6 -6
  84. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.esm.js +5202 -5202
  85. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.esm.min.js +6 -6
  86. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.js +5249 -5249
  87. package/.emerge-vis-output/fast-foundation/html/vendors/bootstrap/js/bootstrap.min.js +6 -6
  88. package/.emerge-vis-output/fast-foundation/html/vendors/d3/d3.v7.8.4.min.js +2 -2
  89. package/.emerge-vis-output/fast-foundation/html/vendors/d3/d3.v7.min.js +2 -2
  90. package/.emerge-vis-output/fast-foundation/html/vendors/dark-mode-switch/css/dark-mode.css +148 -148
  91. package/.emerge-vis-output/fast-foundation/html/vendors/daterangepicker/daterangepicker.min.js +7 -7
  92. package/.emerge-vis-output/fast-foundation/html/vendors/daterangepicker/moment.min.js +6 -6
  93. package/.emerge-vis-output/fast-foundation/html/vendors/hull/hull.js +373 -373
  94. package/.emerge-vis-output/fast-foundation/html/vendors/jquery/jquery-3.6.0.min.js +2 -2
  95. package/.emerge-vis-output/fast-foundation/html/vendors/popper/popper.min.js +6 -6
  96. package/.emerge-vis-output/fast-foundation/html/vendors/simpleheat/simpleheat.js +141 -141
  97. package/.emerge-vis-output/rws-client/emerge-file_result_dependency_graph.graphml +1143 -1143
  98. package/.emerge-vis-output/rws-client/emerge-filesystem_graph.graphml +1003 -1003
  99. package/.emerge-vis-output/rws-client/emerge-statistics-metrics.txt +655 -655
  100. package/.emerge-vis-output/rws-client/html/emerge.html +500 -500
  101. package/.emerge-vis-output/rws-client/html/jsconfig.json +8 -8
  102. package/.emerge-vis-output/rws-client/html/resources/css/custom.css +211 -211
  103. package/.emerge-vis-output/rws-client/html/resources/js/emerge_common.js +44 -44
  104. package/.emerge-vis-output/rws-client/html/resources/js/emerge_data.js +13 -13
  105. package/.emerge-vis-output/rws-client/html/resources/js/emerge_git.js +1413 -1413
  106. package/.emerge-vis-output/rws-client/html/resources/js/emerge_graph.js +539 -539
  107. package/.emerge-vis-output/rws-client/html/resources/js/emerge_heatmap.js +219 -219
  108. package/.emerge-vis-output/rws-client/html/resources/js/emerge_hull.js +179 -179
  109. package/.emerge-vis-output/rws-client/html/resources/js/emerge_main.js +1002 -1002
  110. package/.emerge-vis-output/rws-client/html/resources/js/emerge_search.js +71 -71
  111. package/.emerge-vis-output/rws-client/html/resources/js/emerge_ui.js +199 -199
  112. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-grid.css +4123 -4123
  113. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-grid.min.css +6 -6
  114. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-grid.rtl.css +4122 -4122
  115. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-grid.rtl.min.css +6 -6
  116. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-reboot.css +487 -487
  117. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-reboot.min.css +6 -6
  118. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-reboot.rtl.css +484 -484
  119. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-reboot.rtl.min.css +6 -6
  120. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-utilities.css +4265 -4265
  121. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-utilities.min.css +6 -6
  122. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-utilities.rtl.css +4256 -4256
  123. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap-utilities.rtl.min.css +6 -6
  124. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap.css +10877 -10877
  125. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap.min.css +6 -6
  126. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap.rtl.css +10841 -10841
  127. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/css/bootstrap.rtl.min.css +6 -6
  128. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.bundle.js +7075 -7075
  129. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.bundle.min.js +6 -6
  130. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.esm.js +5202 -5202
  131. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.esm.min.js +6 -6
  132. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.js +5249 -5249
  133. package/.emerge-vis-output/rws-client/html/vendors/bootstrap/js/bootstrap.min.js +6 -6
  134. package/.emerge-vis-output/rws-client/html/vendors/d3/d3.v7.8.4.min.js +2 -2
  135. package/.emerge-vis-output/rws-client/html/vendors/d3/d3.v7.min.js +2 -2
  136. package/.emerge-vis-output/rws-client/html/vendors/dark-mode-switch/css/dark-mode.css +148 -148
  137. package/.emerge-vis-output/rws-client/html/vendors/daterangepicker/daterangepicker.min.js +7 -7
  138. package/.emerge-vis-output/rws-client/html/vendors/daterangepicker/moment.min.js +6 -6
  139. package/.emerge-vis-output/rws-client/html/vendors/hull/hull.js +373 -373
  140. package/.emerge-vis-output/rws-client/html/vendors/jquery/jquery-3.6.0.min.js +2 -2
  141. package/.emerge-vis-output/rws-client/html/vendors/popper/popper.min.js +6 -6
  142. package/.emerge-vis-output/rws-client/html/vendors/simpleheat/simpleheat.js +141 -141
  143. package/.eslintrc.json +51 -51
  144. package/.gitmodules +2 -2
  145. package/.setup/.eslintrc.json +11 -11
  146. package/.setup/_base.eslintrc.json +48 -48
  147. package/.setup/tsconfig.json +28 -28
  148. package/PLUGINS.MD +188 -188
  149. package/README.md +1023 -1023
  150. package/_tools.js +396 -396
  151. package/builder/vite/index.ts +4 -4
  152. package/{cfg/build_steps → builder}/vite/loaders/html.ts +11 -11
  153. package/{cfg/build_steps → builder}/vite/loaders/index.ts +8 -8
  154. package/{cfg/build_steps → builder}/vite/loaders/loader.type.ts +27 -27
  155. package/{cfg/build_steps → builder}/vite/loaders/scss.ts +32 -32
  156. package/{cfg/build_steps → builder}/vite/loaders/ts.ts +309 -312
  157. package/builder/vite/rws.vite.config.ts +56 -49
  158. package/{cfg/build_steps → builder}/vite/rws_scss_plugin.ts +61 -60
  159. package/{cfg/build_steps → builder}/vite/scss/_compiler.ts +95 -94
  160. package/{cfg/build_steps → builder}/vite/scss/_fonts.ts +80 -80
  161. package/{cfg/build_steps → builder}/vite/scss/_fs.ts +83 -81
  162. package/{cfg/build_steps → builder}/vite/scss/_import.ts +191 -184
  163. package/builder/webpack/after/copy.js +78 -78
  164. package/builder/webpack/after/sw.js +13 -13
  165. package/builder/webpack/index.js +10 -10
  166. package/builder/webpack/loaders/rws_fast_html_loader.js +17 -17
  167. package/builder/webpack/loaders/rws_fast_scss_loader.js +43 -43
  168. package/builder/webpack/loaders/rws_fast_ts_loader.js +96 -96
  169. package/builder/webpack/loaders/ts/html_error.js +19 -19
  170. package/builder/webpack/rws.webpack.config.js +169 -169
  171. package/builder/webpack/rws_scss_plugin.js +62 -62
  172. package/builder/webpack/rws_webpack_plugin.js +137 -137
  173. package/builder/webpack/scss/_compiler.js +97 -97
  174. package/builder/webpack/scss/_fonts.js +80 -80
  175. package/builder/webpack/scss/_fs.js +84 -84
  176. package/builder/webpack/scss/_import.js +186 -186
  177. package/cfg/_default.cfg.js +26 -26
  178. package/cfg/_storage.d.ts +22 -22
  179. package/cfg/_storage.js +42 -42
  180. package/cfg/build_steps/vite/_build_config.ts +105 -105
  181. package/cfg/build_steps/vite/_env_defines.ts +17 -17
  182. package/cfg/build_steps/vite/_loaders.ts +187 -184
  183. package/cfg/build_steps/vite/index.ts +2 -2
  184. package/cfg/build_steps/vite/types.ts +7 -7
  185. package/cfg/build_steps/webpack/_actions.js +85 -85
  186. package/cfg/build_steps/webpack/_aliases.js +9 -9
  187. package/cfg/build_steps/webpack/_build_config.js +76 -76
  188. package/cfg/build_steps/webpack/_cache.js +98 -98
  189. package/cfg/build_steps/webpack/_component_handling.js +60 -60
  190. package/cfg/build_steps/webpack/_dev_servers.js +14 -14
  191. package/cfg/build_steps/webpack/_env_defines.js +18 -18
  192. package/cfg/build_steps/webpack/_info.js +18 -18
  193. package/cfg/build_steps/webpack/_loaders.js +223 -223
  194. package/cfg/build_steps/webpack/_plugins.js +102 -102
  195. package/cfg/build_steps/webpack/_production.js +37 -37
  196. package/cfg/build_steps/webpack/_rws_externals.js +68 -68
  197. package/cfg/build_steps/webpack/_timing.js +52 -52
  198. package/cfg/build_steps/webpack/_webpack_config.js +58 -58
  199. package/cfg/tsconfigSetup.js +150 -150
  200. package/console.js +86 -86
  201. package/docs/assets/26e93147f10415a0ed4a.svg +6 -6
  202. package/docs/assets/75c9471662e97ee24f29.svg +7 -7
  203. package/docs/assets/db90e4df2373980c497d.svg +9 -9
  204. package/docs/assets/highlight.css +127 -127
  205. package/docs/assets/main.js +59 -59
  206. package/docs/assets/style.css +1414 -1414
  207. package/docs/classes/ApiServiceInstance.html +25 -25
  208. package/docs/classes/ConfigServiceInstance.html +21 -21
  209. package/docs/classes/DOMServiceInstance.html +17 -17
  210. package/docs/classes/NotifyServiceInstance.html +15 -15
  211. package/docs/classes/RWSClientInstance.html +45 -45
  212. package/docs/classes/RWSPlugin.html +13 -13
  213. package/docs/classes/RWSService.html +10 -10
  214. package/docs/classes/RWSViewComponent.html +1022 -1022
  215. package/docs/classes/ServiceWorkerServiceInstance.html +13 -13
  216. package/docs/classes/UtilsServiceInstance.html +13 -13
  217. package/docs/functions/attr.html +5 -5
  218. package/docs/functions/observable.html +3 -3
  219. package/docs/index.html +179 -179
  220. package/docs/interfaces/HTMLTag.html +3 -3
  221. package/docs/interfaces/IRWSConfig.html +20 -20
  222. package/docs/interfaces/IRWSDecoratorOptions.html +5 -5
  223. package/docs/interfaces/IRWSHttpRoute.html +2 -2
  224. package/docs/interfaces/IRWSPrefixedHTTProutes.html +2 -2
  225. package/docs/interfaces/IRWSUser.html +5 -5
  226. package/docs/modules.html +45 -45
  227. package/foundation/index.js +1 -1
  228. package/foundation/rws-foundation.d.ts +7 -7
  229. package/foundation/rws-foundation.js +7 -7
  230. package/package.json +108 -108
  231. package/service_worker/src/_service_worker.ts +83 -83
  232. package/service_worker/tsconfig.json +20 -20
  233. package/service_worker/webpack.config.js +66 -66
  234. package/src/client/components.ts +67 -67
  235. package/src/client/config.ts +165 -165
  236. package/src/client/services.ts +27 -27
  237. package/src/client.ts +212 -212
  238. package/src/components/_attrs/_default_observable_accessor.ts +8 -8
  239. package/src/components/_attrs/_extended_accessor.ts +40 -40
  240. package/src/components/_attrs/_external_handler.ts +7 -7
  241. package/src/components/_attrs/_external_observable_accessor.ts +8 -8
  242. package/src/components/_attrs/angular-attr.ts +34 -34
  243. package/src/components/_attrs/external-attr.ts +59 -59
  244. package/src/components/_attrs/external-observable.ts +52 -52
  245. package/src/components/_attrs/sanitize-html.ts +80 -80
  246. package/src/components/_component.ts +245 -245
  247. package/src/components/_container.ts +15 -15
  248. package/src/components/_decorator.ts +122 -122
  249. package/src/components/_decorators/RWSFillBuild.ts +54 -54
  250. package/src/components/_decorators/RWSInject.ts +49 -49
  251. package/src/components/_decorators/RWSService.ts +11 -11
  252. package/src/components/_decorators/_di.ts +15 -15
  253. package/src/components/_definitions.ts +64 -64
  254. package/src/components/_event_handling.ts +40 -40
  255. package/src/components/index.ts +14 -14
  256. package/src/components/loader/component.ts +12 -12
  257. package/src/components/loader/styles/layout.scss +13 -13
  258. package/src/components/progress/component.ts +54 -54
  259. package/src/components/progress/styles/layout.scss +90 -90
  260. package/src/components/progress/template.html +24 -24
  261. package/src/components/uploader/component.ts +83 -83
  262. package/src/components/uploader/styles/layout.scss +130 -130
  263. package/src/components/uploader/template.html +16 -16
  264. package/src/index.ts +93 -93
  265. package/src/plugins/_builder.js +31 -31
  266. package/src/plugins/_plugin.ts +63 -63
  267. package/src/services/ApiService.ts +242 -242
  268. package/src/services/ConfigService.ts +134 -134
  269. package/src/services/DOMService.ts +100 -100
  270. package/src/services/NotifyService.ts +47 -47
  271. package/src/services/ServiceWorkerService.ts +60 -60
  272. package/src/services/UtilsService.ts +60 -60
  273. package/src/services/_service.ts +64 -64
  274. package/src/styles/_darkreader.scss +30 -30
  275. package/src/styles/_grid.scss +75 -75
  276. package/src/styles/_misc.scss +8 -8
  277. package/src/styles/_scrollbars.scss +40 -40
  278. package/src/styles/includes.scss +4 -4
  279. package/src/types/IRWSConfig.ts +30 -30
  280. package/src/types/IRWSPlugin.ts +18 -18
  281. package/src/types/IRWSUser.ts +6 -6
  282. package/src/types/IRWSViewComponent.ts +36 -36
  283. package/src/types/RWSNotify.ts +6 -6
  284. package/src/types/RWSWindow.ts +41 -41
  285. package/tsconfig.json +30 -30
  286. package/typedoc.json +13 -13
  287. package/types/declarations.d.ts +8 -8
  288. package/types/docs-typings.d.ts +15 -15
@@ -1,501 +1,501 @@
1
- <!DOCTYPE html>
2
- <meta charset="utf-8">
3
-
4
- <head>
5
- <!-- bootstrap css v5.2.3 -->
6
- <link rel="stylesheet" type="text/css" href="vendors/bootstrap/css/bootstrap.css">
7
-
8
- <link rel="stylesheet" type="text/css" href="resources/css/custom.css" />
9
-
10
- <!-- dark-mode-switch css -->
11
- <link rel="stylesheet" href="vendors/dark-mode-switch/css/dark-mode.css">
12
-
13
- <!-- jquery js -->
14
- <script type="text/javascript" src="vendors/jquery/jquery-3.6.0.min.js"></script>
15
- <!-- popperjs/core v2.11.6 -->
16
- <script type="text/javascript" src="vendors/popper/popper.min.js"></script>
17
- <!-- bootstrap js v5.2.3 -->
18
- <script type="text/javascript" src="vendors/bootstrap/js/bootstrap.min.js"></script>
19
-
20
- <!-- daterange picker | https://github.com/dangrossman/daterangepicker -->
21
- <script type="text/javascript" src="vendors/daterangepicker/moment.min.js"></script>
22
- <script type="text/javascript" src="vendors/daterangepicker/daterangepicker.min.js"></script>
23
- <link rel="stylesheet" type="text/css" href="vendors/daterangepicker/daterangepicker.css"/>
24
-
25
- <!-- d3 js -->
26
- <script src="vendors/d3/d3.v7.8.4.min.js"></script>
27
-
28
- <!-- Hull.js -->
29
- <script type="text/javascript" src="vendors/hull/hull.js"></script>
30
- <!-- simpleheat.hs -->
31
- <script type="text/javascript" src="vendors/simpleheat/simpleheat.js"></script>
32
- <!-- exported graph representations as js -->
33
- <script type="text/javascript" src="resources/js/emerge_data.js"></script>
34
-
35
- <!-- emerge git functionality -->
36
- <script type="text/javascript" src="resources/js/emerge_git.js"></script>
37
-
38
- <!-- emerge heatmap functionality -->
39
- <script type="text/javascript" src="resources/js/emerge_heatmap.js"></script>
40
-
41
- <!-- emerge search functionality -->
42
- <script type="text/javascript" src="resources/js/emerge_search.js"></script>
43
-
44
- <!-- emerge graph functionality -->
45
- <script type="text/javascript" src="resources/js/emerge_graph.js"></script>
46
-
47
- <!-- emerge common functionality -->
48
- <script type="text/javascript" src="resources/js/emerge_common.js"></script>
49
-
50
- </head>
51
-
52
- <body>
53
- <div id="graphDiv"></div>
54
-
55
- <div id="cardMenu" class="card border-dark">
56
- <h6 class="card-header align-items-center text-center">
57
- <span aria-hidden="true">
58
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bounding-box-circles" viewBox="0 0 16 16">
59
- <path d="M2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM0 2a2 2 0 0 1 3.937-.5h8.126A2 2 0 1 1 14.5 3.937v8.126a2 2 0 1 1-2.437 2.437H3.937A2 2 0 1 1 1.5 12.063V3.937A2 2 0 0 1 0 2zm2.5 1.937v8.126c.703.18 1.256.734 1.437 1.437h8.126a2.004 2.004 0 0 1 1.437-1.437V3.937A2.004 2.004 0 0 1 12.063 2.5H3.937A2.004 2.004 0 0 1 2.5 3.937zM14 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM2 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
60
- </svg>
61
- <span>
62
- <small> <strong><span id="configEmergeVersion" style="padding-left: 2px;"></span></strong></small>
63
- </span>
64
- </span>
65
- </h6>
66
-
67
- <div class="card-body">
68
- <ul class="list-group list-group-flush">
69
- <li class="list-group-item small d-flex justify-content-between align-items-center py-1">
70
-
71
- <div class="form-check form-switch float-right">
72
- <input type="checkbox" class="form-check-input" id="darkSwitch">
73
- <label class="form-check-label" for="darkSwitch"><small>Dark Mode</small></label>
74
- </div>
75
-
76
- </li>
77
-
78
- <li class="list-group-item small d-flex justify-content-between align-items-center medium-tooltip">
79
- <small><span id="projectInfo">Project info</span></small> <span id="badge_project_info" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span></span>
80
- </li>
81
-
82
- <li class="list-group-item small d-flex justify-content-between align-items-center">
83
- <small><span id="graphProperties">Graph properties</span></small> <span id="badge_graph_info" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span></span>
84
- </li>
85
-
86
- </ul>
87
-
88
- <div id="menuButtonGroup" class="btn-group-vertical" style="min-width: 80px;">
89
- <div class="btn-group dropstart">
90
-
91
- <button type="button" class="btn btn-primary btn-sm dropdown-toggle btn-with-spacing shadow-none" id="selectGraphButton" data-bs-toggle="dropdown">
92
- <span id="selectedGraph">selected graph</span>
93
- </button>
94
-
95
- <div class="dropdown-menu" id="dropdown-graph" aria-labelledby="dropdown-graph">
96
- <!-- injected by JS -->
97
- </div>
98
-
99
- </div>
100
-
101
- <button type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" onclick="toggleNodeLabels();">
102
- <span aria-hidden="true">
103
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-info-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
104
- <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
105
- <path d="M8.93 6.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588z"/>
106
- <circle cx="8" cy="4.5" r="1"/>
107
- </svg>
108
- </span>
109
- Toggle node labels
110
- </button>
111
-
112
- <div class="btn-group" role="group" aria-label="Basic example">
113
- <button type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing btn-with-spacing-right shadow-none" onclick="decreaseCurrentChargeForce();">
114
- <span aria-hidden="true">
115
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-minus-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
116
- <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
117
- <path fill-rule="evenodd" d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z"/>
118
- </svg>
119
- </span>
120
- force
121
- </button>
122
- <button type="button" class="btn-right-aligned btn btn-primary btn-sm btn-with-spacing btn-with-spacing-left shadow-none" onclick="increaseCurrentChargeForce();">
123
- <span aria-hidden="true">
124
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-plus-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
125
- <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
126
- <path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/>
127
- </svg>
128
- </span>
129
- force
130
- </button>
131
- </div>
132
-
133
- <div class="btn-group" role="group" aria-label="Basic example">
134
- <button type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing btn-with-spacing-right shadow-none" onclick="zoomOut();">
135
- <span aria-hidden="true">
136
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-zoom-out" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
137
- <path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"/>
138
- <path d="M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z"/>
139
- <path fill-rule="evenodd" d="M3 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z"/>
140
- </svg>
141
- </span>
142
- zoom
143
- </button>
144
-
145
- <button type="button" class="btn-right-aligned btn btn-primary btn-sm btn-with-spacing btn-with-spacing-left shadow-none" onclick="zoomIn();">
146
- <span aria-hidden="true">
147
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-zoom-in" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
148
- <path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"/>
149
- <path d="M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z"/>
150
- <path fill-rule="evenodd" d="M6.5 3a.5.5 0 0 1 .5.5V6h2.5a.5.5 0 0 1 0 1H7v2.5a.5.5 0 0 1-1 0V7H3.5a.5.5 0 0 1 0-1H6V3.5a.5.5 0 0 1 .5-.5z"/>
151
- </svg>
152
- </span>
153
- zoom
154
- </button>
155
- </div>
156
-
157
- <button type="button" class="btn btn-primary btn-sm btn-with-spacing shadow-none" onclick="translateCanvas('up')">
158
- <span aria-hidden="true">
159
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-arrow-up-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
160
- <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
161
- <path fill-rule="evenodd" d="M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z"/>
162
- </svg>
163
- </span>
164
- </button>
165
- <div class="btn-group" role="group" aria-label="Basic example">
166
- <button type="button" class="btn btn-primary btn-sm btn-with-spacing btn-with-spacing-right shadow-none" onclick="translateCanvas('left')">
167
- <span aria-hidden="true">
168
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-arrow-left-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
169
- <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
170
- <path fill-rule="evenodd" d="M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5z"/>
171
- </svg>
172
- </span>
173
- </button>
174
- <button type="button" class="btn btn-primary btn-sm btn-with-spacing btn-with-spacing-left shadow-none" onclick="translateCanvas('right')">
175
- <span aria-hidden="true">
176
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-arrow-right-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
177
- <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
178
- <path fill-rule="evenodd" d="M4 8a.5.5 0 0 0 .5.5h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H4.5A.5.5 0 0 0 4 8z"/>
179
- </svg>
180
- </span>
181
- </button>
182
- </div>
183
- <button type="button" class="btn btn-primary btn-sm btn-with-spacing shadow-none" onclick="translateCanvas('down')">
184
- <span aria-hidden="true">
185
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-arrow-down-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
186
- <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
187
- <path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z"/>
188
- </svg>
189
- </span>
190
- </button>
191
- <button id="buttonShowOverallStatistics" type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" data-bs-toggle="modal" data-bs-target="#overallStatisticsModal">
192
- <span aria-hidden="true">
193
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
194
- <path fill-rule="evenodd" d="M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z"/>
195
- </svg>
196
- </span>
197
- Overall statistics
198
- </button>
199
- <!-- Modal -->
200
- <div class="modal fade" id="overallStatisticsModal" tabindex="-1" role="dialog" aria-labelledby="overallStatisticsModalLabel" aria-hidden="true">
201
- <div class="modal-dialog" role="document">
202
- <div class="modal-content">
203
- <div class="modal-header">
204
- <h5 class="modal-title" id="overallStatisticsModalLabel">Overall statistics</h5>
205
- <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
206
- <span aria-hidden="true">&times;</span>
207
- </button>
208
- </div>
209
- <div class="modal-body">
210
- <table class="card-table table table-condensed">
211
- <thead class="table-borderless">
212
- <tr>
213
- <th scope="col">Statistic</th>
214
- <th scope="col">Value</th>
215
- </tr>
216
- </thead>
217
- <tbody id="tbody-statistics">
218
- <!-- injected by js -->
219
- </tbody>
220
- </table>
221
- </div>
222
- <div class="modal-footer">
223
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
224
- </div>
225
- </div>
226
- </div>
227
- </div>
228
- <!-- end modal -->
229
-
230
- <button type="button" id="buttonShowOverallMetrics" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" data-bs-toggle="modal" data-bs-target="#overallMetricsModal">
231
- <span aria-hidden="true">
232
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
233
- <path fill-rule="evenodd" d="M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z"/>
234
- </svg>
235
- </span>
236
- Overall metrics
237
- </button>
238
-
239
- <div class="btn-group dropstart">
240
- <button type="button" class="btn btn-primary btn-sm dropdown-toggle btn-with-spacing" data-bs-toggle="dropdown"><span></span> <span class="caret"></span>Apply metrics</button>
241
- <ul id="dropdown-apply-metric" class="dropdown-menu">
242
- <!-- injected by js -->
243
- </ul>
244
- </div>
245
-
246
- <div style="width: 100%; padding-top: 4px; padding-bottom: 0px;"></div>
247
-
248
- <ul class="list-group list-group-flush">
249
-
250
- <!-- Shortcuts -->
251
- <li class="list-group-item small d-flex justify-content-between align-items-center" style="border: 0px; margin-bottom: 0px; padding-left: 0px;">
252
- <label style="margin-bottom: 0px; padding-right: 4px;"> <small>Shortcuts</small> </label> <span id="badge_shortcuts" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary" customClass="large-tooltip"> ?</span>
253
- </li>
254
-
255
- <li id="li-unselected-opacity" class="list-group-item small d-flex justify-content-between align-items-center py-1" style="border: 0px; margin-bottom: 0px; padding-left: 0px; padding-bottom: 0px;">
256
- <small>Unselected opacity</small> <span id="badge_unselected_opacity" style="margin-left: 4px;" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span>
257
- </li>
258
- <input type="range" min="1" max="100" value="20" class="form-range" id="unselected-opacity" oninput="unselectedOpacityChange(this.value)" onchange="unselectedOpacityChange(this.value)">
259
-
260
- <!-- Git settings -->
261
- <div id="container_git_settings">
262
- <div style="width: 100%; padding-top: 4px; padding-bottom: 0px;"></div>
263
- <li class="list-group-item small d-flex justify-content-between align-items-center py-1 disabled" style="max-height: 24px; border: 0px; margin-bottom: 0px; padding-left: 0px;">
264
- <small style="font-size: 10px;">Git settings </small>
265
- <div class="form-group" style="width: 50%;">
266
- <hr>
267
- </div>
268
- </li>
269
-
270
- <div class="input-group mb-1 input-group-sm">
271
- <input class="form-control form-control-sm" type="text" name="daterange" placeholder="pick date range" id="timeDateRangePicker" style="font-size: 9px;" />
272
- <button class="btn btn-primary " type="button" id="inputDateRangePickerCancel" onclick="clickDateRangePickerCancel()">
273
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bootstrap-reboot" viewBox="0 0 16 16">
274
- <path d="M1.161 8a6.84 6.84 0 1 0 6.842-6.84.58.58 0 1 1 0-1.16 8 8 0 1 1-6.556 3.412l-.663-.577a.58.58 0 0 1 .227-.997l2.52-.69a.58.58 0 0 1 .728.633l-.332 2.592a.58.58 0 0 1-.956.364l-.643-.56A6.812 6.812 0 0 0 1.16 8z"/>
275
- <path d="M6.641 11.671V8.843h1.57l1.498 2.828h1.314L9.377 8.665c.897-.3 1.427-1.106 1.427-2.1 0-1.37-.943-2.246-2.456-2.246H5.5v7.352h1.141zm0-3.75V5.277h1.57c.881 0 1.416.499 1.416 1.32 0 .84-.504 1.324-1.386 1.324h-1.6z"/>
276
- </svg>
277
- </button>
278
- </div>
279
-
280
- <div style="width: 100%; padding-top: 6px; padding-bottom: 0px;"></div>
281
- </div>
282
-
283
- <!-- time series modal -->
284
- <!-- Modal -->
285
- <div class="modal fade" id="timeSeriesModal" tabindex="-1" aria-labelledby="timeSeriesModalLabel" aria-hidden="true">
286
- <div class="modal-dialog modal-xl">
287
- <div class="modal-content">
288
- <div class="modal-header">
289
- <h1 class="modal-title fs-5" id="timeSeriesModalLabel">Complexity/churn growth</h1>
290
- <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
291
- <span aria-hidden="true">&times;</span>
292
- </button>
293
- </div>
294
- <div class="modal-body">
295
-
296
- <div id="my_dataviz_chord"></div>
297
- <br>
298
-
299
- <div id="my_dataviz"></div>
300
- <br>
301
-
302
- <div id="time_series_sloc"></div>
303
- <br>
304
-
305
- <div id="my_dataviz2"></div>
306
-
307
-
308
- </div>
309
- <div class="modal-footer">
310
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
311
- </div>
312
- </div>
313
- </div>
314
- </div>
315
-
316
- <button id="button_complexity_churn" type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" data-bs-toggle="modal" data-bs-target="#timeSeriesModal" onclick="generateTimeSeriesChart()" >
317
- <span aria-hidden="true">
318
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
319
- <path fill-rule="evenodd" d="M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z"/>
320
- </svg>
321
- </span>
322
- Compl/SLOC/Churn
323
- </button>
324
-
325
- <!-- time series modal -->
326
- <!-- Modal -->
327
- <div class="modal fade" id="changeCouplingModal" tabindex="-1" aria-labelledby="changeCouplingModalLabel" aria-hidden="true">
328
- <div class="modal-dialog modal-xl">
329
- <div class="modal-content">
330
- <div class="modal-header">
331
- <h1 class="modal-title fs-5" id="changeCouplingModalLabel">Change Coupling</h1>
332
- <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
333
- <span aria-hidden="true">&times;</span>
334
- </button>
335
- </div>
336
- <div class="modal-body">
337
-
338
- <div id="change_coupling_chord_diagram"></div>
339
-
340
- </div>
341
- <div class="modal-footer">
342
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
343
- </div>
344
- </div>
345
- </div>
346
- </div>
347
-
348
- <button id="button_change_coupling" type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" data-bs-toggle="modal" data-bs-target="#changeCouplingModal" onclick="generateChangeCouplingChart()" >
349
- <span aria-hidden="true">
350
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
351
- <path fill-rule="evenodd" d="M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z"/>
352
- </svg>
353
- </span>
354
- Change Coupling
355
- </button>
356
-
357
- <div style="width: 100%; padding-top: 4px; padding-bottom: 0px;"></div>
358
-
359
- <div id="formSwitchHoverCoupling" class="form-check form-switch small float-right" style="width: 100%;">
360
- <input type="checkbox" class="form-check-input" id="switchHoverCoupling">
361
- <label class="form-check-label d-flex justify-content-between" for="switchHoverCoupling"><small>Hover coupling</small> <span id="badge_hover_coupling" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
362
- </div>
363
-
364
- <li class="list-group-item small d-flex justify-content-between align-items-center disabled" style="max-height: 24px; border: 0px; margin-bottom: 0px; padding-left: 0px;">
365
- <small style="font-size: 10px;">Heatmap settings </small>
366
- <div class="form-group" style="width: 38%; padding: 0px;">
367
- <hr>
368
- </div>
369
- </li>
370
-
371
- <div class="form-check form-switch small float-right">
372
- <input type="checkbox" class="form-check-input" id="switchActivateHeatmap">
373
- <label class="form-check-label d-flex justify-content-between" for="switchActivateHeatmap"><small>Normal Heatmap </small> <span id="badge_heat_map_normal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
374
- </div>
375
-
376
- <div class="form-check form-switch small float-right">
377
- <input type="checkbox" class="form-check-input" id="switchMergeHeatmap">
378
- <label class="form-check-label d-flex justify-content-between" for="switchMergeHeatmap"><small>Hybrid Heatmap</small> <span id="badge_heat_map_hybrid" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
379
- </div>
380
-
381
- <div id="formSwitchChurnHeatmap" class="form-check form-switch small float-right">
382
- <input type="checkbox" class="form-check-input" id="switchChurnHeatmap">
383
- <label class="form-check-label d-flex justify-content-between" for="switchChurnHeatmap"><small>Churn Heatmap </small> <span id="badge_heat_map_churn" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
384
- </div>
385
-
386
- <div id="formSwitchHotspotHeatmap" class="form-check form-switch small float-right">
387
- <input type="checkbox" class="form-check-input" id="switchHotspotHeatmap">
388
- <label class="form-check-label d-flex justify-content-between" for="switchHotspotHeatmap"><small>Hotspot Heatmap </small> <span id="badge_heat_map_hotspot" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
389
- </div>
390
-
391
- <div style="width: 100%; padding-top: 6px; padding-bottom: 0px;"></div>
392
-
393
- <label id="inputNodeSearchLabel" for="inputNodeSearch">0 nodes found</label>
394
-
395
- <div class="input-group mb-1 input-group-sm">
396
- <input id="inputNodeSearch" type="text" class="form-control" placeholder="Search nodes" aria-label="Search" aria-describedby="search-addon">
397
- <button class="btn btn-primary " type="button" id="inputNodeSearchCancel">
398
- <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
399
- <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/>
400
- <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/>
401
- </svg>
402
- </button>
403
-
404
- <div style="width: 100%; padding-top: 8px; padding-bottom: 0px;"></div>
405
- <div class="form-check form-switch small float-right" style="width: 100%;">
406
- <input type="checkbox" class="form-check-input" id="switchAddSemanticSearch">
407
- <label class="form-check-label d-flex justify-content-between" for="switchAddSemanticSearch"><small>Add semantics</small> <span id="badge_semantic_search" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
408
- </div>
409
-
410
- <div id="formSwitchAddContributorSearch" class="form-check form-switch small float-right" style="width: 100%;">
411
- <input type="checkbox" class="form-check-input" id="switchAddContributorSearch">
412
- <label class="form-check-label d-flex justify-content-between" for="switchAddContributorsSearch"><small>Add contributors</small> <span id="badge_contributors_search" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
413
- </div>
414
-
415
- </div>
416
-
417
- <li class="list-group-item small d-flex justify-content-between align-items-center" style="padding-left: 0px; padding-right: 1px;" >
418
- <label style="margin-bottom: 0px; font-size: 10px;"> Hover/select cluster hulls </label> <span id="badge_cluster_hulls" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary" customClass="large-tooltip"> ?</span>
419
- </li>
420
-
421
- <div id="clusterHullMenu">
422
- <!-- cluster hull selection / injected by javascript -->
423
- </div>
424
-
425
- </ul>
426
-
427
- </div>
428
-
429
- <!-- Modal -->
430
- <div class="modal fade" id="overallMetricsModal" tabindex="-1" role="dialog" aria-labelledby="overallMetricsModalLabel" aria-hidden="true">
431
- <div class="modal-dialog" role="document">
432
- <div class="modal-content">
433
-
434
- <div class="modal-header">
435
- <h1 class="modal-title fs-5" id="exampleModalLabel">Overall metrics</h1>
436
- <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
437
- <span aria-hidden="true">&times;</span>
438
- </button>
439
- </div>
440
-
441
- <div class="modal-body">
442
- <table class="card-table table table-condensed">
443
- <thead class="table-borderless">
444
- <tr>
445
- <th scope="col">Metric</th>
446
- <th scope="col">Value</th>
447
- </tr>
448
- </thead>
449
- <tbody id="tbody-metrics">
450
- <!-- injected by js -->
451
- </tbody>
452
- </table>
453
- </div>
454
-
455
- <div class="modal-footer">
456
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
457
- </div>
458
-
459
- </div>
460
- </div>
461
- </div>
462
- <!-- end modal -->
463
-
464
- <div class="toast-container position-fixed top-0 start-0 p-3">
465
- <div id="toastDateRangeUpdated" class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true" data-bs-delay="3500">
466
- <div class="d-flex">
467
- <div class="toast-body small">
468
- Git date range updated, metrics, visualizations and graph structures may have changed.
469
- </div>
470
- <button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
471
- </div>
472
- </div>
473
- </div>
474
-
475
- <div class="toast-container position-fixed top-0 start-0 p-3">
476
- <div id="toastDebug" class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true" data-bs-delay="2000">
477
- <div class="d-flex">
478
- <div id="toastDebugMessage" class="toast-body small">
479
- text
480
- </div>
481
- <button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
482
- </div>
483
- </div>
484
- </div>
485
-
486
- </div>
487
-
488
- <script src="vendors/dark-mode-switch/js/dark-mode-switch.min.js"></script>
489
-
490
- <!-- emerge basic ui/descriptions -->
491
- <script type="text/javascript" src="resources/js/emerge_ui.js"></script>
492
-
493
- <!-- emerge hull functionality -->
494
- <script type="text/javascript" src="resources/js/emerge_hull.js"></script>
495
-
496
- <!-- emerge main functionality -->
497
- <script type="text/javascript" src="resources/js/emerge_main.js"></script>
498
-
499
- </div>
500
-
1
+ <!DOCTYPE html>
2
+ <meta charset="utf-8">
3
+
4
+ <head>
5
+ <!-- bootstrap css v5.2.3 -->
6
+ <link rel="stylesheet" type="text/css" href="vendors/bootstrap/css/bootstrap.css">
7
+
8
+ <link rel="stylesheet" type="text/css" href="resources/css/custom.css" />
9
+
10
+ <!-- dark-mode-switch css -->
11
+ <link rel="stylesheet" href="vendors/dark-mode-switch/css/dark-mode.css">
12
+
13
+ <!-- jquery js -->
14
+ <script type="text/javascript" src="vendors/jquery/jquery-3.6.0.min.js"></script>
15
+ <!-- popperjs/core v2.11.6 -->
16
+ <script type="text/javascript" src="vendors/popper/popper.min.js"></script>
17
+ <!-- bootstrap js v5.2.3 -->
18
+ <script type="text/javascript" src="vendors/bootstrap/js/bootstrap.min.js"></script>
19
+
20
+ <!-- daterange picker | https://github.com/dangrossman/daterangepicker -->
21
+ <script type="text/javascript" src="vendors/daterangepicker/moment.min.js"></script>
22
+ <script type="text/javascript" src="vendors/daterangepicker/daterangepicker.min.js"></script>
23
+ <link rel="stylesheet" type="text/css" href="vendors/daterangepicker/daterangepicker.css"/>
24
+
25
+ <!-- d3 js -->
26
+ <script src="vendors/d3/d3.v7.8.4.min.js"></script>
27
+
28
+ <!-- Hull.js -->
29
+ <script type="text/javascript" src="vendors/hull/hull.js"></script>
30
+ <!-- simpleheat.hs -->
31
+ <script type="text/javascript" src="vendors/simpleheat/simpleheat.js"></script>
32
+ <!-- exported graph representations as js -->
33
+ <script type="text/javascript" src="resources/js/emerge_data.js"></script>
34
+
35
+ <!-- emerge git functionality -->
36
+ <script type="text/javascript" src="resources/js/emerge_git.js"></script>
37
+
38
+ <!-- emerge heatmap functionality -->
39
+ <script type="text/javascript" src="resources/js/emerge_heatmap.js"></script>
40
+
41
+ <!-- emerge search functionality -->
42
+ <script type="text/javascript" src="resources/js/emerge_search.js"></script>
43
+
44
+ <!-- emerge graph functionality -->
45
+ <script type="text/javascript" src="resources/js/emerge_graph.js"></script>
46
+
47
+ <!-- emerge common functionality -->
48
+ <script type="text/javascript" src="resources/js/emerge_common.js"></script>
49
+
50
+ </head>
51
+
52
+ <body>
53
+ <div id="graphDiv"></div>
54
+
55
+ <div id="cardMenu" class="card border-dark">
56
+ <h6 class="card-header align-items-center text-center">
57
+ <span aria-hidden="true">
58
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bounding-box-circles" viewBox="0 0 16 16">
59
+ <path d="M2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM0 2a2 2 0 0 1 3.937-.5h8.126A2 2 0 1 1 14.5 3.937v8.126a2 2 0 1 1-2.437 2.437H3.937A2 2 0 1 1 1.5 12.063V3.937A2 2 0 0 1 0 2zm2.5 1.937v8.126c.703.18 1.256.734 1.437 1.437h8.126a2.004 2.004 0 0 1 1.437-1.437V3.937A2.004 2.004 0 0 1 12.063 2.5H3.937A2.004 2.004 0 0 1 2.5 3.937zM14 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM2 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm12 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/>
60
+ </svg>
61
+ <span>
62
+ <small> <strong><span id="configEmergeVersion" style="padding-left: 2px;"></span></strong></small>
63
+ </span>
64
+ </span>
65
+ </h6>
66
+
67
+ <div class="card-body">
68
+ <ul class="list-group list-group-flush">
69
+ <li class="list-group-item small d-flex justify-content-between align-items-center py-1">
70
+
71
+ <div class="form-check form-switch float-right">
72
+ <input type="checkbox" class="form-check-input" id="darkSwitch">
73
+ <label class="form-check-label" for="darkSwitch"><small>Dark Mode</small></label>
74
+ </div>
75
+
76
+ </li>
77
+
78
+ <li class="list-group-item small d-flex justify-content-between align-items-center medium-tooltip">
79
+ <small><span id="projectInfo">Project info</span></small> <span id="badge_project_info" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span></span>
80
+ </li>
81
+
82
+ <li class="list-group-item small d-flex justify-content-between align-items-center">
83
+ <small><span id="graphProperties">Graph properties</span></small> <span id="badge_graph_info" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span></span>
84
+ </li>
85
+
86
+ </ul>
87
+
88
+ <div id="menuButtonGroup" class="btn-group-vertical" style="min-width: 80px;">
89
+ <div class="btn-group dropstart">
90
+
91
+ <button type="button" class="btn btn-primary btn-sm dropdown-toggle btn-with-spacing shadow-none" id="selectGraphButton" data-bs-toggle="dropdown">
92
+ <span id="selectedGraph">selected graph</span>
93
+ </button>
94
+
95
+ <div class="dropdown-menu" id="dropdown-graph" aria-labelledby="dropdown-graph">
96
+ <!-- injected by JS -->
97
+ </div>
98
+
99
+ </div>
100
+
101
+ <button type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" onclick="toggleNodeLabels();">
102
+ <span aria-hidden="true">
103
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-info-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
104
+ <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
105
+ <path d="M8.93 6.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588z"/>
106
+ <circle cx="8" cy="4.5" r="1"/>
107
+ </svg>
108
+ </span>
109
+ Toggle node labels
110
+ </button>
111
+
112
+ <div class="btn-group" role="group" aria-label="Basic example">
113
+ <button type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing btn-with-spacing-right shadow-none" onclick="decreaseCurrentChargeForce();">
114
+ <span aria-hidden="true">
115
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-minus-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
116
+ <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
117
+ <path fill-rule="evenodd" d="M5.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H6a.5.5 0 0 1-.5-.5z"/>
118
+ </svg>
119
+ </span>
120
+ force
121
+ </button>
122
+ <button type="button" class="btn-right-aligned btn btn-primary btn-sm btn-with-spacing btn-with-spacing-left shadow-none" onclick="increaseCurrentChargeForce();">
123
+ <span aria-hidden="true">
124
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-plus-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
125
+ <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
126
+ <path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/>
127
+ </svg>
128
+ </span>
129
+ force
130
+ </button>
131
+ </div>
132
+
133
+ <div class="btn-group" role="group" aria-label="Basic example">
134
+ <button type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing btn-with-spacing-right shadow-none" onclick="zoomOut();">
135
+ <span aria-hidden="true">
136
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-zoom-out" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
137
+ <path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"/>
138
+ <path d="M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z"/>
139
+ <path fill-rule="evenodd" d="M3 6.5a.5.5 0 0 1 .5-.5h6a.5.5 0 0 1 0 1h-6a.5.5 0 0 1-.5-.5z"/>
140
+ </svg>
141
+ </span>
142
+ zoom
143
+ </button>
144
+
145
+ <button type="button" class="btn-right-aligned btn btn-primary btn-sm btn-with-spacing btn-with-spacing-left shadow-none" onclick="zoomIn();">
146
+ <span aria-hidden="true">
147
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-zoom-in" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
148
+ <path fill-rule="evenodd" d="M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zM13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0z"/>
149
+ <path d="M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z"/>
150
+ <path fill-rule="evenodd" d="M6.5 3a.5.5 0 0 1 .5.5V6h2.5a.5.5 0 0 1 0 1H7v2.5a.5.5 0 0 1-1 0V7H3.5a.5.5 0 0 1 0-1H6V3.5a.5.5 0 0 1 .5-.5z"/>
151
+ </svg>
152
+ </span>
153
+ zoom
154
+ </button>
155
+ </div>
156
+
157
+ <button type="button" class="btn btn-primary btn-sm btn-with-spacing shadow-none" onclick="translateCanvas('up')">
158
+ <span aria-hidden="true">
159
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-arrow-up-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
160
+ <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
161
+ <path fill-rule="evenodd" d="M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z"/>
162
+ </svg>
163
+ </span>
164
+ </button>
165
+ <div class="btn-group" role="group" aria-label="Basic example">
166
+ <button type="button" class="btn btn-primary btn-sm btn-with-spacing btn-with-spacing-right shadow-none" onclick="translateCanvas('left')">
167
+ <span aria-hidden="true">
168
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-arrow-left-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
169
+ <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
170
+ <path fill-rule="evenodd" d="M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5z"/>
171
+ </svg>
172
+ </span>
173
+ </button>
174
+ <button type="button" class="btn btn-primary btn-sm btn-with-spacing btn-with-spacing-left shadow-none" onclick="translateCanvas('right')">
175
+ <span aria-hidden="true">
176
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-arrow-right-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
177
+ <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
178
+ <path fill-rule="evenodd" d="M4 8a.5.5 0 0 0 .5.5h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H4.5A.5.5 0 0 0 4 8z"/>
179
+ </svg>
180
+ </span>
181
+ </button>
182
+ </div>
183
+ <button type="button" class="btn btn-primary btn-sm btn-with-spacing shadow-none" onclick="translateCanvas('down')">
184
+ <span aria-hidden="true">
185
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-arrow-down-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
186
+ <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
187
+ <path fill-rule="evenodd" d="M8 4a.5.5 0 0 1 .5.5v5.793l2.146-2.147a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 1 1 .708-.708L7.5 10.293V4.5A.5.5 0 0 1 8 4z"/>
188
+ </svg>
189
+ </span>
190
+ </button>
191
+ <button id="buttonShowOverallStatistics" type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" data-bs-toggle="modal" data-bs-target="#overallStatisticsModal">
192
+ <span aria-hidden="true">
193
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
194
+ <path fill-rule="evenodd" d="M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z"/>
195
+ </svg>
196
+ </span>
197
+ Overall statistics
198
+ </button>
199
+ <!-- Modal -->
200
+ <div class="modal fade" id="overallStatisticsModal" tabindex="-1" role="dialog" aria-labelledby="overallStatisticsModalLabel" aria-hidden="true">
201
+ <div class="modal-dialog" role="document">
202
+ <div class="modal-content">
203
+ <div class="modal-header">
204
+ <h5 class="modal-title" id="overallStatisticsModalLabel">Overall statistics</h5>
205
+ <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
206
+ <span aria-hidden="true">&times;</span>
207
+ </button>
208
+ </div>
209
+ <div class="modal-body">
210
+ <table class="card-table table table-condensed">
211
+ <thead class="table-borderless">
212
+ <tr>
213
+ <th scope="col">Statistic</th>
214
+ <th scope="col">Value</th>
215
+ </tr>
216
+ </thead>
217
+ <tbody id="tbody-statistics">
218
+ <!-- injected by js -->
219
+ </tbody>
220
+ </table>
221
+ </div>
222
+ <div class="modal-footer">
223
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
224
+ </div>
225
+ </div>
226
+ </div>
227
+ </div>
228
+ <!-- end modal -->
229
+
230
+ <button type="button" id="buttonShowOverallMetrics" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" data-bs-toggle="modal" data-bs-target="#overallMetricsModal">
231
+ <span aria-hidden="true">
232
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
233
+ <path fill-rule="evenodd" d="M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z"/>
234
+ </svg>
235
+ </span>
236
+ Overall metrics
237
+ </button>
238
+
239
+ <div class="btn-group dropstart">
240
+ <button type="button" class="btn btn-primary btn-sm dropdown-toggle btn-with-spacing" data-bs-toggle="dropdown"><span></span> <span class="caret"></span>Apply metrics</button>
241
+ <ul id="dropdown-apply-metric" class="dropdown-menu">
242
+ <!-- injected by js -->
243
+ </ul>
244
+ </div>
245
+
246
+ <div style="width: 100%; padding-top: 4px; padding-bottom: 0px;"></div>
247
+
248
+ <ul class="list-group list-group-flush">
249
+
250
+ <!-- Shortcuts -->
251
+ <li class="list-group-item small d-flex justify-content-between align-items-center" style="border: 0px; margin-bottom: 0px; padding-left: 0px;">
252
+ <label style="margin-bottom: 0px; padding-right: 4px;"> <small>Shortcuts</small> </label> <span id="badge_shortcuts" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary" customClass="large-tooltip"> ?</span>
253
+ </li>
254
+
255
+ <li id="li-unselected-opacity" class="list-group-item small d-flex justify-content-between align-items-center py-1" style="border: 0px; margin-bottom: 0px; padding-left: 0px; padding-bottom: 0px;">
256
+ <small>Unselected opacity</small> <span id="badge_unselected_opacity" style="margin-left: 4px;" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span>
257
+ </li>
258
+ <input type="range" min="1" max="100" value="20" class="form-range" id="unselected-opacity" oninput="unselectedOpacityChange(this.value)" onchange="unselectedOpacityChange(this.value)">
259
+
260
+ <!-- Git settings -->
261
+ <div id="container_git_settings">
262
+ <div style="width: 100%; padding-top: 4px; padding-bottom: 0px;"></div>
263
+ <li class="list-group-item small d-flex justify-content-between align-items-center py-1 disabled" style="max-height: 24px; border: 0px; margin-bottom: 0px; padding-left: 0px;">
264
+ <small style="font-size: 10px;">Git settings </small>
265
+ <div class="form-group" style="width: 50%;">
266
+ <hr>
267
+ </div>
268
+ </li>
269
+
270
+ <div class="input-group mb-1 input-group-sm">
271
+ <input class="form-control form-control-sm" type="text" name="daterange" placeholder="pick date range" id="timeDateRangePicker" style="font-size: 9px;" />
272
+ <button class="btn btn-primary " type="button" id="inputDateRangePickerCancel" onclick="clickDateRangePickerCancel()">
273
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-bootstrap-reboot" viewBox="0 0 16 16">
274
+ <path d="M1.161 8a6.84 6.84 0 1 0 6.842-6.84.58.58 0 1 1 0-1.16 8 8 0 1 1-6.556 3.412l-.663-.577a.58.58 0 0 1 .227-.997l2.52-.69a.58.58 0 0 1 .728.633l-.332 2.592a.58.58 0 0 1-.956.364l-.643-.56A6.812 6.812 0 0 0 1.16 8z"/>
275
+ <path d="M6.641 11.671V8.843h1.57l1.498 2.828h1.314L9.377 8.665c.897-.3 1.427-1.106 1.427-2.1 0-1.37-.943-2.246-2.456-2.246H5.5v7.352h1.141zm0-3.75V5.277h1.57c.881 0 1.416.499 1.416 1.32 0 .84-.504 1.324-1.386 1.324h-1.6z"/>
276
+ </svg>
277
+ </button>
278
+ </div>
279
+
280
+ <div style="width: 100%; padding-top: 6px; padding-bottom: 0px;"></div>
281
+ </div>
282
+
283
+ <!-- time series modal -->
284
+ <!-- Modal -->
285
+ <div class="modal fade" id="timeSeriesModal" tabindex="-1" aria-labelledby="timeSeriesModalLabel" aria-hidden="true">
286
+ <div class="modal-dialog modal-xl">
287
+ <div class="modal-content">
288
+ <div class="modal-header">
289
+ <h1 class="modal-title fs-5" id="timeSeriesModalLabel">Complexity/churn growth</h1>
290
+ <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
291
+ <span aria-hidden="true">&times;</span>
292
+ </button>
293
+ </div>
294
+ <div class="modal-body">
295
+
296
+ <div id="my_dataviz_chord"></div>
297
+ <br>
298
+
299
+ <div id="my_dataviz"></div>
300
+ <br>
301
+
302
+ <div id="time_series_sloc"></div>
303
+ <br>
304
+
305
+ <div id="my_dataviz2"></div>
306
+
307
+
308
+ </div>
309
+ <div class="modal-footer">
310
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
311
+ </div>
312
+ </div>
313
+ </div>
314
+ </div>
315
+
316
+ <button id="button_complexity_churn" type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" data-bs-toggle="modal" data-bs-target="#timeSeriesModal" onclick="generateTimeSeriesChart()" >
317
+ <span aria-hidden="true">
318
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
319
+ <path fill-rule="evenodd" d="M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z"/>
320
+ </svg>
321
+ </span>
322
+ Compl/SLOC/Churn
323
+ </button>
324
+
325
+ <!-- time series modal -->
326
+ <!-- Modal -->
327
+ <div class="modal fade" id="changeCouplingModal" tabindex="-1" aria-labelledby="changeCouplingModalLabel" aria-hidden="true">
328
+ <div class="modal-dialog modal-xl">
329
+ <div class="modal-content">
330
+ <div class="modal-header">
331
+ <h1 class="modal-title fs-5" id="changeCouplingModalLabel">Change Coupling</h1>
332
+ <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
333
+ <span aria-hidden="true">&times;</span>
334
+ </button>
335
+ </div>
336
+ <div class="modal-body">
337
+
338
+ <div id="change_coupling_chord_diagram"></div>
339
+
340
+ </div>
341
+ <div class="modal-footer">
342
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
343
+ </div>
344
+ </div>
345
+ </div>
346
+ </div>
347
+
348
+ <button id="button_change_coupling" type="button" class="btn-left-aligned btn btn-primary btn-sm btn-with-spacing shadow-none" data-bs-toggle="modal" data-bs-target="#changeCouplingModal" onclick="generateChangeCouplingChart()" >
349
+ <span aria-hidden="true">
350
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
351
+ <path fill-rule="evenodd" d="M0 0h1v15h15v1H0V0zm10 3.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V4.9l-3.613 4.417a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61L13.445 4H10.5a.5.5 0 0 1-.5-.5z"/>
352
+ </svg>
353
+ </span>
354
+ Change Coupling
355
+ </button>
356
+
357
+ <div style="width: 100%; padding-top: 4px; padding-bottom: 0px;"></div>
358
+
359
+ <div id="formSwitchHoverCoupling" class="form-check form-switch small float-right" style="width: 100%;">
360
+ <input type="checkbox" class="form-check-input" id="switchHoverCoupling">
361
+ <label class="form-check-label d-flex justify-content-between" for="switchHoverCoupling"><small>Hover coupling</small> <span id="badge_hover_coupling" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
362
+ </div>
363
+
364
+ <li class="list-group-item small d-flex justify-content-between align-items-center disabled" style="max-height: 24px; border: 0px; margin-bottom: 0px; padding-left: 0px;">
365
+ <small style="font-size: 10px;">Heatmap settings </small>
366
+ <div class="form-group" style="width: 38%; padding: 0px;">
367
+ <hr>
368
+ </div>
369
+ </li>
370
+
371
+ <div class="form-check form-switch small float-right">
372
+ <input type="checkbox" class="form-check-input" id="switchActivateHeatmap">
373
+ <label class="form-check-label d-flex justify-content-between" for="switchActivateHeatmap"><small>Normal Heatmap </small> <span id="badge_heat_map_normal" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
374
+ </div>
375
+
376
+ <div class="form-check form-switch small float-right">
377
+ <input type="checkbox" class="form-check-input" id="switchMergeHeatmap">
378
+ <label class="form-check-label d-flex justify-content-between" for="switchMergeHeatmap"><small>Hybrid Heatmap</small> <span id="badge_heat_map_hybrid" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
379
+ </div>
380
+
381
+ <div id="formSwitchChurnHeatmap" class="form-check form-switch small float-right">
382
+ <input type="checkbox" class="form-check-input" id="switchChurnHeatmap">
383
+ <label class="form-check-label d-flex justify-content-between" for="switchChurnHeatmap"><small>Churn Heatmap </small> <span id="badge_heat_map_churn" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
384
+ </div>
385
+
386
+ <div id="formSwitchHotspotHeatmap" class="form-check form-switch small float-right">
387
+ <input type="checkbox" class="form-check-input" id="switchHotspotHeatmap">
388
+ <label class="form-check-label d-flex justify-content-between" for="switchHotspotHeatmap"><small>Hotspot Heatmap </small> <span id="badge_heat_map_hotspot" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
389
+ </div>
390
+
391
+ <div style="width: 100%; padding-top: 6px; padding-bottom: 0px;"></div>
392
+
393
+ <label id="inputNodeSearchLabel" for="inputNodeSearch">0 nodes found</label>
394
+
395
+ <div class="input-group mb-1 input-group-sm">
396
+ <input id="inputNodeSearch" type="text" class="form-control" placeholder="Search nodes" aria-label="Search" aria-describedby="search-addon">
397
+ <button class="btn btn-primary " type="button" id="inputNodeSearchCancel">
398
+ <svg width="16px" height="16px" viewBox="0 0 18 18" class="bi bi-graph-up" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
399
+ <path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/>
400
+ <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/>
401
+ </svg>
402
+ </button>
403
+
404
+ <div style="width: 100%; padding-top: 8px; padding-bottom: 0px;"></div>
405
+ <div class="form-check form-switch small float-right" style="width: 100%;">
406
+ <input type="checkbox" class="form-check-input" id="switchAddSemanticSearch">
407
+ <label class="form-check-label d-flex justify-content-between" for="switchAddSemanticSearch"><small>Add semantics</small> <span id="badge_semantic_search" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
408
+ </div>
409
+
410
+ <div id="formSwitchAddContributorSearch" class="form-check form-switch small float-right" style="width: 100%;">
411
+ <input type="checkbox" class="form-check-input" id="switchAddContributorSearch">
412
+ <label class="form-check-label d-flex justify-content-between" for="switchAddContributorsSearch"><small>Add contributors</small> <span id="badge_contributors_search" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary"> ?</span> </label>
413
+ </div>
414
+
415
+ </div>
416
+
417
+ <li class="list-group-item small d-flex justify-content-between align-items-center" style="padding-left: 0px; padding-right: 1px;" >
418
+ <label style="margin-bottom: 0px; font-size: 10px;"> Hover/select cluster hulls </label> <span id="badge_cluster_hulls" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" class="badge rounded-pill text-bg-primary" customClass="large-tooltip"> ?</span>
419
+ </li>
420
+
421
+ <div id="clusterHullMenu">
422
+ <!-- cluster hull selection / injected by javascript -->
423
+ </div>
424
+
425
+ </ul>
426
+
427
+ </div>
428
+
429
+ <!-- Modal -->
430
+ <div class="modal fade" id="overallMetricsModal" tabindex="-1" role="dialog" aria-labelledby="overallMetricsModalLabel" aria-hidden="true">
431
+ <div class="modal-dialog" role="document">
432
+ <div class="modal-content">
433
+
434
+ <div class="modal-header">
435
+ <h1 class="modal-title fs-5" id="exampleModalLabel">Overall metrics</h1>
436
+ <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
437
+ <span aria-hidden="true">&times;</span>
438
+ </button>
439
+ </div>
440
+
441
+ <div class="modal-body">
442
+ <table class="card-table table table-condensed">
443
+ <thead class="table-borderless">
444
+ <tr>
445
+ <th scope="col">Metric</th>
446
+ <th scope="col">Value</th>
447
+ </tr>
448
+ </thead>
449
+ <tbody id="tbody-metrics">
450
+ <!-- injected by js -->
451
+ </tbody>
452
+ </table>
453
+ </div>
454
+
455
+ <div class="modal-footer">
456
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
457
+ </div>
458
+
459
+ </div>
460
+ </div>
461
+ </div>
462
+ <!-- end modal -->
463
+
464
+ <div class="toast-container position-fixed top-0 start-0 p-3">
465
+ <div id="toastDateRangeUpdated" class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true" data-bs-delay="3500">
466
+ <div class="d-flex">
467
+ <div class="toast-body small">
468
+ Git date range updated, metrics, visualizations and graph structures may have changed.
469
+ </div>
470
+ <button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
471
+ </div>
472
+ </div>
473
+ </div>
474
+
475
+ <div class="toast-container position-fixed top-0 start-0 p-3">
476
+ <div id="toastDebug" class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true" data-bs-delay="2000">
477
+ <div class="d-flex">
478
+ <div id="toastDebugMessage" class="toast-body small">
479
+ text
480
+ </div>
481
+ <button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
482
+ </div>
483
+ </div>
484
+ </div>
485
+
486
+ </div>
487
+
488
+ <script src="vendors/dark-mode-switch/js/dark-mode-switch.min.js"></script>
489
+
490
+ <!-- emerge basic ui/descriptions -->
491
+ <script type="text/javascript" src="resources/js/emerge_ui.js"></script>
492
+
493
+ <!-- emerge hull functionality -->
494
+ <script type="text/javascript" src="resources/js/emerge_hull.js"></script>
495
+
496
+ <!-- emerge main functionality -->
497
+ <script type="text/javascript" src="resources/js/emerge_main.js"></script>
498
+
499
+ </div>
500
+
501
501
  </body>