{ "version": 3, "sources": ["src/app/pages/general/elevate-tooltip/elevate-tooltip.component.ts", "src/app/pages/general/elevate-tooltip/elevate-tooltip.component.html"], "sourcesContent": ["import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TooltipAllModule } from '@syncfusion/ej2-angular-popups';\nimport { StackEditorComponent } from 'ngx-stackedit';\nimport { TooltipDirective } from 'src/app/directives/tooltip.directive';\nimport { UserService } from 'src/app/services/user.service';\n\nexport enum elevateTips {\n empty = 0,\n eob_app_alloc_requestOwner = 1,\n eob_app_alloc_requestStatus = 2\n}\n\n\nexport type TooltipData = { styles?: {}, content: string }\nexport type TooltipEntries = { [key: string]: TooltipData }\n\ntype eTip = {\n Id: string;\n tipText: string;\n style?: string;\n}\n\n@Component({\n selector: 'elevate-tooltip',\n templateUrl: './elevate-tooltip.component.html',\n styleUrls: ['./elevate-tooltip.component.scss'],\n imports: [\n TooltipAllModule,\n TooltipDirective,\n StackEditorComponent,\n MatIconModule\n ],\n standalone: true,\n encapsulation: ViewEncapsulation.None\n })\n\n export class ElevateTipComponent implements OnInit {\n @Input() tipTitle?: string; // Backwards compatibility\n @Input() tipData?: TooltipData;\n @Input() label: string = null;\n @Input() size = 12;\n\n private readonly defaultStyles = {\n width: \"500px\",\n height: \"300px\",\n minHeight: \"100px\",\n maxHeight: \"500px\",\n overflowY: \"auto\"\n }\n public styles = \"\";\n\n // Links used in original tooltips - we'll relete all of this once the relevant components have their own tooltips.ts files.\n linkDTHostUnits: string = \"Host Unit Hours\";\n linkDEMUnits: string = \"DEM Units\";\n linkAppSecUnits: string = \"AppSec ASUs\";\n linkDTRUM: string = \"Click Here\";\n linkDTOAInfra: string = \"Click Here\";\n linkDTOAFullstack: string = \"Click Here\";\n linkDTAppSec: string = \"Click Here\";\n imgBigDTLogo: string = \"
\"\n linkDDUnits: string = \"Davis Data Units\";\n linkDTDDU: string = \"Click Here\";\n linkMSUnits: string = \"\";\n linkDTMSU: string = \"\";\n\n eTips: eTip[] = [\n { Id: \"Dynatrace Request Owner\", style: \"height: 50px;\", tipText: \"

The Request Owner is the User/Group/Org that has been Assigned as Accountable for this Allocation Request. By Default the Creator of the Request is Owner and Accountable.

\" },\n { Id: \"Dynatrace Request Status\", tipText: \"

New: Estimating

This status indicates that the allocation exists for capacity and cost estimation only. Will not show up as a request for EOT consideration.

\"+\n \"

New: Waiting on EOT Response

This status places the Dynatrace request in the EOT's queue of new requests, awaiting a response. Once progressed to In Review no other changes will be permitted on the allocation by the App/Platform team except to Withdraw the request

\"+\n \"

In Review: Waiting on EOT Response

This status indicates the App/Platform Dynatrace deployment is on hold and wait until the EOT has reviewed the new information submitted.

\"+\n \"

Info Needed: Waiting on App/Platform Response

The App/Platform is being considered within a Coverage phase but more information is needed by EOT. A project Task is open to track and collaborate on this request (see Allocation Task for Details).

\"+\n \"

Completed

This Allocation request is finalized and cannot be reopen

\" },\n { Id: \"Dynatrace Request Disposition\", style: \"height: 300px;\", tipText: \"

Hold Deployment

The App/Platform team is ask to hold-off until the EOT can verify capacity, support, provisioning and licensing capacity.

\"+\n \"

Denied

The Enterprise request for deployment has been declined, may be due to support, licensing, capacity, capability or a variety of other reasons.

\"+\n \"

Appoved

This status indicates the App/Platform Dynatrace deployment and the progress of that approval. See Application Tasks to view related activities

\"+\n \"

Withdrawn

The Request is over and has been Ended by Either the EOT or App/Platform team. Either EOT and/or App/Platform team can re-open the request, however, it will be immediately placed back into New status.

\" },\n { Id: \"Allocation Cost Center\", style: \"height: 100px;\", tipText: \"

The Cost Center selected in the Allocation only serves to perform Cost Estimation Allocations. Cost Centers in Elevate have a default Rate Group by which they calculate the configured chargeback costs. If no Cost Center is selected then Cost Estimations will be excluded from the allocation.

\" },\n\n { Id: \"Provider\", style: \"height: 125px;\", tipText: \"

An Instrumental part of Elevates Observability Blueprinting is capturing all of the Infrastructure providers that will are involved in Application/Platform deployments. Providers refer to any company that is responsible for providing the physical/virtual infrastructure to be monitored. For example the common cloud providers that will often show up here, like, Azure, AWS, Google, etc. The Enterprise should also appear to indicate all on-premise hardware and/or internal private clouds.

\" },\n { Id: \"Region\", style: \"height: 150px;\", tipText: \"

For every provider that appears in the Blueprint, they should all have one or more regions where the infrastructure is located. Not only should we be consistent with how Cloud architectures are captured but it dramatically helps in organizing observed entities and telemetry targets. The regions should exactly match the regions for each of their respective cloud providers and if the provider is the Enterprise itself those regions should either be aligned with exactly how the Enterprise codes them and, if not then they should be aligned with one of the common cloud providers preferred by the Enterprise.

\" },\n { Id: \"Location/DataCenter\", style: \"height: 200px;\", tipText: \"

These are used interchangeably in Elevate. The reason its identified either or, is because many Enterprises have large numbers of branch offices (locations) that may be monitored. However, more commonly these will be data centers where large shared infrastructure is located. This is where the Apps/Platforms are deployed and Dynatrace Agents reside. When defining the data centers for common Cloud providers these are interchangeable with what Cloud Providers refer to as Availability Zones. Therefore, when defining a data center for a cloud provider it should exactly match the name of the Availability Zone. Often times, Enterprises will assign their locations / data centers with a short name or code in which case these should match theirs for clarity within reporting and the interface.

\" },\n { Id: \"Zone\", style: \"height: 100px;\", tipText: \"

A subgrouping of IT assets that restrict access to other IT assets. The most common definition being a domain of a network that represents the logical hierarchy of subnetworks such as DMZ, Secure, and Internal. This can also extend to use cases in the public cloud where specific accounts/subscriptions are limited by security constraints.

\" },\n { Id: \"Dynatrace Needed By\", style: \"height: 125px;\", tipText: \"

This is the date that the App/Platform team is requesting to have Dynatrace deployed for their App/Platform Logical Environment and Location. While this may be the desired date the EOT may require more time and the team should confirm/negotiate the actual viable dates with the Enterprise. The EOT is ultimately capacity planning for a group of applications for a specific deployment Goal Date

\" },\n { Id: \"Allocation Need Ends\", style: \"height: 100px;\", tipText: \"

Allocation End Dates are typically chosen under a variety of reasons. The App/Platform may be migrating to a different location/data center, cloud provider, or major changes need to be made and this is used to expire this allocation and request a completely new one for this location and environment.

\" },\n { Id: \"Footprint\", style: \"height: 150px;\", tipText: \"

The App/Platform may have entirely different Footprints that they deploy to. For example an Application that have a legacy on-premise version that deploys to bare-metal boxes may also be migrating their application to a hybrid or fully-hosted version in the Cloud. These type of scenarios can be managed using Footprints as a way to divide the Application's deployment schemes and monitoring differently while maintaining the fact that it's still the same application.

\" },\n { Id: \"Logical Environment\", style: \"height: 300px;\", tipText: \"

An Applications Logical Environment typically depicts the primary purpose of the App/Platform deployed binaries/code. While each Application:Footprint may have a wide variety of Logical Environments for which they deploy, it is best to standardize on a more finite list when Managing observability and \"+\n \"requesting Dynatrace coverage. While Elevate accomodates the ability to capture each applications Logical Environment names exactly it is better to standarize on a more finite list of \"+\n \"PROD and NON-PROD environments. It's also very important to maintain a very distinct separation between PROD and NONPROD environments since the EOT will often send Dynatrace Agent Data to \"+\n \"different environments depending on PROD and NON-PROD. We also do not want Dynatrace Davis AI blending traffic and activity for the two when evaluating baselines, performance and Problems.

\"+\n \"If none of the Logical Environments listed properly represent the need then a new one can be created by navigating into EOB->Applications->(Choose the Footprint) and finally under the Footprint profile it can be added accordingly.

\" },\n { Id: \"Assignments\", tipText: \"Assignments on Projects only have an effect if the Project has been set to a Privacy of Restricted.\" },\n { Id: \"Test\", tipText: \"Some test data\" },\n { Id: \"Dynatrace Requests\", tipText: \"Any Enterprise Application or Platform that requires consumption of Dynatrace capabilities should ultimately have Dynatrace Allocation Requests entered which helps the Enterprise build a certain budget of each Dynatrace daily license consumption type that the App/Platform needs or will require.

The Dynatrace allocation requests are used to manage all Enterprise requests and observability demands. This demand drives License expectations, provisioning requiremens, helps prioritize needs and forecast costs.

Using Elevates ability to manage such allocations ensures that License purchases vs use and consumption are prioritized and targeted for the intended systems, environments and/or data centers. It also helps ensure Dynatrace hardware provisioning is in line with expectations.\"+\n \" Observability Allocations are performed within the EOB for Enterprise Applications and/or Enterprise Platforms. Large volumes of allocations can be loaded using the EOB import.\"},\n { Id: \"Dynatrace Claims\", style: \"height: 475px;\", tipText: \"These are a list of Dynatrace Environments that can be searched to obtain entities related to the given Application and/or Platform. The results of the combined searches will be used to verify that the Application and/or Platform team can claim what is found in their Dynatrace environment(s) are accurately represented. \" +\n \"

To setup an Observability Claim, one simply enters a Dynatrace Environment, the Dynatrace search strategy, ie Management Zone and/or DQL that maintains the rules of the Entities to be identified, along with some attributes and metadata mining rules. \"+\n \"Elevate will provide a verification and validation process. This is very important to help ensure quality of coverage for each Application or Platform. We will also rely on these claims for many other automated processes within Elevate. The verified claims will be used to determine:

\"+\n \" - Captured daily consumption trends vs forecasted
\"+\n \" - Chargeback Accounting and Calculations
\"+\n \" - Pre-requisite for determining Observability Implementation Scores
\"+\n \" - Accuracy of Enterprise Coverage/Configuration vs Requested Allocations

\" +\n \"If it’s determined that certain entities are simply missing from the Dynatrace management zone, Elevate will provide a link directly to the Dynatrace management zone that needs to be modified. Since Davis AI delivers problems to the Management Zone we want to be sure all of the relevant changes occur in Dynatrace to fix what is seen. Therefore, ensure the Dynatrace management zone rules are accurate otherwise adjust them in Dynatrace in order to verify those changes in Elevate’ s Observability Claims screen.\"},\n { Id: \"OneAgent Infra Only\", style: \"height: 175px;\", tipText: \"Dynatrace OneAgent Infrastructure Monitoring Host Unit Capactiy Request. This is the expected AVG \"+this.linkDTHostUnits+\" operating in INFRA_ONLY throughout a single day, for this App/Platform footprint, within it's Logical deployment Environment and Location. To understand Dynatrace Infrastructure Only monitoring \" + this.linkDTOAInfra + '

' + this.imgBigDTLogo },\n { Id: \"OneAgent Fullstack\", style: \"height: 175px;\", tipText: \"Dynatrace OneAgent Fullstack Monitoring Host Unit Capacity Request. This is the expected AVG \"+this.linkDTHostUnits+\" operating in FULLSTACK throughout a single day, for this App/Platform footprint, within it's Logical deployment Environment and Location. To understand Dynatrace Fullstack monitoring capabilities \" + this.linkDTOAFullstack + '

' + this.imgBigDTLogo },\n { Id: \"Dynatrace DEM\", style: \"height: 175px;\", tipText: \"Dynatrace Digital Experience Monitoring Daily Capacity Request. This is the expected AVG \"+this.linkDEMUnits+\" estimated throughout a single day, for this App/Platform footprint, within it's Logical deployment Environment and Location. To also understand Dynatrace's Real User Monitoring capabilities \" + this.linkDTRUM + '

' + this.imgBigDTLogo },\n { Id: \"Dynatrace AppSec\", style: \"height: 175px;\", tipText: \"Dynatrace Application Security Monitoring Daily Capacity Request. This is the expected AVG DAILY \"+this.linkAppSecUnits+\" estimated throughout a single day, for this App/Platform footprint, within it's Logical deployment Environment and Location. To better understand Dynatrace's Application Security capabilities \" + this.linkDTAppSec + '

' + this.imgBigDTLogo },\n { Id: \"Dynatrace DDUs\", style: \"height: 175px;\", tipText: \"Dynatrace Davis Data Units Request. This is the expected AVG \"+this.linkDDUnits+\" estimated throughout a single day, for this App/Platform footprint, within it's Logical deployment Environment and Location. To better understand Dynatrace's DDU for Log Management/Ingestion \" + this.linkDTDDU + '

' + this.imgBigDTLogo },\n { Id: \"Dynatrace MSUs\", style: \"height: 175px;\", tipText: \"Dynatrace Mainframe Volume Request. This is the expected AVG \"+this.linkMSUnits+\" estimated throughout a single day, for this App/Platform footprint, within it's Logical deployment Environment and Location. To better understand Dynatrace Data Units \" + this.linkDTMSU + '

' + this.imgBigDTLogo }\n ];\n\n showTooltip = false;\n\n private _sub;\n constructor(private readonly user: UserService) { }\n\n ngOnInit() {\n // Temporary, for backwards compatibility\n if (this.tipTitle) {\n const eTip = this.eTips.find(tip => tip.Id == this.tipTitle);\n if (eTip)\n this.tipData = {\n styles: eTip.style,\n content: eTip.tipText\n }\n }\n\n this._sub = this.user.preferences$.subscribe(p => {\n this.showTooltip = p.general?.tooltips != \"omit\" && !!this.tipData;\n });\n\n this.styles = Object\n .entries({ ...this.defaultStyles, ...this.tipData?.styles })\n .map(([key, value]) => this.toCSSStyleName(key) + \": \" + value).join(\"; \");\n }\n\n ngOnDestroy() {\n this._sub?.unsubscribe();\n }\n\n toCSSStyleName(styleName: string): string {\n const cssName: string[] = [];\n for (let i = 0; i < styleName.length; i++) {\n if (i !== 0 && styleName[i].toUpperCase() === styleName[i]) cssName.push('-');\n cssName.push(styleName[i].toLowerCase());\n }\n return cssName.join(\"\");\n }\n}\n", "
\n @if (label) {\n \n }\n help\n
\n\n \n\n"], "mappings": "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", "names": ["elevateTips"] }