@bizdoc/core 2.3.36 → 2.3.40

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 (397) hide show
  1. package/esm2022/lib/admin/admin-dismiss.service.mjs +3 -3
  2. package/esm2022/lib/admin/admin-menu.component.mjs +3 -3
  3. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +3 -3
  4. package/esm2022/lib/admin/architecture/designer-element.component.mjs +19 -17
  5. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +3 -3
  6. package/esm2022/lib/admin/architecture/designer.base.mjs +9 -9
  7. package/esm2022/lib/admin/architecture/designer.component.mjs +5 -5
  8. package/esm2022/lib/admin/architecture/elements/action.component.mjs +3 -3
  9. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +3 -3
  10. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +3 -3
  11. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +3 -3
  12. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +3 -3
  13. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +3 -3
  14. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +3 -3
  15. package/esm2022/lib/admin/architecture/elements/control.component.mjs +3 -3
  16. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +3 -3
  17. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +3 -3
  18. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +3 -3
  19. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +3 -3
  20. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +3 -3
  21. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +3 -3
  22. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +3 -3
  23. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +3 -3
  24. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +3 -3
  25. package/esm2022/lib/admin/architecture/elements/form.component.mjs +3 -3
  26. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +3 -3
  27. package/esm2022/lib/admin/architecture/elements/job.component.mjs +3 -3
  28. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +3 -3
  29. package/esm2022/lib/admin/architecture/elements/node.component.mjs +3 -3
  30. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +3 -3
  31. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +3 -3
  32. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +3 -3
  33. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +3 -3
  34. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +3 -3
  35. package/esm2022/lib/admin/architecture/elements/report.component.mjs +3 -3
  36. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +3 -3
  37. package/esm2022/lib/admin/architecture/elements/role.component.mjs +3 -3
  38. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +3 -3
  39. package/esm2022/lib/admin/architecture/elements/source.component.mjs +3 -3
  40. package/esm2022/lib/admin/architecture/elements/state.component.mjs +3 -3
  41. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +3 -3
  42. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +3 -3
  43. package/esm2022/lib/admin/architecture/elements/type.component.mjs +3 -3
  44. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +3 -3
  45. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +3 -3
  46. package/esm2022/lib/admin/architecture/elements/view.component.mjs +3 -3
  47. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +3 -3
  48. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +3 -3
  49. package/esm2022/lib/admin/core/ace.input.mjs +3 -3
  50. package/esm2022/lib/admin/core/color-picker.input.mjs +3 -3
  51. package/esm2022/lib/admin/core/localized-string.component.mjs +3 -3
  52. package/esm2022/lib/admin/core/search.input.mjs +3 -3
  53. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +7 -6
  54. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +5 -5
  55. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  56. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +3 -3
  57. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +3 -3
  58. package/esm2022/lib/admin/form/designer/design-control.component.mjs +3 -3
  59. package/esm2022/lib/admin/form/designer/properties.component.mjs +3 -3
  60. package/esm2022/lib/admin/form/designer/section.component.mjs +3 -3
  61. package/esm2022/lib/admin/form/designer/settings.component.mjs +3 -3
  62. package/esm2022/lib/admin/form/form.resolve.service.mjs +3 -3
  63. package/esm2022/lib/admin/form/workflow/node.component.mjs +3 -3
  64. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +3 -3
  65. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +3 -3
  66. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  67. package/esm2022/lib/admin/patterns/patterns.component.mjs +3 -3
  68. package/esm2022/lib/admin/permissions/permissions.component.mjs +3 -3
  69. package/esm2022/lib/admin/positions/positions-popup.component.mjs +3 -3
  70. package/esm2022/lib/admin/positions/positions.component.mjs +3 -3
  71. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +3 -3
  72. package/esm2022/lib/admin/profiler/profiler.component.mjs +3 -3
  73. package/esm2022/lib/admin/system.service.mjs +3 -3
  74. package/esm2022/lib/admin/utility-wrapper.component.mjs +3 -3
  75. package/esm2022/lib/admin/utility.pane.component.mjs +11 -13
  76. package/esm2022/lib/app.component.mjs +6 -6
  77. package/esm2022/lib/bizdoc.module.mjs +4 -4
  78. package/esm2022/lib/browse/browse-items.component.mjs +3 -3
  79. package/esm2022/lib/browse/browse.mobile.component.mjs +3 -3
  80. package/esm2022/lib/browse/browse.pane.component.mjs +3 -3
  81. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +3 -3
  82. package/esm2022/lib/browse/filter/filter.component.mjs +3 -3
  83. package/esm2022/lib/browse/folders-menu.component.mjs +3 -3
  84. package/esm2022/lib/chat/chat-info.mjs +3 -3
  85. package/esm2022/lib/chat/chat.mobile.component.mjs +3 -3
  86. package/esm2022/lib/chat/chat.service.mjs +3 -3
  87. package/esm2022/lib/chat/contacts.component.mjs +6 -6
  88. package/esm2022/lib/chat/contacts.pane.component.mjs +3 -3
  89. package/esm2022/lib/chat/conversation.component.mjs +3 -3
  90. package/esm2022/lib/chat/conversation.pane.component.mjs +3 -3
  91. package/esm2022/lib/compose/action/action-picker.component.mjs +3 -3
  92. package/esm2022/lib/compose/action/action.dialog.mjs +3 -3
  93. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +3 -3
  94. package/esm2022/lib/compose/action/assign-action.component.mjs +3 -3
  95. package/esm2022/lib/compose/action/moveto-action.component.mjs +3 -3
  96. package/esm2022/lib/compose/action/return-action.component.mjs +3 -3
  97. package/esm2022/lib/compose/attachments/attachments.component.mjs +3 -3
  98. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
  99. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +3 -3
  100. package/esm2022/lib/compose/box/box.component.mjs +3 -3
  101. package/esm2022/lib/compose/box/control.component.mjs +3 -3
  102. package/esm2022/lib/compose/box/row.component.mjs +3 -3
  103. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +3 -3
  104. package/esm2022/lib/compose/comments/comment.component.mjs +3 -3
  105. package/esm2022/lib/compose/comments/comments.component.mjs +3 -3
  106. package/esm2022/lib/compose/comments/comments.pane.component.mjs +3 -3
  107. package/esm2022/lib/compose/comments/edit-comment.component.mjs +3 -3
  108. package/esm2022/lib/compose/comments/edits.component.mjs +3 -3
  109. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  110. package/esm2022/lib/compose/comments/votes.component.mjs +3 -3
  111. package/esm2022/lib/compose/compose-resolve.service.mjs +6 -6
  112. package/esm2022/lib/compose/compose.mobile.component.mjs +3 -3
  113. package/esm2022/lib/compose/compose.pane.component.mjs +3 -3
  114. package/esm2022/lib/compose/copy/copy.dialog.mjs +3 -3
  115. package/esm2022/lib/compose/dismiss.service.mjs +3 -3
  116. package/esm2022/lib/compose/document-resolver.service.mjs +3 -3
  117. package/esm2022/lib/compose/document.component.mjs +3 -3
  118. package/esm2022/lib/compose/document.mobile.component.mjs +3 -3
  119. package/esm2022/lib/compose/document.pane.component.mjs +3 -3
  120. package/esm2022/lib/compose/events/events.component.mjs +3 -3
  121. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  122. package/esm2022/lib/compose/form.component.mjs +3 -3
  123. package/esm2022/lib/compose/new-menu.component.mjs +3 -3
  124. package/esm2022/lib/compose/privilage.directive.mjs +6 -6
  125. package/esm2022/lib/compose/recipient-resolver.service.mjs +3 -3
  126. package/esm2022/lib/compose/state.component.mjs +3 -3
  127. package/esm2022/lib/compose/tag/tags.component.mjs +3 -3
  128. package/esm2022/lib/compose/trace/flow.component.mjs +3 -3
  129. package/esm2022/lib/compose/trace/people.component.mjs +3 -3
  130. package/esm2022/lib/compose/trace/trace.base.mjs +3 -3
  131. package/esm2022/lib/compose/trace/trace.component.mjs +3 -3
  132. package/esm2022/lib/compose/trace/trace.pane.component.mjs +3 -3
  133. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +3 -3
  134. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  135. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +3 -3
  136. package/esm2022/lib/core/account.service.mjs +3 -3
  137. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  138. package/esm2022/lib/core/avatar/avatar.component.mjs +3 -3
  139. package/esm2022/lib/core/base.mjs +1 -1
  140. package/esm2022/lib/core/checkbox.mjs +3 -3
  141. package/esm2022/lib/core/component-factory-resolver.mjs +3 -3
  142. package/esm2022/lib/core/datasource.service.mjs +3 -3
  143. package/esm2022/lib/core/fields/address.designer.mjs +3 -3
  144. package/esm2022/lib/core/fields/address.field.mjs +3 -3
  145. package/esm2022/lib/core/fields/autocomplete.field.mjs +6 -6
  146. package/esm2022/lib/core/fields/checkbox.designer.mjs +3 -3
  147. package/esm2022/lib/core/fields/checkbox.field.mjs +3 -3
  148. package/esm2022/lib/core/fields/checklist.designer.mjs +3 -3
  149. package/esm2022/lib/core/fields/checklist.field.mjs +3 -3
  150. package/esm2022/lib/core/fields/date-range.designer.mjs +3 -3
  151. package/esm2022/lib/core/fields/date-range.field.mjs +3 -3
  152. package/esm2022/lib/core/fields/date.designer.mjs +3 -3
  153. package/esm2022/lib/core/fields/date.field.mjs +3 -3
  154. package/esm2022/lib/core/fields/expression.field.mjs +6 -6
  155. package/esm2022/lib/core/fields/file.designer.mjs +3 -3
  156. package/esm2022/lib/core/fields/file.field.mjs +3 -3
  157. package/esm2022/lib/core/fields/html.designer.mjs +3 -3
  158. package/esm2022/lib/core/fields/html.field.mjs +3 -3
  159. package/esm2022/lib/core/fields/input.designer.mjs +3 -3
  160. package/esm2022/lib/core/fields/input.field.mjs +3 -3
  161. package/esm2022/lib/core/fields/localized-string.field.mjs +6 -6
  162. package/esm2022/lib/core/fields/numeric.designer.mjs +3 -3
  163. package/esm2022/lib/core/fields/numeric.field.mjs +3 -3
  164. package/esm2022/lib/core/fields/options.base.mjs +6 -6
  165. package/esm2022/lib/core/fields/options.component.mjs +3 -3
  166. package/esm2022/lib/core/fields/radio-button.designer.mjs +3 -3
  167. package/esm2022/lib/core/fields/radio-button.field.mjs +3 -3
  168. package/esm2022/lib/core/fields/select.designer.mjs +3 -3
  169. package/esm2022/lib/core/fields/select.field.mjs +3 -3
  170. package/esm2022/lib/core/fields/signature.designer.mjs +3 -3
  171. package/esm2022/lib/core/fields/signature.field.mjs +3 -3
  172. package/esm2022/lib/core/fields/switch.field.mjs +3 -3
  173. package/esm2022/lib/core/fields/tags.designer.mjs +3 -3
  174. package/esm2022/lib/core/fields/tags.field.mjs +3 -3
  175. package/esm2022/lib/core/fields/textarea.designer.mjs +3 -3
  176. package/esm2022/lib/core/fields/textarea.field.mjs +3 -3
  177. package/esm2022/lib/core/fields/time.designer.mjs +3 -3
  178. package/esm2022/lib/core/fields/time.field.mjs +3 -3
  179. package/esm2022/lib/core/fields/timespan.field.mjs +6 -6
  180. package/esm2022/lib/core/fields/yesno.designer.mjs +3 -3
  181. package/esm2022/lib/core/fields/yesno.field.mjs +3 -3
  182. package/esm2022/lib/core/guide/guide.component.mjs +3 -3
  183. package/esm2022/lib/core/guide/guide.service.mjs +3 -3
  184. package/esm2022/lib/core/guide/help-tip.component.mjs +3 -3
  185. package/esm2022/lib/core/http.interceptor.mjs +3 -3
  186. package/esm2022/lib/core/hub.service.mjs +3 -3
  187. package/esm2022/lib/core/identity/identity.component.mjs +3 -3
  188. package/esm2022/lib/core/info/attachment-info.service.mjs +3 -3
  189. package/esm2022/lib/core/info/document-info.service.mjs +3 -3
  190. package/esm2022/lib/core/info/location-info.component.mjs +3 -3
  191. package/esm2022/lib/core/info/map-info.mjs +3 -3
  192. package/esm2022/lib/core/inputs/address.input.mjs +3 -3
  193. package/esm2022/lib/core/inputs/auto-complete.input.mjs +3 -3
  194. package/esm2022/lib/core/inputs/combination-picker-body.mjs +3 -3
  195. package/esm2022/lib/core/inputs/combination-picker.mjs +3 -3
  196. package/esm2022/lib/core/inputs/combination-pool.mjs +3 -3
  197. package/esm2022/lib/core/inputs/file.input.mjs +3 -3
  198. package/esm2022/lib/core/inputs/select.input.mjs +3 -3
  199. package/esm2022/lib/core/inputs/signature.input.mjs +3 -3
  200. package/esm2022/lib/core/inputs/time-picker.mjs +3 -3
  201. package/esm2022/lib/core/inputs/timespan.input.mjs +3 -3
  202. package/esm2022/lib/core/layout.component.mjs +3 -3
  203. package/esm2022/lib/core/lottie-animation.mjs +3 -3
  204. package/esm2022/lib/core/mailbox.service.mjs +3 -3
  205. package/esm2022/lib/core/none.component.mjs +3 -3
  206. package/esm2022/lib/core/pipes/action.pipe.mjs +3 -3
  207. package/esm2022/lib/core/pipes/calendar.pipe.mjs +3 -3
  208. package/esm2022/lib/core/pipes/date-format.pipe.mjs +3 -3
  209. package/esm2022/lib/core/pipes/daterange.pipe.mjs +6 -6
  210. package/esm2022/lib/core/pipes/difference.pipe.mjs +3 -3
  211. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +3 -3
  212. package/esm2022/lib/core/pipes/duration.pipe.mjs +3 -3
  213. package/esm2022/lib/core/pipes/form.pipe.mjs +3 -3
  214. package/esm2022/lib/core/pipes/join.pipe.mjs +3 -3
  215. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +3 -3
  216. package/esm2022/lib/core/pipes/role.pipe.mjs +3 -3
  217. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  218. package/esm2022/lib/core/pipes/sort.pipe.mjs +9 -9
  219. package/esm2022/lib/core/pipes/state.pipe.mjs +3 -3
  220. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +6 -6
  221. package/esm2022/lib/core/pipes/translate.pipe.mjs +9 -9
  222. package/esm2022/lib/core/pipes/type-value.pipe.mjs +3 -3
  223. package/esm2022/lib/core/pipes/user-name.pipe.mjs +3 -3
  224. package/esm2022/lib/core/popup/popup.component.mjs +3 -3
  225. package/esm2022/lib/core/popup/popup.service.mjs +3 -3
  226. package/esm2022/lib/core/popup/tooltip.directive.mjs +6 -6
  227. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  228. package/esm2022/lib/core/prompt/mask/mask.component.mjs +3 -3
  229. package/esm2022/lib/core/prompt.service.mjs +3 -3
  230. package/esm2022/lib/core/router.mjs +6 -6
  231. package/esm2022/lib/core/save-changes.dialog.mjs +3 -3
  232. package/esm2022/lib/core/session.service.mjs +3 -3
  233. package/esm2022/lib/core/slots/router.directive.mjs +3 -3
  234. package/esm2022/lib/core/slots/router.service.mjs +3 -3
  235. package/esm2022/lib/core/slots/slots.component.mjs +3 -3
  236. package/esm2022/lib/core/sticky-toolbar.exp.mjs +3 -3
  237. package/esm2022/lib/core/tagging/documents.component.mjs +3 -3
  238. package/esm2022/lib/core/tagging/edit-input.component.mjs +3 -3
  239. package/esm2022/lib/core/tagging/emoji.component.mjs +3 -3
  240. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +3 -3
  241. package/esm2022/lib/core/tagging/tagging.component-base.mjs +3 -3
  242. package/esm2022/lib/core/tagging/tagging.directive.mjs +3 -3
  243. package/esm2022/lib/core/tagging/tagging.pipe.mjs +3 -3
  244. package/esm2022/lib/core/tagging/users.component.mjs +3 -3
  245. package/esm2022/lib/core/translate.service.mjs +3 -3
  246. package/esm2022/lib/core/virtual-tabs.component.exp.mjs +6 -6
  247. package/esm2022/lib/core/window-title.service.mjs +3 -3
  248. package/esm2022/lib/cube/accum/accum.component.mjs +4 -5
  249. package/esm2022/lib/cube/chart/chart.component.mjs +3 -3
  250. package/esm2022/lib/cube/cube-info.service.mjs +3 -3
  251. package/esm2022/lib/cube/cube-menu.component.mjs +3 -3
  252. package/esm2022/lib/cube/cube-view.component.mjs +41 -35
  253. package/esm2022/lib/cube/cube.service.mjs +3 -3
  254. package/esm2022/lib/cube/explore/document-item.component.mjs +3 -3
  255. package/esm2022/lib/cube/explore/explore-item.component.mjs +3 -3
  256. package/esm2022/lib/cube/explore/explore-items.component.mjs +3 -3
  257. package/esm2022/lib/cube/explore/explore.pane.component.mjs +3 -3
  258. package/esm2022/lib/cube/explore/item-resolver.service.mjs +6 -6
  259. package/esm2022/lib/cube/explore/item.pane.component.mjs +3 -3
  260. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  261. package/esm2022/lib/cube/filter/filter.component.mjs +3 -3
  262. package/esm2022/lib/cube/grid/grid.component.mjs +5 -8
  263. package/esm2022/lib/cube/matrix/matrix.base.mjs +3 -3
  264. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  265. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  266. package/esm2022/lib/cube/matrix/popup.component.mjs +3 -3
  267. package/esm2022/lib/cube/matrix/table.component.mjs +3 -3
  268. package/esm2022/lib/cube/parallel/parallel.component.mjs +3 -3
  269. package/esm2022/lib/cube/pivot/pivot.component.mjs +5 -7
  270. package/esm2022/lib/cube/spreadsheet/spreadsheet.component.mjs +5 -5
  271. package/esm2022/lib/cube/spreadsheet/spreadsheet.container.mjs +3 -3
  272. package/esm2022/lib/cube/sum/sum.component.mjs +3 -3
  273. package/esm2022/lib/cube/view-base.mjs +3 -3
  274. package/esm2022/lib/cube/view.mobile.component.mjs +3 -3
  275. package/esm2022/lib/cube/view.pane.component.mjs +3 -3
  276. package/esm2022/lib/dashboard/actions/actions.widget.mjs +3 -3
  277. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
  278. package/esm2022/lib/dashboard/cube/compare.widget.mjs +3 -3
  279. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
  280. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  281. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
  282. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +3 -3
  283. package/esm2022/lib/dashboard/cube/documents.widget.mjs +3 -3
  284. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  285. package/esm2022/lib/dashboard/dashboard.component.mjs +3 -3
  286. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +3 -3
  287. package/esm2022/lib/dashboard/recents/recents.widget.mjs +3 -3
  288. package/esm2022/lib/dashboard/score/activity.widget.mjs +3 -3
  289. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  290. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  291. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +3 -3
  292. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +3 -3
  293. package/esm2022/lib/dashboard/widget-item.component.mjs +3 -3
  294. package/esm2022/lib/designer.module.mjs +4 -4
  295. package/esm2022/lib/desktop.module.mjs +4 -4
  296. package/esm2022/lib/home/about/about.dialog.mjs +3 -3
  297. package/esm2022/lib/home/home-base.component.mjs +3 -3
  298. package/esm2022/lib/home/home.desktop.component.mjs +3 -3
  299. package/esm2022/lib/home/home.mobile.component.mjs +3 -3
  300. package/esm2022/lib/home/notifications/notifications.component.mjs +3 -3
  301. package/esm2022/lib/home/options/options.component.mjs +3 -3
  302. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  303. package/esm2022/lib/home/sign/sign.component.mjs +3 -3
  304. package/esm2022/lib/impersonate/impersonate.component.mjs +3 -3
  305. package/esm2022/lib/mobile.module.mjs +4 -4
  306. package/esm2022/lib/modules/chart.module.mjs +7 -7
  307. package/esm2022/lib/modules/circular-gauge.module.mjs +4 -4
  308. package/esm2022/lib/modules/datepicker.intl.mjs +3 -3
  309. package/esm2022/lib/modules/dayjs.module.mjs +4 -4
  310. package/esm2022/lib/modules/diagram.module.mjs +4 -4
  311. package/esm2022/lib/modules/gantt.module.mjs +4 -4
  312. package/esm2022/lib/modules/grid.module.mjs +4 -4
  313. package/esm2022/lib/modules/linear-gauge.module.mjs +4 -4
  314. package/esm2022/lib/modules/material.module.mjs +4 -4
  315. package/esm2022/lib/modules/paginator.intl.mjs +3 -3
  316. package/esm2022/lib/modules/pivot.module.mjs +4 -4
  317. package/esm2022/lib/modules/schedule.module.mjs +4 -4
  318. package/esm2022/lib/modules/spreadsheet.module.mjs +4 -4
  319. package/esm2022/lib/modules/stepper.intl.mjs +3 -3
  320. package/esm2022/lib/modules/texteditor.module.mjs +4 -4
  321. package/esm2022/lib/notifications/filter.component.mjs +3 -3
  322. package/esm2022/lib/notifications/notifications-table.component.mjs +3 -3
  323. package/esm2022/lib/notifications/notifications.mobile.component.mjs +3 -3
  324. package/esm2022/lib/notifications/notifications.pane.component.mjs +3 -3
  325. package/esm2022/lib/notifications/notifications.service.mjs +3 -3
  326. package/esm2022/lib/notifications/types/commented.notification.mjs +3 -3
  327. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  328. package/esm2022/lib/notifications/types/escalated.notification.mjs +3 -3
  329. package/esm2022/lib/notifications/types/invite.notification.mjs +3 -3
  330. package/esm2022/lib/notifications/types/liked.notification.mjs +3 -3
  331. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +3 -3
  332. package/esm2022/lib/notifications/types/notification-base.mjs +3 -3
  333. package/esm2022/lib/notifications/types/nudge.notification.mjs +3 -3
  334. package/esm2022/lib/notifications/types/state-changed.notification.mjs +3 -3
  335. package/esm2022/lib/notifications/types/tagged.notification.mjs +3 -3
  336. package/esm2022/lib/notifications/types/text.notification.mjs +3 -3
  337. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  338. package/esm2022/lib/options/options.component.mjs +3 -3
  339. package/esm2022/lib/options/options.service.mjs +3 -3
  340. package/esm2022/lib/reports/arguments-component.mjs +3 -3
  341. package/esm2022/lib/reports/cube/documents.component.mjs +3 -3
  342. package/esm2022/lib/reports/cube/grid-documents.component.mjs +15 -15
  343. package/esm2022/lib/reports/cube/performance-hilo.component.mjs +184 -0
  344. package/esm2022/lib/reports/cube/role-performance.component.mjs +109 -76
  345. package/esm2022/lib/reports/cube/table-documents.component.mjs +3 -3
  346. package/esm2022/lib/reports/cube/usage-args.component.mjs +3 -3
  347. package/esm2022/lib/reports/cube/usage-base.mjs +17 -18
  348. package/esm2022/lib/reports/cube/usage-chart.component.mjs +6 -6
  349. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +8 -8
  350. package/esm2022/lib/reports/cube/usage.component.mjs +3 -3
  351. package/esm2022/lib/reports/report-ref.mjs +2 -7
  352. package/esm2022/lib/reports/report-viewer.component.mjs +17 -17
  353. package/esm2022/lib/reports/report.mobile.component.mjs +3 -3
  354. package/esm2022/lib/reports/report.pane.component.mjs +5 -5
  355. package/esm2022/lib/reports/reports-menu.component.mjs +3 -3
  356. package/esm2022/lib/reports/substitution/substitution.component.mjs +3 -3
  357. package/esm2022/lib/reports/table/table-view.component.mjs +3 -3
  358. package/esm2022/lib/reports/tasks/tasks.component.mjs +3 -3
  359. package/esm2022/lib/scheduler/schedule.component.mjs +3 -3
  360. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  361. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +3 -3
  362. package/esm2022/lib/search/cube.component.mjs +7 -5
  363. package/esm2022/lib/search/document.component.mjs +3 -3
  364. package/esm2022/lib/search/guide.component.mjs +3 -3
  365. package/esm2022/lib/search/path.component.mjs +3 -3
  366. package/esm2022/lib/search/search.service.mjs +3 -3
  367. package/esm2022/lib/shared.module.mjs +10 -9
  368. package/esm2022/lib/system.module.mjs +4 -4
  369. package/esm2022/lib/views/cube/chart.component.mjs +3 -3
  370. package/esm2022/lib/views/cube/cube-base.mjs +3 -3
  371. package/esm2022/lib/views/cube/explore.component.mjs +3 -3
  372. package/esm2022/lib/views/cube/matrix.component.mjs +3 -3
  373. package/esm2022/lib/views/cube/parallel.component.mjs +3 -3
  374. package/esm2022/lib/views/cube/pivot.component.mjs +3 -3
  375. package/esm2022/lib/views/cube/sum.component.mjs +3 -3
  376. package/esm2022/lib/views/cube/view.component.mjs +3 -3
  377. package/esm2022/lib/views/timeline/timeline.component.mjs +3 -3
  378. package/esm2022/lib/views/view-item.component.mjs +3 -3
  379. package/esm2022/lib/views/views.component.mjs +3 -3
  380. package/esm2022/lib/views/views.mobile.component.mjs +3 -3
  381. package/esm2022/lib/views/views.pane.component.mjs +3 -3
  382. package/fesm2022/bizdoc-core.mjs +1604 -1406
  383. package/fesm2022/bizdoc-core.mjs.map +1 -1
  384. package/lib/admin/utility.pane.component.d.ts +2 -2
  385. package/lib/core/base.d.ts +1 -0
  386. package/lib/cube/cube-view.component.d.ts +7 -3
  387. package/lib/reports/cube/grid-documents.component.d.ts +4 -1
  388. package/lib/reports/cube/performance-hilo.component.d.ts +57 -0
  389. package/lib/reports/cube/role-performance.component.d.ts +25 -16
  390. package/lib/reports/cube/usage-base.d.ts +4 -3
  391. package/lib/reports/cube/usage-chart.component.d.ts +1 -1
  392. package/lib/reports/cube/usage-pivot.component.d.ts +2 -2
  393. package/lib/reports/report-ref.d.ts +1 -4
  394. package/lib/reports/report-viewer.component.d.ts +1 -1
  395. package/lib/reports/report.pane.component.d.ts +1 -1
  396. package/lib/shared.module.d.ts +195 -194
  397. package/package.json +1 -1
