70 lines
2.3 KiB
TypeScript
70 lines
2.3 KiB
TypeScript
import {BrowserWindow} from "electron";
|
|
import {preloadDefault} from "../lib/env-main";
|
|
import {Page} from "./index";
|
|
import {Events} from "../mapi/event/main";
|
|
import {t} from "../config/lang";
|
|
|
|
export const PageMonitor = {
|
|
NAME: "monitor",
|
|
open: async (option: {title?: string; width?: number; height?: number; [key: string]: any}) => {
|
|
option = Object.assign(
|
|
{
|
|
title: t("加载中"),
|
|
width: 700,
|
|
height: 500,
|
|
url: "",
|
|
script: null,
|
|
openDevTools: false,
|
|
broadcastPages: [],
|
|
},
|
|
option
|
|
);
|
|
const win = new BrowserWindow({
|
|
title: option.title,
|
|
width: option.width,
|
|
height: option.height,
|
|
webPreferences: {
|
|
nodeIntegration: true,
|
|
contextIsolation: false,
|
|
webSecurity: false,
|
|
preload: preloadDefault,
|
|
webviewTag: true,
|
|
},
|
|
show: true,
|
|
frame: false,
|
|
center: true,
|
|
transparent: false,
|
|
focusable: true,
|
|
parent: null,
|
|
alwaysOnTop: false,
|
|
});
|
|
const sendMonitorData = async (type: string, data: any) => {
|
|
return Events.callPage(PageMonitor.NAME, "MonitorData", {type, data});
|
|
};
|
|
win.webContents.on("did-finish-load", () => {
|
|
sendMonitorData("SetTitle", {title: option.title});
|
|
sendMonitorData("LoadUrl", {
|
|
url: option.url,
|
|
script: option.script,
|
|
openDevTools: option.openDevTools,
|
|
});
|
|
});
|
|
win.webContents.on("ipc-message", (event, channel, ...args) => {
|
|
if (channel === "MonitorEvent") {
|
|
const {type, data} = args[0];
|
|
// console.log('MonitorEvent', type, data)
|
|
if (option.broadcastPages.length > 0) {
|
|
Events.broadcast(
|
|
"MonitorEvent",
|
|
{type, data},
|
|
{
|
|
pages: option.broadcastPages,
|
|
}
|
|
);
|
|
}
|
|
}
|
|
});
|
|
await Page.openWindow(PageMonitor.NAME, win, "page/monitor.html");
|
|
},
|
|
};
|