sqlui 0.1.16 → 0.1.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.version +1 -1
- data/app/environment.rb +4 -1
- data/app/server.rb +22 -18
- data/app/sqlui.rb +37 -38
- data/app/views/databases.erb +10 -9
- data/bin/sqlui +1 -0
- data/client/resources/sqlui.js +383 -371
- metadata +22 -7
data/client/resources/sqlui.js
CHANGED
@@ -5198,57 +5198,31 @@ var sqlui = (function (exports) {
|
|
5198
5198
|
parent.length += view.length;
|
5199
5199
|
}
|
5200
5200
|
function coordsInChildren(view, pos, side) {
|
5201
|
-
|
5202
|
-
return fallbackRect(view);
|
5203
|
-
return (side <= 0 ? coordsInChildrenBefore : coordsInChildrenAfter)(view, pos);
|
5204
|
-
}
|
5205
|
-
function coordsInChildrenBefore(view, pos) {
|
5206
|
-
// Find the last leaf in the tree that touches pos and doesn't have getSide() > 0
|
5207
|
-
let found = null, foundPos = -1;
|
5201
|
+
let before = null, beforePos = -1, after = null, afterPos = -1;
|
5208
5202
|
function scan(view, pos) {
|
5209
5203
|
for (let i = 0, off = 0; i < view.children.length && off <= pos; i++) {
|
5210
5204
|
let child = view.children[i], end = off + child.length;
|
5211
5205
|
if (end >= pos) {
|
5212
5206
|
if (child.children.length) {
|
5213
|
-
|
5214
|
-
return true;
|
5215
|
-
}
|
5216
|
-
else if (end >= pos) {
|
5217
|
-
if (end == pos && child.getSide() > 0)
|
5218
|
-
return true;
|
5219
|
-
found = child;
|
5220
|
-
foundPos = pos - off;
|
5207
|
+
scan(child, pos - off);
|
5221
5208
|
}
|
5222
|
-
|
5223
|
-
|
5224
|
-
|
5225
|
-
}
|
5226
|
-
scan(view, pos);
|
5227
|
-
return found ? found.coordsAt(Math.max(0, foundPos), -1) : coordsInChildrenAfter(view, pos);
|
5228
|
-
}
|
5229
|
-
function coordsInChildrenAfter(view, pos) {
|
5230
|
-
// Find the first leaf in the tree that touches pos and doesn't have getSide() < 0
|
5231
|
-
let found = null, foundPos = -1;
|
5232
|
-
function scan(view, pos) {
|
5233
|
-
for (let i = view.children.length - 1, off = view.length; i >= 0 && off >= pos; i--) {
|
5234
|
-
let child = view.children[i];
|
5235
|
-
off -= child.length;
|
5236
|
-
if (off <= pos) {
|
5237
|
-
if (child.children.length) {
|
5238
|
-
if (scan(child, pos - off))
|
5239
|
-
return true;
|
5209
|
+
else if (!after && (end > pos || off == end && child.getSide() > 0)) {
|
5210
|
+
after = child;
|
5211
|
+
afterPos = pos - off;
|
5240
5212
|
}
|
5241
|
-
else if (off
|
5242
|
-
|
5243
|
-
|
5244
|
-
found = child;
|
5245
|
-
foundPos = pos - off;
|
5213
|
+
else if (off < pos || (off == end && child.getSide() < 0)) {
|
5214
|
+
before = child;
|
5215
|
+
beforePos = pos - off;
|
5246
5216
|
}
|
5247
5217
|
}
|
5218
|
+
off = end;
|
5248
5219
|
}
|
5249
5220
|
}
|
5250
5221
|
scan(view, pos);
|
5251
|
-
|
5222
|
+
let target = (side < 0 ? before : after) || before || after;
|
5223
|
+
if (target)
|
5224
|
+
return target.coordsAt(Math.max(0, target == before ? beforePos : afterPos), side);
|
5225
|
+
return fallbackRect(view);
|
5252
5226
|
}
|
5253
5227
|
function fallbackRect(view) {
|
5254
5228
|
let last = view.dom.lastChild;
|
@@ -9713,6 +9687,15 @@ var sqlui = (function (exports) {
|
|
9713
9687
|
newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1);
|
9714
9688
|
change = { from: sel.from, to: sel.to, insert: Text.of([" "]) };
|
9715
9689
|
}
|
9690
|
+
else if (browser.chrome && change && change.from == change.to && change.from == sel.head &&
|
9691
|
+
change.insert.toString() == "\n " && view.lineWrapping) {
|
9692
|
+
// In Chrome, if you insert a space at the start of a wrapped
|
9693
|
+
// line, it will actually insert a newline and a space, causing a
|
9694
|
+
// bogus new line to be created in CodeMirror (#968)
|
9695
|
+
if (newSel)
|
9696
|
+
newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1);
|
9697
|
+
change = { from: sel.from, to: sel.to, insert: Text.of([" "]) };
|
9698
|
+
}
|
9716
9699
|
if (change) {
|
9717
9700
|
let startState = view.state;
|
9718
9701
|
if (browser.ios && view.inputState.flushIOSKey(view))
|
@@ -10637,17 +10620,19 @@ var sqlui = (function (exports) {
|
|
10637
10620
|
logException(this.state, e);
|
10638
10621
|
}
|
10639
10622
|
}
|
10640
|
-
if (this.viewState.
|
10641
|
-
|
10642
|
-
|
10643
|
-
|
10644
|
-
}
|
10645
|
-
else {
|
10646
|
-
let diff = this.viewState.lineBlockAt(refBlock.from).top - refBlock.top;
|
10647
|
-
if (diff > 1 || diff < -1) {
|
10648
|
-
this.scrollDOM.scrollTop += diff;
|
10623
|
+
if (this.viewState.editorHeight) {
|
10624
|
+
if (this.viewState.scrollTarget) {
|
10625
|
+
this.docView.scrollIntoView(this.viewState.scrollTarget);
|
10626
|
+
this.viewState.scrollTarget = null;
|
10649
10627
|
scrolled = true;
|
10650
10628
|
}
|
10629
|
+
else {
|
10630
|
+
let diff = this.viewState.lineBlockAt(refBlock.from).top - refBlock.top;
|
10631
|
+
if (diff > 1 || diff < -1) {
|
10632
|
+
this.scrollDOM.scrollTop += diff;
|
10633
|
+
scrolled = true;
|
10634
|
+
}
|
10635
|
+
}
|
10651
10636
|
}
|
10652
10637
|
if (redrawn)
|
10653
10638
|
this.docView.updateSelection(true);
|
@@ -12129,7 +12114,10 @@ var sqlui = (function (exports) {
|
|
12129
12114
|
for (let i = startLine; i <= endLine; i++) {
|
12130
12115
|
let line = state.doc.line(i);
|
12131
12116
|
let start = findColumn(line.text, startCol, state.tabSize, true);
|
12132
|
-
if (start
|
12117
|
+
if (start < 0) {
|
12118
|
+
ranges.push(EditorSelection.cursor(line.to));
|
12119
|
+
}
|
12120
|
+
else {
|
12133
12121
|
let end = findColumn(line.text, endCol, state.tabSize);
|
12134
12122
|
ranges.push(EditorSelection.range(line.from + start, line.from + end));
|
12135
12123
|
}
|
@@ -12241,6 +12229,7 @@ var sqlui = (function (exports) {
|
|
12241
12229
|
this.tooltipViews = this.tooltips.map(createTooltipView);
|
12242
12230
|
}
|
12243
12231
|
update(update) {
|
12232
|
+
var _a;
|
12244
12233
|
let input = update.state.facet(this.facet);
|
12245
12234
|
let tooltips = input.filter(x => x);
|
12246
12235
|
if (input === this.input) {
|
@@ -12269,8 +12258,10 @@ var sqlui = (function (exports) {
|
|
12269
12258
|
}
|
12270
12259
|
}
|
12271
12260
|
for (let t of this.tooltipViews)
|
12272
|
-
if (tooltipViews.indexOf(t) < 0)
|
12261
|
+
if (tooltipViews.indexOf(t) < 0) {
|
12273
12262
|
t.dom.remove();
|
12263
|
+
(_a = t.destroy) === null || _a === void 0 ? void 0 : _a.call(t);
|
12264
|
+
}
|
12274
12265
|
this.input = input;
|
12275
12266
|
this.tooltips = tooltips;
|
12276
12267
|
this.tooltipViews = tooltipViews;
|
@@ -12383,11 +12374,13 @@ var sqlui = (function (exports) {
|
|
12383
12374
|
return tooltipView;
|
12384
12375
|
}
|
12385
12376
|
destroy() {
|
12386
|
-
var _a;
|
12377
|
+
var _a, _b;
|
12387
12378
|
this.view.win.removeEventListener("resize", this.measureSoon);
|
12388
|
-
for (let
|
12389
|
-
dom.remove();
|
12390
|
-
|
12379
|
+
for (let tooltipView of this.manager.tooltipViews) {
|
12380
|
+
tooltipView.dom.remove();
|
12381
|
+
(_a = tooltipView.destroy) === null || _a === void 0 ? void 0 : _a.call(tooltipView);
|
12382
|
+
}
|
12383
|
+
(_b = this.intersectionObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
|
12391
12384
|
clearTimeout(this.measureTimeout);
|
12392
12385
|
}
|
12393
12386
|
readMeasure() {
|
@@ -14811,23 +14804,25 @@ var sqlui = (function (exports) {
|
|
14811
14804
|
let set = [], tag = new Tag(set, base, mods);
|
14812
14805
|
for (let m of mods)
|
14813
14806
|
m.instances.push(tag);
|
14814
|
-
let configs =
|
14807
|
+
let configs = powerSet(mods);
|
14815
14808
|
for (let parent of base.set)
|
14816
|
-
|
14817
|
-
|
14809
|
+
if (!parent.modified.length)
|
14810
|
+
for (let config of configs)
|
14811
|
+
set.push(Modifier.get(parent, config));
|
14818
14812
|
return tag;
|
14819
14813
|
}
|
14820
14814
|
}
|
14821
14815
|
function sameArray(a, b) {
|
14822
14816
|
return a.length == b.length && a.every((x, i) => x == b[i]);
|
14823
14817
|
}
|
14824
|
-
function
|
14825
|
-
let
|
14818
|
+
function powerSet(array) {
|
14819
|
+
let sets = [[]];
|
14826
14820
|
for (let i = 0; i < array.length; i++) {
|
14827
|
-
for (let
|
14828
|
-
|
14821
|
+
for (let j = 0, e = sets.length; j < e; j++) {
|
14822
|
+
sets.push(sets[j].concat(array[i]));
|
14823
|
+
}
|
14829
14824
|
}
|
14830
|
-
return
|
14825
|
+
return sets.sort((a, b) => b.length - a.length);
|
14831
14826
|
}
|
14832
14827
|
/// This function is used to add a set of tags to a language syntax
|
14833
14828
|
/// via [`NodeSet.extend`](#common.NodeSet.extend) or
|
@@ -18630,7 +18625,7 @@ var sqlui = (function (exports) {
|
|
18630
18625
|
if (match) {
|
18631
18626
|
let from = this.curLineStart + match.index, to = from + match[0].length;
|
18632
18627
|
this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));
|
18633
|
-
if (from == this.curLine.length)
|
18628
|
+
if (from == this.curLineStart + this.curLine.length)
|
18634
18629
|
this.nextLine();
|
18635
18630
|
if ((from < to || from > this.value.to) && (!this.test || this.test(from, to, match))) {
|
18636
18631
|
this.value = { from, to, match };
|
@@ -19015,10 +19010,17 @@ var sqlui = (function (exports) {
|
|
19015
19010
|
this.regexp = !!config.regexp;
|
19016
19011
|
this.replace = config.replace || "";
|
19017
19012
|
this.valid = !!this.search && (!this.regexp || validRegExp(this.search));
|
19018
|
-
this.unquoted = this.
|
19013
|
+
this.unquoted = this.unquote(this.search);
|
19019
19014
|
this.wholeWord = !!config.wholeWord;
|
19020
19015
|
}
|
19021
19016
|
/**
|
19017
|
+
@internal
|
19018
|
+
*/
|
19019
|
+
unquote(text) {
|
19020
|
+
return this.literal ? text :
|
19021
|
+
text.replace(/\\([nrt\\])/g, (_, ch) => ch == "n" ? "\n" : ch == "r" ? "\r" : ch == "t" ? "\t" : "\\");
|
19022
|
+
}
|
19023
|
+
/**
|
19022
19024
|
Compare this query to another query.
|
19023
19025
|
*/
|
19024
19026
|
eq(other) {
|
@@ -19092,7 +19094,7 @@ var sqlui = (function (exports) {
|
|
19092
19094
|
return this.prevMatchInRange(state, 0, curFrom) ||
|
19093
19095
|
this.prevMatchInRange(state, curTo, state.doc.length);
|
19094
19096
|
}
|
19095
|
-
getReplacement(_result) { return this.spec.replace; }
|
19097
|
+
getReplacement(_result) { return this.spec.unquote(this.spec.replace); }
|
19096
19098
|
matchAll(state, limit) {
|
19097
19099
|
let cursor = stringCursor(this.spec, state, 0, state.doc.length), ranges = [];
|
19098
19100
|
while (!cursor.next().done) {
|
@@ -19151,10 +19153,10 @@ var sqlui = (function (exports) {
|
|
19151
19153
|
this.prevMatchInRange(state, curTo, state.doc.length);
|
19152
19154
|
}
|
19153
19155
|
getReplacement(result) {
|
19154
|
-
return this.spec.replace.replace(/\$([$&\d+])/g, (m, i) => i == "$" ? "$"
|
19156
|
+
return this.spec.unquote(this.spec.replace.replace(/\$([$&\d+])/g, (m, i) => i == "$" ? "$"
|
19155
19157
|
: i == "&" ? result.match[0]
|
19156
19158
|
: i != "0" && +i < result.match.length ? result.match[i]
|
19157
|
-
: m);
|
19159
|
+
: m));
|
19158
19160
|
}
|
19159
19161
|
matchAll(state, limit) {
|
19160
19162
|
let cursor = regexpCursor(this.spec, state, 0, state.doc.length), ranges = [];
|
@@ -19446,6 +19448,7 @@ var sqlui = (function (exports) {
|
|
19446
19448
|
"aria-label": phrase(view, "Find"),
|
19447
19449
|
class: "cm-textfield",
|
19448
19450
|
name: "search",
|
19451
|
+
form: "",
|
19449
19452
|
"main-field": "true",
|
19450
19453
|
onchange: this.commit,
|
19451
19454
|
onkeyup: this.commit
|
@@ -19456,24 +19459,28 @@ var sqlui = (function (exports) {
|
|
19456
19459
|
"aria-label": phrase(view, "Replace"),
|
19457
19460
|
class: "cm-textfield",
|
19458
19461
|
name: "replace",
|
19462
|
+
form: "",
|
19459
19463
|
onchange: this.commit,
|
19460
19464
|
onkeyup: this.commit
|
19461
19465
|
});
|
19462
19466
|
this.caseField = crelt("input", {
|
19463
19467
|
type: "checkbox",
|
19464
19468
|
name: "case",
|
19469
|
+
form: "",
|
19465
19470
|
checked: query.caseSensitive,
|
19466
19471
|
onchange: this.commit
|
19467
19472
|
});
|
19468
19473
|
this.reField = crelt("input", {
|
19469
19474
|
type: "checkbox",
|
19470
19475
|
name: "re",
|
19476
|
+
form: "",
|
19471
19477
|
checked: query.regexp,
|
19472
19478
|
onchange: this.commit
|
19473
19479
|
});
|
19474
19480
|
this.wordField = crelt("input", {
|
19475
19481
|
type: "checkbox",
|
19476
19482
|
name: "word",
|
19483
|
+
form: "",
|
19477
19484
|
checked: query.wholeWord,
|
19478
19485
|
onchange: this.commit
|
19479
19486
|
});
|
@@ -23266,10 +23273,10 @@ var sqlui = (function (exports) {
|
|
23266
23273
|
Builtin = 24;
|
23267
23274
|
|
23268
23275
|
function isAlpha(ch) {
|
23269
|
-
return ch >= 65 /* A */ && ch <= 90 /* Z */ || ch >= 97 /* a */ && ch <= 122 /* z */ || ch >= 48 /* _0 */ && ch <= 57 /* _9 */;
|
23276
|
+
return ch >= 65 /* Ch.A */ && ch <= 90 /* Ch.Z */ || ch >= 97 /* Ch.a */ && ch <= 122 /* Ch.z */ || ch >= 48 /* Ch._0 */ && ch <= 57 /* Ch._9 */;
|
23270
23277
|
}
|
23271
23278
|
function isHexDigit(ch) {
|
23272
|
-
return ch >= 48 /* _0 */ && ch <= 57 /* _9 */ || ch >= 97 /* a */ && ch <= 102 /* f */ || ch >= 65 /* A */ && ch <= 70 /* F */;
|
23279
|
+
return ch >= 48 /* Ch._0 */ && ch <= 57 /* Ch._9 */ || ch >= 97 /* Ch.a */ && ch <= 102 /* Ch.f */ || ch >= 65 /* Ch.A */ && ch <= 70 /* Ch.F */;
|
23273
23280
|
}
|
23274
23281
|
function readLiteral(input, endQuote, backslashEscapes) {
|
23275
23282
|
for (let escaped = false;;) {
|
@@ -23279,7 +23286,7 @@ var sqlui = (function (exports) {
|
|
23279
23286
|
input.advance();
|
23280
23287
|
return;
|
23281
23288
|
}
|
23282
|
-
escaped = backslashEscapes && !escaped && input.next == 92 /* Backslash */;
|
23289
|
+
escaped = backslashEscapes && !escaped && input.next == 92 /* Ch.Backslash */;
|
23283
23290
|
input.advance();
|
23284
23291
|
}
|
23285
23292
|
}
|
@@ -23287,7 +23294,7 @@ var sqlui = (function (exports) {
|
|
23287
23294
|
for (;;) {
|
23288
23295
|
if (input.next < 0 || input.peek(1) < 0)
|
23289
23296
|
return;
|
23290
|
-
if (input.next == 36 /* Dollar */ && input.peek(1) == 36 /* Dollar */) {
|
23297
|
+
if (input.next == 36 /* Ch.Dollar */ && input.peek(1) == 36 /* Ch.Dollar */) {
|
23291
23298
|
input.advance(2);
|
23292
23299
|
return;
|
23293
23300
|
}
|
@@ -23296,7 +23303,7 @@ var sqlui = (function (exports) {
|
|
23296
23303
|
}
|
23297
23304
|
function readWord(input, result) {
|
23298
23305
|
for (;;) {
|
23299
|
-
if (input.next != 95 /* Underscore */ && !isAlpha(input.next))
|
23306
|
+
if (input.next != 95 /* Ch.Underscore */ && !isAlpha(input.next))
|
23300
23307
|
break;
|
23301
23308
|
if (result != null)
|
23302
23309
|
result += String.fromCharCode(input.next);
|
@@ -23305,7 +23312,7 @@ var sqlui = (function (exports) {
|
|
23305
23312
|
return result;
|
23306
23313
|
}
|
23307
23314
|
function readWordOrQuoted(input) {
|
23308
|
-
if (input.next == 39 /* SingleQuote */ || input.next == 34 /* DoubleQuote */ || input.next == 96 /* Backtick */) {
|
23315
|
+
if (input.next == 39 /* Ch.SingleQuote */ || input.next == 34 /* Ch.DoubleQuote */ || input.next == 96 /* Ch.Backtick */) {
|
23309
23316
|
let quote = input.next;
|
23310
23317
|
input.advance();
|
23311
23318
|
readLiteral(input, quote, false);
|
@@ -23315,33 +23322,33 @@ var sqlui = (function (exports) {
|
|
23315
23322
|
}
|
23316
23323
|
}
|
23317
23324
|
function readBits(input, endQuote) {
|
23318
|
-
while (input.next == 48 /* _0 */ || input.next == 49 /* _1 */)
|
23325
|
+
while (input.next == 48 /* Ch._0 */ || input.next == 49 /* Ch._1 */)
|
23319
23326
|
input.advance();
|
23320
23327
|
if (endQuote && input.next == endQuote)
|
23321
23328
|
input.advance();
|
23322
23329
|
}
|
23323
23330
|
function readNumber(input, sawDot) {
|
23324
23331
|
for (;;) {
|
23325
|
-
if (input.next == 46 /* Dot */) {
|
23332
|
+
if (input.next == 46 /* Ch.Dot */) {
|
23326
23333
|
if (sawDot)
|
23327
23334
|
break;
|
23328
23335
|
sawDot = true;
|
23329
23336
|
}
|
23330
|
-
else if (input.next < 48 /* _0 */ || input.next > 57 /* _9 */) {
|
23337
|
+
else if (input.next < 48 /* Ch._0 */ || input.next > 57 /* Ch._9 */) {
|
23331
23338
|
break;
|
23332
23339
|
}
|
23333
23340
|
input.advance();
|
23334
23341
|
}
|
23335
|
-
if (input.next == 69 /* E */ || input.next == 101 /* e */) {
|
23342
|
+
if (input.next == 69 /* Ch.E */ || input.next == 101 /* Ch.e */) {
|
23336
23343
|
input.advance();
|
23337
|
-
if (input.next == 43 /* Plus */ || input.next == 45 /* Dash */)
|
23344
|
+
if (input.next == 43 /* Ch.Plus */ || input.next == 45 /* Ch.Dash */)
|
23338
23345
|
input.advance();
|
23339
|
-
while (input.next >= 48 /* _0 */ && input.next <= 57 /* _9 */)
|
23346
|
+
while (input.next >= 48 /* Ch._0 */ && input.next <= 57 /* Ch._9 */)
|
23340
23347
|
input.advance();
|
23341
23348
|
}
|
23342
23349
|
}
|
23343
23350
|
function eol(input) {
|
23344
|
-
while (!(input.next < 0 || input.next == 10 /* Newline */))
|
23351
|
+
while (!(input.next < 0 || input.next == 10 /* Ch.Newline */))
|
23345
23352
|
input.advance();
|
23346
23353
|
}
|
23347
23354
|
function inString(ch, str) {
|
@@ -23401,31 +23408,31 @@ var sqlui = (function (exports) {
|
|
23401
23408
|
input.advance();
|
23402
23409
|
input.acceptToken(whitespace);
|
23403
23410
|
}
|
23404
|
-
else if (next == 36 /* Dollar */ && input.next == 36 /* Dollar */ && d.doubleDollarStrings) {
|
23411
|
+
else if (next == 36 /* Ch.Dollar */ && input.next == 36 /* Ch.Dollar */ && d.doubleDollarStrings) {
|
23405
23412
|
readDoubleDollarLiteral(input);
|
23406
23413
|
input.acceptToken(String$1);
|
23407
23414
|
}
|
23408
|
-
else if (next == 39 /* SingleQuote */ || next == 34 /* DoubleQuote */ && d.doubleQuotedStrings) {
|
23415
|
+
else if (next == 39 /* Ch.SingleQuote */ || next == 34 /* Ch.DoubleQuote */ && d.doubleQuotedStrings) {
|
23409
23416
|
readLiteral(input, next, d.backslashEscapes);
|
23410
23417
|
input.acceptToken(String$1);
|
23411
23418
|
}
|
23412
|
-
else if (next == 35 /* Hash */ && d.hashComments ||
|
23413
|
-
next == 47 /* Slash */ && input.next == 47 /* Slash */ && d.slashComments) {
|
23419
|
+
else if (next == 35 /* Ch.Hash */ && d.hashComments ||
|
23420
|
+
next == 47 /* Ch.Slash */ && input.next == 47 /* Ch.Slash */ && d.slashComments) {
|
23414
23421
|
eol(input);
|
23415
23422
|
input.acceptToken(LineComment);
|
23416
23423
|
}
|
23417
|
-
else if (next == 45 /* Dash */ && input.next == 45 /* Dash */ &&
|
23418
|
-
(!d.spaceAfterDashes || input.peek(
|
23424
|
+
else if (next == 45 /* Ch.Dash */ && input.next == 45 /* Ch.Dash */ &&
|
23425
|
+
(!d.spaceAfterDashes || input.peek(1) == 32 /* Ch.Space */)) {
|
23419
23426
|
eol(input);
|
23420
23427
|
input.acceptToken(LineComment);
|
23421
23428
|
}
|
23422
|
-
else if (next == 47 /* Slash */ && input.next == 42 /* Star */) {
|
23429
|
+
else if (next == 47 /* Ch.Slash */ && input.next == 42 /* Ch.Star */) {
|
23423
23430
|
input.advance();
|
23424
23431
|
for (let prev = -1, depth = 1;;) {
|
23425
23432
|
if (input.next < 0)
|
23426
23433
|
break;
|
23427
23434
|
input.advance();
|
23428
|
-
if (prev == 42 /* Star */ && input.next == 47 /* Slash */) {
|
23435
|
+
if (prev == 42 /* Ch.Star */ && input.next == 47 /* Ch.Slash */) {
|
23429
23436
|
depth--;
|
23430
23437
|
if (!depth) {
|
23431
23438
|
input.advance();
|
@@ -23433,7 +23440,7 @@ var sqlui = (function (exports) {
|
|
23433
23440
|
}
|
23434
23441
|
prev = -1;
|
23435
23442
|
}
|
23436
|
-
else if (prev == 47 /* Slash */ && input.next == 42 /* Star */) {
|
23443
|
+
else if (prev == 47 /* Ch.Slash */ && input.next == 42 /* Ch.Star */) {
|
23437
23444
|
depth++;
|
23438
23445
|
prev = -1;
|
23439
23446
|
}
|
@@ -23443,21 +23450,21 @@ var sqlui = (function (exports) {
|
|
23443
23450
|
}
|
23444
23451
|
input.acceptToken(BlockComment);
|
23445
23452
|
}
|
23446
|
-
else if ((next == 101 /* e */ || next == 69 /* E */) && input.next == 39 /* SingleQuote */) {
|
23453
|
+
else if ((next == 101 /* Ch.e */ || next == 69 /* Ch.E */) && input.next == 39 /* Ch.SingleQuote */) {
|
23447
23454
|
input.advance();
|
23448
|
-
readLiteral(input, 39 /* SingleQuote */, true);
|
23455
|
+
readLiteral(input, 39 /* Ch.SingleQuote */, true);
|
23449
23456
|
}
|
23450
|
-
else if ((next == 110 /* n */ || next == 78 /* N */) && input.next == 39 /* SingleQuote */ &&
|
23457
|
+
else if ((next == 110 /* Ch.n */ || next == 78 /* Ch.N */) && input.next == 39 /* Ch.SingleQuote */ &&
|
23451
23458
|
d.charSetCasts) {
|
23452
23459
|
input.advance();
|
23453
|
-
readLiteral(input, 39 /* SingleQuote */, d.backslashEscapes);
|
23460
|
+
readLiteral(input, 39 /* Ch.SingleQuote */, d.backslashEscapes);
|
23454
23461
|
input.acceptToken(String$1);
|
23455
23462
|
}
|
23456
|
-
else if (next == 95 /* Underscore */ && d.charSetCasts) {
|
23463
|
+
else if (next == 95 /* Ch.Underscore */ && d.charSetCasts) {
|
23457
23464
|
for (let i = 0;; i++) {
|
23458
|
-
if (input.next == 39 /* SingleQuote */ && i > 1) {
|
23465
|
+
if (input.next == 39 /* Ch.SingleQuote */ && i > 1) {
|
23459
23466
|
input.advance();
|
23460
|
-
readLiteral(input, 39 /* SingleQuote */, d.backslashEscapes);
|
23467
|
+
readLiteral(input, 39 /* Ch.SingleQuote */, d.backslashEscapes);
|
23461
23468
|
input.acceptToken(String$1);
|
23462
23469
|
break;
|
23463
23470
|
}
|
@@ -23466,33 +23473,33 @@ var sqlui = (function (exports) {
|
|
23466
23473
|
input.advance();
|
23467
23474
|
}
|
23468
23475
|
}
|
23469
|
-
else if (next == 40 /* ParenL */) {
|
23476
|
+
else if (next == 40 /* Ch.ParenL */) {
|
23470
23477
|
input.acceptToken(ParenL);
|
23471
23478
|
}
|
23472
|
-
else if (next == 41 /* ParenR */) {
|
23479
|
+
else if (next == 41 /* Ch.ParenR */) {
|
23473
23480
|
input.acceptToken(ParenR);
|
23474
23481
|
}
|
23475
|
-
else if (next == 123 /* BraceL */) {
|
23482
|
+
else if (next == 123 /* Ch.BraceL */) {
|
23476
23483
|
input.acceptToken(BraceL);
|
23477
23484
|
}
|
23478
|
-
else if (next == 125 /* BraceR */) {
|
23485
|
+
else if (next == 125 /* Ch.BraceR */) {
|
23479
23486
|
input.acceptToken(BraceR);
|
23480
23487
|
}
|
23481
|
-
else if (next == 91 /* BracketL */) {
|
23488
|
+
else if (next == 91 /* Ch.BracketL */) {
|
23482
23489
|
input.acceptToken(BracketL);
|
23483
23490
|
}
|
23484
|
-
else if (next == 93 /* BracketR */) {
|
23491
|
+
else if (next == 93 /* Ch.BracketR */) {
|
23485
23492
|
input.acceptToken(BracketR);
|
23486
23493
|
}
|
23487
|
-
else if (next == 59 /* Semi */) {
|
23494
|
+
else if (next == 59 /* Ch.Semi */) {
|
23488
23495
|
input.acceptToken(Semi);
|
23489
23496
|
}
|
23490
|
-
else if (d.unquotedBitLiterals && next == 48 /* _0 */ && input.next == 98 /* b */) {
|
23497
|
+
else if (d.unquotedBitLiterals && next == 48 /* Ch._0 */ && input.next == 98 /* Ch.b */) {
|
23491
23498
|
input.advance();
|
23492
23499
|
readBits(input);
|
23493
23500
|
input.acceptToken(Bits);
|
23494
23501
|
}
|
23495
|
-
else if ((next == 98 /* b */ || next == 66 /* B */) && (input.next == 39 /* SingleQuote */ || input.next == 34 /* DoubleQuote */)) {
|
23502
|
+
else if ((next == 98 /* Ch.b */ || next == 66 /* Ch.B */) && (input.next == 39 /* Ch.SingleQuote */ || input.next == 34 /* Ch.DoubleQuote */)) {
|
23496
23503
|
const quoteStyle = input.next;
|
23497
23504
|
input.advance();
|
23498
23505
|
if (d.treatBitsAsBytes) {
|
@@ -23504,24 +23511,24 @@ var sqlui = (function (exports) {
|
|
23504
23511
|
input.acceptToken(Bits);
|
23505
23512
|
}
|
23506
23513
|
}
|
23507
|
-
else if (next == 48 /* _0 */ && (input.next == 120 /* x */ || input.next == 88 /* X */) ||
|
23508
|
-
(next == 120 /* x */ || next == 88 /* X */) && input.next == 39 /* SingleQuote */) {
|
23509
|
-
let quoted = input.next == 39 /* SingleQuote */;
|
23514
|
+
else if (next == 48 /* Ch._0 */ && (input.next == 120 /* Ch.x */ || input.next == 88 /* Ch.X */) ||
|
23515
|
+
(next == 120 /* Ch.x */ || next == 88 /* Ch.X */) && input.next == 39 /* Ch.SingleQuote */) {
|
23516
|
+
let quoted = input.next == 39 /* Ch.SingleQuote */;
|
23510
23517
|
input.advance();
|
23511
23518
|
while (isHexDigit(input.next))
|
23512
23519
|
input.advance();
|
23513
|
-
if (quoted && input.next == 39 /* SingleQuote */)
|
23520
|
+
if (quoted && input.next == 39 /* Ch.SingleQuote */)
|
23514
23521
|
input.advance();
|
23515
23522
|
input.acceptToken(Number);
|
23516
23523
|
}
|
23517
|
-
else if (next == 46 /* Dot */ && input.next >= 48 /* _0 */ && input.next <= 57 /* _9 */) {
|
23524
|
+
else if (next == 46 /* Ch.Dot */ && input.next >= 48 /* Ch._0 */ && input.next <= 57 /* Ch._9 */) {
|
23518
23525
|
readNumber(input, true);
|
23519
23526
|
input.acceptToken(Number);
|
23520
23527
|
}
|
23521
|
-
else if (next == 46 /* Dot */) {
|
23528
|
+
else if (next == 46 /* Ch.Dot */) {
|
23522
23529
|
input.acceptToken(Dot);
|
23523
23530
|
}
|
23524
|
-
else if (next >= 48 /* _0 */ && next <= 57 /* _9 */) {
|
23531
|
+
else if (next >= 48 /* Ch._0 */ && next <= 57 /* Ch._9 */) {
|
23525
23532
|
readNumber(input, false);
|
23526
23533
|
input.acceptToken(Number);
|
23527
23534
|
}
|
@@ -23540,12 +23547,12 @@ var sqlui = (function (exports) {
|
|
23540
23547
|
readLiteral(input, next, false);
|
23541
23548
|
input.acceptToken(QuotedIdentifier);
|
23542
23549
|
}
|
23543
|
-
else if (next == 58 /* Colon */ || next == 44 /* Comma */) {
|
23550
|
+
else if (next == 58 /* Ch.Colon */ || next == 44 /* Ch.Comma */) {
|
23544
23551
|
input.acceptToken(Punctuation);
|
23545
23552
|
}
|
23546
23553
|
else if (isAlpha(next)) {
|
23547
23554
|
let word = readWord(input, String.fromCharCode(next));
|
23548
|
-
input.acceptToken(input.next == 46 /* Dot */ ? Identifier : (_a = d.words[word.toLowerCase()]) !== null && _a !== void 0 ? _a : Identifier);
|
23555
|
+
input.acceptToken(input.next == 46 /* Ch.Dot */ ? Identifier : (_a = d.words[word.toLowerCase()]) !== null && _a !== void 0 ? _a : Identifier);
|
23549
23556
|
}
|
23550
23557
|
});
|
23551
23558
|
}
|
@@ -23841,177 +23848,179 @@ var sqlui = (function (exports) {
|
|
23841
23848
|
*/
|
23842
23849
|
const StandardSQL = /*@__PURE__*/SQLDialect.define({});
|
23843
23850
|
|
23844
|
-
|
23851
|
+
/* global google */
|
23852
|
+
|
23853
|
+
function init (parent, onSubmit) {
|
23845
23854
|
const fixedHeightEditor = EditorView.theme({
|
23846
|
-
|
23855
|
+
'.cm-scroller': { height: '200px', overflow: 'auto', resize: 'vertical' }
|
23847
23856
|
});
|
23848
23857
|
window.editorView = new EditorView({
|
23849
23858
|
state: EditorState.create({
|
23850
23859
|
extensions: [
|
23851
23860
|
keymap.of([
|
23852
|
-
{key:
|
23861
|
+
{ key: 'Ctrl-Enter', run: onSubmit, preventDefault: true },
|
23853
23862
|
...defaultKeymap
|
23854
23863
|
]),
|
23855
23864
|
basicSetup,
|
23856
23865
|
sql(),
|
23857
23866
|
fixedHeightEditor,
|
23858
|
-
placeholder(
|
23867
|
+
placeholder('Ctrl-Enter to submit')
|
23859
23868
|
]
|
23860
23869
|
}),
|
23861
|
-
parent
|
23870
|
+
parent
|
23862
23871
|
});
|
23863
23872
|
}
|
23864
23873
|
|
23865
|
-
function getCursor() {
|
23866
|
-
return window.editorView.state.selection.main.head
|
23874
|
+
function getCursor () {
|
23875
|
+
return window.editorView.state.selection.main.head
|
23867
23876
|
}
|
23868
23877
|
|
23869
|
-
function setCursor(cursor) {
|
23870
|
-
window.editorView.dispatch({selection: {anchor: Math.min(cursor, window.editorView.state.doc.length)}});
|
23878
|
+
function setCursor (cursor) {
|
23879
|
+
window.editorView.dispatch({ selection: { anchor: Math.min(cursor, window.editorView.state.doc.length) } });
|
23871
23880
|
}
|
23872
23881
|
|
23873
|
-
function focus() {
|
23882
|
+
function focus () {
|
23874
23883
|
window.editorView.focus();
|
23875
23884
|
}
|
23876
23885
|
|
23877
|
-
function getValue() {
|
23878
|
-
return window.editorView.state.doc.toString()
|
23886
|
+
function getValue () {
|
23887
|
+
return window.editorView.state.doc.toString()
|
23879
23888
|
}
|
23880
23889
|
|
23881
|
-
function setValue(value) {
|
23890
|
+
function setValue (value) {
|
23882
23891
|
window.editorView.dispatch({
|
23883
23892
|
changes: {
|
23884
23893
|
from: 0,
|
23885
23894
|
to: window.editorView.state.doc.length,
|
23886
23895
|
insert: value
|
23887
|
-
}
|
23896
|
+
}
|
23888
23897
|
});
|
23889
23898
|
}
|
23890
23899
|
|
23891
|
-
function selectTab(tab) {
|
23900
|
+
function selectTab (tab) {
|
23892
23901
|
window.tab = tab;
|
23893
23902
|
const url = new URL(window.location);
|
23894
|
-
if (url.searchParams.has(
|
23895
|
-
if (url.searchParams.get(
|
23896
|
-
if (tab ===
|
23897
|
-
url.searchParams.delete(
|
23898
|
-
window.history.pushState({},
|
23899
|
-
return route()
|
23903
|
+
if (url.searchParams.has('tab')) {
|
23904
|
+
if (url.searchParams.get('tab') !== tab) {
|
23905
|
+
if (tab === 'query') {
|
23906
|
+
url.searchParams.delete('tab');
|
23907
|
+
window.history.pushState({}, '', url);
|
23908
|
+
return route()
|
23900
23909
|
} else {
|
23901
|
-
url.searchParams.set(
|
23902
|
-
window.history.pushState({},
|
23903
|
-
return route()
|
23910
|
+
url.searchParams.set('tab', tab);
|
23911
|
+
window.history.pushState({}, '', url);
|
23912
|
+
return route()
|
23904
23913
|
}
|
23905
23914
|
}
|
23906
23915
|
} else {
|
23907
|
-
if (tab !==
|
23908
|
-
url.searchParams.set(
|
23909
|
-
window.history.pushState({},
|
23910
|
-
return route()
|
23916
|
+
if (tab !== 'query') {
|
23917
|
+
url.searchParams.set('tab', tab);
|
23918
|
+
window.history.pushState({}, '', url);
|
23919
|
+
return route()
|
23911
23920
|
}
|
23912
23921
|
}
|
23913
23922
|
|
23914
23923
|
const tabElement = document.getElementById(`${tab}-tab-button`);
|
23915
|
-
Array.prototype.forEach.call(document.getElementsByClassName(
|
23916
|
-
selected.classList.remove(
|
23917
|
-
selected.classList.add(
|
23924
|
+
Array.prototype.forEach.call(document.getElementsByClassName('selected-tab-button'), function (selected) {
|
23925
|
+
selected.classList.remove('selected-tab-button');
|
23926
|
+
selected.classList.add('tab-button');
|
23918
23927
|
});
|
23919
|
-
tabElement.classList.remove(
|
23920
|
-
tabElement.classList.add(
|
23928
|
+
tabElement.classList.remove('tab-button');
|
23929
|
+
tabElement.classList.add('selected-tab-button');
|
23921
23930
|
|
23922
|
-
Array.prototype.forEach.call(document.getElementsByClassName(
|
23923
|
-
selected.style.display =
|
23931
|
+
Array.prototype.forEach.call(document.getElementsByClassName('tab-content-element'), function (selected) {
|
23932
|
+
selected.style.display = 'none';
|
23924
23933
|
});
|
23925
23934
|
|
23926
23935
|
switch (tab) {
|
23927
|
-
case
|
23936
|
+
case 'query':
|
23928
23937
|
selectQueryTab();
|
23929
|
-
break
|
23930
|
-
case
|
23938
|
+
break
|
23939
|
+
case 'graph':
|
23931
23940
|
selectGraphTab();
|
23932
|
-
break
|
23933
|
-
case
|
23941
|
+
break
|
23942
|
+
case 'saved':
|
23934
23943
|
selectSavedTab();
|
23935
|
-
break
|
23936
|
-
case
|
23944
|
+
break
|
23945
|
+
case 'structure':
|
23937
23946
|
selectStructureTab();
|
23938
|
-
break
|
23947
|
+
break
|
23939
23948
|
default:
|
23940
|
-
throw `Unexpected tab: ${tab}
|
23949
|
+
throw new Error(`Unexpected tab: ${tab}`)
|
23941
23950
|
}
|
23942
23951
|
}
|
23943
23952
|
|
23944
|
-
function selectStructureTab() {
|
23945
|
-
Array.prototype.forEach.call(document.getElementsByClassName(
|
23946
|
-
selected.style.display =
|
23953
|
+
function selectStructureTab () {
|
23954
|
+
Array.prototype.forEach.call(document.getElementsByClassName('structure-element'), function (selected) {
|
23955
|
+
selected.style.display = 'flex';
|
23947
23956
|
});
|
23948
23957
|
|
23949
23958
|
if (window.structureLoaded) {
|
23950
|
-
return
|
23959
|
+
return
|
23951
23960
|
}
|
23952
23961
|
|
23953
|
-
const schemasElement = document.getElementById(
|
23954
|
-
const tablesElement = document.getElementById(
|
23955
|
-
const columnsElement = document.getElementById(
|
23956
|
-
const indexesElement = document.getElementById(
|
23962
|
+
const schemasElement = document.getElementById('schemas');
|
23963
|
+
const tablesElement = document.getElementById('tables');
|
23964
|
+
const columnsElement = document.getElementById('columns');
|
23965
|
+
const indexesElement = document.getElementById('indexes');
|
23957
23966
|
|
23958
|
-
const schemaNames = Object.keys(window.metadata
|
23959
|
-
if (schemaNames.length
|
23967
|
+
const schemaNames = Object.keys(window.metadata.schemas);
|
23968
|
+
if (schemaNames.length === 1) {
|
23960
23969
|
schemasElement.style.display = 'none';
|
23961
23970
|
// TODO: duplicate code
|
23962
|
-
while(tablesElement.firstChild) {
|
23971
|
+
while (tablesElement.firstChild) {
|
23963
23972
|
tablesElement.removeChild(tablesElement.firstChild);
|
23964
23973
|
}
|
23965
23974
|
const schemaName = schemaNames[0];
|
23966
|
-
const schema = window.metadata
|
23967
|
-
const tableNames = Object.keys(schema
|
23968
|
-
tableNames.forEach(function(tableName) {
|
23969
|
-
const optionElement = document.createElement(
|
23975
|
+
const schema = window.metadata.schemas[schemaName];
|
23976
|
+
const tableNames = Object.keys(schema.tables);
|
23977
|
+
tableNames.forEach(function (tableName) {
|
23978
|
+
const optionElement = document.createElement('option');
|
23970
23979
|
optionElement.value = tableName;
|
23971
23980
|
optionElement.innerText = tableName;
|
23972
23981
|
tablesElement.appendChild(optionElement);
|
23973
23982
|
});
|
23974
23983
|
} else {
|
23975
23984
|
schemasElement.style.display = 'flex';
|
23976
|
-
schemaNames.forEach(function(schemaName) {
|
23977
|
-
const optionElement = document.createElement(
|
23985
|
+
schemaNames.forEach(function (schemaName) {
|
23986
|
+
const optionElement = document.createElement('option');
|
23978
23987
|
optionElement.value = schemaName;
|
23979
23988
|
optionElement.innerText = schemaName;
|
23980
23989
|
schemasElement.appendChild(optionElement);
|
23981
23990
|
});
|
23982
|
-
schemasElement.addEventListener(
|
23983
|
-
while(tablesElement.firstChild) {
|
23991
|
+
schemasElement.addEventListener('change', function () {
|
23992
|
+
while (tablesElement.firstChild) {
|
23984
23993
|
tablesElement.removeChild(tablesElement.firstChild);
|
23985
23994
|
}
|
23986
23995
|
const schemaName = schemasElement.value;
|
23987
|
-
const schema = window.metadata
|
23988
|
-
const tableNames = Object.keys(schema
|
23989
|
-
tableNames.forEach(function(tableName) {
|
23990
|
-
const optionElement = document.createElement(
|
23996
|
+
const schema = window.metadata.schemas[schemaName];
|
23997
|
+
const tableNames = Object.keys(schema.tables);
|
23998
|
+
tableNames.forEach(function (tableName) {
|
23999
|
+
const optionElement = document.createElement('option');
|
23991
24000
|
optionElement.value = tableName;
|
23992
24001
|
optionElement.innerText = tableName;
|
23993
24002
|
tablesElement.appendChild(optionElement);
|
23994
24003
|
});
|
23995
24004
|
});
|
23996
24005
|
}
|
23997
|
-
tablesElement.addEventListener(
|
23998
|
-
while(columnsElement.firstChild) {
|
24006
|
+
tablesElement.addEventListener('change', function () {
|
24007
|
+
while (columnsElement.firstChild) {
|
23999
24008
|
columnsElement.removeChild(columnsElement.firstChild);
|
24000
24009
|
}
|
24001
|
-
while(indexesElement.firstChild) {
|
24010
|
+
while (indexesElement.firstChild) {
|
24002
24011
|
indexesElement.removeChild(indexesElement.firstChild);
|
24003
24012
|
}
|
24004
|
-
const schemaName = schemaNames.length
|
24013
|
+
const schemaName = schemaNames.length === 1 ? schemaNames[0] : schemasElement.value;
|
24005
24014
|
const tableName = tablesElement.value;
|
24006
|
-
const table = window.metadata
|
24015
|
+
const table = window.metadata.schemas[schemaName].tables[tableName];
|
24007
24016
|
|
24008
|
-
const columnEntries = Object.entries(table
|
24017
|
+
const columnEntries = Object.entries(table.columns);
|
24009
24018
|
if (columnEntries.length > 0) {
|
24010
24019
|
const columns = Object.keys(columnEntries[0][1]);
|
24011
24020
|
const rows = [];
|
24012
|
-
for (const [
|
24021
|
+
for (const [, column] of columnEntries) {
|
24013
24022
|
const row = [];
|
24014
|
-
for (const [
|
24023
|
+
for (const [, value] of Object.entries(column)) {
|
24015
24024
|
row.push(value);
|
24016
24025
|
}
|
24017
24026
|
rows.push(row);
|
@@ -24019,7 +24028,7 @@ var sqlui = (function (exports) {
|
|
24019
24028
|
createTable(columnsElement, columns, rows);
|
24020
24029
|
}
|
24021
24030
|
|
24022
|
-
const indexEntries = Object.entries(table
|
24031
|
+
const indexEntries = Object.entries(table.indexes);
|
24023
24032
|
if (indexEntries.length > 0) {
|
24024
24033
|
const firstIndex = indexEntries[0][1];
|
24025
24034
|
const indexColumns = Object.keys(firstIndex);
|
@@ -24027,10 +24036,10 @@ var sqlui = (function (exports) {
|
|
24027
24036
|
const columns = indexColumnKeys;
|
24028
24037
|
|
24029
24038
|
const rows = [];
|
24030
|
-
for (const [
|
24031
|
-
for (const [
|
24039
|
+
for (const [, index] of indexEntries) {
|
24040
|
+
for (const [, column] of Object.entries(index)) {
|
24032
24041
|
const row = [];
|
24033
|
-
for (const [
|
24042
|
+
for (const [, value] of Object.entries(column)) {
|
24034
24043
|
row.push(value);
|
24035
24044
|
}
|
24036
24045
|
rows.push(row);
|
@@ -24042,32 +24051,34 @@ var sqlui = (function (exports) {
|
|
24042
24051
|
window.structureLoaded = true;
|
24043
24052
|
}
|
24044
24053
|
|
24045
|
-
function createTable(parent, columns, rows) {
|
24046
|
-
const tableElement = document.createElement(
|
24047
|
-
const theadElement = document.createElement(
|
24048
|
-
const headerTrElement = document.createElement(
|
24049
|
-
const tbodyElement = document.createElement(
|
24054
|
+
function createTable (parent, columns, rows) {
|
24055
|
+
const tableElement = document.createElement('table');
|
24056
|
+
const theadElement = document.createElement('thead');
|
24057
|
+
const headerTrElement = document.createElement('tr');
|
24058
|
+
const tbodyElement = document.createElement('tbody');
|
24050
24059
|
theadElement.appendChild(headerTrElement);
|
24051
24060
|
tableElement.appendChild(theadElement);
|
24052
24061
|
tableElement.appendChild(tbodyElement);
|
24053
24062
|
parent.appendChild(tableElement);
|
24054
24063
|
|
24055
|
-
columns.forEach(function(columnName) {
|
24056
|
-
const headerElement = document.createElement(
|
24064
|
+
columns.forEach(function (columnName) {
|
24065
|
+
const headerElement = document.createElement('th');
|
24066
|
+
headerElement.classList.add('cell');
|
24057
24067
|
headerElement.innerText = columnName;
|
24058
24068
|
headerTrElement.appendChild(headerElement);
|
24059
24069
|
});
|
24060
24070
|
headerTrElement.appendChild(document.createElement('th'));
|
24061
24071
|
let highlight = false;
|
24062
|
-
rows.forEach(function(row) {
|
24063
|
-
const rowElement = document.createElement(
|
24072
|
+
rows.forEach(function (row) {
|
24073
|
+
const rowElement = document.createElement('tr');
|
24064
24074
|
if (highlight) {
|
24065
|
-
rowElement.classList.add(
|
24075
|
+
rowElement.classList.add('highlighted-row');
|
24066
24076
|
}
|
24067
24077
|
highlight = !highlight;
|
24068
24078
|
tbodyElement.appendChild(rowElement);
|
24069
|
-
row.forEach(function(value) {
|
24070
|
-
const cellElement = document.createElement(
|
24079
|
+
row.forEach(function (value) {
|
24080
|
+
const cellElement = document.createElement('td');
|
24081
|
+
cellElement.classList.add('cell');
|
24071
24082
|
cellElement.innerText = value;
|
24072
24083
|
rowElement.appendChild(cellElement);
|
24073
24084
|
});
|
@@ -24075,13 +24086,13 @@ var sqlui = (function (exports) {
|
|
24075
24086
|
});
|
24076
24087
|
}
|
24077
24088
|
|
24078
|
-
function selectGraphTab() {
|
24079
|
-
Array.prototype.forEach.call(document.getElementsByClassName(
|
24080
|
-
selected.style.display =
|
24089
|
+
function selectGraphTab () {
|
24090
|
+
Array.prototype.forEach.call(document.getElementsByClassName('graph-element'), function (selected) {
|
24091
|
+
selected.style.display = 'flex';
|
24081
24092
|
});
|
24082
24093
|
|
24083
|
-
google.charts.load('current', {packages: ['corechart', 'line']});
|
24084
|
-
google.charts.setOnLoadCallback(function() {
|
24094
|
+
google.charts.load('current', { packages: ['corechart', 'line'] });
|
24095
|
+
google.charts.setOnLoadCallback(function () {
|
24085
24096
|
loadQueryOrGraphTab(loadGraphResult);
|
24086
24097
|
});
|
24087
24098
|
|
@@ -24090,9 +24101,9 @@ var sqlui = (function (exports) {
|
|
24090
24101
|
setCursor(cursor);
|
24091
24102
|
}
|
24092
24103
|
|
24093
|
-
function selectQueryTab() {
|
24094
|
-
Array.prototype.forEach.call(document.getElementsByClassName(
|
24095
|
-
selected.style.display =
|
24104
|
+
function selectQueryTab () {
|
24105
|
+
Array.prototype.forEach.call(document.getElementsByClassName('query-element'), function (selected) {
|
24106
|
+
selected.style.display = 'flex';
|
24096
24107
|
});
|
24097
24108
|
|
24098
24109
|
const cursor = getCursor();
|
@@ -24102,43 +24113,43 @@ var sqlui = (function (exports) {
|
|
24102
24113
|
loadQueryOrGraphTab(loadQueryResult);
|
24103
24114
|
}
|
24104
24115
|
|
24105
|
-
function selectSavedTab() {
|
24106
|
-
Array.prototype.forEach.call(document.getElementsByClassName(
|
24107
|
-
selected.style.display =
|
24116
|
+
function selectSavedTab () {
|
24117
|
+
Array.prototype.forEach.call(document.getElementsByClassName('saved-element'), function (selected) {
|
24118
|
+
selected.style.display = 'flex';
|
24108
24119
|
});
|
24109
24120
|
|
24110
24121
|
if (window.savedLoaded) {
|
24111
|
-
return
|
24122
|
+
return
|
24112
24123
|
}
|
24113
24124
|
|
24114
|
-
const savedElement = document.getElementById(
|
24125
|
+
const savedElement = document.getElementById('saved-box');
|
24115
24126
|
if (savedElement.children.length > 0) {
|
24116
|
-
return
|
24127
|
+
return
|
24117
24128
|
}
|
24118
24129
|
|
24119
|
-
const saved = window.metadata
|
24130
|
+
const saved = window.metadata.saved;
|
24120
24131
|
if (saved && saved.length === 1) {
|
24121
|
-
setSavedStatus(
|
24132
|
+
setSavedStatus('1 file');
|
24122
24133
|
} else {
|
24123
24134
|
setSavedStatus(`${saved.length} files`);
|
24124
24135
|
}
|
24125
24136
|
saved.forEach(file => {
|
24126
|
-
const divElement = document.createElement(
|
24127
|
-
divElement.addEventListener(
|
24137
|
+
const divElement = document.createElement('div');
|
24138
|
+
divElement.addEventListener('click', function (event) {
|
24128
24139
|
clearResult();
|
24129
24140
|
const url = new URL(window.location);
|
24130
|
-
url.searchParams.delete(
|
24131
|
-
url.searchParams.delete(
|
24132
|
-
url.searchParams.set(
|
24133
|
-
window.history.pushState({},
|
24141
|
+
url.searchParams.delete('sql');
|
24142
|
+
url.searchParams.delete('tab');
|
24143
|
+
url.searchParams.set('file', file.filename);
|
24144
|
+
window.history.pushState({}, '', url);
|
24134
24145
|
route();
|
24135
24146
|
});
|
24136
|
-
const nameElement = document.createElement(
|
24137
|
-
nameElement.innerText = file
|
24147
|
+
const nameElement = document.createElement('h1');
|
24148
|
+
nameElement.innerText = file.filename;
|
24138
24149
|
divElement.appendChild(nameElement);
|
24139
24150
|
|
24140
|
-
const descriptionElement = document.createElement(
|
24141
|
-
descriptionElement.innerText = file
|
24151
|
+
const descriptionElement = document.createElement('p');
|
24152
|
+
descriptionElement.innerText = file.description;
|
24142
24153
|
divElement.appendChild(descriptionElement);
|
24143
24154
|
|
24144
24155
|
savedElement.appendChild(divElement);
|
@@ -24146,38 +24157,38 @@ var sqlui = (function (exports) {
|
|
24146
24157
|
window.savedLoaded = true;
|
24147
24158
|
}
|
24148
24159
|
|
24149
|
-
function submit() {
|
24160
|
+
function submit () {
|
24150
24161
|
const url = new URL(window.location);
|
24151
|
-
url.searchParams.set(
|
24162
|
+
url.searchParams.set('cursor', getCursor());
|
24152
24163
|
|
24153
24164
|
let sql = getValue().trim();
|
24154
|
-
sql = sql ===
|
24165
|
+
sql = sql === '' ? null : sql;
|
24155
24166
|
|
24156
|
-
if (url.searchParams.has(
|
24157
|
-
url.searchParams.delete(
|
24158
|
-
url.searchParams.set(
|
24159
|
-
window.history.pushState({},
|
24167
|
+
if (url.searchParams.has('file')) {
|
24168
|
+
url.searchParams.delete('file');
|
24169
|
+
url.searchParams.set('sql', sql);
|
24170
|
+
window.history.pushState({}, '', url);
|
24160
24171
|
} else {
|
24161
|
-
let sqlParam = url.searchParams.get(
|
24162
|
-
sqlParam = sqlParam ===
|
24172
|
+
let sqlParam = url.searchParams.get('sql')?.trim();
|
24173
|
+
sqlParam = sqlParam === '' ? null : sqlParam;
|
24163
24174
|
|
24164
24175
|
if (sqlParam !== sql) {
|
24165
24176
|
if (sql === null) {
|
24166
|
-
url.searchParams.delete(
|
24167
|
-
window.history.pushState({},
|
24177
|
+
url.searchParams.delete('sql');
|
24178
|
+
window.history.pushState({}, '', url);
|
24168
24179
|
} else {
|
24169
|
-
url.searchParams.set(
|
24170
|
-
window.history.pushState({},
|
24180
|
+
url.searchParams.set('sql', sql);
|
24181
|
+
window.history.pushState({}, '', url);
|
24171
24182
|
}
|
24172
24183
|
} else {
|
24173
|
-
window.history.replaceState({},
|
24184
|
+
window.history.replaceState({}, '', url);
|
24174
24185
|
}
|
24175
24186
|
}
|
24176
24187
|
clearResult();
|
24177
24188
|
route();
|
24178
24189
|
}
|
24179
24190
|
|
24180
|
-
function clearResult() {
|
24191
|
+
function clearResult () {
|
24181
24192
|
clearGraphStatus();
|
24182
24193
|
clearQueryStatus();
|
24183
24194
|
clearGraphBox();
|
@@ -24185,266 +24196,267 @@ var sqlui = (function (exports) {
|
|
24185
24196
|
window.result = null;
|
24186
24197
|
}
|
24187
24198
|
|
24188
|
-
function clearQueryStatus() {
|
24189
|
-
document.getElementById(
|
24199
|
+
function clearQueryStatus () {
|
24200
|
+
document.getElementById('query-status').innerText = '';
|
24190
24201
|
}
|
24191
24202
|
|
24192
|
-
function clearGraphStatus() {
|
24193
|
-
document.getElementById(
|
24203
|
+
function clearGraphStatus () {
|
24204
|
+
document.getElementById('graph-status').innerText = '';
|
24194
24205
|
}
|
24195
24206
|
|
24196
|
-
function clearResultBox() {
|
24197
|
-
const resultElement = document.getElementById(
|
24198
|
-
while(resultElement.firstChild) {
|
24207
|
+
function clearResultBox () {
|
24208
|
+
const resultElement = document.getElementById('result-box');
|
24209
|
+
while (resultElement.firstChild) {
|
24199
24210
|
resultElement.removeChild(resultElement.firstChild);
|
24200
24211
|
}
|
24201
24212
|
}
|
24202
24213
|
|
24203
|
-
function clearGraphBox() {
|
24204
|
-
const graphElement = document.getElementById(
|
24205
|
-
while(graphElement.firstChild) {
|
24214
|
+
function clearGraphBox () {
|
24215
|
+
const graphElement = document.getElementById('graph-box');
|
24216
|
+
while (graphElement.firstChild) {
|
24206
24217
|
graphElement.removeChild(graphElement.firstChild);
|
24207
24218
|
}
|
24208
24219
|
}
|
24209
24220
|
|
24210
|
-
function fetchSql(sql, cursor, callback) {
|
24211
|
-
fetch(
|
24212
|
-
|
24213
|
-
|
24214
|
-
|
24221
|
+
function fetchSql (sql, cursor, callback) {
|
24222
|
+
fetch('query', {
|
24223
|
+
headers: {
|
24224
|
+
Accept: 'application/json',
|
24225
|
+
'Content-Type': 'application/json'
|
24215
24226
|
},
|
24216
|
-
|
24217
|
-
|
24218
|
-
|
24219
|
-
|
24227
|
+
method: 'POST',
|
24228
|
+
body: JSON.stringify({
|
24229
|
+
sql,
|
24230
|
+
cursor
|
24220
24231
|
})
|
24221
24232
|
})
|
24222
|
-
|
24223
|
-
|
24233
|
+
.then((response) => response.json())
|
24234
|
+
.then((result) => callback(result));
|
24224
24235
|
}
|
24225
24236
|
|
24226
|
-
function fetchFile(name, callback) {
|
24237
|
+
function fetchFile (name, callback) {
|
24227
24238
|
fetch(`query_file?file=${name}`, {
|
24228
|
-
|
24229
|
-
|
24239
|
+
headers: {
|
24240
|
+
Accept: 'application/json'
|
24230
24241
|
},
|
24231
|
-
|
24242
|
+
method: 'GET'
|
24232
24243
|
})
|
24233
|
-
|
24234
|
-
|
24244
|
+
.then((response) => response.json())
|
24245
|
+
.then((result) => callback(result));
|
24235
24246
|
}
|
24236
24247
|
|
24237
|
-
function fetchMetadata(callback) {
|
24238
|
-
fetch(
|
24239
|
-
|
24240
|
-
|
24248
|
+
function fetchMetadata (callback) {
|
24249
|
+
fetch('metadata', {
|
24250
|
+
headers: {
|
24251
|
+
Accept: 'application/json'
|
24241
24252
|
},
|
24242
|
-
|
24253
|
+
method: 'GET'
|
24243
24254
|
})
|
24244
|
-
|
24245
|
-
|
24255
|
+
.then((response) => response.json())
|
24256
|
+
.then((result) => callback(result));
|
24246
24257
|
}
|
24247
24258
|
|
24248
|
-
function loadQueryOrGraphTab(callback) {
|
24259
|
+
function loadQueryOrGraphTab (callback) {
|
24249
24260
|
const params = new URLSearchParams(window.location.search);
|
24250
|
-
const sql = params.get(
|
24251
|
-
const file = params.get(
|
24252
|
-
const cursor = params.has(
|
24261
|
+
const sql = params.get('sql');
|
24262
|
+
const file = params.get('file');
|
24263
|
+
const cursor = params.has('cursor') ? params.get('cursor') : 0;
|
24253
24264
|
|
24254
|
-
if (params.has(
|
24265
|
+
if (params.has('sql') && window.result && sql === window.result.query) {
|
24255
24266
|
callback();
|
24256
|
-
return
|
24257
|
-
} else if (params.has(
|
24267
|
+
return
|
24268
|
+
} else if (params.has('file') && window.result && file === window.result.file) {
|
24258
24269
|
callback();
|
24259
|
-
return
|
24270
|
+
return
|
24260
24271
|
}
|
24261
24272
|
|
24262
|
-
if (params.has(
|
24273
|
+
if (params.has('file') && params.has('sql') && cursor === window.result.cursor) {
|
24263
24274
|
// TODO: show an error.
|
24264
|
-
throw
|
24275
|
+
throw new Error('You can only specify a file or sql, not both.')
|
24265
24276
|
}
|
24266
24277
|
|
24267
|
-
|
24278
|
+
clearResult();
|
24279
|
+
|
24280
|
+
if (params.has('sql')) {
|
24268
24281
|
setValue(sql);
|
24269
|
-
const cursor = params.has(
|
24270
|
-
fetchSql(params.get(
|
24282
|
+
const cursor = params.has('cursor') ? params.get('cursor') : 0;
|
24283
|
+
fetchSql(params.get('sql'), cursor, function (result) {
|
24271
24284
|
window.result = result;
|
24272
24285
|
callback();
|
24273
24286
|
});
|
24274
|
-
} else if (params.has(
|
24275
|
-
setValue(
|
24276
|
-
fetchFile(file, function(result) {
|
24287
|
+
} else if (params.has('file')) {
|
24288
|
+
setValue('');
|
24289
|
+
fetchFile(file, function (result) {
|
24277
24290
|
window.result = result;
|
24278
|
-
if (window.result
|
24279
|
-
setValue(result
|
24291
|
+
if (window.result.query) {
|
24292
|
+
setValue(result.query);
|
24280
24293
|
}
|
24281
24294
|
callback();
|
24282
24295
|
});
|
24283
24296
|
}
|
24284
|
-
if (params.has(
|
24297
|
+
if (params.has('cursor')) {
|
24285
24298
|
focus();
|
24286
24299
|
setCursor(cursor);
|
24287
24300
|
}
|
24288
24301
|
}
|
24289
24302
|
|
24290
|
-
function loadQueryResult() {
|
24291
|
-
const resultElement = document.getElementById(
|
24303
|
+
function loadQueryResult () {
|
24304
|
+
const resultElement = document.getElementById('result-box');
|
24292
24305
|
if (resultElement.children.length > 0) {
|
24293
|
-
return
|
24306
|
+
return
|
24294
24307
|
}
|
24295
24308
|
|
24296
24309
|
setQueryStatus(window.result);
|
24297
24310
|
|
24298
|
-
if (!window.result
|
24299
|
-
return
|
24311
|
+
if (!window.result.rows) {
|
24312
|
+
return
|
24300
24313
|
}
|
24301
24314
|
|
24302
|
-
const tableElement = document.createElement(
|
24303
|
-
const theadElement = document.createElement(
|
24304
|
-
const headerElement = document.createElement(
|
24305
|
-
const tbodyElement = document.createElement(
|
24315
|
+
const tableElement = document.createElement('table');
|
24316
|
+
const theadElement = document.createElement('thead');
|
24317
|
+
const headerElement = document.createElement('tr');
|
24318
|
+
const tbodyElement = document.createElement('tbody');
|
24306
24319
|
theadElement.appendChild(headerElement);
|
24307
24320
|
tableElement.appendChild(theadElement);
|
24308
24321
|
tableElement.appendChild(tbodyElement);
|
24309
24322
|
resultElement.appendChild(tableElement);
|
24310
|
-
|
24311
|
-
window.result
|
24312
|
-
const template = document.createElement(
|
24313
|
-
template.innerHTML = `<th>${column}</th>`;
|
24323
|
+
|
24324
|
+
window.result.columns.forEach(column => {
|
24325
|
+
const template = document.createElement('template');
|
24326
|
+
template.innerHTML = `<th class="cell">${column}</th>`;
|
24314
24327
|
headerElement.appendChild(template.content.firstChild);
|
24315
24328
|
});
|
24316
24329
|
headerElement.appendChild(document.createElement('th'));
|
24317
24330
|
let highlight = false;
|
24318
|
-
window.result
|
24319
|
-
const rowElement = document.createElement(
|
24331
|
+
window.result.rows.forEach(function (row) {
|
24332
|
+
const rowElement = document.createElement('tr');
|
24320
24333
|
if (highlight) {
|
24321
|
-
rowElement.classList.add(
|
24334
|
+
rowElement.classList.add('highlighted-row');
|
24322
24335
|
}
|
24323
24336
|
highlight = !highlight;
|
24324
24337
|
tbodyElement.appendChild(rowElement);
|
24325
|
-
row.forEach(function(value) {
|
24326
|
-
const template = document.createElement(
|
24327
|
-
template.innerHTML = `<td>${value}</td>`;
|
24338
|
+
row.forEach(function (value) {
|
24339
|
+
const template = document.createElement('template');
|
24340
|
+
template.innerHTML = `<td class="cell">${value}</td>`;
|
24328
24341
|
rowElement.appendChild(template.content.firstChild);
|
24329
24342
|
});
|
24330
24343
|
rowElement.appendChild(document.createElement('td'));
|
24331
24344
|
});
|
24332
24345
|
|
24333
|
-
document.getElementById(
|
24346
|
+
document.getElementById('result-box').style.display = 'flex';
|
24334
24347
|
}
|
24335
24348
|
|
24336
|
-
function loadGraphResult() {
|
24349
|
+
function loadGraphResult () {
|
24337
24350
|
setGraphStatus(window.result);
|
24338
24351
|
|
24339
|
-
if (!window.result
|
24340
|
-
return
|
24352
|
+
if (!window.result.rows) {
|
24353
|
+
return
|
24341
24354
|
}
|
24342
|
-
if (window.result
|
24343
|
-
return
|
24355
|
+
if (window.result.rows.length === 0 || window.result.columns.length < 2) {
|
24356
|
+
return
|
24344
24357
|
}
|
24345
24358
|
const dataTable = new google.visualization.DataTable();
|
24346
|
-
window.result
|
24347
|
-
dataTable.addColumn(window.result
|
24359
|
+
window.result.columns.forEach((column, index) => {
|
24360
|
+
dataTable.addColumn(window.result.column_types[index], column);
|
24348
24361
|
});
|
24349
24362
|
|
24350
|
-
window.result
|
24363
|
+
window.result.rows.forEach((row) => {
|
24351
24364
|
const rowValues = row.map((value, index) => {
|
24352
|
-
if (window.result
|
24353
|
-
return new Date(value)
|
24365
|
+
if (window.result.column_types[index] === 'date') {
|
24366
|
+
return new Date(value)
|
24354
24367
|
} else {
|
24355
|
-
return value
|
24368
|
+
return value
|
24356
24369
|
}
|
24357
24370
|
});
|
24358
24371
|
dataTable.addRow(rowValues);
|
24359
24372
|
});
|
24360
24373
|
|
24361
|
-
const graphBoxElement = document.getElementById(
|
24374
|
+
const graphBoxElement = document.getElementById('graph-box');
|
24362
24375
|
|
24363
24376
|
const chart = new google.visualization.LineChart(graphBoxElement);
|
24364
24377
|
const options = {
|
24365
|
-
|
24366
|
-
|
24378
|
+
hAxis: {
|
24379
|
+
title: window.result.columns[0]
|
24367
24380
|
},
|
24368
|
-
|
24369
|
-
|
24381
|
+
vAxis: {
|
24382
|
+
title: window.result.columns[1]
|
24370
24383
|
}
|
24371
24384
|
};
|
24372
24385
|
chart.draw(dataTable, options);
|
24373
24386
|
}
|
24374
24387
|
|
24375
|
-
function setGraphStatus(result) {
|
24376
|
-
const statusElement = document.getElementById(
|
24377
|
-
if (!result
|
24388
|
+
function setGraphStatus (result) {
|
24389
|
+
const statusElement = document.getElementById('graph-status');
|
24390
|
+
if (!result.rows) {
|
24378
24391
|
// TODO use a popup
|
24379
|
-
console.log(
|
24392
|
+
console.log('error parsing graph result');
|
24380
24393
|
console.log(JSON.stringify(result, null, 2));
|
24381
|
-
statusElement.innerText =
|
24382
|
-
return
|
24394
|
+
statusElement.innerText = 'error, check console';
|
24395
|
+
return
|
24383
24396
|
}
|
24384
24397
|
|
24385
|
-
if (result
|
24386
|
-
statusElement.innerText = `${result
|
24398
|
+
if (result.total_rows === 1) {
|
24399
|
+
statusElement.innerText = `${result.total_rows} row`;
|
24387
24400
|
} else {
|
24388
|
-
statusElement.innerText = `${result
|
24401
|
+
statusElement.innerText = `${result.total_rows} rows`;
|
24389
24402
|
}
|
24390
24403
|
|
24391
|
-
if (result
|
24392
|
-
statusElement.innerText += ` (truncated to ${result
|
24404
|
+
if (result.total_rows > result.rows.length) {
|
24405
|
+
statusElement.innerText += ` (truncated to ${result.rows.length})`;
|
24393
24406
|
}
|
24394
24407
|
}
|
24395
24408
|
|
24396
|
-
function setQueryStatus(result) {
|
24397
|
-
const statusElement = document.getElementById(
|
24398
|
-
if (!result
|
24409
|
+
function setQueryStatus (result) {
|
24410
|
+
const statusElement = document.getElementById('query-status');
|
24411
|
+
if (!result.rows) {
|
24399
24412
|
// TODO use a popup
|
24400
|
-
console.log(
|
24413
|
+
console.log('error parsing query result');
|
24401
24414
|
console.log(JSON.stringify(result, null, 2));
|
24402
|
-
statusElement.innerText =
|
24403
|
-
return
|
24415
|
+
statusElement.innerText = 'error, check console';
|
24416
|
+
return
|
24404
24417
|
}
|
24405
24418
|
|
24406
|
-
if (result
|
24407
|
-
statusElement.innerText = `${result
|
24419
|
+
if (result.total_rows === 1) {
|
24420
|
+
statusElement.innerText = `${result.total_rows} row`;
|
24408
24421
|
} else {
|
24409
|
-
statusElement.innerText = `${result
|
24422
|
+
statusElement.innerText = `${result.total_rows} rows`;
|
24410
24423
|
}
|
24411
24424
|
|
24412
|
-
if (result
|
24413
|
-
statusElement.innerText += ` (truncated to ${result
|
24425
|
+
if (result.total_rows > result.rows.length) {
|
24426
|
+
statusElement.innerText += ` (truncated to ${result.rows.length})`;
|
24414
24427
|
}
|
24415
24428
|
}
|
24416
24429
|
|
24417
|
-
function setSavedStatus(status) {
|
24418
|
-
document.getElementById(
|
24430
|
+
function setSavedStatus (status) {
|
24431
|
+
document.getElementById('saved-status').innerText = status;
|
24419
24432
|
}
|
24420
24433
|
|
24421
|
-
window.addEventListener(
|
24434
|
+
window.addEventListener('popstate', function (event) {
|
24422
24435
|
route();
|
24423
24436
|
});
|
24424
24437
|
|
24425
|
-
window.addEventListener(
|
24426
|
-
if (window.tab ===
|
24438
|
+
window.addEventListener('resize', function (event) {
|
24439
|
+
if (window.tab === 'graph' && window.result) {
|
24427
24440
|
clearGraphBox();
|
24428
24441
|
loadGraphResult();
|
24429
24442
|
}
|
24430
24443
|
});
|
24431
24444
|
|
24432
|
-
function route() {
|
24433
|
-
selectTab(new URLSearchParams(window.location.search).get(
|
24445
|
+
function route () {
|
24446
|
+
selectTab(new URLSearchParams(window.location.search).get('tab') || 'query');
|
24434
24447
|
}
|
24435
24448
|
|
24436
24449
|
window.onload = function () {
|
24437
|
-
fetchMetadata(function(result) {
|
24450
|
+
fetchMetadata(function (result) {
|
24438
24451
|
window.metadata = result;
|
24439
|
-
if (!result
|
24452
|
+
if (!result.server) {
|
24440
24453
|
// TODO show error
|
24441
|
-
throw
|
24454
|
+
throw new Error('unexpected metadata response')
|
24442
24455
|
}
|
24443
|
-
document.getElementById(
|
24444
|
-
|
24445
|
-
const queryElement = document.getElementById("query");
|
24456
|
+
document.getElementById('header').innerText = result.server;
|
24457
|
+
const queryElement = document.getElementById('query');
|
24446
24458
|
|
24447
|
-
init(queryElement, function() {
|
24459
|
+
init(queryElement, function () {
|
24448
24460
|
submit();
|
24449
24461
|
});
|
24450
24462
|
route();
|