var pathArray = window.location.pathname.split('/');
var appName = pathArray[2];
if (getCookie("id")) {
console.log("Found ID Cookie: " + getCookie("id"));
// Fetch bot metadata + authorization state, then render the page.
fetch('/CollabCentral/' + appName + '/info')
.then(res => res.json())
.then(info => {
document.title = info.label;
document.getElementById("appLabel").innerHTML = info.label;
document.getElementById("name").innerHTML = getCookie("displayName") || "";
document.getElementById("appName").href = info.faviconUrl;
document.getElementById("jobLink").href = "/CollabCentral/" + appName + "/sendMessage.html";
var appIcon = document.getElementById("appIcon");
appIcon.src = info.iconUrl;
appIcon.style.maxHeight = "150px";
appIcon.style.maxWidth = "150px";
if (!info.authorized) {
document.getElementById("unauthorizedPanel").classList.remove("hidden");
return;
}
document.getElementById("jobsPanel").classList.remove("hidden");
initJobTables();
})
.catch(err => console.error("Failed to load /info:", err));
} else {
console.log("No ID Cookie found.");
var randomNumber = Math.random().toString();
randomNumber = randomNumber.substring(2, randomNumber.length);
fetch('/CollabCentral/' + appName + '/authUrl')
.then(res => res.text())
.then((res) => {
window.location.href = res + randomNumber;
});
}
function initJobTables() {
$('#runningJobs').dataTable({
ajax: {
url: '/CollabCentral/' + appName + '/jobs/list/running',
dataSrc: ''
},
columns: [
{ data: 'senderDisplayName' },
{ data: 'appName' },
{ data: 'startTime' },
{ data: 'totalRecipients' },
{
data: 'completedRecipients',
render: function (val, type, row) {
if (type !== 'display' || row.jobId === undefined || row.jobId === null) return val;
return val + ' view';
}
}
],
searching: false,
info: false,
ordering: false,
paging: false
});
$('#scheduledJobs').dataTable({
ajax: {
url: '/CollabCentral/' + appName + '/jobs/list/scheduled',
dataSrc: ''
},
columns: [
{ data: 'senderDisplayName' },
{ data: 'appName' },
{ data: 'message' },
{ data: 'totalRecipients' },
{ data: 'scheduledFor' }
],
searching: false,
info: false,
ordering: false,
paging: false
});
$('#completedJobs').dataTable({
ajax: {
url: '/CollabCentral/' + appName + '/jobs/list/completed',
dataSrc: ''
},
columns: [
{
data: 'jobId',
render: function (jobId) {
if (jobId === undefined || jobId === null) return '';
return '#' + jobId + '';
}
},
{ data: 'senderDisplayName' },
{ data: 'appName' },
{ data: 'message.english.html' },
{ data: 'startTime' },
{ data: 'endTime' },
{ data: 'stats.totalTime' },
{ data: 'stats.webexTime' },
{ data: 'stats.averageTime' },
{ data: 'stats.succeededMsgs' },
{ data: 'stats.totalMsgs' },
{ data: 'stats.succeededMsgPct' }
],
searching: false,
info: false,
ordering: false,
paging: false
});
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}