sqlui 0.1.16 → 0.1.18
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.
- 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();
|