38 lines
1.0 KiB
JavaScript
38 lines
1.0 KiB
JavaScript
import Sqids from 'sqids';
|
|
|
|
let sqids = new Sqids({ minLength: 6, alphabet: 'abcdefghijklmnopqrstuvwxyz0123456789' });
|
|
|
|
export function hashcode(str) {
|
|
for (var i = 0, h = 9; i < str.length; ) h = Math.imul(h ^ str.charCodeAt(i++), 9 ** 9);
|
|
return h ^ (h >>> 9);
|
|
}
|
|
|
|
// for mnemonic display
|
|
export function shorthandCode(str) {
|
|
return sqids.encode([hashcode(str) & 0xffff]);
|
|
}
|
|
|
|
// for tag display
|
|
export function hashColor(str) {
|
|
const hash = hashcode(str);
|
|
return `hsl(${hash % 360}, ${65 + (hash % 30) + 1}%, ${85 + (hash % 10) + 1}%)`;
|
|
}
|
|
|
|
export function formatSecondsToHms(s) {
|
|
s = Number(s);
|
|
var h = Math.floor(s / 3600);
|
|
var m = Math.ceil((s % 3600) / 60);
|
|
|
|
var hDisplay = h > 0 ? h + (h == 1 ? ' hr' : ' hrs') + (m > 0 ? ', ' : '') : '';
|
|
var mDisplay = m > 0 ? m + (m == 1 ? ' min' : ' mins') : '';
|
|
return hDisplay + mDisplay;
|
|
}
|
|
|
|
export function formatDate(unix_timestamp) {
|
|
return new Date(unix_timestamp).toISOString().split('T')[0];
|
|
}
|
|
|
|
export function formatTrackTime(s) {
|
|
return new Date(s * 1000).toISOString().slice(11, 19);
|
|
}
|