Untitled

 avatar
unknown
plain_text
a year ago
1.7 kB
5
Indexable
```dataviewjs
function newDiff(date1, date2) {
  let years = date1.diff(date2, 'years');
  date2.add(years, 'years');
  let months = date1.diff(date2, 'months');
  date2.add(months, 'months');
  let days = date1.diff(date2, 'days');
  date2.add(days, 'days');
  let hours = date1.diff(date2, 'hours');
  date2.add(hours, 'hours');
  let minutes = date1.diff(date2, 'minutes');
  let resultArray = [];
  if (years) resultArray.push(`${years}y`);
  if (months) resultArray.push(`${months}m`);
  if (days) resultArray.push(`${days}d`);
  if (hours) resultArray.push(`${hours}h`);
  if (minutes) resultArray.push(`${minutes}min`);
  const resultString = resultArray.join(' ');
  return resultString;
};

function newBar(start, end, now){
  const value = Number(((now-start)*100)/(end-start)).toFixed("2");
  const remTime = newDiff(moment(end), moment(now));
  return "<progress value='" + value + "' max='100'></progress> | " + value + " % | " + remTime;
}

const now = dv.date("now");
const nowMillis = now.toMillis();

dv.span(`
| | Progress | Percentage | Remaining |
| --- | --- |:---:|:---:|
| **Day** | ${newBar(dv.date("today").toMillis(), dv.date("tomorrow").toMillis(), nowMillis)} |
| **Week** | ${newBar(dv.date("sow").toMillis(), dv.date("eow").toMillis(), nowMillis)} |
| **Month** | ${newBar(dv.date("som").toMillis(), dv.date("eom").toMillis(), nowMillis)} |
| **Quarter** | ${newBar(DateTime.fromFormat(now.toFormat("yyyy-qq"), "yyyy-qq").toMillis(), DateTime.fromFormat(now.plus({quarter: 1}).toFormat("yyyy-qq"), "yyyy-qq").toMillis(), nowMillis)} |
| **Year** | ${newBar(dv.date("soy").toMillis(), dv.date("eoy").toMillis(), nowMillis)} |
`);
```
Editor is loading...
Leave a Comment