@@ -8,6 +8,7 @@ class Toplist {
8
8
this . _element . setAttribute ( "id" , "mod_toplist" ) ;
9
9
this . _element . innerHTML = `<h1>TOP PROCESSES<i>PID | NAME | CPU | MEM</i></h1><br>
10
10
<table id="mod_toplist_table"></table>` ;
11
+ this . _element . onclick = this . processList ;
11
12
12
13
this . parent . append ( this . _element ) ;
13
14
@@ -20,15 +21,15 @@ class Toplist {
20
21
window . si . processes ( ) . then ( data => {
21
22
if ( window . settings . excludeThreadsFromToplist === true ) {
22
23
data . list = data . list . sort ( ( a , b ) => {
23
- return ( a . pid - b . pid ) ;
24
+ return ( a . pid - b . pid ) ;
24
25
} ) . filter ( ( e , index , a ) => {
25
- let i = a . findIndex ( x => x . name === e . name ) ;
26
- if ( i !== - 1 && i !== index ) {
27
- a [ i ] . pcpu = a [ i ] . pcpu + e . pcpu ;
28
- a [ i ] . pmem = a [ i ] . pmem + e . pmem ;
29
- return false ;
30
- }
31
- return true ;
26
+ let i = a . findIndex ( x => x . name === e . name ) ;
27
+ if ( i !== - 1 && i !== index ) {
28
+ a [ i ] . pcpu = a [ i ] . pcpu + e . pcpu ;
29
+ a [ i ] . pmem = a [ i ] . pmem + e . pmem ;
30
+ return false ;
31
+ }
32
+ return true ;
32
33
} ) ;
33
34
}
34
35
@@ -49,6 +50,77 @@ class Toplist {
49
50
} ) ;
50
51
} ) ;
51
52
}
53
+
54
+ processList ( ) {
55
+ function updateProcessList ( ) {
56
+ window . si . processes ( ) . then ( data => {
57
+ if ( window . settings . excludeThreadsFromToplist === true ) {
58
+ data . list = data . list . sort ( ( a , b ) => {
59
+ return ( a . pid - b . pid ) ;
60
+ } ) . filter ( ( e , index , a ) => {
61
+ let i = a . findIndex ( x => x . name === e . name ) ;
62
+ if ( i !== - 1 && i !== index ) {
63
+ a [ i ] . pcpu = a [ i ] . pcpu + e . pcpu ;
64
+ a [ i ] . pmem = a [ i ] . pmem + e . pmem ;
65
+ return false ;
66
+ }
67
+ return true ;
68
+ } ) ;
69
+ }
70
+
71
+ let list = data . list . sort ( ( a , b ) => {
72
+ return ( ( b . pcpu - a . pcpu ) * 100 + b . pmem - a . pmem ) ;
73
+ } ) ; //.splice(0, 30);
74
+
75
+ document . querySelectorAll ( "#processList > tr" ) . forEach ( el => {
76
+ el . remove ( ) ;
77
+ } ) ;
78
+
79
+ list . forEach ( proc => {
80
+ let runtime = new Date ( Date . now ( ) - Date . parse ( proc . started ) ) ;
81
+ let el = document . createElement ( "tr" ) ;
82
+ el . innerHTML = `<td class="pid">${ proc . pid } </td>
83
+ <td class="name">${ proc . name } </td>
84
+ <td class="user">${ proc . user } </td>
85
+ <td class="cpu">${ Math . round ( proc . pcpu * 10 ) / 10 } %</td>
86
+ <td class="mem">${ Math . round ( proc . pmem * 10 ) / 10 } %</td>
87
+ <td class="state">${ proc . state } </td>
88
+ <td class="started">${ proc . started } </td>
89
+ <td class="runtime">${ runtime . getHours ( ) } :${ runtime . getMinutes ( ) } :${ runtime . getSeconds ( ) } </td>` ;
90
+ document . getElementById ( "processList" ) . append ( el ) ;
91
+ } ) ;
92
+ } ) ;
93
+ }
94
+
95
+ window . keyboard . detach ( ) ;
96
+ new Modal (
97
+ {
98
+ type : "custom" ,
99
+ title : "Active Processes" ,
100
+ html : `
101
+ <table id=\"processContainer\">
102
+ <thead>
103
+ <tr>
104
+ <td class="pid header">PID</td>
105
+ <td class="name header">Name</td>
106
+ <td class="user header">User</td>
107
+ <td class="cpu header">CPU</td>
108
+ <td class="mem header">Memory</td>
109
+ <td class="state header">State</td>
110
+ <td class="started header">Started</td>
111
+ <td class="runtime header">Runtime</td>
112
+ </tr>
113
+ </thead>
114
+ <tbody id=\"processList\">
115
+ </tbody>
116
+ </table>` ,
117
+ }
118
+ ) ;
119
+ updateProcessList ( ) ;
120
+ window . keyboard . attach ( ) ;
121
+ window . term [ window . currentTerm ] . term . focus ( ) ;
122
+ setInterval ( updateProcessList , 2000 ) ;
123
+ }
52
124
}
53
125
54
126
module . exports = {
0 commit comments