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