This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/helpers/application.js
2020-03-12 13:29:55 -04:00

51 lines
1.3 KiB
JavaScript

import { registerUnbound } from "discourse-common/lib/helpers";
import {
longDate,
autoUpdatingRelativeAge,
number
} from "discourse/lib/formatter";
import { htmlSafe } from "@ember/template";
registerUnbound("raw-date", dt => htmlSafe(longDate(new Date(dt))));
registerUnbound("age-with-tooltip", dt =>
htmlSafe(autoUpdatingRelativeAge(new Date(dt), { title: true }))
);
registerUnbound("number", (orig, params) => {
orig = Math.round(parseFloat(orig));
if (isNaN(orig)) {
orig = 0;
}
let title = I18n.toNumber(orig, { precision: 0 });
if (params.numberKey) {
title = I18n.t(params.numberKey, {
number: title,
count: parseInt(orig, 10)
});
}
let classNames = "number";
if (params["class"]) {
classNames += " " + params["class"];
}
let result = "<span class='" + classNames + "'";
let addTitle = params.noTitle ? false : true;
// Round off the thousands to one decimal place
const n = number(orig);
if (n.toString() !== title.toString() && addTitle) {
result += " title='" + Handlebars.Utils.escapeExpression(title) + "'";
}
if (params.ariaLabel) {
const ariaLabel = Handlebars.Utils.escapeExpression(params.ariaLabel);
result += ` aria-label='${ariaLabel}'`;
}
result += ">" + n + "</span>";
return htmlSafe(result);
});