add scheduler btn

This commit is contained in:
2023-01-31 09:46:47 +01:00
parent 183b4fc68b
commit 957aba82e1
4 changed files with 61 additions and 22 deletions
+18 -1
View File
@@ -1,6 +1,6 @@
const {app, BrowserWindow, ipcMain} = require('electron') const {app, BrowserWindow, ipcMain} = require('electron')
const {_android: android} = require('playwright'); const {_android: android} = require('playwright');
const startBookWithNumbers = require('./src/appointment') const {startBookWithNumbers, scheduleBookWithNumbers} = require('./src/appointment')
const path = require("path"); const path = require("path");
const homedir = require('os').homedir(); const homedir = require('os').homedir();
const loadIniFile = require('read-ini-file') const loadIniFile = require('read-ini-file')
@@ -22,6 +22,9 @@ const createWindow = () => {
ipcMain.on('start-book', (event, startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) => { ipcMain.on('start-book', (event, startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) => {
startBook(startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) startBook(startNumber, endNumber, selectedStore, audioAnalyse, alertBeep)
}) })
ipcMain.on('schedule-book', (event, startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) => {
scheduleBook(startNumber, endNumber, selectedStore, audioAnalyse, alertBeep)
})
ipcMain.on('clearAllBrowsers', (event) => { ipcMain.on('clearAllBrowsers', (event) => {
clearAllBrowsers() clearAllBrowsers()
}) })
@@ -83,6 +86,20 @@ function startBook(startNumber, endNumber, selectedStore, audioAnalyse, alertBee
}) })
} }
function scheduleBook(startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) {
console.log("scheduleBook: " + startNumber);
console.log("endNumber: " + endNumber);
console.log("selectedStore: " + selectedStore);
console.log("audioAnalyse: " + audioAnalyse);
//load config.ini file
let config = loadIniFile.sync(configFilePath);
console.log(config);
let contactExcelFilePath = config.DEFAULT.contact_list_file;
scheduleBookWithNumbers(startNumber, endNumber, selectedStore, contactExcelFilePath, audioAnalyse, alertBeep).then(() => {
console.log("stop")
})
}
async function scanDevices() { async function scanDevices() {
exec("adb devices ", (error, stdout, stderr) => { exec("adb devices ", (error, stdout, stderr) => {
if (error) { if (error) {
+7
View File
@@ -2,6 +2,13 @@ const {contextBridge, ipcRenderer} = require('electron')
contextBridge.exposeInMainWorld('appointment', { contextBridge.exposeInMainWorld('appointment', {
startBook: (startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) => ipcRenderer.send('start-book', startNumber, endNumber, selectedStore, audioAnalyse, alertBeep), startBook: (startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) => ipcRenderer.send('start-book', startNumber, endNumber, selectedStore, audioAnalyse, alertBeep),
scheduleBook: (startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) => ipcRenderer.send('schedule-book', startNumber, endNumber, selectedStore, audioAnalyse, alertBeep),
clearAllBrowsers: () => ipcRenderer.send('clearAllBrowsers'), clearAllBrowsers: () => ipcRenderer.send('clearAllBrowsers'),
scanDevices: () => ipcRenderer.invoke('scan-devices') scanDevices: () => ipcRenderer.invoke('scan-devices')
}) })
// contextBridge.exposeInMainWorld('appointment', {
// startBook: (startNumber, endNumber, selectedStore, audioAnalyse, alertBeep) => ipcRenderer.send('schedule-book', startNumber, endNumber, selectedStore, audioAnalyse, alertBeep),
// clearAllBrowsers: () => ipcRenderer.send('clearAllBrowsers'),
// scanDevices: () => ipcRenderer.invoke('scan-devices')
// })
+6
View File
@@ -24,6 +24,12 @@ window.addEventListener('load', () => {
window.appointment.startBook(startNumber, endNumber, selectedStore, audioAnalyse, alertBeep); window.appointment.startBook(startNumber, endNumber, selectedStore, audioAnalyse, alertBeep);
}) })
document.getElementById("scheduler_book_btn").addEventListener('click', () => {
let audioAnalyse = document.getElementById("audio_analyse").checked;
let alertBeep = document.getElementById("alert_beep").checked;
window.appointment.scheduleBook(startNumber, endNumber, selectedStore, audioAnalyse, alertBeep);
})
document.getElementById("clear_all_browsers").addEventListener('click', () => { document.getElementById("clear_all_browsers").addEventListener('click', () => {
window.appointment.clearAllBrowsers(); window.appointment.clearAllBrowsers();
}) })
+29 -20
View File
@@ -3,6 +3,7 @@ const ExcelUtil = require("./excel/ExcelUtil");
const CommandorPage = require("./workers/CommandorPage"); const CommandorPage = require("./workers/CommandorPage");
const {MongoManager, formatDate} = require("./workers/mongo_manager"); const {MongoManager, formatDate} = require("./workers/mongo_manager");
const alert = require('alert'); const alert = require('alert');
const schedule = require("node-schedule");
const mongoManager = new MongoManager(); const mongoManager = new MongoManager();
const SEVEN_DAYS_IN_S = 3600 * 24 * 7; const SEVEN_DAYS_IN_S = 3600 * 24 * 7;
@@ -132,6 +133,14 @@ async function startWithList(contacts, device, selectedStore, audioAnalyse, aler
}, Promise.resolve()); }, Promise.resolve());
} }
async function scheduleBookWithNumbers(startNumber, endNumber, selectedStore, pathToExcelFile = '/Users/lpan/Desktop/contact_all.xlsx', audioAnalyse = false, alertBeep = false) {
console.log("scheduleBookWithNumbers() called")
schedule.scheduleJob('45 9 * * *', function () {
console.log("start startBookWithNumbers")
startBookWithNumbers(startNumber, endNumber, selectedStore, pathToExcelFile, audioAnalyse = false, alertBeep = false)
})
}
async function startBookWithNumbers(startNumber, endNumber, selectedStore, pathToExcelFile = '/Users/lpan/Desktop/contact_all.xlsx', audioAnalyse = false, alertBeep = false) { async function startBookWithNumbers(startNumber, endNumber, selectedStore, pathToExcelFile = '/Users/lpan/Desktop/contact_all.xlsx', audioAnalyse = false, alertBeep = false) {
let allContactList = excelUtil.readContacts(pathToExcelFile); let allContactList = excelUtil.readContacts(pathToExcelFile);
let contactList; let contactList;
@@ -145,27 +154,27 @@ async function startBookWithNumbers(startNumber, endNumber, selectedStore, pathT
return return
} }
mongoManager.connect().then(r => { mongoManager.connect().then(r => {
filterAlreadyBookedContacts(contactList).then((listToBook)=>{ filterAlreadyBookedContacts(contactList).then((listToBook) => {
filterAlreadyAccepteddContacts(listToBook).then(notAcceptedContacts => { filterAlreadyAccepteddContacts(listToBook).then(notAcceptedContacts => {
filterBlacklistedContacts(notAcceptedContacts).then(listWithoutBlackContact => { filterBlacklistedContacts(notAcceptedContacts).then(listWithoutBlackContact => {
console.log("number of contacts to book:" + listWithoutBlackContact.length) console.log("number of contacts to book:" + listWithoutBlackContact.length)
android.devices().then((devices) => { android.devices().then((devices) => {
if (devices.length === 0) { if (devices.length === 0) {
alert("未找到连接的设备"); alert("未找到连接的设备");
return return
} }
let segmentNumber = listWithoutBlackContact.length / devices.length; let segmentNumber = listWithoutBlackContact.length / devices.length;
console.log("connected device number:" + devices.length) console.log("connected device number:" + devices.length)
console.log("segmentNumber:" + segmentNumber) console.log("segmentNumber:" + segmentNumber)
for (let i = 0; i < devices.length; i++) { for (let i = 0; i < devices.length; i++) {
startWithList(listWithoutBlackContact.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i], selectedStore, audioAnalyse, alertBeep); startWithList(listWithoutBlackContact.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i], selectedStore, audioAnalyse, alertBeep);
} }
})
}) })
} })
) }
}) )
}); })
});
} }
module.exports = startBookWithNumbers module.exports = {startBookWithNumbers, scheduleBookWithNumbers}