Files
threshold-ui/addons/core/addon/helpers/relative-datetime-live.js
T
Devon Anderson 03b603be54 refactor: 💡 Disable read-only fields when editing worker (#1287)
Refactor detailed worker to not hide read-only fields when editing, but
leave them disabled

✅ Closes: ICU-5902
2022-08-30 12:11:19 -04:00

68 lines
1.3 KiB
JavaScript

import Helper from '@ember/component/helper';
import { inject as service } from '@ember/service';
const MILLISECOND = 1;
const SECOND = MILLISECOND * 1000;
const MINUTE = SECOND * 60;
const HOUR = MINUTE * 60;
const DAY = HOUR * 24;
const MONTH = DAY * 31;
const YEAR = MONTH * 12;
const unitMappings = [
{
unit: 'second',
value: SECOND,
},
{
unit: 'minute',
value: MINUTE,
},
{
unit: 'hour',
value: HOUR,
},
{
unit: 'day',
value: DAY,
},
{
unit: 'month',
value: MONTH,
},
{
unit: 'year',
value: YEAR,
},
];
export default class extends Helper {
// =services
@service clockTick;
@service intl;
// =methods
compute([date]) {
const delta = date.valueOf() - this.clockTick.now;
const greatestMeaningfulUnit = unitMappings.reduce(
(currentValue, previousValue) => {
return Math.abs(delta) >= previousValue.value
? previousValue
: currentValue;
},
unitMappings[0]
);
const scaledDelta =
delta < 0
? Math.ceil(delta / greatestMeaningfulUnit.value)
: Math.floor(delta / greatestMeaningfulUnit.value);
const unit = greatestMeaningfulUnit.unit;
return this.intl.formatRelative(scaledDelta, {
unit,
numeric: 'auto',
});
}
}