diff --git a/src/App.vue b/src/App.vue
index e4f4e28..4927b34 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -10,6 +10,6 @@ import FeatureSteps from '@/modules/feature/FeatureSteps.vue'
diff --git a/src/modules/feature/FeatureStep.vue b/src/modules/feature/FeatureStep.vue
index 7336486..0489789 100644
--- a/src/modules/feature/FeatureStep.vue
+++ b/src/modules/feature/FeatureStep.vue
@@ -20,7 +20,10 @@ const remainingBlueBuckets = computed(() =>
const hasFeaturesInProgress = computed(
() => featuresInProgress.value.length > 0
)
-const hasFeaturesDone = computed(() => featuresInProgress.value.length > 0)
+const hasFeaturesDone = computed(() => featuresDone.value.length > 0)
+const isLive = computed(
+ () => props.step.title.toLocaleLowerCase() === 'release'
+)
@@ -44,7 +47,12 @@ const hasFeaturesDone = computed(() => featuresInProgress.value.length > 0)
📝✅
- -
+
-
{{ feature.name }}
@@ -66,6 +74,8 @@ const hasFeaturesDone = computed(() => featuresInProgress.value.length > 0)
@import url('https://fonts.googleapis.com/css2?family=Cutive+Mono&display=swap');
.feature-step {
+ --success-color: #20bf6b;
+
header {
padding: 0.5rem;
border: solid 2px var(--background-color);
@@ -102,6 +112,12 @@ const hasFeaturesDone = computed(() => featuresInProgress.value.length > 0)
font-size: 18pt;
}
+ .green-bin {
+ background-color: var(--success-color);
+ border: 3px solid var(--success-color);
+ color: white;
+ }
+
li {
flex-direction: column;
}
diff --git a/src/modules/feature/FeatureSteps.vue b/src/modules/feature/FeatureSteps.vue
index 8966fea..5309a11 100644
--- a/src/modules/feature/FeatureSteps.vue
+++ b/src/modules/feature/FeatureSteps.vue
@@ -10,20 +10,37 @@ const featureBoard = createFeatureBoard()
const features = ref([])
-const meanComplexity = computed(() =>
- sumElements(features.value.map((feature) => feature.complexity))
+const meanComplexity = computed(
+ () =>
+ sumElements(features.value.map((feature) => feature.complexity)) /
+ features.value.length
)
-const meanLeadTime = computed(() =>
- sumElements(features.value.map((feature) => feature.leadTime))
+const meanLeadTime = computed(
+ () =>
+ sumElements(features.value.map((feature) => feature.leadTime)) /
+ features.value.length
)
onMounted(() => (features.value = featureBoard.initBoard(featureSteps)))
-const nextDay = () => (features.value = featureBoard.nextDay(features.value))
+const nextDay = () => {
+ features.value = featureBoard.nextDay(features.value)
+}
-const getStepFeatures = (stepIndex: number) =>
- features.value.filter((feature) => feature.step === stepIndex)
+const featuresGroupedByStep = computed(() => {
+ const groupedByStep: Record = {}
+
+ features.value.forEach((feature) => {
+ if (!groupedByStep[feature.step]) {
+ groupedByStep[feature.step] = [feature]
+ } else {
+ groupedByStep[feature.step].push(feature)
+ }
+ })
+
+ return groupedByStep
+})
@@ -41,13 +58,14 @@ const getStepFeatures = (stepIndex: number) =>
v-for="step in featureSteps"
:key="step.title"
:step="step"
- :features="getStepFeatures(step.stepIndex)"
+ :features="featuresGroupedByStep[step.stepIndex] ?? []"
/>