<div class="header navbar">
<div class="header-container">
<ul class="nav-left">
<li>
<a id='sidebar-toggle' class="sidebar-toggle" href="javascript:void(0);">
<i class="fa-solid fa-bars"></i>
<i class="fa-solid fa-xmark"></i>
</a>
<a class="sidebar-link mobile-logo" href="{{ path('dashboard') }}">
<img src="{{ asset('assets/images/core-logo-full.png') }}" alt="logo"/>
</a>
</li>
</ul>
<ul class="nav-mid p-0">
<div class="header-lesson-list">
{% set lessonExtension = getNewestLessons() %}
{% for lesson in lessonExtension.lessons %}
{% set wasOnline = (lesson.attendedAtTeacher and lesson.attendedAtChild) ? true : false %}
<div class="card has-timer active h-100p ">
<div class="card-body">
<div class="card-item h-100p"
data-start="{{ lesson.startTime ? lesson.startTime|date('Y-m-d H:i') : '' }}"
data-end="{{ lesson.endTime ? lesson.endTime|date('Y-m-d H:i') : '' }}"
data-lesson-id="{{ lesson.id }}">
<div class="discipline">
<div class="name">{{ lesson.discipline.displayName }}</div>
</div>
<div class="users {{ wasOnline ? "was-joined" : "" }}">
<div class="teacher">
<div class="status">
<div class="box {{ lesson.statusTeacher ? "joined" : "not-joined" }}"></div>
</div>
<div class="label-wrap">
<div class="text">{% trans %}Korepetitorius:{% endtrans %}</div>
<div class="name">{% set name = lesson.teacher|split(' ') %}{{ name[0] }}</div>
</div>
</div>
<div class="student">
<div class="status">
<div class="box {{ lesson.statusChild ? "joined" : "not-joined" }}"></div>
</div>
<div class="label-wrap">
<div class="text">{% trans %}Mokinys:{% endtrans %}</div>
<div class="name">{{ lesson.child.fullname }}</div>
</div>
</div>
</div>
{# <div class="timer"> #}
{# Pradžia: {{ lesson.startTime ? lesson.startTime|date('Y-m-d H:i') : '' }} #}
{# </div> #}
{# <div style="display: none" class="img"><img #}
{# src="{{ lesson.teacher.profileImagePath ? lesson.teacher.profileImagePath : asset('assets/images/default.png') }}"> #}
{# </div> #}
<div class="actions">
<div class="notice"></div>
<button class='btn btn-success join-lesson'
{{ lesson.getLessonJoin() ? "" : "disabled" }}
data-href="{{ path('unicko_router', {'id':lesson.id}) }}">
Jungtis
</button>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</ul>
<ul class="nav-right">
{% if is_granted('ROLE_ADMIN') %}
{% macro counter_badge(href, icon, count, title) %}
<li class="admin-counter-item">
<a href="{{ href }}" title="{{ title }}">
<span class="counter-icon-wrap">
<i class="fa-solid {{ icon }}"></i>
<span class="badge badge-pill {{ count > 0 ? 'badge-danger' : 'badge-secondary' }}">{{ count }}</span>
</span>
</a>
</li>
{% endmacro %}
{{ _self.counter_badge('/guardian_register/registrations', 'fa-user-plus', getNewRegistrationsCount(), 'Naujos registracijos') }}
{{ _self.counter_badge('/child_preference_assigment/', 'fa-list-check', getPendingAssignmentsCount(), 'Priskyrimo laukia') }}
<li class="admin-counter-item dropdown bug-report">
<a href="javascript:void(0);" title="Klaidos">
<span class="counter-icon-wrap">
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="currentColor" class="bi bi-bug" viewBox="0 0 16 16">
<path d="M4.355.522a.5.5 0 0 1 .623.333l.291.956A5 5 0 0 1 8 1c1.007 0 1.946.298 2.731.811l.29-.956a.5.5 0 1 1 .957.29l-.41 1.352A5 5 0 0 1 13 6h.5a.5.5 0 0 0 .5-.5V5a.5.5 0 0 1 1 0v.5A1.5 1.5 0 0 1 13.5 7H13v1h1.5a.5.5 0 0 1 0 1H13v1h.5a1.5 1.5 0 0 1 1.5 1.5v.5a.5.5 0 1 1-1 0v-.5a.5.5 0 0 0-.5-.5H13a5 5 0 0 1-10 0h-.5a.5.5 0 0 0-.5.5v.5a.5.5 0 1 1-1 0v-.5A1.5 1.5 0 0 1 2.5 10H3V9H1.5a.5.5 0 0 1 0-1H3V7h-.5A1.5 1.5 0 0 1 1 5.5V5a.5.5 0 0 1 1 0v.5a.5.5 0 0 0 .5.5H3c0-1.364.547-2.601 1.432-3.503l-.41-1.352a.5.5 0 0 1 .333-.623M4 7v4a4 4 0 0 0 3.5 3.97V7zm4.5 0v7.97A4 4 0 0 0 12 11V7zM12 6a4 4 0 0 0-1.334-2.982A3.98 3.98 0 0 0 8 2a3.98 3.98 0 0 0-2.667 1.018A4 4 0 0 0 4 6z"/>
</svg>
</span>
</a>
</li>
{% endif %}
{# <a href="{{ path('app_sync_google_lessons') }}">SYNC</a> #}
{% if is_granted('ROLE_GUARDIAN') or is_granted('ROLE_CHILD') %}
<li class="dropdown">
<a href="https://pagalba.corepetitus.lt/hc/lt/sections/22038273075346-Klientams"
class="peers fxw-nw ai-c lh-1">
<div class="peer">
<i class="fa-solid fa-circle-question"></i>
</div>
</a>
</li>
{% endif %}
{% if is_granted('ROLE_TEACHER') %}
<li class="dropdown">
<a href="https://pagalba.corepetitus.lt/hc/lt/sections/22038256444690-Korepetitoriams"
class="peers fxw-nw ai-c lh-1">
<div class="peer">
<i class="fa-solid fa-circle-question"></i>
</div>
</a>
{# <ul class="dropdown-menu "> #}
{# <li> #}
{# <span class="menu-item sub-headline">{% trans %}Pasirinkite užklausos temą{% endtrans %}</span> #}
{# </li> #}
{# <li> #}
{# <a href="{{ path('me_teacher_stop_lessons_landing') }}" class="menu-item"> #}
{# <span>{% trans %}Korepetitoriaus laikinas veiklos stabdymas{% endtrans %}</span> #}
{# </a> #}
{# </li> #}
{# <li> #}
{# <a href="{{ path('me_teacher_sick_leaves_landing') }}" class="menu-item"> #}
{# <span>{% trans %}Korepetitorius susirgo{% endtrans %}</span> #}
{# </a> #}
{# </li> #}
{# <li> #}
{# <a href="{{ path('me_teacher_cancel_discipline') }}" class="menu-item"> #}
{# <span>{% trans %}Nebegaliu mokyti tam tikros disciplinos{% endtrans %}</span> #}
{# </a> #}
{# </li> #}
{# <li> #}
{# <a href="{{ path('me_teacher_cancel_class') }}" class="menu-item"> #}
{# <span>{% trans %}Nebegaliu mokyti tam tikros klasės{% endtrans %}</span> #}
{# </a> #}
{# </li> #}
{# </ul> #}
</li>
<li class="nav-badge">
<a href="{{ path('app_salary_vacation') }}" class="peers">
<div class="peer">
<img class="w-3r"
src="{{ asset("assets/images/badge_#{app.user.levelInfo.badge}.svg") }}" alt="">
</div>
</a>
</li>
{% endif %}
<li class="{{ is_granted('ROLE_ADMIN') ? 'admin-counter-item ' : '' }}notifications dropdown">
<a href="" class="dropdown-toggle user-notifications no-after {{ is_granted('ROLE_ADMIN') ? '' : 'peers fxw-nw ai-c lh-1' }}"
data-toggle="dropdown">
{% if is_granted('ROLE_ADMIN') %}
<span class="counter-icon-wrap">
<i class="fa fa-bell {% if getUserNotificationCount() %}ring{% endif %}"></i>
<span class="badge badge-pill {{ getUserNotificationCount() > 0 ? 'badge-danger' : 'badge-secondary' }}">{{ getUserNotificationCount() }}</span>
</span>
{% else %}
<div class="peer">
<i class="fa fa-bell {% if getUserNotificationCount() %}ring{% endif %}">
{% if getUserNotificationCount() %}
<span class="badge badge-danger badge-pill user-notification-badge"><span class="number">{{ getUserNotificationCount() }}</span></span>
{% endif %}
</i>
</div>
{% endif %}
</a>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1" data-bs-popper="none">
<li class="notification-title"><i class="fa fa-bell pR-10"></i> <span class="text">Pranešimai</span>
</li>
{% if getUserNotificationData().notifications | length > 0 %}
{% for notification in getUserNotificationData().notifications %}
<li class="">
<a href="{{ path('app_me_notification_index_id',{id:notification.id}) }}"
class="{{ notification.seen ? "" : "new" }} peers fxw-nw td-n bdB c-grey-800 cH-blue bgcH-grey-100">
<div class="peer mR-10">
<div class="image w-3r"
style="background-image: url({{ notification.createdBy.profileImagePath }})"></div>
</div>
<div class="peer peer-greed">
<div>
<div class="peers jc-sb fxw-nw mB-5">
<div class="peer"><p
class="fw-500 mB-0">{{ notification.topic | truncate(25, false) }}</p>
</div>
<div class="peer alt-text">
<small class="fsz-xs">prieš {{ notification.getAgo(app.user) }}</small>
</div>
</div>
<span class="sub-headline">{{ notification.message | striptags | truncate(60, true) | split('.')|first | raw }}</span>
</div>
</div>
</a>
</li>
{% endfor %}
{% else %}
<li class="c-grey-600 cH-blue td-n ta-c p-10">Pranešimų nėra</li>
{% endif %}
<li class="notification-title ta-c">
<span>
<a href="{{ path('app_me_notification_index') }}" class="td-n">Visi pranešimai
<i class="ti-angle-right fsz-xs mL-10"></i>
</a>
</span>
</li>
</ul>
</li>
{% if is_granted('ROLE_TEACHER') %}
{% set teacherPublicProfiles = app.user.teacherPublicProfiles|default([]) %}
{% set teacherEditablePublicProfiles = teacherPublicProfiles|filter(publicProfile => publicProfile.status in [constant('App\\Entity\\TeacherPublicProfile::STATUS_IN_REVIEW'), constant('App\\Entity\\TeacherPublicProfile::STATUS_REJECTED')]) %}
{% set teacherConfirmedPublicProfiles = teacherPublicProfiles|filter(publicProfile => publicProfile.status == constant('App\\Entity\\TeacherPublicProfile::STATUS_CONFIRMED')) %}
{% set teacherPublicProfile = teacherEditablePublicProfiles|length ? teacherEditablePublicProfiles|first : (teacherConfirmedPublicProfiles|length ? teacherConfirmedPublicProfiles|first : null) %}
{% set isTeacherPublicProfileCanceled = teacherPublicProfile and teacherPublicProfile.status == constant('App\\Entity\\TeacherPublicProfile::STATUS_REJECTED') %}
{% if not teacherPublicProfile or isTeacherPublicProfileCanceled %}
<li class="nav-fill-profile-item">
<span class="nav-fill-profile-btn"{% if isTeacherPublicProfileCanceled %} style="border-color:#dc3545;color:#dc3545;"{% endif %}>
<a href="{{ path('me_teacher_public_profile') }}" class="td-n"{% if isTeacherPublicProfileCanceled %} style="color:#dc3545;"{% endif %}>
<i class="fas fa-exclamation-triangle" style="margin-right:6px;"></i>{% trans %}Reikia užpildyti viešą profilį{% endtrans %}
</a>
</span>
</li>
{% endif %}
{% endif %}
<li class="dropdown">
<a href="" class="dropdown-toggle no-after peers fxw-nw ai-c lh-1" data-toggle="dropdown">
<div class="peer">
<img class="w-2r bdrs-50p"
src="{% if app.user is defined and app.user is not null and app.user.profileImagePath is not null %}{{ app.user.profileImagePath }}{% else %}{{ asset('assets/images/default.png') }}{% endif %}"
alt="">
</div>
<div class="peer pl-2">
<span class=" user-name">{% if app.user is defined and app.user is not null and app.user.fullname is not null %}{{ app.user.fullname }}{% endif %}</span>
</div>
</a>
<ul class="dropdown-menu ">
{% if is_granted('ROLE_TEACHER') %}
<li>
{% if not teacherPublicProfile %}
<a href="{{ path('me_teacher_public_profile') }}" class="menu-item fill-profile-dropdown-link" style="color:#e08c00;font-weight:600;display:flex;align-items:center;">
<i class="fas fa-exclamation-triangle" style="padding-left:25px;margin-right:4px;flex-shrink:0;"></i><span style="padding:0;margin:0;font-weight:700;">{% trans %}Užpildyk savo viešą profilį{% endtrans %}</span>
</a>
{% elseif teacherPublicProfile.status == constant('App\\Entity\\TeacherPublicProfile::STATUS_REJECTED') %}
<a href="{{ path('me_teacher_public_profile') }}" class="menu-item fill-profile-dropdown-link" style="color:#dc3545;font-weight:600;display:flex;align-items:center;">
<i class="fas fa-exclamation-triangle" style="padding-left:25px;margin-right:4px;flex-shrink:0;"></i><span style="padding:0;margin:0;font-weight:700;">{% trans %}Užpildyk savo viešą profilį{% endtrans %}</span>
</a>
{% else %}
<a href="{{ path('me_teacher_public_profile') }}" class="menu-item">
<span>{% trans %}Public Profile{% endtrans %}</span>
</a>
{% endif %}
</li>
<li class="divider"></li>
{% endif %}
<li>
<a href="{{ path('me_edit') }}" class="menu-item">
<span>{% trans %}Edit Profile{% endtrans %}</span>
</a>
</li>
<li>
<a href="/logout" class="menu-item">
<span>{% trans %}Logout{% endtrans %}</span>
</a>
</li>
</ul>
</li>
<li>
<a id="sidebar-toggle" class="sidebar-toggle" href="javascript:void(0);">
<i class="fa-solid fa-bars"></i>
<i class="fa-solid fa-xmark"></i>
</a>
</li>
</ul>
</div>
</div>
{% if not is_granted('ROLE_ADMIN') %}
{% block stylesheets %}
{% endblock %}
{% block javascripts %}
{# {{ encore_entry_script_tags('app') }}#}
<script>
document.addEventListener("DOMContentLoaded", function(event) {
$('.card.has-timer').each(function (index, item) {
CountDownTimer(item);
})
$('.move-lesson').on('click', function () {
Swal.fire({
title: "Ar tikrai?",
text: "Norint perkelti užsiėmimą į naują dieną ir laiką privaloma susitarti su mokinio ar mokinio tėvais/ globėjais. Nesusitarus, perkelti draudžiama.",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#3085d6",
cancelButtonColor: "#d33",
confirmButtonText: "Tėvai/mokinys sutiko",
cancelButtonText: "Dar nesusitariau",
customClass: {container: "version_2"},
}).then((result) => {
if (result.isConfirmed) {
initLessonMoveModal(this.getAttribute('data-lesson'))
}
})
})
$('.missed-lesson').on('click', function () {
let modal = $('#missedLessonModal');
modal.modal().show();
modal.attr('data-lesson', this.getAttribute('data-lesson'))
})
$('#modal .modal-save').on('click', function (e) {
e.stopPropagation()
if ($('.modal-body form').get(0).reportValidity()) {
if (confirm("Ar tikrai norite perkelti šią pamoką?")) {
let lessonId = this.getAttribute('lesson');
let url = `{{ path('me_teacher_lesson_move', {'id': 'id'}) }}`;
url = url.replace('id', lessonId);
$.ajax({
type: 'POST',
url: url,
data: $('.modal-body form').serialize(),
success: function (res) {
$('#modal').modal('hide')
$('#modal .modal-footer .modal-save').removeAttr('lesson')
window.location.reload()
},
error: function (error) {
toastr.error(error.responseJSON.status);
}
});
}
}
})
let searchParams = new URLSearchParams(window.location.search)
if (searchParams.has('action') && searchParams.get('action') == 'missed') {// true
initModal('Informacija', `
<p>Kadangi kita pusė neinformuotai praleido užsiėmimą (neprisijungė laiku), užsiėmimas laikomas kaip kitos pusės neinformuotai praleistas.</p>
<p>Klientas už tokį korepetitoriaus praleistą užsiėmimą pinigų nemoka. Esant galimybei, korepetitorius susisieks su Jumis ir sutars naują laiką užsiėmimui atidirbti.</p>
<p>Korepetitorius už tokį mokinio praleistą užsiėmimą atlygį gauna ir klientas už mokinio neinformuotai praleistą užsiėmimą moka pilną kainą. Esant galimybei, korepetitorius susisieks su Jumis ir sutars naują laiką užsiėmimui atidirbti.</p>`);
let url = document.location.href;
window.history.pushState({}, "", url.split("?")[0]);
}
if (searchParams.has('action') && searchParams.get('action') == 'moved') {// true
initModal('Informacija', `
<div class="ta-c">
<p>Korepetitorius šį užsiėmimą ką tik perkėlė ir užsiėmimas vyks kitu laiku!</p>
<p>Pradinė užsiėmimo data ir laikas:<br>${searchParams.get('from')}</p>
<p>Nauja užsiėmimo data ir laikas:<br>${searchParams.get('to')}</p>
</div>`);
let url = document.location.href;
window.history.pushState({}, "", url.split("?")[0]);
}
if (searchParams.has('action') && searchParams.get('action') == 'denied') {// true
initModal('Šiuo metu nėra galimybės prisijungti prie užsiėmimo.', `
<div class="ta-c">
<p><b>Taip yra dėl vienos iš žemiau pateiktų priežasčių:</b></p>
<p>A) šiuo metu vienas vartotojas jau yra prisijungęs (mokinys arba tėvas/ globėjas);</p>
<p>B) jūs neplanuotai atsijungėte nuo užsiėmimo.</p>
<p><b>JEI NORITE PRISIJUNGTI:</b></p>
<p>A) atveju privaloma, jog vienas vartotojas atsijungtų ir tik tada galės prisijungti kitas vartotojas;</p>
<p>B) atveju vėl galėsite prisijungti 60 sekundžių eigoje nuo neplanuoto atsijungimo;</p>
</div>`);
let url = document.location.href;
// window.history.pushState({}, "", url.split("?")[0]);
}
// create new scope
var timer;
// bind event handler
$('.join-lesson').on('click', function () {
var buttonClicked = this;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
window.open(buttonClicked.getAttribute('data-href'), "_blank")
}, 700, buttonClicked);
});
})
function initModal(header, body, footerVisible = false) {
let modal = $('#modal').modal();
modal.find('.modal-header .modal-title').html(header)
modal.find('.modal-body .content').html(body)
if (footerVisible) {
modal.find('.modal-footer').show();
} else {
modal.find('.modal-footer').hide();
}
modal.show();
}
function initLessonMoveModal(lessonId) {
let url = `{{ path('me_teacher_lesson_move', {'id': 'id'}) }}`;
url = url.replace('id', lessonId);
$('#modal .modal-footer .modal-save').attr('lesson', lessonId);
$.ajax({
type: 'GET',
url: url,
success: function (res) {
initModal('Perkelti...', res, true);
$('#lesson_move_startTime').flatpickr({
locale: "lt",
altInput: true,
enableTime: true,
altFormat: "Y-m-d H:i",
dateFormat: "Y-m-d H:i",
minTime: "05:00",
time_24hr: true,
allowInput: true,
onClose: function (change, string, event) {
var duration = $('#lesson_move_duration').val();
var endTime = moment(string).add(duration, 'minutes').format('YYYY-MM-DD HH:mm')
$('#lesson_move_endTime').val(endTime);
}
})
}
})
}
function CountDownTimer(selector) {
var timeBlock = $(selector).find('.card-item');
var startTime = new Date(timeBlock.attr('data-start').replace(/-/g, "/"));
var endTime = new Date(timeBlock.attr('data-end').replace(/-/g, "/"));
endTime = endTime.setMinutes(endTime.getMinutes() + 4);
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour * 24;
var timer;
///var now = new Date("{{ "now"|date('Y-m-d H:i:s') }}");
var server = moment('{{ "now"|date('Y-m-d H:i:s') }}')
var user = moment()
var difference = user - server;
// console.log(server);
function showRemaining() {
var now = new Date(new Date().toLocaleString("en-US", {timeZone: "Europe/Vilnius"})) - difference;
// console.log(moment(now).format())
// console.log(moment().format())
var distanceUntilStart = startTime - now;
var days = Math.floor(distanceUntilStart / _day);
var hours = Math.floor((distanceUntilStart % _day) / _hour);
var minutes = Math.floor((distanceUntilStart % _hour) / _minute);
var seconds = Math.floor((distanceUntilStart % _minute) / _second);
//how long lesson is already going
var distanceFromStart = now - startTime;
var goingHours = Math.floor((distanceFromStart % _day) / _hour);
var goingMinutes = Math.floor((distanceFromStart % _hour) / _minute) + (goingHours * 60);
var goingSeconds = Math.floor((distanceFromStart % _minute) / _second);
//how long after the lesson end to remove the card dom object.
var distanceFromEnd = endTime - now;
var afterMinutes = Math.floor((distanceFromEnd % _hour) / _minute);
var afterSeconds = Math.floor((distanceFromEnd % _minute) / _second);
//console.log(goingMinutes + " going");
if (distanceUntilStart > 0) {
// timeText = days + 'days ';
timeText = hours + 'val. ';
timeText += minutes + 'min. ';
timeText += seconds + 's.';
// $(selector).find('.timer').html(timeText);//bug
checkminutes = 5
{% if is_granted('ROLE_TEACHER') %}
checkminutes = 10
{% endif %}
if (days == 0 && hours == 0 && minutes < checkminutes) {
// $(selector).find('.timer').hide()
$(selector).find('.notice').html(`Iki pradžios liko: <b>${minutes} min. ${seconds} s.</b><br>Junkitės į užsiėmimą!`)
$(selector).find('.join-lesson').removeAttr('disabled')
} else {
if (days > 0) {
$(selector).find('.notice').html(`Iki užsiėmimo pradžios liko: <b>${days + " d."} ${hours} val ${minutes} min.</b>`)
} else {
if (hours == 0) {
let text = `Iki užsiėmimo pradžios: <b>${minutes} min. ${seconds} s.</b>`
{% if is_granted('ROLE_TEACHER') %}
minutes = minutes - 10
{% else %}
minutes = minutes - 5
{% endif %}
text += `<br>Jungtis galėsite po: <b>${minutes} min. ${seconds} s.</b>`;
$(selector).find('.notice').html(text)
} else {
let text = `Iki užsiėmimo pradžios: <b>${hours} val ${minutes} min.</b>`
{% if is_granted('ROLE_TEACHER') %}
minutes = minutes - 10
{% else %}
minutes = minutes - 5
{% endif %}
if (minutes < 0) {
hours = hours - 1;
minutes = minutes + 60;
}
text += `<br>Jungtis galėsite po: <b>${hours ? hours : ""} ${hours ? "val" : ""} ${minutes} min.</b>`;
$(selector).find('.notice').html(text)
}
}
}
if (days == 0 && hours == 0 && minutes < 60) {
$(selector).find('.missed-lesson').attr('disabled', false);
} else {
$(selector).find('.missed-lesson').attr('disabled', true);
}
return;
}
//console.log('after', afterMinutes)
// console.log(`afterminutes`,afterMinutes);
// console.log(`going`,goingMinutes);
if (distanceFromStart > 0) {
lesson = $(selector).find('.card-item').data('lesson-id');
if (!$(`[data-lesson-id=${lesson}]`).find('.users').hasClass('was-joined')) {
if ($(selector).find('.teacher').find('.box').hasClass('not-joined') && $(selector).find('.student').find('.box').hasClass('not-joined') && goingMinutes > 4) {
$(`[data-lesson-id=${lesson}]`).parent().parent().hide();
}
if ($(selector).find('.student').find('.box').hasClass('not-joined') && $(selector).find('.teacher').find('.box').hasClass('not-joined') && goingMinutes > 14) {
$(`[data-lesson-id=${lesson}]`).parent().parent().hide();
// $(selector).find('.btn').hide();
}
}
// $(selector).find('.timer').hide()
$(selector).find('.notice').html(``);
$(selector).find('.notice').html(`Jau vyksta (${goingMinutes}min. ${goingSeconds}s.)!`);
}
if (afterMinutes < 0) {
clearInterval(timer);
$(selector).hide();
}
}
timer = setInterval(showRemaining, 1000);
}
{% set userType = lessonExtension.learncubeUser %}
{% if is_granted('ROLE_GUARDIAN') %}
{% set userType = constant('App\\Service\\LearnCubeService::tag_guardian') %}
{% endif %}
const eventSource = new EventSource("{{ mercure('lesson_status/' ~ userType ~ '/' ~ app.user.id )|escape('js') }}");
eventSource.onmessage = event => {
event = JSON.parse(event.data);
console.log(event);
if (event.action == "reload") {
window.location.reload();
}
if (event.id > 0) {
$(`.lesson-list .card-item[data-lesson-id=${event.id}] .box`).removeClass('joined')
$(`.lesson-list .card-item[data-lesson-id=${event.id}] .box`).removeClass('not-joined')
$(`.lesson-list .card-item[data-lesson-id=${event.id}] .teacher .box`).toggleClass(parseStatus(event.teacher))
$(`.lesson-list .card-item[data-lesson-id=${event.id}] .student .box`).toggleClass(parseStatus(event.student))
}
}
function parseStatus(status) {
if (status) {
return "joined"
} else {
return `not-joined`
}
}
</script>
{% endblock %}
{% endif %}