magnax 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. magnax/__init__.py +3 -0
  2. magnax/__main__.py +25 -0
  3. magnax/debug.py +65 -0
  4. magnax/public/__init__.py +1 -0
  5. magnax/public/adb/linux/adb +0 -0
  6. magnax/public/adb/linux_arm/adb +0 -0
  7. magnax/public/adb/mac/adb +0 -0
  8. magnax/public/adb/windows/AdbWinApi.dll +0 -0
  9. magnax/public/adb/windows/AdbWinUsbApi.dll +0 -0
  10. magnax/public/adb/windows/adb.exe +0 -0
  11. magnax/public/adb.py +96 -0
  12. magnax/public/android_fps.py +750 -0
  13. magnax/public/apm.py +1306 -0
  14. magnax/public/apm_pk.py +184 -0
  15. magnax/public/common.py +1598 -0
  16. magnax/public/config.json +1 -0
  17. magnax/public/ios_perf_adapter.py +790 -0
  18. magnax/public/report_template/android.html +526 -0
  19. magnax/public/report_template/ios.html +482 -0
  20. magnax/public/scrcpy/scrcpy-win32-v2.4/AdbWinApi.dll +0 -0
  21. magnax/public/scrcpy/scrcpy-win32-v2.4/AdbWinUsbApi.dll +0 -0
  22. magnax/public/scrcpy/scrcpy-win32-v2.4/SDL2.dll +0 -0
  23. magnax/public/scrcpy/scrcpy-win32-v2.4/adb.exe +0 -0
  24. magnax/public/scrcpy/scrcpy-win32-v2.4/avcodec-60.dll +0 -0
  25. magnax/public/scrcpy/scrcpy-win32-v2.4/avformat-60.dll +0 -0
  26. magnax/public/scrcpy/scrcpy-win32-v2.4/avutil-58.dll +0 -0
  27. magnax/public/scrcpy/scrcpy-win32-v2.4/icon.png +0 -0
  28. magnax/public/scrcpy/scrcpy-win32-v2.4/libusb-1.0.dll +0 -0
  29. magnax/public/scrcpy/scrcpy-win32-v2.4/open_a_terminal_here.bat +1 -0
  30. magnax/public/scrcpy/scrcpy-win32-v2.4/scrcpy-console.bat +2 -0
  31. magnax/public/scrcpy/scrcpy-win32-v2.4/scrcpy-noconsole.vbs +7 -0
  32. magnax/public/scrcpy/scrcpy-win32-v2.4/scrcpy-server +0 -0
  33. magnax/public/scrcpy/scrcpy-win32-v2.4/scrcpy.exe +0 -0
  34. magnax/public/scrcpy/scrcpy-win32-v2.4/swresample-4.dll +0 -0
  35. magnax/public/scrcpy/scrcpy-win64-v2.4/AdbWinApi.dll +0 -0
  36. magnax/public/scrcpy/scrcpy-win64-v2.4/AdbWinUsbApi.dll +0 -0
  37. magnax/public/scrcpy/scrcpy-win64-v2.4/SDL2.dll +0 -0
  38. magnax/public/scrcpy/scrcpy-win64-v2.4/avformat-60.dll +0 -0
  39. magnax/public/scrcpy/scrcpy-win64-v2.4/avutil-58.dll +0 -0
  40. magnax/public/scrcpy/scrcpy-win64-v2.4/open_a_terminal_here.bat +1 -0
  41. magnax/public/scrcpy/scrcpy-win64-v2.4/scrcpy-noconsole.vbs +7 -0
  42. magnax/public/scrcpy/scrcpy-win64-v2.4/scrcpy-server +0 -0
  43. magnax/public/scrcpy/scrcpy-win64-v2.4/scrcpy.exe +0 -0
  44. magnax/public/scrcpy/scrcpy-win64-v2.4/swresample-4.dll +0 -0
  45. magnax/static/css/highlight.min.css +9 -0
  46. magnax/static/css/magnax-dark-theme.css +1237 -0
  47. magnax/static/css/select2-bootstrap-5-theme.min.css +3 -0
  48. magnax/static/css/select2-bootstrap-5-theme.rtl.min.css +3 -0
  49. magnax/static/css/select2.min.css +1 -0
  50. magnax/static/css/sweetalert2.min.css +1 -0
  51. magnax/static/css/tabler.demo.min.css +9 -0
  52. magnax/static/css/tabler.min.css +14 -0
  53. magnax/static/image/500.png +0 -0
  54. magnax/static/image/avatar.png +0 -0
  55. magnax/static/image/empty.png +0 -0
  56. magnax/static/image/readme/home.png +0 -0
  57. magnax/static/image/readme/pk.png +0 -0
  58. magnax/static/js/apexcharts.js +14 -0
  59. magnax/static/js/gray.js +16 -0
  60. magnax/static/js/highlight.min.js +1173 -0
  61. magnax/static/js/highstock.js +803 -0
  62. magnax/static/js/html2canvas.min.js +20 -0
  63. magnax/static/js/jquery.min.js +2 -0
  64. magnax/static/js/magnax-chart-theme.js +492 -0
  65. magnax/static/js/select2.min.js +2 -0
  66. magnax/static/js/sweetalert2.min.js +1 -0
  67. magnax/static/js/tabler.demo.min.js +9 -0
  68. magnax/static/js/tabler.min.js +9 -0
  69. magnax/static/logo/logo.png +0 -0
  70. magnax/templates/404.html +30 -0
  71. magnax/templates/analysis.html +1375 -0
  72. magnax/templates/analysis_compare.html +600 -0
  73. magnax/templates/analysis_pk.html +680 -0
  74. magnax/templates/base.html +365 -0
  75. magnax/templates/index.html +2471 -0
  76. magnax/templates/pk.html +743 -0
  77. magnax/templates/report.html +416 -0
  78. magnax/view/__init__.py +1 -0
  79. magnax/view/apis.py +952 -0
  80. magnax/view/pages.py +146 -0
  81. magnax/web.py +345 -0
  82. magnax-1.0.0.dist-info/METADATA +242 -0
  83. magnax-1.0.0.dist-info/RECORD +87 -0
  84. magnax-1.0.0.dist-info/WHEEL +5 -0
  85. magnax-1.0.0.dist-info/entry_points.txt +2 -0
  86. magnax-1.0.0.dist-info/licenses/LICENSE +21 -0
  87. magnax-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,482 @@
