Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function bugTracker() {
- let bugReports = [];
- let bugId = 0;
- let selector = '';
- function report(author, description, reproducible, severity) {
- const createReport = {
- ID: bugId++,
- author,
- description,
- reproducible,
- severity,
- status: 'Open',
- };
- bugReports.push(createReport);
- updateHTML();
- }
- function setStatus(id, newStatus) {
- bugReports.filter((x) => x.ID === id)[0].status = newStatus;
- console.log(bugReports);
- updateHTML();
- }
- function remove(id) {
- bugReports = bugReports.filter((x) => x.ID !== id);
- updateHTML();
- }
- function sort(method) {
- switch (method) {
- case 'author':
- bugReports = bugReports.sort((a, b) => a.author.localeCompare(b.author));
- break;
- case 'severity':
- bugReports = bugReports.sort((a, b) => a.severity - b.severity);
- break;
- default: // ID
- bugReports = bugReports.sort((a, b) => a.ID - b.ID);
- break;
- }
- updateHTML();
- }
- function output(sel) {
- selector = sel;
- }
- function updateHTML() {
- if (selector) {
- const container = document.querySelector(selector);
- let reportHTML = '';
- bugReports.map(({
- ID, description, author, status, severity,
- }) => {
- reportHTML += `
- <div id="report_${ID}" class="report">
- <div class="body">
- <p>${description}</p>
- </div>
- <div class="title">
- <span class="author">Submitted by: ${author}</span>
- <span class="status">${status} | ${severity}</span>
- </div>
- </div>
- `;
- container.innerHTML = reportHTML;
- return container;
- });
- }
- }
- return {
- report, setStatus, remove, sort, output,
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement