descholar-ceo/AnnounceIT

View on GitHub
UI/js/handle-announcement-clicked.js

Summary

Maintainability
A
0 mins
Test Coverage
import { announcements } from '../js/resources/announcements.js';

/** varibales */
const singleResult = document.querySelectorAll('tr[single-result]');
const announcementsDisplayList = document.querySelector('div#announcements-display');
const announcementDisplayDetails = document.querySelector('div#announcement-details-display');

/** varibales which will hold announcement details */
const announcementTitle = document.querySelector('h2#announcement-title');
const announcementContent = document.querySelector('span#announcement-content');
const announcementStatus = document.querySelector('span#announcement-status');
const announcementOwner = document.querySelector('span#announcement-owner');
const announcementStartDate = document.querySelector('span#announcement-startdate');
const announcementEndDate = document.querySelector('span#announcement-enddate');
const announcementUpdateBtn = document.querySelector('button[announcement-update-btn]');
const announcementDeleteBtn = document.querySelector('button[announcement-delete-btn]');
const goBackToListBtn = document.querySelector('button#goback-to-list-btn');

export const clickedSingleResult = (event) => {

    announcements.forEach((currAnnounc) => {
        if (currAnnounc.id === event.target.id) {

            announcementsDisplayList.classList.add('hidden-element');
            announcementDisplayDetails.classList.remove('hidden-element');

            announcementTitle.innerHTML = currAnnounc.title;
            announcementContent.innerHTML = currAnnounc.text;
            announcementStatus.innerHTML = currAnnounc.status;
            announcementOwner.innerHTML = currAnnounc.owner;
            announcementStartDate.innerHTML = `Valid since : ${currAnnounc.startDate}`;
            announcementEndDate.innerHTML = `To : ${currAnnounc.endDate}`;

            announcementDeleteBtn.setAttribute('id', currAnnounc.id);

            announcementUpdateBtn.setAttribute('id', currAnnounc.id);
            announcementDeleteBtn.setAttribute('id', currAnnounc.id);

            clickedElt = {
                title: currAnnounc.title,
                content: currAnnounc.text,
                status: currAnnounc.status,
                owner: currAnnounc.owner,
                startDate: currAnnounc.startDate,
                endDate: currAnnounc.endDate
            }
        }
    });
   
};

singleResult.forEach((currTr) => {
    currTr.addEventListener('click', (event) => clickedSingleResult(event));
});

goBackToListBtn.addEventListener('click', () => {
    location.reload();
});

announcementDeleteBtn.addEventListener('click', (event) => {

    /**
     * This function is working well, it is there to be used to remove an element 
     * array, it will be used at the fullest, when we have real data from backend
     */
    delete announcements[event.target.id];

    announcementsDisplayList.classList.remove('hidden-element');
    announcementDisplayDetails.classList.add('hidden-element');
})

announcementUpdateBtn.addEventListener('click', (event) => {
    let createAnnouncementPage;
    let clickedAnnouncement;
    const currAddress = window.location.href;
    if (currAddress.includes('admin-side')) {
        createAnnouncementPage = '../create-announcement.html';
    } else {
        createAnnouncementPage = '../html/create-announcement.html';
    }

    announcements.forEach((currAnnounc) => {
        if (currAnnounc.id === event.target.id) {
            clickedAnnouncement = currAnnounc;
        }
    });

    location.replace(`${createAnnouncementPage}?${JSON.stringify(clickedAnnouncement)}`);
});