sbd-npm 1.4.7 → 1.4.9
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -1
- package/status.js +104 -19
- package/util.js +1 -1
package/package.json
CHANGED
package/status.js
CHANGED
@@ -38,6 +38,9 @@ $(function () {
|
|
38
38
|
case "task":
|
39
39
|
Status.handle_task();
|
40
40
|
break;
|
41
|
+
case "worker":
|
42
|
+
Status.handle_worker();
|
43
|
+
break;
|
41
44
|
case "tool":
|
42
45
|
Status.handle_tool();
|
43
46
|
break;
|
@@ -161,38 +164,50 @@ $(function () {
|
|
161
164
|
|
162
165
|
handle_process: function () {
|
163
166
|
if (!document.getElementById("process_div_body")) {
|
167
|
+
let prefix_caption = "";
|
168
|
+
if (Util.is_mobile()) {
|
169
|
+
prefix_caption = "<caption> ";
|
170
|
+
} else {
|
171
|
+
prefix_caption = '<caption class="text-right">';
|
172
|
+
}
|
164
173
|
Util.init_table_skeleton({
|
165
174
|
"element_id": "process_div",
|
166
|
-
"caption": '<
|
175
|
+
"caption": prefix_caption + '共 <span class="label label-info" id="process_num"></span> 进程, <input checked type="checkbox" id="is_py_process"> 只显示 Python 进程</caption>',
|
167
176
|
"head_cols": [
|
168
177
|
{"name": "进程ID", "table_sort": 1},
|
169
178
|
{"name": "进程名", "table_sort": 1},
|
170
179
|
{"name": "用户名", "table_sort": 1},
|
171
180
|
{"name": "状态", "table_sort": 1},
|
172
|
-
{"name": "实际内存", "table_sort": 1, "title": "resident set size"},
|
181
|
+
{"name": "实际内存", "class": "info", "table_sort": 1, "title": "resident set size"},
|
173
182
|
{"name": "虚拟内存", "table_sort": 1},
|
174
183
|
{"name": "启动命令"},
|
175
184
|
{"name": "创建时间", "table_sort": 1},
|
176
185
|
]
|
177
186
|
});
|
187
|
+
$("#is_py_process").click(function () {
|
188
|
+
Util.show_loading();
|
189
|
+
Util.set_table_loading("process_div_body");
|
190
|
+
Status.handle_process();
|
191
|
+
});
|
178
192
|
}
|
179
|
-
|
180
|
-
|
193
|
+
let is_py_process = $("#is_py_process").prop("checked") ? "1" : "0";
|
194
|
+
Util.post(location.pathname, {active_div: localStorage[Status.tab_token], is_py_process: is_py_process}, function (j) {
|
195
|
+
let html = [], process_num = 0;
|
181
196
|
j["data"].forEach(function (item) {
|
182
197
|
process_num++;
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
198
|
+
html.push("<tr>");
|
199
|
+
html.push("<td>", item["pid"], "</td>");
|
200
|
+
html.push("<td>", item["name"], "</td>");
|
201
|
+
html.push("<td>", item["username"], "</td>");
|
202
|
+
html.push("<td>", item["status"], "</td>");
|
203
|
+
html.push("<td data-val='", item["rss"], "'>", Util.trans_byte_size(item["rss"]), "</td>");
|
204
|
+
html.push("<td data-val='", item["vms"], "'>", Util.trans_byte_size(item["vms"]), "</td>");
|
205
|
+
html.push("<td title='", item["cmdline"], "'>", Util.sub_str(item["cmdline"], 60), "</td>");
|
206
|
+
html.push("<td>", Util.seconds_to_format(item["create_time"]), "</td>");
|
207
|
+
html.push("</tr>");
|
193
208
|
});
|
194
|
-
|
195
|
-
$("#process_num").html(
|
209
|
+
Util.render_table_html("process_div_body", html);
|
210
|
+
$("#process_num").html(process_num);
|
196
211
|
Util.hide_tips();
|
197
212
|
});
|
198
213
|
},
|
@@ -392,7 +407,7 @@ $(function () {
|
|
392
407
|
|
393
408
|
handle_task: function () {
|
394
409
|
if (!document.getElementById("task_content")) {
|
395
|
-
let ht_html =[];
|
410
|
+
let ht_html = [];
|
396
411
|
ht_html.push('<div class="page-header" style="margin-top: 15px; text-align: center;">');
|
397
412
|
ht_html.push('<div class="form-inline">');
|
398
413
|
ht_html.push('<div class="form-group">');
|
@@ -425,7 +440,7 @@ $(function () {
|
|
425
440
|
if ($("#is_refresh_task").prop("checked")) {
|
426
441
|
Status.task_timer_id = setTimeout(function () {
|
427
442
|
Status.fetch_task_data();
|
428
|
-
},
|
443
|
+
}, 5678);
|
429
444
|
}
|
430
445
|
} else {
|
431
446
|
Status.task_status = 0;
|
@@ -471,7 +486,7 @@ $(function () {
|
|
471
486
|
Status.task_status = 0;
|
472
487
|
ta_obj.html('添加任务').prop('disabled', false).removeClass("btn-warning").addClass("btn-default");
|
473
488
|
tc_obj.prop('disabled', false);
|
474
|
-
$("#task_tips").html("<b class='text-success'>任务 `" + j["content"] + "`
|
489
|
+
$("#task_tips").html("<b class='text-success'>任务 `" + j["content"] + "` DONE</b>");
|
475
490
|
} else {
|
476
491
|
Status.task_status = 1;
|
477
492
|
ta_obj.html('任务处理中...').prop('disabled', true).removeClass("btn-default").addClass("btn-warning");
|
@@ -504,6 +519,76 @@ $(function () {
|
|
504
519
|
});
|
505
520
|
},
|
506
521
|
|
522
|
+
handle_worker: function () {
|
523
|
+
let is_init = 0;
|
524
|
+
if (!document.getElementById("workers")) {
|
525
|
+
is_init = 1;
|
526
|
+
let hw_html = [];
|
527
|
+
hw_html.push('<form class="form-inline">');
|
528
|
+
hw_html.push('<div class="form-group">');
|
529
|
+
hw_html.push('<select id="workers" class="form-control">');
|
530
|
+
hw_html.push('<option value="">Loading...</option>');
|
531
|
+
hw_html.push('</select>');
|
532
|
+
hw_html.push('</div>');
|
533
|
+
hw_html.push('</form>');
|
534
|
+
hw_html.push('<div id="worker_process_div"></div>');
|
535
|
+
$("#worker_div").html(hw_html.join(""));
|
536
|
+
}
|
537
|
+
Util.post(location.pathname, {active_div: localStorage[Status.tab_token], is_init: is_init, key: $("#workers").val()}, function (j) {
|
538
|
+
if (j["workers"]) {
|
539
|
+
let select_html = [];
|
540
|
+
select_html.push("<option value=''>共 ", j["workers"].length, " 个Worker</option>");
|
541
|
+
j["workers"].forEach(function (w) {
|
542
|
+
select_html.push("<option value='", w["key"], "'>", w["ip"], "</option>");
|
543
|
+
});
|
544
|
+
$("#workers").html(select_html.join(""));
|
545
|
+
if (j["workers"].length > 0) {
|
546
|
+
$("#workers").change(function() {
|
547
|
+
let worker_key = $(this).val();
|
548
|
+
if (worker_key) {
|
549
|
+
Util.set_table_loading("worker_process_div_body");
|
550
|
+
Status.handle_worker();
|
551
|
+
}
|
552
|
+
});
|
553
|
+
}
|
554
|
+
} else if (j["process"]) {
|
555
|
+
if (!document.getElementById("worker_process_div_body")) {
|
556
|
+
let prefix_caption = "";
|
557
|
+
if (Util.is_mobile()) {
|
558
|
+
prefix_caption = "<caption id='worker_process_tip'> ";
|
559
|
+
} else {
|
560
|
+
prefix_caption = '<caption id="worker_process_tip" class="text-right">';
|
561
|
+
}
|
562
|
+
Util.init_table_skeleton({
|
563
|
+
"element_id": "worker_process_div",
|
564
|
+
"caption": prefix_caption + '</caption>',
|
565
|
+
"head_cols": [
|
566
|
+
{"name": "进程ID", "table_sort": 1},
|
567
|
+
{"name": "用户名", "table_sort": 1},
|
568
|
+
{"name": "状态", "table_sort": 1},
|
569
|
+
{"name": "启动命令"},
|
570
|
+
{"name": "创建时间", "class": "info", "table_sort": 1},
|
571
|
+
]
|
572
|
+
});
|
573
|
+
}
|
574
|
+
let html = [], process_num = 0;
|
575
|
+
j["process"].forEach(function (item) {
|
576
|
+
process_num++;
|
577
|
+
html.push("<tr>");
|
578
|
+
html.push("<td>", item["pid"], "</td>");
|
579
|
+
html.push("<td>", item["username"], "</td>");
|
580
|
+
html.push("<td>", item["status"], "</td>");
|
581
|
+
html.push("<td title='", item["cmdline"], "'>", Util.sub_str(item["cmdline"], 60), "</td>");
|
582
|
+
html.push("<td>", Util.seconds_to_format(item["create_time"]), "</td>");
|
583
|
+
html.push("</tr>");
|
584
|
+
});
|
585
|
+
Util.render_table_html("worker_process_div_body", html);
|
586
|
+
$("#worker_process_tip").html('共 <span class="label label-info">' + process_num + '</span> 进程,最后更新时间:' + Util.seconds_to_format(j["date"]));
|
587
|
+
}
|
588
|
+
Util.hide_tips();
|
589
|
+
});
|
590
|
+
},
|
591
|
+
|
507
592
|
handle_tool: function () {
|
508
593
|
let t_obj = $("#timestamp");
|
509
594
|
let t_val = t_obj.val();
|
package/util.js
CHANGED
@@ -3271,7 +3271,7 @@ const Util = {
|
|
3271
3271
|
pack_fund_rating: function (item) {
|
3272
3272
|
if (item["rating"]) {
|
3273
3273
|
let rating = item["rating"];
|
3274
|
-
if (rating.includes("买入") || rating.includes("增持")) {
|
3274
|
+
if (rating.includes("买入") || rating.includes("增持") || rating.includes("推荐")) {
|
3275
3275
|
return "<b class='text-danger'>" + rating + "</b>";
|
3276
3276
|
} else if (rating.includes("卖出") || rating.includes("减持")) {
|
3277
3277
|
return "<b class='text-success'>" + rating + "</b>";
|