@@ -0,0 +1,184 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component } from '@angular/core';
3
+ import { Subject, startWith, takeUntil } from 'rxjs';
4
+ /// <reference path="./node_modules/dayjs/plugin/duration.d.ts" />
5
+ import dayjs from 'dayjs';
6
+ import { BizDoc } from '../../core/decorators';
7
+ import { FONT_FAMILY } from '../../core/colors';
8
+ //import { CircularGauge, GaugeTheme, IAxisLabelRenderEventArgs, ITooltipRenderEventArgs, LegendSettingsModel, RangeModel, TooltipSettingsModel } from '@syncfusion/ej2-angular-circulargauge';
9
+ import { Chart } from '@syncfusion/ej2-angular-charts';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../../core/account.service";
12
+ import * as i2 from "../../core/session.service";
13
+ import * as i3 from "../../core/translate.service";
14
+ import * as i4 from "../report-ref";
15
+ let PerformanceHiloComponent = class PerformanceHiloComponent {
16
+ constructor(_elementRef, _accounts, _session, _translate, _reportRef) {
17
+ this._elementRef = _elementRef;
18
+ this._accounts = _accounts;
19
+ this._session = _session;
20
+ this._translate = _translate;
21
+ this._reportRef = _reportRef;
22
+ this.titleStyle = {
23
+ fontFamily: FONT_FAMILY
24
+ };
25
+ this._destroy = new Subject();
26
+ _session.themeChange.pipe(takeUntil(this._destroy), startWith(_session.theme)).subscribe(t => {
27
+ //this.theme = t.dark ? 'Material3Dark' : 'Material3';
28
+ //this.gauge && this._draw();
29
+ this.chart && this._draw();
30
+ });
31
+ }
32
+ onBind(data) {
33
+ //this.gauge?.destroy();
34
+ this.chart?.destroy();
35
+ if (!data.length)
36
+ return;
37
+ let accumStd = 0, countStd = 0, accumDuration = 0;
38
+ this.maxStd = 0, this.minStd = 0, this.maxDuration = 0, this.minDuration = data[0].durationLow;
39
+ data.forEach(e => {
40
+ if (e.standardAvg) {
41
+ if (e.standardHigh > this.maxStd)
42
+ this.maxStd = e.standardHigh;
43
+ if (e.standardLow < this.minStd || this.minStd === 0)
44
+ this.minStd = e.standardLow;
45
+ countStd++;
46
+ accumStd += e.standardAvg;
47
+ }
48
+ accumDuration += e.durationAvg;
49
+ if (e.durationHigh > this.maxDuration)
50
+ this.maxDuration = e.durationHigh;
51
+ if (e.durationLow < this.minDuration)
52
+ this.minDuration = e.durationLow;
53
+ });
54
+ this.stdAvg = countStd ? accumStd / countStd : 0,
55
+ this.durationAvg = accumDuration / data.length;
56
+ this._accounts.getAll(data.map(e => e.userId)).
57
+ subscribe(users => {
58
+ this.data = data.map((d, i) => {
59
+ const durationDev = d.durationAvg / this.durationAvg, standardDev = this.stdAvg ? d.durationAvg / this.stdAvg : 0;
60
+ return ({
61
+ durationDev,
62
+ standardDev,
63
+ ...d,
64
+ name: users[i].name,
65
+ values: [d.standardHigh, d.durationHigh, d.durationAvg, d.durationLow, d.standardLow]
66
+ });
67
+ });
68
+ this._draw();
69
+ });
70
+ }
71
+ onExport() {
72
+ this.chart?.export('XLSX', this._reportRef.name);
73
+ }
74
+ _draw() {
75
+ this.chart?.destroy();
76
+ //const colors = this._session.accentPalette;
77
+ //this.gauge?.destroy();
78
+ //this.gauge = new CircularGauge({
79
+ // theme: this.theme,
80
+ // title: this._translate.get('AverageValue', dayjs.duration(this.durationAvg, 'seconds').format('DD:HH:mm')),
81
+ // titleStyle: this.titleStyle,
82
+ // tooltip: this.tooltip,
83
+ // axes: [{
84
+ // startAngle: 270,
85
+ // endAngle: 90,
86
+ // pointers: [{
87
+ // text: this._translate.get('Standard'),
88
+ // color: this._session.getPrimery(),
89
+ // value: this.stdAvg
90
+ // }],
91
+ // ranges: this.data.map((e, i) => ({
92
+ // legendText: e.name,
93
+ // radius: `${100 - i * 5}%`,
94
+ // startWidth: 3,
95
+ // endWidth: 3,
96
+ // start: this.minDuration,
97
+ // end: this.stdAvg ? Math.floor(e.durationAvg / this.stdAvg) : Math.floor(e.durationAvg / this.durationAvg),
98
+ // color: colors[Math.floor((i + 9) / i)]
99
+ // } as RangeModel))
100
+ // }],
101
+ // tooltipRender: this.tooltipRender.bind(this),
102
+ // legendSettings: this.legendSettings,
103
+ // enableRtl: this._session.inverse,
104
+ // height: '100%',
105
+ //},
106
+ // this._elementRef.nativeElement);
107
+ this.chart = new Chart({
108
+ primaryYAxis: {
109
+ stripLines: [{
110
+ text: this._translate.get('Standard'),
111
+ textStyle: {
112
+ fontFamily: FONT_FAMILY,
113
+ },
114
+ opacity: .8,
115
+ start: this.minStd,
116
+ end: this.maxStd,
117
+ }]
118
+ },
119
+ primaryXAxis: {
120
+ valueType: 'Category'
121
+ },
122
+ tooltip: { enable: true },
123
+ tooltipRender: this.tooltipRender.bind(this),
124
+ series: [{
125
+ type: 'BoxAndWhisker',
126
+ dataSource: this.data,
127
+ boxPlotMode: 'Normal',
128
+ enableTooltip: true,
129
+ xName: 'name',
130
+ yName: 'values'
131
+ }, {
132
+ type: 'Spline',
133
+ dataSource: this.data,
134
+ xName: 'name',
135
+ width: 3,
136
+ dashArray: '3 2',
137
+ yName: 'durationAvg',
138
+ }],
139
+ height: '100%',
140
+ axisLabelRender: this.axisLabelRender.bind(this),
141
+ enableExport: true,
142
+ palettes: [
143
+ this._session.getAccent(), this._session.getPrimery()
144
+ ]
145
+ }, this._elementRef.nativeElement);
146
+ }
147
+ axisLabelRender(evt) {
148
+ if (evt.axis.name === 'primaryYAxis')
149
+ evt.text = dayjs.duration(evt.value, 's').humanize(); // 'DD:HH:mm'
150
+ }
151
+ tooltipRender(evt) {
152
+ //evt.content = dayjs.duration(evt.range.end, 's').humanize();// 'DD:HH:mm'
153
+ if (evt.data.seriesIndex === 0) {
154
+ const [standardHigh, durationHigh, durationAvg, durationLow, standardLow] = evt.point.y;
155
+ evt.text = dayjs.duration(durationHigh, 's').format('DD:HH:mm');
156
+ if (standardHigh) {
157
+ const deviation = Math.round(this.data[evt.data.pointIndex].standardDev);
158
+ evt.text += ` ${deviation}%`;
159
+ }
160
+ }
161
+ else {
162
+ evt.headerText = this._translate.get('Average');
163
+ evt.text = dayjs.duration(evt.data.pointY, 's').format('DD:HH:mm');
164
+ }
165
+ }
166
+ ngOnDestroy() {
167
+ //this.gauge?.destroy();
168
+ this.chart?.destroy();
169
+ this._destroy.next();
170
+ }
171
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: PerformanceHiloComponent, deps: [{ token: i0.ElementRef }, { token: i1.AccountService }, { token: i2.SessionService }, { token: i3.TranslateService }, { token: i4.ReportRef }], target: i0.ɵɵFactoryTarget.Component }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: PerformanceHiloComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, styles: [":host{flex:1}\n"] }); }
173
+ };
174
+ PerformanceHiloComponent = __decorate([
175
+ BizDoc({
176
+ selector: 'bizdoc-performance-hilo'
177
+ })
178
+ ], PerformanceHiloComponent);
179
+ export { PerformanceHiloComponent };
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: PerformanceHiloComponent, decorators: [{
181
+ type: Component,
182
+ args: [{ template: '', styles: [":host{flex:1}\n"] }]
183
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.AccountService }, { type: i2.SessionService }, { type: i3.TranslateService }, { type: i4.ReportRef }] });
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZm9ybWFuY2UtaGlsby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3JlcG9ydHMvY3ViZS9wZXJmb3JtYW5jZS1oaWxvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELGtFQUFrRTtBQUNsRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTS9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCwrTEFBK0w7QUFDL0wsT0FBTyxFQUFFLEtBQUssRUFBc0QsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0FBVXBHLElBQU0sd0JBQXdCLEdBQTlCLE1BQU0sd0JBQXdCO0lBaUJuQyxZQUNVLFdBQXVDLEVBQ3ZDLFNBQXlCLEVBQ3pCLFFBQXdCLEVBQ3hCLFVBQTRCLEVBQzFCLFVBQStDO1FBSmpELGdCQUFXLEdBQVgsV0FBVyxDQUE0QjtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFxQztRQVpsRCxlQUFVLEdBQUc7WUFDcEIsVUFBVSxFQUFFLFdBQVc7U0FDeEIsQ0FBQztRQUNlLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBVzlDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFL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LHdCQUF3QjtJQUhwQyxNQUFNLENBQUM7UUFDTixRQUFRLEVBQUUseUJBQXlCO0tBQ3BDLENBQUM7R0FDVyx3QkFBd0IsQ0EwS3BDOzsyRkExS1ksd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi9ub2RlX21vZHVsZXMvZGF5anMvcGx1Z2luL2R1cmF0aW9uLmQudHNcIiAvPlxyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UnO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEZPTlRfRkFNSUxZIH0gZnJvbSAnLi4vLi4vY29yZS9jb2xvcnMnO1xyXG4vL2ltcG9ydCB7IENpcmN1bGFyR2F1Z2UsIEdhdWdlVGhlbWUsIElBeGlzTGFiZWxSZW5kZXJFdmVudEFyZ3MsIElUb29sdGlwUmVuZGVyRXZlbnRBcmdzLCBMZWdlbmRTZXR0aW5nc01vZGVsLCBSYW5nZU1vZGVsLCBUb29sdGlwU2V0dGluZ3NNb2RlbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNpcmN1bGFyZ2F1Z2UnO1xyXG5pbXBvcnQgeyBDaGFydCwgSUF4aXNMYWJlbFJlbmRlckV2ZW50QXJncywgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1jaGFydHMnO1xyXG5pbXBvcnQgeyBSZXBvcnRSZWYgfSBmcm9tICcuLi9yZXBvcnQtcmVmJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZXM6IGA6aG9zdCB7ZmxleDogMX1gXHJcbn0pXHJcbkBCaXpEb2Moe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLXBlcmZvcm1hbmNlLWhpbG8nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXJmb3JtYW5jZUhpbG9Db21wb25lbnQgaW1wbGVtZW50cyBSZXBvcnRDb21wb25lbnQ8TW9kZWw+LCBPbkRlc3Ryb3kge1xyXG4gIC8vdGhlbWU6IEdhdWdlVGhlbWU7XHJcbiAgLy9nYXVnZTogQ2lyY3VsYXJHYXVnZTtcclxuICBkdXJhdGlvbkF2ZzogbnVtYmVyO1xyXG4gIHN0ZEF2ZzogbnVtYmVyO1xyXG4gIG1heFN0ZDogbnVtYmVyO1xyXG4gIG1pblN0ZDogbnVtYmVyO1xyXG4gIG1pbkR1cmF0aW9uOiBudW1iZXI7XHJcbiAgbWF4RHVyYXRpb246IG51bWJlcjtcclxuICBkYXRhOiBJdGVtW107XHJcbiAgcmVhZG9ubHkgdGl0bGVTdHlsZSA9IHtcclxuICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAvL3JlYWRvbmx5IGxlZ2VuZFNldHRpbmdzOiBMZWdlbmRTZXR0aW5nc01vZGVsID0ge307XHJcbiAgLy9yZWFkb25seSB0b29sdGlwOiBUb29sdGlwU2V0dGluZ3NNb2RlbCA9IHt9O1xyXG4gIGNoYXJ0OiBDaGFydDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgX3JlcG9ydFJlZjogUmVwb3J0UmVmPFBlcmZvcm1hbmNlU2V0dGluZ3NNb2RlbD5cclxuICApIHtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBzdGFydFdpdGgoX3Nlc3Npb24udGhlbWUpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIC8vdGhpcy50aGVtZSA9IHQuZGFyayA/ICdNYXRlcmlhbDNEYXJrJyA6ICdNYXRlcmlhbDMnO1xyXG4gICAgICAvL3RoaXMuZ2F1Z2UgJiYgdGhpcy5fZHJhdygpO1xyXG4gICAgICB0aGlzLmNoYXJ0ICYmIHRoaXMuX2RyYXcoKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIG9uQmluZChkYXRhOiBNb2RlbFtdKSB7XHJcbiAgICAvL3RoaXMuZ2F1Z2U/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuY2hhcnQ/LmRlc3Ryb3koKTtcclxuICAgIGlmICghZGF0YS5sZW5ndGgpIHJldHVybjtcclxuICAgIGxldCBhY2N1bVN0ZCA9IDAsIGNvdW50U3RkID0gMCwgYWNjdW1EdXJhdGlvbiA9IDA7XHJcbiAgICB0aGlzLm1heFN0ZCA9IDAsIHRoaXMubWluU3RkID0gMCwgdGhpcy5tYXhEdXJhdGlvbiA9IDAsIHRoaXMubWluRHVyYXRpb24gPSBkYXRhWzBdLmR1cmF0aW9uTG93O1xyXG4gICAgZGF0YS5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICBpZiAoZS5zdGFuZGFyZEF2Zykge1xyXG4gICAgICAgIGlmIChlLnN0YW5kYXJkSGlnaCA+IHRoaXMubWF4U3RkKVxyXG4gICAgICAgICAgdGhpcy5tYXhTdGQgPSBlLnN0YW5kYXJkSGlnaDtcclxuICAgICAgICBpZiAoZS5zdGFuZGFyZExvdyA8IHRoaXMubWluU3RkIHx8IHRoaXMubWluU3RkID09PSAwKVxyXG4gICAgICAgICAgdGhpcy5taW5TdGQgPSBlLnN0YW5kYXJkTG93O1xyXG4gICAgICAgIGNvdW50U3RkKys7XHJcbiAgICAgICAgYWNjdW1TdGQgKz0gZS5zdGFuZGFyZEF2ZztcclxuICAgICAgfVxyXG4gICAgICBhY2N1bUR1cmF0aW9uICs9IGUuZHVyYXRpb25Bdmc7XHJcbiAgICAgIGlmIChlLmR1cmF0aW9uSGlnaCA+IHRoaXMubWF4RHVyYXRpb24pXHJcbiAgICAgICAgdGhpcy5tYXhEdXJhdGlvbiA9IGUuZHVyYXRpb25IaWdoO1xyXG4gICAgICBpZiAoZS5kdXJhdGlvbkxvdyA8IHRoaXMubWluRHVyYXRpb24pXHJcbiAgICAgICAgdGhpcy5taW5EdXJhdGlvbiA9IGUuZHVyYXRpb25Mb3c7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3RkQXZnID0gY291bnRTdGQgPyBhY2N1bVN0ZCAvIGNvdW50U3RkIDogMCxcclxuICAgICAgdGhpcy5kdXJhdGlvbkF2ZyA9IGFjY3VtRHVyYXRpb24gLyBkYXRhLmxlbmd0aDtcclxuICAgIHRoaXMuX2FjY291bnRzLmdldEFsbChkYXRhLm1hcChlID0+IGUudXNlcklkKSkuXHJcbiAgICAgIHN1YnNjcmliZSh1c2VycyA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YS5tYXAoKGQsIGkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGR1cmF0aW9uRGV2ID0gZC5kdXJhdGlvbkF2ZyAvIHRoaXMuZHVyYXRpb25BdmcsXHJcbiAgICAgICAgICAgIHN0YW5kYXJkRGV2ID0gdGhpcy5zdGRBdmcgPyBkLmR1cmF0aW9uQXZnIC8gdGhpcy5zdGRBdmcgOiAwO1xyXG5cclxuICAgICAgICAgIHJldHVybiAoe1xyXG4gICAgICAgICAgICBkdXJhdGlvbkRldixcclxuICAgICAgICAgICAgc3RhbmRhcmREZXYsXHJcbiAgICAgICAgICAgIC4uLmQsXHJcbiAgICAgICAgICAgIG5hbWU6IHVzZXJzW2ldLm5hbWUsXHJcbiAgICAgICAgICAgIHZhbHVlczogW2Quc3RhbmRhcmRIaWdoLCBkLmR1cmF0aW9uSGlnaCwgZC5kdXJhdGlvbkF2ZywgZC5kdXJhdGlvbkxvdywgZC5zdGFuZGFyZExvd11cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIG9uRXhwb3J0KCkge1xyXG4gICAgdGhpcy5jaGFydD8uZXhwb3J0KCdYTFNYJywgdGhpcy5fcmVwb3J0UmVmLm5hbWUpO1xyXG4gIH1cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgdGhpcy5jaGFydD8uZGVzdHJveSgpO1xyXG4gICAgLy9jb25zdCBjb2xvcnMgPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgICAvL3RoaXMuZ2F1Z2U/LmRlc3Ryb3koKTtcclxuICAgIC8vdGhpcy5nYXVnZSA9IG5ldyBDaXJjdWxhckdhdWdlKHtcclxuICAgIC8vICB0aGVtZTogdGhpcy50aGVtZSxcclxuICAgIC8vICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnQXZlcmFnZVZhbHVlJywgZGF5anMuZHVyYXRpb24odGhpcy5kdXJhdGlvbkF2ZywgJ3NlY29uZHMnKS5mb3JtYXQoJ0REOkhIOm1tJykpLFxyXG4gICAgLy8gIHRpdGxlU3R5bGU6IHRoaXMudGl0bGVTdHlsZSxcclxuICAgIC8vICB0b29sdGlwOiB0aGlzLnRvb2x0aXAsXHJcbiAgICAvLyAgYXhlczogW3tcclxuICAgIC8vICAgIHN0YXJ0QW5nbGU6IDI3MCxcclxuICAgIC8vICAgIGVuZEFuZ2xlOiA5MCxcclxuICAgIC8vICAgIHBvaW50ZXJzOiBbe1xyXG4gICAgLy8gICAgICB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTdGFuZGFyZCcpLFxyXG4gICAgLy8gICAgICBjb2xvcjogdGhpcy5fc2Vzc2lvbi5nZXRQcmltZXJ5KCksXHJcbiAgICAvLyAgICAgIHZhbHVlOiB0aGlzLnN0ZEF2Z1xyXG4gICAgLy8gICAgfV0sXHJcbiAgICAvLyAgICByYW5nZXM6IHRoaXMuZGF0YS5tYXAoKGUsIGkpID0+ICh7XHJcbiAgICAvLyAgICAgIGxlZ2VuZFRleHQ6IGUubmFtZSxcclxuICAgIC8vICAgICAgcmFkaXVzOiBgJHsxMDAgLSBpICogNX0lYCxcclxuICAgIC8vICAgICAgc3RhcnRXaWR0aDogMyxcclxuICAgIC8vICAgICAgZW5kV2lkdGg6IDMsXHJcbiAgICAvLyAgICAgIHN0YXJ0OiB0aGlzLm1pbkR1cmF0aW9uLFxyXG4gICAgLy8gICAgICBlbmQ6IHRoaXMuc3RkQXZnID8gTWF0aC5mbG9vcihlLmR1cmF0aW9uQXZnIC8gdGhpcy5zdGRBdmcpIDogTWF0aC5mbG9vcihlLmR1cmF0aW9uQXZnIC8gdGhpcy5kdXJhdGlvbkF2ZyksXHJcbiAgICAvLyAgICAgIGNvbG9yOiBjb2xvcnNbTWF0aC5mbG9vcigoaSArIDkpIC8gaSldXHJcbiAgICAvLyAgICB9IGFzIFJhbmdlTW9kZWwpKVxyXG4gICAgLy8gIH1dLFxyXG4gICAgLy8gIHRvb2x0aXBSZW5kZXI6IHRoaXMudG9vbHRpcFJlbmRlci5iaW5kKHRoaXMpLFxyXG4gICAgLy8gIGxlZ2VuZFNldHRpbmdzOiB0aGlzLmxlZ2VuZFNldHRpbmdzLFxyXG4gICAgLy8gIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgLy8gIGhlaWdodDogJzEwMCUnLFxyXG4gICAgLy99LFxyXG4gICAgLy8gIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHtcclxuICAgICAgcHJpbWFyeVlBeGlzOiB7XHJcbiAgICAgICAgc3RyaXBMaW5lczogW3tcclxuICAgICAgICAgIHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N0YW5kYXJkJyksXHJcbiAgICAgICAgICB0ZXh0U3R5bGU6IHtcclxuICAgICAgICAgICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb3BhY2l0eTogLjgsXHJcbiAgICAgICAgICBzdGFydDogdGhpcy5taW5TdGQsXHJcbiAgICAgICAgICBlbmQ6IHRoaXMubWF4U3RkLFxyXG4gICAgICAgIH1dXHJcbiAgICAgIH0sXHJcbiAgICAgIHByaW1hcnlYQXhpczoge1xyXG4gICAgICAgIHZhbHVlVHlwZTogJ0NhdGVnb3J5J1xyXG4gICAgICB9LFxyXG4gICAgICB0b29sdGlwOiB7IGVuYWJsZTogdHJ1ZSB9LFxyXG4gICAgICB0b29sdGlwUmVuZGVyOiB0aGlzLnRvb2x0aXBSZW5kZXIuYmluZCh0aGlzKSxcclxuICAgICAgc2VyaWVzOiBbe1xyXG4gICAgICAgIHR5cGU6ICdCb3hBbmRXaGlza2VyJyxcclxuICAgICAgICBkYXRhU291cmNlOiB0aGlzLmRhdGEsXHJcbiAgICAgICAgYm94UGxvdE1vZGU6ICdOb3JtYWwnLFxyXG4gICAgICAgIGVuYWJsZVRvb2x0aXA6IHRydWUsXHJcbiAgICAgICAgeE5hbWU6ICduYW1lJyxcclxuICAgICAgICB5TmFtZTogJ3ZhbHVlcydcclxuICAgICAgfSwge1xyXG4gICAgICAgIHR5cGU6ICdTcGxpbmUnLFxyXG4gICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuZGF0YSxcclxuICAgICAgICB4TmFtZTogJ25hbWUnLFxyXG4gICAgICAgIHdpZHRoOiAzLFxyXG4gICAgICAgIGRhc2hBcnJheTogJzMgMicsXHJcbiAgICAgICAgeU5hbWU6ICdkdXJhdGlvbkF2ZycsXHJcbiAgICAgIH1dLFxyXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcclxuICAgICAgYXhpc0xhYmVsUmVuZGVyOiB0aGlzLmF4aXNMYWJlbFJlbmRlci5iaW5kKHRoaXMpLFxyXG4gICAgICBlbmFibGVFeHBvcnQ6IHRydWUsXHJcbiAgICAgIHBhbGV0dGVzOiBbXHJcbiAgICAgICAgdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKSwgdGhpcy5fc2Vzc2lvbi5nZXRQcmltZXJ5KCldXHJcbiAgICB9LFxyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuICBheGlzTGFiZWxSZW5kZXIoZXZ0OiBJQXhpc0xhYmVsUmVuZGVyRXZlbnRBcmdzKSB7XHJcbiAgICBpZiAoZXZ0LmF4aXMubmFtZSA9PT0gJ3ByaW1hcnlZQXhpcycpXHJcbiAgICAgIGV2dC50ZXh0ID0gZGF5anMuZHVyYXRpb24oZXZ0LnZhbHVlLCAncycpLmh1bWFuaXplKCk7Ly8gJ0REOkhIOm1tJ1xyXG4gIH1cclxuICB0b29sdGlwUmVuZGVyKGV2dDogSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MpIHtcclxuICAgIC8vZXZ0LmNvbnRlbnQgPSBkYXlqcy5kdXJhdGlvbihldnQucmFuZ2UuZW5kLCAncycpLmh1bWFuaXplKCk7Ly8gJ0REOkhIOm1tJ1xyXG4gICAgaWYgKGV2dC5kYXRhLnNlcmllc0luZGV4ID09PSAwKSB7XHJcbiAgICAgIGNvbnN0IFtzdGFuZGFyZEhpZ2gsIGR1cmF0aW9uSGlnaCwgZHVyYXRpb25BdmcsIGR1cmF0aW9uTG93LCBzdGFuZGFyZExvd10gPSBldnQucG9pbnQueSBhcyBudW1iZXJbXTtcclxuICAgICAgZXZ0LnRleHQgPSBkYXlqcy5kdXJhdGlvbihkdXJhdGlvbkhpZ2gsICdzJykuZm9ybWF0KCdERDpISDptbScpO1xyXG4gICAgICBpZiAoc3RhbmRhcmRIaWdoKSB7XHJcbiAgICAgICAgY29uc3QgZGV2aWF0aW9uID0gTWF0aC5yb3VuZCh0aGlzLmRhdGFbZXZ0LmRhdGEucG9pbnRJbmRleF0uc3RhbmRhcmREZXYpO1xyXG4gICAgICAgIGV2dC50ZXh0ICs9IGAgJHtkZXZpYXRpb259JWBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGV2dC5oZWFkZXJUZXh0ID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQXZlcmFnZScpO1xyXG4gICAgICBldnQudGV4dCA9IGRheWpzLmR1cmF0aW9uKGV2dC5kYXRhLnBvaW50WSBhcyBhbnksICdzJykuZm9ybWF0KCdERDpISDptbScpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIC8vdGhpcy5nYXVnZT8uZGVzdHJveSgpO1xyXG4gICAgdGhpcy5jaGFydD8uZGVzdHJveSgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgTW9kZWwge1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIHN0YW5kYXJkQXZnOiBudW1iZXI7XHJcbiAgc3RhbmRhcmRIaWdoOiBudW1iZXI7XHJcbiAgc3RhbmRhcmRMb3c6IG51bWJlcjtcclxuICBkdXJhdGlvbkF2ZzogbnVtYmVyO1xyXG4gIGR1cmF0aW9uSGlnaDogbnVtYmVyO1xyXG4gIGR1cmF0aW9uTG93OiBudW1iZXI7XHJcbn1cclxudHlwZSBJdGVtID0gTW9kZWwgJiB7XHJcbiAgc3RhbmRhcmREZXY/OiBudW1iZXI7XHJcbiAgZHVyYXRpb25EZXY6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWVzOiBudW1iZXJbXVxyXG59O1xyXG5pbnRlcmZhY2UgUGVyZm9ybWFuY2VTZXR0aW5nc01vZGVsIHtcclxuICBjdWJlPzogc3RyaW5nO1xyXG4gIGZpbHRlcnM/OiBBeGVzTWFwO1xyXG59XHJcbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { Component } from '@angular/core';
3
3
  import { Chart } from '@syncfusion/ej2-charts';
