2019-05-09 20:23:22 +12:00
|
|
|
window.ls.filter
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("avatar", function ($value, element) {
|
2019-09-13 22:47:07 +12:00
|
|
|
if (!$value) {
|
|
|
|
return "";
|
|
|
|
}
|
2020-06-10 09:31:15 +12:00
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
let size = element.dataset["size"] || 80;
|
|
|
|
let name = $value.name || $value || "";
|
2021-10-30 01:01:48 +13:00
|
|
|
|
2020-06-10 09:31:15 +12:00
|
|
|
name = (typeof name !== 'string') ? '--' : name;
|
2019-10-13 10:53:03 +13:00
|
|
|
|
2020-06-11 20:40:35 +12:00
|
|
|
return def =
|
2021-10-30 01:01:48 +13:00
|
|
|
"/v1/avatars/initials?project=console" +
|
2020-06-10 09:31:15 +12:00
|
|
|
"&name=" +
|
2019-09-13 22:47:07 +12:00
|
|
|
encodeURIComponent(name) +
|
2020-06-10 09:31:15 +12:00
|
|
|
"&width=" +
|
2019-09-13 22:47:07 +12:00
|
|
|
size +
|
2020-06-10 09:31:15 +12:00
|
|
|
"&height=" +
|
|
|
|
size;
|
2019-09-13 22:47:07 +12:00
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("selectedCollection", function ($value, router) {
|
2019-09-13 22:47:07 +12:00
|
|
|
return $value === router.params.collectionId ? "selected" : "";
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("selectedDocument", function ($value, router) {
|
2019-09-13 22:47:07 +12:00
|
|
|
return $value === router.params.documentId ? "selected" : "";
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("localeString", function ($value) {
|
2019-09-13 22:47:07 +12:00
|
|
|
$value = parseInt($value);
|
|
|
|
return !Number.isNaN($value) ? $value.toLocaleString() : "";
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("date", function ($value, date) {
|
2019-09-13 22:47:07 +12:00
|
|
|
return date.format("Y-m-d", $value);
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("dateTime", function ($value, date) {
|
2019-09-13 22:47:07 +12:00
|
|
|
return date.format("Y-m-d H:i", $value);
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("dateText", function ($value, date) {
|
2019-09-13 22:47:07 +12:00
|
|
|
return date.format("d M Y", $value);
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("timeSince", function ($value) {
|
2020-07-18 18:16:34 +12:00
|
|
|
$value = $value * 1000;
|
|
|
|
|
|
|
|
let seconds = Math.floor((Date.now() - $value) / 1000);
|
|
|
|
let unit = "second";
|
|
|
|
let direction = "ago";
|
|
|
|
|
|
|
|
if (seconds < 0) {
|
|
|
|
seconds = -seconds;
|
|
|
|
direction = "from now";
|
|
|
|
}
|
|
|
|
|
|
|
|
let value = seconds;
|
2021-10-30 01:01:48 +13:00
|
|
|
|
2020-07-18 18:16:34 +12:00
|
|
|
if (seconds >= 31536000) {
|
|
|
|
value = Math.floor(seconds / 31536000);
|
|
|
|
unit = "year";
|
|
|
|
}
|
|
|
|
else if (seconds >= 86400) {
|
|
|
|
value = Math.floor(seconds / 86400);
|
|
|
|
unit = "day";
|
|
|
|
}
|
|
|
|
else if (seconds >= 3600) {
|
|
|
|
value = Math.floor(seconds / 3600);
|
|
|
|
unit = "hour";
|
|
|
|
}
|
|
|
|
else if (seconds >= 60) {
|
|
|
|
value = Math.floor(seconds / 60);
|
|
|
|
unit = "minute";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (value != 1) {
|
|
|
|
unit = unit + "s";
|
|
|
|
}
|
2021-10-30 01:01:48 +13:00
|
|
|
|
2020-07-18 18:16:34 +12:00
|
|
|
return value + " " + unit + " " + direction;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("ms2hum", function ($value) {
|
2019-09-13 22:47:07 +12:00
|
|
|
let temp = $value;
|
|
|
|
const years = Math.floor(temp / 31536000),
|
|
|
|
days = Math.floor((temp %= 31536000) / 86400),
|
|
|
|
hours = Math.floor((temp %= 86400) / 3600),
|
|
|
|
minutes = Math.floor((temp %= 3600) / 60),
|
|
|
|
seconds = temp % 60;
|
2019-05-09 20:23:22 +12:00
|
|
|
|
2019-09-13 22:47:07 +12:00
|
|
|
if (days || hours || seconds || minutes) {
|
|
|
|
return (
|
|
|
|
(years ? years + "y " : "") +
|
|
|
|
(days ? days + "d " : "") +
|
|
|
|
(hours ? hours + "h " : "") +
|
|
|
|
(minutes ? minutes + "m " : "") +
|
|
|
|
Number.parseFloat(seconds).toFixed(0) +
|
|
|
|
"s"
|
|
|
|
);
|
2019-05-09 20:23:22 +12:00
|
|
|
}
|
2019-09-13 22:47:07 +12:00
|
|
|
|
|
|
|
return "< 1s";
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("seconds2hum", function ($value) {
|
2020-07-17 09:51:26 +12:00
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
var seconds = ($value).toFixed(3);
|
2020-07-17 09:51:26 +12:00
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
var minutes = ($value / (60)).toFixed(1);
|
2020-07-17 09:51:26 +12:00
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
var hours = ($value / (60 * 60)).toFixed(1);
|
2020-07-17 09:51:26 +12:00
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
var days = ($value / (60 * 60 * 24)).toFixed(1);
|
2020-07-17 09:51:26 +12:00
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
if (seconds < 60) {
|
|
|
|
return seconds + "s";
|
|
|
|
} else if (minutes < 60) {
|
|
|
|
return minutes + "m";
|
|
|
|
} else if (hours < 24) {
|
|
|
|
return hours + "h";
|
|
|
|
} else {
|
|
|
|
return days + "d"
|
|
|
|
}
|
2020-07-17 09:51:26 +12:00
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("markdown", function ($value, markdown) {
|
2019-09-13 22:47:07 +12:00
|
|
|
return markdown.render($value);
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("pageCurrent", function ($value, env) {
|
2019-09-13 22:47:07 +12:00
|
|
|
return Math.ceil(parseInt($value || 0) / env.PAGING_LIMIT) + 1;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("pageTotal", function ($value, env) {
|
2019-09-13 22:47:07 +12:00
|
|
|
let total = Math.ceil(parseInt($value || 0) / env.PAGING_LIMIT);
|
|
|
|
return total ? total : 1;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("humanFileSize", function ($value) {
|
2019-09-13 22:47:07 +12:00
|
|
|
if (!$value) {
|
|
|
|
return 0;
|
2019-05-09 20:23:22 +12:00
|
|
|
}
|
2019-09-13 22:47:07 +12:00
|
|
|
|
|
|
|
let thresh = 1000;
|
|
|
|
|
|
|
|
if (Math.abs($value) < thresh) {
|
2021-02-24 05:17:45 +13:00
|
|
|
return $value;
|
2019-05-09 20:23:22 +12:00
|
|
|
}
|
2019-09-13 22:47:07 +12:00
|
|
|
|
|
|
|
let units = ["kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
|
|
|
let u = -1;
|
|
|
|
|
|
|
|
do {
|
|
|
|
$value /= thresh;
|
|
|
|
++u;
|
|
|
|
} while (Math.abs($value) >= thresh && u < units.length - 1);
|
|
|
|
|
2021-02-24 05:17:45 +13:00
|
|
|
return $value.toFixed(1);
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("humanFileUnit", function ($value) {
|
2021-02-24 05:17:45 +13:00
|
|
|
if (!$value) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
let thresh = 1000;
|
|
|
|
|
|
|
|
if (Math.abs($value) < thresh) {
|
|
|
|
return 'B';
|
|
|
|
}
|
|
|
|
|
|
|
|
let units = ["kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
|
|
|
let u = -1;
|
|
|
|
|
|
|
|
do {
|
|
|
|
$value /= thresh;
|
|
|
|
++u;
|
|
|
|
} while (Math.abs($value) >= thresh && u < units.length - 1);
|
|
|
|
|
|
|
|
return units[u];
|
2019-09-13 22:47:07 +12:00
|
|
|
})
|
2021-11-09 22:24:06 +13:00
|
|
|
.add("statsTotal", function ($value) {
|
2019-09-13 22:47:07 +12:00
|
|
|
if (!$value) {
|
|
|
|
return 0;
|
2019-05-09 20:23:22 +12:00
|
|
|
}
|
2019-09-13 22:47:07 +12:00
|
|
|
|
2020-05-30 00:04:22 +12:00
|
|
|
$value = abbreviate($value, 0, false, false);
|
2019-09-13 22:47:07 +12:00
|
|
|
|
2021-11-09 22:24:06 +13:00
|
|
|
return $value ?? "N/A";
|
|
|
|
})
|
|
|
|
.add("statsGetLast", function ($value) {
|
|
|
|
if (!$value || $value.length < 1) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $value[$value.length - 1].value;
|
2019-10-19 12:59:33 +13:00
|
|
|
})
|
2021-11-25 20:53:40 +13:00
|
|
|
.add("statsGetLast", function ($value) {
|
|
|
|
if (!$value || $value.length < 1) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $value[$value.length - 1].value;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("isEmpty", function ($value) {
|
2020-04-28 06:38:06 +12:00
|
|
|
return (!!$value);
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("isEmptyObject", function ($value) {
|
2019-10-19 12:59:33 +13:00
|
|
|
return ((Object.keys($value).length === 0 && $value.constructor === Object) || $value.length === 0)
|
2020-02-25 01:56:57 +13:00
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("activeDomainsCount", function ($value) {
|
2020-02-25 01:56:57 +13:00
|
|
|
let result = [];
|
2021-10-27 02:19:28 +13:00
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
if (Array.isArray($value)) {
|
|
|
|
result = $value.filter(function (node) {
|
2020-02-25 01:56:57 +13:00
|
|
|
return (node.verification && node.certificateId);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return result.length;
|
2020-03-15 17:54:55 +13:00
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("documentAction", function (container) {
|
2020-04-02 10:41:29 +13:00
|
|
|
let collection = container.get('project-collection');
|
|
|
|
let document = container.get('project-document');
|
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
if (collection && document && !document.$id) {
|
2020-04-02 10:41:29 +13:00
|
|
|
return 'database.createDocument';
|
|
|
|
}
|
|
|
|
|
|
|
|
return 'database.updateDocument';
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("documentSuccess", function (container) {
|
2020-04-26 08:33:35 +12:00
|
|
|
let document = container.get('project-document');
|
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
if (document && !document.$id) {
|
2020-04-26 08:33:35 +12:00
|
|
|
return ',redirect';
|
|
|
|
}
|
|
|
|
|
|
|
|
return '';
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("firstElement", function ($value) {
|
|
|
|
if ($value && $value[0]) {
|
2020-04-21 20:13:45 +12:00
|
|
|
return $value[0];
|
|
|
|
}
|
|
|
|
|
2020-05-01 19:59:54 +12:00
|
|
|
return $value;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("platformsLimit", function ($value) {
|
2020-04-21 20:13:45 +12:00
|
|
|
return $value;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("limit", function ($value) {
|
2020-05-04 17:04:30 +12:00
|
|
|
let postfix = ($value.length >= 50) ? '...' : '';
|
|
|
|
return $value.substring(0, 50) + postfix;
|
|
|
|
;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("arraySentence", function ($value) {
|
|
|
|
if (!Array.isArray($value)) {
|
2020-06-08 16:40:13 +12:00
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
return $value.join(", ").replace(/,\s([^,]+)$/, ' and $1');
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("runtimeName", function ($value, env) {
|
|
|
|
if (env && env.RUNTIMES && env.RUNTIMES[$value]) {
|
2021-04-21 23:02:54 +12:00
|
|
|
return env.RUNTIMES[$value].name;
|
2020-07-15 06:55:44 +12:00
|
|
|
}
|
|
|
|
|
|
|
|
return '';
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("runtimeLogo", function ($value, env) {
|
|
|
|
if (env && env.RUNTIMES && env.RUNTIMES[$value]) {
|
2021-04-21 23:02:54 +12:00
|
|
|
return env.RUNTIMES[$value].logo;
|
2020-07-15 06:55:44 +12:00
|
|
|
}
|
|
|
|
|
|
|
|
return '';
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("runtimeVersion", function ($value, env) {
|
|
|
|
if (env && env.RUNTIMES && env.RUNTIMES[$value]) {
|
2021-04-21 23:02:54 +12:00
|
|
|
return env.RUNTIMES[$value].version;
|
2020-07-15 06:55:44 +12:00
|
|
|
}
|
|
|
|
|
|
|
|
return '';
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("indexAttributes", function ($value) {
|
2021-08-11 04:18:28 +12:00
|
|
|
let output = '';
|
|
|
|
|
2021-10-30 01:01:48 +13:00
|
|
|
for (let i = 0; i < $value.attributes.length; i++) {
|
2021-08-11 04:18:28 +12:00
|
|
|
output += $value.attributes[i] + ' (' + $value.orders[i] + '), '
|
|
|
|
}
|
|
|
|
return output.slice(0, -2);
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("collectionAttributes", function ($value) {
|
|
|
|
if (!Array.isArray($value)) {
|
2021-08-16 09:09:40 +12:00
|
|
|
return [];
|
|
|
|
}
|
|
|
|
|
|
|
|
$value.unshift({
|
|
|
|
$id: '$id'
|
|
|
|
});
|
|
|
|
|
|
|
|
return $value;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("documentAttribute", function ($value, attribute) {
|
2021-11-12 02:58:50 +13:00
|
|
|
if (attribute.key in $value) {
|
2021-08-22 09:48:07 +12:00
|
|
|
return $value[attribute.key];
|
2021-08-16 09:09:40 +12:00
|
|
|
}
|
2021-10-27 02:19:28 +13:00
|
|
|
|
2021-08-16 09:09:40 +12:00
|
|
|
return null;
|
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("accessProject", function ($value, router) {
|
2021-06-11 00:42:40 +12:00
|
|
|
return ($value && $value.hasOwnProperty(router.params.project)) ? $value[router.params.project] : 0;
|
2021-06-09 03:27:12 +12:00
|
|
|
})
|
2021-10-30 01:01:48 +13:00
|
|
|
.add("first", function ($value) {
|
|
|
|
return $value[0].$id;
|
|
|
|
})
|
|
|
|
.add("last", function ($value) {
|
|
|
|
return $value[$value.length - 1].$id;
|
|
|
|
})
|
|
|
|
;
|
2019-09-13 22:47:07 +12:00
|
|
|
|
|
|
|
function abbreviate(number, maxPlaces, forcePlaces, forceLetter) {
|
|
|
|
number = Number(number);
|
|
|
|
forceLetter = forceLetter || false;
|
|
|
|
if (forceLetter !== false) {
|
|
|
|
return annotate(number, maxPlaces, forcePlaces, forceLetter);
|
|
|
|
}
|
|
|
|
let abbr;
|
|
|
|
if (number >= 1e12) {
|
|
|
|
abbr = "T";
|
|
|
|
} else if (number >= 1e9) {
|
|
|
|
abbr = "B";
|
|
|
|
} else if (number >= 1e6) {
|
|
|
|
abbr = "M";
|
|
|
|
} else if (number >= 1e3) {
|
|
|
|
abbr = "K";
|
|
|
|
} else {
|
|
|
|
abbr = "";
|
|
|
|
}
|
|
|
|
return annotate(number, maxPlaces, forcePlaces, abbr);
|
2019-05-09 20:23:22 +12:00
|
|
|
}
|
|
|
|
|
|
|
|
function annotate(number, maxPlaces, forcePlaces, abbr) {
|
2019-09-13 22:47:07 +12:00
|
|
|
// set places to false to not round
|
|
|
|
let rounded = 0;
|
|
|
|
switch (abbr) {
|
|
|
|
case "T":
|
|
|
|
rounded = number / 1e12;
|
|
|
|
break;
|
|
|
|
case "B":
|
|
|
|
rounded = number / 1e9;
|
|
|
|
break;
|
|
|
|
case "M":
|
|
|
|
rounded = number / 1e6;
|
|
|
|
break;
|
|
|
|
case "K":
|
|
|
|
rounded = number / 1e3;
|
|
|
|
break;
|
|
|
|
case "":
|
|
|
|
rounded = number;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (maxPlaces !== false) {
|
|
|
|
let test = new RegExp("\\.\\d{" + (maxPlaces + 1) + ",}$");
|
|
|
|
if (test.test("" + rounded)) {
|
|
|
|
rounded = rounded.toFixed(maxPlaces);
|
2019-05-09 20:23:22 +12:00
|
|
|
}
|
2019-09-13 22:47:07 +12:00
|
|
|
}
|
|
|
|
if (forcePlaces !== false) {
|
|
|
|
rounded = Number(rounded).toFixed(forcePlaces);
|
|
|
|
}
|
|
|
|
return rounded + abbr;
|
|
|
|
}
|