PageSourceSearch

https://m5tea.uk/spotter/src/utils/formatters.ts

js m5tea.uk collected 2026-10-07 11:09:45 UTC 4,449 bytes, 35 lines download raw bytes

1export function formatSotaId(sotaid) {
2  if (sotaid === null) return null;
3  const paddedNumber = String(sotaid).padStart(3, "0");
4  return `G/LD-${paddedNumber}`;
5}
6export function formatWotaId(wotaid) {
7  if (wotaid <= 214) {
8    const paddedNumber = String(wotaid).padStart(3, "0");
9    return `LDW-${paddedNumber}`;
10  } else {
11    const ldoNumber = wotaid - 214;
12    const paddedNumber = String(ldoNumber).padStart(3, "0");
13    return `LDO-${paddedNumber}`;
14  }
15}
16export function formatHeight(height) {
17  return height > 0 ? `${height}m` : "Unknown";
18}
19export function formatDate(date) {
20  if (!date) return "Never";
21  return new Date(date).toLocaleDateString();
22}
23export function formatDateTime(datetime) {
24  if (!datetime) return "Unknown";
25  const d = new Date(datetime);
26  return d.toLocaleString("en-GB", {
27    day: "2-digit",
28    month: "2-digit",
29    year: "numeric",
30    hour: "2-digit",
31    minute: "2-digit"
32  });
33}
34
35//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvcm1hdHRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtYXQgU09UQSBJRCB0byBHL0xELVhYWCBmb3JtYXRcbiAqIEBwYXJhbSBzb3RhaWQgLSBUaGUgU09UQSBJRCBudW1iZXJcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgbGlrZSBcIkcvTEQtMDAxXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNvdGFJZChzb3RhaWQ6IG51bWJlciB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHNvdGFpZCA9PT0gbnVsbCkgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFkZGVkTnVtYmVyID0gU3RyaW5nKHNvdGFpZCkucGFkU3RhcnQoMywgJzAnKVxuICByZXR1cm4gYEcvTEQtJHtwYWRkZWROdW1iZXJ9YFxufVxuXG4vKipcbiAqIEZvcm1hdCBXT1RBIElEIHRvIExEVy1YWFggb3IgTERPLVhYWCBmb3JtYXRcbiAqIEBwYXJhbSB3b3RhaWQgLSBUaGUgV09UQSBJRCBudW1iZXJcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgbGlrZSBcIkxEVy0wMDFcIiAoPD0yMTQpIG9yIFwiTERPLTAwMVwiICgyMTUsIGFmdGVyIHN1YnRyYWN0aW5nIDIxNClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFdvdGFJZCh3b3RhaWQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICh3b3RhaWQgPD0gMjE0KSB7XG4gICAgY29uc3QgcGFkZGVkTnVtYmVyID0gU3RyaW5nKHdvdGFpZCkucGFkU3RhcnQoMywgJzAnKVxuICAgIHJldHVybiBgTERXLSR7cGFkZGVkTnVtYmVyfWBcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsZG9OdW1iZXIgPSB3b3RhaWQgLSAyMTRcbiAgICBjb25zdCBwYWRkZWROdW1iZXIgPSBTdHJpbmcobGRvTnVtYmVyKS5wYWRTdGFydCgzLCAnMCcpXG4gICAgcmV0dXJuIGBMRE8tJHtwYWRkZWROdW1iZXJ9YFxuICB9XG59XG5cbi8qKlxuICogRm9ybWF0IGhlaWdodCBpbiBtZXRlcnNcbiAqIEBwYXJhbSBoZWlnaHQgLSBIZWlnaHQgaW4gbWV0ZXJzXG4gKiBAcmV0dXJucyBGb3JtYXR0ZWQgc3RyaW5nIGxpa2UgXCI5NzhtXCIgb3IgXCJVbmtub3duXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEhlaWdodChoZWlnaHQ6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBoZWlnaHQgPiAwID8gYCR7aGVpZ2h0fW1gIDogJ1Vua25vd24nXG59XG5cbi8qKlxuICogRm9ybWF0IGRhdGUgZm9yIGRpc3BsYXlcbiAqIEBwYXJhbSBkYXRlIC0gRGF0ZSB0byBmb3JtYXRcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBkYXRlIHN0cmluZyBvciBcIk5ldmVyXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSB8IG51bGwpOiBzdHJpbmcge1xuICBpZiAoIWRhdGUpIHJldHVybiAnTmV2ZXInXG4gIHJldHVybiBuZXcgRGF0ZShkYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoKVxufVxuXG4vKipcbiAqIEZvcm1hdCBkYXRldGltZSBmb3IgZGlzcGxheSB3aXRoIGJvdGggZGF0ZSBhbmQgdGltZVxuICogQHBhcmFtIGRhdGV0aW1lIC0gRGF0ZXRpbWUgdG8gZm9ybWF0XG4gKiBAcmV0dXJucyBGb3JtYXR0ZWQgZGF0ZXRpbWUgc3RyaW5nIG9yIFwiVW5rbm93blwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREYXRlVGltZShkYXRldGltZTogRGF0ZSB8IG51bGwpOiBzdHJpbmcge1xuICBpZiAoIWRhdGV0aW1lKSByZXR1cm4gJ1Vua25vd24nXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRldGltZSlcbiAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcoJ2VuLUdCJywge1xuICAgIGRheTogJzItZGlnaXQnLFxuICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgeWVhcjogJ251bWVyaWMnLFxuICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICBtaW51dGU6ICcyLWRpZ2l0J1xuICB9KVxufVxuIl0sIm1hcHBpbmdzIjoiQUFLTyxnQkFBUyxhQUFhLFFBQXNDO0FBQ2pFLE1BQUksV0FBVyxLQUFNLFFBQU87QUFDNUIsUUFBTSxlQUFlLE9BQU8sTUFBTSxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ25ELFNBQU8sUUFBUSxZQUFZO0FBQzdCO0FBT08sZ0JBQVMsYUFBYSxRQUF3QjtBQUNuRCxNQUFJLFVBQVUsS0FBSztBQUNqQixVQUFNLGVBQWUsT0FBTyxNQUFNLEVBQUUsU0FBUyxHQUFHLEdBQUc7QUFDbkQsV0FBTyxPQUFPLFlBQVk7QUFBQSxFQUM1QixPQUFPO0FBQ0wsVUFBTSxZQUFZLFNBQVM7QUFDM0IsVUFBTSxlQUFlLE9BQU8sU0FBUyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3RELFdBQU8sT0FBTyxZQUFZO0FBQUEsRUFDNUI7QUFDRjtBQU9PLGdCQUFTLGFBQWEsUUFBd0I7QUFDbkQsU0FBTyxTQUFTLElBQUksR0FBRyxNQUFNLE1BQU07QUFDckM7QUFPTyxnQkFBUyxXQUFXLE1BQTJCO0FBQ3BELE1BQUksQ0FBQyxLQUFNLFFBQU87QUFDbEIsU0FBT
35yxJQUFJLEtBQUssSUFBSSxFQUFFLG1CQUFtQjtBQUMzQztBQU9PLGdCQUFTLGVBQWUsVUFBK0I7QUFDNUQsTUFBSSxDQUFDLFNBQVUsUUFBTztBQUN0QixRQUFNLElBQUksSUFBSSxLQUFLLFFBQVE7QUFDM0IsU0FBTyxFQUFFLGVBQWUsU0FBUztBQUFBLElBQy9CLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxJQUNOLE1BQU07QUFBQSxJQUNOLFFBQVE7QUFBQSxFQUNWLENBQUM7QUFDSDsiLCJuYW1lcyI6W119

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.