4
+ import { Subject, startWith, takeUntil } from 'rxjs';
4
5
  /// <reference path="./node_modules/dayjs/plugin/duration.d.ts" />
5
6
  import dayjs from 'dayjs';
6
7
  import { BizDoc } from '../../core/decorators';
@@ -11,7 +12,7 @@ import * as i2 from "../../core/account.service";
11
12
  import * as i3 from "../../core/session.service";
12
13
  import * as i4 from "../../core/translate.service";
13
14
  import * as i5 from "../report-ref";
14
- let RolesPerformanceComponent = class RolesPerformanceComponent {
15
+ let PerformanceWindComponent = class PerformanceWindComponent {
15
16
  constructor(_elementRef, _router, _accounts, _session, _translate, _reportRef) {
16
17
  this._elementRef = _elementRef;
17
18
  this._router = _router;
@@ -19,64 +20,82 @@ let RolesPerformanceComponent = class RolesPerformanceComponent {
19
20
  this._session = _session;
20
21
  this._translate = _translate;
21
22
  this._reportRef = _reportRef;
22
- this.maxStd = 0;
23
- this.maxDuration = 0;
24
- this.actions = {};
25
23
  this.legendSettings = {
26
24
  position: 'Left',
25
+ isInversed: this._session.inverse,
26
+ //toggleVisibility: false,
27
+ enablePages: true,
27
28
  enableHighlight: true,
28
29
  };
29
30
  this.tooltip = {
30
31
  enable: true,
32
+ textStyle: {
33
+ fontFamily: FONT_FAMILY
34
+ }
31
35
  };
32
- this.primaryXAxis = { valueType: 'DateTime' };
36
+ this.titleStyle = {
37
+ fontFamily: FONT_FAMILY
38
+ };
39
+ this.primaryXAxis = { valueType: 'Double' };
33
40
  this.primaryYAxis = {};
34
- const { cube: name } = _reportRef.options;
35
- this._cube = name ?
36
- _session.profile.cubes.find(c => c.name === name) :
37
- _session.profile.cubes[0];
41
+ this.actions = {};
42
+ this._destroy = new Subject();
38
43
  _session.profile.actions.forEach(a => this.actions[a.name] = a);
44
+ _session.themeChange.pipe(takeUntil(this._destroy), startWith(_session.theme)).subscribe(t => {
45
+ this.theme = t.dark ? 'Material3Dark' : 'Material3';
46
+ this.chart && this._draw();
47
+ });
39
48
  }
40
- ;
41
- onBind(data, args) {
49
+ onBind(data) {
50
+ this.chart?.destroy();
42
51
  if (!data.length)
43
52
  return;
44
- let accumStd = 0, countStd = 0, accumDuration = 0;
53
+ let accumStd = 0, countStd = 0, accumDuration = 0, maxStd = 0, maxDuration = 0, standards = [], map = {};
45
54
  data.forEach(e => {
46
- if (e.standardTime) {
47
- if (e.standardTime > this.maxStd)
48
- this.maxStd = e.standardTime;
49
- countStd++;
50
- accumStd += e.standardTime;
51
- }
52
- if (e.duration > this.maxDuration)
53
- this.maxDuration = e.duration;
54
- accumDuration += e.duration;
55
- e.yDate = new Date(e.date).valueOf();
55
+ let accumStd1 = 0, countStd1 = 0, accumDuration1 = 0;
56
+ e.items.forEach(e => {
57
+ if (e.standardTime) {
58
+ if (e.standardTime > maxStd)
59
+ maxStd = e.standardTime;
60
+ countStd++;
61
+ countStd1++;
62
+ accumStd += e.standardTime;
63
+ accumStd1 += e.standardTime;
64
+ standards.push(e);
65
+ }
66
+ if (e.duration > maxDuration)
67
+ maxDuration = e.duration;
68
+ accumDuration += e.duration;
69
+ accumDuration1 += e.duration;
70
+ });
71
+ map[e.userId] = {
72
+ items: e.items,
73
+ stdAvg: countStd1 ? accumStd1 / countStd1 : 0,
74
+ durationAvg: accumDuration1 / data.length,
75
+ };
56
76
  });
57
- let stdAvg = accumStd / countStd, durationAvg = accumDuration / data.length;
58
- const ids = data.distinct(e => e.userId);
59
- this._accounts.getAll([...ids]).
77
+ this.stdAvg = countStd ? accumStd / countStd : 0,
78
+ this.durationAvg = accumDuration / data.length;
79
+ this._accounts.getAll(data.map(e => e.userId)).
60
80
  subscribe(users => {
61
- const series = [{
81
+ this.series = [{
62
82
  name: this._translate.get('Standard'),
63
- xName: 'yDate',
83
+ xName: 'date',
64
84
  yName: 'standardTime',
65
85
  type: 'Polar',
66
86
  drawType: 'Line',
67
- //opacity: .5,
68
87
  marker: {
69
88
  visible: true,
70
89
  shape: 'Triangle',
71
90
  width: 5,
72
91
  height: 5
73
92
  },
74
- dataSource: data.filter(e => e.standardTime).
93
+ //animation: { enable: true },
94
+ dataSource: standards.
75
95
  sort((e1, e2) => e1.standardTime < e2.standardTime ? -1 : 1),
76
96
  },
77
97
  ...users.map(u => ({
78
- dataSource: data.filter(e => e.userId === u.id).
79
- sort((e1, e2) => e1.duration < e2.duration ? -1 : 1),
98
+ dataSource: map[u.id].items,
80
99
  name: u.name,
81
100
  type: 'Polar',
82
101
  drawType: 'Line',
@@ -85,70 +104,84 @@ let RolesPerformanceComponent = class RolesPerformanceComponent {
85
104
  width: 5, height: 5,
86
105
  shape: 'Pentagon',
87
106
  },
88
- xName: 'yDate',
107
+ xName: 'date',
89
108
  yName: 'duration',
90
109
  }))];
91
- new Chart({
92
- title: this._translate.get('AverageValue', dayjs.duration(durationAvg, 'seconds').format('DD:HH:ss')),
93
- titleStyle: { fontFamily: FONT_FAMILY },
94
- subTitle: stdAvg ?
95
- this._translate.get('StandardValue', dayjs.duration(stdAvg, 'seconds').format('DD:HH:ss')) : null,
96
- subTitleStyle: { fontFamily: FONT_FAMILY },
97
- // primaryXAxis: { valueType: 'Double' },
98
- primaryYAxis: {
99
- //minimum: 0, maximum: Math.max(durationAvg, stdAvg)
100
- //interval: 60 * 5,
101
- },
102
- series,
103
- // pointRender: this.pointRender.bind(this),
104
- tooltip: this.tooltip,
105
- tooltipRender: this.tooltipRender.bind(this),
106
- legendSettings: this.legendSettings,
107
- axisLabelRender: this.labelRender.bind(this),
108
- palettes: [this._session.getPrimery(), ...this._session.accentPalette],
109
- enableRtl: this._session.inverse,
110
- height: '100%',
111
- highlightMode: 'Cluster',
112
- pointClick: this.explore.bind(this)
113
- }, this._elementRef.nativeElement);
110
+ this._draw();
114
111
  });
115
112
  }
116
- tooltipRender(evt) {
117
- evt.text = dayjs.duration(evt.data.pointY, 's').format('DD:HH:ss');
113
+ onExport() {
114
+ this.chart?.export('XLSX', this._reportRef.name);
115
+ }
116
+ _draw() {
117
+ this.chart?.destroy();
118
+ const colors = this._session.accentPalette;
119
+ let palettes = [this._session.getPrimery(),
120
+ ...colors
121
+ ];
122
+ while (this.series.length > palettes.length)
123
+ palettes.push(...colors);
124
+ this.chart = new Chart({
125
+ theme: this.theme,
126
+ selectionMode: 'Series',
127
+ title: this._translate.get('AverageValue', dayjs.duration(this.durationAvg, 'seconds').format('DD:HH:mm')),
128
+ titleStyle: this.titleStyle,
129
+ subTitle: this.stdAvg ?
130
+ this._translate.get('StandardValue', dayjs.duration(this.stdAvg, 'seconds').format('DD:HH:mm')) : null,
131
+ subTitleStyle: this.titleStyle,
132
+ series: this.series,
133
+ tooltip: this.tooltip,
134
+ enableAnimation: true,
135
+ enableExport: true,
136
+ tooltipRender: this.tooltipRender.bind(this),
137
+ legendSettings: this.legendSettings,
138
+ legendRender: this.legendRender.bind(this),
139
+ axisLabelRender: this.labelRender.bind(this),
140
+ palettes,
141
+ enableRtl: this._session.inverse,
142
+ height: '100%',
143
+ highlightMode: 'Series',
144
+ pointClick: this.explore.bind(this)
145
+ }, this._elementRef.nativeElement);
146
+ }
147
+ legendRender(evt) {
148
+ //evt.text
118
149
  }
119
- pointRender(evt) {
120
- // const action = this.actions[(evt.point.series[evt.point.index] as Model).actionId];
121
- // if (action.color) evt.fill = action.color;
150
+ tooltipRender(evt) {
151
+ evt.text = dayjs.duration(evt.data.pointY, 's').format('DD:HH:mm');
122
152
  }
123
153
  labelRender(evt) {
124
154
  switch (evt.axis.name) {
125
155
  case 'primaryYAxis':
126
- evt.text = dayjs.duration(evt.value, 's').format('DD:HH:ss');
156
+ evt.text = dayjs.duration(evt.value, 's').humanize();
127
157
  break;
128
158
  case 'primaryXAxis':
129
- evt.text = dayjs(evt.value).format('MMM YYYY');
159
+ evt.text = dayjs(evt.value * 1000).format('MMM YYYY');
130
160
  break;
131
161
  }
132
162
  }
133
163
  explore(evt) {
134
- const { point: { x, yValue }, series: { name: title } } = evt;
135
- //const { cube } = this._reportRef.options;
136
- // this._router.navigate(PerformanceExplroeCompinent,
137
- // {
138
- // queryParams: axes,
139
- // });
164
+ const { pointIndex, seriesIndex } = evt;
165
+ if (seriesIndex === 0)
166
+ return;
167
+ const { documentId } = this.chart.series[seriesIndex].dataSource[pointIndex];
168
+ this._router.navigate(['mailbox', 'd', documentId.encodeId()]);
169
+ }
170
+ ngOnDestroy() {
171
+ this.chart?.destroy();
172
+ this._destroy.next();
140
173
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RolesPerformanceComponent, deps: [{ token: i0.ElementRef }, { token: i1.RouterImpl }, { token: i2.AccountService }, { token: i3.SessionService }, { token: i4.TranslateService }, { token: i5.ReportRef }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RolesPerformanceComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, styles: [":host{flex:1}\n"] }); }
174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: PerformanceWindComponent, deps: [{ token: i0.ElementRef }, { token: i1.RouterImpl }, { token: i2.AccountService }, { token: i3.SessionService }, { token: i4.TranslateService }, { token: i5.ReportRef }], target: i0.ɵɵFactoryTarget.Component }); }
175
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: PerformanceWindComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true, styles: [":host{flex:1}\n"] }); }
143
176
  };
