datafolder 1.0.5 → 1.0.7
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.
- package/README.md +5 -0
- package/internal.md +119 -0
- package/package.json +2 -2
- package/sample.js +19 -19
- package/scripts/convertBinFiles.js +49 -0
- package/scripts/fastify.js +2 -2
- package/src/QyAcl.js +44 -44
- package/src/QyAclSaver_Worker.js +2 -2
- package/src/QyAclWriter.js +1 -1
- package/src/QyBatch.js +1 -3
- package/src/QyBinWriter.js +65 -66
- package/src/QyCD.js +72 -27
- package/src/QyCache.js +39 -33
- package/src/QyDB.js +4 -30
- package/src/QyDefaultOptions.js +2 -1
- package/src/QyFetch.js +4 -22
- package/src/QyFileLogger.js +2 -2
- package/src/QyKVData.js +168 -183
- package/src/QyKVDataCleaner_Worker.js +15 -14
- package/src/QyKVDataSaver_Worker.js +20 -20
- package/src/QyLogFileSaver.js +1 -1
- package/src/QyLogFileSaver_Worker.js +2 -2
- package/src/QyMod.js +7 -7
- package/src/QyOpRunner.js +19 -16
- package/src/QySnapshotCompactor_Worker.js +54 -52
- package/src/QySnapshotSaver_Worker.js +55 -53
- package/src/QySnapshots.js +157 -147
- package/src/QyUnionNode.js +2 -2
- package/src/rpc/evalCode.js +4 -4
- package/src/rpc/getFileContent.js +4 -4
- package/src/rpc/getSubItems.js +12 -12
- package/src/rpc/getTriggerFiles.js +1 -0
- package/src/rpc/queryFiles.js +1 -1
- package/src/soc_pokec.js +7 -7
- package/static/codemirror.bundle/editor.bundle.js +27906 -0
- package/static/datafolderui/QyStyledElement.js +6 -15
- package/static/datafolderui/QyUIFolderTree.js +130 -145
- package/static/datafolderui/QyUIFolderViewer.js +210 -0
- package/static/datafolderui/QyUIUtils.js +10 -5
- package/static/datafolderui/code-mirror.js +35 -0
- package/static/datafolderui/display-tree.js +21 -94
- package/static/datafolderui/explore-tree.js +66 -81
- package/static/datafolderui/folder-tree.js +71 -2
- package/static/datafolderui/index.css +7 -0
- package/static/datafolderui/index.html +1 -0
- package/static/datafolderui/json-view.js +7 -3
- package/static/datafolderui/main-page.js +42 -60
- package/static/datafolderui/query-editor.js +178 -198
- package/static/datafolderui/trigger-editor.js +30 -0
|
@@ -1,108 +1,35 @@
|
|
|
1
1
|
import {
|
|
2
|
-
h
|
|
2
|
+
h as t
|
|
3
3
|
} from "./hscrpt.js";
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./
|
|
6
|
+
QyUIFolderViewer as e
|
|
7
|
+
} from "./QyUIFolderViewer.js";
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
QyUIFolderTree
|
|
11
|
-
} from "./QyUIFolderTree.js";
|
|
12
|
-
|
|
13
|
-
customElements.define("display-tree", class extends QyUIFolderTree {
|
|
9
|
+
customElements.define("display-tree", class extends e {
|
|
14
10
|
constructor() {
|
|
15
11
|
super();
|
|
16
12
|
}
|
|
17
13
|
connectedCallback() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
this.rootFolder = e.folder({
|
|
21
|
-
name: "/",
|
|
22
|
-
open: !0
|
|
23
|
-
}), e.select(this.rootFolder);
|
|
24
|
-
}
|
|
25
|
-
showTree(e, t) {
|
|
26
|
-
this._resetTree(), this._resetPathTabs(), this.countSpan.innerText = t,
|
|
27
|
-
this.msgSpan.innerText = "Total " + t, this.rootFolder = this.folderTree.folder({
|
|
28
|
-
name: "/",
|
|
29
|
-
open: !0
|
|
30
|
-
}), this._constructFolderTree(this.rootFolder, e), this.folderTree.select(this.rootFolder),
|
|
31
|
-
this.tree = e;
|
|
32
|
-
}
|
|
33
|
-
_appendToolbar() {
|
|
34
|
-
this.toolbarDiv.append(this._createCountSpan());
|
|
35
|
-
}
|
|
36
|
-
_createCountSpan() {
|
|
37
|
-
return this.countSpan = h("span", {
|
|
14
|
+
var e;
|
|
15
|
+
super.connectedCallback(), (e = this).toolbarDiv.append((e => e.countSpan = t("span", {
|
|
38
16
|
classList: "btn btn-success ms-auto"
|
|
39
|
-
}, [ "0" ]);
|
|
40
|
-
}
|
|
41
|
-
_resetTree() {
|
|
42
|
-
this._deleteJsonTree();
|
|
43
|
-
var {
|
|
44
|
-
rootFolder: e,
|
|
45
|
-
countSpan: t,
|
|
46
|
-
msgSpan: r
|
|
47
|
-
} = this;
|
|
48
|
-
t.innerText = "0", r.innerText = "", e && (e.parentElement.remove(), Object.assign(this, {
|
|
49
|
-
rootFolder: void 0,
|
|
50
|
-
fileContentMap: {}
|
|
51
|
-
}));
|
|
17
|
+
}, [ "0" ]))(e));
|
|
52
18
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
countSpan,
|
|
56
|
-
queryEditor
|
|
57
|
-
} = this, {
|
|
58
|
-
queryText
|
|
59
|
-
} = queryEditor;
|
|
60
|
-
try {
|
|
61
|
-
eval("((x)=>x)(" + queryText + ")");
|
|
62
|
-
} catch (exception) {
|
|
63
|
-
return void (countSpan.innerText = exception.message);
|
|
64
|
-
}
|
|
65
|
-
let {
|
|
66
|
-
queryId
|
|
67
|
-
} = this, {
|
|
68
|
-
tree,
|
|
69
|
-
count
|
|
70
|
-
} = (++this.queryId, await rpc("queryFiles", queryText));
|
|
71
|
-
queryId + 1 == this.queryId && this.showTree(tree, count);
|
|
72
|
-
}
|
|
73
|
-
_constructFolderTree(e, t) {
|
|
19
|
+
showTree(e, t) {
|
|
20
|
+
(r = this).deleteJsonTree();
|
|
74
21
|
var {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
} =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
} =
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}, e);
|
|
88
|
-
this._constructFolderTree(l, n[a]);
|
|
89
|
-
}
|
|
90
|
-
t = t.length;
|
|
91
|
-
0 < t && (s.subdirCount = t);
|
|
92
|
-
}
|
|
93
|
-
if (i) {
|
|
94
|
-
var c, t = Object.keys(i).sort();
|
|
95
|
-
for (c of t) {
|
|
96
|
-
var {
|
|
97
|
-
fileContent: d,
|
|
98
|
-
fileContentKey: h
|
|
99
|
-
} = i[c];
|
|
100
|
-
o[r.file({
|
|
101
|
-
name: c
|
|
102
|
-
}, e).dataset.fileContentKey = h] = d;
|
|
103
|
-
}
|
|
104
|
-
t = t.length;
|
|
105
|
-
0 < t && (s.fileCount = t);
|
|
106
|
-
}
|
|
22
|
+
countSpan: r,
|
|
23
|
+
msgSpan: s
|
|
24
|
+
} = r, {
|
|
25
|
+
countSpan: r,
|
|
26
|
+
msgSpan: s,
|
|
27
|
+
folder_tree: o
|
|
28
|
+
} = (r.innerText = "0", s.innerText = "", this.resetPathTabs(), this), {
|
|
29
|
+
rootFolder: r,
|
|
30
|
+
folderTree: s
|
|
31
|
+
} = (r.innerText = t, s.innerText = "Total " + t, o.constructFolderTree(e),
|
|
32
|
+
o);
|
|
33
|
+
this.rootFolder = o.rootFolder, s.select(r);
|
|
107
34
|
}
|
|
108
35
|
});
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
-
rpc as
|
|
2
|
+
rpc as f
|
|
3
3
|
} from "./QyUIUtils.js";
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./
|
|
6
|
+
QyUIFolderViewer as e
|
|
7
|
+
} from "./QyUIFolderViewer.js";
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
|
-
h as
|
|
10
|
+
h as l
|
|
11
11
|
} from "./hscrpt.js";
|
|
12
12
|
|
|
13
|
-
let
|
|
13
|
+
let n = {
|
|
14
14
|
showHiddenFolder: !1
|
|
15
15
|
};
|
|
16
16
|
|
|
@@ -20,32 +20,25 @@ customElements.define("explore-tree", class extends e {
|
|
|
20
20
|
}
|
|
21
21
|
connectedCallback() {
|
|
22
22
|
super.connectedCallback();
|
|
23
|
-
var e =
|
|
24
|
-
this).folderTree, o = (t.on("fetch", async e => {
|
|
25
|
-
await this._loadSubItems(e), e.resolve(), e == this.selectedElement && this._showSelectedDir(e);
|
|
26
|
-
}), t.asyncFolder({
|
|
27
|
-
name: "/",
|
|
28
|
-
open: !0
|
|
29
|
-
}));
|
|
30
|
-
Object.assign(this, {
|
|
31
|
-
showHiddenFolder: e,
|
|
32
|
-
rootFolder: o
|
|
33
|
-
}), t.select(o);
|
|
34
|
-
}
|
|
35
|
-
_appendToolbar(e) {
|
|
36
|
-
this.toolbarDiv.append(this._createShowHiddenCheck(e));
|
|
37
|
-
}
|
|
38
|
-
_createShowHiddenCheck(e) {
|
|
39
|
-
return o("div", {
|
|
23
|
+
var e = n.showHiddenFolder, t = ((t = this).toolbarDiv.append(((n, e) => l("div", {
|
|
40
24
|
classList: "btn-group btn-group-sm ms-1",
|
|
41
25
|
role: "group"
|
|
42
|
-
}, [
|
|
26
|
+
}, [ l("input", {
|
|
43
27
|
type: "checkbox",
|
|
44
28
|
classList: "btn-check",
|
|
45
29
|
id: "showHiddenFolderCheck",
|
|
46
30
|
checked: e,
|
|
47
|
-
onchange: () =>
|
|
48
|
-
|
|
31
|
+
onchange: () => {
|
|
32
|
+
var e = n, {
|
|
33
|
+
showHiddenFolder: t,
|
|
34
|
+
rootHiddenFolder: o,
|
|
35
|
+
checkTooltip: l
|
|
36
|
+
} = e;
|
|
37
|
+
e.showHiddenFolder = !t, o && (o.parentElement.hidden = t), l.setContent({
|
|
38
|
+
".tooltip-inner": (t ? "Show" : "Hide") + " hidden folder"
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}), n.checkLabel = l("label", {
|
|
49
42
|
classList: "btn btn-outline-primary",
|
|
50
43
|
"data-bs-toggle": "tooltip",
|
|
51
44
|
"data-bs-placement": "top",
|
|
@@ -53,70 +46,62 @@ customElements.define("explore-tree", class extends e {
|
|
|
53
46
|
attrs: {
|
|
54
47
|
for: "showHiddenFolderCheck"
|
|
55
48
|
}
|
|
56
|
-
}, [
|
|
49
|
+
}, [ l("i", {
|
|
57
50
|
classList: "bi bi-window-plus"
|
|
58
|
-
}) ]) ])
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
}) ]) ]))(t, e)), this.checkTooltip = new bootstrap.Tooltip(this.checkLabel),
|
|
52
|
+
this).folderTree, o = (t.on("fetch", async e => {
|
|
53
|
+
var t = this, o = e, l = o.dataset, {
|
|
54
|
+
namePath: n,
|
|
55
|
+
folderTree: i,
|
|
56
|
+
rootFolder: s,
|
|
57
|
+
showHiddenFolder: d
|
|
58
|
+
} = t;
|
|
59
|
+
if (n = await (e => f("getSubItems", {
|
|
60
|
+
dirPath: e
|
|
61
|
+
}))(n)) {
|
|
62
|
+
var {
|
|
63
|
+
fullPathHash: n,
|
|
64
|
+
subdirList: r,
|
|
65
|
+
fileList: a
|
|
66
|
+
} = n;
|
|
67
|
+
n && (l.fullPathHash = n);
|
|
68
|
+
let e;
|
|
69
|
+
if (0 < r.length) {
|
|
70
|
+
for (var h of r) o == s && "%" == h ? e = !0 : i.asyncFolder({
|
|
71
|
+
name: h
|
|
72
|
+
}, o);
|
|
73
|
+
l.subdirCount = r.length;
|
|
74
|
+
}
|
|
75
|
+
if (e && ((n = i.asyncFolder({
|
|
76
|
+
name: "%"
|
|
77
|
+
}, o)).parentElement.hidden = !d, t.rootHiddenFolder = n), 0 < a.length) {
|
|
78
|
+
for (var c of a) i.file({
|
|
79
|
+
name: c
|
|
80
|
+
}, o);
|
|
81
|
+
l.fileCount = a.length;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
await 0, e.resolve(), e == this.selectedElement && this.showSelectedDir(e);
|
|
85
|
+
}), t.asyncFolder({
|
|
86
|
+
name: "/",
|
|
87
|
+
open: !0
|
|
88
|
+
}));
|
|
89
|
+
Object.assign(this, {
|
|
62
90
|
showHiddenFolder: e,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
} = this;
|
|
66
|
-
this.showHiddenFolder = !e, t && (t.parentElement.hidden = e), o.setContent({
|
|
67
|
-
".tooltip-inner": (e ? "Show" : "Hide") + " hidden folder"
|
|
68
|
-
});
|
|
91
|
+
rootFolder: o
|
|
92
|
+
}), t.select(o);
|
|
69
93
|
}
|
|
70
|
-
async
|
|
94
|
+
async showSelectedFile(e) {
|
|
71
95
|
var t, o = e.dataset, {
|
|
72
|
-
namePath:
|
|
96
|
+
namePath: l,
|
|
73
97
|
fileContentMap: n
|
|
74
98
|
} = this;
|
|
75
99
|
let i;
|
|
76
100
|
i = o.fileContentKey ? n[o.fileContentKey] : ({
|
|
77
|
-
fileContent:
|
|
101
|
+
fileContent: l,
|
|
78
102
|
fileContentKey: t
|
|
79
|
-
} = await
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
var o = t.dataset, {
|
|
83
|
-
namePath: s,
|
|
84
|
-
folderTree: n,
|
|
85
|
-
rootFolder: i,
|
|
86
|
-
showHiddenFolder: l
|
|
87
|
-
} = this, s = await this._getSubItems(s);
|
|
88
|
-
if (s) {
|
|
89
|
-
var {
|
|
90
|
-
fullPathHash: s,
|
|
91
|
-
subdirList: d,
|
|
92
|
-
fileList: r
|
|
93
|
-
} = s;
|
|
94
|
-
s && (o.fullPathHash = s);
|
|
95
|
-
let e;
|
|
96
|
-
if (0 < d.length) {
|
|
97
|
-
for (var a of d) t == i && "%" == a ? e = !0 : n.asyncFolder({
|
|
98
|
-
name: a
|
|
99
|
-
}, t);
|
|
100
|
-
o.subdirCount = d.length;
|
|
101
|
-
}
|
|
102
|
-
if (e && ((s = n.asyncFolder({
|
|
103
|
-
name: "%"
|
|
104
|
-
}, t)).parentElement.hidden = !l, this.rootHiddenFolder = s), 0 < r.length) {
|
|
105
|
-
for (var h of r) n.file({
|
|
106
|
-
name: h
|
|
107
|
-
}, t);
|
|
108
|
-
o.fileCount = r.length;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
_getSubItems(e) {
|
|
113
|
-
return t("getSubItems", {
|
|
114
|
-
dirPath: e
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
_getFileContent(e) {
|
|
118
|
-
return t("getFileContent", {
|
|
119
|
-
filePath: e
|
|
120
|
-
});
|
|
103
|
+
} = await f("getFileContent", {
|
|
104
|
+
filePath: l
|
|
105
|
+
}), n[o.fileContentKey = t] = l), e == this.selectedElement && this.showContent(i);
|
|
121
106
|
}
|
|
122
107
|
});
|
|
@@ -1,5 +1,74 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
QyStyledElement as e
|
|
3
3
|
} from "./QyStyledElement.js";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import {
|
|
6
|
+
h as t
|
|
7
|
+
} from "./hscrpt.js";
|
|
8
|
+
|
|
9
|
+
customElements.define("folder-tree", class extends e {
|
|
10
|
+
constructor() {
|
|
11
|
+
super([ "../tree.js/tree.css" ]);
|
|
12
|
+
}
|
|
13
|
+
compose() {
|
|
14
|
+
var e = t("div", {
|
|
15
|
+
style: {
|
|
16
|
+
overflow: "auto"
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
this.shadowRoot.append(e), Object.assign(this, {
|
|
20
|
+
folderTreeDiv: e,
|
|
21
|
+
folderTree: new Tree(e, {
|
|
22
|
+
navigate: !0
|
|
23
|
+
}),
|
|
24
|
+
fileContentMap: {}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
constructFolderTree(e) {
|
|
28
|
+
(t = (o = this).rootFolder) && (t.parentElement.remove(), Object.assign(o, {
|
|
29
|
+
rootFolder: void 0,
|
|
30
|
+
fileContentMap: {}
|
|
31
|
+
}));
|
|
32
|
+
var {
|
|
33
|
+
folderTree: t,
|
|
34
|
+
fileContentMap: o
|
|
35
|
+
} = this, r = this.rootFolder = t.folder({
|
|
36
|
+
name: "/",
|
|
37
|
+
open: !0
|
|
38
|
+
});
|
|
39
|
+
e && !function o(r, l, s, e) {
|
|
40
|
+
let n = s.dataset;
|
|
41
|
+
let {
|
|
42
|
+
fullPathHash: t,
|
|
43
|
+
subdirMap: a,
|
|
44
|
+
fileMap: f
|
|
45
|
+
} = e;
|
|
46
|
+
t && (n.fullPathHash = t);
|
|
47
|
+
if (a) {
|
|
48
|
+
let e = Object.keys(a).sort();
|
|
49
|
+
for (var i of e) {
|
|
50
|
+
let e = r.folder({
|
|
51
|
+
name: i
|
|
52
|
+
}, s);
|
|
53
|
+
o(r, l, e, a[i]);
|
|
54
|
+
}
|
|
55
|
+
let t = e.length;
|
|
56
|
+
0 < t && (n.subdirCount = t);
|
|
57
|
+
}
|
|
58
|
+
if (f) {
|
|
59
|
+
let e = Object.keys(f).sort();
|
|
60
|
+
for (var d of e) {
|
|
61
|
+
let {
|
|
62
|
+
fileContent: e,
|
|
63
|
+
fileContentKey: t
|
|
64
|
+
} = f[d], o = r.file({
|
|
65
|
+
name: d
|
|
66
|
+
}, s);
|
|
67
|
+
o.dataset.fileContentKey = t, l[t] = e;
|
|
68
|
+
}
|
|
69
|
+
let t = e.length;
|
|
70
|
+
0 < t && (n.fileCount = t);
|
|
71
|
+
}
|
|
72
|
+
}(t, o, r, e);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
<script src="../tree.js/tree.js"></script>
|
|
16
16
|
<script src="../json-view/dist/jsonview.js"></script>
|
|
17
17
|
<script src="../bootstrap-5.3.8-dist/js/bootstrap.bundle.js"></script>
|
|
18
|
+
<script src="../codemirror.bundle/editor.bundle.js"></script>
|
|
18
19
|
<script type="module" src="main-page.js"></script>
|
|
19
20
|
</body>
|
|
20
21
|
</html>
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
QyStyledElement as n
|
|
3
3
|
} from "./QyStyledElement.js";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
customElements.define("json-view", class extends n {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(`
|
|
6
8
|
.json-container {
|
|
7
9
|
font-family: "Open Sans";
|
|
8
10
|
font-size: 14px;
|
|
@@ -69,4 +71,6 @@ n("json-view", `
|
|
|
69
71
|
border-width: 5px 0 5px 6px;
|
|
70
72
|
border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) gray;
|
|
71
73
|
}
|
|
72
|
-
`);
|
|
74
|
+
`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
h as
|
|
2
|
+
h as d
|
|
3
3
|
} from "./hscrpt.js";
|
|
4
4
|
|
|
5
5
|
import "./explore-tree.js";
|
|
6
6
|
|
|
7
7
|
import "./query-editor.js";
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
import "./trigger-editor.js";
|
|
10
|
+
|
|
11
|
+
let l = {
|
|
10
12
|
brandName: "datafolder UI",
|
|
11
13
|
tabNames: [ "Explore", "Query", "RPC", "Triggers" ]
|
|
12
14
|
};
|
|
@@ -19,24 +21,47 @@ customElements.define("main-page", class extends HTMLElement {
|
|
|
19
21
|
var {
|
|
20
22
|
brandName: e,
|
|
21
23
|
tabNames: t
|
|
22
|
-
} =
|
|
23
|
-
this.append(
|
|
24
|
+
} = l;
|
|
25
|
+
this.append(d("nav", {
|
|
26
|
+
classList: "navbar bg-body-tertiary"
|
|
27
|
+
}, [ ((e, t, a) => d("div", {
|
|
28
|
+
classList: "container-fluid"
|
|
29
|
+
}, [ (e => d("a", {
|
|
30
|
+
classList: "navbar-brand"
|
|
31
|
+
}, [ e ]))(t), ((e, t) => d("ul", {
|
|
32
|
+
classList: "nav nav-pills me-auto mb-2 mb-lg-0"
|
|
33
|
+
}, e.tabButtons = t.map(e => d("button", {
|
|
34
|
+
classList: "nav-link",
|
|
35
|
+
id: `pills-${e}-tab`,
|
|
36
|
+
"data-bs-toggle": "pill",
|
|
37
|
+
"data-bs-target": "#pills-" + e,
|
|
38
|
+
type: "button",
|
|
39
|
+
role: "tab"
|
|
40
|
+
}, [ e ]))))(e, a) ]))(this, e, t) ]), d("div", {
|
|
41
|
+
classList: "tab-content",
|
|
42
|
+
id: "pills-tabContent"
|
|
43
|
+
}, this.tabDivs = t.map(e => d("div", {
|
|
44
|
+
classList: "tab-pane",
|
|
45
|
+
id: "pills-" + e,
|
|
46
|
+
role: "tabpanel"
|
|
47
|
+
}))));
|
|
24
48
|
let {
|
|
25
|
-
tabButtons: [ a,
|
|
26
|
-
tabDivs: [
|
|
49
|
+
tabButtons: [ a, s ],
|
|
50
|
+
tabDivs: [ i, n, , r ]
|
|
27
51
|
} = this;
|
|
28
52
|
bootstrap.Tab.getOrCreateInstance(a).show();
|
|
29
|
-
e =
|
|
30
|
-
|
|
31
|
-
let
|
|
32
|
-
n.appendChild(
|
|
53
|
+
e = d("explore-tree");
|
|
54
|
+
i.appendChild(e);
|
|
55
|
+
let o = d("query-editor");
|
|
56
|
+
n.appendChild(o);
|
|
57
|
+
t = d("trigger-editor"), r.append(t), Object.assign(this, {
|
|
33
58
|
exploreTree: e,
|
|
34
|
-
queryEditor:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
document.addEventListener("DOMContentLoaded",
|
|
38
|
-
|
|
39
|
-
|
|
59
|
+
queryEditor: o,
|
|
60
|
+
triggerEditor: t
|
|
61
|
+
}), o.addEventListener("run", () => s.click()), e = () => this.onSizeChange();
|
|
62
|
+
document.addEventListener("DOMContentLoaded", e), window.addEventListener("resize", e),
|
|
63
|
+
s.addEventListener("shown.bs.tab", () => {
|
|
64
|
+
o.onSizeChange();
|
|
40
65
|
});
|
|
41
66
|
}
|
|
42
67
|
onSizeChange() {
|
|
@@ -46,50 +71,7 @@ customElements.define("main-page", class extends HTMLElement {
|
|
|
46
71
|
} = this;
|
|
47
72
|
e.onSizeChange(), t.onSizeChange();
|
|
48
73
|
}
|
|
49
|
-
|
|
50
|
-
return o("nav", {
|
|
51
|
-
classList: "navbar bg-body-tertiary"
|
|
52
|
-
}, [ this._createNavBar(e, t) ]);
|
|
53
|
-
}
|
|
54
|
-
_createNavBar(e, t) {
|
|
55
|
-
return o("div", {
|
|
56
|
-
classList: "container-fluid"
|
|
57
|
-
}, [ this._createBrand(e), this._createTabButtons(t) ]);
|
|
58
|
-
}
|
|
59
|
-
_createTabButtons(e) {
|
|
60
|
-
return o("ul", {
|
|
61
|
-
classList: "nav nav-pills me-auto mb-2 mb-lg-0"
|
|
62
|
-
}, this.tabButtons = e.map(e => this._createTabButton(e)));
|
|
63
|
-
}
|
|
64
|
-
_createTabDivs(e) {
|
|
65
|
-
return o("div", {
|
|
66
|
-
classList: "tab-content",
|
|
67
|
-
id: "pills-tabContent"
|
|
68
|
-
}, this.tabDivs = e.map(e => this._createTabDiv(e)));
|
|
69
|
-
}
|
|
70
|
-
_createBrand(e) {
|
|
71
|
-
return o("a", {
|
|
72
|
-
classList: "navbar-brand"
|
|
73
|
-
}, [ e ]);
|
|
74
|
-
}
|
|
75
|
-
_createTabDiv(e) {
|
|
76
|
-
return o("div", {
|
|
77
|
-
classList: "tab-pane",
|
|
78
|
-
id: "pills-" + e,
|
|
79
|
-
role: "tabpanel"
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
_createTabButton(e) {
|
|
83
|
-
return o("button", {
|
|
84
|
-
classList: "nav-link",
|
|
85
|
-
id: `pills-${e}-tab`,
|
|
86
|
-
"data-bs-toggle": "pill",
|
|
87
|
-
"data-bs-target": "#pills-" + e,
|
|
88
|
-
type: "button",
|
|
89
|
-
role: "tab"
|
|
90
|
-
}, [ e ]);
|
|
91
|
-
}
|
|
92
|
-
}), document.body.append(o("main-page"));
|
|
74
|
+
}), document.body.append(d("main-page"));
|
|
93
75
|
|
|
94
76
|
import {
|
|
95
77
|
rpc as e
|