2019-05-09 18:54:39 +12:00
|
|
|
// Init
|
|
|
|
|
2021-05-14 00:37:54 +12:00
|
|
|
window.ls.error = function () {
|
|
|
|
return function (error) {
|
2020-06-04 23:20:30 +12:00
|
|
|
window.console.error(error);
|
2020-06-07 02:04:18 +12:00
|
|
|
|
2021-05-14 00:37:54 +12:00
|
|
|
if (window.location.pathname !== '/console') {
|
2020-06-07 02:04:18 +12:00
|
|
|
window.location = '/console';
|
|
|
|
}
|
2019-09-13 22:47:07 +12:00
|
|
|
};
|
2019-05-09 18:54:39 +12:00
|
|
|
};
|
|
|
|
|
2021-05-14 00:37:54 +12:00
|
|
|
window.addEventListener("error", function (event) {
|
2019-09-13 22:47:07 +12:00
|
|
|
console.error("ERROR-EVENT:", event.error.message, event.error.stack);
|
2019-05-09 18:54:39 +12:00
|
|
|
});
|
|
|
|
|
2021-05-14 00:37:54 +12:00
|
|
|
document.addEventListener("account.deleteSession", function () {
|
2019-09-13 22:47:07 +12:00
|
|
|
window.location = "/auth/signin";
|
2020-02-13 21:04:52 +13:00
|
|
|
});
|
|
|
|
|
2021-05-14 00:37:54 +12:00
|
|
|
document.addEventListener("account.create", function () {
|
2020-02-13 21:04:52 +13:00
|
|
|
let container = window.ls.container;
|
|
|
|
let form = container.get('serviceForm');
|
|
|
|
let sdk = container.get('console');
|
|
|
|
|
2022-06-14 22:39:53 +12:00
|
|
|
let promise = sdk.account.createEmailSession(form.email, form.password);
|
2020-02-13 21:04:52 +13:00
|
|
|
|
2021-10-08 15:03:09 +13:00
|
|
|
container.set("serviceForm", {}, true, true); // Remove sensitive data when not needed
|
2021-08-21 04:37:37 +12:00
|
|
|
|
2020-02-13 21:04:52 +13:00
|
|
|
promise.then(function () {
|
2021-05-14 00:37:54 +12:00
|
|
|
var subscribe = document.getElementById('newsletter').checked;
|
|
|
|
if (subscribe) {
|
2021-05-14 01:16:30 +12:00
|
|
|
let alerts = container.get('alerts');
|
|
|
|
let loaderId = alerts.add({ text: 'Loading...', class: "" }, 0);
|
2021-05-14 00:37:54 +12:00
|
|
|
fetch('https://appwrite.io/v1/newsletter/subscribe', {
|
|
|
|
method: 'POST',
|
|
|
|
headers: {
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
},
|
|
|
|
body: JSON.stringify({
|
|
|
|
name: form.name,
|
|
|
|
email: form.email,
|
|
|
|
}),
|
|
|
|
}).finally(function () {
|
2021-05-14 01:16:30 +12:00
|
|
|
alerts.remove(loaderId);
|
2021-05-14 00:37:54 +12:00
|
|
|
window.location = '/console';
|
|
|
|
});
|
|
|
|
} else {
|
2020-02-13 21:04:52 +13:00
|
|
|
window.location = '/console';
|
2021-05-14 00:37:54 +12:00
|
|
|
}
|
|
|
|
}, function (error) {
|
|
|
|
window.location = '/auth/signup?failure=1';
|
2020-02-13 21:04:52 +13:00
|
|
|
});
|
2021-06-09 03:27:12 +12:00
|
|
|
});
|
2021-08-26 23:21:41 +12:00
|
|
|
window.addEventListener("load", async () => {
|
2021-08-26 03:56:53 +12:00
|
|
|
const bars = 12;
|
2021-06-09 03:27:12 +12:00
|
|
|
const realtime = window.ls.container.get('realtime');
|
2021-08-26 23:21:41 +12:00
|
|
|
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
|
2021-08-21 04:37:37 +12:00
|
|
|
let current = {};
|
2021-12-07 01:03:12 +13:00
|
|
|
window.ls.container.get('console').subscribe(['project', 'console'], response => {
|
2022-05-17 23:05:14 +12:00
|
|
|
if (response.events.includes('stats.connections')) {
|
|
|
|
for (let project in response.payload) {
|
|
|
|
current[project] = response.payload[project] ?? 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2022-06-23 01:03:55 +12:00
|
|
|
if (response.events.includes('databases.*.collections.*.attributes.*')) {
|
|
|
|
document.dispatchEvent(new CustomEvent('databases.createAttribute'));
|
2022-05-17 23:05:14 +12:00
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
2022-03-01 01:24:35 +13:00
|
|
|
|
2022-06-23 01:03:55 +12:00
|
|
|
if (response.events.includes('databases.*.collections.*.indexes.*')) {
|
|
|
|
document.dispatchEvent(new CustomEvent('databases.createIndex'));
|
2022-05-17 23:05:14 +12:00
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (response.events.includes('functions.*.deployments.*')) {
|
|
|
|
document.dispatchEvent(new CustomEvent('functions.createDeployment'));
|
|
|
|
|
|
|
|
return;
|
2021-08-21 04:37:37 +12:00
|
|
|
}
|
2021-12-07 01:03:12 +13:00
|
|
|
|
2022-05-17 23:05:14 +12:00
|
|
|
if (response.events.includes('functions.*.executions.*')) {
|
|
|
|
document.dispatchEvent(new CustomEvent('functions.createExecution'));
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
2021-06-09 03:27:12 +12:00
|
|
|
});
|
2021-08-26 23:21:41 +12:00
|
|
|
|
|
|
|
while (true) {
|
2021-08-21 04:37:37 +12:00
|
|
|
let newHistory = {};
|
|
|
|
for (const project in current) {
|
|
|
|
let history = realtime?.history ?? {};
|
|
|
|
|
|
|
|
if (!(project in history)) {
|
|
|
|
history[project] = new Array(bars).fill({
|
|
|
|
percentage: 0,
|
|
|
|
value: 0
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
history = history[project];
|
|
|
|
history.push({
|
|
|
|
percentage: 0,
|
|
|
|
value: current[project]
|
|
|
|
});
|
|
|
|
if (history.length >= bars) {
|
|
|
|
history.shift();
|
|
|
|
}
|
|
|
|
|
|
|
|
const highest = history.reduce((prev, curr) => {
|
|
|
|
return (curr.value > prev) ? curr.value : prev;
|
|
|
|
}, 0);
|
|
|
|
|
|
|
|
history = history.map(({ percentage, value }) => {
|
2021-08-26 23:21:41 +12:00
|
|
|
createdHistory = true;
|
2021-08-21 04:37:37 +12:00
|
|
|
percentage = value === 0 ? 0 : ((Math.round((value / highest) * 10) / 10) * 100);
|
|
|
|
if (percentage > 100) percentage = 100;
|
|
|
|
else if (percentage == 0 && value != 0) percentage = 5;
|
|
|
|
|
|
|
|
return {
|
|
|
|
percentage: percentage,
|
|
|
|
value: value
|
|
|
|
};
|
|
|
|
})
|
|
|
|
newHistory[project] = history;
|
|
|
|
}
|
2021-08-26 23:21:41 +12:00
|
|
|
|
2021-08-27 00:33:48 +12:00
|
|
|
let currentSnapshot = { ...current };
|
|
|
|
for (let index = .1; index <= 1; index += .05) {
|
|
|
|
let currentTransition = { ...currentSnapshot };
|
|
|
|
for (const project in current) {
|
|
|
|
if (project in newHistory) {
|
|
|
|
let base = newHistory[project][bars - 2].value;
|
|
|
|
let cur = currentSnapshot[project];
|
|
|
|
let offset = (cur - base) * index;
|
|
|
|
currentTransition[project] = base + Math.floor(offset);
|
2021-08-26 23:21:41 +12:00
|
|
|
}
|
|
|
|
}
|
2021-08-27 00:33:48 +12:00
|
|
|
|
|
|
|
realtime.setCurrent(currentTransition);
|
|
|
|
await sleep(250);
|
2021-08-26 23:21:41 +12:00
|
|
|
}
|
|
|
|
|
2021-08-21 04:37:37 +12:00
|
|
|
realtime.setHistory(newHistory);
|
2021-08-26 23:21:41 +12:00
|
|
|
}
|
2021-06-09 03:27:12 +12:00
|
|
|
});
|
|
|
|
|
2021-12-16 02:57:29 +13:00
|
|
|
/**
|
|
|
|
* Method to add attribute for the UI on array attributes.
|
|
|
|
*
|
|
|
|
* Needs to be global - since client side routing will break it.
|
|
|
|
* @param {*} doc
|
|
|
|
* @param {*} key
|
|
|
|
* @returns
|
|
|
|
*/
|
|
|
|
function addAttribute(doc, key) {
|
|
|
|
if (!Array.isArray(doc[key])) {
|
|
|
|
doc[key] = [];
|
|
|
|
}
|
|
|
|
doc[key].push(null);
|
|
|
|
return doc;
|
|
|
|
}
|