How to handle when the array comes empty with javascript and hbs?
Hello, I would like to know how to do when the data object is empty and replace it?
I have an array of objects which I go through and filter according to certain parameters that the user must meet. When I have my information ready, I pass it on to my template in Handlebars, but I am investigating how I can so that when one of the users does not come to me within the array that filter replace your data
Something like the following, I validate that the user is of the role “DEV, SAC or DESIGN” and that its modality is within “FULLTIME”, after I already have it, I reduce the matrix to get the user that has the largest ” average_tracked_daily” and that’s the one I show.
const data = [{
"user_id": 854500,
"rol_tittle": "DEV",
"username": "User01",
"dayli_hours": 4,
"total_tracked_daily": 2.41,
"total_activity": 36,
"average_tracked_daily": 60,
"summaryHourWeekly": 7.56,
"acumulateWeekly": 12,
"rol_priority": 0,
"time_work": "PARTTIME",
"countStarts": [],
"summaryStartsDaily": 0,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "warning",
"counts_starts_daily": [],
"summary_starts_daily": 0
},
{
"user_id": 1169488,
"rol_tittle": "DEV",
"username": "User02",
"dayli_hours": 8,
"total_tracked_daily": 7.46,
"total_activity": 50,
"average_tracked_daily": 93,
"summaryHourWeekly": 21.54,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [],
"summaryStartsDaily": 0,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "check",
"counts_starts_daily": [],
"summary_starts_daily": 0
},
{
"user_id": 854472,
"rol_tittle": "DEV",
"username": "User03",
"dayli_hours": 8,
"total_tracked_daily": 8.48,
"total_activity": 75,
"average_tracked_daily": 106,
"summaryHourWeekly": 26.92,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [
"start"
],
"summaryStartsDaily": 1,
"indicatorActivity_daily": "check",
"indicadorKPIHours": "check",
"counts_starts_daily": [
"start"
],
"summary_starts_daily": 1
},
{
"user_id": 957706,
"rol_tittle": "DEV",
"username": "User04",
"dayli_hours": 8,
"total_tracked_daily": 8.08,
"total_activity": 69,
"average_tracked_daily": 101,
"summaryHourWeekly": 22.82,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [
"start"
],
"summaryStartsDaily": 1,
"indicatorActivity_daily": "check",
"indicadorKPIHours": "check",
"counts_starts_daily": [
"start"
],
"summary_starts_daily": 1
},
{
"user_id": 854517,
"rol_tittle": "DEV",
"username": "User05",
"dayli_hours": 8,
"total_tracked_daily": 6.09,
"total_activity": 41,
"average_tracked_daily": 76,
"summaryHourWeekly": 21.2,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [],
"summaryStartsDaily": 0,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "check",
"counts_starts_daily": [],
"summary_starts_daily": 0
},
{
"user_id": 1476078,
"rol_tittle": "DEV",
"username": "User06",
"dayli_hours": 8,
"total_tracked_daily": 8.91,
"total_activity": 78,
"average_tracked_daily": 111,
"summaryHourWeekly": 25.51,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [
"start"
],
"summaryStartsDaily": 1,
"indicatorActivity_daily": "check",
"indicadorKPIHours": "check",
"counts_starts_daily": [
"start"
],
"summary_starts_daily": 1
},
{
"user_id": 1005014,
"rol_tittle": "SAC",
"username": "User07",
"dayli_hours": 8,
"total_tracked_daily": 6.09,
"total_activity": 39,
"average_tracked_daily": 76,
"summaryHourWeekly": 18.28,
"acumulateWeekly": 24,
"rol_priority": 1,
"time_work": "FULLTIME",
"countStarts": [],
"summaryStartsDaily": 0,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "check",
"counts_starts_daily": [],
"summary_starts_daily": 0
},
{
"user_id": 1846477,
"rol_tittle": "DESIGN",
"username": "User08",
"dayli_hours": 8,
"total_tracked_daily": 8.02,
"total_activity": 38,
"average_tracked_daily": 100,
"summaryHourWeekly": 24.28,
"acumulateWeekly": 24,
"rol_priority": 2,
"time_work": "FULLTIME",
"countStarts": [
"start"
],
"summaryStartsDaily": 1,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "check",
"counts_starts_daily": [
"start"
],
"summary_starts_daily": 1
}
]
let designMax = [];
let devMax = [];
let sacMax = [];
data.forEach(maxTracking => {
if (maxTracking.rol_tittle === "DEV" && maxTracking.time_work === "FULLTIME") {
return devMax = data.filter(element => element.rol_tittle === "DEV" && element.time_work === "FULLTIME");
}
if (maxTracking.rol_tittle === "SAC" && maxTracking.time_work === "FULLTIME") {
return sacMax = data.filter(element => element.rol_tittle === "SAC" && element.time_work === "FULLTIME");
}
if (maxTracking.rol_tittle === "DESIGN" && maxTracking.time_work === "FULLTIME") {
return designMax = data.filter(element => element.rol_tittle === "DESIGN" && maxTracking.time_work === "FULLTIME");
} else {
return {
user_id: null,
username: '---',
total_tracked_daily: 0,
total_activity: '-',
average_tracked_daily: 0,
dayli_hours: '-',
rol_tittle: '-',
rol_priority: 2,
indicadorKPIHours: 'close',
summaryHourWeekly: '-',
averageActivityWeekly: '-',
summaryStartsDaily: '-',
time_work: '-',
acumulateWeekly: '-'
}
}
})
let maxTrackedDESIGN = designMax;
let maxTrackedDev = devMax.reduce((acc, cc) => acc.average_tracked_daily > cc.average_tracked_daily ? acc : cc);
let maxTrackedSAC = sacMax.reduce((acc, cc) => acc.average_tracked_daily > cc.average_tracked_daily ? acc : cc);
console.log({
"maxTrackedDesign": maxTrackedDESIGN,
"maxTrackedDev": maxTrackedDev,
"maxTrackedSAC": maxTrackedSAC
})
When the user in any of the modalities does not come, I want to be able to replace it with empty, but I would like to make it dynamic
const data = [{
"user_id": 854500,
"rol_tittle": "DEV",
"username": "User01",
"dayli_hours": 4,
"total_tracked_daily": 2.41,
"total_activity": 36,
"average_tracked_daily": 60,
"summaryHourWeekly": 7.56,
"acumulateWeekly": 12,
"rol_priority": 0,
"time_work": "PARTTIME",
"countStarts": [],
"summaryStartsDaily": 0,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "warning",
"counts_starts_daily": [],
"summary_starts_daily": 0
},
{
"user_id": 1169488,
"rol_tittle": "DEV",
"username": "User02",
"dayli_hours": 8,
"total_tracked_daily": 7.46,
"total_activity": 50,
"average_tracked_daily": 93,
"summaryHourWeekly": 21.54,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [],
"summaryStartsDaily": 0,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "check",
"counts_starts_daily": [],
"summary_starts_daily": 0
},
{
"user_id": 854472,
"rol_tittle": "DEV",
"username": "User03",
"dayli_hours": 8,
"total_tracked_daily": 8.48,
"total_activity": 75,
"average_tracked_daily": 106,
"summaryHourWeekly": 26.92,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [
"start"
],
"summaryStartsDaily": 1,
"indicatorActivity_daily": "check",
"indicadorKPIHours": "check",
"counts_starts_daily": [
"start"
],
"summary_starts_daily": 1
},
{
"user_id": 957706,
"rol_tittle": "DEV",
"username": "User04",
"dayli_hours": 8,
"total_tracked_daily": 8.08,
"total_activity": 69,
"average_tracked_daily": 101,
"summaryHourWeekly": 22.82,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [
"start"
],
"summaryStartsDaily": 1,
"indicatorActivity_daily": "check",
"indicadorKPIHours": "check",
"counts_starts_daily": [
"start"
],
"summary_starts_daily": 1
},
{
"user_id": 854517,
"rol_tittle": "DEV",
"username": "User05",
"dayli_hours": 8,
"total_tracked_daily": 6.09,
"total_activity": 41,
"average_tracked_daily": 76,
"summaryHourWeekly": 21.2,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [],
"summaryStartsDaily": 0,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "check",
"counts_starts_daily": [],
"summary_starts_daily": 0
},
{
"user_id": 1476078,
"rol_tittle": "DEV",
"username": "User06",
"dayli_hours": 8,
"total_tracked_daily": 8.91,
"total_activity": 78,
"average_tracked_daily": 111,
"summaryHourWeekly": 25.51,
"acumulateWeekly": 24,
"rol_priority": 0,
"time_work": "FULLTIME",
"countStarts": [
"start"
],
"summaryStartsDaily": 1,
"indicatorActivity_daily": "check",
"indicadorKPIHours": "check",
"counts_starts_daily": [
"start"
],
"summary_starts_daily": 1
},
{
"user_id": 1005014,
"rol_tittle": "SAC",
"username": "User07",
"dayli_hours": 8,
"total_tracked_daily": 6.09,
"total_activity": 39,
"average_tracked_daily": 76,
"summaryHourWeekly": 18.28,
"acumulateWeekly": 24,
"rol_priority": 1,
"time_work": "FULLTIME",
"countStarts": [],
"summaryStartsDaily": 0,
"indicatorActivity_daily": "close",
"indicadorKPIHours": "check",
"counts_starts_daily": [],
"summary_starts_daily": 0
}
]
let designMax = [];
let devMax = [];
let sacMax = [];
data.forEach(maxTracking => {
if (maxTracking.rol_tittle === "DEV" && maxTracking.time_work === "FULLTIME") {
return devMax = data.filter(element => element.rol_tittle === "DEV" && element.time_work === "FULLTIME");
}
if (maxTracking.rol_tittle === "SAC" && maxTracking.time_work === "FULLTIME") {
return sacMax = data.filter(element => element.rol_tittle === "SAC" && element.time_work === "FULLTIME");
}
if (maxTracking.rol_tittle === "DESIGN" && maxTracking.time_work === "FULLTIME") {
return designMax = data.filter(element => element.rol_tittle === "DESIGN" && maxTracking.time_work === "FULLTIME");
} else {
return {
user_id: null,
username: '---',
total_tracked_daily: 0,
total_activity: '-',
average_tracked_daily: 0,
dayli_hours: '-',
rol_tittle: '-',
rol_priority: 2,
indicadorKPIHours: 'close',
summaryHourWeekly: '-',
averageActivityWeekly: '-',
summaryStartsDaily: '-',
time_work: '-',
acumulateWeekly: '-'
}
}
})
let maxTrackedDESIGN = designMax;
let maxTrackedDev = devMax.reduce((acc, cc) => acc.average_tracked_daily > cc.average_tracked_daily ? acc : cc);
let maxTrackedSAC = sacMax.reduce((acc, cc) => acc.average_tracked_daily > cc.average_tracked_daily ? acc : cc);
console.log({
"maxTrackedDesign": maxTrackedDESIGN,
"maxTrackedDev": maxTrackedDev,
"maxTrackedSAC": maxTrackedSAC
})
But I can’t map it and validate it to be able to replace that data so that when it comes empty I can replace it and make it dynamic.