144
- RolesPerformanceComponent = __decorate([
177
+ PerformanceWindComponent = __decorate([
145
178
  BizDoc({
146
- selector: 'bizdoc-role-performance'
179
+ selector: 'bizdoc-performance-wind'
147
180
  })
148
- ], RolesPerformanceComponent);
149
- export { RolesPerformanceComponent };
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RolesPerformanceComponent, decorators: [{
181
+ ], PerformanceWindComponent);
182
+ export { PerformanceWindComponent };
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: PerformanceWindComponent, decorators: [{
151
184
  type: Component,
152
185
  args: [{ template: '', styles: [":host{flex:1}\n"] }]
153
186
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.RouterImpl }, { type: i2.AccountService }, { type: i3.SessionService }, { type: i4.TranslateService }, { type: i5.ReportRef }] });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1wZXJmb3JtYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3JlcG9ydHMvY3ViZS9yb2xlLXBlcmZvcm1hbmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsS0FBSyxFQUFvSSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pMLGtFQUFrRTtBQUNsRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQVN6QyxJQUFNLHlCQUF5QixHQUEvQixNQUFNLHlCQUF5QjtJQUlwQyxZQUNVLFdBQXVDLEVBQ3ZDLE9BQW1CLEVBQ25CLFNBQXlCLEVBQ3pCLFFBQXdCLEVBQ3hCLFVBQTRCLEVBQzVCLFVBQStDO1FBTC9DLGdCQUFXLEdBQVgsV0FBVyxDQUE0QjtRQUN2QyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQXFDO1FBUnpELFdBQU0sR0FBRyxDQUFDLENBQUM7UUFBQyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQStCLEVBQUUsQ0FBQztRQWdCeEMsbUJBQWMsR0FBRztZQUN4QixRQUFRLEVBQUUsTUFBTTtZQUNoQixlQUFlLEVBQUUsSUFBSTtTQUNDLENBQUM7UUFDaEIsWUFBTyxHQUFHO1lBQ2pCLE1BQU0sRUFBRSxJQUFJO1NBQ1csQ0FBQztRQUNqQixpQkFBWSxHQUFHLEVB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LENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLEtBQUssY0FBYztnQkFDakIsR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNO1lBQ1IsS0FBSyxjQUFjO2dCQUNqQixHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBUTtRQUNkLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQzlELDJDQUEyQztRQUUzQyxzREFBc0Q7UUFDdEQsT0FBTztRQUNQLDBCQUEwQjtRQUMxQixTQUFTO0lBQ1gsQ0FBQzs4R0FuSVUseUJBQXlCO2tHQUF6Qix5QkFBeUIsb0RBTjFCLEVBQUU7O0FBTUQseUJBQXlCO0lBSHJDLE1BQU0sQ0FBQztRQUNOLFFBQVEsRUFBRSx5QkFBeUI7S0FDcEMsQ0FBQztHQUNXLHlCQUF5QixDQW9JckM7OzJGQXBJWSx5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0UsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFydCwgSUF4aXNMYWJlbFJlbmRlckV2ZW50QXJncywgTGVnZW5kU2V0dGluZ3NNb2RlbCwgU2VyaWVzTW9kZWwsIFRvb2x0aXBTZXR0aW5ncywgQ2hhcnRBbm5vdGF0aW9uU2V0dGluZ3NNb2RlbCwgVG9vbHRpcFNldHRpbmdzTW9kZWwgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItY2hhcnRzJztcclxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi9kdXJhdGlvbi5kLnRzXCIgLz5cclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgUmVwb3J0UmVmIH0gZnJvbSAnLi4vcmVwb3J0LXJlZic7XHJcbmltcG9ydCB7IFJlcG9ydENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVySW1wbCB9IGZyb20gJy4uLy4uL2NvcmUvcm91dGVyJztcclxuaW1wb3J0IHsgQWN0aW9uLCBBeGVzTWFwLCBDdWJlLCBVc2VySW5mbyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgQXhpc01vZGVsLCBJQW5ub3RhdGlvblJlbmRlckV2ZW50QXJncywgSVBvaW50UmVuZGVyRXZlbnRBcmdzLCBJVG9vbHRpcFJlbmRlckV2ZW50QXJncywgTGluZVNlcmllcywgUG9sYXJTZXJpZXMgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1jaGFydHMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEZPTlRfRkFNSUxZIH0gZnJvbSAnLi4vLi4vY29yZS9jb2xvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0eWxlczogYDpob3N0IHtmbGV4OiAxfWBcclxufSlcclxuQEJpekRvYyh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2Mtcm9sZS1wZXJmb3JtYW5jZSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvbGVzUGVyZm9ybWFuY2VDb21wb25lbnQgaW1wbGVtZW50cyBSZXBvcnRDb21wb25lbnQ8TW9kZWw+IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9jdWJlOiBDdWJlO1xyXG4gIG1heFN0ZCA9IDA7IG1heER1cmF0aW9uID0gMDtcclxuICBwcml2YXRlIGFjdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IEFjdGlvbiB9ID0ge307XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVySW1wbCxcclxuICAgIHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVwb3J0UmVmOiBSZXBvcnRSZWY8UGVyZm9ybWFuY2VTZXR0aW5nc01vZGVsPikge1xyXG4gICAgY29uc3QgeyBjdWJlOiBuYW1lIH0gPSBfcmVwb3J0UmVmLm9wdGlvbnM7XHJcbiAgICB0aGlzLl9jdWJlID0gbmFtZSA/XHJcbiAgICAgIF9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gbmFtZSkgOlxyXG4gICAgICBfc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZvckVhY2goYSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnNbYS5uYW1lXSA9IGFcclxuICAgIClcclxuICB9XHJcbiAgcmVhZG9ubHkgbGVnZW5kU2V0dGluZ3MgPSB7XHJcbiAgICBwb3NpdGlvbjogJ0xlZnQnLFxyXG4gICAgZW5hYmxlSGlnaGxpZ2h0OiB0cnVlLFxyXG4gIH0gYXMgTGVnZW5kU2V0dGluZ3NNb2RlbDtcclxuICByZWFkb25seSB0b29sdGlwID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gIH0gYXMgVG9vbHRpcFNldHRpbmdzTW9kZWw7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVhBeGlzID0geyB2YWx1ZVR5cGU6ICdEYXRlVGltZScgfSBhcyBBeGlzTW9kZWw7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVlBeGlzID0ge30gYXMgQXhpc01vZGVsO1xyXG4gIDtcclxuICBvbkJpbmQoZGF0YTogTW9kZWxbXSwgYXJncz86IGFueSkge1xyXG4gICAgaWYgKCFkYXRhLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgbGV0IGFjY3VtU3RkID0gMCwgY291bnRTdGQgPSAwLCBhY2N1bUR1cmF0aW9uID0gMDtcclxuICAgIGRhdGEuZm9yRWFjaChlID0+IHtcclxuICAgICAgaWYgKGUuc3RhbmRhcmRUaW1lKSB7XHJcbiAgICAgICAgaWYgKGUuc3RhbmRhcmRUaW1lID4gdGhpcy5tYXhTdGQpXHJcbiAgICAgICAgICB0aGlzLm1heFN0ZCA9IGUuc3RhbmRhcmRUaW1lO1xyXG4gICAgICAgIGNvdW50U3RkKys7XHJcbiAgICAgICAgYWNjdW1TdGQgKz0gZS5zdGFuZGFyZFRpbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUuZHVyYXRpb24gPiB0aGlzLm1heER1cmF0aW9uKVxyXG4gICAgICAgIHRoaXMubWF4RHVyYXRpb24gPSBlLmR1cmF0aW9uO1xyXG4gICAgICBhY2N1bUR1cmF0aW9uICs9IGUuZHVyYXRpb247XHJcbiAgICAgIGUueURhdGUgPSBuZXcgRGF0ZShlLmRhdGUpLnZhbHVlT2YoKTtcclxuICAgIH0pO1xyXG4gICAgbGV0IHN0ZEF2ZyA9IGFjY3VtU3RkIC8gY291bnRTdGQsIGR1cmF0aW9uQXZnID0gYWNjdW1EdXJhdGlvbiAvIGRhdGEubGVuZ3RoO1xyXG4gICAgY29uc3QgaWRzID0gZGF0YS5kaXN0aW5jdChlID0+IGUudXNlcklkKTtcclxuICAgIHRoaXMuX2FjY291bnRzLmdldEFsbChbLi4uaWRzXSkuXHJcbiAgICAgIHN1YnNjcmliZSh1c2VycyA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2VyaWVzID0gW3tcclxuICAgICAgICAgIG5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N0YW5kYXJkJyksXHJcbiAgICAgICAgICB4TmFtZTogJ3lEYXRlJyxcclxuICAgICAgICAgIHlOYW1lOiAnc3RhbmRhcmRUaW1lJyxcclxuICAgICAgICAgIHR5cGU6ICdQb2xhcicsXHJcbiAgICAgICAgICBkcmF3VHlwZTogJ0xpbmUnLFxyXG4gICAgICAgICAgLy9vcGFjaXR5OiAuNSxcclxuICAgICAgICAgIG1hcmtlcjoge1xyXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBzaGFwZTogJ1RyaWFuZ2xlJyxcclxuICAgICAgICAgICAgd2lkdGg6IDUsXHJcbiAgICAgICAgICAgIGhlaWdodDogNVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFTb3VyY2U6IGRhdGEuZmlsdGVyKGUgPT4gZS5zdGFuZGFyZFRpbWUpLlxyXG4gICAgICAgICAgICBzb3J0KChlMSwgZTIpID0+IGUxLnN0YW5kYXJkVGltZSA8IGUyLnN0YW5kYXJkVGltZSA/IC0xIDogMSksXHJcbiAgICAgICAgfSBhcyBTZXJpZXNNb2RlbCxcclxuICAgICAgICAuLi51c2Vycy5tYXAodSA9PlxyXG4gICAgICAgICh7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiBkYXRhLmZpbHRlcihlID0+IGUudXNlcklkID09PSB1LmlkKS5cclxuICAgICAgICAgICAgc29ydCgoZTEsIGUyKSA9PiBlMS5kdXJhdGlvbiA8IGUyLmR1cmF0aW9uID8gLTEgOiAxKSxcclxuICAgICAgICAgIG5hbWU6IHUubmFtZSxcclxuICAgICAgICAgIHR5cGU6ICdQb2xhcicsXHJcbiAgICAgICAgICBkcmF3VHlwZTogJ0xpbmUnLFxyXG4gICAgICAgICAgbWFya2VyOiB7XHJcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiA1LCBoZWlnaHQ6IDUsXHJcbiAgICAgICAgICAgIHNoYXBlOiAnUGVudGFnb24nLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHhOYW1lOiAneURhdGUnLFxyXG4gICAgICAgICAgeU5hbWU6ICdkdXJhdGlvbicsXHJcbiAgICAgICAgfSBhcyBTZXJpZXNNb2RlbCkpXTtcclxuICAgICAgICBuZXcgQ2hhcnQoe1xyXG4gICAgICAgICAgdGl0bGU6XHJcbiAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0F2ZXJhZ2VWYWx1ZScsIGRheWpzLmR1cmF0aW9uKGR1cmF0aW9uQXZnLCAnc2Vjb25kcycpLmZvcm1hdCgnREQ6SEg6c3MnKSksXHJcbiAgICAgICAgICB0aXRsZVN0eWxlOiB7IGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZIH0sXHJcbiAgICAgICAgICBzdWJUaXRsZTogc3RkQXZnID9cclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnU3RhbmRhcmRWYWx1ZScsIGRheWpzLmR1cmF0aW9uKHN0ZEF2ZywgJ3NlY29uZHMnKS5mb3JtYXQoJ0REOkhIOnNzJykpIDogbnVsbCxcclxuICAgICAgICAgIHN1YlRpdGxlU3R5bGU6IHsgZm9udEZhbWlseTogRk9OVF9GQU1JTFkgfSxcclxuICAgICAgICAgIC8vICAgICAgICAgIHByaW1hcnlYQXhpczogeyB2YWx1ZVR5cGU6ICdEb3VibGUnIH0sXHJcbiAgICAgICAgICBwcmltYXJ5WUF4aXM6IHtcclxuICAgICAgICAgIC8vbWluaW11bTogMCwgbWF4aW11bTogTWF0aC5tYXgoZHVyYXRpb25BdmcsIHN0ZEF2ZylcclxuICAgICAgICAgIC8vaW50ZXJ2YWw6IDYwICogNSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzZXJpZXMsXHJcbiAgICAgICAgICAvLyAgICAgICAgICBwb2ludFJlbmRlcjogdGhpcy5wb2ludFJlbmRlci5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgdG9vbHRpcDogdGhpcy50b29sdGlwLFxyXG4gICAgICAgICAgdG9vbHRpcFJlbmRlcjogdGhpcy50b29sdGlwUmVuZGVyLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBsZWdlbmRTZXR0aW5nczogdGhpcy5sZWdlbmRTZXR0aW5ncyxcclxuICAgICAgICAgIGF4aXNMYWJlbFJlbmRlcjogdGhpcy5sYWJlbFJlbmRlci5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgcGFsZXR0ZXM6IFt0aGlzLl9zZXNzaW9uLmdldFByaW1lcnkoKSwgLi4udGhpcy5fc2Vzc2lvbi5hY2NlbnRQYWxldHRlXSxcclxuICAgICAgICAgIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICBoaWdobGlnaHRNb2RlOiAnQ2x1c3RlcicsXHJcbiAgICAgICAgICBwb2ludENsaWNrOiB0aGlzLmV4cGxvcmUuYmluZCh0aGlzKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgdG9vbHRpcFJlbmRlcihldnQ6IElUb29sdGlwUmVuZGVyRXZlbnRBcmdzKSB7XHJcbiAgICBldnQudGV4dCA9IGRheWpzLmR1cmF0aW9uKGV2dC5kYXRhLnBvaW50WSBhcyBhbnksICdzJykuZm9ybWF0KCdERDpISDpzcycpO1xyXG4gIH1cclxuICBwb2ludFJlbmRlcihldnQ6IElQb2ludFJlbmRlckV2ZW50QXJncykge1xyXG4gICAgLy8gIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWN0aW9uc1soZXZ0LnBvaW50LnNlcmllc1tldnQucG9pbnQuaW5kZXhdIGFzIE1vZGVsKS5hY3Rpb25JZF07XHJcbiAgICAvLyBpZiAoYWN0aW9uLmNvbG9yKSBldnQuZmlsbCA9IGFjdGlvbi5jb2xvcjtcclxuICB9XHJcbiAgbGFiZWxSZW5kZXIoZXZ0OiBJQXhpc0xhYmVsUmVuZGVyRXZlbnRBcmdzKSB7XHJcbiAgICBzd2l0Y2ggKGV2dC5heGlzLm5hbWUpIHtcclxuICAgICAgY2FzZSAncHJpbWFyeVlBeGlzJzpcclxuICAgICAgICBldnQudGV4dCA9IGRheWpzLmR1cmF0aW9uKGV2dC52YWx1ZSwgJ3MnKS5mb3JtYXQoJ0REOkhIOnNzJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3ByaW1hcnlYQXhpcyc6XHJcbiAgICAgICAgZXZ0LnRleHQgPSBkYXlqcyhldnQudmFsdWUpLmZvcm1hdCgnTU1NIFlZWVknKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgZXhwbG9yZShldnQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBwb2ludDogeyB4LCB5VmFsdWUgfSwgc2VyaWVzOiB7IG5hbWU6IHRpdGxlIH0gfSA9IGV2dDtcclxuICAgIC8vY29uc3QgeyBjdWJlIH0gPSB0aGlzLl9yZXBvcnRSZWYub3B0aW9ucztcclxuXHJcbiAgICAvLyAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFBlcmZvcm1hbmNlRXhwbHJvZUNvbXBpbmVudCxcclxuICAgIC8vICAgIHtcclxuICAgIC8vICAgICAgcXVlcnlQYXJhbXM6IGF4ZXMsXHJcbiAgICAvLyAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBNb2RlbCB7XHJcbiAgeURhdGU6IG51bWJlcjtcclxuICAvL3hTdGFuZGFyZFRpbWU/OiBzdHJpbmc7XHJcbiAgLy94RHVyYXRpb246IHN0cmluZztcclxuICB1c2VySWQ6IHN0cmluZztcclxuICBkYXRlOiBEYXRlO1xyXG4gIHN0YW5kYXJkVGltZT86IG51bWJlcjtcclxuICBkdXJhdGlvbjogbnVtYmVyO1xyXG4gIGlzRllJOiBib29sZWFuO1xyXG4gIGFjdGlvbklkOiBzdHJpbmc7XHJcbn1cclxuaW50ZXJmYWNlIFBlcmZvcm1hbmNlU2V0dGluZ3NNb2RlbCB7XHJcbiAgY3ViZT86IHN0cmluZztcclxuICBmaWx0ZXJzPzogQXhlc01hcDtcclxufVxyXG4iXX0=
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1wZXJmb3JtYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL3JlcG9ydHMvY3ViZS9yb2xlLXBlcmZvcm1hbmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFrSCxLQUFLLEVBQXlHLE1BQU0sd0JBQXdCLENBQUM7QUFDdFEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELGtFQUFrRTtBQUNsRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUS9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQVN6QyxJQUFNLHdCQUF3QixHQUE5QixNQUFNLHdCQUF3QjtJQTBCbkMsWUFDVSxXQUF1QyxFQUN2QyxPQUFtQixFQUNuQixTQUF5QixFQUN6QixRQUF3QixFQUN4QixVQUE0QixFQUM1QixVQUErQztRQUwvQyxnQkFBVyxHQUFYLFdBQVcsQ0FBNEI7UUFDdkMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFnQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUFxQztRQTNCaEQsbUJBQWMsR0FBRztZQUN4QixRQUFRLEVBQUUsTUFBTTtZQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO1lBQ2pDLDBCQUEwQjtZQUMxQixXQUFXLEVBQUUsSUFBSTtZQUNqQixlQUFlLEVBQUUsSUFBSTtTQUNDLENBQUM7UUFDaEIs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RSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUxlZ2VuZFJlbmRlckV2ZW50QXJncywgSVBvaW50RXZlbnRBcmdzLCBBeGlzTW9kZWwsIENoYXJ0VGhlbWUsIElQb2ludFJlbmRlckV2ZW50QXJncywgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MsIENoYXJ0LCBJQXhpc0xhYmVsUmVuZGVyRXZlbnRBcmdzLCBMZWdlbmRTZXR0aW5nc01vZGVsLCBTZXJpZXNNb2RlbCwgVG9vbHRpcFNldHRpbmdzTW9kZWwsIHRpdGxlU2V0dGluZ3NNb2RlbCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1jaGFydHMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi9ub2RlX21vZHVsZXMvZGF5anMvcGx1Z2luL2R1cmF0aW9uLmQudHNcIiAvPlxyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBSZXBvcnRSZWYgfSBmcm9tICcuLi9yZXBvcnQtcmVmJztcclxuaW1wb3J0IHsgUmVwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXJJbXBsIH0gZnJvbSAnLi4vLi4vY29yZS9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBY3Rpb24sIEF4ZXNNYXAgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRk9OVF9GQU1JTFkgfSBmcm9tICcuLi8uLi9jb3JlL2NvbG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVzOiBgOmhvc3Qge2ZsZXg6IDF9YFxyXG59KVxyXG5AQml6RG9jKHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1wZXJmb3JtYW5jZS13aW5kJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVyZm9ybWFuY2VXaW5kQ29tcG9uZW50IGltcGxlbWVudHMgUmVwb3J0Q29tcG9uZW50PE1vZGVsPiwgT25EZXN0cm95IHtcclxuICBkdXJhdGlvbkF2ZzogbnVtYmVyO1xyXG4gIHN0ZEF2ZzogbnVtYmVyO1xyXG4gIHNlcmllczogU2VyaWVzTW9kZWxbXTtcclxuICBjaGFydDogQ2hhcnQ7XHJcbiAgcmVhZG9ubHkgbGVnZW5kU2V0dGluZ3MgPSB7XHJcbiAgICBwb3NpdGlvbjogJ0xlZnQnLFxyXG4gICAgaXNJbnZlcnNlZDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgLy90b2dnbGVWaXNpYmlsaXR5OiBmYWxzZSxcclxuICAgIGVuYWJsZVBhZ2VzOiB0cnVlLFxyXG4gICAgZW5hYmxlSGlnaGxpZ2h0OiB0cnVlLFxyXG4gIH0gYXMgTGVnZW5kU2V0dGluZ3NNb2RlbDtcclxuICByZWFkb25seSB0b29sdGlwID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gICAgdGV4dFN0eWxlOiB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IEZPTlRfRkFNSUxZXHJcbiAgICB9XHJcbiAgfSBhcyBUb29sdGlwU2V0dGluZ3NNb2RlbDtcclxuICB0aGVtZTogQ2hhcnRUaGVtZTtcclxuICByZWFkb25seSB0aXRsZVN0eWxlID0ge1xyXG4gICAgZm9udEZhbWlseTogRk9OVF9GQU1JTFlcclxuICB9IGFzIHRpdGxlU2V0dGluZ3NNb2RlbDtcclxuICByZWFkb25seSBwcmltYXJ5WEF4aXMgPSB7IHZhbHVlVHlwZTogJ0RvdWJsZScgfSBhcyBBeGlzTW9kZWw7XHJcbiAgcmVhZG9ubHkgcHJpbWFyeVlBeGlzID0ge30gYXMgQXhpc01vZGVsO1xyXG4gIHByaXZhdGUgYWN0aW9uczogeyBbbmFtZTogc3RyaW5nXTogQWN0aW9uIH0gPSB7fTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXJJbXBsLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9yZXBvcnRSZWY6IFJlcG9ydFJlZjxQZXJmb3JtYW5jZVNldHRpbmdzTW9kZWw+XHJcbiAgKSB7XHJcbiAgICBfc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZm9yRWFjaChhID0+XHJcbiAgICAgIHRoaXMuYWN0aW9uc1thLm5hbWVdID0gYVxyXG4gICAgKTtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBzdGFydFdpdGgoX3Nlc3Npb24udGhlbWUpKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgIHRoaXMudGhlbWUgPSB0LmRhcmsgPyAnTWF0ZXJpYWwzRGFyaycgOiAnTWF0ZXJpYWwzJztcclxuICAgICAgdGhpcy5jaGFydCAmJiB0aGlzLl9kcmF3KCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBvbkJpbmQoZGF0YTogTW9kZWxbXSkge1xyXG4gICAgdGhpcy5jaGFydD8uZGVzdHJveSgpO1xyXG4gICAgaWYgKCFkYXRhLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgbGV0IGFjY3VtU3RkID0gMCwgY291bnRTdGQgPSAwLCBhY2N1bUR1cmF0aW9uID0gMCwgbWF4U3RkID0gMCwgbWF4RHVyYXRpb24gPSAwLFxyXG4gICAgICBzdGFuZGFyZHMgPSBbXSBhcyBJdGVtTW9kZWxbXSwgbWFwOiB7XHJcbiAgICAgICAgW3VzZXJJZDogc3RyaW5nXToge1xyXG4gICAgICAgICAgaXRlbXM6IEl0ZW1Nb2RlbFtdO1xyXG4gICAgICAgICAgZHVyYXRpb25Bdmc6IG51bWJlcjtcclxuICAgICAgICAgIHN0ZEF2ZzogbnVtYmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfSA9IHt9O1xyXG4gICAgZGF0YS5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICBsZXQgYWNjdW1TdGQxID0gMCwgY291bnRTdGQxID0gMCwgYWNjdW1EdXJhdGlvbjEgPSAwO1xyXG4gICAgICBlLml0ZW1zLmZvckVhY2goZSA9PiB7XHJcbiAgICAgICAgaWYgKGUuc3RhbmRhcmRUaW1lKSB7XHJcbiAgICAgICAgICBpZiAoZS5zdGFuZGFyZFRpbWUgPiBtYXhTdGQpXHJcbiAgICAgICAgICAgIG1heFN0ZCA9IGUuc3RhbmRhcmRUaW1lO1xyXG4gICAgICAgICAgY291bnRTdGQrKztcclxuICAgICAgICAgIGNvdW50U3RkMSsrO1xyXG4gICAgICAgICAgYWNjdW1TdGQgKz0gZS5zdGFuZGFyZFRpbWU7XHJcbiAgICAgICAgICBhY2N1bVN0ZDEgKz0gZS5zdGFuZGFyZFRpbWU7XHJcbiAgICAgICAgICBzdGFuZGFyZHMucHVzaChlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGUuZHVyYXRpb24gPiBtYXhEdXJhdGlvbilcclxuICAgICAgICAgIG1heER1cmF0aW9uID0gZS5kdXJhdGlvbjtcclxuICAgICAgICBhY2N1bUR1cmF0aW9uICs9IGUuZHVyYXRpb247XHJcbiAgICAgICAgYWNjdW1EdXJhdGlvbjEgKz0gZS5kdXJhdGlvbjtcclxuICAgICAgfSk7XHJcbiAgICAgIG1hcFtlLnVzZXJJZF0gPSB7XHJcbiAgICAgICAgaXRlbXM6IGUuaXRlbXMsXHJcbiAgICAgICAgc3RkQXZnOiBjb3VudFN0ZDEgPyBhY2N1bVN0ZDEgLyBjb3VudFN0ZDEgOiAwLFxyXG4gICAgICAgIGR1cmF0aW9uQXZnOiBhY2N1bUR1cmF0aW9uMSAvIGRhdGEubGVuZ3RoLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0ZEF2ZyA9IGNvdW50U3RkID8gYWNjdW1TdGQgLyBjb3VudFN0ZCA6IDAsXHJcbiAgICAgIHRoaXMuZHVyYXRpb25BdmcgPSBhY2N1bUR1cmF0aW9uIC8gZGF0YS5sZW5ndGg7XHJcbiAgICB0aGlzLl9hY2NvdW50cy5nZXRBbGwoZGF0YS5tYXAoZSA9PiBlLnVzZXJJZCkpLlxyXG4gICAgICBzdWJzY3JpYmUodXNlcnMgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VyaWVzID0gW3tcclxuICAgICAgICAgIG5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N0YW5kYXJkJyksXHJcbiAgICAgICAgICB4TmFtZTogJ2RhdGUnLFxyXG4gICAgICAgICAgeU5hbWU6ICdzdGFuZGFyZFRpbWUnLFxyXG4gICAgICAgICAgdHlwZTogJ1BvbGFyJyxcclxuICAgICAgICAgIGRyYXdUeXBlOiAnTGluZScsXHJcbiAgICAgICAgICBtYXJrZXI6IHtcclxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgc2hhcGU6ICdUcmlhbmdsZScsXHJcbiAgICAgICAgICAgIHdpZHRoOiA1LFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAvL2FuaW1hdGlvbjogeyBlbmFibGU6IHRydWUgfSxcclxuICAgICAgICAgIGRhdGFTb3VyY2U6IHN0YW5kYXJkcy5cclxuICAgICAgICAgICAgc29ydCgoZTEsIGUyKSA9PiBlMS5zdGFuZGFyZFRpbWUgPCBlMi5zdGFuZGFyZFRpbWUgPyAtMSA6IDEpLFxyXG4gICAgICAgIH0gYXMgU2VyaWVzTW9kZWwsXHJcbiAgICAgICAgLi4udXNlcnMubWFwKHUgPT5cclxuICAgICAgICAoe1xyXG4gICAgICAgICAgZGF0YVNvdXJjZTogbWFwW3UuaWRdLml0ZW1zLFxyXG4gICAgICAgICAgbmFtZTogdS5uYW1lLFxyXG4gICAgICAgICAgdHlwZTogJ1BvbGFyJyxcclxuICAgICAgICAgIGRyYXdUeXBlOiAnTGluZScsXHJcbiAgICAgICAgICBtYXJrZXI6IHtcclxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6IDUsIGhlaWdodDogNSxcclxuICAgICAgICAgICAgc2hhcGU6ICdQZW50YWdvbicsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgeE5hbWU6ICdkYXRlJyxcclxuICAgICAgICAgIHlOYW1lOiAnZHVyYXRpb24nLFxyXG4gICAgICAgIH0gYXMgU2VyaWVzTW9kZWwpKV07XHJcbiAgICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgb25FeHBvcnQoKSB7XHJcbiAgICB0aGlzLmNoYXJ0Py5leHBvcnQoJ1hMU1gnLCB0aGlzLl9yZXBvcnRSZWYubmFtZSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RyYXcoKSB7XHJcbiAgICB0aGlzLmNoYXJ0Py5kZXN0cm95KCk7XHJcbiAgICBjb25zdCBjb2xvcnMgPSB0aGlzLl9zZXNzaW9uLmFjY2VudFBhbGV0dGU7XHJcbiAgICBsZXQgcGFsZXR0ZXMgPSBbdGhpcy5fc2Vzc2lvbi5nZXRQcmltZXJ5KCksXHJcbiAgICAuLi5jb2xvcnNcclxuICAgIF07XHJcbiAgICB3aGlsZSAodGhpcy5zZXJpZXMubGVuZ3RoID4gcGFsZXR0ZXMubGVuZ3RoKVxyXG4gICAgICBwYWxldHRlcy5wdXNoKC4uLmNvbG9ycyk7XHJcbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHtcclxuICAgICAgdGhlbWU6IHRoaXMudGhlbWUsXHJcbiAgICAgIHNlbGVjdGlvbk1vZGU6ICdTZXJpZXMnLFxyXG4gICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnQXZlcmFnZVZhbHVlJywgZGF5anMuZHVyYXRpb24odGhpcy5kdXJhdGlvbkF2ZywgJ3NlY29uZHMnKS5mb3JtYXQoJ0REOkhIOm1tJykpLFxyXG4gICAgICB0aXRsZVN0eWxlOiB0aGlzLnRpdGxlU3R5bGUsXHJcbiAgICAgIHN1YlRpdGxlOiB0aGlzLnN0ZEF2ZyA/XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnU3RhbmRhcmRWYWx1ZScsIGRheWpzLmR1cmF0aW9uKHRoaXMuc3RkQXZnLCAnc2Vjb25kcycpLmZvcm1hdCgnREQ6SEg6bW0nKSkgOiBudWxsLFxyXG4gICAgICBzdWJUaXRsZVN0eWxlOiB0aGlzLnRpdGxlU3R5bGUsXHJcbiAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXHJcbiAgICAgIHRvb2x0aXA6IHRoaXMudG9vbHRpcCxcclxuICAgICAgZW5hYmxlQW5pbWF0aW9uOiB0cnVlLFxyXG4gICAgICBlbmFibGVFeHBvcnQ6IHRydWUsXHJcbiAgICAgIHRvb2x0aXBSZW5kZXI6IHRoaXMudG9vbHRpcFJlbmRlci5iaW5kKHRoaXMpLFxyXG4gICAgICBsZWdlbmRTZXR0aW5nczogdGhpcy5sZWdlbmRTZXR0aW5ncyxcclxuICAgICAgbGVnZW5kUmVuZGVyOiB0aGlzLmxlZ2VuZFJlbmRlci5iaW5kKHRoaXMpLFxyXG4gICAgICBheGlzTGFiZWxSZW5kZXI6IHRoaXMubGFiZWxSZW5kZXIuYmluZCh0aGlzKSxcclxuICAgICAgcGFsZXR0ZXMsXHJcbiAgICAgIGVuYWJsZVJ0bDogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlLFxyXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcclxuICAgICAgaGlnaGxpZ2h0TW9kZTogJ1NlcmllcycsXHJcbiAgICAgIHBvaW50Q2xpY2s6IHRoaXMuZXhwbG9yZS5iaW5kKHRoaXMpXHJcbiAgICB9LFxyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuICBsZWdlbmRSZW5kZXIoZXZ0OiBJTGVnZW5kUmVuZGVyRXZlbnRBcmdzKSB7XHJcbiAgICAvL2V2dC50ZXh0XHJcbiAgfVxyXG4gIHRvb2x0aXBSZW5kZXIoZXZ0OiBJVG9vbHRpcFJlbmRlckV2ZW50QXJncykge1xyXG4gICAgZXZ0LnRleHQgPSBkYXlqcy5kdXJhdGlvbihldnQuZGF0YS5wb2ludFkgYXMgYW55LCAncycpLmZvcm1hdCgnREQ6SEg6bW0nKTtcclxuICB9XHJcbiAgbGFiZWxSZW5kZXIoZXZ0OiBJQXhpc0xhYmVsUmVuZGVyRXZlbnRBcmdzKSB7XHJcbiAgICBzd2l0Y2ggKGV2dC5heGlzLm5hbWUpIHtcclxuICAgICAgY2FzZSAncHJpbWFyeVlBeGlzJzpcclxuICAgICAgICBldnQudGV4dCA9IGRheWpzLmR1cmF0aW9uKGV2dC52YWx1ZSwgJ3MnKS5odW1hbml6ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdwcmltYXJ5WEF4aXMnOlxyXG4gICAgICAgIGV2dC50ZXh0ID0gZGF5anMoZXZ0LnZhbHVlICogMTAwMCkuZm9ybWF0KCdNTU0gWVlZWScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICBleHBsb3JlKGV2dDogSVBvaW50RXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCB7IHBvaW50SW5kZXgsIHNlcmllc0luZGV4IH0gPSBldnQ7XHJcbiAgICBpZiAoc2VyaWVzSW5kZXggPT09IDApIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB7IGRvY3VtZW50SWQgfSA9IHRoaXMuY2hhcnQuc2VyaWVzW3Nlcmllc0luZGV4XS5kYXRhU291cmNlW3BvaW50SW5kZXhdIGFzIEl0ZW1Nb2RlbDtcclxuXHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWydtYWlsYm94JywgJ2QnLCBkb2N1bWVudElkLmVuY29kZUlkKCldKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYXJ0Py5kZXN0cm95KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBNb2RlbCB7XHJcbiAgdXNlcklkOiBzdHJpbmc7XHJcbiAgaXRlbXM6IEl0ZW1Nb2RlbFtdO1xyXG59XHJcbmludGVyZmFjZSBJdGVtTW9kZWwge1xyXG4gIGRvY3VtZW50SWQ6IG51bWJlcjtcclxuICBkYXRlOiBudW1iZXI7XHJcbiAgc3RhbmRhcmRUaW1lPzogbnVtYmVyO1xyXG4gIGR1cmF0aW9uOiBudW1iZXI7XHJcbiAgaXNGWUk6IGJvb2xlYW47XHJcbiAgYWN0aW9uSWQ6IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgUGVyZm9ybWFuY2VTZXR0aW5nc01vZGVsIHtcclxuICBjdWJlPzogc3RyaW5nO1xyXG4gIGZpbHRlcnM/OiBBeGVzTWFwO1xyXG59XHJcbiJdfQ==
@@ -40,10 +40,10 @@ export class CubeDocumentsTableComponent {
40
40
  open(id) {
41
41
  this._info.open(id);
42
42
  }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CubeDocumentsTableComponent, deps: [{ token: i1.ReportRef }, { token: i2.DocumentInfo }, { token: i3.SessionService }, { token: i4.CubeService }], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: CubeDocumentsTableComponent, selector: "ng-component", viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<table mat-table matSort [dataSource]=\"dataSource\" [@list]=\"PAGE_SIZE\">\n <ng-container matColumnDef=\"number\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> <a (click)=\"open(element.id)\">{{element.number}}</a> </td>\n </ng-container>\n <ng-container matColumnDef=\"subject\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> {{element.subject}} </td>\n </ng-container>\n <ng-container matColumnDef=\"userId\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'Name' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\">\n <bizdoc-identity-name [identity]=\"element.userId\" [by]=\"element.byId\"></bizdoc-identity-name>\n </td>\n </ng-container>\n <ng-container matColumnDef=\"stateId\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Status' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> <span class=\"document-state\" [style.color]=\"element.stateId|state : 'color'\" [style.borderColor]=\"element.stateId|state : 'color'\">{{element.stateId | state}}</span> </td>\n </ng-container>\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Value' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\" class=\"figure\">\n {{element.value | currency : (element.currencyCode || DEFAULT_CURRENCY) : 'symbol' : CURRENCY_FORMAT }}\n @if (element.partial) {\n <mat-icon [bizdocTooltip]=\"element.total | currency : element.currencyCode : 'symbol' : CURRENCY_FORMAT\">error_outline</mat-icon>\n }\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayColumns\"></tr>\n <tr mat-row [@item] *matRowDef=\"let element; columns: displayColumns;\"></tr>\n</table>\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons [style.display]=\"paging ? '' : 'none'\"></mat-paginator>\n", styles: ["table{width:100%}td.figure{text-align:right}.document-state{border-radius:2px 3px;padding:4px;border-width:1px;border-style:solid}\n"], dependencies: [{ kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i6.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "directive", type: i10.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i11.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }, { kind: "pipe", type: i13.StatePipe, name: "state" }], animations: [listAnimation, itemAnimation] }); }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: CubeDocumentsTableComponent, deps: [{ token: i1.ReportRef }, { token: i2.DocumentInfo }, { token: i3.SessionService }, { token: i4.CubeService }], target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: CubeDocumentsTableComponent, selector: "ng-component", viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<table mat-table matSort [dataSource]=\"dataSource\" [@list]=\"PAGE_SIZE\">\n <ng-container matColumnDef=\"number\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> <a (click)=\"open(element.id)\">{{element.number}}</a> </td>\n </ng-container>\n <ng-container matColumnDef=\"subject\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> {{element.subject}} </td>\n </ng-container>\n <ng-container matColumnDef=\"userId\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'Name' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\">\n <bizdoc-identity-name [identity]=\"element.userId\" [by]=\"element.byId\"></bizdoc-identity-name>\n </td>\n </ng-container>\n <ng-container matColumnDef=\"stateId\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Status' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> <span class=\"document-state\" [style.color]=\"element.stateId|state : 'color'\" [style.borderColor]=\"element.stateId|state : 'color'\">{{element.stateId | state}}</span> </td>\n </ng-container>\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Value' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\" class=\"figure\">\n {{element.value | currency : (element.currencyCode || DEFAULT_CURRENCY) : 'symbol' : CURRENCY_FORMAT }}\n @if (element.partial) {\n <mat-icon [bizdocTooltip]=\"element.total | currency : element.currencyCode : 'symbol' : CURRENCY_FORMAT\">error_outline</mat-icon>\n }\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayColumns\"></tr>\n <tr mat-row [@item] *matRowDef=\"let element; columns: displayColumns;\"></tr>\n</table>\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons [style.display]=\"paging ? '' : 'none'\"></mat-paginator>\n", styles: ["table{width:100%}td.figure{text-align:right}.document-state{border-radius:2px 3px;padding:4px;border-width:1px;border-style:solid}\n"], dependencies: [{ kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i6.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.IdentityName, selector: "bizdoc-identity-name", inputs: ["identity", "by", "chating"] }, { kind: "directive", type: i10.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i11.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }, { kind: "pipe", type: i13.StatePipe, name: "state" }], animations: [listAnimation, itemAnimation] }); }
