diff --git a/src/modules/feature/FeatureStep.vue b/src/modules/feature/FeatureStep.vue
index c442dde..7336486 100644
--- a/src/modules/feature/FeatureStep.vue
+++ b/src/modules/feature/FeatureStep.vue
@@ -1,17 +1,26 @@
@@ -21,7 +30,7 @@ const hasFeaturesDone = computed(() => props.step.featuresInProgress.length > 0)
📝⌛
-
@@ -35,11 +44,7 @@ const hasFeaturesDone = computed(() => props.step.featuresInProgress.length > 0)
📝✅
- -
+
-
{{ feature.name }}
diff --git a/src/modules/feature/FeatureSteps.vue b/src/modules/feature/FeatureSteps.vue
index 7f94fcc..8966fea 100644
--- a/src/modules/feature/FeatureSteps.vue
+++ b/src/modules/feature/FeatureSteps.vue
@@ -1,38 +1,29 @@
@@ -46,7 +37,12 @@ const nextDay = () =>
diff --git a/src/modules/feature/feature-board.ts b/src/modules/feature/feature-board.ts
index 3ffef2b..e47987d 100644
--- a/src/modules/feature/feature-board.ts
+++ b/src/modules/feature/feature-board.ts
@@ -1,40 +1,34 @@
-import { FeatureStatus, FeatureStep } from '@/modules/feature/feature-steps'
+import { Feature } from '@/modules/feature/feature'
+import { FeatureStep } from '@/modules/feature/feature-steps'
import { features } from '@/modules/feature/feature.fixture'
import { pickRandomElement, popNElement, shuffleArray } from '@/utils'
export const createFeatureBoard = () => {
const boardFeatures = shuffleArray(features)
- const initBoard = (featureSteps: FeatureStep[]): FeatureStep[] => {
+ const initBoard = (steps: FeatureStep[]): Feature[] => {
const initialFeatures = popNElement(boardFeatures, 10)
initialFeatures.forEach((feature) => {
- const step = pickRandomElement(featureSteps)
- const doingOrDone: FeatureStatus = pickRandomElement(['doing', 'done'])
-
- switch (doingOrDone) {
- case 'doing':
- step.featuresInProgress.push(feature)
- break
- case 'done':
- step.featuresDone.push(feature)
- break
- }
+ const step = pickRandomElement(steps)
+ feature.status = pickRandomElement(['doing', 'done'])
+ feature.step = step.stepIndex
})
- return featureSteps
+ return initialFeatures
}
- const nextDay = (featureSteps: FeatureStep[]): FeatureStep[] => {
- featureSteps.forEach((step) => {
- step.featuresInProgress.forEach((feature) => feature.leadTime++)
-
- if (step.title.toLowerCase() !== 'release') {
- step.featuresDone.forEach((feature) => feature.leadTime++)
+ const nextDay = (features: Feature[]): Feature[] => {
+ features.forEach((feature) => {
+ const isFeatureLive = feature.step === 0 && feature.status === 'done'
+ if (isFeatureLive) {
+ return
}
+
+ feature.leadTime++
})
- return featureSteps
+ return features
}
return { initBoard, nextDay }
diff --git a/src/modules/feature/feature-steps.ts b/src/modules/feature/feature-steps.ts
index ab0feef..f7d259a 100644
--- a/src/modules/feature/feature-steps.ts
+++ b/src/modules/feature/feature-steps.ts
@@ -1,53 +1,43 @@
-export type FeatureStatus = 'doing' | 'done'
-
export type FeatureStep = {
title: string
- featuresInProgress: Feature[]
- featuresDone: Feature[]
blueBuckets: number
+ stepIndex: number
}
export const featureSteps: FeatureStep[] = [
{
title: 'Pitch',
- featuresInProgress: [],
- featuresDone: [],
+ stepIndex: 6,
blueBuckets: 2
},
{
title: 'Design',
- featuresInProgress: [],
- featuresDone: [],
+ stepIndex: 5,
blueBuckets: 1
},
{
title: 'Investigation',
- featuresInProgress: [],
- featuresDone: [],
+ stepIndex: 4,
blueBuckets: 1
},
{
title: 'Product design',
- featuresInProgress: [],
- featuresDone: [],
+ stepIndex: 3,
blueBuckets: 2
},
{
title: 'Development',
- featuresInProgress: [],
- featuresDone: [],
+ stepIndex: 2,
blueBuckets: 2
},
{
title: 'UAT',
- featuresInProgress: [],
- featuresDone: [],
+ stepIndex: 1,
blueBuckets: 3
},
{
title: 'Release',
- featuresInProgress: [],
- featuresDone: [],
+ stepIndex: 0,
blueBuckets: 0
}
]
diff --git a/src/modules/feature/feature.fixture.ts b/src/modules/feature/feature.fixture.ts
index 58809de..fc6686b 100644
--- a/src/modules/feature/feature.fixture.ts
+++ b/src/modules/feature/feature.fixture.ts
@@ -1,3 +1,5 @@
+import { Feature } from '@/modules/feature/feature'
+
const featureNames = [
'Dachshund',
'Jagdterrier',
@@ -204,5 +206,7 @@ const featureNames = [
export const features: Feature[] = featureNames.map((name) => ({
name,
complexity: Math.floor(Math.random() * 5),
- leadTime: 0
+ leadTime: 0,
+ status: 'doing',
+ step: Infinity
}))
diff --git a/src/modules/feature/feature.ts b/src/modules/feature/feature.ts
index cadb1da..f4f3269 100644
--- a/src/modules/feature/feature.ts
+++ b/src/modules/feature/feature.ts
@@ -1,5 +1,9 @@
-type Feature = {
+export type FeatureStatus = 'doing' | 'done'
+
+export type Feature = {
name: string
complexity: number
leadTime: number
+ status: FeatureStatus
+ step: number
}