source: main/trunk/model-interfaces-dev/atea/korero-maori-asr/src/js/Util.js@ 35426

Last change on this file since 35426 was 35426, checked in by cstephen, 3 years ago

Improve audio time bar implementation

File size: 3.0 KB
Line 
1export default class Util {
2 static lut = [];
3
4 /**
5 * When awaited, creates a delay for the given number of milliseconds.
6 * @param {Number} delayMilliseconds The number of milliseconds to delay for.
7 * @returns A promise that will resolve when the delay has finished.
8 */
9 static delay(delayMilliseconds) {
10 return new Promise(
11 resolve => {
12 setTimeout(
13 () => {
14 resolve(2);
15 },
16 delayMilliseconds
17 );
18 }
19 );
20 }
21
22 /**
23 * Fast UUID generator, RFC4122 version 4 compliant.
24 * @author Jeff Ward (jcward.com).
25 * @license MIT
26 * @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
27 **/
28 static generateUuid() {
29 if (this.lut.length === 0) {
30 for (var i = 0; i < 256; i++) {
31 this.lut[i] = (i < 16 ? "0" : "") + (i).toString(16);
32 }
33 }
34
35 var d0 = Math.random() * 0xffffffff | 0;
36 var d1 = Math.random() * 0xffffffff | 0;
37 var d2 = Math.random() * 0xffffffff | 0;
38 var d3 = Math.random() * 0xffffffff | 0;
39
40 return this.lut[d0 & 0xff] + this.lut[d0 >> 8 & 0xff] + this.lut[d0 >> 16 & 0xff] + this.lut[d0 >> 24 & 0xff] + "-" +
41 this.lut[d1 & 0xff] + this.lut[d1 >> 8 & 0xff] + "-" + this.lut[d1 >> 16 & 0x0f | 0x40] + this.lut[d1 >> 24 & 0xff] + "-" +
42 this.lut[d2 & 0x3f | 0x80] + this.lut[d2 >> 8 & 0xff] + "-" + this.lut[d2 >> 16 & 0xff] + this.lut[d2 >> 24 & 0xff] +
43 this.lut[d3 & 0xff] + this.lut[d3 >> 8 & 0xff] + this.lut[d3 >> 16 & 0xff] + this.lut[d3 >> 24 & 0xff];
44 }
45
46 /**
47 * Formats a number of seconds into a time string.
48 * @param {Number} seconds The number of seconds.
49 * @param {Boolean} includeHoursIfNone Defines whether to include the hours component if it is empty.
50 * @param {Number} fractionDigits The number of millisecond digits to include in the time string.
51 * @returns {String} The formatted time string.
52 */
53 static formatSecondsTimeString(seconds, includeHoursIfNone, fractionDigits = 3) {
54 const hours = (seconds / 3600) | 0;
55 const minutes = ((seconds - (hours * 60)) / 60) | 0;
56 const actualSeconds = seconds - (minutes * 60);
57
58 let result = "";
59
60 if (includeHoursIfNone) {
61 result = hours.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 }) + ":";
62 }
63 else if (!includeHoursIfNone && hours > 0) {
64 result = hours.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 }) + ":";
65 }
66
67 result += minutes.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 });
68 result += ":" + actualSeconds.toLocaleString("en-US", { minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits, minimumIntegerDigits: 2 });
69
70 return result;
71 }
72}
Note: See TracBrowser for help on using the repository browser.