#Note/Permanent #Health/Sleep #Habit/Metric
**Why [8 Hours of Sleep](https://en.wikipedia.org/wiki/Why_We_Sleep#Contents)?**
```dataviewjs
dv.span("**😪8 Hours Sleep💤**")
const calendarData = {
year: 2025, // (optional) defaults to current year
colors: { // (optional) defaults to green
oldGithubGreen11:[
"hsl(65, 83%, 88%)",
"hsl(70, 77%, 78%)",
"hsl(80, 62%, 72%)",
"hsl(95, 52%, 66%)",
"hsl(112, 45%, 61%)",
"hsl(125, 43%, 56%)",
"hsl(132, 41%, 49%)",
"hsl(132, 45%, 43%)",
"hsl(132, 49%, 36%)",
"hsl(132, 54%, 29%)",
"hsl(132, 59%, 24%)",
]
},
showCurrentDayBorder: true, // (optional) defaults to true
defaultEntryIntensity: 0, // (optional) defaults to 4
intensityScaleStart: 0, // (optional) defaults to lowest value passed to entries.intensity
intensityScaleEnd: 8, // (optional) defaults to highest value passed to entries.intensity
entries: [], // (required) populated in the DataviewJS loop below
}
//DataviewJS loop
for (let page of dv.pages('"Diary"').where(p=>(p["sleep-at"] && p["wake-up-at"]))) {
let sleepHours = (page["wake-up-at"] - page["sleep-at"]) / (60*60*1000)
//dv.span("<br>" + page.file.name + " " + sleepHours) // uncomment for troubleshooting
calendarData.entries.push({
date: page.file.name,
intensity: sleepHours,
content: await dv.span(`[](${page.file.name})`), //for hover preview",
})
}
renderHeatmapCalendar(this.container, calendarData)
```