@bizdoc/core 1.7.0-next.3 → 1.7.0-next.7

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 (277) hide show
  1. package/README.md +4 -3
  2. package/assets/fonts/MaterialIcons-Regular.svg +2373 -2373
  3. package/assets/fonts/README.md +9 -9
  4. package/assets/fonts/codepoints +932 -932
  5. package/assets/fonts/material-icons.css +36 -36
  6. package/assets/themes/brown.min.css +83 -81
  7. package/assets/themes/dark.min.css +77 -75
  8. package/assets/themes/default.min.css +90 -88
  9. package/assets/themes/green.min.css +83 -81
  10. package/assets/themes/indigo.min.css +83 -81
  11. package/bundles/bizdoc-core.umd.js +1086 -1600
  12. package/bundles/bizdoc-core.umd.js.map +1 -1
  13. package/esm2015/lib/app.component.js +7 -13
  14. package/esm2015/lib/bizdoc.module.js +2 -37
  15. package/esm2015/lib/browse/filter/filter.component.js +2 -2
  16. package/esm2015/lib/core/configuration.js +1 -1
  17. package/esm2015/lib/core/controls/combination-picker-body.js +2 -2
  18. package/esm2015/lib/core/models.js +1 -1
  19. package/esm2015/lib/core/session.service.js +5 -9
  20. package/esm2015/lib/core/slots/slots.component.js +6 -4
  21. package/esm2015/lib/cube/accum/accum.component.js +4 -7
  22. package/esm2015/lib/cube/chart/chart.component.js +6 -3
  23. package/esm2015/lib/cube/cube-info.service.js +100 -0
  24. package/esm2015/lib/cube/cube-view.component.js +11 -30
  25. package/esm2015/lib/cube/declarations.js +1 -1
  26. package/esm2015/lib/cube/explore/explore-items.component.js +5 -7
  27. package/esm2015/lib/cube/explore/explore.pane.component.js +2 -5
  28. package/esm2015/lib/cube/filter/filter-tags.component.exp.js +8 -8
  29. package/esm2015/lib/cube/filter/filter.component.js +14 -11
  30. package/esm2015/lib/cube/grid/grid.component.js +4 -3
  31. package/esm2015/lib/cube/grid/spreadsheet.component.js +4 -4
  32. package/esm2015/lib/cube/matrix/matrix.base.js +130 -0
  33. package/esm2015/lib/cube/matrix/matrix.component.js +68 -0
  34. package/esm2015/lib/cube/matrix/matrix.mobile.component.js +62 -0
  35. package/esm2015/lib/cube/matrix/matrix.pane.component.js +70 -0
  36. package/esm2015/lib/cube/matrix/table.component.js +254 -0
  37. package/esm2015/lib/cube/pivot/pivot.component.js +4 -4
  38. package/esm2015/lib/cube/view-base.js +76 -0
  39. package/esm2015/lib/cube/view.mobile.component.js +31 -54
  40. package/esm2015/lib/cube/view.pane.component.js +26 -58
  41. package/esm2015/lib/dashboard/cube/accum-cube.widget.js +2 -2
  42. package/esm2015/lib/dashboard/cube/cube-analysis.base.js +2 -2
  43. package/esm2015/lib/dashboard/cube/cube-chart.widget.js +2 -2
  44. package/esm2015/lib/dashboard/cube/filter/filter.component.js +3 -3
  45. package/esm2015/lib/desktop.module.js +6 -6
  46. package/esm2015/lib/home/sign/sign.component.js +2 -2
  47. package/esm2015/lib/impersonate/impersonate.component.js +69 -0
  48. package/esm2015/lib/mobile.module.js +9 -9
  49. package/esm2015/lib/reports/cube/grid-documents.component.js +10 -9
  50. package/esm2015/lib/reports/cube/usage-args.component.js +2 -2
  51. package/esm2015/lib/routes.desktop.js +3 -3
  52. package/esm2015/lib/routes.mobile.js +5 -5
  53. package/esm2015/lib/scheduler/schedule.component.js +21 -17
  54. package/esm2015/lib/shared.module.js +26 -26
  55. package/esm2015/lib/system.module.js +8 -10
  56. package/esm2015/lib/views/cube/cube-base.js +10 -5
  57. package/esm2015/lib/views/cube/matrix.component.js +95 -0
  58. package/esm2015/lib/views/cube/view.component.js +19 -21
  59. package/esm2015/lib/views/document-view-ref.js +3 -2
  60. package/esm2015/lib/views/timeline/timeline.component.exp.js +317 -0
  61. package/esm2015/lib/views/view-item.component.js +11 -7
  62. package/esm2015/lib/views/views.component.js +10 -11
  63. package/esm2015/public-api.js +4 -8
  64. package/fesm2015/bizdoc-core.js +902 -1382
  65. package/fesm2015/bizdoc-core.js.map +1 -1
  66. package/lib/app.component.d.ts +1 -4
  67. package/lib/core/configuration.d.ts +1 -17
  68. package/lib/core/controls/combination-picker-body.d.ts +1 -1
  69. package/lib/core/models.d.ts +1 -0
  70. package/lib/core/session.service.d.ts +0 -5
  71. package/lib/core/slots/slots.component.d.ts +1 -1
  72. package/lib/cube/accum/accum.component.d.ts +3 -7
  73. package/lib/cube/chart/chart.component.d.ts +1 -1
  74. package/lib/cube/{info/cube-info.service.d.ts → cube-info.service.d.ts} +6 -6
  75. package/lib/cube/cube-view.component.d.ts +4 -9
  76. package/lib/cube/declarations.d.ts +3 -5
  77. package/lib/cube/explore/explore-items.component.d.ts +1 -4
  78. package/lib/cube/explore/explore.pane.component.d.ts +0 -1
  79. package/lib/cube/filter/filter-tags.component.exp.d.ts +2 -2
  80. package/lib/cube/filter/filter.component.d.ts +4 -3
  81. package/lib/cube/grid/grid.component.d.ts +2 -1
  82. package/lib/cube/grid/spreadsheet.component.d.ts +1 -1
  83. package/lib/cube/{info/cube-info.base.d.ts → matrix/matrix.base.d.ts} +5 -5
  84. package/lib/cube/{info/cube-info.component.d.ts → matrix/matrix.component.d.ts} +8 -8
  85. package/lib/cube/{info/cube-info.mobile.component.d.ts → matrix/matrix.mobile.component.d.ts} +4 -4
  86. package/lib/cube/{info/cube-info.pane.component.d.ts → matrix/matrix.pane.component.d.ts} +5 -5
  87. package/lib/cube/{info → matrix}/table.component.d.ts +4 -5
  88. package/lib/cube/pivot/pivot.component.d.ts +2 -4
  89. package/lib/cube/view-base.d.ts +39 -0
  90. package/lib/cube/view.mobile.component.d.ts +8 -25
  91. package/lib/cube/view.pane.component.d.ts +8 -26
  92. package/lib/dashboard/cube/accum-cube.widget.d.ts +1 -1
  93. package/lib/dashboard/cube/cube-analysis.base.d.ts +1 -1
  94. package/lib/dashboard/cube/cube-chart.widget.d.ts +1 -1
  95. package/lib/dashboard/cube/filter/filter.component.d.ts +1 -1
  96. package/lib/desktop.module.d.ts +2 -2
  97. package/lib/{login/impersonate → impersonate}/impersonate.component.d.ts +3 -3
  98. package/lib/mobile.module.d.ts +2 -2
  99. package/lib/scheduler/schedule.component.d.ts +4 -1
  100. package/lib/shared.module.d.ts +48 -50
  101. package/lib/system.module.d.ts +25 -26
  102. package/lib/views/cube/cube-base.d.ts +16 -10
  103. package/lib/views/cube/{table.component.d.ts → matrix.component.d.ts} +2 -15
  104. package/lib/views/cube/view.component.d.ts +2 -9
  105. package/lib/views/document-view-ref.d.ts +3 -1
  106. package/lib/views/timeline/timeline.component.exp.d.ts +64 -0
  107. package/lib/views/view-item.component.d.ts +4 -2
  108. package/lib/views/views.component.d.ts +3 -5
  109. package/package.json +15 -17
  110. package/public-api.d.ts +4 -8
  111. package/esm2015/lib/admin/users/users.component.js +0 -155
  112. package/esm2015/lib/admin/users/users.service.js +0 -29
  113. package/esm2015/lib/cube/info/cube-info.base.js +0 -128
  114. package/esm2015/lib/cube/info/cube-info.component.js +0 -69
  115. package/esm2015/lib/cube/info/cube-info.mobile.component.js +0 -62
  116. package/esm2015/lib/cube/info/cube-info.pane.component.js +0 -70
  117. package/esm2015/lib/cube/info/cube-info.service.js +0 -100
  118. package/esm2015/lib/cube/info/table.component.js +0 -258
  119. package/esm2015/lib/login/forgot/forgot.component.js +0 -50
  120. package/esm2015/lib/login/form.authentication.js +0 -71
  121. package/esm2015/lib/login/form.interceptor.js +0 -26
  122. package/esm2015/lib/login/impersonate/impersonate.component.js +0 -69
  123. package/esm2015/lib/login/login.component.js +0 -130
  124. package/esm2015/lib/login/okta.authentication.js +0 -41
  125. package/esm2015/lib/login/okta.component.js +0 -84
  126. package/esm2015/lib/login/okta.interceptor.js +0 -30
  127. package/esm2015/lib/login/prompt/prompt.component.js +0 -194
  128. package/esm2015/lib/login/signin-info.service.js +0 -49
  129. package/esm2015/lib/views/cube/table.component.js +0 -107
  130. package/lib/admin/users/users.component.d.ts +0 -41
  131. package/lib/admin/users/users.service.d.ts +0 -30
  132. package/lib/login/forgot/forgot.component.d.ts +0 -20
  133. package/lib/login/form.authentication.d.ts +0 -29
  134. package/lib/login/form.interceptor.d.ts +0 -11
  135. package/lib/login/login.component.d.ts +0 -18
  136. package/lib/login/okta.authentication.d.ts +0 -13
  137. package/lib/login/okta.component.d.ts +0 -18
  138. package/lib/login/okta.interceptor.d.ts +0 -11
  139. package/lib/login/prompt/prompt.component.d.ts +0 -45
  140. package/lib/login/signin-info.service.d.ts +0 -18
  141. package/src/assets/.gitkeep +0 -0
  142. package/src/assets/animations/13194-message.json +0 -1
  143. package/src/assets/animations/1408-network-lost.json +0 -1
  144. package/src/assets/animations/19560-loading.json +0 -1
  145. package/src/assets/animations/21928-folder.json +0 -1
  146. package/src/assets/animations/21941-airplane-animation-movement.json +0 -1
  147. package/src/assets/animations/2252-broken-stick-error.json +0 -1
  148. package/src/assets/animations/24910-new-message-notification.json +0 -1
  149. package/src/assets/animations/25974-paper-plane.json +0 -1
  150. package/src/assets/animations/36395-lonely-404.json +0 -1
  151. package/src/assets/animations/36499-page-not-found.json +0 -1
  152. package/src/assets/animations/37211-google-icons-forms.json +0 -1
  153. package/src/assets/animations/41896-application.json +0 -1
  154. package/src/assets/animations/4958-404-not-found.json +0 -1
  155. package/src/assets/animations/51956-success-icon.json +0 -1
  156. package/src/assets/animations/53402-bell.json +0 -1
  157. package/src/assets/animations/5371-volaris-tickets.json +0 -1
  158. package/src/assets/animations/58266-quad-cube-shifter-1.json +0 -1
  159. package/src/assets/animations/58509-shifting-cubes-2.json +0 -1
  160. package/src/assets/animations/8318-loader.json +0 -1
  161. package/src/assets/animations/lf20_isphoahq.json +0 -1
  162. package/src/assets/animations/lf30_editor_6kz6oezn.json +0 -1
  163. package/src/assets/animations/lf30_editor_b6axvtp7.json +0 -1
  164. package/src/assets/animations/lf30_editor_cq62rpyv.json +0 -1
  165. package/src/assets/animations/lf30_editor_fbytfhvg.json +0 -1
  166. package/src/assets/animations/lf30_editor_h1xoyem7.json +0 -1
  167. package/src/assets/animations/lf30_editor_qr7zgmcs.json +0 -1
  168. package/src/assets/animations/lf30_editor_rxee1cqy.json +0 -1
  169. package/src/assets/animations/lf30_editor_yxy6fuei.json +0 -1
  170. package/src/assets/bizdoc-schema.json +0 -1238
  171. package/src/assets/favicon.ico +0 -0
  172. package/src/assets/fonts/LICENSE.txt +0 -202
  173. package/src/assets/fonts/MaterialIcons-Outlined.woff2 +0 -0
  174. package/src/assets/fonts/MaterialIcons-Regular.eot +0 -0
  175. package/src/assets/fonts/MaterialIcons-Regular.ijmap +0 -1
  176. package/src/assets/fonts/MaterialIcons-Regular.svg +0 -2373
  177. package/src/assets/fonts/MaterialIcons-Regular.ttf +0 -0
  178. package/src/assets/fonts/MaterialIcons-Regular.woff +0 -0
  179. package/src/assets/fonts/MaterialIcons-Regular.woff2 +0 -0
  180. package/src/assets/fonts/MaterialIcons.css +0 -55
  181. package/src/assets/fonts/README.md +0 -9
  182. package/src/assets/fonts/Roboto-Black.ttf +0 -0
  183. package/src/assets/fonts/Roboto-BlackItalic.ttf +0 -0
  184. package/src/assets/fonts/Roboto-Bold.ttf +0 -0
  185. package/src/assets/fonts/Roboto-BoldItalic.ttf +0 -0
  186. package/src/assets/fonts/Roboto-Italic.ttf +0 -0
  187. package/src/assets/fonts/Roboto-Light.ttf +0 -0
  188. package/src/assets/fonts/Roboto-LightItalic.ttf +0 -0
  189. package/src/assets/fonts/Roboto-Medium.ttf +0 -0
  190. package/src/assets/fonts/Roboto-MediumItalic.ttf +0 -0
  191. package/src/assets/fonts/Roboto-Regular.ttf +0 -0
  192. package/src/assets/fonts/Roboto-Thin.ttf +0 -0
  193. package/src/assets/fonts/Roboto-ThinItalic.ttf +0 -0
  194. package/src/assets/fonts/codepoints +0 -932
  195. package/src/assets/fonts/material-icons.css +0 -36
  196. package/src/assets/i18n/cldr-data/main/he/ca-buddhist.json +0 -532
  197. package/src/assets/i18n/cldr-data/main/he/ca-chinese.json +0 -1255
  198. package/src/assets/i18n/cldr-data/main/he/ca-coptic.json +0 -541
  199. package/src/assets/i18n/cldr-data/main/he/ca-dangi.json +0 -1255
  200. package/src/assets/i18n/cldr-data/main/he/ca-ethiopic-amete-alem.json +0 -538
  201. package/src/assets/i18n/cldr-data/main/he/ca-ethiopic.json +0 -541
  202. package/src/assets/i18n/cldr-data/main/he/ca-generic.json +0 -535
  203. package/src/assets/i18n/cldr-data/main/he/ca-gregorian.json +0 -552
  204. package/src/assets/i18n/cldr-data/main/he/ca-hebrew.json +0 -557
  205. package/src/assets/i18n/cldr-data/main/he/ca-indian.json +0 -532
  206. package/src/assets/i18n/cldr-data/main/he/ca-islamic-civil.json +0 -532
  207. package/src/assets/i18n/cldr-data/main/he/ca-islamic-rgsa.json +0 -532
  208. package/src/assets/i18n/cldr-data/main/he/ca-islamic-tbla.json +0 -532
  209. package/src/assets/i18n/cldr-data/main/he/ca-islamic-umalqura.json +0 -532
  210. package/src/assets/i18n/cldr-data/main/he/ca-islamic.json +0 -532
  211. package/src/assets/i18n/cldr-data/main/he/ca-japanese.json +0 -1240
  212. package/src/assets/i18n/cldr-data/main/he/ca-persian.json +0 -532
  213. package/src/assets/i18n/cldr-data/main/he/ca-roc.json +0 -535
  214. package/src/assets/i18n/cldr-data/main/he/characters.json +0 -53
  215. package/src/assets/i18n/cldr-data/main/he/currencies.json +0 -1982
  216. package/src/assets/i18n/cldr-data/main/he/dateFields.json +0 -860
  217. package/src/assets/i18n/cldr-data/main/he/delimiters.json +0 -19
  218. package/src/assets/i18n/cldr-data/main/he/languages.json +0 -555
  219. package/src/assets/i18n/cldr-data/main/he/layout.json +0 -19
  220. package/src/assets/i18n/cldr-data/main/he/listPatterns.json +0 -69
  221. package/src/assets/i18n/cldr-data/main/he/localeDisplayNames.json +0 -231
  222. package/src/assets/i18n/cldr-data/main/he/measurementSystemNames.json +0 -20
  223. package/src/assets/i18n/cldr-data/main/he/numbers.json +0 -233
  224. package/src/assets/i18n/cldr-data/main/he/posix.json +0 -19
  225. package/src/assets/i18n/cldr-data/main/he/scripts.json +0 -191
  226. package/src/assets/i18n/cldr-data/main/he/territories.json +0 -324
  227. package/src/assets/i18n/cldr-data/main/he/timeZoneNames.json +0 -2301
  228. package/src/assets/i18n/cldr-data/main/he/units.json +0 -3408
  229. package/src/assets/i18n/cldr-data/main/he/variants.json +0 -119
  230. package/src/assets/i18n/cldr-data/supplemental/aliases.json +0 -4391
  231. package/src/assets/i18n/cldr-data/supplemental/calendarData.json +0 -865
  232. package/src/assets/i18n/cldr-data/supplemental/calendarPreferenceData.json +0 -50
  233. package/src/assets/i18n/cldr-data/supplemental/characterFallbacks.json +0 -888
  234. package/src/assets/i18n/cldr-data/supplemental/codeMappings.json +0 -1932
  235. package/src/assets/i18n/cldr-data/supplemental/currencyData.json +0 -3589
  236. package/src/assets/i18n/cldr-data/supplemental/dayPeriods.json +0 -2008
  237. package/src/assets/i18n/cldr-data/supplemental/gender.json +0 -67
  238. package/src/assets/i18n/cldr-data/supplemental/languageData.json +0 -6450
  239. package/src/assets/i18n/cldr-data/supplemental/languageGroups.json +0 -115
  240. package/src/assets/i18n/cldr-data/supplemental/languageMatching.json +0 -1864
  241. package/src/assets/i18n/cldr-data/supplemental/likelySubtags.json +0 -1844
  242. package/src/assets/i18n/cldr-data/supplemental/measurementData.json +0 -44
  243. package/src/assets/i18n/cldr-data/supplemental/metaZones.json +0 -7049
  244. package/src/assets/i18n/cldr-data/supplemental/numberingSystems.json +0 -343
  245. package/src/assets/i18n/cldr-data/supplemental/ordinals.json +0 -371
  246. package/src/assets/i18n/cldr-data/supplemental/parentLocales.json +0 -180
  247. package/src/assets/i18n/cldr-data/supplemental/plurals.json +0 -884
  248. package/src/assets/i18n/cldr-data/supplemental/primaryZones.json +0 -22
  249. package/src/assets/i18n/cldr-data/supplemental/references.json +0 -1181
  250. package/src/assets/i18n/cldr-data/supplemental/territoryContainment.json +0 -753
  251. package/src/assets/i18n/cldr-data/supplemental/territoryInfo.json +0 -6604
  252. package/src/assets/i18n/cldr-data/supplemental/timeData.json +0 -1031
  253. package/src/assets/i18n/cldr-data/supplemental/unitPreferenceData.json +0 -290
  254. package/src/assets/i18n/cldr-data/supplemental/weekData.json +0 -316
  255. package/src/assets/i18n/cldr-data/supplemental/windowsZones.json +0 -3520
  256. package/src/assets/icons/icon-128x128.png +0 -0
  257. package/src/assets/icons/icon-144x144.png +0 -0
  258. package/src/assets/icons/icon-152x152.png +0 -0
  259. package/src/assets/icons/icon-192x192.png +0 -0
  260. package/src/assets/icons/icon-256x256.png +0 -0
  261. package/src/assets/icons/icon-32x32.png +0 -0
  262. package/src/assets/icons/icon-512x512.png +0 -0
  263. package/src/assets/js/app-sw.js +0 -16
  264. package/src/assets/js/firebase-messaging-sw.js +0 -1
  265. package/src/assets/js/logo.js +0 -31
  266. package/src/assets/logo.json +0 -1
  267. package/src/assets/logo.svg +0 -38
  268. package/src/assets/manifest.json +0 -43
  269. package/src/assets/sounds/alert_error-03.ogg +0 -0
  270. package/src/assets/sounds/navigation_hover-tap.ogg +0 -0
  271. package/src/assets/sounds/notification_simple-01.ogg +0 -0
  272. package/src/assets/themes/brown.min.css +0 -81
  273. package/src/assets/themes/dark.min.css +0 -76
  274. package/src/assets/themes/default.min.css +0 -88
  275. package/src/assets/themes/green.min.css +0 -81
  276. package/src/assets/themes/indigo.min.css +0 -81
  277. package/src/assets/themes/okta-sign-in.min.css +0 -17
