Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function bugTracker() {
- let obj = (() => {
- let id = 0;
- let bugs = [];
- let selector = undefined;
- let report = function (author, description, reproducible, severity) {
- id++;
- let newBug = {
- ID: id,
- author: String(author),
- description: String(description),
- reproducible: reproducible,
- severity: Number(severity),
- status: 'Open'
- }
- bugs.push(newBug);
- this.sort('ID');
- if (selector) {
- draw();
- }
- }
- let setStatus = function (id, newStatus) {
- bugs.forEach(bug => { if (bug.ID === id) { bug.status = newStatus } });
- if (selector) {
- draw();
- }
- };
- let remove = function (id) {
- let index = bugs.findIndex(el => el.ID === Number(id));
- if (index !== -1) {
- bugs.splice(index, 1);
- this.sort('ID')
- }
- if (selector) {
- draw();
- }
- };
- let sort = function (method) {
- if (method === 'ID' || method === 'severity') {
- bugs.sort((a, b) => a[`${method}`] - b[`${method}`]);
- } else {
- bugs.sort((a, b) => a[`${method}`].localeCompare(b[`${method}`]));
- }
- console.log(bugs)
- if (selector) {
- draw();
- }
- };
- let output = function (select) {
- selector = select;
- };
- let draw = function () {
- let parentElem = document.querySelector(`${selector}`);
- parentElem.innerHTML = '';
- bugs.forEach(bug => {
- let divElReport = document.createElement('div');
- let divElBody = document.createElement('div');
- let pElDescription = document.createElement('p');
- let divElTitle = document.createElement('div');
- let spanElAuthor = document.createElement('span');
- let spanElStatus = document.createElement('span');
- divElReport.setAttribute("id", `report_${bug.ID}`);
- divElReport.setAttribute("class", "report");
- divElBody.setAttribute("class", "body");
- pElDescription.textContent = `${bug.description}`;
- divElTitle.setAttribute("class", "title");
- spanElAuthor.setAttribute("class", "author");
- spanElAuthor.textContent = `Submitted by: ${bug.author}`;
- spanElStatus.setAttribute("class", "status");
- spanElStatus.textContent = `${bug.status} | ${bug.severity}`;
- divElBody.appendChild(pElDescription);
- divElReport.appendChild(divElBody);
- divElTitle.appendChild(spanElAuthor);
- divElTitle.appendChild(spanElStatus);
- divElReport.appendChild(divElTitle);
- parentElem.appendChild(divElReport);
- })
- };
- return { report, setStatus, remove, sort, output }
- })();
- return obj
- }
- //HTML
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Bug Tracker</title>
- <link rel="stylesheet" href="./styles.css">
- </head>
- <body>
- <div id="wrapper">
- <div id="titlebar">Bug tracker</div>
- <div id="content">
- <div class="report">
- <div class="body">
- <p>Description</p>
- </div>
- <div class="title">
- <span class="author">Submitted by: Author</span>
- <span class="status">Open | 5</span>
- </div>
- </div>
- <div class="report">
- <div class="body">
- <p>Description</p>
- </div>
- <div class="title">
- <span class="author">Submitted by: Author</span>
- <span class="status">Open | 5</span>
- </div>
- </div>
- <div class="report">
- <div class="body">
- <p>Description</p>
- </div>
- <div class="title">
- <span class="author">Submitted by: Author</span>
- <span class="status">Open | 5</span>
- </div>
- </div>
- </div>
- </div>
- <script src="./app.js"></script>
- <script>
- let tracker = bugTracker();
- tracker.output('#content');
- tracker.report('second guy', 'report content 2', true, 3);
- tracker.report('kiwi', 'judge rip', true, 5);
- tracker.report('abv', 'report content three', true, 4);
- tracker.report('abv2', 'report content three2', true, 5);
- tracker.remove(1);
- tracker.sort('author')
- </script>
- </body>
- </html>
- //Error in judge: Unexpected error: Report body wasn't filled.: expected '' to include 'judge rip'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement