From c72989cb8b8b5128ba3a7aaf64f9e86c8ef194c2 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Thu, 23 Feb 2023 11:18:07 +0100 Subject: [PATCH] add pretty detail box --- .../workspace/donut-chart/donut-chart.ts | 75 +++++++++++++++---- .../workspace/donut-chart/donut-slice.ts | 4 +- .../logviewer-root-workspace.element.ts | 3 +- 3 files changed, 66 insertions(+), 16 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/donut-chart/donut-chart.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/donut-chart/donut-chart.ts index 5bd216e8a8..e8e7d11b3c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/donut-chart/donut-chart.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/donut-chart/donut-chart.ts @@ -25,6 +25,9 @@ export class UmbDonutChartElement extends LitElement { UUITextStyles, css` path { + pointer-events: visibleFill; + } + .circle { filter: url(#erode); } @@ -44,13 +47,18 @@ export class UmbDonutChartElement extends LitElement { } #details-box { - background: #f00; - width: 20px; - height: 20px; + background: #ffffffe6; + border: 1px solid var(--uui-color-border-standalone); + border-radius: var(--uui-border-radius); + box-sizing: border-box; top: 0; left: 0; position: absolute; opacity: 0; + padding: 0.5em; + line-height: 1.5; + font-size: var(--uui-type-small-size); + box-shadow: var(--uui-shadow-depth-1); transform: translate3d(var(--pos-x), var(--pos-y), 0); transition: transform 0.2s cubic-bezier(0.02, 1.23, 0.79, 1.08); transition: opacity 150ms linear; @@ -59,6 +67,18 @@ export class UmbDonutChartElement extends LitElement { #details-box.show { opacity: 1; } + + #details-box uui-icon { + /* optically correct alignment */ + color: var(--umb-donut-detail-color); + margin-right: 0.2em; + } + + #details-title { + font-weight: bold; + display: flex; + align-items: center; + } `, ]; @@ -98,6 +118,18 @@ export class UmbDonutChartElement extends LitElement { @state() posX = 0; + @state() + detailName = ''; + + @state() + detailAmount = 0; + + @state() + detailPercent = 0; + + @state() + detailColor = 'red'; + #printCircles(event: Event) { event.stopPropagation(); this.circles = this.#addCommands( @@ -150,11 +182,22 @@ export class UmbDonutChartElement extends LitElement { const rect = this.container.getBoundingClientRect(); const x = event.clientX - rect.left; const y = event.clientY - rect.top; - this.posX = x; - this.posY = y - 30; + this.posX = x - 10; + this.posY = y - 70; + } + + #setDetailsBoxData(event: MouseEvent) { + const target = event.target as SVGPathElement; + const index = target.dataset.index as unknown as number; + const circle = this.circles[index]; + this.detailName = circle.name; + this.detailAmount = circle.percent; + this.detailPercent = circle.percent; + this.detailColor = circle.color; } #showDetailsBox(event: MouseEvent) { + this.#setDetailsBoxData(event); this.detailsBox.classList.add('show'); } @@ -164,7 +207,6 @@ export class UmbDonutChartElement extends LitElement { #renderCircles() { return svg` - + `; } render() { return html`