`
}
}
window.customElements.define('widget-barchart-versionplaceholder', WidgetBarchart)
// ############################################### WORKAROUND #######################################################################
//
// For some reason the import of that adapter is messed up. I suspect that rollup does things in the wrong order.
// Because this is an import that has side effects. i.e. it overrides the adapters of the previously imported Chart.js
// So the current solution is to execute the source code here in-line. (moving this to a local file and importing that does not work!)
// This is the source code of https://github.com/chartjs/chartjs-adapter-date-fns/blob/master/src/index.js
import { _adapters, ChartData, ChartDataset, DefaultDataPoint } from 'chart.js'
import {
parse,
parseISO,
toDate,
isValid,
format,
startOfSecond,
startOfMinute,
startOfHour,
startOfDay,
startOfWeek,
startOfMonth,
startOfQuarter,
startOfYear,
addMilliseconds,
addSeconds,
addMinutes,
addHours,
addDays,
addWeeks,
addMonths,
addQuarters,
addYears,
differenceInMilliseconds,
differenceInSeconds,
differenceInMinutes,
differenceInHours,
differenceInDays,
differenceInWeeks,
differenceInMonths,
differenceInQuarters,
differenceInYears,
endOfSecond,
endOfMinute,
endOfHour,
endOfDay,
endOfWeek,
endOfMonth,
endOfQuarter,
endOfYear
} from 'date-fns'
const FORMATS = {
datetime: 'MMM d, yyyy, h:mm:ss aaaa',
millisecond: 'h:mm:ss.SSS aaaa',
second: 'h:mm:ss aaaa',
minute: 'h:mm aaaa',
hour: 'ha',
day: 'MMM d',
week: 'PP',
month: 'MMM yyyy',
quarter: 'qqq - yyyy',
year: 'yyyy'
}
_adapters._date.override({
_id: 'date-fns', // DEBUG
formats: function () {
return FORMATS
},
parse: function (value, fmt) {
if (value === null || typeof value === 'undefined') {
return null
}
const type = typeof value
if (type === 'number' || value instanceof Date) {
// @ts-ignore
value = toDate(value)
} else if (type === 'string') {
if (typeof fmt === 'string') {
// @ts-ignore
value = parse(value, fmt, new Date(), this.options)
} else {
// @ts-ignore
value = parseISO(value, this.options)
}
}
// @ts-ignore
return isValid(value) ? value.getTime() : null
},
format: function (time, fmt) {
return format(time, fmt, this.options)
},
// @ts-ignore
add: function (time, amount, unit) {
switch (unit) {
case 'millisecond':
return addMilliseconds(time, amount)
case 'second':
return addSeconds(time, amount)
case 'minute':
return addMinutes(time, amount)
case 'hour':
return addHours(time, amount)
case 'day':
return addDays(time, amount)
case 'week':
return addWeeks(time, amount)
case 'month':
return addMonths(time, amount)
case 'quarter':
return addQuarters(time, amount)
case 'year':
return addYears(time, amount)
default:
return time
}
},
diff: function (max, min, unit) {
switch (unit) {
case 'millisecond':
return differenceInMilliseconds(max, min)
case 'second':
return differenceInSeconds(max, min)
case 'minute':
return differenceInMinutes(max, min)
case 'hour':
return differenceInHours(max, min)
case 'day':
return differenceInDays(max, min)
case 'week':
return differenceInWeeks(max, min)
case 'month':
return differenceInMonths(max, min)
case 'quarter':
return differenceInQuarters(max, min)
case 'year':
return differenceInYears(max, min)
default:
return 0
}
},
// @ts-ignore
startOf: function (time, unit, weekday) {
switch (unit) {
case 'second':
return startOfSecond(time)
case 'minute':
return startOfMinute(time)
case 'hour':
return startOfHour(time)
case 'day':
return startOfDay(time)
case 'week':
return startOfWeek(time)
case 'isoWeek':
// @ts-ignore
return startOfWeek(time, { weekStartsOn: +weekday })
case 'month':
return startOfMonth(time)
case 'quarter':
return startOfQuarter(time)
case 'year':
return startOfYear(time)
default:
return time
}
},
// @ts-ignore
endOf: function (time, unit) {
switch (unit) {
case 'second':
return endOfSecond(time)
case 'minute':
return endOfMinute(time)
case 'hour':
return endOfHour(time)
case 'day':
return endOfDay(time)
case 'week':
return endOfWeek(time)
case 'month':
return endOfMonth(time)
case 'quarter':
return endOfQuarter(time)
case 'year':
return endOfYear(time)
default:
return time
}
}
})