1+ document . getElementById ( 'issueInputForm' ) . addEventListener ( 'submit' , submitIssue ) ;
2+
3+ function submitIssue ( e ) {
4+ const getInputValue = id => document . getElementById ( id ) . value ;
5+ const description = getInputValue ( 'issueDescription' ) ;
6+ const severity = getInputValue ( 'issueSeverity' ) ;
7+ const assignedTo = getInputValue ( 'issueAssignedTo' ) ;
8+ const id = Math . floor ( Math . random ( ) * 100000000 ) + '' ;
9+ const status = 'Open' ;
10+
11+ const issue = { id, description, severity, assignedTo, status } ;
12+ let issues = [ ] ;
13+ if ( localStorage . getItem ( 'issues' ) ) {
14+ issues = JSON . parse ( localStorage . getItem ( 'issues' ) ) ;
15+ }
16+ issues . push ( issue ) ;
17+ localStorage . setItem ( 'issues' , JSON . stringify ( issues ) ) ;
18+
19+ document . getElementById ( 'issueInputForm' ) . reset ( ) ;
20+ fetchIssues ( ) ;
21+ e . preventDefault ( ) ;
22+ }
23+
24+ const setStatusClosed = id => {
25+ const issues = JSON . parse ( localStorage . getItem ( 'issues' ) ) ;
26+ const currentIssue = issues . find ( issue => issue . id == id ) ;
27+ currentIssue . status = 'Closed' ;
28+ localStorage . setItem ( 'issues' , JSON . stringify ( issues ) ) ;
29+ fetchIssues ( ) ;
30+ }
31+
32+ const deleteIssue = id => {
33+ const issues = JSON . parse ( localStorage . getItem ( 'issues' ) ) ;
34+ const remainingIssues = issues . filter ( issue => issue . id != id ) ;
35+ localStorage . setItem ( 'issues' , JSON . stringify ( remainingIssues ) ) ;
36+ fetchIssues ( ) ;
37+ }
38+
39+ const fetchIssues = ( ) => {
40+ const issues = JSON . parse ( localStorage . getItem ( 'issues' ) ) || [ ] ;
41+ const issuesList = document . getElementById ( 'issuesList' ) ;
42+ issuesList . innerHTML = '' ;
43+
44+ // Update counters
45+ const totalIssues = issues . length ;
46+ const closedIssues = issues . filter ( issue => issue . status === 'Closed' ) . length ;
47+
48+ document . getElementById ( 'issueCount' ) . textContent = totalIssues ;
49+ document . getElementById ( 'closedCount' ) . textContent = closedIssues ;
50+
51+ for ( var i = 0 ; i < issues . length ; i ++ ) {
52+ const { id, description, severity, assignedTo, status} = issues [ i ] ;
53+
54+ issuesList . innerHTML += `<div class="well">
55+ <h6>Issue ID: ${ id } </h6>
56+ <p><span class="label label-info"> ${ status } </span></p>
57+ <h3> ${ description } </h3>
58+ <p><span class="glyphicon glyphicon-time"></span> ${ severity } </p>
59+ <p><span class="glyphicon glyphicon-user"></span> ${ assignedTo } </p>
60+ <a href="#" onclick="setStatusClosed('${ id } ')" class="btn btn-warning">Close</a>
61+ <a href="#" onclick="deleteIssue('${ id } ')" class="btn btn-danger">Delete</a>
62+ </div>` ;
63+ }
64+ }
0 commit comments