diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2018-02-20 21:44:28 +0000 |
|---|---|---|
| committer | James Barnett <noreply@jamesbarnett.xyz> | 2018-02-20 21:44:28 +0000 |
| commit | b81c0f834f7f2285c40cfd57eb2943140025edad (patch) | |
| tree | 2c45b5d844e2a8413f3189090e5f6373226f4fca /main.js | |
| parent | 52f6783f63d2e2f52e06d14a97b5e00eab8ac1c0 (diff) | |
| download | sql-plus-plus-b81c0f834f7f2285c40cfd57eb2943140025edad.tar.xz sql-plus-plus-b81c0f834f7f2285c40cfd57eb2943140025edad.zip | |
Dynamically create query executors - WIP
Diffstat (limited to 'main.js')
| -rw-r--r-- | main.js | 64 |
1 files changed, 43 insertions, 21 deletions
@@ -4,8 +4,8 @@ const path = require("path"); const url = require("url"); let uiWindow; -let queryExecutorProcess; let newConnectionDialog; +let queryExecutors = []; function createMainWindow() { uiWindow = new BrowserWindow({ @@ -24,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", () => { @@ -78,6 +60,36 @@ 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, payload) => { + // TODO - handle connection initialisation errors + + uiWindow.webContents.send("instanceManager.registerNewInstance", payload); + newConnectionDialog.close(); +}); + const { webContents } = require('electron'); @@ -88,11 +100,21 @@ ipcMain.on("queryExecutor.runQueryComplete", (event, payload) => { w.send("queryExecutor.runQueryComplete", payload); }) }); -ipcMain.on("queryExecutor.runQuery", (event, payload) => queryExecutorProcess.webContents.send("queryExecutor.runQuery", payload)); + +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) => queryExecutorProcess.webContents.send("queryExecutor.queryTableMetadata", payload));
\ No newline at end of file +; +ipcMain.on("queryExecutor.queryTableMetadata", (event, payload) => { + queryExecutors.forEach((executor) => { + executor.webContents.send("queryExecutor.queryTableMetadata", payload); + }); +});
\ No newline at end of file |