aboutsummaryrefslogtreecommitdiff
path: root/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'main.js')
-rw-r--r--main.js106
1 files changed, 83 insertions, 23 deletions
diff --git a/main.js b/main.js
index cc89b11..493d066 100644
--- a/main.js
+++ b/main.js
@@ -4,7 +4,8 @@ const path = require("path");
const url = require("url");
let uiWindow;
-let queryExecutorProcess;
+let newConnectionDialog;
+let queryExecutors = [];
function createMainWindow() {
uiWindow = new BrowserWindow({
@@ -23,26 +24,8 @@ function createMainWindow() {
});
}
-function createQueryExecutorProcess() {
- queryExecutorProcess = new BrowserWindow({
- show: false
- });
-
- queryExecutorProcess.loadURL(url.format({
- pathname: path.join(__dirname, "./query-executor-wrapper.html"),
- protocol: "file:",
- slashes: true
- }));
-
- queryExecutorProcess.on("closed", () => {
- queryExecutorProcess = null;
- });
-
-}
-
app.on("ready", () => {
createMainWindow();
- createQueryExecutorProcess();
});
app.on("window-all-closed", () => {
@@ -57,8 +40,85 @@ app.on("activate", () => {
}
});
-ipcMain.on("queryExecutor.runQueryComplete", (event, payload) => uiWindow.webContents.send("queryExecutor.runQueryComplete", payload));
-ipcMain.on("queryExecutor.runQuery", (event, payload) => queryExecutorProcess.webContents.send("queryExecutor.runQuery", payload));
+function createNewConnectionDialog() {
+ newConnectionDialog = new BrowserWindow({
+ width: 400,
+ height: 540
+ });
+ newConnectionDialog.loadURL(url.format({
+ pathname: path.join(__dirname, "new-connection.html"),
+ protocol: "file:",
+ slashes: true
+ }));
+
+ newConnectionDialog.on("closed", () => {
+ newConnectionDialog = null;
+ });
+}
+
+ipcMain.on("instanceManager.openNewConnectionDialog", (event, payload) => {
+ createNewConnectionDialog();
+});
+
+function createQueryExecutor(payload) {
+ let executor = new BrowserWindow({
+ show: false,
+ });
+
+ executor.connectionConfig = payload;
+
+ executor.loadURL(url.format({
+ pathname: path.join(__dirname, "./query-executor-wrapper.html"),
+ protocol: "file:",
+ slashes: true
+ }));
+
+ queryExecutors.push(executor);
+
+ return executor;
+}
+
+ipcMain.on("newConnection.createConnection", (event, payload) => {
+ createQueryExecutor(payload);
+});
+
+
+ipcMain.on("queryExecutor.initialiseConnectionCallback", (event, executorId) => {
+ // TODO - handle connection initialisation errors
+
+ // Bit of a hack, cant guarantee this was the executor which just got initalised.executor
+ // Should pass it back from the executor via the payload
+ let connectionName = queryExecutors[queryExecutors.length -1].connectionConfig.name;
+
+ uiWindow.webContents.send("instanceManager.registerNewInstance", {assignedQueryExecutorId: executorId, connectionName: connectionName});
+ newConnectionDialog.close();
+});
+
+
+const { webContents } = require('electron');
+
+// TODO - only send messages to instance manager which will route request to correct webView, rather than
+// sending to all webViews
+ipcMain.on("queryExecutor.runQueryComplete", (event, payload) => {
+ webContents.getAllWebContents().forEach((w) => {
+ w.send("queryExecutor.runQueryComplete", payload);
+ })
+});
-ipcMain.on("queryExecutor.queryTableMetadataComplete", (event, payload) => uiWindow.webContents.send("queryExecutor.queryTableMetadataComplete", payload));
-ipcMain.on("queryExecutor.queryTableMetadata", (event, payload) => queryExecutorProcess.webContents.send("queryExecutor.queryTableMetadata", payload)); \ No newline at end of file
+ipcMain.on("queryExecutor.runQuery", (event, payload) => {
+ queryExecutors.forEach((executor) => {
+ executor.webContents.send("queryExecutor.runQuery", payload);
+ });
+});
+
+ipcMain.on("queryExecutor.queryTableMetadataComplete", (event, payload) => {
+ webContents.getAllWebContents().forEach((w) => {
+ w.send("queryExecutor.queryTableMetadataComplete", payload);
+ })
+});
+;
+ipcMain.on("queryExecutor.queryTableMetadata", (event, payload) => {
+ queryExecutors.forEach((executor) => {
+ executor.webContents.send("queryExecutor.queryTableMetadata", payload);
+ });
+}); \ No newline at end of file