can show screen with Electron

This commit is contained in:
2022-09-12 20:36:26 +02:00
parent fb69de40d0
commit a9ad4a968a
5 changed files with 107 additions and 51 deletions
+56
View File
@@ -0,0 +1,56 @@
const {_android: android} = require('playwright');
const ExcelUtil = require("./src/excel/ExcelUtil");
const CommandorPage = require("./src/workers/CommandorPage");
const {MongoManager, formatDate} = require("./src/workers/mongo_manager");
const mongoManager = new MongoManager();
let excelUtil = new ExcelUtil();
let contactList = excelUtil.readContacts()
mongoManager.connect().then(r =>
android.devices().then((devices) => {
let segmentNumber = contactList.length / devices.length;
for (let i = 0; i < devices.length; i++) {
startWithList(contactList.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i]);
}
}))
// Connect to the device.
async function needToBook(contact, mongoManager) {
let collectionName = formatDate(new Date())
let alreadBooked = await mongoManager.getAllSuccessfulItemsForDay(collectionName)
let toReturn = true;
await alreadBooked.forEach((bookedItem) => {
if (bookedItem.email === contact.mail) {
toReturn = false;
}
}
)
return toReturn
}
async function startBook(contactPojo, device) {
console.log(`Model: ${device.model()}`);
console.log(`Serial: ${device.serial()}`);
if (await needToBook(contactPojo, mongoManager)) {
let commandor = new CommandorPage(contactPojo, device, mongoManager);
//read contacts form excel
return await commandor.loadPage();
} else {
console.log("do not send request --> skip")
}
}
async function startWithList(contacts, device) {
await contacts.reduce(async (promise, contactPojo) => {
// This line will wait for the last async function to finish.
// The first iteration uses an already resolved Promise
// so, it will immediately continue.
await promise;
const contents = await startBook(contactPojo, device);
console.log(contents);
}, Promise.resolve());
}
+15
View File
@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<title>爱马仕约会</title>
</head>
<body>
<h1>Hello World!</h1>
We are using Node.js <span id="node-version"></span>,
Chromium <span id="chrome-version"></span>,
and Electron <span id="electron-version"></span>.
</body>
</html>
+19 -50
View File
@@ -1,56 +1,25 @@
const {_android: android} = require('playwright');
const ExcelUtil = require("./src/excel/ExcelUtil");
const CommandorPage = require("./src/workers/CommandorPage");
const {MongoManager, formatDate} = require("./src/workers/mongo_manager");
const {app, BrowserWindow} = require('electron')
const path = require("path");
const mongoManager = new MongoManager();
let excelUtil = new ExcelUtil();
let contactList = excelUtil.readContacts()
mongoManager.connect().then(r =>
android.devices().then((devices) => {
let segmentNumber = contactList.length / devices.length;
for (let i = 0; i < devices.length; i++) {
startWithList(contactList.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i]);
const createWindow = () => {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
}))
});
// Connect to the device.
async function needToBook(contact, mongoManager) {
let collectionName = formatDate(new Date())
let alreadBooked = await mongoManager.getAllSuccessfulItemsForDay(collectionName)
let toReturn = true;
await alreadBooked.forEach((bookedItem) => {
if (bookedItem.email === contact.mail) {
toReturn = false;
}
}
)
return toReturn
win.loadFile('index.html');
}
async function startBook(contactPojo, device) {
console.log(`Model: ${device.model()}`);
console.log(`Serial: ${device.serial()}`);
if (await needToBook(contactPojo, mongoManager)) {
let commandor = new CommandorPage(contactPojo, device, mongoManager);
//read contacts form excel
return await commandor.loadPage();
} else {
console.log("do not send request --> skip")
}
}
app.whenReady().then(() => {
createWindow();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
async function startWithList(contacts, device) {
await contacts.reduce(async (promise, contactPojo) => {
// This line will wait for the last async function to finish.
// The first iteration uses an already resolved Promise
// so, it will immediately continue.
await promise;
const contents = await startBook(contactPojo, device);
console.log(contents);
}, Promise.resolve());
}
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit()
})
+7 -1
View File
@@ -1,10 +1,16 @@
{
"main": "main.js",
"version": "0.1",
"author": "Lei PAN",
"description": "爱马仕约会",
"scripts": {
"start": "node main.js"
"start": "electron ."
},
"dependencies": {
"@nodegui/nodegui": "^0.57.1",
"axios": "^0.27.2",
"beepbeep": "^1.3.0",
"electron": "^20.1.3",
"mongodb": "^4.9.1",
"mongoose": "^6.5.4",
"node-xlsx": "^0.21.0",
+10
View File
@@ -0,0 +1,10 @@
window.addEventListener('DOMContentLoaded', () => {
const replaceText = (selector, text) => {
const element = document.getElementById(selector)
if (element) element.innerText = text
}
for (const dependency of ['chrome', 'node', 'electron']) {
replaceText(`${dependency}-version`, process.versions[dependency])
}
})