1
+
2
+ <!doctype html>
3
+ <!--
4
+ * MagnaX - real-time collection tool for Android/iOS performance data.
5
+ * @Author Rafa Chen
6
+ * Copyright MagnaX
7
+ -->
8
+ <html lang="en">
9
+ <head>
10
+ <meta charset="utf-8"/>
11
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/>
12
+ <meta http-equiv="X-UA-Compatible" content="ie=edge"/>
13
+ <title>MagnaX - Analysis </title>
14
+ <!-- CSS files -->
15
+ <link rel="icon" href="https://cdn.nlark.com/yuque/0/2024/png/153412/1715849982577-44b84a9c-e4d8-46b0-acae-dc46eb2ad2c9.png?x-oss-process=image%2Fformat%2Cwebp">
16
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@latest/dist/css/tabler.min.css">
17
+ </head>
18
+ <body class="Body layout-boxed">
19
+ <div class="page">
20
+ <header class="navbar navbar-expand-md navbar-light d-print-none">
21
+ <div class="container-xl" style="margin-top: 15px;margin-bottom: 15px;">
22
+ <div class="input-group" >
23
+ <span class="input-group-text">
24
+ <strong>APP</strong>
25
+ </span>
26
+ <input type="text" class="form-control" disabled value="{{ app }}" autocomplete="off">
27
+ </div>
28
+ <div class="input-group" style="margin-left: 10px;">
29
+ <span class="input-group-text">
30
+ <strong>Platform</strong>
31
+ </span>
32
+ <input type="text" class="form-control" disabled value="{{ platform }}" autocomplete="off">
33
+ </div>
34
+ <div class="input-group" style="margin-left: 10px;">
35
+ <span class="input-group-text">
36
+ <strong>Device</strong>
37
+ </span>
38
+ <input type="text" class="form-control" disabled value="{{ devices }}" autocomplete="off">
39
+ </div>
40
+ <div class="input-group" style="margin-left: 10px;">
41
+ <span class="input-group-text">
42
+ <strong>CTime</strong>
43
+ </span>
44
+ <input type="text" class="form-control" disabled value="{{ ctime }}" autocomplete="off">
45
+ </div>
46
+ </div>
47
+ </header>
48
+ <div class="page-wrapper sceen-body">
49
+ <div class="page-body">
50
+ <div class="container-xl">
51
+ <div class="col-12 mb-3">
52
+ <div class="row row-cards">
53
+ <div class="col-sm-6 col-lg-2">
54
+ <div class="card card-sm">
55
+ <div class="card-body">
56
+ <div class="row align-items-center">
57
+ <div class="col-auto">
58
+ <span class="bg-dark text-white avatar">CPU</span>
59
+ </div>
60
+ <div class="col">
61
+ <div class="font-weight-medium">APP</div>
62
+ <div class="text-muted">Avg: {{ cpu_app }}</div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ <div class="col-sm-6 col-lg-2">
69
+ <div class="card card-sm">
70
+ <div class="card-body">
71
+ <div class="row align-items-center">
72
+ <div class="col-auto">
73
+ <span class="bg-dark text-white avatar">CPU</span>
74
+ </div>
75
+ <div class="col">
76
+ <div class="font-weight-medium">Total</div>
77
+ <div class="text-muted">Avg: {{ cpu_sys }}</div>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ <div class="col-sm-6 col-lg-2">
84
+ <div class="card card-sm">
85
+ <div class="card-body">
86
+ <div class="row align-items-center">
87
+ <div class="col-auto">
88
+ <span class="bg-purple text-white avatar">GPU</span>
89
+ </div>
90
+ <div class="col">
91
+ <div class="font-weight-medium">GPU</div>
92
+ <div class="text-muted">Avg: {{ gpu }}%</div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
98
+ <div class="col-sm-6 col-lg-2">
99
+ <div class="card card-sm">
100
+ <div class="card-body">
101
+ <div class="row align-items-center">
102
+ <div class="col-auto">
103
+ <span class="bg-yellow text-white avatar">MEM</span>
104
+ </div>
105
+ <div class="col">
106
+ <div class="font-weight-medium">Total</div>
107
+ <div class="text-muted">Avg: {{ mem_total }}</div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <div class="col-sm-6 col-lg-2">
114
+ <div class="card card-sm">
115
+ <div class="card-body">
116
+ <div class="row align-items-center">
117
+ <div class="col-auto">
118
+ <span class="bg-pink text-white avatar">FPS</span>
119
+ </div>
120
+ <div class="col">
121
+ <div class="font-weight-medium">FPS</div>
122
+ <div class="text-muted">Avg: {{ fps }}</div>
123
+ </div>
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ <div class="col-sm-6 col-lg-2">
129
+ <div class="card card-sm">
130
+ <div class="card-body">
131
+ <div class="row align-items-center">
132
+ <div class="col-auto">
133
+ <span class="bg-green text-white avatar">BAT</span>
134
+ </div>
135
+ <div class="col">
136
+ <div class="font-weight-medium">Temperature</div>
137
+ <div class="text-muted">Final: {{ tem }}</div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+ <div class="col-sm-6 col-lg-2">
144
+ <div class="card card-sm">
145
+ <div class="card-body">
146
+ <div class="row align-items-center">
147
+ <div class="col-auto">
148
+ <span class="bg-green text-white avatar">BAT</span>
149
+ </div>
150
+ <div class="col">
151
+ <div class="font-weight-medium">Current</div>
152
+ <div class="text-muted">Avg: {{ current }}mA</div>
153
+ </div>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+ <div class="col-sm-6 col-lg-2">
159
+ <div class="card card-sm">
160
+ <div class="card-body">
161
+ <div class="row align-items-center">
162
+ <div class="col-auto">
163
+ <span class="bg-green text-white avatar">BAT</span>
164
+ </div>
165
+ <div class="col">
166
+ <div class="font-weight-medium">Voltage</div>
167
+ <div class="text-muted">Avg: {{ voltage }}mW</div>
168
+ </div>
169
+ </div>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ <div class="col-sm-6 col-lg-2">
174
+ <div class="card card-sm">
175
+ <div class="card-body">
176
+ <div class="row align-items-center">
177
+ <div class="col-auto">
178
+ <span class="bg-green text-white avatar">BAT</span>
179
+ </div>
180
+ <div class="col">
181
+ <div class="font-weight-medium">Power</div>
182
+ <div class="text-muted">Avg: {{ power }}mV</div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ </div>
187
+ </div>
188
+ <div class="col-sm-6 col-lg-2">
189
+ <div class="card card-sm">
190
+ <div class="card-body">
191
+ <div class="row align-items-center">
192
+ <div class="col-auto">
193
+ <span class="bg-blue text-white avatar">NET</span>
194
+ </div>
195
+ <div class="col">
196
+ <div class="font-weight-medium">Send</div>
197
+ <div class="text-muted">All: <label style="color: red;"><strong>+</strong></label>{{ net_send }}</div>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </div>
203
+ <div class="col-sm-6 col-lg-2">
204
+ <div class="card card-sm">
205
+ <div class="card-body">
206
+ <div class="row align-items-center">
207
+ <div class="col-auto">
208
+ <span class="bg-blue text-white avatar">NET</span>
209
+ </div>
210
+ <div class="col">
211
+ <div class="font-weight-medium">Recv</div>
212
+ <div class="text-muted">All: <label style="color: red;"><strong>+</strong></label>{{ net_recv }}</div>
213
+ </div>
214
+ </div>
215
+ </div>
216
+ </div>
217
+ </div>
218
+ </div>
219
+ </div>
220
+ <div class="col-12">
221
+ <div class="card cpu-card mb-3">
222
+ <div class="card-header">
223
+ <div class='card-title'>CPU Usage (%)</div>
224
+ <div class="card-actions btn-actions">
225
+ <a class="btn-action cursor-pointer" onclick="screenshot('cpu-card','cpu.png')">
226
+ <svg t="1646303797379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5790" width="2000" height="2000"><path d="M897.856 842.56c14.464-6.72 18.624-20.48 9.28-30.848l-241.216-263.296a25.792 25.792 0 0 0-7.68-5.888c-14.016-7.296-33.6-5.184-43.776 4.8l-241.152 233.088-103.808-70.528a30.912 30.912 0 0 0-3.52-1.92c-14.08-7.36-33.664-4.992-43.776 4.864l-101.056 97.728a18.368 18.368 0 0 0-6.08 13.952c0.512 12.288 14.848 22.016 32.128 21.696h732.8a40.768 40.768 0 0 0 17.856-3.648zM259.84 399.68a78.464 78.464 0 0 0 117.504 67.84 78.272 78.272 0 0 0 0-135.744A78.208 78.208 0 0 0 259.84 399.68" p-id="5791"></path><path d="M864.832 872.256H159.232a83.84 83.84 0 0 1-83.776-83.776V235.52a83.84 83.84 0 0 1 83.776-83.776h705.536a83.84 83.84 0 0 1 83.776 83.776v552.96a83.84 83.84 0 0 1-83.712 83.776zM159.232 183.744a51.84 51.84 0 0 0-51.776 51.776v552.96a51.84 51.84 0 0 0 51.776 51.776h705.536a51.84 51.84 0 0 0 51.776-51.776V235.52a51.84 51.84 0 0 0-51.776-51.776H159.232z" p-id="5792"></path></svg>
227
+ </a>
228
+ </div>
229
+ </div>
230
+ <div class="card-body">
231
+ <div id="chart-cpu"></div>
232
+ </div>
233
+ </div>
234
+ <div class="card gpu-card mb-3">
235
+ <div class="card-header">
236
+ <div class='card-title'>GPU Usage (%)</div>
237
+ <div class="card-actions btn-actions">
238
+ <a class="btn-action cursor-pointer" onclick="screenshot('gpu-card','gpu.png')">
239
+ <svg t="1646303797379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5790" width="2000" height="2000"><path d="M897.856 842.56c14.464-6.72 18.624-20.48 9.28-30.848l-241.216-263.296a25.792 25.792 0 0 0-7.68-5.888c-14.016-7.296-33.6-5.184-43.776 4.8l-241.152 233.088-103.808-70.528a30.912 30.912 0 0 0-3.52-1.92c-14.08-7.36-33.664-4.992-43.776 4.864l-101.056 97.728a18.368 18.368 0 0 0-6.08 13.952c0.512 12.288 14.848 22.016 32.128 21.696h732.8a40.768 40.768 0 0 0 17.856-3.648zM259.84 399.68a78.464 78.464 0 0 0 117.504 67.84 78.272 78.272 0 0 0 0-135.744A78.208 78.208 0 0 0 259.84 399.68" p-id="5791"></path><path d="M864.832 872.256H159.232a83.84 83.84 0 0 1-83.776-83.776V235.52a83.84 83.84 0 0 1 83.776-83.776h705.536a83.84 83.84 0 0 1 83.776 83.776v552.96a83.84 83.84 0 0 1-83.712 83.776zM159.232 183.744a51.84 51.84 0 0 0-51.776 51.776v552.96a51.84 51.84 0 0 0 51.776 51.776h705.536a51.84 51.84 0 0 0 51.776-51.776V235.52a51.84 51.84 0 0 0-51.776-51.776H159.232z" p-id="5792"></path></svg>
240
+ </a>
241
+ </div>
242
+ </div>
243
+ <div class="card-body">
244
+ <div id="chart-gpu"></div>
245
+ </div>
246
+ </div>
247
+ <div class="card memory-card mb-3">
248
+ <div class="card-header">
249
+ <div class='card-title'>Memory Usage (MB)</div>
250
+ <div class="card-actions btn-actions">
251
+ <a class="btn-action cursor-pointer" onclick="screenshot('memory-card','memery.png')">
252
+ <svg t="1646303797379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5790" width="2000" height="2000"><path d="M897.856 842.56c14.464-6.72 18.624-20.48 9.28-30.848l-241.216-263.296a25.792 25.792 0 0 0-7.68-5.888c-14.016-7.296-33.6-5.184-43.776 4.8l-241.152 233.088-103.808-70.528a30.912 30.912 0 0 0-3.52-1.92c-14.08-7.36-33.664-4.992-43.776 4.864l-101.056 97.728a18.368 18.368 0 0 0-6.08 13.952c0.512 12.288 14.848 22.016 32.128 21.696h732.8a40.768 40.768 0 0 0 17.856-3.648zM259.84 399.68a78.464 78.464 0 0 0 117.504 67.84 78.272 78.272 0 0 0 0-135.744A78.208 78.208 0 0 0 259.84 399.68" p-id="5791"></path><path d="M864.832 872.256H159.232a83.84 83.84 0 0 1-83.776-83.776V235.52a83.84 83.84 0 0 1 83.776-83.776h705.536a83.84 83.84 0 0 1 83.776 83.776v552.96a83.84 83.84 0 0 1-83.712 83.776zM159.232 183.744a51.84 51.84 0 0 0-51.776 51.776v552.96a51.84 51.84 0 0 0 51.776 51.776h705.536a51.84 51.84 0 0 0 51.776-51.776V235.52a51.84 51.84 0 0 0-51.776-51.776H159.232z" p-id="5792"></path></svg>
253
+ </a>
254
+ </div>
255
+ </div>
256
+ <div class="card-body">
257
+ <div id="chart-mem"></div>
258
+ </div>
259
+ </div>
260
+ <div class="card net-card mb-3">
261
+ <div class="card-header">
262
+ <div class='card-title'>Network Usage (KB)</div>
263
+ <div class="card-actions btn-actions">
264
+ <a class="btn-action cursor-pointer" onclick="screenshot('net-card','net.png')">
265
+ <svg t="1646303797379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5790" width="2000" height="2000"><path d="M897.856 842.56c14.464-6.72 18.624-20.48 9.28-30.848l-241.216-263.296a25.792 25.792 0 0 0-7.68-5.888c-14.016-7.296-33.6-5.184-43.776 4.8l-241.152 233.088-103.808-70.528a30.912 30.912 0 0 0-3.52-1.92c-14.08-7.36-33.664-4.992-43.776 4.864l-101.056 97.728a18.368 18.368 0 0 0-6.08 13.952c0.512 12.288 14.848 22.016 32.128 21.696h732.8a40.768 40.768 0 0 0 17.856-3.648zM259.84 399.68a78.464 78.464 0 0 0 117.504 67.84 78.272 78.272 0 0 0 0-135.744A78.208 78.208 0 0 0 259.84 399.68" p-id="5791"></path><path d="M864.832 872.256H159.232a83.84 83.84 0 0 1-83.776-83.776V235.52a83.84 83.84 0 0 1 83.776-83.776h705.536a83.84 83.84 0 0 1 83.776 83.776v552.96a83.84 83.84 0 0 1-83.712 83.776zM159.232 183.744a51.84 51.84 0 0 0-51.776 51.776v552.96a51.84 51.84 0 0 0 51.776 51.776h705.536a51.84 51.84 0 0 0 51.776-51.776V235.52a51.84 51.84 0 0 0-51.776-51.776H159.232z" p-id="5792"></path></svg>
266
+ </a>
267
+ </div>
268
+ </div>
269
+ <div class="card-body">
270
+ <div id="chart-net"></div>
271
+ </div>
272
+ </div>
273
+ <div class="card fps-card mb-3">
274
+ <div class="card-header">
275
+ <div class='card-title'>FPS (HZ)</div>
276
+ <div class="card-actions btn-actions">
277
+ <a class="btn-action cursor-pointer" onclick="screenshot('fps-card','fps.png')">
278
+ <svg t="1646303797379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5790" width="2000" height="2000"><path d="M897.856 842.56c14.464-6.72 18.624-20.48 9.28-30.848l-241.216-263.296a25.792 25.792 0 0 0-7.68-5.888c-14.016-7.296-33.6-5.184-43.776 4.8l-241.152 233.088-103.808-70.528a30.912 30.912 0 0 0-3.52-1.92c-14.08-7.36-33.664-4.992-43.776 4.864l-101.056 97.728a18.368 18.368 0 0 0-6.08 13.952c0.512 12.288 14.848 22.016 32.128 21.696h732.8a40.768 40.768 0 0 0 17.856-3.648zM259.84 399.68a78.464 78.464 0 0 0 117.504 67.84 78.272 78.272 0 0 0 0-135.744A78.208 78.208 0 0 0 259.84 399.68" p-id="5791"></path><path d="M864.832 872.256H159.232a83.84 83.84 0 0 1-83.776-83.776V235.52a83.84 83.84 0 0 1 83.776-83.776h705.536a83.84 83.84 0 0 1 83.776 83.776v552.96a83.84 83.84 0 0 1-83.712 83.776zM159.232 183.744a51.84 51.84 0 0 0-51.776 51.776v552.96a51.84 51.84 0 0 0 51.776 51.776h705.536a51.84 51.84 0 0 0 51.776-51.776V235.52a51.84 51.84 0 0 0-51.776-51.776H159.232z" p-id="5792"></path></svg>
279
+ </a>
280
+ </div>
281
+ </div>
282
+ <div class="card-body">
283
+ <div id="chart-fps"></div>
284
+ </div>
285
+ </div>
286
+ <div class="card battery-card">
287
+ <div class="card-header">
288
+ <div class='card-title'>Battery</div>
289
+ <div class="card-actions btn-actions">
290
+ <a class="btn-action cursor-pointer" onclick="screenshot('battery-card','battery.png')">
291
+ <svg t="1646303797379" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5790" width="2000" height="2000"><path d="M897.856 842.56c14.464-6.72 18.624-20.48 9.28-30.848l-241.216-263.296a25.792 25.792 0 0 0-7.68-5.888c-14.016-7.296-33.6-5.184-43.776 4.8l-241.152 233.088-103.808-70.528a30.912 30.912 0 0 0-3.52-1.92c-14.08-7.36-33.664-4.992-43.776 4.864l-101.056 97.728a18.368 18.368 0 0 0-6.08 13.952c0.512 12.288 14.848 22.016 32.128 21.696h732.8a40.768 40.768 0 0 0 17.856-3.648zM259.84 399.68a78.464 78.464 0 0 0 117.504 67.84 78.272 78.272 0 0 0 0-135.744A78.208 78.208 0 0 0 259.84 399.68" p-id="5791"></path><path d="M864.832 872.256H159.232a83.84 83.84 0 0 1-83.776-83.776V235.52a83.84 83.84 0 0 1 83.776-83.776h705.536a83.84 83.84 0 0 1 83.776 83.776v552.96a83.84 83.84 0 0 1-83.712 83.776zM159.232 183.744a51.84 51.84 0 0 0-51.776 51.776v552.96a51.84 51.84 0 0 0 51.776 51.776h705.536a51.84 51.84 0 0 0 51.776-51.776V235.52a51.84 51.84 0 0 0-51.776-51.776H159.232z" p-id="5792"></path></svg>
292
+ </a>
293
+ </div>
294
+ </div>
295
+ <div class="card-body">
296
+ <div id="chart-battery"></div>
297
+ </div>
298
+ </div>
299
+ </div>
300
+ </div>
301
+ </div>
302
+ </div>
303
+ <footer class="footer footer-transparent d-print-none">
304
+ <div class="container-xl">
305
+ <div class="row text-center align-items-center flex-row-reverse">
306
+ <div class="col-12 mt-3 mt-lg-0">
307
+ <ul class="list-inline list-inline-dots mb-0">
308
+ <li class="list-inline-item">Copyright &copy; <label id="curYear"></label>
309
+ <a href="https://github.com/smart-test-ti" class="link-secondary">MagnaX</a>. All rights reserved
310
+ </li>
311
+ <li class="list-inline-item">
312
+ <a href="https://github.com/smart-test-ti/MagnaX" target="_blank" class="link-secondary" rel="noopener">
313
+ <svg t="1703151647587" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4765" width="50" height="50"><path d="M512.09998 0.09998l-445.512985 239.953135 445.512985 247.251708 445.512986-247.251708z" fill="#8FB3FF" p-id="4766"></path><path d="M546.693224 546.593244l409.919937-242.752588-0.09998 482.805702-409.919937 237.353642 0.09998-477.406756z" fill="#043EB8" p-id="4767"></path><path d="M66.886936 303.840656L476.906854 542.893966l-0.499902 480.906073L66.786956 790.245655l0.09998-486.404999z" fill="#2868F0" p-id="4768"></path></svg>
314
+ Source Code
315
+ </a>
316
+ </li>
317
+ </ul>
318
+ </div>
319
+ </div>
320
+ </div>
321
+ </footer>
322
+ </div>
323
+
324
+ <!-- JQ JS -->
325
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
326
+ <!-- tabler -->
327
+ <script src="https://cdn.jsdelivr.net/npm/@tabler/core@latest/dist/js/tabler.min.js"></script>
328
+ <!-- Sweetalert2 -->
329
+ <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
330
+ <!-- Apexcharts-->
331
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/apexcharts/3.39.0/apexcharts.min.js"></script>
332
+ <!-- html2canvas -->
333
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
334
+ <script>
335
+
336
+ $(document).ready(function() {
337
+ $('#curYear').text(getCurDate())
338
+ initCPUCharts()
339
+ initMemoryCharts()
340
+ initNetworkCharts()
341
+ initFPSCharts()
342
+ initGPUCharts()
343
+ initBatteryCharts()
344
+ });
345
+
346
+ function getCurDate(){
347
+ var date = new Date();
348
+ var year = date.getFullYear();
349
+ return year
350
+ };
351
+
352
+ function screenshot(classname,downloadname) {
353
+ let container = document.getElementsByClassName(classname); //page-wrapper
354
+ html2canvas(container[0]).then(canvas => {
355
+ let imgData = canvas.toDataURL();
356
+ let link = document.createElement('a');
357
+ link.href = imgData;
358
+ link.download = downloadname;
359
+ let flag = link.click();
360
+ console.log(flag);
361
+ })
362
+ }
363
+
364
+ function options(type,dataLabels=false) {
365
+ let options = {
366
+ chart: {
367
+ type: type,
368
+ fontFamily: 'inherit',
369
+ height: 240,
370
+ parentHeightOffset: 0,
371
+ toolbar: {
372
+ show: false,
373
+ },
374
+ animations: {
375
+ enabled: false
376
+ },
377
+ },
378
+ dataLabels: {
379
+ enabled: dataLabels
380
+ },
381
+ fill: {
382
+ opacity: 1
383
+ },
384
+ stroke: {
385
+ width: 2,
386
+ lineCap: "round",
387
+ curve: "smooth",
388
+ },
389
+ series: [],
390
+ grid: {
391
+ padding: {
392
+ top: -20,
393
+ bottom: -4
394
+ },
395
+ strokeDashArray: 4,
396
+ },
397
+ xaxis: {
398
+ name: "time",
399
+ tickAmount:6,
400
+ labels: {
401
+ rotate: 0,
402
+ }
403
+ },
404
+ };
405
+ return options
406
+ }
407
+
408
+ function initCPUCharts(){
409
+ var cpu_chart = new ApexCharts(document.querySelector("#chart-cpu"), options('line'));
410
+ cpu_chart.render();
411
+ cpu_chart.updateSeries([{
412
+ name: 'app',
413
+ data: {{ cpu_charts.cpuAppData }}
414
+ },{
415
+ name: 'total',
416
+ data: {{ cpu_charts.cpuSysData }}
417
+ }])
418
+ }
419
+
420
+
421
+ function initMemoryCharts(){
422
+ var mem_chart = new ApexCharts(document.querySelector("#chart-mem"), options('line'));
423
+ mem_chart.render();
424
+ mem_chart.updateSeries([{
425
+ name: 'total',
426
+ data: {{ mem_charts.memTotalData }}
427
+ }])
428
+ }
429
+
430
+ function initNetworkCharts(){
431
+ var network_chart = new ApexCharts(document.querySelector("#chart-net"), options('line',false));
432
+ network_chart.render();
433
+ network_chart.updateSeries([{
434
+ name: 'send',
435
+ data: {{ net_charts.upFlow }}
436
+ },{
437
+ name: 'recieve',
438
+ data: {{ net_charts.downFlow }}
439
+ }])
440
+ }
441
+
442
+ function initFPSCharts(){
443
+ var fps_chart = new ApexCharts(document.querySelector("#chart-fps"), options('line'));
444
+ fps_chart.render();
445
+ fps_chart.updateSeries([{
446
+ name: 'fps',
447
+ data: {{ fps_charts.fps }}
448
+ }])
449
+ }
450
+
451
+
452
+ function initGPUCharts(){
453
+ var gpu_chart = new ApexCharts(document.querySelector("#chart-gpu"), options('line'));
454
+ gpu_chart.render();
455
+ gpu_chart.updateSeries([{
456
+ name: 'gpu',
457
+ data: {{ gpu_charts.gpu }}
458
+ }])
459
+ }
460
+
461
+ function initBatteryCharts(){
462
+ var battery_chart = new ApexCharts(document.querySelector("#chart-battery"), options('line'));
463
+ battery_chart.render();
464
+ battery_chart.updateSeries([{
465
+ name: 'temperature',
466
+ data: {{ battery_charts.batteryTem }}
467
+ },{
468
+ name: 'current',
469
+ data: {{ battery_charts.batteryCurrent }}
470
+ },{
471
+ name: 'voltage',
472
+ data: {{ battery_charts.batteryVoltage }}
473
+ },{
474
+ name: 'power',
475
+ data: {{ battery_charts.batteryPower }}
476
+ }])
477
+ }
478
+
479
+ </script>
480
+
481
+ </body>
482
+ </html>
@@ -0,0 +1,2 @@
1
+ @echo off
2
+ scrcpy.exe --pause-on-exit=if-error %*
@@ -0,0 +1,7 @@
1
+ strCommand = "cmd /c scrcpy.exe"
2
+
3
+ For Each Arg In WScript.Arguments
4
+ strCommand = strCommand & " """ & replace(Arg, """", """""""""") & """"
5
+ Next
6
+
7
+ CreateObject("Wscript.Shell").Run strCommand, 0, false
@@ -0,0 +1,7 @@
1
+ strCommand = "cmd /c scrcpy.exe"
2
+
3
+ For Each Arg In WScript.Arguments
4
+ strCommand = strCommand & " """ & replace(Arg, """", """""""""") & """"
5
+ Next
6
+
7
+ CreateObject("Wscript.Shell").Run strCommand, 0, false
@@ -0,0 +1,9 @@
1
+ /*!
2
+ Theme: Default
3
+ Description: Original highlight.js style
4
+ Author: (c) Ivan Sagalaev <maniac@softwaremaniacs.org>
5
+ Maintainer: @highlightjs/core-team
6
+ Website: https://highlightjs.org/
7
+ License: see project LICENSE
8
+ Touched: 2021
9
+ */pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#f3f3f3;color:#444}.hljs-comment{color:#697070}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#ab5656}.hljs-literal{color:#695}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}