]> git.mxchange.org Git - friendica.git/blob - view/theme/frio/js/module/admin/logs/view.js
fix(frio): "Data" move header in template w/ l10n
[friendica.git] / view / theme / frio / js / module / admin / logs / view.js
1 $(function(){
2
3         /* column filter */
4         $("a[data-filter]").on("click", function(ev) {
5                 var filter = this.dataset.filter;
6                 var value = this.dataset.filterValue;
7                 var re = RegExp(filter+"=[a-z]*");
8                 var newhref = location.href;
9                 if (!location.href.indexOf("?") < 0) {
10                         newhref = location.href + "?" + filter + "=" + value;
11                 } else if (location.href.match(re)) {
12                         newhref = location.href.replace(RegExp(filter+"=[a-z]*"), filter+"="+value);
13                 } else {
14                         newhref = location.href + "&" + filter + "=" + value;
15                 }
16                 location.href = newhref;
17                 return false;
18         });
19
20         /* log details dialog */
21         $(".log-event").on("click", function(ev) {
22                 show_details_for_element(ev.currentTarget);
23         });
24         $(".log-event").on("keydown", function(ev) {
25                 if (ev.keyCode == 13 || ev.keyCode == 32) {
26                         show_details_for_element(ev.currentTarget);
27                 }
28         });
29
30
31         $("[data-previous").on("click", function(ev){ 
32                 var currentid = document.getElementById("logdetail").dataset.rowId;
33                 var $elm = $("#" + currentid).prev();
34                 if ($elm.length == 0) return;
35                 show_details_for_element($elm[0]);
36         });
37
38         $("[data-next").on("click", function(ev){ 
39                 var currentid = document.getElementById("logdetail").dataset.rowId;
40                 var $elm = $("#" + currentid).next();
41                 if ($elm.length == 0) return;
42                 show_details_for_element($elm[0]);
43         });
44
45
46         const $modal = $("#logdetail");
47
48         $modal.on("hidden.bs.modal", function(ev){
49                 document
50                         .querySelectorAll('[aria-expanded="true"]')
51                         .forEach(elm => elm.setAttribute("aria-expanded", false))
52         });
53
54         function show_details_for_element(element) {
55                 $modal[0].dataset.rowId = element.id;
56
57                 var tr = $modal.find(".main-data tbody tr")[0];
58                 tr.innerHTML = element.innerHTML;
59                 
60                 var data = JSON.parse(element.dataset.source);
61                 $modal.find(".source-data td").each(function(i,elm){
62                         var k = elm.dataset.value;
63                         elm.innerText = data[k];
64                 });
65
66                 var elm = $modal.find(".event-data")[0];
67                 const event_data_header = $modal.find(".event-data-header")[0];
68
69                 // Cleanup event data
70                 event_data_header.hidden = true;
71                 elm.innerHTML = "";
72
73                 // Fill out event data
74                 var data = element.dataset.data;
75                 if (data !== "") {
76                         event_data_header.hidden = false;
77                         data = JSON.parse(data);
78                         elm.innerHTML += recursive_details("", data);
79                 }
80
81                 $("[data-previous").prop("disabled", $(element).prev().length == 0);
82                 $("[data-next").prop("disabled", $(element).next().length == 0);
83                 
84                 $modal.modal({})
85                 element.setAttribute("aria-expanded", true);
86         }
87
88         function recursive_details(s, data, lev=0) {
89                 for(var k in data) {
90                         if (data.hasOwnProperty(k)) {
91                                 var v = data[k];
92                                 var open = lev > 1 ? "" : "open";
93                                 s += "<details " + open + "><summary>" + k + "</summary>";
94                                 if (typeof v === 'object' && v !== null) {
95                                         s = recursive_details(s, v, lev+1);
96                                 } else {
97                                         s +=  $("<pre>").text(v)[0].outerHTML;
98                                 }
99                                 s += "</details>";
100                         }
101                 }
102                 return s;
103         }
104 });