Skip to content

Commit 1d63ca9

Browse files
authored
Add in-app settings editor (#137)
* Testing before deleting stuff * Delete more stuff * Move alasql out of dependencies * Delete more stuff * Mark more as unused in desktop * Fix quotes * Drop more * More dropped stuff * Drop parquetjs * More removals * Try yarn removing instead * Fix typo * Exclude more * Dont ignore runner * Change which are removed * Cant drop those * Revert community edition * Comment out upx * Drop upx * Fix for settings * Add settings button * Some fixes for desktop * Fixes for formatter * Only show message on desktop * Fix go checks * Closer! * Fixes * Add notes about building language * More fixes * Fixes for everything * Format after build * Sketch for clojure * Make jsonnet available in path * Reset after release build * Drop clojure * Fixes * Drop clojure tests * In memory init * Fix for empty sql panel * Fix for format * Fix for project name with dot in it * Try ignoring browser eval tests * Try killing and waiting before continuing * Fix format * Drop coverage reqs * Add language override settings
1 parent 4afa1f5 commit 1d63ca9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1955
-1825
lines changed

.github/workflows/pull_requests.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
- run: yarn format
3636
- run: yarn tsc
3737
- run: cd runner && gofmt -w .
38-
- run: ./runner/scripts/generate_program_type_info.sh
38+
- run: yarn build-language-definitions
3939
- run: ./scripts/fail_on_diff.sh
4040
- run: yarn test-licenses
4141
# Needed so we can have ./build/desktop_runner.js and ./build/go_desktop_runner ready for tests
@@ -104,6 +104,7 @@ jobs:
104104
105105
- run: ./scripts/ci/prepare_linux.sh
106106
- run: yarn release-desktop 0.0.0-e2etest
107+
- run: git reset --hard # release blows everything up
107108
# Set up a virtual framebuffer so Chrome will start
108109
# https://www.electronjs.org/docs/tutorial/testing-on-headless-ci
109110
# https://github.com/juliangruber/browser-run/issues/147
@@ -136,6 +137,7 @@ jobs:
136137
- run: yarn test --runInBand --detectOpenHandles --forceExit --verbose shared ui desktop
137138
- run: cd runner && go test -cover
138139
- run: yarn release-desktop 0.0.0-e2etest
140+
- run: git reset --hard # release blows everything up
139141
- run: yarn e2e-test
140142

141143
e2e-windows:
@@ -166,6 +168,7 @@ jobs:
166168
- run: yarn test --runInBand --detectOpenHandles --forceExit --verbose shared ui desktop
167169
- run: cd runner && go test -cover
168170
- run: yarn release-desktop 0.0.0-e2etest
171+
- run: git reset --hard # release blows everything up
169172
- run: yarn e2e-test
170173

171174
dsq-tests-ubuntu:

DEV_FAQ.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,17 @@ For example:
4242

4343
```bash
4444
yarn test desktop/panel/file.test.js --dsrunner=memory
45+
```
46+
47+
## Adding/editing language libraries
48+
49+
Language libraries (i.e. the implementation of
50+
DM_getPanel/DM_setPanel) are in shared/libraries/*.jsonnet. They are
51+
in jsonnet so that you can have nicely formatted code. They get
52+
compiled to JSON and committed. They also get embedded into Go code.
53+
54+
To re-run this process, use on Mac or Linux:
55+
56+
```
57+
$ yarn build-language-definitions
4558
```

desktop/panel/columns.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ const { fetchResultsHandler } = require('./columns');
1414
const { RUNNERS } = require('./testutil');
1515

1616
for (const runner of RUNNERS) {
17+
if (!runner?.go) {
18+
continue; // Otherwise not implemented
19+
}
20+
1721
test(`store and retrieve literal ${
1822
runner ? 'using ' + runner : ''
1923
}, specific columns`, async () => {

desktop/panel/columns.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ import fs from 'fs';
22
import { PanelBody } from '../../shared/rpc';
33
import {
44
GraphPanelInfo,
5-
LiteralPanelInfo,
65
PanelInfo,
76
ProjectState,
87
TablePanelInfo,
98
} from '../../shared/state';
109
import { columnsFromObject } from '../../shared/table';
11-
import { parseArrayBuffer } from '../../shared/text';
1210
import { Dispatch, RPCHandler } from '../rpc';
1311
import { getProjectResultsFile } from '../store';
1412
import { getPanelResult, getProjectAndPanel } from './shared';
@@ -54,16 +52,6 @@ export async function evalColumns(
5452
};
5553
}
5654

57-
export async function evalLiteral(
58-
project: ProjectState,
59-
panel: PanelInfo
60-
): Promise<EvalHandlerResponse> {
61-
const {
62-
literal: { contentTypeInfo },
63-
} = guardPanel<LiteralPanelInfo>(panel, 'literal');
64-
return await parseArrayBuffer(contentTypeInfo, '', panel.content);
65-
}
66-
6755
export const fetchResultsHandler: RPCHandler<PanelBody, EvalHandlerResponse> = {
6856
resource: 'fetchResults',
6957
handler: async function (

desktop/panel/eval.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,21 @@ type EvalHandler = (
4343
dispatch: Dispatch
4444
) => Promise<EvalHandlerResponse>;
4545

46+
function unimplementedInJavaScript(): EvalHandler {
47+
return function () {
48+
throw new Error('There is a bug, this condition should not be possible.');
49+
};
50+
}
51+
4652
const EVAL_HANDLERS: { [k in PanelInfoType]: () => EvalHandler } = {
47-
filagg: () => require('./filagg').evalFilterAggregate,
48-
file: () => require('./file').evalFile,
49-
http: () => require('./http').evalHTTP,
50-
program: () => require('./program').evalProgram,
5153
database: () => require('./database').evalDatabase,
5254
table: () => require('./columns').evalColumns,
5355
graph: () => require('./columns').evalColumns,
54-
literal: () => require('./columns').evalLiteral,
56+
literal: unimplementedInJavaScript,
57+
file: unimplementedInJavaScript,
58+
http: unimplementedInJavaScript,
59+
program: unimplementedInJavaScript,
60+
filagg: unimplementedInJavaScript,
5561
};
5662

5763
const runningProcesses: Record<string, Set<number>> = {};

desktop/panel/filagg.ts

Lines changed: 0 additions & 50 deletions
This file was deleted.

desktop/panel/file.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ const baseline = JSON.parse(
2828
);
2929

3030
for (const subprocessName of RUNNERS) {
31+
if (!subprocessName?.go) {
32+
continue; // Otherwise not implemented
33+
}
34+
3135
describe(
3236
'eval generic file via ' +
3337
(subprocessName ? subprocessName.go || subprocessName.node : 'memory'),

desktop/panel/file.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.

desktop/panel/http.test.js

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ const { ensureSigningKey } = require('../secret');
44
const { spawn } = require('child_process');
55
const { CODE_ROOT } = require('../constants');
66
const path = require('path');
7+
const cp = require('child_process');
8+
const os = require('os');
79
const fs = require('fs');
810
const { getProjectResultsFile } = require('../store');
911
const {
@@ -27,17 +29,54 @@ const baseline = JSON.parse(
2729
);
2830

2931
const USERDATA_FILES = ['json', 'xlsx', 'csv', 'parquet', 'jsonl'];
32+
const PORT = '9799';
3033

31-
const cp = spawn('python3', ['-m', 'http.server', '9799']);
32-
cp.stdout.on('data', (data) => {
33-
console.log(data.toString());
34-
});
34+
let server;
35+
beforeAll(async () => {
36+
// TODO: port this logic to other platforms...
37+
if (process.platform === 'linux') {
38+
try {
39+
cp.execSync(
40+
`bash -c "ps aux | grep 'http.server ${PORT}' | grep -v grep | awk '{print \\$2}' | xargs -I {} kill {}"`
41+
);
42+
} catch (e) {
43+
console.error(e);
44+
}
45+
}
3546

36-
cp.stderr.on('data', (data) => {
37-
console.warn(data.toString());
47+
server = spawn('python3', ['-m', 'http.server', PORT]);
48+
let ready = false;
49+
server.on('spawn', () => {
50+
ready = true;
51+
});
52+
53+
server.stdout.on('data', (data) => {
54+
console.log(data.toString());
55+
});
56+
57+
server.stderr.on('data', (data) => {
58+
console.warn(data.toString());
59+
});
60+
61+
return new Promise(async (resolve, reject) => {
62+
try {
63+
while (!ready) {
64+
console.log('still waiting');
65+
await new Promise((resolve) => setTimeout(resolve, 300));
66+
}
67+
68+
resolve();
69+
} catch (e) {
70+
reject(e);
71+
}
72+
});
3873
});
3974

4075
for (const subprocessName of RUNNERS) {
76+
if (!subprocessName?.go) {
77+
continue; // Otherwise not implemented
78+
}
79+
4180
describe(
4281
'eval generic file via ' +
4382
(subprocessName ? subprocessName.go || subprocessName.node : 'memory'),
@@ -208,5 +247,5 @@ for (const subprocessName of RUNNERS) {
208247
}
209248

210249
afterAll(() => {
211-
process.kill(cp.pid);
250+
process.kill(server.pid);
212251
});

desktop/panel/http.ts

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)