remove board service and replace with function + pinia store ready

This commit is contained in:
Julien Calixte
2023-07-23 20:30:07 +02:00
parent 6a530f5eff
commit 5e418fe7dc
3 changed files with 132 additions and 110 deletions

View File

@@ -53,64 +53,71 @@ const hasQualityIssue = (
return Math.random() > probabilityOfQualityIssue / multiplicator
}
export const createFeatureBoard = () => {
const boardFeatures = shuffleArray(features)
export const newBoard = () => shuffleArray(features)
const initBoard = (steps: FeatureStep[]): Feature[] => {
const initialFeatures = popNElement(boardFeatures, 10)
export const initBoard = (
steps: FeatureStep[],
features: Feature[]
): Feature[] => {
const initialFeatures = popNElement(features, 10)
initialFeatures.forEach((feature) => {
const step = pickRandomElement(steps)
feature.status = pickRandomElement(['doing', 'done'])
feature.step = step.stepIndex
})
initialFeatures.forEach((feature) => {
const step = pickRandomElement(steps)
feature.status = pickRandomElement(['doing', 'done'])
feature.step = step.stepIndex
})
return initialFeatures
}
return initialFeatures
}
const nextDay = (features: Feature[], initialStep: number): Feature[] => {
features.forEach((feature) => {
const isFeatureLive = feature.step === 0 && feature.status === 'done'
if (isFeatureLive) {
return
}
feature.leadTime++
switch (feature.status) {
case 'doing':
feature.status = 'done'
break
case 'done':
feature.status = 'doing'
if (
hasQualityIssue(
feature.complexity,
features.filter(
(f) => f.status === 'doing' && f.step === feature.step
).length
)
) {
feature.step = Math.min(4, feature.step + 1)
feature.qualityIssue++
} else {
feature.step--
}
break
}
})
if (features.length < MAX_FEATURES) {
const [newFeature] = popNElement(boardFeatures, 1)
if (newFeature) {
features.push({ ...newFeature, step: initialStep })
}
export const nextDay = ({
backlog,
features,
initialStep
}: {
backlog: Feature[]
features: Feature[]
initialStep: number
}): Feature[] => {
features.forEach((feature) => {
const isFeatureLive = feature.step === 0 && feature.status === 'done'
if (isFeatureLive) {
return
}
return features
feature.leadTime++
switch (feature.status) {
case 'doing':
feature.status = 'done'
break
case 'done':
feature.status = 'doing'
if (
hasQualityIssue(
feature.complexity,
features.filter(
(f) => f.status === 'doing' && f.step === feature.step
).length
)
) {
feature.step = Math.min(4, feature.step + 1)
feature.qualityIssue++
} else {
feature.step--
}
break
}
})
if (features.length < MAX_FEATURES) {
const [newFeature] = popNElement(backlog, 1)
if (newFeature) {
features.push({ ...newFeature, step: initialStep })
}
}
return { initBoard, nextDay }
return features
}