From 3767edce04167feea9a88b6b6efaf416fddac0ce Mon Sep 17 00:00:00 2001 From: Lorenz Padberg Date: Thu, 11 Aug 2022 17:11:29 +0200 Subject: [PATCH 1/2] Add half done to circle diagramm --- .../src/components/circle/CircleDiagram.vue | 48 ++++++++++++++++--- .../components/circle/LearningPathDiagram.vue | 10 ++-- .../components/circle/LearningSequence.vue | 9 ++++ client/src/services/circle.ts | 15 ++++++ 4 files changed, 71 insertions(+), 11 deletions(-) diff --git a/client/src/components/circle/CircleDiagram.vue b/client/src/components/circle/CircleDiagram.vue index 1eb10a51..5f10b46a 100644 --- a/client/src/components/circle/CircleDiagram.vue +++ b/client/src/components/circle/CircleDiagram.vue @@ -14,6 +14,13 @@ function someFinished(learningSequence) { return false; } +function allFinished(learningSequence) { + if (circleStore.circle) { + return circleStore.circle.allFinishedInLearningSequence(learningSequence.translation_key); + } + return false; +} + onMounted(async () => { log.info('CircleDiagram mounted'); render(); @@ -39,7 +46,8 @@ const pieData = computed(() => { pie.arrowStartAngle = pie.endAngle + (pie.startAngle - pie.endAngle) / 2 pie.arrowEndAngle = pie.startAngle + (pie.startAngle - pie.endAngle) / 2 pie.translation_key = thisLearningSequence.translation_key - pie.done = someFinished(thisLearningSequence) + pie.someFinished = someFinished(thisLearningSequence) + pie.allFinished = allFinished(thisLearningSequence) }) angles = angles.reverse() return angles @@ -54,7 +62,9 @@ const blue900 = '#00224D', gray300 = '#E0E5EC', gray500 = '#B1C1CA', sky400 = '#72CAFF', - sky500 = '#41B5FA' + sky500 = '#41B5FA', + green500 = '#54CE8B', + green400 = '#78DEA3' const width = 450 const height = 450 @@ -84,6 +94,28 @@ function render() { const g = svg.append('g').attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')') + function getColor(d) { + let color = gray300 + if (d.someFinished) { + color = sky500 + } + if (d.allFinished) { + color = green500 + } + return color + } + + function getHoverColor(d) { + let color = gray100 + if (d.someFinished) { + color = sky400 + } + if (d.allFinished) { + color = green400 + } + return color + } + // Generate the pie diagram wede const wedgeGenerator = d3 .arc() @@ -108,16 +140,17 @@ function render() { .transition() .duration('200') .attr('fill', (d) => { - return d.done ? sky400 : gray100 + return getHoverColor(d) }) + }) .on('mouseout', function (d, i) { d3.select(this) .transition() .duration('200') .attr('fill', (d) => { - return d.done ? sky500 : gray300 + return getColor(d) }) }) .on('click', function (d, elm) { @@ -125,11 +158,12 @@ function render() { document.getElementById(elm.translation_key)?.scrollIntoView({behavior: 'smooth'}) }) + learningSequences .transition() - .duration('1') + .duration(1) .attr('fill', (d) => { - return d.done ? sky500 : gray300 + return getColor(d) }) @@ -208,7 +242,7 @@ function render() {