function groupData(data) {
let currentFinalPerformanceScore = ''
let currentOverallWorkHourRatio = ''
let currentPerformanceScore = ''
let currentProjectName = ''
let currentProjectScore = ''
let currentGoalsHour = ''
let currentProjectFractionRatio = ''
return data.map((item, index) => {
if (currentFinalPerformanceScore !== item.finalPerformanceScore) {
currentFinalPerformanceScore = item.finalPerformanceScore
item.finalPerformanceScoreSpan = calculateSpan(
data,
index,
'finalPerformanceScore',
currentFinalPerformanceScore
)
} else {
item.finalPerformanceScoreSpan = 0
}
if (currentOverallWorkHourRatio !== item.overallWorkHourRatio) {
currentOverallWorkHourRatio = item.overallWorkHourRatio
item.overallWorkHourRatioSpan = calculateSpan(
data,
index,
'overallWorkHourRatio',
currentOverallWorkHourRatio
)
} else {
item.overallWorkHourRatioSpan = 0
}
if (currentPerformanceScore !== item.performanceScore) {
currentPerformanceScore = item.performanceScore
item.performanceScoreSpan = calculateSpan(data, index, 'performanceScore', currentPerformanceScore)
} else {
item.performanceScoreSpan = 0
}
if (currentProjectName !== item.projectName) {
currentProjectName = item.projectName
item.projectNameSpan = calculateSpan(data, index, 'projectName', currentProjectName)
} else {
item.projectNameSpan = 0
}
if (currentProjectScore !== item.projectScore) {
currentProjectScore = item.projectScore
item.projectScoreSpan = calculateSpan(data, index, 'projectScore', currentProjectScore)
} else {
item.projectScoreSpan = 0
}
if (currentGoalsHour !== item.goalsHour) {
currentGoalsHour = item.goalsHour
item.goalsHourSpan = calculateSpan(data, index, 'goalsHour', currentGoalsHour)
} else {
item.goalsHourSpan = 0
}
if (currentProjectFractionRatio !== item.projectFractionRatio) {
currentProjectFractionRatio = item.projectFractionRatio
item.projectFractionRatioSpan = calculateSpan(
data,
index,
'projectFractionRatio',
currentProjectFractionRatio
)
} else {
item.projectFractionRatioSpan = 0
}
return item
})
}
function calculateSpan(data, index, property, value) {
let span = 0
for (let i = index; i < data.length; i++) {
if (data[i][property] === value) {
span += 1
} else {
break
}
}
return span
}