TEDxKanke/monitor-tedxkanke.html
2020-04-17 14:43:21 +05:30

1077 lines
50 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TEDxKanke monitor</title>
<!--<link rel="stylesheet" href="css/main.css">-->
<style>* {
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: 'Roboto', sans-serif;
}
:root {
--accent-color: #e62b1e;
--background: 34, 34, 34;
--foreground: #2a2a2a;
--rgb-bw: 255, 255, 255;
--light-text: #eee;
--light-color: #aaa;
--dark-color: #111;
}
body {
margin: 0;
font-size: 16px;
background: rgba(var(--background), 1);
color: rgba(var(--rgb-bw), 1);
}
.hide-completely {
display: none !important;
}
button {
padding: 0.4rem 0.6rem;
border: none;
font-weight: 500;
background: transparent;
color: #00C853;
border-radius: 0.2rem;
cursor: pointer;
text-transform: uppercase;
}
.padding {
padding: 1rem;
}
.hover {
-webkit-transition: background 0.3s ease;
transition: background 0.3s ease;
cursor: pointer;
}
.hover:hover {
background: rgba(var(--rgb-bw), 0.06);
}
.page {
display: -ms-grid;
display: grid;
margin: 1rem;
}
#recent_activity {
margin-bottom: 1rem;
}
#tasks_container,
#activity_container {
max-height: 80vh;
overflow-y: auto;
}
.container {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-flow: column wrap;
flex-flow: column wrap;
border-radius: 0.6rem;
background: var(--foreground);
-ms-flex-item-align: start;
align-self: flex-start;
}
.container header {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin-bottom: 1rem;
}
.container header h3 {
font-weight: 500;
color: rgba(var(--rgb-bw), 1);
}
.container header button {
margin-left: auto;
}
ul {
list-style: none;
padding: 0;
}
ul .person-card, ul .task-card {
display: -ms-grid;
display: grid;
-ms-grid-columns: auto 1fr;
grid-template-columns: auto 1fr;
grid-template-areas: 'profile .'
'profile .';
gap: 0.5rem 1rem;
margin-bottom: 0.5rem;
}
ul .person-card span, ul .task-card span {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
padding: 0.8rem;
font-size: 1.4rem;
color: rgba(var(--background), 1);
font-weight: 500;
-ms-grid-row: 1;
-ms-grid-row-span: 2;
-ms-grid-column: 1;
grid-area: profile;
-ms-flex-item-align: start;
align-self: flex-start;
background: #00E5FF;
border-radius: 2rem;
line-height: 0;
}
ul .person-card span::after, ul .task-card span::after {
content: '';
display: block;
padding-top: 100%;
}
ul .person-card h5, ul .task-card h5 {
font-weight: normal;
opacity: 0.8;
word-break: break-all;
}
ul .person-card h4, ul .task-card h4 {
text-transform: capitalize;
font-weight: 500;
}
ul .person-card:last-of-type, ul .task-card:last-of-type {
margin-bottom: 0;
}
.update-card {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-flow: column wrap;
flex-flow: column wrap;
margin-bottom: 1rem;
}
.update-card:last-of-type {
margin-bottom: 0;
}
.update-card p {
line-height: 1.6;
opacity: 0.9;
}
.update-card .break-all {
word-break: break-all;
}
.update-card .time {
font-size: 0.8rem;
opacity: 0.9;
margin-left: auto;
color: mediumspringgreen;
}
.update-card .capitalise {
text-transform: capitalize;
}
#top_nav {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
z-index: 4;
padding: 1rem;
}
#top_nav .spacer {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
#top_nav .logo {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.logo {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
font-size: 1.2rem;
}
.logo .cls-2, .logo .cls-3 {
fill: rgba(var(--rgb-bw), 1);
font-size: 146.9px;
font-family: ArialMT, Arial;
}
.logo svg {
height: 2.5rem;
}
.logo h4 {
margin: 0;
}
.container-header {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
margin-bottom: 1rem;
}
.container-header h3 {
font-weight: 500;
}
#show_all {
background: var(--foreground);
border-radius: 0.6rem;
}
#show_all .popup-container {
pointer-events: none;
background: transparent;
}
.hide {
visibility: hidden;
}
.back-arrow {
fill: none;
stroke: rgba(var(--rgb-bw), 0.8);
stroke-width: 6;
overflow: visible;
width: 2rem;
height: 2rem;
padding: 0.5rem 0.5rem 0.5rem 0;
cursor: pointer;
}
.loader {
height: 4rem;
width: 4rem;
stroke-width: 2;
overflow: visible;
stroke: var(--accent-color);
fill: none;
stroke-dashoffset: 180;
stroke-dasharray: 180;
will-change: stroke-dashoffset;
}
.loading-animation {
-webkit-animation: load 3.6s linear infinite, spin 1s linear infinite;
animation: load 3.6s linear infinite, spin 1s linear infinite;
}
.popup-container {
display: -ms-grid;
display: grid;
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
place-items: center;
background: rgba(0, 0, 0, 0.24);
z-index: 10;
-webkit-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
}
.popup-container .popup {
-ms-flex-item-align: end;
align-self: flex-end;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
width: 100%;
border-radius: 0.5rem 0.5rem 0 0;
padding: 1rem;
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
background: var(--foreground);
-webkit-transform: translateY(1rem);
transform: translateY(1rem);
-webkit-transition: -webkit-transform 0.3s ease;
transition: -webkit-transform 0.3s ease;
transition: transform 0.3s ease;
transition: transform 0.3s ease, -webkit-transform 0.3s ease;
-webkit-box-shadow: 0 2rem 2rem rgba(0, 0, 0, 0.24);
box-shadow: 0 2rem 2rem rgba(0, 0, 0, 0.24);
}
.popup-container .popup h5 {
margin: 0.5rem 0;
}
.popup-container .popup button:first-of-type {
margin-left: auto;
}
.popup-container .popup .container-header {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
padding: 0;
}
.popup-container .popup .container-header button {
background: rgba(var(--rgb-bw), 0.1);
padding: 0.5rem 1rem 0.5rem 0.5rem;
}
.solid-background {
background: rgba(var(--background), 1);
}
#main_loader {
text-align: center;
}
#main_loader h4 {
font-weight: normal;
}
#main_loader .logo {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
margin: 2rem 0;
}
@-webkit-keyframes load {
50% {
stroke-dashoffset: 0;
}
}
@keyframes load {
50% {
stroke-dashoffset: 0;
}
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes spin {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
.fade-in {
-webkit-animation: fadein 0.4s ease;
animation: fadein 0.4s ease;
}
@-webkit-keyframes fadein {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes fadein {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
#show_message {
-webkit-transform: translate(0, 0.4rem);
transform: translate(0, 0.4rem);
-webkit-transition: opacity 0.3s ease, -webkit-transform 0.3s ease;
transition: opacity 0.3s ease, -webkit-transform 0.3s ease;
transition: transform 0.3s ease, opacity 0.3s ease;
transition: transform 0.3s ease, opacity 0.3s ease, -webkit-transform 0.3s ease;
-webkit-box-shadow: 0.2rem 0.4rem 0.8rem rgba(0, 0, 0, 0.16);
box-shadow: 0.2rem 0.4rem 0.8rem rgba(0, 0, 0, 0.16);
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
color: white;
position: fixed;
bottom: 0;
right: 0;
width: 100%;
z-index: 11;
}
#show_message span {
font-weight: 500;
padding: 1rem;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
#show_message button {
padding: 0.5rem 1rem;
margin: 0;
}
#show_message button svg {
stroke: white;
}
@media only screen and (min-width: 640px) {
.page, #top_nav {
margin: 1rem 2vw;
}
#top_nav {
padding: 1rem 0;
}
#top_nav .logo {
-webkit-box-pack: left;
-ms-flex-pack: left;
justify-content: left;
}
.container {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
}
::-webkit-scrollbar {
width: 0.3rem;
}
::-webkit-scrollbar-thumb {
background: rgba(var(--rgb-bw), 0.3);
}
::-webkit-scrollbar-thumb:hover {
background: rgba(var(--rgb-bw), 0.6);
}
a {
opacity: 0.6;
}
#main_page {
-ms-grid-columns: 2fr 1fr;
grid-template-columns: 2fr 1fr;
gap: 1rem;
}
#show_message {
-webkit-transform: translate(0.4rem, 0);
transform: translate(0.4rem, 0);
margin: 1rem;
width: -webkit-max-content;
width: -moz-max-content;
width: max-content;
border-radius: 0.2rem;
}
}
@media only screen and (min-width: 1280px) {
.page, #top_nav {
margin: 1rem 4vw;
}
}
/*# sourceMappingURL=main.css.map */</style>
<link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700&display=swap" rel="stylesheet">
<script id="floGlobals">
/* Constants for FLO blockchain operations !!Make sure to add this at begining!! */
const floGlobals = {
blockchain: "FLO",
adminID: "FTMnSh1m99GSDAuxGyevs375BLudffso9F",
subAdmins: [],
application: "TEDxKanke",
webAppURL: "tedxkanke.duckdns.org"
}
</script>
<script id="onLoadStartUp">
function onLoadStartUp() {
console.log('onLoadStartUp')
loader('hide', 'main_loader')
showPage('main_page')
TEDxKanke_monitor.getTaskList().then(result => {
console.log('Received TaskList')
tasks = TEDxKanke_monitor.taskTitles(result);
renderGroupElements()
}).catch(error => console.error(error))
webAppClient.requestSubAdminList().then(result => {
floGlobals.subAdmins = result
console.log('Received subAdminList', floGlobals.subAdmins)
renderActivityUpdates()
}).catch(error => console.error(error))
}
</script>
</head>
<body onload="onLoadStartUp()">
<div id="main_loader" class="popup-container solid-background">
<div>
<svg viewBox="0 0 64 64" class="loader loading-animation">
<circle cx="32" cy="32" r="32"/>
</svg>
<div class="logo">
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 794.1 193.19">
<defs>
<style>.cls-1{fill:#ff2b06;}
</style>
</defs>
<title>TEDx_logo_place_k_RGB_CS2</title>
<path class="cls-1" d="M89.93,380.9,82.36,370h7.22l4,6,4-6h7l-7.57,10.77,8.5,12.24H98.34l-4.8-7.25L88.73,393H81.65Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M135.51,379.38H113v-4.76h22.48Zm0,9.53H113v-4.77h22.48Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M152.73,366.43h-6.32v-5.21h6.32ZM146.41,370h6.32v23h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M156.82,370h6v3.2H163a8.2,8.2,0,0,1,7-3.82c6.72,0,8.41,3.78,8.41,9.48V393h-6.32V380c0-3.78-1.11-5.65-4.05-5.65-3.43,0-4.89,1.92-4.89,6.59V393h-6.33Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M198.75,390.06h-.09c-1.47,2.5-4,3.57-7,3.57-6.94,0-10.32-6-10.32-12.33,0-6.19,3.42-11.93,10.19-11.93a8,8,0,0,1,6.85,3.42h.05V361.22h6.32V393h-6Zm-5.52-15.93c-4.14,0-5.56,3.56-5.56,7.34,0,3.61,1.64,7.39,5.56,7.39,4.18,0,5.43-3.65,5.43-7.43S197.33,374.13,193.23,374.13Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M213.84,383c.18,4,2.13,5.83,5.65,5.83,2.54,0,4.58-1.56,5-3H230c-1.78,5.43-5.56,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M233.29,370h6v2.94h.08a7.67,7.67,0,0,1,6.86-3.56c7.21,0,10.46,5.83,10.46,12.37,0,6.14-3.38,11.89-10.11,11.89a8.17,8.17,0,0,1-6.89-3.48h-.09v11h-6.32Zm17.09,11.57c0-3.65-1.47-7.43-5.52-7.43s-5.48,3.69-5.48,7.43,1.43,7.3,5.52,7.3S250.38,385.3,250.38,381.56Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M264.8,383c.18,4,2.13,5.83,5.65,5.83,2.54,0,4.58-1.56,5-3H281c-1.78,5.43-5.56,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M284.25,370h6v3.2h.13a8.2,8.2,0,0,1,7-3.82c6.72,0,8.41,3.78,8.41,9.48V393h-6.32V380c0-3.78-1.11-5.65-4.05-5.65-3.42,0-4.89,1.92-4.89,6.59V393h-6.32Z" transform="translate(-79.33 -208.54)"/><path class="cls-2" d="M326.17,390.06h-.09c-1.47,2.5-4.05,3.57-7,3.57-7,0-10.33-6-10.33-12.33,0-6.19,3.43-11.93,10.19-11.93a8,8,0,0,1,6.86,3.42h0V361.22h6.32V393h-6Zm-5.52-15.93c-4.14,0-5.56,3.56-5.56,7.34,0,3.61,1.65,7.39,5.56,7.39,4.19,0,5.43-3.65,5.43-7.43S324.75,374.13,320.65,374.13Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M341.26,383c.18,4,2.14,5.83,5.65,5.83,2.54,0,4.59-1.56,5-3h5.56c-1.78,5.43-5.56,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.62,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M360.71,370h6v3.2h.13a8.2,8.2,0,0,1,7-3.82c6.72,0,8.42,3.78,8.42,9.48V393H376V380c0-3.78-1.12-5.65-4.06-5.65-3.42,0-4.89,1.92-4.89,6.59V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M394.22,370h4.63v4.23h-4.63v11.39c0,2.14.54,2.67,2.67,2.67a10,10,0,0,0,2-.17v4.94a25.34,25.34,0,0,1-3.69.22c-3.88,0-7.26-.89-7.26-5.48V374.22h-3.83V370h3.83v-6.9h6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M401.16,361.22h6.32V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M422.93,395.9c-1.38,3.69-3.56,5.2-7.92,5.2a38.81,38.81,0,0,1-3.88-.22v-5.21a34.67,34.67,0,0,0,3.7.23c2.18-.23,2.89-2.5,2.18-4.32L408.91,370h6.76l5.21,15.76H421L426,370h6.54Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M456.44,369.37c7.26,0,11.93,4.8,11.93,12.15s-4.67,12.11-11.93,12.11-11.88-4.81-11.88-12.11S449.23,369.37,456.44,369.37Zm0,19.49c4.32,0,5.61-3.69,5.61-7.34s-1.29-7.39-5.61-7.39-5.56,3.69-5.56,7.39S452.17,388.86,456.44,388.86Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M470.68,370h6v4.27h.09a8.14,8.14,0,0,1,7.35-4.89,4.92,4.92,0,0,1,1.38.22v5.87a11.89,11.89,0,0,0-2.27-.22c-4.63,0-6.24,3.34-6.24,7.39V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M509.23,391.53c0,3.79-1.34,10.2-11.93,10.2-4.54,0-9.84-2.14-10.15-7.39h6.28c.58,2.36,2.49,3.16,4.72,3.16,3.51,0,5.11-2.41,5.07-5.7v-3h-.09a7.76,7.76,0,0,1-6.9,3.56c-6.9,0-9.84-5.25-9.84-11.57,0-6,3.43-11.39,9.89-11.39,3,0,5.34,1,6.85,3.69h.09V370h6Zm-6-10.32c0-3.74-1.29-7.08-5.39-7.08-3.56,0-5.12,3.12-5.12,6.54s1.25,6.9,5.12,6.9C501.44,387.57,503.22,384.5,503.22,381.21Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M512.25,377.07c.36-5.92,5.66-7.7,10.82-7.7,4.58,0,10.1,1,10.1,6.54v12c0,2.1.23,4.19.8,5.12h-6.41a9.3,9.3,0,0,1-.44-2.22,10.56,10.56,0,0,1-7.75,2.85c-4.36,0-7.83-2.19-7.83-6.9,0-5.21,3.92-6.46,7.83-7s7.48-.45,7.48-3-1.87-3.11-4.09-3.11c-2.41,0-4,1-4.19,3.47Zm14.6,4.67c-1.07.94-3.29,1-5.25,1.34s-3.74,1.06-3.74,3.38,1.83,2.94,3.87,2.94c4.94,0,5.12-3.92,5.12-5.3Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M537.18,370h6v3.2h.13a8.2,8.2,0,0,1,7-3.82c6.72,0,8.41,3.78,8.41,9.48V393h-6.32V380c0-3.78-1.11-5.65-4.05-5.65-3.42,0-4.89,1.92-4.89,6.59V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M568.29,366.43H562v-5.21h6.32ZM562,370h6.32v23H562Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M571,388.24l12-13.49H571.85V370h19.4v4.76l-12,13.49H592.1V393H571Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M599.8,383c.18,4,2.13,5.83,5.65,5.83,2.54,0,4.59-1.56,5-3H616c-1.78,5.43-5.56,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M635.67,390.06h-.09c-1.47,2.5-4.05,3.57-7,3.57-6.94,0-10.32-6-10.32-12.33,0-6.19,3.43-11.93,10.19-11.93a8,8,0,0,1,6.86,3.42h0V361.22h6.32V393h-6Zm-5.52-15.93c-4.14,0-5.56,3.56-5.56,7.34,0,3.61,1.65,7.39,5.56,7.39,4.19,0,5.43-3.65,5.43-7.43S634.25,374.13,630.15,374.13Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M664.73,367.1h-9.52v-5.88h26v5.88h-9.53V393h-7Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M684,361.22h23.77v5.88H691v6.81h15.4v5.43H691v7.79h17.14V393H684Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M711.06,361.22h13.71c8.24,0,14.42,5.17,14.42,15.71,0,9.22-4.71,16.07-14.42,16.07H711.06Zm7,25.91h6.23c4.05,0,7.93-2.5,7.93-9.53,0-6.41-2.23-10.5-9.17-10.5h-5Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M759.18,383c.17,4,2.13,5.83,5.65,5.83,2.54,0,4.58-1.56,5-3h5.57c-1.78,5.43-5.57,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M790.47,393h-7l-7.88-23h6.64L787,385.7h.09L792,370h6.27Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M804.31,383c.17,4,2.13,5.83,5.65,5.83,2.54,0,4.58-1.56,5-3h5.57c-1.78,5.43-5.57,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M823.76,370h6v3.2h.14a8.2,8.2,0,0,1,7-3.82c6.72,0,8.41,3.78,8.41,9.48V393H839V380c0-3.78-1.11-5.65-4-5.65-3.43,0-4.89,1.92-4.89,6.59V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M857.27,370h4.63v4.23h-4.63v11.39c0,2.14.53,2.67,2.67,2.67a10,10,0,0,0,2-.17v4.94a25.39,25.39,0,0,1-3.7.22c-3.87,0-7.25-.89-7.25-5.48V374.22h-3.83V370H851v-6.9h6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-1" d="M109,256.08H79.33V229h91.88v27.12H141.56v78.7H109Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-1" d="M176.27,229h89.19v27.12H208.87v13.19h56.59v25.2H208.87v13.19h56.61v27.12H176.27Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-1" d="M271,229h53.5c35.27,0,47.73,26.08,47.73,52.75,0,32.47-17.19,53.07-54.1,53.07H271Zm32.6,78.7H316.3c20.31,0,23.28-16.46,23.28-26.4,0-6.66-2.09-25.18-25.66-25.18H303.55Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-1" d="M419,294l-9.94-16.49L399.38,294H375.49l22.68-33.35-21.83-31.89h23.89l8.85,15.76,9.1-15.76h23.89l-21.83,31.89L442.92,294Z" transform="translate(-79.33 -208.54)"/>
<text class="cls-3" transform="translate(377.56 126.07)">Kanke</text>
</svg>
</div>
A FLO Blockchain App by RanchiMall
</div>
</div>
<div id="show_message" class="hide">
<span>Message</span>
<button id="hide_banner_btn">
<svg class="close-svg" viewBox="0 0 50.71 50.71">
<title>Close this notification</title>
<line x1="50.35" y1="0.35" x2="0.36" y2="50.35"/>
<line x1="0.35" y1="0.35" x2="50.35" y2="50.35"/>
</svg>
</button>
</div>
<nav id="top_nav" class="padding">
<div class="logo">
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 794.1 193.19">
<defs>
<style>.cls-1{fill:#ff2b06;}
</style>
</defs>
<title>TEDx_logo_place_k_RGB_CS2</title>
<path class="cls-1" d="M89.93,380.9,82.36,370h7.22l4,6,4-6h7l-7.57,10.77,8.5,12.24H98.34l-4.8-7.25L88.73,393H81.65Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M135.51,379.38H113v-4.76h22.48Zm0,9.53H113v-4.77h22.48Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M152.73,366.43h-6.32v-5.21h6.32ZM146.41,370h6.32v23h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M156.82,370h6v3.2H163a8.2,8.2,0,0,1,7-3.82c6.72,0,8.41,3.78,8.41,9.48V393h-6.32V380c0-3.78-1.11-5.65-4.05-5.65-3.43,0-4.89,1.92-4.89,6.59V393h-6.33Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M198.75,390.06h-.09c-1.47,2.5-4,3.57-7,3.57-6.94,0-10.32-6-10.32-12.33,0-6.19,3.42-11.93,10.19-11.93a8,8,0,0,1,6.85,3.42h.05V361.22h6.32V393h-6Zm-5.52-15.93c-4.14,0-5.56,3.56-5.56,7.34,0,3.61,1.64,7.39,5.56,7.39,4.18,0,5.43-3.65,5.43-7.43S197.33,374.13,193.23,374.13Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M213.84,383c.18,4,2.13,5.83,5.65,5.83,2.54,0,4.58-1.56,5-3H230c-1.78,5.43-5.56,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M233.29,370h6v2.94h.08a7.67,7.67,0,0,1,6.86-3.56c7.21,0,10.46,5.83,10.46,12.37,0,6.14-3.38,11.89-10.11,11.89a8.17,8.17,0,0,1-6.89-3.48h-.09v11h-6.32Zm17.09,11.57c0-3.65-1.47-7.43-5.52-7.43s-5.48,3.69-5.48,7.43,1.43,7.3,5.52,7.3S250.38,385.3,250.38,381.56Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M264.8,383c.18,4,2.13,5.83,5.65,5.83,2.54,0,4.58-1.56,5-3H281c-1.78,5.43-5.56,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M284.25,370h6v3.2h.13a8.2,8.2,0,0,1,7-3.82c6.72,0,8.41,3.78,8.41,9.48V393h-6.32V380c0-3.78-1.11-5.65-4.05-5.65-3.42,0-4.89,1.92-4.89,6.59V393h-6.32Z" transform="translate(-79.33 -208.54)"/><path class="cls-2" d="M326.17,390.06h-.09c-1.47,2.5-4.05,3.57-7,3.57-7,0-10.33-6-10.33-12.33,0-6.19,3.43-11.93,10.19-11.93a8,8,0,0,1,6.86,3.42h0V361.22h6.32V393h-6Zm-5.52-15.93c-4.14,0-5.56,3.56-5.56,7.34,0,3.61,1.65,7.39,5.56,7.39,4.19,0,5.43-3.65,5.43-7.43S324.75,374.13,320.65,374.13Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M341.26,383c.18,4,2.14,5.83,5.65,5.83,2.54,0,4.59-1.56,5-3h5.56c-1.78,5.43-5.56,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.62,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M360.71,370h6v3.2h.13a8.2,8.2,0,0,1,7-3.82c6.72,0,8.42,3.78,8.42,9.48V393H376V380c0-3.78-1.12-5.65-4.06-5.65-3.42,0-4.89,1.92-4.89,6.59V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M394.22,370h4.63v4.23h-4.63v11.39c0,2.14.54,2.67,2.67,2.67a10,10,0,0,0,2-.17v4.94a25.34,25.34,0,0,1-3.69.22c-3.88,0-7.26-.89-7.26-5.48V374.22h-3.83V370h3.83v-6.9h6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M401.16,361.22h6.32V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M422.93,395.9c-1.38,3.69-3.56,5.2-7.92,5.2a38.81,38.81,0,0,1-3.88-.22v-5.21a34.67,34.67,0,0,0,3.7.23c2.18-.23,2.89-2.5,2.18-4.32L408.91,370h6.76l5.21,15.76H421L426,370h6.54Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M456.44,369.37c7.26,0,11.93,4.8,11.93,12.15s-4.67,12.11-11.93,12.11-11.88-4.81-11.88-12.11S449.23,369.37,456.44,369.37Zm0,19.49c4.32,0,5.61-3.69,5.61-7.34s-1.29-7.39-5.61-7.39-5.56,3.69-5.56,7.39S452.17,388.86,456.44,388.86Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M470.68,370h6v4.27h.09a8.14,8.14,0,0,1,7.35-4.89,4.92,4.92,0,0,1,1.38.22v5.87a11.89,11.89,0,0,0-2.27-.22c-4.63,0-6.24,3.34-6.24,7.39V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M509.23,391.53c0,3.79-1.34,10.2-11.93,10.2-4.54,0-9.84-2.14-10.15-7.39h6.28c.58,2.36,2.49,3.16,4.72,3.16,3.51,0,5.11-2.41,5.07-5.7v-3h-.09a7.76,7.76,0,0,1-6.9,3.56c-6.9,0-9.84-5.25-9.84-11.57,0-6,3.43-11.39,9.89-11.39,3,0,5.34,1,6.85,3.69h.09V370h6Zm-6-10.32c0-3.74-1.29-7.08-5.39-7.08-3.56,0-5.12,3.12-5.12,6.54s1.25,6.9,5.12,6.9C501.44,387.57,503.22,384.5,503.22,381.21Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M512.25,377.07c.36-5.92,5.66-7.7,10.82-7.7,4.58,0,10.1,1,10.1,6.54v12c0,2.1.23,4.19.8,5.12h-6.41a9.3,9.3,0,0,1-.44-2.22,10.56,10.56,0,0,1-7.75,2.85c-4.36,0-7.83-2.19-7.83-6.9,0-5.21,3.92-6.46,7.83-7s7.48-.45,7.48-3-1.87-3.11-4.09-3.11c-2.41,0-4,1-4.19,3.47Zm14.6,4.67c-1.07.94-3.29,1-5.25,1.34s-3.74,1.06-3.74,3.38,1.83,2.94,3.87,2.94c4.94,0,5.12-3.92,5.12-5.3Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M537.18,370h6v3.2h.13a8.2,8.2,0,0,1,7-3.82c6.72,0,8.41,3.78,8.41,9.48V393h-6.32V380c0-3.78-1.11-5.65-4.05-5.65-3.42,0-4.89,1.92-4.89,6.59V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M568.29,366.43H562v-5.21h6.32ZM562,370h6.32v23H562Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M571,388.24l12-13.49H571.85V370h19.4v4.76l-12,13.49H592.1V393H571Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M599.8,383c.18,4,2.13,5.83,5.65,5.83,2.54,0,4.59-1.56,5-3H616c-1.78,5.43-5.56,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M635.67,390.06h-.09c-1.47,2.5-4.05,3.57-7,3.57-6.94,0-10.32-6-10.32-12.33,0-6.19,3.43-11.93,10.19-11.93a8,8,0,0,1,6.86,3.42h0V361.22h6.32V393h-6Zm-5.52-15.93c-4.14,0-5.56,3.56-5.56,7.34,0,3.61,1.65,7.39,5.56,7.39,4.19,0,5.43-3.65,5.43-7.43S634.25,374.13,630.15,374.13Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M664.73,367.1h-9.52v-5.88h26v5.88h-9.53V393h-7Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M684,361.22h23.77v5.88H691v6.81h15.4v5.43H691v7.79h17.14V393H684Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M711.06,361.22h13.71c8.24,0,14.42,5.17,14.42,15.71,0,9.22-4.71,16.07-14.42,16.07H711.06Zm7,25.91h6.23c4.05,0,7.93-2.5,7.93-9.53,0-6.41-2.23-10.5-9.17-10.5h-5Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M759.18,383c.17,4,2.13,5.83,5.65,5.83,2.54,0,4.58-1.56,5-3h5.57c-1.78,5.43-5.57,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M790.47,393h-7l-7.88-23h6.64L787,385.7h.09L792,370h6.27Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M804.31,383c.17,4,2.13,5.83,5.65,5.83,2.54,0,4.58-1.56,5-3h5.57c-1.78,5.43-5.57,7.75-10.77,7.75-7.26,0-11.75-5-11.75-12.11,0-6.9,4.76-12.15,11.75-12.15,7.83,0,11.61,6.58,11.17,13.66Zm10.28-4c-.58-3.21-2-4.9-5-4.9a5,5,0,0,0-5.25,4.9Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M823.76,370h6v3.2h.14a8.2,8.2,0,0,1,7-3.82c6.72,0,8.41,3.78,8.41,9.48V393H839V380c0-3.78-1.11-5.65-4-5.65-3.43,0-4.89,1.92-4.89,6.59V393h-6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-2" d="M857.27,370h4.63v4.23h-4.63v11.39c0,2.14.53,2.67,2.67,2.67a10,10,0,0,0,2-.17v4.94a25.39,25.39,0,0,1-3.7.22c-3.87,0-7.25-.89-7.25-5.48V374.22h-3.83V370H851v-6.9h6.32Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-1" d="M109,256.08H79.33V229h91.88v27.12H141.56v78.7H109Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-1" d="M176.27,229h89.19v27.12H208.87v13.19h56.59v25.2H208.87v13.19h56.61v27.12H176.27Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-1" d="M271,229h53.5c35.27,0,47.73,26.08,47.73,52.75,0,32.47-17.19,53.07-54.1,53.07H271Zm32.6,78.7H316.3c20.31,0,23.28-16.46,23.28-26.4,0-6.66-2.09-25.18-25.66-25.18H303.55Z" transform="translate(-79.33 -208.54)"/>
<path class="cls-1" d="M419,294l-9.94-16.49L399.38,294H375.49l22.68-33.35-21.83-31.89h23.89l8.85,15.76,9.1-15.76h23.89l-21.83,31.89L442.92,294Z" transform="translate(-79.33 -208.54)"/>
<text class="cls-3" transform="translate(377.56 126.07)">Kanke</text>
</svg>
</div>
</nav>
<main>
<div id="main_page" class="page hide-completely fade-in">
<div id="recent_activity" class="container padding">
<header class="padding">
<h3>Activities</h3>
</header>
<ul id="activity_container">
</ul>
</div>
<div id="tasks" class="container padding">
<header class="padding">
<h3>Groups</h3>
</header>
<ul id="tasks_container">
</ul>
</div>
</div>
<div id="show_all" class="page hide-completely fade-in">
<header class="container-header padding">
<svg class="back-arrow" onclick="goBack()" viewBox="0 0 31.24 56.83">
<title>Go back</title>
<polyline points="29.83,1.41 2.83,28.41 29.83,55.41 " />
</svg>
<h3 id="task_title">Category</h3>
</header>
<ul id="assigned" class="padding">
</ul>
<div id="intern_loader" class="popup-container">
<div>
<svg viewBox="0 0 64 64" class="loader">
<circle cx="32" cy="32" r="32"/>
</svg>
</div>
</div>
</div>
</main>
<script id="TEDxKanke_monitor">
const TEDxKanke_monitor = {
taskCodes: function(taskList, taskTitle){
var result = []
for(taskCode in taskList)
if(taskList[taskCode].taskTitle === taskTitle)
result.push(taskCode)
return result
},
taskTitles: function(taskList) {
var result = {}
for(taskCode in taskList){
var taskTitle = taskList[taskCode].taskTitle
if(taskTitle in result)
result[taskTitle].push(taskCode)
else
result[taskTitle] = [taskCode]
}
return result
},
getGeneralUpdate: function(type, vectorClock = '0'){
return new Promise((resolve, reject) => {
webAppClient.requestGeneralData(type, vectorClock)
.then(results => resolve(results))
.catch(error => reject(error))
})
},
getProjectList: function(){
return new Promise((resolve, reject) => {
webAppClient.requestObjectData(["TEDxKanke", "projectDetails"])
.then(results => resolve(results))
.catch(error => reject(error))
})
},
getTaskList: function(){
return new Promise((resolve, reject) => {
webAppClient.requestObjectData(["TEDxKanke", "projectTaskDetails"])
.then(results => resolve(results))
.catch(error => reject(error))
})
},
getInternList: function(){
return new Promise((resolve, reject) => {
webAppClient.requestObjectData(["TEDxKanke", "internList"])
.then(results => resolve(results))
.catch(error => reject(error))
})
},
getAssignedInterns(taskCode){
return new Promise((resolve, reject) => {
webAppClient.requestObjectData(["TEDxKanke", "internsAssigned", taskCode])
.then(results => resolve(results))
.catch(error => reject(error))
})
},
getInternDetails(floID){
return new Promise((resolve, reject) => {
webAppClient.requestObjectData(["TEDxKanke", "internList", floID])
.then(results => resolve(results))
.catch(error => reject(error))
})
},
}
</script>
<script id="webAppClient">
//Add this to the client script to request data from floWebappServer
const webAppClient = {
util: {
sendData(data) {
return new Promise((resolve, reject) => {
var websocket = new WebSocket("wss://" + floGlobals.webAppURL + "/ws");
websocket.onmessage = (evt => {
if (evt.data == '$+') {
websocket.send(data);
resolve(`Data sent to webApp`);
} else if (evt.data == '$-')
reject(`webApp not available`)
else
reject(evt.data)
websocket.close();
})
websocket.onerror = (evt) => {
reject(`webApp server not found`)
};
})
},
requestData(request = []) {
return new Promise((resolve, reject) => {
var websocket = new WebSocket("wss://" + floGlobals.webAppURL + "/ws");
websocket.onmessage = (evt => {
if (evt.data == '$+') {
websocket.send(`?${JSON.stringify(request)}`);
} else if (evt.data == '$-') {
reject(`webApp not available`)
websocket.close()
} else {
resolve(JSON.parse(evt.data));
websocket.close();
}
})
websocket.onerror = (evt) => {
reject(`webApp server not found`)
};
})
}
},
sendGeneralData: function (message, type, options = {}) {
return new Promise((resolve, reject) => {
var data = {
senderID: myFloID,
receiverID: options.receiverID || floGlobals.adminID,
pubKey: myPubKey,
message: message,
sign: floCrypto.signData(JSON.stringify(message), myPrivKey),
application: options.application || floGlobals.application,
type: type,
comment: options.comment || ""
}
this.util.sendData(JSON.stringify(data), data.receiverID)
.then(result => resolve(result))
.catch(error => reject(error))
})
},
requestGeneralData: function (type, vectorClock = '0') {
if (typeof vectorClock !== 'string')
vectorClock.toString()
return new Promise((resolve, reject) => {
this.util.requestData([floGlobals.application, 'generalData', type, vectorClock])
.then(
result => {
if (result[0])
resolve(result[1])
else
reject(result[1])
}).catch(error => reject(error))
})
},
requestObjectData: function (keyPath) {
return new Promise((resolve, reject) => {
this.util.requestData([floGlobals.application, 'appObjects'].concat(keyPath)).then(
result => {
if (result[0])
resolve(result[1])
else
reject(result[1])
}).catch(error => reject(error))
})
},
requestSubAdminList: function(){
return new Promise((resolve, reject) => {
this.util.requestData([floGlobals.application, 'subAdmins']).then(
result => {
if (result[0])
resolve(result[1])
else
reject(result[1])
}).catch(error => reject(error))
})
}
}
</script>
<script id="UI_functions">
let frag = document.createDocumentFragment();
if(!navigator.onLine)
showMessage('error', 'There seems to be a problem connecting to the internet.', 'fixed')
window.addEventListener('offline', () =>{
showMessage('error', 'There seems to be a problem connecting to the internet.', 'fixed')
})
window.addEventListener('online', () =>{
showMessage('', 'We are back online.')
})
let currentTimeout;
function showMessage(mode, message, behavior){
let banner = document.getElementById('show_message')
if(mode === 'error')
banner.style.background = '#D32F2F';
else
banner.style.background = '#00C853';
banner.classList.add('no-transformations')
banner.classList.remove('hide')
banner.children[0].textContent = message.charAt(0).toUpperCase() + message.slice(1);
banner.children[1].onclick = function() {
banner.classList.add('hide')
banner.classList.remove('no-transformations')
}
clearTimeout(currentTimeout)
if(behavior === 'fixed') return;
currentTimeout = setTimeout(()=>{
banner.classList.add('hide')
banner.classList.remove('no-transformations')
}, 4000)
}
let render = {
taskCard: function(task, taskCode){
let card = document.createElement('li'),
inital = task.charAt(0);
card.classList.add('task-card', 'padding', 'hover')
card.setAttribute('data-task-code', taskCode)
card.innerHTML = `<span>${inital}</span>
<h4>${task}</h4>`;
return card;
},
personCard: function(floID){
let card = document.createElement('li'),
inital = floID.charAt(1);
card.classList.add('person-card', 'padding')
card.innerHTML = `<span>${inital}</span>
<h4>${floID}</h4>
`;
return card;
},
updateCard: function(message, timestamp){
let card = document.createElement('div'),
time = new Date(parseInt(timestamp)),
floId = message.split(' ')[0],
rest = message.slice(message.indexOf(' '))
function addZero(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
let hours = time.getHours(),
minutes = addZero(time.getMinutes()),
postfix = hours < 12 ? 'AM': 'PM';
hours = addZero(hours > 12 ? (hours - 12) : hours);
card.classList.add('update-card', 'padding')
card.innerHTML = ` <p><span class="break-all">${floId}</span> ${rest}</p>
<span class="time">${hours}:${minutes} ${postfix}</span>
`;
return card;
}
}
let appState = {
page: 'main_page',
type: ''
}
history.pushState(appState, null, null)
window.onpopstate = (event) => showPage(event.state.page)
let lastTask;
function showPage(page, type, card){
if(page === 'main_page'){
appState.page = 'main_page';
appState.type = ''
history.pushState(appState, null, null)
}
if(type === 'interns' && lastTask !== card.dataset.taskCode){
loader('show', 'intern_loader')
showAssignedInterns(card)
lastTask = card.dataset.taskCode;
}
let thisPage = document.getElementById(page),
allPages = document.querySelectorAll('.page')
allPages.forEach((pages) =>{
pages.classList.add('hide-completely');
});
thisPage.classList.remove('hide-completely');
}
let lastState = '';
document.getElementById('tasks_container').addEventListener('click', (e) => {
if(e.target.closest('.task-card')){
showPage('show_all', 'interns', e.target.closest('.task-card'))
appState.page = 'show_all';
appState.type = 'interns'
}
if(lastState !== appState.page)
history.pushState(appState, null, null)
lastState = appState.page;
})
function showAssignedInterns(card){
let task = card.dataset.taskCode,
container = document.getElementById('assigned');
container.innerHTML = ``;
TEDxKanke_monitor.getAssignedInterns(task).then((assignedInterns) => {
if(assignedInterns)
assignedInterns.forEach((intern) => {
frag.appendChild(render.personCard(intern))
})
container.append(frag)
loader('hide', 'intern_loader')
})
document.getElementById('task_title').textContent = card.children[1].textContent;
}
function goBack(){
history.back()
loader('hide', 'intern_loader')
}
function loader(mode, loader){
loader = document.getElementById(loader);
if(mode === 'show'){
loader.classList.remove('hide')
loader.firstElementChild.children[0].classList.add('loading-animation')
}
else{
loader.classList.add('hide')
loader.firstElementChild.children[0].classList.remove('loading-animation')
}
}
function renderGroupElements(){
let taskContainer = document.getElementById('tasks_container')
for(task in tasks){
frag.appendChild(render.taskCard(task, tasks[task][0]))
}
taskContainer.append(frag)
}
function renderActivityUpdates(){
let updateContainer = document.getElementById('activity_container')
TEDxKanke_monitor.getGeneralUpdate('InternUpdates').then((updates) => {
updates.reverse().forEach((update) => {
if(floGlobals.subAdmins.includes(update.sender))
frag.appendChild(render.updateCard(update.message, update.vectorClock.split('_')[0]))
})
updateContainer.append(frag)
var autoRefresh = setInterval(liveUpdates, 60000)
})
}
function liveUpdates(){
let updateContainer = document.getElementById('activity_container');
var intervalTime = Date.now() - 60000
console.log(`Fetching Live Updates from ${intervalTime}`)
TEDxKanke_monitor.getGeneralUpdate('InternUpdates', intervalTime).then((updates) => {
updates.reverse().forEach((update) => {
if(floGlobals.subAdmins.includes(update.sender))
frag.appendChild(render.updateCard(update.message, update.vectorClock.split('_')[0]))
})
updateContainer.insertBefore(frag, updateContainer.firstChild)
})
}
</script>
</body>
</html>