@@ -70,10 +70,10 @@ export class CubeSpreadsheetComponent {
70
70
  this._promises = Promise.all(promises);
71
71
  }
72
72
  }
73
- query(axes) {
73
+ query() {
74
74
  const numberStyle = { textAlign: 'right' };
75
75
  if (!this.series)
76
- return this._service.table(this.cube, this.xAxis, { filters: Object.assign(Object.assign({}, axes), this.filters), indices: this.indices }).
76
+ return this._service.table(this.cube, this.xAxis, { filters: this.filters, indices: this.indices }).
77
77
  toPromise().then(data => {
78
78
  const cells = [], style = { fontWeight: 'bold', textAlign: 'center' };
79
79
  this._axes.forEach(c => cells.push({
@@ -106,7 +106,7 @@ export class CubeSpreadsheetComponent {
106
106
  });
107
107
  this._draw();
108
108
  }, (e) => this._sb.error(e.status === 401 ? 'Unauthorized' : null));
109
- return this._service.series(this.cube, this.xAxis, { series: this.series, filters: Object.assign(Object.assign({}, axes), this.filters) }).
109
+ return this._service.series(this.cube, this.xAxis, { series: this.series, filters: this.filters }).
110
110
  toPromise().then(d => {
111
111
  this._promises.then(() => {
112
112
  const style = { fontWeight: 'bold', textAlign: 'center' };
@@ -239,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
239
239
  }], id: [{
240
240
  type: HostBinding
241
241
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2dyaWQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBa0IsV0FBVyxFQUF5QixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0gsT0FBTyxFQUF3RCxXQUFXLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFDeEksT0FBTyxFQUFFLG9CQUFvQixFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBZ0I3QixNQUFNLE9BQU8sd0JBQXdCO0lBaUNuQyxZQUNVLFFBQXdCLEVBQ3hCLEdBQWtCLEVBQ2xCLFFBQXFCLEVBQ3JCLFVBQTRCLEVBQzVCLEdBQXNCLEVBQ3RCLFdBQXVCO1FBTHZCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQW5CZCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDakQsT0FBRSxHQUFHLG9CQUFvQix3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRTVFLGVBQVUsR0FBZSxFQUFFLENBQUM7UUFJcEIsV0FBTSxHQUErQixFQUFFLENBQUM7UUFDeEMsY0FBUyxHQUErQixFQUFFLENBQUM7UUFHbEMsVUFBSyxHQUF5QixJQUFJLG9CQUFvQixFQUFFLENBQUM7SUFRckMsQ0FBQztJQUN0QyxRQUFRO1FBQ04sSUFBSSxDQUFD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QUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pELENBQUM7O0FBN09jLCtCQUFNLEdBQUcsQ0FBQyxDQUFDO3FIQURmLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDRWQUx6QixFQUFFOzJGQUtELHdCQUF3QjtrQkFQcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFdBQVc7cUJBQ25CO2lCQUNGO21QQUlDLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixPQUFPO3NCQUROLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUVhLE9BQU87c0JBQXpCLE1BQU07Z0JBQ1EsRUFBRTtzQkFBaEIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgQ29tcG9uZW50LCBPdXRwdXQsIEluamVjdCwgT25Jbml0LCBIb3N0QmluZGluZywgRWxlbWVudFJlZiwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBBZnRlckh5cGVybGlua0FyZ3MsIENlbGxNb2RlbCwgQ29sdW1uTW9kZWwsIFJvd01vZGVsLCBTcHJlYWRzaGVldCwgQ2VsbFN0eWxlTW9kZWwgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItc3ByZWFkc2hlZXRcIjtcclxuaW1wb3J0IHsgSW50ZXJuYXRpb25hbGl6YXRpb24sIE51bWJlckZvcm1hdE9wdGlvbnMgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgQXhpc0NsaWNrRXZlbnQsIEN1YmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGVjbGFyYXRpb25zXCI7XHJcbmltcG9ydCB7IEF4ZXNNYXAsIEN1YmUsIEN1YmVBeGlzLCBDdWJlSW5kZXgsIERpbWVudGlvbnMsIFlBeGlzIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlIH0gZnJvbSBcIi4uL2N1YmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvZGF0YXNvdXJjZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLXNwcmVhZHNoZWV0JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdjdWJlLXZpZXcnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZVNwcmVhZHNoZWV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDdWJlVmlld2VyQ29tcG9uZW50LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQElucHV0KClcclxuICB3aWR0aDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBjdWJlOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICB4QXhpczogc3RyaW5nW107XHJcbiAgQElucHV0KClcclxuICB5QXhpcz86IFlBeGlzO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2VyaWVzPzogc3RyaW5nW107XHJcbiAgQElucHV0KClcclxuICBpbmRpY2VzPzogc3RyaW5nW107XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJzPzogQXhlc01hcDtcclxuICBASW5wdXQoKVxyXG4gIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBleHBsb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxBeGlzQ2xpY2tFdmVudD4oKTtcclxuICBASG9zdEJpbmRpbmcoKSBpZCA9IGBjdWJlLXNwcmVhZHNoZWV0LSR7Q3ViZVNwcmVhZHNoZWV0Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcbiAgc3ByZWFkc2hlZXQ6IFNwcmVhZHNoZWV0O1xyXG4gIGRhdGFTb3VyY2U6IFJvd01vZGVsW10gPSBbXTtcclxuICBjb2x1bW5zOiBDb2x1bW5Nb2RlbFtdO1xyXG4gIHByaXZhdGUgX2F4ZXM6IEN1YmVBeGlzW107XHJcbiAgcHJpdmF0ZSBfaW5kaWNlczogQ3ViZUluZGV4W107XHJcbiAgcHJpdmF0ZSBfeXJvd3M6IHsga2V5OiBhbnk7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgcHJpdmF0ZSBfeGNvbHVtbnM6IHsga2V5OiBhbnk7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgcHJpdmF0ZSBfcHJvbWlzZXM6IFByb21pc2U8YW55W10+O1xyXG4gIHByaXZhdGUgX2N1YmU6IEN1YmU7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaW50bDogSW50ZXJuYXRpb25hbGl6YXRpb24gPSBuZXcgSW50ZXJuYXRpb25hbGl6YXRpb24oKTtcclxuICBwcml2YXRlIF9udW1iZXJGb3JtYXQ6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2I6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RzOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbnVtYmVyRm9ybWF0ID0gdGhpcy5faW50bC5nZXROdW1iZXJQYXR0ZXJuKHtcclxuICAgICAgY3VycmVuY3k6IHRoaXMuY3VycmVuY3lDb2RlLFxyXG4gICAgICBmb3JtYXQ6IHRoaXMuY3VycmVuY3lDb2RlID8gJ2MnIDogJ24nLFxyXG4gICAgICB1c2VHcm91cGluZzogdHJ1ZSxcclxuICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0aGlzLl9zZXJ2aWNlLmZyYWN0aW9uRGlnaXRzLFxyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHNcclxuICAgIH0gYXMgTnVtYmVyRm9ybWF0T3B0aW9ucylcclxuXHJcbiAgICB0aGlzLl9jdWJlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHRoaXMuY3ViZSk7XHJcbiAgICBpZiAoIXRoaXMuc2VyaWVzKSB7XHJcbiAgICAgIHRoaXMuX2F4ZXMgPSB0aGlzLnhBeGlzLm1hcChjID0+IHRoaXMuX2N1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09IGMpKTtcclxuICAgICAgaWYgKHRoaXMuaW5kaWNlcykgdGhpcy5faW5kaWNlcyA9IHRoaXMuX2N1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiB0aGlzLmluZGljZXMuaW5kZXhPZihpLm5hbWUpID4gLTEpO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLl9heGVzLm1hcChfID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLy93aWR0aDogMTI1XHJcbiAgICAgICAgfSBhcyBDb2x1bW5Nb2RlbDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgICB3aWR0aDogOTBcclxuICAgICAgfSAvKiB2YWx1ZSAqLyk7XHJcbiAgICAgIHRoaXMuaW5kaWNlcyAmJiB0aGlzLmluZGljZXMuZm9yRWFjaChfID0+IHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgICB3aWR0aDogOTBcclxuICAgICAgfSBhcyBDb2x1bW5Nb2RlbFxyXG4gICAgICApKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCB4ID0gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMueEF4aXNbMF0pLFxyXG4gICAgICAgIHkgPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy5zZXJpZXNbMF0pO1xyXG4gICAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcclxuICAgICAgdGhpcy5jb2x1bW5zID0gW3t9IC8qIHkgKi9dO1xyXG4gICAgICAvLyBhcXVpcmUgY29sdW1ucyBzb3VyY2VcclxuICAgICAgbGV0IG9ic2VydmUgPSB0aGlzLl9kcy5hbGwoeC5kYXRhVHlwZSkudG9Qcm9taXNlKCkuXHJcbiAgICAgICAgdGhlbihjID0+IHtcclxuICAgICAgICAgIHRoaXMuX3hjb2x1bW5zID0gYztcclxuICAgICAgICAgIHRoaXMuY29sdW1ucyA9IGMubWFwKF8gPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICAgICAgICB9IGFzIENvbHVtbk1vZGVsO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSkgYXMgUHJvbWlzZTxhbnk+O1xyXG4gICAgICBwcm9taXNlcy5wdXNoKG9ic2VydmUpO1xyXG4gICAgICAvLyBhcXVpcmUgcm93cyBzb3VyY2VcclxuICAgICAgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh5LmRhdGFUeXBlKS50b1Byb21pc2UoKS5cclxuICAgICAgICB0aGVuKHIgPT4gdGhpcy5feXJvd3MgPSByKTtcclxuICAgICAgcHJvbWlzZXMucHVzaChvYnNlcnZlKTtcclxuXHJcblxyXG4gICAgICB0aGlzLl9wcm9taXNlcyA9IFByb21pc2UuYWxsKHByb21pc2VzKTtcclxuICAgIH1cclxuICB9XHJcbiAgcXVlcnkoYXhlczogQXhlc01hcCkge1xyXG4gICAgY29uc3QgbnVtYmVyU3R5bGUgPSB7IHRleHRBbGlnbjogJ3JpZ2h0JyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgaWYgKCF0aGlzLnNlcmllcylcclxuICAgICAgcmV0dXJuIHRoaXMuX3NlcnZpY2UudGFibGUodGhpcy5jdWJlLCB0aGlzLnhBeGlzLCB7IGZpbHRlcnM6IHsgLi4uYXhlcywgLi4udGhpcy5maWx0ZXJzIH0sIGluZGljZXM6IHRoaXMuaW5kaWNlcyB9KS5cclxuICAgICAgICB0b1Byb21pc2UoKS50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSBbXSxcclxuICAgICAgICAgICAgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgICAgICAgdGhpcy5fYXhlcy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiBjLnRpdGxlLCBzdHlsZVxyXG4gICAgICAgICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgICAgICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5faW5kaWNlcy5mb3JFYWNoKGkgPT4gY2VsbHMucHVzaCh7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnlBeGlzID8gdGhpcy55QXhpcy50aXRsZSA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1ZhbHVlJyksXHJcbiAgICAgICAgICAgIHN0eWxlXHJcbiAgICAgICAgICB9IGFzIENlbGxNb2RlbCk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBbe1xyXG4gICAgICAgICAgICBjZWxsc1xyXG4gICAgICAgICAgfSBhcyBSb3dNb2RlbF07XHJcbiAgICAgICAgICBkYXRhLmZvckVhY2goZCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMueEF4aXMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHZhbHVlOiBkW2NdLFxyXG4gICAgICAgICAgICB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLmluZGljZXMgJiYgdGhpcy5pbmRpY2VzLmZvckVhY2goaSA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgICBzdHlsZTogbnVtYmVyU3R5bGUsXHJcbiAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IChkW2ldIHx8IDApLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIH0gYXMgQ2VsbE1vZGVsKSk7XHJcbiAgICAgICAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHN0eWxlOiBudW1iZXJTdHlsZSxcclxuICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICAgICAgICB2YWx1ZTogKGQudmFsdWUgfHwgMCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgfSBhcyBDZWxsTW9kZWwpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucHVzaCh7IGNlbGxzIH0gYXMgUm93TW9kZWwpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PlxyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbClcclxuICAgICAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2Uuc2VyaWVzKHRoaXMuY3ViZSwgdGhpcy54QXhpcywgeyBzZXJpZXM6IHRoaXMuc2VyaWVzLCBmaWx0ZXJzOiB7IC4uLmF4ZXMsIC4uLnRoaXMuZmlsdGVycyB9IH0pLlxyXG4gICAgICB0b1Byb21pc2UoKS50aGVuKGQgPT4ge1xyXG4gICAgICAgIHRoaXMuX3Byb21pc2VzLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogJycgfSBhcyBDZWxsTW9kZWxdO1xyXG4gICAgICAgICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goeyB2YWx1ZTogYy52YWx1ZSwgc3R5bGUgfSkpO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gW3sgY2VsbHMgfV07XHJcblxyXG4gICAgICAgICAgdGhpcy5pbmRpY2VzICYmIHRoaXMuX2N1YmUuaW5kaWNlcy5maWx0ZXIoaSA9PiB0aGlzLmluZGljZXMuaW5kZXhPZihpLm5hbWUpID4gMCkuXHJcbiAgICAgICAgICAgIGZvckVhY2goaSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogaS50aXRsZSwgc3R5bGUgfSBhcyBDZWxsTW9kZWxdLFxyXG4gICAgICAgICAgICAgICAgc2VyaWUgPSBkLmZpbmQocyA9PiBzLnR5cGUgPT09ICdJbmRleCcgJiYgcy5uYW1lID09PSBpLm5hbWUpLCBtYXAgPSB7fTtcclxuICAgICAgICAgICAgICBpZiAoc2VyaWUpIHtcclxuICAgICAgICAgICAgICAgIHNlcmllLnBvaW50cy5mb3JFYWNoKHAgPT4gbWFwW3AueF0gPSBwLnkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+XHJcbiAgICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAobWFwW2Mua2V5XSB8fCAwKS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiBudW1iZXJTdHlsZVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuX3lyb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gW3sgdmFsdWU6IHIudmFsdWUsIHN0eWxlIH0gYXMgQ2VsbE1vZGVsXSxcclxuICAgICAgICAgICAgICBzZXJpZSA9IGQuZmluZChzID0+IHMubmFtZSA9PT0gci5rZXkpLCBtYXAgPSB7fTtcclxuICAgICAgICAgICAgaWYgKHNlcmllKSB7XHJcbiAgICAgICAgICAgICAgc2VyaWUucG9pbnRzLmZvckVhY2gocCA9PiBtYXBbcC54XSA9IHAueSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChjID0+XHJcbiAgICAgICAgICAgICAgICBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IChtYXBbYy5rZXldIHx8IDApLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fbnVtYmVyRm9ybWF0LFxyXG4gICAgICAgICAgICAgICAgICBzdHlsZTogbnVtYmVyU3R5bGVcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5feGNvbHVtbnMuZm9yRWFjaChfID0+XHJcbiAgICAgICAgICAgICAgICBjZWxscy5wdXNoKHsgdmFsdWU6ICcwJyB9KVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wdXNoKHsgY2VsbHMgfSBhcyBSb3dNb2RlbCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuX2RyYXcoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZHJhdygpIHtcclxuICAgIHRoaXMuc3ByZWFkc2hlZXQgJiYgdGhpcy5zcHJlYWRzaGVldC5kZXN0cm95KCk7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ID0gbmV3IFNwcmVhZHNoZWV0KHtcclxuICAgICAgaXNQcm90ZWN0ZWQ6IHRydWUsXHJcbiAgICAgIGFsbG93RWRpdGluZzogZmFsc2UsXHJcbiAgICAgIGFsbG93RGVsZXRlOiBmYWxzZSxcclxuICAgICAgYWxsb3dJbnNlcnQ6IGZhbHNlLFxyXG4gICAgICBhbGxvd1NhdmU6IHRydWUsXHJcbiAgICAgIHNob3dSaWJib246IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybXVsYUJhcjogZmFsc2UsXHJcbiAgICAgIHNob3dTaGVldFRhYnM6IGZhbHNlLFxyXG4gICAgICBzaGVldHM6IFt7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGZyb3plbkNvbHVtbnM6IHRoaXMuc2VyaWVzICE9PSB1bmRlZmluZWQgPyAxIDogMCxcclxuICAgICAgICBmcm96ZW5Sb3dzOiAxLFxyXG4gICAgICAgIHJvd3M6IHRoaXMuZGF0YVNvdXJjZSxcclxuICAgICAgfV0sXHJcbiAgICAgIC8vd2lkdGg6IHRoaXMud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXHJcbiAgICAgIGFmdGVySHlwZXJsaW5rQ2xpY2s6IHRoaXMuYWZ0ZXJIeXBlcmxpbmtDbGljay5iaW5kKHRoaXMpLFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgYWZ0ZXJIeXBlcmxpbmtDbGljayhldnQ6IEFmdGVySHlwZXJsaW5rQXJncykge1xyXG4gICAgO1xyXG4gICAgaWYgKGV2dC5jZWxsID09PSAnMCcpIHJldHVybjtcclxuICAgIGNvbnN0IHsgaHlwZXJsaW5rIH0gPSBldnQ7XHJcbiAgICBpZiAoaHlwZXJsaW5rID09PSAnMCcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5fYXhlc1twYXJzZUludChoeXBlcmxpbmsgYXMgc3RyaW5nKV0ubmFtZTtcclxuICAgIGNvbnN0IGF4ZXM6IHt9ID0ge307XHJcbiAgICBheGVzW3RoaXMueEF4aXNbMF1dID0gY29sdW1uO1xyXG4gICAgLy9pZiAodHlwZSAhPT0gJ0luZGV4JykgYXhlc1tzZXJpZXNbMF1dID0gcm93O1xyXG4gICAgLy90aGlzLmV4cGxvcmUuZW1pdCh7IGF4ZXMsIGluZGV4OiB0eXBlID09PSAnSW5kZXgnID8gcm93IDogbnVsbCB9KTtcclxuICB9XHJcbiAgb25SZXNpemUoZDogRGltZW50aW9ucyk6IHZvaWQge1xyXG4gICAgdGhpcy5oZWlnaHQgPSBgJHtkLmhlaWdodH1weGA7XHJcbiAgICB0aGlzLndpZHRoID0gYCR7ZC53aWR0aH1weGA7XHJcbiAgICBpZiAodGhpcy5zcHJlYWRzaGVldCkge1xyXG4gICAgICAvL3RoaXMuc3ByZWFkc2hlZXQud2lkdGggPSBkLndpZHRoO1xyXG4gICAgICB0aGlzLnNwcmVhZHNoZWV0LmhlaWdodCA9IGQuaGVpZ2h0O1xyXG4gICAgICB0aGlzLnNwcmVhZHNoZWV0LnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcbiAgZXhwb3J0VG9FeGNlbCh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3YiA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcclxuXHJcbiAgICBjb25zdCByb3dzID0gdGhpcy5zcHJlYWRzaGVldC5zaGVldHNbMF0ucm93cy5tYXAociA9PiByLmNlbGxzLm1hcChjID0+IGMudmFsdWUpKTtcclxuICAgIGNvbnN0IHdzID0gWExTWC51dGlscy5hb2FfdG9fc2hlZXQocm93cyk7XHJcblxyXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1NoZWV0TicsIDEpO1xyXG4gICAgd2IuU2hlZXRzW25hbWVdID0gd3M7XHJcbiAgICB3Yi5TaGVldE5hbWVzLnB1c2gobmFtZSk7XHJcblxyXG4gICAgWExTWC53cml0ZUZpbGUod2IsIGAke3RpdGxlfS54bHN4YCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zcHJlYWRzaGVldCAmJiB0aGlzLnNwcmVhZHNoZWV0LmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL2dyaWQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBa0IsV0FBVyxFQUF5QixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0gsT0FBTyxFQUF3RCxXQUFXLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFDeEksT0FBTyxFQUFFLG9CQUFvQixFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBZ0I3QixNQUFNLE9BQU8sd0JBQXdCO0lBaUNuQyxZQUNVLFFBQXdCLEVBQ3hCLEdBQWtCLEVBQ2xCLFFBQXFCLEVBQ3JCLFVBQTRCLEVBQzVCLEdBQXNCLEVBQ3RCLFdBQXVCO1FBTHZCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUM1QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQW5CZCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDakQsT0FBRSxHQUFHLG9CQUFvQix3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBRTVFLGVBQVUsR0FBZSxFQUFFLENBQUM7UUFJcEIsV0FBTSxHQUErQixFQUFFLENBQUM7UUFDeEMsY0FBUyxHQUErQixFQUFFLENBQUM7UUFHbEMsVUFBSyxHQUF5QixJQUFJLG9CQUFvQixFQUFFLENBQUM7SUFRckMsQ0FBQztJQUN0QyxRQUFRO1FBQ04sSUFBSSxDQUFD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LElBQUksQ0FBQyxDQUFDO1FBRXpDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNyQixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakQsQ0FBQzs7QUE3T2MsK0JBQU0sR0FBRyxDQUFDLENBQUM7cUhBRGYsd0JBQXdCO3lHQUF4Qix3QkFBd0IsNFZBTHpCLEVBQUU7MkZBS0Qsd0JBQXdCO2tCQVBwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsV0FBVztxQkFDbkI7aUJBQ0Y7bVBBSUMsS0FBSztzQkFESixLQUFLO2dCQUdOLE1BQU07c0JBREwsS0FBSztnQkFHTixJQUFJO3NCQURILEtBQUs7Z0JBR04sS0FBSztzQkFESixLQUFLO2dCQUdOLEtBQUs7c0JBREosS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHTixZQUFZO3NCQURYLEtBQUs7Z0JBRWEsT0FBTztzQkFBekIsTUFBTTtnQkFDUSxFQUFFO3NCQUFoQixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBDb21wb25lbnQsIE91dHB1dCwgSW5qZWN0LCBPbkluaXQsIEhvc3RCaW5kaW5nLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEFmdGVySHlwZXJsaW5rQXJncywgQ2VsbE1vZGVsLCBDb2x1bW5Nb2RlbCwgUm93TW9kZWwsIFNwcmVhZHNoZWV0LCBDZWxsU3R5bGVNb2RlbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1zcHJlYWRzaGVldFwiO1xyXG5pbXBvcnQgeyBJbnRlcm5hdGlvbmFsaXphdGlvbiwgTnVtYmVyRm9ybWF0T3B0aW9ucyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBBeGlzQ2xpY2tFdmVudCwgQ3ViZVZpZXdlckNvbXBvbmVudCB9IGZyb20gXCIuLi9kZWNsYXJhdGlvbnNcIjtcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZSwgQ3ViZUF4aXMsIEN1YmVJbmRleCwgRGltZW50aW9ucywgWUF4aXMgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UgfSBmcm9tIFwiLi4vY3ViZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWN1YmUtc3ByZWFkc2hlZXQnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2N1YmUtdmlldydcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlU3ByZWFkc2hlZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEN1YmVWaWV3ZXJDb21wb25lbnQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgbmV4dElkID0gMDtcclxuICBASW5wdXQoKVxyXG4gIHdpZHRoOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBoZWlnaHQ6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIGN1YmU6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHhBeGlzOiBzdHJpbmdbXTtcclxuICBASW5wdXQoKVxyXG4gIHlBeGlzPzogWUF4aXM7XHJcbiAgQElucHV0KClcclxuICBzZXJpZXM/OiBzdHJpbmdbXTtcclxuICBASW5wdXQoKVxyXG4gIGluZGljZXM/OiBzdHJpbmdbXTtcclxuICBASW5wdXQoKVxyXG4gIGZpbHRlcnM/OiBBeGVzTWFwO1xyXG4gIEBJbnB1dCgpXHJcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4aXNDbGlja0V2ZW50PigpO1xyXG4gIEBIb3N0QmluZGluZygpIGlkID0gYGN1YmUtc3ByZWFkc2hlZXQtJHtDdWJlU3ByZWFkc2hlZXRDb21wb25lbnQubmV4dElkKyt9YDtcclxuICBzcHJlYWRzaGVldDogU3ByZWFkc2hlZXQ7XHJcbiAgZGF0YVNvdXJjZTogUm93TW9kZWxbXSA9IFtdO1xyXG4gIGNvbHVtbnM6IENvbHVtbk1vZGVsW107XHJcbiAgcHJpdmF0ZSBfYXhlczogQ3ViZUF4aXNbXTtcclxuICBwcml2YXRlIF9pbmRpY2VzOiBDdWJlSW5kZXhbXTtcclxuICBwcml2YXRlIF95cm93czogeyBrZXk6IGFueTsgdmFsdWU6IGFueSB9W10gPSBbXTtcclxuICBwcml2YXRlIF94Y29sdW1uczogeyBrZXk6IGFueTsgdmFsdWU6IGFueSB9W10gPSBbXTtcclxuICBwcml2YXRlIF9wcm9taXNlczogUHJvbWlzZTxhbnlbXT47XHJcbiAgcHJpdmF0ZSBfY3ViZTogQ3ViZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRsOiBJbnRlcm5hdGlvbmFsaXphdGlvbiA9IG5ldyBJbnRlcm5hdGlvbmFsaXphdGlvbigpO1xyXG4gIHByaXZhdGUgX251bWJlckZvcm1hdDogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHM6IERhdGFzb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9udW1iZXJGb3JtYXQgPSB0aGlzLl9pbnRsLmdldE51bWJlclBhdHRlcm4oe1xyXG4gICAgICBjdXJyZW5jeTogdGhpcy5jdXJyZW5jeUNvZGUsXHJcbiAgICAgIGZvcm1hdDogdGhpcy5jdXJyZW5jeUNvZGUgPyAnYycgOiAnbicsXHJcbiAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLFxyXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IHRoaXMuX3NlcnZpY2UuZnJhY3Rpb25EaWdpdHMsXHJcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5fc2VydmljZS5mcmFjdGlvbkRpZ2l0c1xyXG4gICAgfSBhcyBOdW1iZXJGb3JtYXRPcHRpb25zKVxyXG5cclxuICAgIHRoaXMuX2N1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5jdWJlKTtcclxuICAgIGlmICghdGhpcy5zZXJpZXMpIHtcclxuICAgICAgdGhpcy5fYXhlcyA9IHRoaXMueEF4aXMubWFwKGMgPT4gdGhpcy5fY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT0gYykpO1xyXG4gICAgICBpZiAodGhpcy5pbmRpY2VzKSB0aGlzLl9pbmRpY2VzID0gdGhpcy5fY3ViZS5pbmRpY2VzLmZpbHRlcihpID0+IHRoaXMuaW5kaWNlcy5pbmRleE9mKGkubmFtZSkgPiAtMSk7XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuX2F4ZXMubWFwKF8gPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAvL3dpZHRoOiAxMjVcclxuICAgICAgICB9IGFzIENvbHVtbk1vZGVsO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICB9IC8qIHZhbHVlICovKTtcclxuICAgICAgdGhpcy5pbmRpY2VzICYmIHRoaXMuaW5kaWNlcy5mb3JFYWNoKF8gPT4gdGhpcy5jb2x1bW5zLnB1c2goe1xyXG4gICAgICAgIHdpZHRoOiA5MFxyXG4gICAgICB9IGFzIENvbHVtbk1vZGVsXHJcbiAgICAgICkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IHggPSB0aGlzLl9jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy54QXhpc1swXSksXHJcbiAgICAgICAgeSA9IHRoaXMuX2N1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB0aGlzLnNlcmllc1swXSk7XHJcbiAgICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbe30gLyogeSAqL107XHJcbiAgICAgIC8vIGFxdWlyZSBjb2x1bW5zIHNvdXJjZVxyXG4gICAgICBsZXQgb2JzZXJ2ZSA9IHRoaXMuX2RzLmFsbCh4LmRhdGFUeXBlKS50b1Byb21pc2UoKS5cclxuICAgICAgICB0aGVuKGMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5feGNvbHVtbnMgPSBjO1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zID0gYy5tYXAoXyA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDkwXHJcbiAgICAgICAgICAgIH0gYXMgQ29sdW1uTW9kZWw7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KSBhcyBQcm9taXNlPGFueT47XHJcbiAgICAgIHByb21pc2VzLnB1c2gob2JzZXJ2ZSk7XHJcbiAgICAgIC8vIGFxdWlyZSByb3dzIHNvdXJjZVxyXG4gICAgICBvYnNlcnZlID0gdGhpcy5fZHMuYWxsKHkuZGF0YVR5cGUpLnRvUHJvbWlzZSgpLlxyXG4gICAgICAgIHRoZW4ociA9PiB0aGlzLl95cm93cyA9IHIpO1xyXG4gICAgICBwcm9taXNlcy5wdXNoKG9ic2VydmUpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuX3Byb21pc2VzID0gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBxdWVyeSgpIHtcclxuICAgIGNvbnN0IG51bWJlclN0eWxlID0geyB0ZXh0QWxpZ246ICdyaWdodCcgfSBhcyBDZWxsU3R5bGVNb2RlbDtcclxuICAgIGlmICghdGhpcy5zZXJpZXMpXHJcbiAgICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlLnRhYmxlKHRoaXMuY3ViZSwgdGhpcy54QXhpcywgeyBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsIGluZGljZXM6IHRoaXMuaW5kaWNlcyB9KS5cclxuICAgICAgICB0b1Byb21pc2UoKS50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSBbXSxcclxuICAgICAgICAgICAgc3R5bGUgPSB7IGZvbnRXZWlnaHQ6ICdib2xkJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IGFzIENlbGxTdHlsZU1vZGVsO1xyXG4gICAgICAgICAgdGhpcy5fYXhlcy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiBjLnRpdGxlLCBzdHlsZVxyXG4gICAgICAgICAgfSBhcyBDZWxsTW9kZWwpKTtcclxuICAgICAgICAgIHRoaXMuX2luZGljZXMgJiYgdGhpcy5faW5kaWNlcy5mb3JFYWNoKGkgPT4gY2VsbHMucHVzaCh7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnlBeGlzID8gdGhpcy55QXhpcy50aXRsZSA6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1ZhbHVlJyksXHJcbiAgICAgICAgICAgIHN0eWxlXHJcbiAgICAgICAgICB9IGFzIENlbGxNb2RlbCk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBbe1xyXG4gICAgICAgICAgICBjZWxsc1xyXG4gICAgICAgICAgfSBhcyBSb3dNb2RlbF07XHJcbiAgICAgICAgICBkYXRhLmZvckVhY2goZCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMueEF4aXMuZm9yRWFjaChjID0+IGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHZhbHVlOiBkW2NdLFxyXG4gICAgICAgICAgICB9IGFzIENlbGxNb2RlbCkpO1xyXG4gICAgICAgICAgICB0aGlzLmluZGljZXMgJiYgdGhpcy5pbmRpY2VzLmZvckVhY2goaSA9PiBjZWxscy5wdXNoKHtcclxuICAgICAgICAgICAgICBzdHlsZTogbnVtYmVyU3R5bGUsXHJcbiAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IChkW2ldIHx8IDApLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIH0gYXMgQ2VsbE1vZGVsKSk7XHJcbiAgICAgICAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHN0eWxlOiBudW1iZXJTdHlsZSxcclxuICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMuX251bWJlckZvcm1hdCxcclxuICAgICAgICAgICAgICB2YWx1ZTogKGQudmFsdWUgfHwgMCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgfSBhcyBDZWxsTW9kZWwpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UucHVzaCh7IGNlbGxzIH0gYXMgUm93TW9kZWwpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLl9kcmF3KCk7XHJcbiAgICAgICAgfSwgKGU6IEh0dHBSZXNwb25zZTxhbnk+KSA9PlxyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbClcclxuICAgICAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2Uuc2VyaWVzKHRoaXMuY3ViZSwgdGhpcy54QXhpcywgeyBzZXJpZXM6IHRoaXMuc2VyaWVzLCBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMgfSkuXHJcbiAgICAgIHRvUHJvbWlzZSgpLnRoZW4oZCA9PiB7XHJcbiAgICAgICAgdGhpcy5fcHJvbWlzZXMudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzdHlsZSA9IHsgZm9udFdlaWdodDogJ2JvbGQnLCB0ZXh0QWxpZ246ICdjZW50ZXInIH0gYXMgQ2VsbFN0eWxlTW9kZWw7XHJcbiAgICAgICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiAnJyB9IGFzIENlbGxNb2RlbF07XHJcbiAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKGMgPT4gY2VsbHMucHVzaCh7IHZhbHVlOiBjLnZhbHVlLCBzdHlsZSB9KSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBbeyBjZWxscyB9XTtcclxuXHJcbiAgICAgICAgICB0aGlzLmluZGljZXMgJiYgdGhpcy5fY3ViZS5pbmRpY2VzLmZpbHRlcihpID0+IHRoaXMuaW5kaWNlcy5pbmRleE9mKGkubmFtZSkgPiAwKS5cclxuICAgICAgICAgICAgZm9yRWFjaChpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IFt7IHZhbHVlOiBpLnRpdGxlLCBzdHlsZSB9IGFzIENlbGxNb2RlbF0sXHJcbiAgICAgICAgICAgICAgICBzZXJpZSA9IGQuZmluZChzID0+IHMudHlwZSA9PT0gJ0luZGV4JyAmJiBzLm5hbWUgPT09IGkubmFtZSksIG1hcCA9IHt9O1xyXG4gICAgICAgICAgICAgIGlmIChzZXJpZSkge1xyXG4gICAgICAgICAgICAgICAgc2VyaWUucG9pbnRzLmZvckVhY2gocCA9PiBtYXBbcC54XSA9IHAueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKGMgPT5cclxuICAgICAgICAgICAgICAgICAgY2VsbHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IChtYXBbYy5rZXldIHx8IDApLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IG51bWJlclN0eWxlXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnB1c2goeyBjZWxscyB9IGFzIFJvd01vZGVsKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5feXJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSBbeyB2YWx1ZTogci52YWx1ZSwgc3R5bGUgfSBhcyBDZWxsTW9kZWxdLFxyXG4gICAgICAgICAgICAgIHNlcmllID0gZC5maW5kKHMgPT4gcy5uYW1lID09PSByLmtleSksIG1hcCA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoc2VyaWUpIHtcclxuICAgICAgICAgICAgICBzZXJpZS5wb2ludHMuZm9yRWFjaChwID0+IG1hcFtwLnhdID0gcC55KTtcclxuICAgICAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKGMgPT5cclxuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogKG1hcFtjLmtleV0gfHwgMCkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLl9udW1iZXJGb3JtYXQsXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBudW1iZXJTdHlsZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICB0aGlzLl94Y29sdW1ucy5mb3JFYWNoKF8gPT5cclxuICAgICAgICAgICAgICAgIGNlbGxzLnB1c2goeyB2YWx1ZTogJzAnIH0pXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnB1c2goeyBjZWxscyB9IGFzIFJvd01vZGVsKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5fZHJhdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LCAoZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICB0aGlzLl9zYi5lcnJvcihlLnN0YXR1cyA9PT0gNDAxID8gJ1VuYXV0aG9yaXplZCcgOiBudWxsKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kcmF3KCkge1xyXG4gICAgdGhpcy5zcHJlYWRzaGVldCAmJiB0aGlzLnNwcmVhZHNoZWV0LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuc3ByZWFkc2hlZXQgPSBuZXcgU3ByZWFkc2hlZXQoe1xyXG4gICAgICBpc1Byb3RlY3RlZDogdHJ1ZSxcclxuICAgICAgYWxsb3dFZGl0aW5nOiBmYWxzZSxcclxuICAgICAgYWxsb3dEZWxldGU6IGZhbHNlLFxyXG4gICAgICBhbGxvd0luc2VydDogZmFsc2UsXHJcbiAgICAgIGFsbG93U2F2ZTogdHJ1ZSxcclxuICAgICAgc2hvd1JpYmJvbjogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtdWxhQmFyOiBmYWxzZSxcclxuICAgICAgc2hvd1NoZWV0VGFiczogZmFsc2UsXHJcbiAgICAgIHNoZWV0czogW3tcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgZnJvemVuQ29sdW1uczogdGhpcy5zZXJpZXMgIT09IHVuZGVmaW5lZCA/IDEgOiAwLFxyXG4gICAgICAgIGZyb3plblJvd3M6IDEsXHJcbiAgICAgICAgcm93czogdGhpcy5kYXRhU291cmNlLFxyXG4gICAgICB9XSxcclxuICAgICAgLy93aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgICAgYWZ0ZXJIeXBlcmxpbmtDbGljazogdGhpcy5hZnRlckh5cGVybGlua0NsaWNrLmJpbmQodGhpcyksXHJcbiAgICB9LCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuICBhZnRlckh5cGVybGlua0NsaWNrKGV2dDogQWZ0ZXJIeXBlcmxpbmtBcmdzKSB7XHJcbiAgICA7XHJcbiAgICBpZiAoZXZ0LmNlbGwgPT09ICcwJykgcmV0dXJuO1xyXG4gICAgY29uc3QgeyBoeXBlcmxpbmsgfSA9IGV2dDtcclxuICAgIGlmIChoeXBlcmxpbmsgPT09ICcwJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLl9heGVzW3BhcnNlSW50KGh5cGVybGluayBhcyBzdHJpbmcpXS5uYW1lO1xyXG4gICAgY29uc3QgYXhlczoge30gPSB7fTtcclxuICAgIGF4ZXNbdGhpcy54QXhpc1swXV0gPSBjb2x1bW47XHJcbiAgICAvL2lmICh0eXBlICE9PSAnSW5kZXgnKSBheGVzW3Nlcmllc1swXV0gPSByb3c7XHJcbiAgICAvL3RoaXMuZXhwbG9yZS5lbWl0KHsgYXhlcywgaW5kZXg6IHR5cGUgPT09ICdJbmRleCcgPyByb3cgOiBudWxsIH0pO1xyXG4gIH1cclxuICBvblJlc2l6ZShkOiBEaW1lbnRpb25zKTogdm9pZCB7XHJcbiAgICB0aGlzLmhlaWdodCA9IGAke2QuaGVpZ2h0fXB4YDtcclxuICAgIHRoaXMud2lkdGggPSBgJHtkLndpZHRofXB4YDtcclxuICAgIGlmICh0aGlzLnNwcmVhZHNoZWV0KSB7XHJcbiAgICAgIC8vdGhpcy5zcHJlYWRzaGVldC53aWR0aCA9IGQud2lkdGg7XHJcbiAgICAgIHRoaXMuc3ByZWFkc2hlZXQuaGVpZ2h0ID0gZC5oZWlnaHQ7XHJcbiAgICAgIHRoaXMuc3ByZWFkc2hlZXQucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBleHBvcnRUb0V4Y2VsKHRpdGxlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHdiID0gWExTWC51dGlscy5ib29rX25ldygpO1xyXG5cclxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnNwcmVhZHNoZWV0LnNoZWV0c1swXS5yb3dzLm1hcChyID0+IHIuY2VsbHMubWFwKGMgPT4gYy52YWx1ZSkpO1xyXG4gICAgY29uc3Qgd3MgPSBYTFNYLnV0aWxzLmFvYV90b19zaGVldChyb3dzKTtcclxuXHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnU2hlZXROJywgMSk7XHJcbiAgICB3Yi5TaGVldHNbbmFtZV0gPSB3cztcclxuICAgIHdiLlNoZWV0TmFtZXMucHVzaChuYW1lKTtcclxuXHJcbiAgICBYTFNYLndyaXRlRmlsZSh3YiwgYCR7dGl0bGV9Lnhsc3hgKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwcmVhZHNoZWV0ICYmIHRoaXMuc3ByZWFkc2hlZXQuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,130 @@
1
+ import { Directive, ViewChild } from '@angular/core';
2
+ import { filter, first } from 'rxjs';
3
+ import { ACCOUNT_DELIMITER } from '../cube.service';
4
+ import { isArray } from '../../core/functions';
5
+ import { CubeMatrixTableComponent } from './table.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../cube.service";
8
+ import * as i2 from "../../core/datasource.service";
9
+ import * as i3 from "../../core/session.service";
10
+ export class CubeMatrixBase {
11
+ constructor(_service, _ds, _session) {
12
+ this._service = _service;
13
+ this._ds = _ds;
14
+ this._session = _session;
15
+ this.sources = {};
16
+ /** filters */
17
+ this.values = {};
18
+ }
19
+ set originalAxes(value) {
20
+ this._originalAxes = Object.assign({}, value);
21
+ }
22
+ get originalAxes() {
23
+ return this._originalAxes;
24
+ }
25
+ get axes() {
26
+ return this._axes;
27
+ }
28
+ set axes(value) {
29
+ this._axes = value;
30
+ this.filters && this.filters.forEach(f => this.values[f.name] = value[f.name]);
31
+ }
32
+ get cube() {
33
+ return this._cube;
34
+ }
35
+ set cube(value) {
36
+ this.configuration = this._session.profile.cubes.find(c => c.name === value);
37
+ if (!this.configuration) {
38
+ this.configuration = this._session.profile.cubes[0];
39
+ value = this.configuration.name;
40
+ }
41
+ this._service.patterns(value).
42
+ subscribe(p => this.patterns = p);
43
+ this._cube = value;
44
+ }
45
+ get selection() {
46
+ return this._selection;
47
+ }
48
+ set selection(value) {
49
+ /** one or more axis */
50
+ this.filters = this.configuration.axes.filter(a => isArray(value) ?
51
+ value.indexOf(a.name) > -1 :
52
+ a.name === value);
53
+ this.filters.forEach(f => this.sources[f.name] = this._ds.all(f.dataType));
54
+ this._selection = value;
55
+ }
56
+ _populate() {
57
+ const axes = Object.assign({}, this._originalAxes);
58
+ if (this.aggregation)
59
+ (isArray(this.aggregation) ? this.aggregation : [this.aggregation]).
60
+ forEach(g => {
61
+ if (axes[g])
62
+ delete axes[g];
63
+ });
64
+ this.axes = axes;
65
+ this._listen().then(() => {
66
+ const combination = this._combine(axes);
67
+ this.title = combination.join(ACCOUNT_DELIMITER);
68
+ });
69
+ }
70
+ /**
71
+ *
72
+ * @param axes
73
+ */
74
+ _combine(axes) {
75
+ return this.configuration.axes.
76
+ filter(a => a.combination).
77
+ map(a => axes[a.name]);
78
+ }
79
+ /**
80
+ *
81
+ * @param value
82
+ */
83
+ filter(name, value, title) {
84
+ const axes = Object.assign({}, this.axes);
85
+ axes[name] = value;
86
+ this.onFilter(axes);
87
+ this._listen().then(() => this.values[name] = value);
88
+ }
89
+ _listen() {
90
+ return this.table.loadingChange.pipe(filter(ok => !ok), first()).toPromise();
91
+ }
92
+ onFilter(axes) {
93
+ this.axes = axes;
94
+ }
95
+ /**
96
+ *
97
+ * @param pattern
98
+ */
99
+ aggregate(pattern) {
100
+ const axes = Object.assign({}, pattern.axes);
101
+ this._service.base(this.cube, axes, this.originalAxes);
102
+ this.axes = Object.assign(Object.assign({}, axes), this.values);
103
+ this._listen().then(() => {
104
+ this.title = pattern.title;
105
+ this.pattern = pattern;
106
+ });
107
+ }
108
+ _copyAxesToFilterValues() {
109
+ this.filters && this.filters.forEach(f => this.values[f.name] = this.axes[f.name]);
110
+ }
111
+ reset() {
112
+ this._populate();
113
+ this._listen().then(() => {
114
+ this.pattern = null;
115
+ this.title = null;
116
+ });
117
+ }
118
+ refresh() {
119
+ this.axes = Object.assign({}, this.axes);
120
+ }
121
+ }
122
+ CubeMatrixBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: CubeMatrixBase, deps: [{ token: i1.CubeService }, { token: i2.DatasourceService }, { token: i3.SessionService }], target: i0.ɵɵFactoryTarget.Directive });
123
+ CubeMatrixBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.7", type: CubeMatrixBase, viewQueries: [{ propertyName: "table", first: true, predicate: CubeMatrixTableComponent, descendants: true, static: true }], ngImport: i0 });
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: CubeMatrixBase, decorators: [{
125
+ type: Directive
126
+ }], ctorParameters: function () { return [{ type: i1.CubeService }, { type: i2.DatasourceService }, { type: i3.SessionService }]; }, propDecorators: { table: [{
127
+ type: ViewChild,
128
+ args: [CubeMatrixTableComponent, { static: true }]
129
+ }] } });
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L21hdHJpeC5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBRzdELE1BQU0sT0FBZ0IsY0FBYztJQW9FbEMsWUFDWSxRQUFxQixFQUN2QixHQUFzQixFQUNwQixRQUF3QjtRQUZ4QixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3ZCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBakQzQixZQUFPLEdBQW9FLEVBQUUsQ0FBQztRQUN2RixjQUFjO1FBQ0wsV0FBTSxHQUFrRSxFQUFFLENBQUM7SUErQzVDLENBQUM7SUFsRXpDLElBQVcsWUFBWSxDQUFDLEtBQWM7UUFDcEMsSUFBSSxDQUFDLGFBQWEscUJBQVEsS0FBSyxDQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBVyxJQUFJLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxJQUFJLElB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QUksbUNBQVEsSUFBSSxHQUFLLElBQUksQ0FBQyxNQUFNLENBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUkscUJBQVEsSUFBSSxDQUFDLElBQUksQ0FBRSxDQUFDO0lBQy9CLENBQUM7OzJHQWhKbUIsY0FBYzsrRkFBZCxjQUFjLGlFQUN2Qix3QkFBd0I7MkZBRGYsY0FBYztrQkFEbkMsU0FBUzsrSkFFK0MsS0FBSztzQkFBM0QsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZGF0YXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQUNDT1VOVF9ERUxJTUlURVIsIEN1YmVTZXJ2aWNlLCBQYXR0ZXJuIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZSwgQ3ViZUF4aXMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEN1YmVNYXRyaXhUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3ViZU1hdHJpeEJhc2Uge1xyXG4gIEBWaWV3Q2hpbGQoQ3ViZU1hdHJpeFRhYmxlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogQ3ViZU1hdHJpeFRhYmxlQ29tcG9uZW50O1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfYXhlczogQXhlc01hcDtcclxuICBwcml2YXRlIF9vcmlnaW5hbEF4ZXM6IEF4ZXNNYXA7XHJcbiAgcHVibGljIHNldCBvcmlnaW5hbEF4ZXModmFsdWU6IEF4ZXNNYXApIHtcclxuICAgIHRoaXMuX29yaWdpbmFsQXhlcyA9IHsgLi4udmFsdWUgfTtcclxuICB9XHJcbiAgcHVibGljIGdldCBvcmlnaW5hbEF4ZXMoKTogQXhlc01hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3JpZ2luYWxBeGVzO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IGF4ZXMoKTogQXhlc01hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXhlcztcclxuICB9XHJcbiAgcHVibGljIHNldCBheGVzKHZhbHVlOiBBeGVzTWFwKSB7XHJcbiAgICB0aGlzLl9heGVzID0gdmFsdWU7XHJcbiAgICB0aGlzLmZpbHRlcnMgJiYgdGhpcy5maWx0ZXJzLmZvckVhY2goZiA9PlxyXG4gICAgICB0aGlzLnZhbHVlc1tmLm5hbWVdID0gdmFsdWVbZi5uYW1lXVxyXG4gICAgKTtcclxuICB9XHJcbiAgdGl0bGU6IHN0cmluZztcclxuXHJcbiAgcmVhZG9ubHkgc291cmNlczogeyBbYXhpczogc3RyaW5nXTogT2JzZXJ2YWJsZTx7IGtleTogc3RyaW5nOyB2YWx1ZTogYW55OyB9W10+OyB9ID0ge307XHJcbiAgLyoqIGZpbHRlcnMgKi9cclxuICByZWFkb25seSB2YWx1ZXM6IHsgW2F4aXM6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47IH0gPSB7fTtcclxuICBmaWx0ZXJzOiBDdWJlQXhpc1tdO1xyXG4gIHBhdHRlcm5zOiBQYXR0ZXJuW107XHJcbiAgcGF0dGVybjogUGF0dGVybjtcclxuICBpbmRpY2VzPzogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgeEF4aXM6IHN0cmluZztcclxuICBzZXJpZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2N1YmU6IHN0cmluZztcclxuICBwdWJsaWMgZ2V0IGN1YmUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9jdWJlO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGN1YmUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IHZhbHVlKTtcclxuICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgICAgdmFsdWUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ubmFtZTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NlcnZpY2UucGF0dGVybnModmFsdWUpLlxyXG4gICAgICBzdWJzY3JpYmUocCA9PlxyXG4gICAgICAgIHRoaXMucGF0dGVybnMgPSBwKTtcclxuICAgIHRoaXMuX2N1YmUgPSB2YWx1ZTtcclxuICB9XHJcbiAgc3VtPzoge1xyXG4gICAgeEF4aXM/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICBzZXJpZT86IHN0cmluZyB8IG51bWJlcjtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgfTtcclxuICAvKiogb25lIG9yIG1vcmUgYXhpcyAqL1xyXG4gIHByb3RlY3RlZCBhZ2dyZWdhdGlvbj86IHN0cmluZ1tdIHwgc3RyaW5nO1xyXG4gIHByaXZhdGUgX3NlbGVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgcHJvdGVjdGVkIGdldCBzZWxlY3Rpb24oKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbjtcclxuICB9XHJcbiAgcHJvdGVjdGVkIHNldCBzZWxlY3Rpb24odmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICAvKiogb25lIG9yIG1vcmUgYXhpcyAqL1xyXG4gICAgdGhpcy5maWx0ZXJzID0gdGhpcy5jb25maWd1cmF0aW9uLmF4ZXMuZmlsdGVyKGEgPT4gaXNBcnJheSh2YWx1ZSkgP1xyXG4gICAgICB2YWx1ZS5pbmRleE9mKGEubmFtZSkgPiAtMSA6XHJcbiAgICAgIGEubmFtZSA9PT0gdmFsdWUpO1xyXG5cclxuICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKGYgPT4gdGhpcy5zb3VyY2VzW2YubmFtZV0gPSB0aGlzLl9kcy5hbGwoZi5kYXRhVHlwZSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zZWxlY3Rpb24gPSB2YWx1ZTtcclxuICB9XHJcbiAgY29uZmlndXJhdGlvbjogQ3ViZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBfc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kczogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlKSB7IH1cclxuICBwcml2YXRlIF9wb3B1bGF0ZSgpIHtcclxuICAgIGNvbnN0IGF4ZXMgPSB7IC4uLnRoaXMuX29yaWdpbmFsQXhlcyB9O1xyXG4gICAgaWYgKHRoaXMuYWdncmVnYXRpb24pXHJcbiAgICAgIChpc0FycmF5KHRoaXMuYWdncmVnYXRpb24pID8gdGhpcy5hZ2dyZWdhdGlvbiA6IFt0aGlzLmFnZ3JlZ2F0aW9uIGFzIHN0cmluZ10pLlxyXG4gICAgICAgIGZvckVhY2goZyA9PiB7XHJcbiAgICAgICAgICBpZiAoYXhlc1tnXSlcclxuICAgICAgICAgICAgZGVsZXRlIGF4ZXNbZ107XHJcbiAgICAgICAgfSk7XHJcbiAgICB0aGlzLmF4ZXMgPSBheGVzO1xyXG4gICAgdGhpcy5fbGlzdGVuKCkudGhlbigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbWJpbmF0aW9uID0gdGhpcy5fY29tYmluZShheGVzKTtcclxuICAgICAgdGhpcy50aXRsZSA9IGNvbWJpbmF0aW9uLmpvaW4oQUNDT1VOVF9ERUxJTUlURVIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGF4ZXNcclxuICAgKi9cclxuICBwcml2YXRlIF9jb21iaW5lKGF4ZXM6IEF4ZXNNYXApOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24uYXhlcy5cclxuICAgICAgZmlsdGVyKGEgPT4gYS5jb21iaW5hdGlvbikuXHJcbiAgICAgIG1hcChhID0+IGF4ZXNbYS5uYW1lXSBhcyBzdHJpbmcgfCBudW1iZXIpO1xyXG4gIH1cclxuICAvKipcclxuICpcclxuICogQHBhcmFtIHZhbHVlXHJcbiAqL1xyXG4gIGZpbHRlcihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIHRpdGxlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGF4ZXMgPSB7IC4uLnRoaXMuYXhlcyB9O1xyXG4gICAgYXhlc1tuYW1lXSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vbkZpbHRlcihheGVzKTtcclxuICAgIHRoaXMuX2xpc3RlbigpLnRoZW4oKCkgPT5cclxuICAgICAgdGhpcy52YWx1ZXNbbmFtZV0gPSB2YWx1ZVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbGlzdGVuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGUubG9hZGluZ0NoYW5nZS5waXBlKGZpbHRlcihvayA9PiAhb2spLCBmaXJzdCgpKS50b1Byb21pc2UoKVxyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXIoYXhlczogQXhlc01hcCkge1xyXG4gICAgdGhpcy5heGVzID0gYXhlcztcclxuICB9XHJcbiAgLyoqXHJcbiAgICAqXHJcbiAgICAqIEBwYXJhbSBwYXR0ZXJuXHJcbiAgICAqL1xyXG4gIGFnZ3JlZ2F0ZShwYXR0ZXJuOiBQYXR0ZXJuKSB7XHJcbiAgICBjb25zdCBheGVzID0geyAuLi5wYXR0ZXJuLmF4ZXMgfTtcclxuICAgIHRoaXMuX3NlcnZpY2UuYmFzZSh0aGlzLmN1YmUsIGF4ZXMsIHRoaXMub3JpZ2luYWxBeGVzKTtcclxuICAgIHRoaXMuYXhlcyA9IHsgLi4uYXhlcywgLi4udGhpcy52YWx1ZXMgfTtcclxuICAgIHRoaXMuX2xpc3RlbigpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLnRpdGxlID0gcGF0dGVybi50aXRsZTtcclxuICAgICAgdGhpcy5wYXR0ZXJuID0gcGF0dGVybjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29weUF4ZXNUb0ZpbHRlclZhbHVlcygpIHtcclxuICAgIHRoaXMuZmlsdGVycyAmJiB0aGlzLmZpbHRlcnMuZm9yRWFjaChmID0+XHJcbiAgICAgIHRoaXMudmFsdWVzW2YubmFtZV0gPSB0aGlzLmF4ZXNbZi5uYW1lXVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5fcG9wdWxhdGUoKTtcclxuICAgIHRoaXMuX2xpc3RlbigpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhdHRlcm4gPSBudWxsO1xyXG4gICAgICB0aGlzLnRpdGxlID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMuYXhlcyA9IHsgLi4udGhpcy5heGVzIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { Component, Inject, ViewChild } from '@angular/core';
2
+ import { CubeMatrixTableComponent } from './table.component';
3
+ import { POPUP_DATA } from '../../core/popup/popup.component';
4
+ import { PopupRef } from "../../core/popup/popup-ref";
5
+ import { filter, first } from 'rxjs';
6
+ import { CubeMatrixBase } from './matrix.base';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../cube/cube.service";
9
+ import * as i2 from "../../core/datasource.service";
10
+ import * as i3 from "../../core/session.service";
11
+ import * as i4 from "../../core/prompt.service";
12
+ import * as i5 from "@angular/material/progress-bar";
13
+ import * as i6 from "@angular/material/button";
14
+ import * as i7 from "@angular/material/icon";
15
+ import * as i8 from "@angular/material/menu";
16
+ import * as i9 from "./table.component";
17
+ import * as i10 from "@angular/common";
18
+ import * as i11 from "@angular/material/tooltip";
19
+ import * as i12 from "../../core/pipes/translate.pipe";
20
+ import * as i13 from "../../core/popup/popup-ref";
21
+ /** cube matrix component*/
22
+ export class CubeMatrixComponent extends CubeMatrixBase {
23
+ /** filters */
24
+ /** cube-info ctor */
25
+ constructor(_ref, data, service, ds, session, _sb) {
26
+ super(service, ds, session);
27
+ this._ref = _ref;
28
+ this._sb = _sb;
29
+ this.preloading = true;
30
+ if (!data.options)
31
+ throw 'no data options';
32
+ const { axes: base, options: { indices, xAxis, serie, filters, cube, sum } } = data;
33
+ this.cube = cube;
34
+ this.serie = serie;
35
+ this.xAxis = xAxis;
36
+ this.sum = sum;
37
+ this.indices = indices;
38
+ this.selection = filters;
39
+ this.axes = base;
40
+ this.originalAxes = base;
41
+ }
42
+ ngOnInit() {
43
+ this.table.loadingChange.pipe(filter(ok => !ok), first()).subscribe(() => this.preloading = false, (e) => {
44
+ if (e.status === 401)
45
+ this._ref.close();
46
+ this._sb.error(e.status === 401 ? 'Unauthorized' : null);
47
+ });
48
+ }
49
+ }
50
+ CubeMatrixComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: CubeMatrixComponent, deps: [{ token: PopupRef }, { token: POPUP_DATA }, { token: i1.CubeService }, { token: i2.DatasourceService }, { token: i3.SessionService }, { token: i4.PromptService }], target: i0.ɵɵFactoryTarget.Component });
51
+ CubeMatrixComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: CubeMatrixComponent, selector: "ng-component", viewQueries: [{ propertyName: "table", first: true, predicate: CubeMatrixTableComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<div class=\"container\">\r\n <div class=\"row\" *ngIf=\"!preloading\">\r\n <span class=\"divider\"></span>\r\n <!-- title -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [matTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n </div>\r\n <bizdoc-cube-matrix-table [cube]=\"cube\" [xAxis]=\"xAxis\" [serie]=\"serie\" [indices]=\"indices\" [sum]=sum [interactive]=\"false\"\r\n [axes]=\"axes\" [(loading)]=\"loading\"></bizdoc-cube-matrix-table>\r\n</div>\r\n", styles: [".container{padding:8px}\n"], components: [{ type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i9.CubeMatrixTableComponent, selector: "bizdoc-cube-matrix-table", inputs: ["cube", "xAxis", "serie", "indices", "sum", "axes", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], pipes: { "translate": i12.TranslatePipe, "async": i10.AsyncPipe } });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: CubeMatrixComponent, decorators: [{
53
+ type: Component,
54
+ args: [{
55
+ templateUrl: './matrix.component.html',
56
+ styleUrls: ['./matrix.component.scss']
57
+ }]
58
+ }], ctorParameters: function () { return [{ type: i13.PopupRef, decorators: [{
59
+ type: Inject,
60
+ args: [PopupRef]
61
+ }] }, { type: undefined, decorators: [{
62
+ type: Inject,
63
+ args: [POPUP_DATA]
64
+ }] }, { type: i1.CubeService }, { type: i2.DatasourceService }, { type: i3.SessionService }, { type: i4.PromptService }]; }, propDecorators: { table: [{
65
+ type: ViewChild,
66
+ args: [CubeMatrixTableComponent, { static: true }]
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9tYXRyaXgvbWF0cml4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY3ViZS9tYXRyaXgvbWF0cml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9yRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUUvQywyQkFBMkI7QUFLM0IsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFHckQsY0FBYztJQUVkLHFCQUFxQjtJQUNyQixZQUFzQyxJQUFjLEVBQzlCLElBQWMsRUFDbEMsT0FBb0IsRUFDcEIsRUFBcUIsRUFDckIsT0FBdUIsRUFDZixHQUFrQjtRQUMxQixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQU5RLFNBQUksR0FBSixJQUFJLENBQVU7UUFLMUMsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQVQ1QixlQUFVLEdBQVksSUFBSSxDQUFDO1FBV3pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNmLE1BQU0saUJBQWlCLENBQUM7UUFDMUIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNwRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ3ZFLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBb0IsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHO2dCQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0hBaENVLG1CQUFtQixrQkFNVixRQUFRLGFBQ2xCLFVBQVU7b0dBUFQsbUJBQW1CLDJGQUNuQix3QkFBd0IscUZDbkJyQyw2L0NBMkJBOzJGRFRhLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUseUJBQXlCO29CQUN0QyxTQUFTLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDdkM7OzBCQU9jLE1BQU07MkJBQUMsUUFBUTs7MEJBQ3pCLE1BQU07MkJBQUMsVUFBVTsrSkFObUMsS0FBSztzQkFBM0QsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY3ViZS9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdWJlRGF0YSB9IGZyb20gJy4uL2N1YmUtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1YmVNYXRyaXhUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUE9QVVBfREFUQSB9IGZyb20gJy4uLy4uL2NvcmUvcG9wdXAvcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9wdXBSZWYgfSBmcm9tIFwiLi4vLi4vY29yZS9wb3B1cC9wb3B1cC1yZWZcIjtcclxuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDdWJlTWF0cml4QmFzZSB9IGZyb20gJy4vbWF0cml4LmJhc2UnO1xyXG5cclxuLyoqIGN1YmUgbWF0cml4IGNvbXBvbmVudCovXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRyaXguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hdHJpeC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlTWF0cml4Q29tcG9uZW50IGV4dGVuZHMgQ3ViZU1hdHJpeEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoQ3ViZU1hdHJpeFRhYmxlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogQ3ViZU1hdHJpeFRhYmxlQ29tcG9uZW50O1xyXG4gIHByZWxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKiBmaWx0ZXJzICovXHJcblxyXG4gIC8qKiBjdWJlLWluZm8gY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoUG9wdXBSZWYpIHByaXZhdGUgX3JlZjogUG9wdXBSZWYsXHJcbiAgICBASW5qZWN0KFBPUFVQX0RBVEEpIGRhdGE6IEN1YmVEYXRhLFxyXG4gICAgc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBkczogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihzZXJ2aWNlLCBkcywgc2Vzc2lvbik7XHJcbiAgICBpZiAoIWRhdGEub3B0aW9ucylcclxuICAgICAgdGhyb3cgJ25vIGRhdGEgb3B0aW9ucyc7XHJcbiAgICBjb25zdCB7IGF4ZXM6IGJhc2UsIG9wdGlvbnM6IHsgaW5kaWNlcywgeEF4aXMsIHNlcmllLCBmaWx0ZXJzLCBjdWJlLCBzdW0gfSB9ID0gZGF0YTtcclxuICAgIHRoaXMuY3ViZSA9IGN1YmU7XHJcbiAgICB0aGlzLnNlcmllID0gc2VyaWU7XHJcbiAgICB0aGlzLnhBeGlzID0geEF4aXM7XHJcbiAgICB0aGlzLnN1bSA9IHN1bTtcclxuICAgIHRoaXMuaW5kaWNlcyA9IGluZGljZXM7XHJcbiAgICB0aGlzLnNlbGVjdGlvbiA9IGZpbHRlcnM7XHJcbiAgICB0aGlzLmF4ZXMgPSBiYXNlO1xyXG4gICAgdGhpcy5vcmlnaW5hbEF4ZXMgPSBiYXNlO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGUubG9hZGluZ0NoYW5nZS5waXBlKGZpbHRlcihvayA9PiAhb2spLCBmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgdGhpcy5wcmVsb2FkaW5nID0gZmFsc2UsIChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlLnN0YXR1cyA9PT0gNDAxKVxyXG4gICAgICAgICAgdGhpcy5fcmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtzdHlsZS52aXNpYmlsaXR5XT1cImxvYWRpbmcgPyAndmlzaWJsZSc6J2hpZGRlbidcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhcHJlbG9hZGluZ1wiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgPCEtLSB0aXRsZSAtLT5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJvcHRpb25zXCIgKm5nSWY9XCJwYXR0ZXJucyAmJiBwYXR0ZXJucy5sZW5ndGhcIj48bWF0LWljb24gW2NsYXNzLmZpbGxlZF09XCJwYXR0ZXJuXCI+ZmlsdGVyX2FsdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8bWF0LW1lbnUgI29wdGlvbnMgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICAgIDwhLS0gcGF0dGVybnMgLS0+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgcCBvZiBwYXR0ZXJuc1wiIChjbGljayk9XCJhZ2dyZWdhdGUocClcIj57e3AudGl0bGV9fTwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZXNldCgpXCIgW2Rpc2FibGVkXT1cIiFwYXR0ZXJuXCIgW21hdFRvb2x0aXBdPVwiJ0NsZWFyJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8bWF0LWljb24+Y2xlYXJfYWxsPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPCEtLSBmaWx0ZXJzIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZiBvZiBmaWx0ZXJzXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZm1lbnVcIj57e3ZhbHVlc1tmLm5hbWVdfX0gPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDxtYXQtbWVudSAjZm1lbnUgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBrdiBvZiBzb3VyY2VzW2YubmFtZV0gfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyKGYubmFtZSwga3Yua2V5LCBrdi52YWx1ZSlcIj5cclxuICAgICAgICAgIHt7a3YudmFsdWV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1tZW51PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGJpemRvYy1jdWJlLW1hdHJpeC10YWJsZSBbY3ViZV09XCJjdWJlXCIgW3hBeGlzXT1cInhBeGlzXCIgW3NlcmllXT1cInNlcmllXCIgW2luZGljZXNdPVwiaW5kaWNlc1wiIFtzdW1dPXN1bSBbaW50ZXJhY3RpdmVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F4ZXNdPVwiYXhlc1wiIFsobG9hZGluZyldPVwibG9hZGluZ1wiPjwvYml6ZG9jLWN1YmUtbWF0cml4LXRhYmxlPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,62 @@
1
+ import { Component } from '@angular/core';
2
+ import { CubeMatrixBase } from './matrix.base';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../core/window-title.service";
5
+ import * as i2 from "@angular/router";
6
+ import * as i3 from "../cube.service";
7
+ import * as i4 from "../../core/datasource.service";
8
+ import * as i5 from "../../core/session.service";
9
+ import * as i6 from "@angular/material/toolbar";
10
+ import * as i7 from "@angular/material/button";
11
+ import * as i8 from "@angular/material/icon";
12
+ import * as i9 from "@angular/material/menu";
13
+ import * as i10 from "@angular/material/progress-bar";
14
+ import * as i11 from "./table.component";
15
+ import * as i12 from "@angular/material/tooltip";
16
+ import * as i13 from "../../core/animated-icon/animated-icon.directive";
17
+ import * as i14 from "@angular/common";
18
+ import * as i15 from "../../core/pipes/translate.pipe";
19
+ export class CubeMatrixMobileComponent extends CubeMatrixBase {
20
+ /** cube-info ctor */
21
+ constructor(_title, _route, _router, service, ds, session) {
22
+ super(service, ds, session);
23
+ this._title = _title;
24
+ this._route = _route;
25
+ this._router = _router;
26
+ }
27
+ ngOnInit() {
28
+ this._route.params.subscribe(p => {
29
+ this.cube = p['id'];
30
+ this.xAxis = p['xAxis'];
31
+ this.serie = p['serie'];
32
+ this._title.set(this.configuration.title);
33
+ });
34
+ this._route.data.subscribe(d => {
35
+ this.indices = d['indices'];
36
+ /** */
37
+ this.aggregation = d['aggregate'];
38
+ this.sum = d['sum'];
39
+ this.selection = d['filters'];
40
+ });
41
+ this._route.queryParams.subscribe(p => this.originalAxes =
42
+ this.axes = p);
43
+ }
44
+ onFilter(axes) {
45
+ this._router.navigate([], { queryParams: axes });
46
+ }
47
+ explore(axes) {
48
+ this._router.navigate(['cube', this.cube, 'explore'], {
49
+ queryParams: axes
50
+ });
51
+ }
52
+ }
53
+ CubeMatrixMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: CubeMatrixMobileComponent, deps: [{ token: i1.WindowTitleService }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i3.CubeService }, { token: i4.DatasourceService }, { token: i5.SessionService }], target: i0.ɵɵFactoryTarget.Component });
54
+ CubeMatrixMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: CubeMatrixMobileComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [matTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [matTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n</mat-toolbar>\r\n<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix-table [cube]=\"cube\" [xAxis]=\"xAxis\" [serie]=\"serie\" [indices]=\"indices\" [sum]=sum\r\n [axes]=\"axes\"\r\n [(loading)]=\"loading\" (explore)='explore($event)'></bizdoc-cube-matrix-table>\r\n", styles: [":host{min-width:450px}\n"], components: [{ type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i11.CubeMatrixTableComponent, selector: "bizdoc-cube-matrix-table", inputs: ["cube", "xAxis", "serie", "indices", "sum", "axes", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i13.MatIconAnimate, selector: "[matAnimate]" }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i15.TranslatePipe, "async": i14.AsyncPipe } });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: CubeMatrixMobileComponent, decorators: [{
56
+ type: Component,
57
+ args: [{
58
+ templateUrl: './matrix.mobile.component.html',
59
+ styleUrls: ['./matrix.pane.component.scss']
60
+ }]
61
+ }], ctorParameters: function () { return [{ type: i1.WindowTitleService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.CubeService }, { type: i4.DatasourceService }, { type: i5.SessionService }]; } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4Lm1vYmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L21hdHJpeC5tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC9tYXRyaXgubW9iaWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNL0MsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGNBQWM7SUFFM0QscUJBQXFCO0lBQ3JCLFlBQ1UsTUFBMEIsRUFDMUIsTUFBc0IsRUFDdEIsT0FBZSxFQUN2QixPQUFvQixFQUNwQixFQUFxQixFQUNyQixPQUF1QjtRQUV2QixLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQVBwQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBTXpCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUNBLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUIsTUFBTTtZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3RDLElBQUksQ0FBQyxZQUFZO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWE7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFhO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDcEQsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO0lBQ0gsQ0FBQzs7c0hBMUNRLHlCQUF5QjswR0FBekIseUJBQXlCLDJFQ2J0Qywra0RBMEJBOzJGRGJhLHlCQUF5QjtrQkFKckMsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztpQkFDNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRhc291cmNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdWJlU2VydmljZSB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEF4ZXNNYXAgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFdpbmRvd1RpdGxlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvd2luZG93LXRpdGxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdWJlTWF0cml4QmFzZSB9IGZyb20gJy4vbWF0cml4LmJhc2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hdHJpeC5tb2JpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hdHJpeC5wYW5lLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1YmVNYXRyaXhNb2JpbGVDb21wb25lbnQgZXh0ZW5kcyBDdWJlTWF0cml4QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIC8qKiBjdWJlLWluZm8gY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdGl0bGU6IFdpbmRvd1RpdGxlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG4gICAgc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBkczogRGF0YXNvdXJjZVNlcnZpY2UsXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSkge1xyXG5cclxuICAgIHN1cGVyKHNlcnZpY2UsIGRzLCBzZXNzaW9uKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcm91dGUucGFyYW1zLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgdGhpcy5jdWJlID0gcFsnaWQnXTtcclxuICAgICAgdGhpcy54QXhpcyA9IHBbJ3hBeGlzJ107XHJcbiAgICAgIHRoaXMuc2VyaWUgPSBwWydzZXJpZSddO1xyXG4gICAgICB0aGlzLl90aXRsZS5zZXQodGhpcy5jb25maWd1cmF0aW9uLnRpdGxlKTtcclxuICAgIH1cclxuICAgICk7XHJcbiAgICB0aGlzLl9yb3V0ZS5kYXRhLnN1YnNjcmliZShkID0+IHtcclxuICAgICAgdGhpcy5pbmRpY2VzID0gZFsnaW5kaWNlcyddO1xyXG4gICAgICAvKiogKi9cclxuICAgICAgdGhpcy5hZ2dyZWdhdGlvbiA9IGRbJ2FnZ3JlZ2F0ZSddO1xyXG4gICAgICB0aGlzLnN1bSA9IGRbJ3N1bSddO1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IGRbJ2ZpbHRlcnMnXTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHAgPT4gXHJcbiAgICB0aGlzLm9yaWdpbmFsQXhlcyA9IFxyXG4gICAgICB0aGlzLmF4ZXMgPSBwKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyKGF4ZXM6IEF4ZXNNYXApIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogYXhlcyB9KTtcclxuICB9XHJcblxyXG4gIGV4cGxvcmUoYXhlczogQXhlc01hcCkge1xyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnY3ViZScsIHRoaXMuY3ViZSwgJ2V4cGxvcmUnXSwge1xyXG4gICAgICBxdWVyeVBhcmFtczogYXhlc1xyXG4gICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwibmF2LXRvb2xiYXJcIj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidGFibGUucmVmcmVzaCgpXCIgW21hdFRvb2x0aXBdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIG1hdEFuaW1hdGU9XCJyb3RhdGVcIj5hdXRvcmVuZXc8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc1wiICpuZ0lmPVwicGF0dGVybnMgJiYgcGF0dGVybnMubGVuZ3RoXCI+PG1hdC1pY29uIFtjbGFzcy5maWxsZWRdPVwicGF0dGVyblwiPmZpbHRlcl9hbHQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjb3B0aW9ucyB4UG9zaXRpb249XCJiZWZvcmVcIj5cclxuICAgIDwhLS0gcGF0dGVybnMgLS0+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHAgb2YgcGF0dGVybnNcIiAoY2xpY2spPVwiYWdncmVnYXRlKHApXCI+e3twLnRpdGxlfX08L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZXNldCgpXCIgW2Rpc2FibGVkXT1cIiFwYXR0ZXJuXCIgW21hdFRvb2x0aXBdPVwiJ0NsZWFyJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgPG1hdC1pY29uPmNsZWFyX2FsbDwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPCEtLSBmaWx0ZXJzIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGYgb2YgZmlsdGVyc1wiPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJmbWVudVwiPnt7dmFsdWVzW2YubmFtZV19fSA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxtYXQtbWVudSAjZm1lbnUgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQga3Ygb2Ygc291cmNlc1tmLm5hbWVdIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXIoZi5uYW1lLCBrdi5rZXksIGt2LnZhbHVlKVwiPlxyXG4gICAgICAgIHt7a3YudmFsdWV9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPGJpemRvYy1jdWJlLW1hdHJpeC10YWJsZSBbY3ViZV09XCJjdWJlXCIgW3hBeGlzXT1cInhBeGlzXCIgW3NlcmllXT1cInNlcmllXCIgW2luZGljZXNdPVwiaW5kaWNlc1wiIFtzdW1dPXN1bVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXhlc109XCJheGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2FkaW5nKV09XCJsb2FkaW5nXCIgKGV4cGxvcmUpPSdleHBsb3JlKCRldmVudCknPjwvYml6ZG9jLWN1YmUtbWF0cml4LXRhYmxlPlxyXG4iXX0=
@@ -0,0 +1,70 @@
1
+ import { Component } from '@angular/core';
2
+ import { CubeMatrixBase } from './matrix.base';
3
+ import { OpenPolicy } from '../../core/configuration';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../core/slots/pane-ref";
6
+ import * as i2 from "../../core/slots/router.service";
7
+ import * as i3 from "../cube.service";
8
+ import * as i4 from "../../core/datasource.service";
9
+ import * as i5 from "../../core/session.service";
10
+ import * as i6 from "@angular/material/toolbar";
11
+ import * as i7 from "@angular/material/button";
12
+ import * as i8 from "@angular/material/icon";
13
+ import * as i9 from "@angular/material/menu";
14
+ import * as i10 from "@angular/material/progress-bar";
15
+ import * as i11 from "./table.component";
16
+ import * as i12 from "@angular/material/tooltip";
17
+ import * as i13 from "../../core/animated-icon/animated-icon.directive";
18
+ import * as i14 from "@angular/common";
19
+ import * as i15 from "../../core/pipes/translate.pipe";
20
+ export class CubeMatrixPaneComponent extends CubeMatrixBase {
21
+ /** cube-info ctor */
22
+ constructor(_slot, _router, service, ds, session) {
23
+ super(service, ds, session);
24
+ this._slot = _slot;
25
+ this._router = _router;
26
+ }
27
+ ngOnInit() {
28
+ this._slot.paramsChange.subscribe(p => {
29
+ this.cube = p['cube'];
30
+ this._slot.title = this.configuration.title;
31
+ if (this.configuration.icon)
32
+ this._slot.icon = this.configuration.icon;
33
+ this.xAxis = p['xAxis'];
34
+ this.serie = p['serie'];
35
+ });
36
+ this._slot.dataChange.subscribe(d => {
37
+ this.indices = d['indices'];
38
+ /** */
39
+ this.aggregation = d['aggregate'];
40
+ this.sum = d['sum'];
41
+ this.selection = d['filters'];
42
+ });
43
+ this._slot.queryParamsChange.subscribe(p => this.originalAxes =
44
+ this.axes = p);
45
+ }
46
+ onFilter(queryParams) {
47
+ this._router.navigate([], {
48
+ queryParams, policy: this._slot.tab ?
49
+ OpenPolicy.Tab : OpenPolicy.Replace
50
+ });
51
+ }
52
+ explore(queryParams) {
53
+ this._router.navigate(['cube', this.cube, 'explore'], {
54
+ queryParams
55
+ });
56
+ }
57
+ }
58
+ CubeMatrixPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: CubeMatrixPaneComponent, deps: [{ token: i1.PaneRef }, { token: i2.PanesRouter }, { token: i3.CubeService }, { token: i4.DatasourceService }, { token: i5.SessionService }], target: i0.ɵɵFactoryTarget.Component });
59
+ CubeMatrixPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: CubeMatrixPaneComponent, selector: "ng-component", host: { classAttribute: "pane" }, usesInheritance: true, ngImport: i0, template: "<mat-toolbar class=\"nav-toolbar\">\r\n <button mat-icon-button (click)=\"table.refresh()\" [matTooltip]=\"'Refresh' | translate\"><mat-icon matAnimate=\"rotate\">autorenew</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"options\" *ngIf=\"patterns && patterns.length\"><mat-icon [class.filled]=\"pattern\">filter_alt</mat-icon></button>\r\n <mat-menu #options xPosition=\"before\">\r\n <!-- patterns -->\r\n <button mat-menu-item *ngFor=\"let p of patterns\" (click)=\"aggregate(p)\">{{p.title}}</button>\r\n </mat-menu>\r\n <button mat-icon-button (click)=\"reset()\" [disabled]=\"!pattern\" [matTooltip]=\"'Clear' | translate\">\r\n <mat-icon>clear_all</mat-icon>\r\n </button>\r\n <!-- filters -->\r\n <ng-container *ngFor=\"let f of filters\">\r\n <button mat-button [matMenuTriggerFor]=\"fmenu\">{{values[f.name]}} <mat-icon>arrow_drop_down</mat-icon></button>\r\n <mat-menu #fmenu xPosition=\"before\">\r\n <button mat-menu-item *ngFor=\"let kv of sources[f.name] | async\"\r\n (click)=\"filter(f.name, kv.key, kv.value)\">\r\n {{kv.value}}\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n</mat-toolbar>\r\n<mat-progress-bar mode=\"indeterminate\" [style.visibility]=\"loading ? 'visible':'hidden'\"></mat-progress-bar>\r\n<bizdoc-cube-matrix-table [cube]=\"cube\" [xAxis]=\"xAxis\" [serie]=\"serie\" [indices]=\"indices\" [sum]=sum\r\n [axes]=\"axes\"\r\n [(loading)]=\"loading\" (explore)='explore($event)'></bizdoc-cube-matrix-table>\r\n", styles: [":host{min-width:450px}\n"], components: [{ type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i11.CubeMatrixTableComponent, selector: "bizdoc-cube-matrix-table", inputs: ["cube", "xAxis", "serie", "indices", "sum", "axes", "loading", "interactive"], outputs: ["explore", "loadingChange"] }], directives: [{ type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i13.MatIconAnimate, selector: "[matAnimate]" }, { type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i15.TranslatePipe, "async": i14.AsyncPipe } });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: CubeMatrixPaneComponent, decorators: [{
61
+ type: Component,
62
+ args: [{
63
+ templateUrl: './matrix.pane.component.html',
64
+ styleUrls: ['./matrix.pane.component.scss'],
65
+ host: {
66
+ class: 'pane'
67
+ }
68
+ }]
69
+ }], ctorParameters: function () { return [{ type: i1.PaneRef }, { type: i2.PanesRouter }, { type: i3.CubeService }, { type: i4.DatasourceService }, { type: i5.SessionService }]; } });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LnBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC9tYXRyaXgucGFuZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L21hdHJpeC5wYW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3RELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxjQUFjO0lBQ3pELHFCQUFxQjtJQUNyQixZQUNVLEtBQXVDLEVBQ3ZDLE9BQW9CLEVBQzVCLE9BQW9CLEVBQ3BCLEVBQXFCLEVBQ3JCLE9BQXVCO1FBQ3ZCLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTHBCLFVBQUssR0FBTCxLQUFLLENBQWtDO1FBQ3ZDLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFLOUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDNUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUk7Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdkUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUIsTUFBTTtZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLFlBQVk7WUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUNELFFBQVEsQ0FBQyxXQUFvQjtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDeEIsV0FBVyxFQUFFLE1BQU0sRUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZCxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztTQUN4QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxDQUFDLFdBQW9CO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDcEQsV0FBVztTQUNaLENBQUMsQ0FBQztJQUVMLENBQUM7O29IQTNDVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qiw2R0NqQnBDLCtrREEwQkE7MkZEVGEsdUJBQXVCO2tCQVBuQyxTQUFTO21CQUFDO29CQUNULFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO29CQUMzQyxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEN1YmVTZXJ2aWNlIH0gZnJvbSAnLi4vY3ViZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL3Nsb3RzL3JvdXRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gJy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBBeGVzTWFwIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBDdWJlTWF0cml4QmFzZSB9IGZyb20gJy4vbWF0cml4LmJhc2UnO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRyaXgucGFuZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWF0cml4LnBhbmUuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ3BhbmUnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZU1hdHJpeFBhbmVDb21wb25lbnQgZXh0ZW5kcyBDdWJlTWF0cml4QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLyoqIGN1YmUtaW5mbyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zbG90OiBQYW5lUmVmPEN1YmVNYXRyaXhQYW5lQ29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBzZXJ2aWNlOiBDdWJlU2VydmljZSxcclxuICAgIGRzOiBEYXRhc291cmNlU2VydmljZSxcclxuICAgIHNlc3Npb246IFNlc3Npb25TZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihzZXJ2aWNlLCBkcywgc2Vzc2lvbik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Nsb3QucGFyYW1zQ2hhbmdlLnN1YnNjcmliZShwID0+IHtcclxuICAgICAgdGhpcy5jdWJlID0gcFsnY3ViZSddO1xyXG4gICAgICB0aGlzLl9zbG90LnRpdGxlID0gdGhpcy5jb25maWd1cmF0aW9uLnRpdGxlO1xyXG4gICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmljb24pIHRoaXMuX3Nsb3QuaWNvbiA9IHRoaXMuY29uZmlndXJhdGlvbi5pY29uO1xyXG4gICAgICB0aGlzLnhBeGlzID0gcFsneEF4aXMnXTtcclxuICAgICAgdGhpcy5zZXJpZSA9IHBbJ3NlcmllJ107XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3Nsb3QuZGF0YUNoYW5nZS5zdWJzY3JpYmUoZCA9PiB7XHJcbiAgICAgIHRoaXMuaW5kaWNlcyA9IGRbJ2luZGljZXMnXTtcclxuICAgICAgLyoqICovXHJcbiAgICAgIHRoaXMuYWdncmVnYXRpb24gPSBkWydhZ2dyZWdhdGUnXTtcclxuICAgICAgdGhpcy5zdW0gPSBkWydzdW0nXTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24gPSBkWydmaWx0ZXJzJ107XHJcbiAgICB9KTtcclxuICAgIHRoaXMuX3Nsb3QucXVlcnlQYXJhbXNDaGFuZ2Uuc3Vic2NyaWJlKHAgPT5cclxuICAgIHRoaXMub3JpZ2luYWxBeGVzID0gXHJcbiAgICAgIHRoaXMuYXhlcyA9IHBcclxuICAgICk7XHJcbiAgfVxyXG4gIG9uRmlsdGVyKHF1ZXJ5UGFyYW1zOiBBeGVzTWFwKSB7XHJcbiAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHtcclxuICAgICAgcXVlcnlQYXJhbXMsIHBvbGljeTpcclxuICAgICAgICB0aGlzLl9zbG90LnRhYiA/XHJcbiAgICAgICAgICBPcGVuUG9saWN5LlRhYiA6IE9wZW5Qb2xpY3kuUmVwbGFjZVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGV4cGxvcmUocXVlcnlQYXJhbXM6IEF4ZXNNYXApIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ2N1YmUnLCB0aGlzLmN1YmUsICdleHBsb3JlJ10sIHtcclxuICAgICAgcXVlcnlQYXJhbXNcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwibmF2LXRvb2xiYXJcIj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidGFibGUucmVmcmVzaCgpXCIgW21hdFRvb2x0aXBdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCI+PG1hdC1pY29uIG1hdEFuaW1hdGU9XCJyb3RhdGVcIj5hdXRvcmVuZXc8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3B0aW9uc1wiICpuZ0lmPVwicGF0dGVybnMgJiYgcGF0dGVybnMubGVuZ3RoXCI+PG1hdC1pY29uIFtjbGFzcy5maWxsZWRdPVwicGF0dGVyblwiPmZpbHRlcl9hbHQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxtYXQtbWVudSAjb3B0aW9ucyB4UG9zaXRpb249XCJiZWZvcmVcIj5cclxuICAgIDwhLS0gcGF0dGVybnMgLS0+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHAgb2YgcGF0dGVybnNcIiAoY2xpY2spPVwiYWdncmVnYXRlKHApXCI+e3twLnRpdGxlfX08L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZXNldCgpXCIgW2Rpc2FibGVkXT1cIiFwYXR0ZXJuXCIgW21hdFRvb2x0aXBdPVwiJ0NsZWFyJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgPG1hdC1pY29uPmNsZWFyX2FsbDwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPCEtLSBmaWx0ZXJzIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGYgb2YgZmlsdGVyc1wiPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJmbWVudVwiPnt7dmFsdWVzW2YubmFtZV19fSA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDxtYXQtbWVudSAjZm1lbnUgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQga3Ygb2Ygc291cmNlc1tmLm5hbWVdIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXIoZi5uYW1lLCBrdi5rZXksIGt2LnZhbHVlKVwiPlxyXG4gICAgICAgIHt7a3YudmFsdWV9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPGJpemRvYy1jdWJlLW1hdHJpeC10YWJsZSBbY3ViZV09XCJjdWJlXCIgW3hBeGlzXT1cInhBeGlzXCIgW3NlcmllXT1cInNlcmllXCIgW2luZGljZXNdPVwiaW5kaWNlc1wiIFtzdW1dPXN1bVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXhlc109XCJheGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2FkaW5nKV09XCJsb2FkaW5nXCIgKGV4cGxvcmUpPSdleHBsb3JlKCRldmVudCknPjwvYml6ZG9jLWN1YmUtbWF0cml4LXRhYmxlPlxyXG4iXX0=