45
45
  }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: CubeDocumentsTableComponent, decorators: [{
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: CubeDocumentsTableComponent, decorators: [{
47
47
  type: Component,
48
48
  args: [{ animations: [listAnimation, itemAnimation], template: "<table mat-table matSort [dataSource]=\"dataSource\" [@list]=\"PAGE_SIZE\">\n <ng-container matColumnDef=\"number\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Number' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> <a (click)=\"open(element.id)\">{{element.number}}</a> </td>\n </ng-container>\n <ng-container matColumnDef=\"subject\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Subject' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> {{element.subject}} </td>\n </ng-container>\n <ng-container matColumnDef=\"userId\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{ 'Name' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\">\n <bizdoc-identity-name [identity]=\"element.userId\" [by]=\"element.byId\"></bizdoc-identity-name>\n </td>\n </ng-container>\n <ng-container matColumnDef=\"stateId\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Status' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\"> <span class=\"document-state\" [style.color]=\"element.stateId|state : 'color'\" [style.borderColor]=\"element.stateId|state : 'color'\">{{element.stateId | state}}</span> </td>\n </ng-container>\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{'Value' | translate}}</th>\n <td mat-cell *matCellDef=\"let element\" class=\"figure\">\n {{element.value | currency : (element.currencyCode || DEFAULT_CURRENCY) : 'symbol' : CURRENCY_FORMAT }}\n @if (element.partial) {\n <mat-icon [bizdocTooltip]=\"element.total | currency : element.currencyCode : 'symbol' : CURRENCY_FORMAT\">error_outline</mat-icon>\n }\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayColumns\"></tr>\n <tr mat-row [@item] *matRowDef=\"let element; columns: displayColumns;\"></tr>\n</table>\n<mat-paginator [pageSize]=\"PAGE_SIZE\" hidePageSize showFirstLastButtons [style.display]=\"paging ? '' : 'none'\"></mat-paginator>\n", styles: ["table{width:100%}td.figure{text-align:right}.document-state{border-radius:2px 3px;padding:4px;border-width:1px;border-style:solid}\n"] }]
49
49
  }], ctorParameters: () => [{ type: i1.ReportRef }, { type: i2.DocumentInfo }, { type: i3.SessionService }, { type: i4.CubeService }], propDecorators: { sort: [{
@@ -45,8 +45,8 @@ let UsageReportArgs = class UsageReportArgs {
45
45
  this.form.reset({}, { emitEvent: false });
46
46
  this.form.patchValue(axes);
47
47
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UsageReportArgs, deps: [{ token: i1.ReportRef }, { token: i2.FormBuilder }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: UsageReportArgs, selector: "ng-component", ngImport: i0, template: "<bizdoc-cube-filter [cube]=\"cube\"\r\n [axes]=\"values\"\r\n (axesChange)=\"valuesChange($event)\"></bizdoc-cube-filter>\r\n", dependencies: [{ kind: "component", type: i4.CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }] }); }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: UsageReportArgs, deps: [{ token: i1.ReportRef }, { token: i2.FormBuilder }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.2", type: UsageReportArgs, selector: "ng-component", ngImport: i0, template: "<bizdoc-cube-filter [cube]=\"cube\"\r\n [axes]=\"values\"\r\n (axesChange)=\"valuesChange($event)\"></bizdoc-cube-filter>\r\n", dependencies: [{ kind: "component", type: i4.CubeFilterComponent, selector: "bizdoc-cube-filter", inputs: ["cube", "exclude", "include", "axes"], outputs: ["axesChange"] }] }); }
50
50
  };
51
51
  UsageReportArgs = __decorate([
52
52
  BizDoc({
@@ -54,7 +54,7 @@ UsageReportArgs = __decorate([
54
54
  })
55
55
  ], UsageReportArgs);
56
56
  export { UsageReportArgs };
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UsageReportArgs, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: UsageReportArgs, decorators: [{
58
58
  type: Component,
59
59
  args: [{ template: "<bizdoc-cube-filter [cube]=\"cube\"\r\n [axes]=\"values\"\r\n (axesChange)=\"valuesChange($event)\"></bizdoc-cube-filter>\r\n" }]
60
60
  }], ctorParameters: () => [{ type: i1.ReportRef }, { type: i2.FormBuilder }, { type: i3.SessionService }] });