add support for random store
This commit is contained in:
@@ -22,11 +22,13 @@
|
|||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label name="store" for="store_selector">目标商店</label>
|
<label name="store" for="store_selector">目标商店</label>
|
||||||
<select name="store_list" id="store_selector">
|
<select name="store_list" id="store_selector">
|
||||||
|
<option value="random">随机</option>
|
||||||
<option value="faubourg">Hermès Faubourg Saint-Honoré</option>
|
<option value="faubourg">Hermès Faubourg Saint-Honoré</option>
|
||||||
<option value="georgev">Hermès George V</option>
|
<option value="georgev">Hermès George V</option>
|
||||||
<option value="sevres">Hermès Sèvres</option>
|
<option value="sevres">Hermès Sèvres</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="device_list"/>
|
||||||
<br/>
|
<br/>
|
||||||
<button id="start_book_btn">开始约会
|
<button id="start_book_btn">开始约会
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
const {app, BrowserWindow, ipcMain} = require('electron')
|
const {app, BrowserWindow, ipcMain} = require('electron')
|
||||||
|
const {_android: android} = require('playwright');
|
||||||
const startBookWithNumbers = require('./src/appointment')
|
const startBookWithNumbers = require('./src/appointment')
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
@@ -17,6 +18,7 @@ const createWindow = () => {
|
|||||||
ipcMain.on('start-book', (event, startNumber, endNumber, selectedStore) => {
|
ipcMain.on('start-book', (event, startNumber, endNumber, selectedStore) => {
|
||||||
startBook(startNumber, endNumber, selectedStore)
|
startBook(startNumber, endNumber, selectedStore)
|
||||||
})
|
})
|
||||||
|
ipcMain.handle('scan-devices', scanDevices)
|
||||||
win.webContents.openDevTools();
|
win.webContents.openDevTools();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,5 +42,12 @@ function startBook(startNumber, endNumber, selectedStore) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function scanDevices() {
|
||||||
|
let deviceList = await android.devices()
|
||||||
|
return deviceList.map((item) => {
|
||||||
|
return [item.model(), item.serial()]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
const {contextBridge, ipcRenderer} = require('electron')
|
const {contextBridge, ipcRenderer} = require('electron')
|
||||||
|
|
||||||
contextBridge.exposeInMainWorld('appointment', {
|
contextBridge.exposeInMainWorld('appointment', {
|
||||||
startBook: (startNumber, endNumber, selectedStore) => ipcRenderer.send('start-book', startNumber, endNumber, selectedStore)
|
startBook: (startNumber, endNumber, selectedStore) => ipcRenderer.send('start-book', startNumber, endNumber, selectedStore),
|
||||||
|
scanDevices: () => ipcRenderer.invoke('scan-devices')
|
||||||
})
|
})
|
||||||
+12
@@ -3,6 +3,18 @@ let endNumber = 0;
|
|||||||
let selectedStore = 'faubourg';
|
let selectedStore = 'faubourg';
|
||||||
|
|
||||||
window.addEventListener('load', () => {
|
window.addEventListener('load', () => {
|
||||||
|
window.appointment.scanDevices().then((deviceList) => {
|
||||||
|
// Make the list
|
||||||
|
let listElement = document.getElementById('device_list');
|
||||||
|
for (i = 0; i < deviceList.length; ++i) {
|
||||||
|
// Create an item for each one
|
||||||
|
let listItem = document.createElement('li');
|
||||||
|
// Add the item text
|
||||||
|
listItem.innerHTML = deviceList[i].join(" : ");
|
||||||
|
// Add listItem to the listElement
|
||||||
|
listElement.appendChild(listItem);
|
||||||
|
}
|
||||||
|
})
|
||||||
document.getElementById("start_book_btn").addEventListener('click', () => {
|
document.getElementById("start_book_btn").addEventListener('click', () => {
|
||||||
window.appointment.startBook(startNumber, endNumber, selectedStore)
|
window.appointment.startBook(startNumber, endNumber, selectedStore)
|
||||||
})
|
})
|
||||||
|
|||||||
+2
-2
@@ -35,8 +35,8 @@ async function needToBook(contact, mongoManager) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function startBook(contactPojo, device, selectedStore) {
|
async function startBook(contactPojo, device, selectedStore) {
|
||||||
console.log(`Model: ${device.model()}`);
|
console.log(`型号: ${device.model()}`);
|
||||||
console.log(`Serial: ${device.serial()}`);
|
console.log(`序列号: ${device.serial()}`);
|
||||||
if (await needToBook(contactPojo, mongoManager)) {
|
if (await needToBook(contactPojo, mongoManager)) {
|
||||||
let commandor = new CommandorPage(contactPojo, device, mongoManager, selectedStore);
|
let commandor = new CommandorPage(contactPojo, device, mongoManager, selectedStore);
|
||||||
//read contacts form excel
|
//read contacts form excel
|
||||||
|
|||||||
@@ -196,11 +196,13 @@ class CommandorPage {
|
|||||||
async chooseStore(page) {
|
async chooseStore(page) {
|
||||||
try {
|
try {
|
||||||
if (!page.isClosed()) {
|
if (!page.isClosed()) {
|
||||||
|
if (selectedStore !== "random") {
|
||||||
await page.locator(PREFER_STORE).focus()
|
await page.locator(PREFER_STORE).focus()
|
||||||
await delay(1000)
|
await delay(1000)
|
||||||
await page.click(PREFER_STORE);
|
await page.click(PREFER_STORE);
|
||||||
await page.selectOption(PREFER_STORE, this.selectedStore);
|
await page.selectOption(PREFER_STORE, this.selectedStore);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
this.isTerminated = true;
|
this.isTerminated = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user