@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
129 lines (128 loc) • 5.75 kB
TypeScript
import { DoCheck, ElementRef, KeyValueDiffers, OnInit } from '@angular/core';
import * as i0 from "@angular/core";
/**
* SME directive to wrap around telemetry tags for convenience and control. JSLL and 1DS use these to add information to telemetry events.
*/
export declare class TelemetryDirective implements DoCheck, OnInit {
private elementRef;
private kvDiffers;
/**
* JSLL/1DS main tag labels - all tags are supported (data-bi-*) but these are the main labels and are
* specifically checked for in various cases.
*/
private static readonly idLabel;
private static readonly areaNameLabel;
private static readonly slotNumberLabel;
private static readonly contentNameLabel;
private static readonly contentSourceLabel;
private static readonly templateNameLabel;
private static readonly productIdLabel;
private static readonly contentTypeLabel;
private static readonly disableAutomaticTrackingLabel;
private static readonly disableElementTrackingLabel;
private static readonly directivePrefix;
private static readonly labeledDirectives;
/**
* The source name to use for logging
*/
protected get logSourceName(): string;
/**
* Content to specify custom directives on
*/
smeTelemetry: any;
/**
* Adds data-bi-id
*/
set telemetryId(value: string);
get telemetryId(): string;
/**
* Adds data-bi-area
*/
set areaName(value: string);
get areaName(): string;
/**
* Adds data-bi-slot
*/
set slotNumber(value: string);
get slotNumber(): string;
/**
* Adds data-bi-name
*/
set contentName(value: string);
get contentName(): string;
/**
* Adds data-bi-source
*/
set contentSource(value: string);
get contentSource(): string;
/**
* Adds data-bi-type
*/
set contentType(value: string);
get contentType(): string;
/**
* Adds data-bi-view
*/
set templateName(value: string);
get templateName(): string;
/**
* Adds data-bi-product
*/
set productId(value: string);
get productId(): string;
/**
* Adds each field in JSON object to element. Allows for custom element typings. Data-m has a similar behavior, but splitting up
* the individual fields works together with lineage component, whereas specifying data-m blocks the lineage handling (ie cannot pull
* tags from higher or lower in the DOM tree)
* This uses the ngDoCheck to change DOM mainly, this setter is used for the initial object set.
*/
set dataBlob(value: any);
get dataBlob(): any;
/**
* Adds data-bi-mto
* Removes the element from being subject to default automatic tracking.
*/
set disableAutomaticTracking(value: boolean);
get disableAutomaticTracking(): boolean;
/**
* Adds data-bi-dnt
* Removes element from all telemetry events.
*/
set disableElementTracking(value: boolean);
get disableElementTracking(): boolean;
/**
* Initialize differ for data blob so it constantly updates based on object.
* Also, check if smeTelemetry specified. If so, search for anything with smeTelemetry prefix and add data-bi telemetry
* tags. This allows for any singular addition of a data-bi- tag, as opposed to dataBlob which uses an object to retrieve fields.
* Due to Angular limitations we cannot bind to any custom SmeTelemetry____ directive, limiting it to mainly use for
* static data-bi- labels. Custom directives, if not part of data blob, should primarily stem from the data-bi-
* dictionary for adding target fields in telemetry.
* See https://martech.azurewebsites.net/website-tools/jsll/references/data-bi-event-dictionary/
* @param elementRef Element with the directive
* @param kvDiffers KeyValue differs for dataBlob
*/
constructor(elementRef: ElementRef, kvDiffers: KeyValueDiffers);
private dataBlobDiffer;
/**
* Internal variable holders
*/
private internalId;
private internalAreaName;
private internalSlotNumber;
private internalContentName;
private internalContentSource;
private internalTemplateName;
private internalProductId;
private internalContentType;
private internalDisableAutomaticTracking;
private internalDisableElementTracking;
private internalDataBlob;
ngOnInit(): void;
/**
* Handle changes to data blob object, needed b/c data object will update without triggering setter.
* Selectively update DOM fields based on individual changes.
*/
ngDoCheck(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<TelemetryDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<TelemetryDirective, "[smeTelemetry], [smeTelemetryId], [smeTelemetryArea], [smeTelemetrySlot], [smeTelemetryContentName], [smeTelemetryContentSource], [smeTelemetryContentType], [smeTelemetryTemplate], [smeTelemetryProduct], [smeTelemetryDataBlob], [smeTelemetryDisableAuto], [smeTelemetryDisableElement]", never, { "smeTelemetry": "smeTelemetry"; "telemetryId": "smeTelemetryId"; "areaName": "smeTelemetryArea"; "slotNumber": "smeTelemetrySlot"; "contentName": "smeTelemetryContentName"; "contentSource": "smeTelemetryContentSource"; "contentType": "smeTelemetryContentType"; "templateName": "smeTelemetryTemplate"; "productId": "smeTelemetryProduct"; "dataBlob": "smeTelemetryDataBlob"; "disableAutomaticTracking": "smeTelemetryDisableAuto"; "disableElementTracking": "smeTelemetryDisableElement"; }, {}, never, never, false, never>;
}