@c8y/ngx-components 1021.55.3 → 1021.56.5

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 (199) hide show
  1. package/context-dashboard/context-dashboard.model.d.ts +22 -22
  2. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  3. package/core/dashboard/dashboard.model.d.ts +3 -1
  4. package/core/dashboard/dashboard.model.d.ts.map +1 -1
  5. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +2 -0
  6. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -1
  7. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +0 -1
  8. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -1
  9. package/core/dashboard/widgets-dashboard-event.service.d.ts +0 -6
  10. package/core/dashboard/widgets-dashboard-event.service.d.ts.map +1 -1
  11. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +5 -3
  12. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  13. package/core/dynamic-component/dynamic-component.model.d.ts +15 -1
  14. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  15. package/core/login/login.component.d.ts.map +1 -1
  16. package/core/login/login.model.d.ts +8 -0
  17. package/core/login/login.model.d.ts.map +1 -1
  18. package/core/login/login.service.d.ts +2 -1
  19. package/core/login/login.service.d.ts.map +1 -1
  20. package/datapoint-selector/datapoint-selection.model.d.ts +18 -18
  21. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  22. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +5 -1
  23. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
  24. package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
  25. package/esm2022/core/dashboard/dashboard.model.mjs +1 -1
  26. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +7 -3
  27. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +2 -10
  28. package/esm2022/core/dashboard/widgets-dashboard-event.service.mjs +2 -10
  29. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +16 -19
  30. package/esm2022/core/dynamic-component/dynamic-component.model.mjs +1 -1
  31. package/esm2022/core/login/login.component.mjs +4 -4
  32. package/esm2022/core/login/login.model.mjs +1 -1
  33. package/esm2022/core/login/login.service.mjs +7 -3
  34. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  35. package/esm2022/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.mjs +23 -9
  36. package/esm2022/map/map.model.mjs +1 -1
  37. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +2 -1
  38. package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +2 -1
  39. package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +2 -1
  40. package/esm2022/widgets/definitions/applications/index.mjs +1 -1
  41. package/esm2022/widgets/definitions/asset-notes/index.mjs +2 -1
  42. package/esm2022/widgets/definitions/cockpit-legacy-welcome/index.mjs +1 -1
  43. package/esm2022/widgets/definitions/cockpit-welcome/index.mjs +1 -1
  44. package/esm2022/widgets/definitions/datapoints-graph/index.mjs +1 -1
  45. package/esm2022/widgets/definitions/datapoints-table/index.mjs +4 -3
  46. package/esm2022/widgets/definitions/device-control-message/index.mjs +2 -1
  47. package/esm2022/widgets/definitions/device-management-welcome/index.mjs +1 -1
  48. package/esm2022/widgets/definitions/help-and-service/index.mjs +1 -1
  49. package/esm2022/widgets/definitions/image/index.mjs +2 -1
  50. package/esm2022/widgets/definitions/info-gauge/index.mjs +2 -1
  51. package/esm2022/widgets/definitions/kpi/index.mjs +2 -1
  52. package/esm2022/widgets/definitions/linear-gauge/index.mjs +4 -3
  53. package/esm2022/widgets/definitions/map/index.mjs +2 -1
  54. package/esm2022/widgets/definitions/markdown/index.mjs +2 -1
  55. package/esm2022/widgets/definitions/silo/index.mjs +4 -3
  56. package/esm2022/widgets/definitions/three-d-rotation/index.mjs +2 -1
  57. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +1 -1
  58. package/esm2022/widgets/implementations/asset-notes/asset-notes-widget.component.mjs +1 -1
  59. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +3 -8
  60. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +1 -1
  61. package/esm2022/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.mjs +1 -1
  62. package/esm2022/widgets/implementations/info-gauge/index.mjs +2 -1
  63. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.mjs +1 -1
  64. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.mjs +1 -1
  65. package/esm2022/widgets/implementations/info-gauge/info-gauge.model.mjs +2 -0
  66. package/esm2022/widgets/implementations/kpi/kpi-widget.model.mjs +1 -1
  67. package/esm2022/widgets/implementations/linear-gauge/index.mjs +2 -1
  68. package/esm2022/widgets/implementations/linear-gauge/linear-gauge-widget-config/linear-gauge-widget-config.component.mjs +1 -1
  69. package/esm2022/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.mjs +1 -1
  70. package/esm2022/widgets/implementations/linear-gauge/linear-gauge.model.mjs +2 -0
  71. package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
  72. package/esm2022/widgets/implementations/markdown/markdown-widget.model.mjs +1 -1
  73. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  74. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  75. package/fesm2022/c8y-ngx-components-ecosystem.mjs +16 -4
  76. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  77. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  78. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -0
  79. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  80. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +1 -0
  81. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  82. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +1 -0
  83. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  84. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +1 -0
  86. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  88. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  89. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  90. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +3 -2
  91. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +1 -0
  93. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +1 -0
  97. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +1 -0
  99. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +1 -0
  101. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +3 -2
  103. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +1 -0
  105. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +1 -0
  107. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +3 -2
  109. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +1 -0
  111. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -7
  115. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components.mjs +28 -38
  120. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  121. package/locales/locales.pot +4 -4
  122. package/map/map.model.d.ts +1 -1
  123. package/map/map.model.d.ts.map +1 -1
  124. package/package.json +1 -1
  125. package/widgets/cockpit/index.d.ts +327 -17
  126. package/widgets/cockpit/index.d.ts.map +1 -1
  127. package/widgets/definitions/alarms/alarm-list/index.d.ts +25 -2
  128. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  129. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +24 -2
  130. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  131. package/widgets/definitions/alarms/recent-alarms/index.d.ts +24 -2
  132. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  133. package/widgets/definitions/applications/index.d.ts +11 -2
  134. package/widgets/definitions/applications/index.d.ts.map +1 -1
  135. package/widgets/definitions/asset-notes/index.d.ts +18 -2
  136. package/widgets/definitions/asset-notes/index.d.ts.map +1 -1
  137. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts +11 -2
  138. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
  139. package/widgets/definitions/cockpit-welcome/index.d.ts +15 -2
  140. package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
  141. package/widgets/definitions/datapoints-graph/index.d.ts +16 -2
  142. package/widgets/definitions/datapoints-graph/index.d.ts.map +1 -1
  143. package/widgets/definitions/datapoints-table/index.d.ts +26 -2
  144. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  145. package/widgets/definitions/device-control-message/index.d.ts +18 -2
  146. package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
  147. package/widgets/definitions/device-management-welcome/index.d.ts +15 -2
  148. package/widgets/definitions/device-management-welcome/index.d.ts.map +1 -1
  149. package/widgets/definitions/help-and-service/index.d.ts +15 -2
  150. package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
  151. package/widgets/definitions/image/index.d.ts +19 -2
  152. package/widgets/definitions/image/index.d.ts.map +1 -1
  153. package/widgets/definitions/info-gauge/index.d.ts +19 -2
  154. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  155. package/widgets/definitions/kpi/index.d.ts +19 -2
  156. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  157. package/widgets/definitions/linear-gauge/index.d.ts +19 -2
  158. package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
  159. package/widgets/definitions/map/index.d.ts +25 -2
  160. package/widgets/definitions/map/index.d.ts.map +1 -1
  161. package/widgets/definitions/markdown/index.d.ts +19 -2
  162. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  163. package/widgets/definitions/silo/index.d.ts +19 -2
  164. package/widgets/definitions/silo/index.d.ts.map +1 -1
  165. package/widgets/definitions/three-d-rotation/index.d.ts +19 -2
  166. package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
  167. package/widgets/device-management/index.d.ts +15 -1
  168. package/widgets/device-management/index.d.ts.map +1 -1
  169. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +4 -0
  170. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  171. package/widgets/implementations/asset-notes/asset-notes-widget.component.d.ts +4 -3
  172. package/widgets/implementations/asset-notes/asset-notes-widget.component.d.ts.map +1 -1
  173. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  174. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +4 -3
  175. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
  176. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts +4 -3
  177. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
  178. package/widgets/implementations/info-gauge/index.d.ts +1 -0
  179. package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
  180. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts +3 -6
  181. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
  182. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts +2 -5
  183. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts.map +1 -1
  184. package/widgets/implementations/info-gauge/info-gauge.model.d.ts +7 -0
  185. package/widgets/implementations/info-gauge/info-gauge.model.d.ts.map +1 -0
  186. package/widgets/implementations/kpi/kpi-widget.model.d.ts +6 -6
  187. package/widgets/implementations/kpi/kpi-widget.model.d.ts.map +1 -1
  188. package/widgets/implementations/linear-gauge/index.d.ts +1 -0
  189. package/widgets/implementations/linear-gauge/index.d.ts.map +1 -1
  190. package/widgets/implementations/linear-gauge/linear-gauge-widget-config/linear-gauge-widget-config.component.d.ts +3 -5
  191. package/widgets/implementations/linear-gauge/linear-gauge-widget-config/linear-gauge-widget-config.component.d.ts.map +1 -1
  192. package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts +2 -6
  193. package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts.map +1 -1
  194. package/widgets/implementations/linear-gauge/linear-gauge.model.d.ts +7 -0
  195. package/widgets/implementations/linear-gauge/linear-gauge.model.d.ts.map +1 -0
  196. package/widgets/implementations/map/map-widget.model.d.ts +5 -0
  197. package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
  198. package/widgets/implementations/markdown/markdown-widget.model.d.ts +2 -2
  199. package/widgets/implementations/markdown/markdown-widget.model.d.ts.map +1 -1
