aboutsummaryrefslogtreecommitdiffstats
path: root/source/resources/js/admin/adminEvents.js
blob: 7e6415f516d08323d210b07fda1fc302c86da3be (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
'use strict'
import { dashboard, switchDisplay, popUp, removePopUp, createSearch, createTable, sortAppointment, data, copyArray, filterArray, setDeleteFunctionality, setViewFunctionality, removeForms, sortLogs } from './admin.js'

document.getElementById("nav-users").addEventListener("click", () => {
    switchDisplay("students")
}
);
document.getElementById("nav-companies").addEventListener("click", () => {
    switchDisplay("companies")
})

document.getElementById('nav-logs').addEventListener('click', () => {
    switchDisplay('logs')
})
document.getElementById("toAddCompany").addEventListener("click", () => {
    switchDisplay("addCompany")
}
);
document.getElementById("toAddStudent").addEventListener("click", () => {
    switchDisplay("addStudent")
}
);
document.getElementById("backToCompanies").addEventListener("click", () => {
    switchDisplay("companies")
});
document.getElementById("backToStudent").addEventListener("click", () => {
    switchDisplay("students")
});
document.getElementById("nav-appointments").addEventListener("click", () => {
    switchDisplay("appointments")
});

//Add a 'view more' option for students and companies
setViewFunctionality()

//Add a 'delete' option for students and companies
setDeleteFunctionality()
//To abort the delete process 
document.getElementById('abortAction').addEventListener('click', () => {
    removeForms()
    removePopUp();
})
//Popups can also be removed by pressing escape 
document.addEventListener('keydown', e => {
    if (e.key == "Escape") {
        removePopUp()
        removeForms()
        if (document.getElementById('details').style.display != 'none') {
            //If we're checking details of a student, go back to students
            if (document.getElementsByClassName('viewS').length > 0) switchDisplay('students')
            else switchDisplay('companies')
        }
    }
})

document.getElementById('searchType').addEventListener('change', () => {
    const searchType = document.getElementById('searchType').value;
    sortLogs(searchType)
})

document.getElementById('logout').addEventListener('click', async () => {
    await localStorage.clear('token');
    await localStorage.clear('user_type');
    location.href='/'

})

window.addEventListener("load", () => {
    dashboard();
    sortLogs('belang')
    switchDisplay("logs");

    //Checks if there are new logs to be found. If not, the next Logs button is removed
    if (document.getElementById('next-log-page').value == '') document.getElementById('next-log-form').style.visibility ='hidden'
    if (document.getElementById('prev-log-page').value == '') document.getElementById('prev-log-form').style.visibility ='hidden'

    const filterElements = document.getElementsByClassName("filter");
    let count = 0;
    for (let element of filterElements)
        createSearch(count, element),
        count++;
    for (let filter of document.getElementsByClassName("filterAction"))
        filter.addEventListener("click", () => {
            //l, e
            let nameInput, type;
            //Checks if we're on the studentpage. Else, we can assume we're on the company page
            if (document.getElementById("students").style.display != "none" ? (nameInput = document.getElementById("nameSearchS").value,
            type = "student") : (nameInput = document.getElementById("nameSearchC").value,
            type = "company"))

            //If no name was found, create the table without any extras
            if (nameInput == '') {
                type == "student" ? createTable(data.student) : createTable(data.company)
                setViewFunctionality()
                setDeleteFunctionality()
                return 0 ;
            }
            let filtered;
            //Filter the name through the arrays, depending on wether it's a student or a company
            type == "student" ? filtered = filterArray(data.student, nameInput) : filtered = filterArray(data.company, nameInput)
            //If no names were found, just create regular table
            if (filtered.length == 0) {
                type == "student" ? createTable(data.student) : createTable(data.company);
                setViewFunctionality()
                setDeleteFunctionality()
                return 0;
            }
            //remove found objects from the original array
            let rest;
            if (type == "student") {
                rest = copyArray(data.student);
                for (let el of filtered) rest = rest.filter(obj=> obj.name != el.name)
            } 
            else {
                rest = copyArray(data.company);
                for (let el of filtered) rest = rest.filter(obj => obj.name != el.name)
            }
            //create table, starting with highlighted names, then the rest
            createTable(rest, filtered)
            setViewFunctionality()
            setDeleteFunctionality()
        }
        )
        setTimeout(() => {
            document.getElementById('serverResponse').innerHTML = ''
        }, 5000)
    sortAppointment()
    for (let element of document.getElementsByClassName('token')) {
        element.value = localStorage.getItem('token');
    }
}
);