oa助手类工具
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

207 lines
8.4 KiB

const { ipcMain, app, Menu, Tray, BrowserWindow, dialog } = require('electron')
const path = require('path')
const fs = require('fs');
const webdata = require(path.join(__dirname, 'web/data.js'));
const libdata = require(path.join(__dirname, 'data.js'));
const git = require(path.join(__dirname, 'git.js'));
const mainwin = require(path.join(__dirname, 'main.js'));
let tray = null
ipcMain.on('new-task-notification', (event) => {
tray.displayBalloon({
title: "可能有新的任务",
content: `当前总任务数${libdata.GetConfig().DaibanCount}`
})
});
ipcMain.on('put-in-tray', (event) => {
if (!tray) {
tray = new Tray(path.join(__dirname, '../windows-icon.png'))
tray.on("double-click", function () {
mainwin.MainWindow.show();
})
tray.on("right-click", function () {
let data = webdata.getTask()
let project_map = webdata.getProjectMap();
let ot = JSON.parse(fs.readFileSync(libdata.OpenTypeMapPath));
result = [];
for (var i in data) {
let submenu = [];
for (var k in data[i]) {
submenu.push({
label: data[i][k]["title"],
type: "submenu",
submenu: [
{
label: "查看详情",
click: (function () {
let id = data[i][k]["id"];
return function () {
mainwin.MainWindow.loadURL(`http://oa.ouxuan.net/task.php?a=x&num=work&show=we&mid=${id}`)
mainwin.MainWindow.show();
}
})()
},
{
label: "切换到该任务分支",
click: (function () {
let project_name = i;
let title = data[project_name][k]["title"];
return function () {
if (!project_map[project_name] || project_map[project_name] == "") {
dialog.showErrorBox(`无法切换分支`, `该项目找不到所在路径(${project_name})`);
return;
}
const workingDirPath = project_map[project_name]
const simpleGit = require('simple-git')(workingDirPath);
git.autoCheckoutLocalBranch(simpleGit, title, function () {
console.log("autoCheckoutLocalBranch")
if (ot[project_name] && ot[project_name] != "" && project_map[project_name] && project_map[project_name] != "") {
var exec = require('child_process').execFile;
exec(ot[project_name], [project_map[project_name]], function (err, data) {
if (err) console.log(err)
console.log(data.toString());
});
}
}, function (err) {
dialog.showErrorBox(`无法切换分支`, err);
})
}
})()
},
]
});
}
let project_dir = project_map[i]
if (!project_dir) {
project_dir = ""
} else {
project_dir = `(${project_dir})`
}
let project_opentype = ot[i]
if (!project_opentype) {
project_opentype = "(未设定)"
} else {
project_opentype = `(${project_opentype})`
}
let op = [
{
label: "关联项目路径" + project_dir,
click: (function (i) {
return function (menuItem, browserWindow, event) {
let project_map = JSON.parse(fs.readFileSync(libdata.ProjectMapPath));
let a = dialog.showOpenDialogSync({ properties: ['openDirectory'] })
if (a) {
project_map[i] = a[0]
fs.writeFileSync(libdata.ProjectMapPath, JSON.stringify(project_map))
}
}
})(i)
},
{
label: "关联程序" + project_opentype,
click: (function (i) {
return function (menuItem, browserWindow, event) {
ot = JSON.parse(fs.readFileSync(libdata.OpenTypeMapPath));
let a = dialog.showOpenDialogSync({ properties: ['openFile'] })
if (a) {
ot[i] = a[0]
fs.writeFileSync(libdata.OpenTypeMapPath, JSON.stringify(ot))
}
}
})(i)
},
,
{
label: "打开项目",
click: (function (i) {
return function (menuItem, browserWindow, event) {
let ot = JSON.parse(fs.readFileSync(libdata.OpenTypeMapPath));
let project_map = JSON.parse(fs.readFileSync(libdata.ProjectMapPath));
if (ot[i] && ot[i] != "" && project_map[i] && project_map[i] != "") {
var exec = require('child_process').execFile;
exec(ot[i], [project_map[i]], function (err, data) {
console.log(err)
console.log(data.toString());
});
}
}
})(i)
},
]
op = [
{
label: "项目操作",
type: "submenu",
submenu: op
},
{
type: "separator"
}
]
let item = {
label: i,
type: "submenu",
submenu: op.concat(submenu)
}
result.push(item);
}
tray.popUpContextMenu(Menu.buildFromTemplate(result.concat({
type: "separator"
}, {
label: "仅查看未完成",
type: "checkbox",
checked: libdata.GetConfig().TaskType == "wwc",
click: function (menuItem, browserWindow, event) {
var config = libdata.GetConfig()
config.TaskType = "my"
if (menuItem.checked) {
config.TaskType = "wwc"
}
libdata.SyncConfig(config)
mainwin.MainWindow.reload()
}
}, {
label: "退出",
click: function () {
app.quit()
}
})))
})
}
})
// exports.createTrayWindow = function () {
// // Create the browser window.
// const mainWindow = new BrowserWindow({
// width: 300,
// height: 600,
// webPreferences: {
// preload: path.join(__dirname, 'web/tray.js')
// }
// })
// mainWindow.loadFile("res/tray.html")
// mainWindow.hide()
// }