87 lines
2.8 KiB
JavaScript
87 lines
2.8 KiB
JavaScript
"use strict";
|
|
|
|
// Source: https://stackoverflow.com/a/111545/4466589
|
|
function encodeQueryData(data) {
|
|
let ret = [];
|
|
for (let d in data) {
|
|
if (data[d] === null || data[d] === undefined)
|
|
continue;
|
|
ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d]));
|
|
}
|
|
return ret.join("&");
|
|
}
|
|
|
|
|
|
// Source: https://stackoverflow.com/q/10420352/4466589
|
|
function fileSize(fileSizeInBytes) {
|
|
let i = -1;
|
|
let byteUnits = [' KiB', ' MiB', ' GiB', ' TiB', ' PiB', ' EiB', ' ZiB', ' YiB'];
|
|
do {
|
|
fileSizeInBytes = fileSizeInBytes / 1024;
|
|
i++;
|
|
} while (fileSizeInBytes > 1024);
|
|
|
|
return Math.max(fileSizeInBytes, 0.1).toFixed(1) + byteUnits[i];
|
|
}
|
|
|
|
function humaniseDate(unixTime) {
|
|
return (new Date(unixTime * 1000)).toLocaleDateString("en-GB", {
|
|
day: "2-digit",
|
|
month: "2-digit",
|
|
year: "numeric",
|
|
hour: "2-digit",
|
|
minute: "2-digit",
|
|
second: "2-digit"
|
|
});
|
|
}
|
|
|
|
// a fetch() that errs on anything but HTTP 2XX
|
|
// Source: https://github.com/github/fetch/issues/155#issuecomment-108288863
|
|
function myFetch(url, options) {
|
|
if (options == null) options = {}
|
|
if (options.credentials == null) options.credentials = 'same-origin'
|
|
return fetch(url, options).then(function (response) {
|
|
if (response.status >= 200 && response.status < 300) {
|
|
return Promise.resolve(response)
|
|
} else {
|
|
var error = new Error(response.statusText || response.status)
|
|
error.response = response
|
|
return Promise.reject(error)
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* Returns the ISO 8601 week number for this date.
|
|
*
|
|
* Source: https://stackoverflow.com/a/9047794/4466589
|
|
*
|
|
* @param int dowOffset
|
|
* @return int
|
|
*/
|
|
Date.prototype.getWeek = function (dowOffset) {
|
|
/* getWeek() was developed by Nick Baicoianu at MeanFreePath: http://www.meanfreepath.com */
|
|
|
|
dowOffset = 1;
|
|
let newYear = new Date(this.getFullYear(), 0, 1);
|
|
let day = newYear.getDay() - dowOffset; //the day of week the year begins on
|
|
day = (day >= 0 ? day : day + 7);
|
|
let daynum = Math.floor((this.getTime() - newYear.getTime() -
|
|
(this.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;
|
|
let weeknum;
|
|
// if the year starts before the middle of a week
|
|
if (day < 4) {
|
|
weeknum = Math.floor((daynum + day - 1) / 7) + 1;
|
|
if (weeknum > 52) {
|
|
var nYear = new Date(this.getFullYear() + 1, 0, 1);
|
|
var nday = nYear.getDay() - dowOffset;
|
|
nday = nday >= 0 ? nday : nday + 7;
|
|
/*if the next year starts before the middle of
|
|
the week, it is week #1 of that year*/
|
|
weeknum = nday < 4 ? 1 : 53;
|
|
}
|
|
} else {
|
|
weeknum = Math.floor((daynum + day - 1) / 7);
|
|
}
|
|
return weeknum;
|
|
}; |