myio-js-library 0.1.183 → 0.1.185
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.
- package/dist/index.cjs +9976 -5115
- package/dist/index.d.cts +522 -8
- package/dist/index.js +9959 -5115
- package/dist/myio-js-library.umd.js +9925 -5082
- package/dist/myio-js-library.umd.min.js +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -820,6 +820,264 @@ declare function extractMyIOCredentials(attributes: Record<string, any> | null |
|
|
|
820
820
|
ingestionId: string;
|
|
821
821
|
};
|
|
822
822
|
|
|
823
|
+
/**
|
|
824
|
+
* RFC-0104: Device Annotations System
|
|
825
|
+
* Type definitions for the annotations feature
|
|
826
|
+
*/
|
|
827
|
+
type AnnotationType = 'observation' | 'pending' | 'maintenance' | 'activity';
|
|
828
|
+
type ImportanceLevel = 1 | 2 | 3 | 4 | 5;
|
|
829
|
+
type AnnotationStatus = 'created' | 'modified' | 'archived';
|
|
830
|
+
type AuditAction = 'created' | 'modified' | 'archived' | 'acknowledged';
|
|
831
|
+
interface UserInfo {
|
|
832
|
+
id: string;
|
|
833
|
+
email: string;
|
|
834
|
+
name: string;
|
|
835
|
+
}
|
|
836
|
+
interface AuditEntry {
|
|
837
|
+
timestamp: string;
|
|
838
|
+
userId: string;
|
|
839
|
+
userName: string;
|
|
840
|
+
userEmail: string;
|
|
841
|
+
action: AuditAction;
|
|
842
|
+
previousVersion?: number;
|
|
843
|
+
changes?: Record<string, {
|
|
844
|
+
from: unknown;
|
|
845
|
+
to: unknown;
|
|
846
|
+
}>;
|
|
847
|
+
}
|
|
848
|
+
interface Annotation {
|
|
849
|
+
id: string;
|
|
850
|
+
version: number;
|
|
851
|
+
text: string;
|
|
852
|
+
type: AnnotationType;
|
|
853
|
+
importance: ImportanceLevel;
|
|
854
|
+
status: AnnotationStatus;
|
|
855
|
+
createdAt: string;
|
|
856
|
+
dueDate?: string;
|
|
857
|
+
createdBy: UserInfo;
|
|
858
|
+
acknowledged: boolean;
|
|
859
|
+
acknowledgedBy?: UserInfo;
|
|
860
|
+
acknowledgedAt?: string;
|
|
861
|
+
history: AuditEntry[];
|
|
862
|
+
}
|
|
863
|
+
interface LogAnnotationsAttribute {
|
|
864
|
+
schemaVersion: string;
|
|
865
|
+
deviceId: string;
|
|
866
|
+
lastModified: string;
|
|
867
|
+
lastModifiedBy: UserInfo;
|
|
868
|
+
annotations: Annotation[];
|
|
869
|
+
}
|
|
870
|
+
interface AnnotationFilterState {
|
|
871
|
+
dateRange?: {
|
|
872
|
+
start: string;
|
|
873
|
+
end: string;
|
|
874
|
+
};
|
|
875
|
+
status?: AnnotationStatus | 'all';
|
|
876
|
+
type?: AnnotationType | 'all';
|
|
877
|
+
userId?: string | 'all';
|
|
878
|
+
searchText?: string;
|
|
879
|
+
importance?: ImportanceLevel | 'all';
|
|
880
|
+
showOverdueOnly?: boolean;
|
|
881
|
+
}
|
|
882
|
+
interface PaginationState {
|
|
883
|
+
currentPage: number;
|
|
884
|
+
pageSize: number;
|
|
885
|
+
totalItems: number;
|
|
886
|
+
totalPages: number;
|
|
887
|
+
}
|
|
888
|
+
interface PermissionSet {
|
|
889
|
+
isSuperAdminMyio: boolean;
|
|
890
|
+
isSuperAdminHolding: boolean;
|
|
891
|
+
currentUser: UserInfo;
|
|
892
|
+
}
|
|
893
|
+
interface NewAnnotationData {
|
|
894
|
+
text: string;
|
|
895
|
+
type: AnnotationType;
|
|
896
|
+
importance: ImportanceLevel;
|
|
897
|
+
dueDate?: string;
|
|
898
|
+
}
|
|
899
|
+
declare const ANNOTATION_TYPE_LABELS: Record<AnnotationType, string>;
|
|
900
|
+
declare const ANNOTATION_TYPE_LABELS_EN: Record<AnnotationType, string>;
|
|
901
|
+
declare const IMPORTANCE_LABELS: Record<ImportanceLevel, string>;
|
|
902
|
+
declare const IMPORTANCE_LABELS_EN: Record<ImportanceLevel, string>;
|
|
903
|
+
declare const STATUS_LABELS: Record<AnnotationStatus, string>;
|
|
904
|
+
declare const STATUS_LABELS_EN: Record<AnnotationStatus, string>;
|
|
905
|
+
declare const ANNOTATION_TYPE_COLORS: Record<AnnotationType, string>;
|
|
906
|
+
declare const IMPORTANCE_COLORS: Record<ImportanceLevel, string>;
|
|
907
|
+
declare const STATUS_COLORS: Record<AnnotationStatus, string>;
|
|
908
|
+
|
|
909
|
+
/**
|
|
910
|
+
* RFC-0104: SuperAdmin Detection Utilities
|
|
911
|
+
*
|
|
912
|
+
* Functions to detect SuperAdmin status for users in the MYIO platform.
|
|
913
|
+
* - SuperAdmin MYIO: Users with @myio.com.br email (except alarme@ and alarmes@)
|
|
914
|
+
* - SuperAdmin Holding: Users with isUserAdmin=true on their customer entity
|
|
915
|
+
*/
|
|
916
|
+
|
|
917
|
+
/**
|
|
918
|
+
* Fetch current user information from ThingsBoard API
|
|
919
|
+
* @param jwtToken - Optional JWT token (defaults to localStorage)
|
|
920
|
+
* @returns User info object or null if not authenticated
|
|
921
|
+
*/
|
|
922
|
+
declare function fetchCurrentUserInfo(jwtToken?: string): Promise<UserInfo | null>;
|
|
923
|
+
/**
|
|
924
|
+
* Detect if current user is a SuperAdmin MYIO
|
|
925
|
+
* SuperAdmin MYIO = user with @myio.com.br email EXCEPT alarme@ or alarmes@
|
|
926
|
+
*
|
|
927
|
+
* @param jwtToken - Optional JWT token (defaults to localStorage)
|
|
928
|
+
* @returns Promise<boolean> - true if user is SuperAdmin MYIO
|
|
929
|
+
*
|
|
930
|
+
* @example
|
|
931
|
+
* ```typescript
|
|
932
|
+
* const isSuperAdmin = await detectSuperAdminMyio();
|
|
933
|
+
* if (isSuperAdmin) {
|
|
934
|
+
* // Show admin-only features
|
|
935
|
+
* }
|
|
936
|
+
* ```
|
|
937
|
+
*/
|
|
938
|
+
declare function detectSuperAdminMyio(jwtToken?: string): Promise<boolean>;
|
|
939
|
+
/**
|
|
940
|
+
* Detect if current user is a SuperAdmin Holding
|
|
941
|
+
* SuperAdmin Holding = user with isUserAdmin=true attribute on their customer entity
|
|
942
|
+
*
|
|
943
|
+
* @param customerId - The customer/tenant ID to check
|
|
944
|
+
* @param jwtToken - Optional JWT token (defaults to localStorage)
|
|
945
|
+
* @returns Promise<boolean> - true if user is SuperAdmin Holding
|
|
946
|
+
*
|
|
947
|
+
* @example
|
|
948
|
+
* ```typescript
|
|
949
|
+
* const isHoldingAdmin = await detectSuperAdminHolding('customer-uuid');
|
|
950
|
+
* if (isHoldingAdmin) {
|
|
951
|
+
* // Show holding admin features
|
|
952
|
+
* }
|
|
953
|
+
* ```
|
|
954
|
+
*/
|
|
955
|
+
declare function detectSuperAdminHolding(customerId: string, jwtToken?: string): Promise<boolean>;
|
|
956
|
+
/**
|
|
957
|
+
* Get full permission set for the current user
|
|
958
|
+
*
|
|
959
|
+
* @param customerId - The customer/tenant ID for holding admin check
|
|
960
|
+
* @param jwtToken - Optional JWT token (defaults to localStorage)
|
|
961
|
+
* @returns Permission set with user info and admin flags
|
|
962
|
+
*
|
|
963
|
+
* @example
|
|
964
|
+
* ```typescript
|
|
965
|
+
* const permissions = await getAnnotationPermissions('customer-uuid');
|
|
966
|
+
* if (permissions.isSuperAdminMyio || permissions.isSuperAdminHolding) {
|
|
967
|
+
* // Can edit any annotation
|
|
968
|
+
* }
|
|
969
|
+
* ```
|
|
970
|
+
*/
|
|
971
|
+
declare function getAnnotationPermissions(customerId?: string, jwtToken?: string): Promise<{
|
|
972
|
+
currentUser: UserInfo | null;
|
|
973
|
+
isSuperAdminMyio: boolean;
|
|
974
|
+
isSuperAdminHolding: boolean;
|
|
975
|
+
}>;
|
|
976
|
+
/**
|
|
977
|
+
* Check if user can modify a specific annotation
|
|
978
|
+
*
|
|
979
|
+
* @param annotation - The annotation to check
|
|
980
|
+
* @param permissions - The permission set for current user
|
|
981
|
+
* @returns boolean - true if user can edit/archive the annotation
|
|
982
|
+
*/
|
|
983
|
+
declare function canModifyAnnotation(annotation: {
|
|
984
|
+
createdBy: UserInfo;
|
|
985
|
+
}, permissions: {
|
|
986
|
+
currentUser: UserInfo | null;
|
|
987
|
+
isSuperAdminMyio: boolean;
|
|
988
|
+
isSuperAdminHolding: boolean;
|
|
989
|
+
}): boolean;
|
|
990
|
+
|
|
991
|
+
/**
|
|
992
|
+
* RFC-0104: Annotation Indicator for Device Cards
|
|
993
|
+
*
|
|
994
|
+
* A floating indicator that shows annotation status on device cards.
|
|
995
|
+
* Colors indicate the highest priority annotation type:
|
|
996
|
+
* - Red: Has pending annotations
|
|
997
|
+
* - Yellow: Has maintenance annotations
|
|
998
|
+
* - Green: Has activity annotations
|
|
999
|
+
* - Blue: Has observation annotations
|
|
1000
|
+
* - Gray (50% opacity): No annotations
|
|
1001
|
+
*/
|
|
1002
|
+
|
|
1003
|
+
type AnnotationIndicatorTheme = 'light' | 'dark';
|
|
1004
|
+
interface AnnotationIndicatorConfig {
|
|
1005
|
+
container: HTMLElement;
|
|
1006
|
+
deviceId: string;
|
|
1007
|
+
jwtToken?: string;
|
|
1008
|
+
position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'middle-right' | 'middle-left';
|
|
1009
|
+
size?: 'small' | 'medium' | 'large';
|
|
1010
|
+
theme?: AnnotationIndicatorTheme;
|
|
1011
|
+
onClick?: () => void;
|
|
1012
|
+
}
|
|
1013
|
+
interface AnnotationSummary {
|
|
1014
|
+
total: number;
|
|
1015
|
+
pending: number;
|
|
1016
|
+
maintenance: number;
|
|
1017
|
+
activity: number;
|
|
1018
|
+
observation: number;
|
|
1019
|
+
overdueCount: number;
|
|
1020
|
+
latestAnnotation?: Annotation;
|
|
1021
|
+
highestPriorityType: AnnotationType | null;
|
|
1022
|
+
}
|
|
1023
|
+
declare class AnnotationIndicator {
|
|
1024
|
+
private config;
|
|
1025
|
+
private element;
|
|
1026
|
+
private tooltipElement;
|
|
1027
|
+
private annotations;
|
|
1028
|
+
private summary;
|
|
1029
|
+
private styleInjected;
|
|
1030
|
+
private _hideTimer;
|
|
1031
|
+
private _isMouseOverTooltip;
|
|
1032
|
+
private _pinnedCounter;
|
|
1033
|
+
constructor(config: AnnotationIndicatorConfig);
|
|
1034
|
+
/**
|
|
1035
|
+
* Initialize the indicator - fetches annotations and renders
|
|
1036
|
+
*/
|
|
1037
|
+
init(): Promise<void>;
|
|
1038
|
+
/**
|
|
1039
|
+
* Update annotations data and re-render
|
|
1040
|
+
*/
|
|
1041
|
+
refresh(): Promise<void>;
|
|
1042
|
+
/**
|
|
1043
|
+
* Update with pre-loaded annotations (avoids API call)
|
|
1044
|
+
*/
|
|
1045
|
+
updateWithAnnotations(annotations: Annotation[]): void;
|
|
1046
|
+
/**
|
|
1047
|
+
* Destroy the indicator
|
|
1048
|
+
*/
|
|
1049
|
+
destroy(): void;
|
|
1050
|
+
private injectStyles;
|
|
1051
|
+
private loadAnnotations;
|
|
1052
|
+
private calculateSummary;
|
|
1053
|
+
private render;
|
|
1054
|
+
private showTooltip;
|
|
1055
|
+
private hideTooltip;
|
|
1056
|
+
private startDelayedHide;
|
|
1057
|
+
private hideWithAnimation;
|
|
1058
|
+
private setupTooltipButtonListeners;
|
|
1059
|
+
private setupTooltipDragListeners;
|
|
1060
|
+
private toggleMaximize;
|
|
1061
|
+
private createPinnedClone;
|
|
1062
|
+
private setupPinnedCloneListeners;
|
|
1063
|
+
private closePinnedClone;
|
|
1064
|
+
private renderTooltipContent;
|
|
1065
|
+
}
|
|
1066
|
+
/**
|
|
1067
|
+
* Create and initialize an annotation indicator
|
|
1068
|
+
*
|
|
1069
|
+
* @example
|
|
1070
|
+
* ```typescript
|
|
1071
|
+
* const indicator = await createAnnotationIndicator({
|
|
1072
|
+
* container: cardElement,
|
|
1073
|
+
* deviceId: 'device-uuid',
|
|
1074
|
+
* position: 'top-right',
|
|
1075
|
+
* onClick: () => openSettingsModal()
|
|
1076
|
+
* });
|
|
1077
|
+
* ```
|
|
1078
|
+
*/
|
|
1079
|
+
declare function createAnnotationIndicator(config: AnnotationIndicatorConfig): Promise<AnnotationIndicator>;
|
|
1080
|
+
|
|
823
1081
|
/**
|
|
824
1082
|
* Detects the device type based on the given name and context.
|
|
825
1083
|
* Uses the specified detection context to identify device types.
|
|
@@ -1766,17 +2024,20 @@ declare const DEVICE_TYPES: readonly [{
|
|
|
1766
2024
|
readonly value: "MOTOR";
|
|
1767
2025
|
readonly label: "Motor";
|
|
1768
2026
|
}, {
|
|
1769
|
-
readonly value: "
|
|
1770
|
-
readonly label: "Bomba";
|
|
2027
|
+
readonly value: "BOMBA_HIDRAULICA";
|
|
2028
|
+
readonly label: "Bomba Hidráulica";
|
|
2029
|
+
}, {
|
|
2030
|
+
readonly value: "BOMBA_CAG";
|
|
2031
|
+
readonly label: "Bomba CAG";
|
|
2032
|
+
}, {
|
|
2033
|
+
readonly value: "BOMBA_INCENDIO";
|
|
2034
|
+
readonly label: "Bomba Incêndio";
|
|
1771
2035
|
}, {
|
|
1772
2036
|
readonly value: "CHILLER";
|
|
1773
2037
|
readonly label: "Chiller";
|
|
1774
2038
|
}, {
|
|
1775
2039
|
readonly value: "AR_CONDICIONADO";
|
|
1776
2040
|
readonly label: "Ar Condicionado";
|
|
1777
|
-
}, {
|
|
1778
|
-
readonly value: "HVAC";
|
|
1779
|
-
readonly label: "HVAC";
|
|
1780
2041
|
}, {
|
|
1781
2042
|
readonly value: "FANCOIL";
|
|
1782
2043
|
readonly label: "Fancoil";
|
|
@@ -1888,6 +2149,7 @@ interface OpenDashboardPopupSettingsParams {
|
|
|
1888
2149
|
customerId?: string;
|
|
1889
2150
|
mapInstantaneousPower?: object;
|
|
1890
2151
|
deviceMapInstaneousPower?: object;
|
|
2152
|
+
superadmin?: boolean;
|
|
1891
2153
|
connectionData?: {
|
|
1892
2154
|
centralName?: string;
|
|
1893
2155
|
connectionStatusTime?: string;
|
|
@@ -1921,6 +2183,7 @@ interface OpenDashboardPopupSettingsParams {
|
|
|
1921
2183
|
i18n?: {
|
|
1922
2184
|
t: (key: string, def?: string) => string;
|
|
1923
2185
|
};
|
|
2186
|
+
consumptionDecimalPlaces?: number;
|
|
1924
2187
|
};
|
|
1925
2188
|
seed?: {
|
|
1926
2189
|
label?: string;
|
|
@@ -1931,6 +2194,7 @@ interface OpenDashboardPopupSettingsParams {
|
|
|
1931
2194
|
maxBusinessKwh?: number;
|
|
1932
2195
|
minTemperature?: number;
|
|
1933
2196
|
maxTemperature?: number;
|
|
2197
|
+
offSetTemperature?: number;
|
|
1934
2198
|
minWaterLevel?: number;
|
|
1935
2199
|
maxWaterLevel?: number;
|
|
1936
2200
|
};
|
|
@@ -2579,6 +2843,18 @@ interface TempStatusResult {
|
|
|
2579
2843
|
}
|
|
2580
2844
|
declare const TempRangeTooltip: {
|
|
2581
2845
|
containerId: string;
|
|
2846
|
+
_hideTimer: ReturnType<typeof setTimeout> | null;
|
|
2847
|
+
_isMouseOverTooltip: boolean;
|
|
2848
|
+
_isMaximized: boolean;
|
|
2849
|
+
_isDragging: boolean;
|
|
2850
|
+
_dragOffset: {
|
|
2851
|
+
x: number;
|
|
2852
|
+
y: number;
|
|
2853
|
+
};
|
|
2854
|
+
_savedPosition: {
|
|
2855
|
+
left: string;
|
|
2856
|
+
top: string;
|
|
2857
|
+
} | null;
|
|
2582
2858
|
/**
|
|
2583
2859
|
* Create or get the tooltip container
|
|
2584
2860
|
*/
|
|
@@ -2599,7 +2875,51 @@ declare const TempRangeTooltip: {
|
|
|
2599
2875
|
*/
|
|
2600
2876
|
show(triggerElement: HTMLElement, entityData: TempEntityData, event?: MouseEvent): void;
|
|
2601
2877
|
/**
|
|
2602
|
-
*
|
|
2878
|
+
* Setup hover listeners on the tooltip itself
|
|
2879
|
+
*/
|
|
2880
|
+
_setupTooltipHoverListeners(container: HTMLElement): void;
|
|
2881
|
+
/**
|
|
2882
|
+
* Setup button click listeners
|
|
2883
|
+
*/
|
|
2884
|
+
_setupButtonListeners(container: HTMLElement): void;
|
|
2885
|
+
/**
|
|
2886
|
+
* Setup drag listeners on the header
|
|
2887
|
+
*/
|
|
2888
|
+
_setupDragListeners(container: HTMLElement): void;
|
|
2889
|
+
/**
|
|
2890
|
+
* Counter for unique pinned clone IDs
|
|
2891
|
+
*/
|
|
2892
|
+
_pinnedCounter: number;
|
|
2893
|
+
/**
|
|
2894
|
+
* Create a pinned clone of the tooltip that stays on screen independently
|
|
2895
|
+
*/
|
|
2896
|
+
togglePin(): void;
|
|
2897
|
+
/**
|
|
2898
|
+
* Setup event listeners for a pinned clone
|
|
2899
|
+
*/
|
|
2900
|
+
_setupPinnedCloneListeners(clone: HTMLElement, cloneId: string): void;
|
|
2901
|
+
/**
|
|
2902
|
+
* Close and remove a pinned clone
|
|
2903
|
+
*/
|
|
2904
|
+
_closePinnedClone(cloneId: string): void;
|
|
2905
|
+
/**
|
|
2906
|
+
* Toggle maximized state
|
|
2907
|
+
*/
|
|
2908
|
+
toggleMaximize(): void;
|
|
2909
|
+
/**
|
|
2910
|
+
* Close tooltip
|
|
2911
|
+
*/
|
|
2912
|
+
close(): void;
|
|
2913
|
+
/**
|
|
2914
|
+
* Start delayed hide with animation
|
|
2915
|
+
*/
|
|
2916
|
+
_startDelayedHide(): void;
|
|
2917
|
+
/**
|
|
2918
|
+
* Hide with fade animation
|
|
2919
|
+
*/
|
|
2920
|
+
hideWithAnimation(): void;
|
|
2921
|
+
/**
|
|
2922
|
+
* Hide tooltip immediately
|
|
2603
2923
|
*/
|
|
2604
2924
|
hide(): void;
|
|
2605
2925
|
/**
|
|
@@ -2649,6 +2969,18 @@ interface EnergyStatusResult {
|
|
|
2649
2969
|
}
|
|
2650
2970
|
declare const EnergyRangeTooltip: {
|
|
2651
2971
|
containerId: string;
|
|
2972
|
+
_hideTimer: ReturnType<typeof setTimeout> | null;
|
|
2973
|
+
_isMouseOverTooltip: boolean;
|
|
2974
|
+
_isMaximized: boolean;
|
|
2975
|
+
_isDragging: boolean;
|
|
2976
|
+
_dragOffset: {
|
|
2977
|
+
x: number;
|
|
2978
|
+
y: number;
|
|
2979
|
+
};
|
|
2980
|
+
_savedPosition: {
|
|
2981
|
+
left: string;
|
|
2982
|
+
top: string;
|
|
2983
|
+
} | null;
|
|
2652
2984
|
/**
|
|
2653
2985
|
* Create or get the tooltip container
|
|
2654
2986
|
*/
|
|
@@ -2679,7 +3011,51 @@ declare const EnergyRangeTooltip: {
|
|
|
2679
3011
|
*/
|
|
2680
3012
|
show(triggerElement: HTMLElement, entityObject: EnergyEntityData, event?: MouseEvent): void;
|
|
2681
3013
|
/**
|
|
2682
|
-
*
|
|
3014
|
+
* Setup hover listeners on the tooltip itself
|
|
3015
|
+
*/
|
|
3016
|
+
_setupTooltipHoverListeners(container: HTMLElement): void;
|
|
3017
|
+
/**
|
|
3018
|
+
* Setup button click listeners
|
|
3019
|
+
*/
|
|
3020
|
+
_setupButtonListeners(container: HTMLElement): void;
|
|
3021
|
+
/**
|
|
3022
|
+
* Setup drag listeners on the header
|
|
3023
|
+
*/
|
|
3024
|
+
_setupDragListeners(container: HTMLElement): void;
|
|
3025
|
+
/**
|
|
3026
|
+
* Counter for unique pinned clone IDs
|
|
3027
|
+
*/
|
|
3028
|
+
_pinnedCounter: number;
|
|
3029
|
+
/**
|
|
3030
|
+
* Create a pinned clone of the tooltip that stays on screen independently
|
|
3031
|
+
*/
|
|
3032
|
+
togglePin(): void;
|
|
3033
|
+
/**
|
|
3034
|
+
* Setup event listeners for a pinned clone
|
|
3035
|
+
*/
|
|
3036
|
+
_setupPinnedCloneListeners(clone: HTMLElement, cloneId: string): void;
|
|
3037
|
+
/**
|
|
3038
|
+
* Close and remove a pinned clone
|
|
3039
|
+
*/
|
|
3040
|
+
_closePinnedClone(cloneId: string): void;
|
|
3041
|
+
/**
|
|
3042
|
+
* Toggle maximized state
|
|
3043
|
+
*/
|
|
3044
|
+
toggleMaximize(): void;
|
|
3045
|
+
/**
|
|
3046
|
+
* Close tooltip
|
|
3047
|
+
*/
|
|
3048
|
+
close(): void;
|
|
3049
|
+
/**
|
|
3050
|
+
* Start delayed hide with animation
|
|
3051
|
+
*/
|
|
3052
|
+
_startDelayedHide(): void;
|
|
3053
|
+
/**
|
|
3054
|
+
* Hide with fade animation
|
|
3055
|
+
*/
|
|
3056
|
+
hideWithAnimation(): void;
|
|
3057
|
+
/**
|
|
3058
|
+
* Hide tooltip immediately
|
|
2683
3059
|
*/
|
|
2684
3060
|
hide(): void;
|
|
2685
3061
|
/**
|
|
@@ -2689,6 +3065,144 @@ declare const EnergyRangeTooltip: {
|
|
|
2689
3065
|
attach(element: HTMLElement, entityData: EnergyEntityData): () => void;
|
|
2690
3066
|
};
|
|
2691
3067
|
|
|
3068
|
+
/**
|
|
3069
|
+
* EnergySummaryTooltip - Dashboard Energy Summary Tooltip Component
|
|
3070
|
+
* RFC-0105: Premium tooltip showing comprehensive energy dashboard summary
|
|
3071
|
+
*
|
|
3072
|
+
* Shows:
|
|
3073
|
+
* - Total device count
|
|
3074
|
+
* - Device counts by category (tree view)
|
|
3075
|
+
* - Consumption totals by category
|
|
3076
|
+
* - Device status breakdown (normal, alert, failure, standby, offline)
|
|
3077
|
+
*
|
|
3078
|
+
* @example
|
|
3079
|
+
* // Attach to an element
|
|
3080
|
+
* const cleanup = EnergySummaryTooltip.attach(triggerElement, getDataFn);
|
|
3081
|
+
* // Later: cleanup();
|
|
3082
|
+
*
|
|
3083
|
+
* // Or manual control
|
|
3084
|
+
* EnergySummaryTooltip.show(element, summaryData, event);
|
|
3085
|
+
* EnergySummaryTooltip.hide();
|
|
3086
|
+
*/
|
|
3087
|
+
interface CategorySummary {
|
|
3088
|
+
id: string;
|
|
3089
|
+
name: string;
|
|
3090
|
+
icon: string;
|
|
3091
|
+
deviceCount: number;
|
|
3092
|
+
consumption: number;
|
|
3093
|
+
percentage: number;
|
|
3094
|
+
children?: CategorySummary[];
|
|
3095
|
+
}
|
|
3096
|
+
interface StatusSummary {
|
|
3097
|
+
normal: number;
|
|
3098
|
+
alert: number;
|
|
3099
|
+
failure: number;
|
|
3100
|
+
standby: number;
|
|
3101
|
+
offline: number;
|
|
3102
|
+
noConsumption: number;
|
|
3103
|
+
}
|
|
3104
|
+
interface DashboardEnergySummary {
|
|
3105
|
+
totalDevices: number;
|
|
3106
|
+
totalConsumption: number;
|
|
3107
|
+
unit: string;
|
|
3108
|
+
byCategory: CategorySummary[];
|
|
3109
|
+
byStatus: StatusSummary;
|
|
3110
|
+
lastUpdated: string;
|
|
3111
|
+
}
|
|
3112
|
+
declare const EnergySummaryTooltip: {
|
|
3113
|
+
containerId: string;
|
|
3114
|
+
/**
|
|
3115
|
+
* Create or get the tooltip container
|
|
3116
|
+
*/
|
|
3117
|
+
getContainer(): HTMLElement;
|
|
3118
|
+
/**
|
|
3119
|
+
* Render category tree rows
|
|
3120
|
+
*/
|
|
3121
|
+
renderCategoryTree(categories: CategorySummary[], unit: string): string;
|
|
3122
|
+
/**
|
|
3123
|
+
* Render status matrix
|
|
3124
|
+
*/
|
|
3125
|
+
renderStatusMatrix(status: StatusSummary): string;
|
|
3126
|
+
/**
|
|
3127
|
+
* Render full tooltip HTML
|
|
3128
|
+
*/
|
|
3129
|
+
renderHTML(summary: DashboardEnergySummary): string;
|
|
3130
|
+
_hideTimer: ReturnType<typeof setTimeout> | null;
|
|
3131
|
+
_isMouseOverTooltip: boolean;
|
|
3132
|
+
_isMaximized: boolean;
|
|
3133
|
+
_isDragging: boolean;
|
|
3134
|
+
_dragOffset: {
|
|
3135
|
+
x: number;
|
|
3136
|
+
y: number;
|
|
3137
|
+
};
|
|
3138
|
+
_savedPosition: {
|
|
3139
|
+
left: string;
|
|
3140
|
+
top: string;
|
|
3141
|
+
} | null;
|
|
3142
|
+
/**
|
|
3143
|
+
* Show tooltip for an element
|
|
3144
|
+
*/
|
|
3145
|
+
show(triggerElement: HTMLElement, summary: DashboardEnergySummary, event?: MouseEvent): void;
|
|
3146
|
+
/**
|
|
3147
|
+
* Setup button click listeners (pin, maximize, close)
|
|
3148
|
+
*/
|
|
3149
|
+
_setupButtonListeners(container: HTMLElement): void;
|
|
3150
|
+
/**
|
|
3151
|
+
* Setup drag listeners on the header
|
|
3152
|
+
*/
|
|
3153
|
+
_setupDragListeners(container: HTMLElement): void;
|
|
3154
|
+
/**
|
|
3155
|
+
* Counter for unique pinned clone IDs
|
|
3156
|
+
*/
|
|
3157
|
+
_pinnedCounter: number;
|
|
3158
|
+
/**
|
|
3159
|
+
* Create a pinned clone of the tooltip that stays on screen independently
|
|
3160
|
+
*/
|
|
3161
|
+
togglePin(): void;
|
|
3162
|
+
/**
|
|
3163
|
+
* Setup event listeners for a pinned clone
|
|
3164
|
+
*/
|
|
3165
|
+
_setupPinnedCloneListeners(clone: HTMLElement, cloneId: string): void;
|
|
3166
|
+
/**
|
|
3167
|
+
* Close and remove a pinned clone
|
|
3168
|
+
*/
|
|
3169
|
+
_closePinnedClone(cloneId: string): void;
|
|
3170
|
+
/**
|
|
3171
|
+
* Toggle maximized state
|
|
3172
|
+
*/
|
|
3173
|
+
toggleMaximize(): void;
|
|
3174
|
+
/**
|
|
3175
|
+
* Close tooltip (reset all states)
|
|
3176
|
+
*/
|
|
3177
|
+
close(): void;
|
|
3178
|
+
/**
|
|
3179
|
+
* Setup hover listeners on the tooltip itself
|
|
3180
|
+
*/
|
|
3181
|
+
_setupTooltipHoverListeners(container: HTMLElement): void;
|
|
3182
|
+
/**
|
|
3183
|
+
* Start delayed hide with animation
|
|
3184
|
+
*/
|
|
3185
|
+
_startDelayedHide(): void;
|
|
3186
|
+
/**
|
|
3187
|
+
* Hide tooltip with fade animation
|
|
3188
|
+
*/
|
|
3189
|
+
hideWithAnimation(): void;
|
|
3190
|
+
/**
|
|
3191
|
+
* Hide tooltip immediately (for cleanup)
|
|
3192
|
+
*/
|
|
3193
|
+
hide(): void;
|
|
3194
|
+
/**
|
|
3195
|
+
* Attach tooltip to an element with automatic show/hide on hover
|
|
3196
|
+
* Returns cleanup function to remove event listeners
|
|
3197
|
+
*/
|
|
3198
|
+
attach(element: HTMLElement, getDataFn: () => DashboardEnergySummary): () => void;
|
|
3199
|
+
/**
|
|
3200
|
+
* Build summary data from TELEMETRY_INFO STATE
|
|
3201
|
+
* This is called by the widget controller to get data for the tooltip
|
|
3202
|
+
*/
|
|
3203
|
+
buildSummaryFromState(state: any, receivedData: any): DashboardEnergySummary;
|
|
3204
|
+
};
|
|
3205
|
+
|
|
2692
3206
|
/**
|
|
2693
3207
|
* MyIO Modal Header Component
|
|
2694
3208
|
*
|
|
@@ -3830,4 +4344,4 @@ declare function getThemeColors(theme: ThemeMode): DistributionThemeColors;
|
|
|
3830
4344
|
*/
|
|
3831
4345
|
declare function getHashColor(str: string): string;
|
|
3832
4346
|
|
|
3833
|
-
export { type BuildTemplateExportParams, CHART_COLORS, DEFAULT_COLORS as CONSUMPTION_CHART_COLORS, DEFAULT_CONFIG as CONSUMPTION_CHART_DEFAULTS, THEME_COLORS as CONSUMPTION_THEME_COLORS, type ChartDomain, type ClampRange, ConnectionStatusType, type Consumption7DaysColors, type Consumption7DaysConfig, type Consumption7DaysData, type Consumption7DaysInstance, type ChartType as ConsumptionChartType, type ConsumptionDataPoint, type IdealRangeConfig as ConsumptionIdealRangeConfig, type ConsumptionModalConfig, type ConsumptionModalInstance, type TemperatureConfig as ConsumptionTemperatureConfig, type TemperatureReferenceLine as ConsumptionTemperatureReferenceLine, type ThemeColors as ConsumptionThemeColors, type ThemeMode$1 as ConsumptionThemeMode, type VizMode as ConsumptionVizMode, type ConsumptionWidgetConfig, type ConsumptionWidgetInstance, type CreateDateRangePickerOptions, type CreateInputDateRangePickerInsideDIVParams, DEFAULT_CLAMP_RANGE, DEFAULT_ENERGY_GROUP_COLORS, DEFAULT_GAS_GROUP_COLORS, DEFAULT_SHOPPING_COLORS, DEFAULT_WATER_GROUP_COLORS, type DateRangeControl, type DateRangeInputController, type DateRangeResult, type DemandModalInstance, type DemandModalParams, type DemandModalPdfConfig, type DemandModalStyles, type DeviceStatusName, DeviceStatusType, type DeviceTypeLimits, type DistributionChartConfig, type DistributionChartInstance, type DistributionData, type DistributionDomain, type DistributionMode, type DistributionThemeColors, EXPORT_DEFAULT_COLORS, EXPORT_DOMAIN_ICONS, EXPORT_DOMAIN_LABELS, EXPORT_DOMAIN_UNITS, type EnergyEntityData, type EnergyModalContext, type EnergyModalError, type EnergyModalI18n, type EnergyModalStyleOverrides, EnergyRangeTooltip, type EnergyStatus, type EnergyStatusResult, type ExportColorsPallet, type ExportComparisonData, type ExportConfigTemplate, type ExportCustomerData, type ExportCustomerInfo, type ExportData, type ExportDataInput, type ExportDataInstance, type ExportDataPoint, type ExportDeviceInfo, type ExportDomain, type ExportFormat, type ExportGroupData, type ExportOptions, type ExportProgressCallback, type ExportResult, type ExportStats, type ExportType, type GroupColors, type InstantaneousPowerLimits, type ExportFormat$1 as ModalExportFormat, type ModalHeaderConfig, type ModalHeaderInstance, type ModalTheme, type MyIOAuthConfig, type MyIOAuthInstance, MyIOChartModal, MyIODraggableCard, MyIOSelectionStore, MyIOSelectionStoreClass, MyIOToast, type OpenDashboardPopupEnergyOptions, type OpenDashboardPopupSettingsParams, type OpenDashboardPopupWaterTankOptions, DEVICE_TYPES as POWER_LIMITS_DEVICE_TYPES, STATUS_CONFIG as POWER_LIMITS_STATUS_CONFIG, TELEMETRY_TYPES as POWER_LIMITS_TELEMETRY_TYPES, type PersistResult, type PowerLimitsError, type PowerLimitsFormData, type PowerLimitsModalInstance, type PowerLimitsModalParams, type PowerLimitsModalStyles, type PowerRange, type PowerRanges, type RealTimeTelemetryInstance, type RealTimeTelemetryParams, type SettingsError, type SettingsEvent, type ShoppingColors, type ShoppingDataPoint, type StatusLimits, type StoreRow, type TbScope, type TelemetryFetcher, type TelemetryTypeLimits, type TempEntityData, TempRangeTooltip, type TempStatus, type TempStatusResult, type TemperatureComparisonModalInstance, type TemperatureComparisonModalParams, type TemperatureDevice, type TemperatureGranularity, type TemperatureModalInstance, type TemperatureModalParams, type TemperatureSettingsInstance, type TemperatureSettingsParams, type TemperatureStats, type TemperatureTelemetry, type ThingsboardCustomerAttrsConfig, type TimedValue, type WaterRow, type WaterTankDataPoint, type WaterTankModalContext, type WaterTankModalError, type WaterTankModalI18n, type WaterTankModalStyleOverrides, type WaterTankTelemetryData, addDetectionContext, addNamespace, aggregateByDay, assignShoppingColors, averageByDay, buildListItemsThingsboardByUniqueDatasource, buildMyioIngestionAuth, buildTemplateExport, buildWaterReportCSV, buildWaterStoresCSV, calcDeltaPercent, calculateDeviceStatus, calculateDeviceStatusWithRanges, calculateStats as calculateExportStats, calculateStats$1 as calculateStats, clampTemperature, classify, classifyWaterLabel, classifyWaterLabels, clearAllAuthCaches, connectionStatusIcons, createConsumption7DaysChart, createConsumptionChartWidget, createConsumptionModal, createDateRangePicker, createDistributionChartWidget, createInputDateRangePickerInsideDIV, createModalHeader, decodePayload, decodePayloadBase64Xor, detectDeviceType, determineInterval, deviceStatusIcons, exportTemperatureCSV, exportToCSV, exportToCSVAll, extractMyIOCredentials, fetchTemperatureData, fetchThingsboardCustomerAttrsFromStorage, fetchThingsboardCustomerServerScopeAttrs, findValue, findValueWithDefault, fmtPerc$1 as fmtPerc, fmtPerc as fmtPercLegacy, formatAllInSameUnit, formatAllInSameWaterUnit, formatDateForInput, formatDateToYMD, formatDateWithTimezoneOffset, formatDuration, formatEnergy, formatNumberReadable, formatRelativeTime, formatTankHeadFromCm, formatTemperature, formatWater, formatWaterByGroup, formatWaterVolumeM3, formatarDuracao, generateFilename as generateExportFilename, getAuthCacheStats, getAvailableContexts, getConnectionStatusIcon, getDateRangeArray, getDefaultGroupColors, getDeviceStatusIcon, getDeviceStatusInfo, getThemeColors as getDistributionThemeColors, getGroupColor, getHashColor, getModalHeaderStyles, getSaoPauloISOString, getSaoPauloISOStringFixed, getShoppingColor, getValueByDatakey, getValueByDatakeyLegacy, getWaterCategories, groupByDay, interpolateTemperature, isDeviceOffline, isValidConnectionStatus, isValidDeviceStatus, isWaterCategory, mapConnectionStatus, mapDeviceStatusToCardStatus, mapDeviceToConnectionStatus, myioExportData, normalizeRecipients, numbers, openDashboardPopup, openDashboardPopupAllReport, openDashboardPopupEnergy, openDashboardPopupReport, openDashboardPopupSettings, openDashboardPopupWaterTank, openDemandModal, openGoalsPanel, openPowerLimitsSetupModal, openRealTimeTelemetryModal, openTemperatureComparisonModal, openTemperatureModal, openTemperatureSettingsModal, parseInputDateToDate, renderCardComponent$2 as renderCardComponent, renderCardComponent$1 as renderCardComponentEnhanced, renderCardComponentHeadOffice, renderCardComponentLegacy, renderCardComponentV2, renderCardComponent as renderCardComponentV5, renderCardComponentV5 as renderCardV5, shouldFlashIcon, strings, timeWindowFromInputYMD, toCSV, toFixedSafe, waterDeviceStatusIcons };
|
|
4347
|
+
export { ANNOTATION_TYPE_COLORS, ANNOTATION_TYPE_LABELS, ANNOTATION_TYPE_LABELS_EN, type Annotation, type AnnotationFilterState, AnnotationIndicator, type AnnotationIndicatorConfig, type AnnotationIndicatorTheme, type AnnotationStatus, type AnnotationSummary, type AnnotationType, type AuditAction, type AuditEntry, type BuildTemplateExportParams, CHART_COLORS, DEFAULT_COLORS as CONSUMPTION_CHART_COLORS, DEFAULT_CONFIG as CONSUMPTION_CHART_DEFAULTS, THEME_COLORS as CONSUMPTION_THEME_COLORS, type CategorySummary, type ChartDomain, type ClampRange, ConnectionStatusType, type Consumption7DaysColors, type Consumption7DaysConfig, type Consumption7DaysData, type Consumption7DaysInstance, type ChartType as ConsumptionChartType, type ConsumptionDataPoint, type IdealRangeConfig as ConsumptionIdealRangeConfig, type ConsumptionModalConfig, type ConsumptionModalInstance, type TemperatureConfig as ConsumptionTemperatureConfig, type TemperatureReferenceLine as ConsumptionTemperatureReferenceLine, type ThemeColors as ConsumptionThemeColors, type ThemeMode$1 as ConsumptionThemeMode, type VizMode as ConsumptionVizMode, type ConsumptionWidgetConfig, type ConsumptionWidgetInstance, type CreateDateRangePickerOptions, type CreateInputDateRangePickerInsideDIVParams, DEFAULT_CLAMP_RANGE, DEFAULT_ENERGY_GROUP_COLORS, DEFAULT_GAS_GROUP_COLORS, DEFAULT_SHOPPING_COLORS, DEFAULT_WATER_GROUP_COLORS, type DashboardEnergySummary, type DateRangeControl, type DateRangeInputController, type DateRangeResult, type DemandModalInstance, type DemandModalParams, type DemandModalPdfConfig, type DemandModalStyles, type DeviceStatusName, DeviceStatusType, type DeviceTypeLimits, type DistributionChartConfig, type DistributionChartInstance, type DistributionData, type DistributionDomain, type DistributionMode, type DistributionThemeColors, EXPORT_DEFAULT_COLORS, EXPORT_DOMAIN_ICONS, EXPORT_DOMAIN_LABELS, EXPORT_DOMAIN_UNITS, type EnergyEntityData, type EnergyModalContext, type EnergyModalError, type EnergyModalI18n, type EnergyModalStyleOverrides, EnergyRangeTooltip, type EnergyStatus, type EnergyStatusResult, EnergySummaryTooltip, type ExportColorsPallet, type ExportComparisonData, type ExportConfigTemplate, type ExportCustomerData, type ExportCustomerInfo, type ExportData, type ExportDataInput, type ExportDataInstance, type ExportDataPoint, type ExportDeviceInfo, type ExportDomain, type ExportFormat, type ExportGroupData, type ExportOptions, type ExportProgressCallback, type ExportResult, type ExportStats, type ExportType, type GroupColors, IMPORTANCE_COLORS, IMPORTANCE_LABELS, IMPORTANCE_LABELS_EN, type ImportanceLevel, type InstantaneousPowerLimits, type LogAnnotationsAttribute, type ExportFormat$1 as ModalExportFormat, type ModalHeaderConfig, type ModalHeaderInstance, type ModalTheme, type MyIOAuthConfig, type MyIOAuthInstance, MyIOChartModal, MyIODraggableCard, MyIOSelectionStore, MyIOSelectionStoreClass, MyIOToast, type NewAnnotationData, type OpenDashboardPopupEnergyOptions, type OpenDashboardPopupSettingsParams, type OpenDashboardPopupWaterTankOptions, DEVICE_TYPES as POWER_LIMITS_DEVICE_TYPES, STATUS_CONFIG as POWER_LIMITS_STATUS_CONFIG, TELEMETRY_TYPES as POWER_LIMITS_TELEMETRY_TYPES, type PaginationState, type PermissionSet, type PersistResult, type PowerLimitsError, type PowerLimitsFormData, type PowerLimitsModalInstance, type PowerLimitsModalParams, type PowerLimitsModalStyles, type PowerRange, type PowerRanges, type RealTimeTelemetryInstance, type RealTimeTelemetryParams, STATUS_COLORS, STATUS_LABELS, STATUS_LABELS_EN, type SettingsError, type SettingsEvent, type ShoppingColors, type ShoppingDataPoint, type StatusLimits, type StatusSummary, type StoreRow, type TbScope, type TelemetryFetcher, type TelemetryTypeLimits, type TempEntityData, TempRangeTooltip, type TempStatus, type TempStatusResult, type TemperatureComparisonModalInstance, type TemperatureComparisonModalParams, type TemperatureDevice, type TemperatureGranularity, type TemperatureModalInstance, type TemperatureModalParams, type TemperatureSettingsInstance, type TemperatureSettingsParams, type TemperatureStats, type TemperatureTelemetry, type ThingsboardCustomerAttrsConfig, type TimedValue, type UserInfo, type WaterRow, type WaterTankDataPoint, type WaterTankModalContext, type WaterTankModalError, type WaterTankModalI18n, type WaterTankModalStyleOverrides, type WaterTankTelemetryData, addDetectionContext, addNamespace, aggregateByDay, assignShoppingColors, averageByDay, buildListItemsThingsboardByUniqueDatasource, buildMyioIngestionAuth, buildTemplateExport, buildWaterReportCSV, buildWaterStoresCSV, calcDeltaPercent, calculateDeviceStatus, calculateDeviceStatusWithRanges, calculateStats as calculateExportStats, calculateStats$1 as calculateStats, canModifyAnnotation, clampTemperature, classify, classifyWaterLabel, classifyWaterLabels, clearAllAuthCaches, connectionStatusIcons, createAnnotationIndicator, createConsumption7DaysChart, createConsumptionChartWidget, createConsumptionModal, createDateRangePicker, createDistributionChartWidget, createInputDateRangePickerInsideDIV, createModalHeader, decodePayload, decodePayloadBase64Xor, detectDeviceType, detectSuperAdminHolding, detectSuperAdminMyio, determineInterval, deviceStatusIcons, exportTemperatureCSV, exportToCSV, exportToCSVAll, extractMyIOCredentials, fetchCurrentUserInfo, fetchTemperatureData, fetchThingsboardCustomerAttrsFromStorage, fetchThingsboardCustomerServerScopeAttrs, findValue, findValueWithDefault, fmtPerc$1 as fmtPerc, fmtPerc as fmtPercLegacy, formatAllInSameUnit, formatAllInSameWaterUnit, formatDateForInput, formatDateToYMD, formatDateWithTimezoneOffset, formatDuration, formatEnergy, formatNumberReadable, formatRelativeTime, formatTankHeadFromCm, formatTemperature, formatWater, formatWaterByGroup, formatWaterVolumeM3, formatarDuracao, generateFilename as generateExportFilename, getAnnotationPermissions, getAuthCacheStats, getAvailableContexts, getConnectionStatusIcon, getDateRangeArray, getDefaultGroupColors, getDeviceStatusIcon, getDeviceStatusInfo, getThemeColors as getDistributionThemeColors, getGroupColor, getHashColor, getModalHeaderStyles, getSaoPauloISOString, getSaoPauloISOStringFixed, getShoppingColor, getValueByDatakey, getValueByDatakeyLegacy, getWaterCategories, groupByDay, interpolateTemperature, isDeviceOffline, isValidConnectionStatus, isValidDeviceStatus, isWaterCategory, mapConnectionStatus, mapDeviceStatusToCardStatus, mapDeviceToConnectionStatus, myioExportData, normalizeRecipients, numbers, openDashboardPopup, openDashboardPopupAllReport, openDashboardPopupEnergy, openDashboardPopupReport, openDashboardPopupSettings, openDashboardPopupWaterTank, openDemandModal, openGoalsPanel, openPowerLimitsSetupModal, openRealTimeTelemetryModal, openTemperatureComparisonModal, openTemperatureModal, openTemperatureSettingsModal, parseInputDateToDate, renderCardComponent$2 as renderCardComponent, renderCardComponent$1 as renderCardComponentEnhanced, renderCardComponentHeadOffice, renderCardComponentLegacy, renderCardComponentV2, renderCardComponent as renderCardComponentV5, renderCardComponentV5 as renderCardV5, shouldFlashIcon, strings, timeWindowFromInputYMD, toCSV, toFixedSafe, waterDeviceStatusIcons };
|