@@ -12780,15 +12780,19 @@ class LoginService {
12780
12780
  window.location.href = `${initRequest}${originUriParam}`;
12781
12781
  }
12782
12782
  }
12783
- loginBySso(sessionState, code) {
12783
+ loginBySso({ code, sessionState }) {
12784
12784
  const params = {
12785
12785
  method: 'GET',
12786
12786
  headers: {
12787
12787
  Accept: 'text/html,application/xhtml+xml'
12788
12788
  }
12789
12789
  };
12790
+ let url = `/tenant/oauth?code=${encodeURIComponent(code)}`;
12791
+ if (sessionState) {
12792
+ url += `&session_state=${encodeURIComponent(sessionState)}`;
12793
+ }
12790
12794
  return this.client
12791
- .fetch(`/tenant/oauth?session_state=${sessionState}&code=${code}`, params)
12795
+ .fetch(url, params)
12792
12796
  .then(res => this.handleErrorStatusCodes(res))
12793
12797
  .catch(ex => {
12794
12798
  this.showSsoError(ex);
@@ -16887,7 +16891,7 @@ class LoginComponent {
16887
16891
  getSsoData() {
16888
16892
  const code = this.getParamAndClear('code');
16889
16893
  const sessionState = this.getParamAndClear('session_state');
16890
- if (sessionState && code) {
16894
+ if (code) {
16891
16895
  return { sessionState, code };
16892
16896
  }
16893
16897
  const ssoError = this.getParamAndClear('error');
@@ -16897,13 +16901,13 @@ class LoginComponent {
16897
16901
  }
16898
16902
  }
16899
16903
  handleSso(ssoData) {
16900
- if (ssoData.ssoError) {
16904
+ if ('ssoError' in ssoData) {
16901
16905
  this.loginService.showSsoError(decodeURIComponent(ssoData.ssoErrorDescription).replace(/\+/g, '%20'));
16902
16906
  this.reset();
16903
16907
  }
16904
16908
  else {
16905
16909
  this.loginService
16906
- .loginBySso(ssoData.sessionState, ssoData.code)
16910
+ .loginBySso(ssoData)
16907
16911
  .then(() => this.loginService.login())
16908
16912
  .catch(e => {
16909
16913
  this.reset();
@@ -28650,8 +28654,6 @@ class WidgetsDashboardEventService {
28650
28654
  */
28651
28655
  this.events$ = new Subject();
28652
28656
  this.lastValueByEvent = {};
28653
- this.autoRefresh$ = new ReplaySubject(1);
28654
- this.onAutoRefresh$ = this.autoRefresh$.asObservable();
28655
28657
  }
28656
28658
  /**
28657
28659
  * Returns a subscribable event observable of specific event type if eventType is passed, or observable of
@@ -28678,12 +28680,6 @@ class WidgetsDashboardEventService {
28678
28680
  this.lastValueByEvent[event.type] = event.data;
28679
28681
  this.events$.next(event);
28680
28682
  }
28681
- /**
28682
- * @ignore
28683
- */
28684
- emitAutoRefresh(value) {
28685
- this.autoRefresh$.next(value);
28686
- }
28687
28683
  // When a dashboard has a multiple tabs, and not all of them has a realtime global context control
28688
28684
  // we need to set the realtime to false when switching between tabs to make aggregation selector not to be always disabled
28689
28685
  // while global auto-refresh context control is available.
@@ -29097,7 +29093,7 @@ class WidgetTimeContextComponent {
29097
29093
  /**
29098
29094
  * @ignore only DI.
29099
29095
  */
29100
- constructor(widgetEventService, dashboardChild, formBuilder, queryService, helperService, router, actionBarService, aggregationService, widgetTimeContextDateRangeService) {
29096
+ constructor(widgetEventService, dashboardChild, formBuilder, queryService, helperService, router, actionBarService, aggregationService, route, widgetTimeContextDateRangeService) {
29101
29097
  this.widgetEventService = widgetEventService;
29102
29098
  this.dashboardChild = dashboardChild;
29103
29099
  this.formBuilder = formBuilder;
@@ -29106,6 +29102,7 @@ class WidgetTimeContextComponent {
29106
29102
  this.router = router;
29107
29103
  this.actionBarService = actionBarService;
29108
29104
  this.aggregationService = aggregationService;
29105
+ this.route = route;
29109
29106
  this.widgetTimeContextDateRangeService = widgetTimeContextDateRangeService;
29110
29107
  this.INTERVAL_TITLES = INTERVAL_TITLES;
29111
29108
  this.DATE_FORMAT = 'short';
@@ -29168,16 +29165,6 @@ class WidgetTimeContextComponent {
29168
29165
  this.subscribeToIntervalChange();
29169
29166
  this.subscribeToRealtimeChange();
29170
29167
  this.subscribeToAggregationChange();
29171
- this.widgetEventService.onAutoRefresh$
29172
- .pipe(takeUntil(this.destroy$), tap(autoRefresh => (this.isAutoRefreshEnabled = autoRefresh)))
29173
- .subscribe(autoRefresh => {
29174
- // Fix for:
29175
- // 1. Make a group with dashboard having a widget with with auto-refresh time context enabled.
29176
- // 2. When you route to e.g. home page and back to the group dashboard, none of a groups will be routable again.
29177
- queueMicrotask(() => {
29178
- autoRefresh ? this.onDisableAutoRefresh() : this.enableDateRangeAndAggregation();
29179
- });
29180
- });
29181
29168
  if (initialContext.realtime) {
29182
29169
  this.onRealtimeValueChange(initialContext.realtime);
29183
29170
  this.startRealtime();
@@ -29190,6 +29177,9 @@ class WidgetTimeContextComponent {
29190
29177
  if (this.canDecouple) {
29191
29178
  this.dashboardChild.addActions([this.action]);
29192
29179
  }
29180
+ this.route.queryParams
29181
+ .pipe(distinctUntilChanged(), map(params => params['globalContextAutoRefresh'] === 'true'), takeUntil(this.destroy$))
29182
+ .subscribe(this.handleAutoRefreshChange.bind(this));
29193
29183
  }
29194
29184
  /**
29195
29185
  * Toggles the coupling on or off.
@@ -29242,7 +29232,6 @@ class WidgetTimeContextComponent {
29242
29232
  this.unsubscribeFromGlobalContext();
29243
29233
  this.clearQueryParamsIfNeeded();
29244
29234
  this.widgetEventService.setRealtimeTimeContextSetting();
29245
- this.widgetEventService.emitAutoRefresh(false);
29246
29235
  this.destroy$.next();
29247
29236
  this.destroy$.complete();
29248
29237
  }
@@ -29471,6 +29460,10 @@ class WidgetTimeContextComponent {
29471
29460
  });
29472
29461
  });
29473
29462
  }
29463
+ handleAutoRefreshChange(isEnabled) {
29464
+ this.isAutoRefreshEnabled = isEnabled;
29465
+ isEnabled ? this.onDisableAutoRefresh() : this.enableDateRangeAndAggregation();
29466
+ }
29474
29467
  onDisableAutoRefresh() {
29475
29468
  this.form.controls.aggregation.setValue(null);
29476
29469
  this.disableDateRangeAndAggregation();
@@ -29531,8 +29524,8 @@ class WidgetTimeContextComponent {
29531
29524
  return null;
29532
29525
  }
29533
29526
  }
29534
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetTimeContextComponent, deps: [{ token: WidgetsDashboardEventService }, { token: DashboardChildComponent }, { token: i2$3.FormBuilder }, { token: WidgetTimeContextQueryService }, { token: WidgetTimeContextHelperService }, { token: i1$5.Router }, { token: ActionBarService }, { token: AggregationService }, { token: WidgetTimeContextDateRangeService }], target: i0.ɵɵFactoryTarget.Component }); }
29535
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WidgetTimeContextComponent, isStandalone: true, selector: "c8y-widget-time-context", inputs: { canDecouple: "canDecouple", displaySettings: "displaySettings", hidden: "hidden" }, outputs: { dateContextChange: "dateContextChange" }, host: { classAttribute: "d-flex a-i-center gap-4" }, viewQueries: [{ propertyName: "action", first: true, predicate: DashboardChildActionComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled && !hidden\"\n [priority]=\"ACTION_BAR_PRIORITY\"\n [groupId]=\"ACTION_BAR_GROUP_ID\"\n [inGroupPriority]=\"actionBarInGroupPriority\"\n [placement]=\"'left'\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n></ng-container>\n\n<ng-template\n #dateTimePicker\n let-date=\"date\"\n>\n <form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n >\n <ng-container *ngIf=\"displaySettings.globalTimeContext\">\n <div>\n <div\n class=\"dropdown flex-grow\"\n #dropdown=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n *ngIf=\"date\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{\n date[1] | c8yDate: DATE_FORMAT\n }}\"\n tooltip=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"widget-time-context--date-picker-dropdown-button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span\n class=\"text-12\"\n data-cy=\"widget-time-context--selected-interval\"\n >\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"widget-time-context--selected-time-range\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"\n form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\n \"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); dropdown.isOpen = false\"\n [disabled]=\"form.value.realtime\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"\n (form.pristine && form.untouched) || form.invalid || form.value.realtime\n \"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div class=\"input-group w-auto\">\n <c8y-realtime-control\n class=\"form-control p-0 flex-no-grow w-auto\"\n *ngIf=\"displaySettings.globalRealtimeContext\"\n formControlName=\"realtime\"\n ></c8y-realtime-control>\n\n <c8y-aggregation-picker\n *ngIf=\"displaySettings.globalAggregationContext\"\n formControlName=\"aggregation\"\n [disabledAggregations]=\"disabledAggregations\"\n ></c8y-aggregation-picker>\n </div>\n </form>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button\n type=\"button\"\n (click)=\"toggleDecoupling()\"\n >\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i2$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i1$4.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$4.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$4.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i2$2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: IntervalPickerComponent, selector: "c8y-interval-picker", inputs: ["INTERVALS"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: RealtimeControlComponent, selector: "c8y-realtime-control" }, { kind: "component", type: AggregationPickerComponent, selector: "c8y-aggregation-picker", inputs: ["disabledAggregations"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "component", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }] }); }
29527
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetTimeContextComponent, deps: [{ token: WidgetsDashboardEventService }, { token: DashboardChildComponent }, { token: i2$3.FormBuilder }, { token: WidgetTimeContextQueryService }, { token: WidgetTimeContextHelperService }, { token: i1$5.Router }, { token: ActionBarService }, { token: AggregationService }, { token: i1$5.ActivatedRoute }, { token: WidgetTimeContextDateRangeService }], target: i0.ɵɵFactoryTarget.Component }); }
29528
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WidgetTimeContextComponent, isStandalone: true, selector: "c8y-widget-time-context", inputs: { canDecouple: "canDecouple", displaySettings: "displaySettings", hidden: "hidden" }, outputs: { dateContextChange: "dateContextChange" }, host: { classAttribute: "d-flex a-i-center gap-4" }, viewQueries: [{ propertyName: "action", first: true, predicate: DashboardChildActionComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled && !hidden\"\n [priority]=\"ACTION_BAR_PRIORITY\"\n [groupId]=\"ACTION_BAR_GROUP_ID\"\n [inGroupPriority]=\"actionBarInGroupPriority\"\n [placement]=\"'left'\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n></ng-container>\n\n<ng-template\n #dateTimePicker\n let-date=\"date\"\n>\n <form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n >\n <ng-container *ngIf=\"displaySettings.globalTimeContext\">\n <div>\n <div\n class=\"dropdown flex-grow\"\n #dropdown=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n *ngIf=\"date\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{\n date[1] | c8yDate: DATE_FORMAT\n }}\"\n tooltip=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"widget-time-context--date-picker-dropdown-button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span\n class=\"text-12\"\n data-cy=\"widget-time-context--selected-interval\"\n >\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"widget-time-context--selected-time-range\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"\n form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\n \"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); dropdown.isOpen = false\"\n [disabled]=\"form.value.realtime || isAutoRefreshEnabled\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"\n (form.pristine && form.untouched) || form.invalid || form.value.realtime || isAutoRefreshEnabled\n \"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div class=\"input-group w-auto\">\n <c8y-realtime-control\n class=\"form-control p-0 flex-no-grow w-auto\"\n *ngIf=\"displaySettings.globalRealtimeContext\"\n formControlName=\"realtime\"\n ></c8y-realtime-control>\n\n <c8y-aggregation-picker\n *ngIf=\"displaySettings.globalAggregationContext\"\n formControlName=\"aggregation\"\n [disabledAggregations]=\"disabledAggregations\"\n ></c8y-aggregation-picker>\n </div>\n </form>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button\n type=\"button\"\n (click)=\"toggleDecoupling()\"\n >\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i2$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i1$4.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$4.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$4.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i2$2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: IntervalPickerComponent, selector: "c8y-interval-picker", inputs: ["INTERVALS"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: RealtimeControlComponent, selector: "c8y-realtime-control" }, { kind: "component", type: AggregationPickerComponent, selector: "c8y-aggregation-picker", inputs: ["disabledAggregations"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "component", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }] }); }
29536
29529
  }
29537
29530
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetTimeContextComponent, decorators: [{
29538
29531
  type: Component,
@@ -29557,8 +29550,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
29557
29550
  DatePipe,
29558
29551
  DashboardChildActionComponent,
29559
29552
  DateTimePickerComponent
29560
- ], template: "<c8y-action-bar-item\n *ngIf=\"isCoupled && !hidden\"\n [priority]=\"ACTION_BAR_PRIORITY\"\n [groupId]=\"ACTION_BAR_GROUP_ID\"\n [inGroupPriority]=\"actionBarInGroupPriority\"\n [placement]=\"'left'\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n></ng-container>\n\n<ng-template\n #dateTimePicker\n let-date=\"date\"\n>\n <form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n >\n <ng-container *ngIf=\"displaySettings.globalTimeContext\">\n <div>\n <div\n class=\"dropdown flex-grow\"\n #dropdown=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n *ngIf=\"date\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{\n date[1] | c8yDate: DATE_FORMAT\n }}\"\n tooltip=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"widget-time-context--date-picker-dropdown-button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span\n class=\"text-12\"\n data-cy=\"widget-time-context--selected-interval\"\n >\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"widget-time-context--selected-time-range\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"\n form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\n \"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); dropdown.isOpen = false\"\n [disabled]=\"form.value.realtime\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"\n (form.pristine && form.untouched) || form.invalid || form.value.realtime\n \"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div class=\"input-group w-auto\">\n <c8y-realtime-control\n class=\"form-control p-0 flex-no-grow w-auto\"\n *ngIf=\"displaySettings.globalRealtimeContext\"\n formControlName=\"realtime\"\n ></c8y-realtime-control>\n\n <c8y-aggregation-picker\n *ngIf=\"displaySettings.globalAggregationContext\"\n formControlName=\"aggregation\"\n [disabledAggregations]=\"disabledAggregations\"\n ></c8y-aggregation-picker>\n </div>\n </form>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button\n type=\"button\"\n (click)=\"toggleDecoupling()\"\n >\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n" }]
29561
- }], ctorParameters: () => [{ type: WidgetsDashboardEventService }, { type: DashboardChildComponent }, { type: i2$3.FormBuilder }, { type: WidgetTimeContextQueryService }, { type: WidgetTimeContextHelperService }, { type: i1$5.Router }, { type: ActionBarService }, { type: AggregationService }, { type: WidgetTimeContextDateRangeService }], propDecorators: { canDecouple: [{
29553
+ ], template: "<c8y-action-bar-item\n *ngIf=\"isCoupled && !hidden\"\n [priority]=\"ACTION_BAR_PRIORITY\"\n [groupId]=\"ACTION_BAR_GROUP_ID\"\n [inGroupPriority]=\"actionBarInGroupPriority\"\n [placement]=\"'left'\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{\n date: [form.value.currentDateContextFromDate, form.value.currentDateContextToDate]\n }\"\n></ng-container>\n\n<ng-template\n #dateTimePicker\n let-date=\"date\"\n>\n <form\n class=\"d-flex gap-16 p-l-xs-16 p-r-xs-16 m-t-xs-8 m-b-xs-8\"\n [formGroup]=\"form\"\n >\n <ng-container *ngIf=\"displaySettings.globalTimeContext\">\n <div>\n <div\n class=\"dropdown flex-grow\"\n #dropdown=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n *ngIf=\"date\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n attr.aria-label=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{\n date[1] | c8yDate: DATE_FORMAT\n }}\"\n tooltip=\"{{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\"\n placement=\"top\"\n container=\"body\"\n data-cy=\"widget-time-context--date-picker-dropdown-button\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"schedule1\"\n ></i>\n <div class=\"d-col text-left fit-w\">\n <span\n class=\"text-12\"\n data-cy=\"widget-time-context--selected-interval\"\n >\n {{ INTERVAL_TITLES[form.controls.currentDateContextInterval.value] | translate }}\n </span>\n <span\n class=\"text-10 text-muted text-truncate\"\n data-cy=\"widget-time-context--selected-time-range\"\n >\n {{ date[0] | c8yDate: DATE_FORMAT }} \u2014 {{ date[1] | c8yDate: DATE_FORMAT }}\n </span>\n </div>\n <span class=\"caret m-r-16 m-l-4\"></span>\n </button>\n\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n *dropdownMenu\n >\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"currentDateContextInterval\"\n ></c8y-interval-picker>\n\n <ng-container *ngIf=\"form.controls.currentDateContextInterval.value === 'custom'\">\n <div class=\"p-l-16 p-r-16\">\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'From`date`' | translate\"\n for=\"temporaryUserSelectedFromDate\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedFromDate\"\n [maxDate]=\"form.value.temporaryUserSelectedToDate\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedFromDate\"\n [ngClass]=\"\n form.controls.temporaryUserSelectedFromDate.errors ? 'has-error' : ''\n \"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedFromDate.errors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"'This date is after the latest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n >\n <label\n [title]=\"'To`date`' | translate\"\n for=\"temporaryUserSelectedToDate\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n id=\"temporaryUserSelectedToDate\"\n [minDate]=\"form.value.temporaryUserSelectedFromDate\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"form.controls.temporaryUserSelectedToDate\"\n [ngClass]=\"form.controls.temporaryUserSelectedToDate.errors ? 'has-error' : ''\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"form.controls.temporaryUserSelectedToDate.errors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"'This date is before the earliest allowed date.' | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"'This date is invalid.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); dropdown.isOpen = false\"\n [disabled]=\"form.value.realtime || isAutoRefreshEnabled\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"\n (form.pristine && form.untouched) || form.invalid || form.value.realtime || isAutoRefreshEnabled\n \"\n translate\n >\n Apply\n </button>\n </div>\n </ng-container>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div class=\"input-group w-auto\">\n <c8y-realtime-control\n class=\"form-control p-0 flex-no-grow w-auto\"\n *ngIf=\"displaySettings.globalRealtimeContext\"\n formControlName=\"realtime\"\n ></c8y-realtime-control>\n\n <c8y-aggregation-picker\n *ngIf=\"displaySettings.globalAggregationContext\"\n formControlName=\"aggregation\"\n [disabledAggregations]=\"disabledAggregations\"\n ></c8y-aggregation-picker>\n </div>\n </form>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button\n type=\"button\"\n (click)=\"toggleDecoupling()\"\n >\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n" }]
29554
+ }], ctorParameters: () => [{ type: WidgetsDashboardEventService }, { type: DashboardChildComponent }, { type: i2$3.FormBuilder }, { type: WidgetTimeContextQueryService }, { type: WidgetTimeContextHelperService }, { type: i1$5.Router }, { type: ActionBarService }, { type: AggregationService }, { type: i1$5.ActivatedRoute }, { type: WidgetTimeContextDateRangeService }], propDecorators: { canDecouple: [{
29562
29555
  type: Input
29563
29556
  }], displaySettings: [{
29564
29557
  type: Input
@@ -29951,6 +29944,8 @@ class AutoRefreshControlComponent {
29951
29944
  this.loading = new EventEmitter();
29952
29945
  this.widgetGlobalAutoRefresh = inject(WidgetGlobalAutoRefreshService);
29953
29946
  this.showIntervalRefresh$ = new BehaviorSubject(this.widgetGlobalAutoRefresh.autoRefreshSettings.isEnabled$.getValue());
29947
+ this.isBtnDisabledSubject = new BehaviorSubject(false);
29948
+ this.isBtnDisabled$ = this.isBtnDisabledSubject.asObservable();
29954
29949
  this.destroy$ = new Subject();
29955
29950
  // eslint-disable-next-line @typescript-eslint/no-empty-function
29956
29951
  this.onTouched = () => { };
@@ -29984,12 +29979,14 @@ class AutoRefreshControlComponent {
29984
29979
  subscribeOnCountdownChangeState() {
29985
29980
  this.widgetGlobalAutoRefresh.countdownActions.reset$
29986
29981
  .pipe(tap(() => {
29982
+ this.isBtnDisabledSubject.next(false);
29987
29983
  this.loading.emit(false);
29988
29984
  this.countdownIntervalComponent?.reset();
29989
29985
  }), takeUntil(this.destroy$))
29990
29986
  .subscribe();
29991
29987
  this.widgetGlobalAutoRefresh.countdownActions.stop$
29992
29988
  .pipe(tap(() => {
29989
+ this.isBtnDisabledSubject.next(true);
29993
29990
  this.loading.emit(true);
29994
29991
  this.countdownIntervalComponent?.stop(true);
29995
29992
  }), takeUntil(this.destroy$))
@@ -30010,7 +30007,7 @@ class AutoRefreshControlComponent {
30010
30007
  useExisting: forwardRef(() => AutoRefreshControlComponent),
30011
30008
  multi: true
30012
30009
  }
30013
- ], viewQueries: [{ propertyName: "countdownIntervalComponent", first: true, predicate: CountdownIntervalComponent, descendants: true }], ngImport: i0, template: "<div class=\"input-group\">\n <button\n class=\"toggle-countdown\"\n [attr.aria-label]=\"\n ((showIntervalRefresh$ | async) ? DISABLE_AUTO_REFRESH : ENABLE_AUTO_REFRESH) | translate\n \"\n [tooltip]=\"\n ((showIntervalRefresh$ | async) ? DISABLE_AUTO_REFRESH : ENABLE_AUTO_REFRESH) | translate\n \"\n placement=\"bottom\"\n (click)=\"toggleIntervalRefresh()\"\n [adaptivePosition]=\"false\"\n mode\n [delay]=\"500\"\n >\n <c8y-countdown-interval\n [hidden]=\"!(showIntervalRefresh$ | async)\"\n [countdownInterval]=\"(autoRefreshSeconds$ | async) ?? DEFAULT_INTERVAL_VALUE\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!(showIntervalRefresh$ | async)\"\n ></i>\n </button>\n <span></span>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
30010
+ ], viewQueries: [{ propertyName: "countdownIntervalComponent", first: true, predicate: CountdownIntervalComponent, descendants: true }], ngImport: i0, template: "<div class=\"input-group\">\n <button\n class=\"toggle-countdown\"\n [attr.aria-label]=\"\n ((showIntervalRefresh$ | async) ? DISABLE_AUTO_REFRESH : ENABLE_AUTO_REFRESH) | translate\n \"\n [tooltip]=\"\n ((showIntervalRefresh$ | async) ? DISABLE_AUTO_REFRESH : ENABLE_AUTO_REFRESH) | translate\n \"\n placement=\"bottom\"\n (click)=\"toggleIntervalRefresh()\"\n [adaptivePosition]=\"false\"\n mode\n [delay]=\"500\"\n [disabled]=\"isBtnDisabled$ | async\"\n >\n <c8y-countdown-interval\n [hidden]=\"!(showIntervalRefresh$ | async)\"\n [countdownInterval]=\"(autoRefreshSeconds$ | async) ?? DEFAULT_INTERVAL_VALUE\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!(showIntervalRefresh$ | async)\"\n ></i>\n </button>\n <span></span>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "component", type: CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
30014
30011
  }
30015
30012
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutoRefreshControlComponent, decorators: [{
30016
30013
  type: Component,
@@ -30020,7 +30017,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
30020
30017
  useExisting: forwardRef(() => AutoRefreshControlComponent),
30021
30018
  multi: true
30022
30019
  }
30023
- ], template: "<div class=\"input-group\">\n <button\n class=\"toggle-countdown\"\n [attr.aria-label]=\"\n ((showIntervalRefresh$ | async) ? DISABLE_AUTO_REFRESH : ENABLE_AUTO_REFRESH) | translate\n \"\n [tooltip]=\"\n ((showIntervalRefresh$ | async) ? DISABLE_AUTO_REFRESH : ENABLE_AUTO_REFRESH) | translate\n \"\n placement=\"bottom\"\n (click)=\"toggleIntervalRefresh()\"\n [adaptivePosition]=\"false\"\n mode\n [delay]=\"500\"\n >\n <c8y-countdown-interval\n [hidden]=\"!(showIntervalRefresh$ | async)\"\n [countdownInterval]=\"(autoRefreshSeconds$ | async) ?? DEFAULT_INTERVAL_VALUE\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!(showIntervalRefresh$ | async)\"\n ></i>\n </button>\n <span></span>\n</div>\n" }]
30020
+ ], template: "<div class=\"input-group\">\n <button\n class=\"toggle-countdown\"\n [attr.aria-label]=\"\n ((showIntervalRefresh$ | async) ? DISABLE_AUTO_REFRESH : ENABLE_AUTO_REFRESH) | translate\n \"\n [tooltip]=\"\n ((showIntervalRefresh$ | async) ? DISABLE_AUTO_REFRESH : ENABLE_AUTO_REFRESH) | translate\n \"\n placement=\"bottom\"\n (click)=\"toggleIntervalRefresh()\"\n [adaptivePosition]=\"false\"\n mode\n [delay]=\"500\"\n [disabled]=\"isBtnDisabled$ | async\"\n >\n <c8y-countdown-interval\n [hidden]=\"!(showIntervalRefresh$ | async)\"\n [countdownInterval]=\"(autoRefreshSeconds$ | async) ?? DEFAULT_INTERVAL_VALUE\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!(showIntervalRefresh$ | async)\"\n ></i>\n </button>\n <span></span>\n</div>\n" }]
30024
30021
  }], propDecorators: { countdownIntervalComponent: [{
30025
30022
  type: ViewChild,
30026
30023
  args: [CountdownIntervalComponent]
@@ -30077,7 +30074,6 @@ class WidgetAutoRefreshContextComponent {
30077
30074
  this.destroy$ = new Subject();
30078
30075
  this.fb = inject(FormBuilder);
30079
30076
  this.widgetGlobalAutoRefresh = inject(WidgetGlobalAutoRefreshService);
30080
- this.widgetEventService = inject(WidgetsDashboardEventService);
30081
30077
  }
30082
30078
  ngOnInit() {
30083
30079
  this.widgetGlobalAutoRefresh.globalRefreshWidgetsCount.update(count => count + 1);
@@ -30085,11 +30081,6 @@ class WidgetAutoRefreshContextComponent {
30085
30081
  this.subscribeOnAutoRefreshSecondsChange();
30086
30082
  this.subscribeOnAutoRefreshChange();
30087
30083
  this.subscribeOnRouterEvents();
30088
- this.form.controls.autoRefresh.valueChanges
30089
- .pipe(takeUntil(this.destroy$))
30090
- .subscribe(autorefresh => {
30091
- this.widgetEventService.emitAutoRefresh(autorefresh);
30092
- });
30093
30084
  }
30094
30085
  ngAfterViewInit() {
30095
30086
  this.initializeWidgetSubscriptions();
@@ -30103,7 +30094,6 @@ class WidgetAutoRefreshContextComponent {
30103
30094
  .pipe(takeUntil(this.destroy$))
30104
30095
  .subscribe();
30105
30096
  this.listenOnDashboardSaveOperation();
30106
- this.widgetEventService.emitAutoRefresh(this.form.controls.autoRefresh.value);
30107
30097
  }
30108
30098
  ngOnDestroy() {
30109
30099
  this.onContextDestroy();