committed by
GitHub
14 changed files with 194 additions and 127 deletions
@ -0,0 +1,33 @@ |
|||
///
|
|||
/// Copyright © 2016-2025 The Thingsboard Authors
|
|||
///
|
|||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|||
/// you may not use this file except in compliance with the License.
|
|||
/// You may obtain a copy of the License at
|
|||
///
|
|||
/// http://www.apache.org/licenses/LICENSE-2.0
|
|||
///
|
|||
/// Unless required by applicable law or agreed to in writing, software
|
|||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
/// See the License for the specific language governing permissions and
|
|||
/// limitations under the License.
|
|||
///
|
|||
|
|||
import { EntityDebugSettings } from '@shared/models/entity.models'; |
|||
|
|||
export interface AdditionalDebugActionConfig<Action = (...args: unknown[]) => void> { |
|||
action: Action; |
|||
title: string; |
|||
} |
|||
|
|||
export interface EntityDebugSettingPanelConfig { |
|||
debugSettings: EntityDebugSettings; |
|||
debugConfig: { |
|||
maxDebugModeDuration: number; |
|||
debugLimitsConfiguration: string; |
|||
entityLabel?: string; |
|||
additionalActionConfig?: AdditionalDebugActionConfig; |
|||
} |
|||
onSettingsAppliedFn: (settings: EntityDebugSettings) => void; |
|||
} |
|||
@ -0,0 +1,69 @@ |
|||
///
|
|||
/// Copyright © 2016-2025 The Thingsboard Authors
|
|||
///
|
|||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|||
/// you may not use this file except in compliance with the License.
|
|||
/// You may obtain a copy of the License at
|
|||
///
|
|||
/// http://www.apache.org/licenses/LICENSE-2.0
|
|||
///
|
|||
/// Unless required by applicable law or agreed to in writing, software
|
|||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
/// See the License for the specific language governing permissions and
|
|||
/// limitations under the License.
|
|||
///
|
|||
|
|||
import { Injectable, Optional, Renderer2, ViewContainerRef } from '@angular/core'; |
|||
import { EntityDebugSettingsPanelComponent } from '@home/components/entity/debug/entity-debug-settings-panel.component'; |
|||
import { EntityDebugSettings } from '@shared/models/entity.models'; |
|||
import { TbPopoverService } from '@shared/components/popover.service'; |
|||
import { TranslateService } from '@ngx-translate/core'; |
|||
import { DurationLeftPipe } from '@shared/pipe/duration-left.pipe'; |
|||
import { EntityDebugSettingPanelConfig } from '@home/components/entity/debug/entity-debug-settings.model'; |
|||
|
|||
@Injectable() |
|||
export class EntityDebugSettingsService { |
|||
|
|||
constructor( |
|||
private popoverService: TbPopoverService, |
|||
@Optional() public renderer: Renderer2, |
|||
@Optional() public viewContainerRef: ViewContainerRef, |
|||
private translate: TranslateService, |
|||
private durationLeft: DurationLeftPipe, |
|||
) {} |
|||
|
|||
openDebugStrategyPanel(panelConfig: EntityDebugSettingPanelConfig, trigger: Element): void { |
|||
if (this.popoverService.hasPopover(trigger)) { |
|||
this.popoverService.hidePopover(trigger); |
|||
} else { |
|||
const debugStrategyPopover = this.popoverService.displayPopover(trigger, this.renderer, |
|||
this.viewContainerRef, EntityDebugSettingsPanelComponent, 'bottom', true, null, |
|||
{ |
|||
...panelConfig.debugSettings, |
|||
...panelConfig.debugConfig, |
|||
}, |
|||
{}, |
|||
{}, {}, true); |
|||
debugStrategyPopover.tbComponentRef.instance.onSettingsApplied.subscribe(settings => { |
|||
panelConfig.onSettingsAppliedFn(settings); |
|||
debugStrategyPopover.hide(); |
|||
}); |
|||
} |
|||
} |
|||
|
|||
|
|||
getDebugConfigLabel(debugSettings: EntityDebugSettings): string { |
|||
const isDebugActive = this.isDebugActive(debugSettings?.allEnabledUntil); |
|||
|
|||
if (!isDebugActive) { |
|||
return debugSettings?.failuresEnabled ? this.translate.instant('debug-settings.failures') : this.translate.instant('common.disabled'); |
|||
} else { |
|||
return this.durationLeft.transform(debugSettings?.allEnabledUntil); |
|||
} |
|||
} |
|||
|
|||
isDebugActive(allEnabledUntil: number): boolean { |
|||
return allEnabledUntil > new Date().getTime(); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue