Skip to content
This repository has been archived by the owner on Nov 4, 2023. It is now read-only.

Commit

Permalink
Merge branch 'v3-dev' into v3
Browse files Browse the repository at this point in the history
  • Loading branch information
Maigret Aurélien committed May 9, 2020
2 parents 0592dfa + f40feee commit 878d427
Show file tree
Hide file tree
Showing 45 changed files with 4,017 additions and 271 deletions.
25 changes: 1 addition & 24 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,24 +1 @@
module.exports = {
root: true,
env: {
commonjs: true,
es6: true,
node: true
},
extends: [
// https://github.com/standard/standard/blob/master/docs/RULES-en.md
'standard'
],
plugins: [
],
parserOptions: {
sourceType: 'module',
ecmaFeatures: {
experimentalObjectRestSpread: true
}
},
rules: {
'semi': 'error',
'no-console': 'warn'
}
}
module.exports = require('./shared/eslint')('back')
9 changes: 6 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ typings/
# IntelliJ
.idea/

# Dist files (for now)
public/main.js
public/main.js.map
# Dist files
dist/
public/app.js
public/app.js.map
public/launcher.js
public/launcher.js.map
27 changes: 1 addition & 26 deletions app/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,26 +1 @@
module.exports = {
root: false,
env: {
browser: true,
es6: true
},
extends: [
// https://github.com/standard/standard/blob/master/docs/RULES-en.md
// 'standard',
'plugin:vue3/recommended'
],
plugins: [
'vue'
],
parserOptions: {
parser: 'vue-eslint-parser',
ecmaVersion: 6,
ecmaFeatures: {
jsx: true,
experimentalObjectRestSpread: true
}
},
rules: {
'semi': 'error'
}
}
module.exports = require('../shared/eslint')('front')
6 changes: 3 additions & 3 deletions app/main.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { createApp } from 'vue'
import App from './app.vue'
import './main.css'
import './fontawesome.css'
import './fontawesome-fonts.css'
import '../shared/css/main.css'
import '../shared/css/fontawesome.css'
import '../shared/css/fontawesome-fonts.css'
import router from './router'
import pkg from '../package.json'

Expand Down
24 changes: 24 additions & 0 deletions app/views/dashboard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,24 @@
</template>

<h2>TODO</h2>
<p class="toast-info">
BUG: "Process killed"
</p>
<p class="toast-info">
BUG: Do not ask request Notification granted
</p>
<p class="toast-info">
BUG: Do not sync files on missing repositories
</p>
<p class="toast-info">
BUG: Error status but process running
</p>
<p class="toast-info">
BUG: PandaLab config PdfTemplates missing
</p>
<p class="toast-info">
NEW: Possibility to choose repositories to sync-files (docs) or run watch (shared)
</p>
<p class="toast-info">
ISO: Home project / Home directory
</p>
Expand All @@ -40,6 +58,12 @@
<p class="toast-info">
NEW: Login protection WS
</p>
<p class="toast-info">
NEW: Electron app to run the 2 commands (<a href="https://github.com/jorangreef/sudo-prompt">sudo-prompt</a>)
</p>
<p class="toast-info">
NEW: Offline mode HTML
</p>

<h2>How to configure</h2>
<p class="toast-info">
Expand Down
41 changes: 41 additions & 0 deletions cli/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const { program } = require('commander')
const pkg = require('../package.json')
const proxyToGce = require('../proxy-to-gce')
const server = require('../server')

program
.version(pkg.version)
.name('gce')

program
.command('server <configDirectories...>')
.description('Run GCE server')
.option('-s, --ssl <gceHost>', 'enable SSL, and set GCE host/domain', null)
.option('-g, --gce-server-port <port>', 'GCE server port', /^[0-9]+$/, 6730)
.option('-l, --gce-lb-port <port>', 'GCE Load-Balancer port', /^[0-9]+$/, 6731)
.action(function (configDirectories, cmd) {
server({
serverPort: +cmd.gceServerPort,
loadBalancerPort: +cmd.gceLbPort,
ssl: cmd.ssl,
configDirectories
})
})

program
.command('proxy-to-gce')
.description('Create a proxy to GCE on port 443')
.option('-l, --gce-lb-port <port>', 'GCE Load-Balancer port', /^[0-9]+$/, 6731)
.option('-m, --manager-port <port>', 'proxy manager port', /^[0-9]+$/, 6732)
.option('-p, --proxy-port <port>', 'proxy port', /^[0-9]+$/, 443)
.option('-s, --manager-stop-path <path>', 'manager path to stop proxy', 'stop-proxy-to-gce')
.action(function (cmd) {
proxyToGce({
gceSecurePort: +cmd.gceLbPort,
managerPort: +cmd.managerPort,
proxyPort: +cmd.proxyPort,
managerStopPath: cmd.managerStopPath
})
})

program.parse()
26 changes: 26 additions & 0 deletions gui/lib/app-focus-events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const electron = require('electron')

module.exports = function (settings) {
if (!settings.window) {
return
}

settings.window.once('ready-to-show', settings.window.show)

electron.ipcMain.on('register-focus-event', event => {
settings.window.on('focus', function () {
event.reply('update-focus', '1')
})
settings.window.on('blur', function () {
event.reply('update-focus', '0')
})
})

electron.ipcMain.on('focus-window', () => {
setImmediate(function () {
settings.window.focus()
settings.window.webContents.focus()
settings.window.focusOnWebView()
})
})
}
41 changes: 41 additions & 0 deletions gui/lib/app-menu.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const electron = require('electron')

module.exports = function (settings) {
if (!settings.window) {
return
}

const isMac = process.platform === 'darwin'

const learnMore = async () => {
await electron.shell.openExternal('https://github.com/Dewep/GCE')
}

const menuTemplate = isMac ? [
{
label: 'GCE',
submenu: [
{ role: 'about' },
{ role: 'quit' }
]
}, {
label: 'Edit',
submenu: [
{ label: 'Cut', accelerator: 'CmdOrCtrl+X', selector: 'cut:' },
{ label: 'Copy', accelerator: 'CmdOrCtrl+C', selector: 'copy:' },
{ label: 'Paste', accelerator: 'CmdOrCtrl+V', selector: 'paste:' }
]
}, {
label: 'Help',
submenu: [
{
label: 'Learn More',
click: learnMore
}
]
}
] : []

const menu = electron.Menu.buildFromTemplate(menuTemplate)
electron.Menu.setApplicationMenu(menu)
}
35 changes: 35 additions & 0 deletions gui/lib/app-run-server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const electron = require('electron')
const path = require('path')
const { fork } = require('child_process')

module.exports = function (settings) {
if (!settings.window) {
return
}

electron.ipcMain.on('run-server', (event, arg) => {
const server = fork(path.join(__dirname, '..', '..', 'test.js'), [], {
stdio: ['pipe', 'pipe', 'pipe', 'ipc']
})

server.stdout.on('data', (d) => {
event.reply('run-server-stdout', d.toString())
})

server.stderr.on('data', (d) => {
event.reply('run-server-stderr', d.toString())
})

server.on('message', (m) => {
event.reply('run-server-stdout', m)
})

server.on('error', (err) => {
event.reply('run-server-stderr', err.message)
})

server.on('close', (code) => {
event.reply('run-server-close', code)
})
})
}
16 changes: 16 additions & 0 deletions gui/lib/app-select-directory.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const { dialog, ipcMain } = require('electron')

module.exports = function (settings) {
if (!settings.window) {
return
}

ipcMain.on('select-directory', async (event, arg) => {
try {
const result = await dialog.showOpenDialog(settings.window, {
properties: ['openDirectory']
})
event.reply('select-directory', result.filePaths)
} catch (err) {}
})
}
66 changes: 66 additions & 0 deletions gui/lib/app-tray-icon.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
const electron = require('electron')

module.exports = function (settings) {
if (!settings.window || !settings.appTrayIcon) {
return
}

settings.appTray = new electron.Tray(settings.appTrayIcon)

settings.appTray.setContextMenu(electron.Menu.buildFromTemplate([
{
label: 'Show App',
click: function () {
settings.window.show()
}
},
{
label: 'Minimize App',
click: function () {
settings.window.hide()
}
},
{
label: 'Quit',
click: function () {
settings.app.isQuiting = true
settings.app.quit()
}
}
]))

settings.appTray.on('click', () => {
if (settings.minimizeOnClose && settings.window.isVisible()) {
settings.window.hide()
return
}

if (settings.window.isMinimized()) {
settings.window.restore()
}
settings.window.show()
settings.window.focus()
})

electron.ipcMain.on('minimize-on-close', (event, arg) => {
settings.minimizeOnClose = arg === '1'
})

settings.window.on('minimize', function (event) {
if (settings.minimizeOnClose) {
event.preventDefault()
settings.window.hide()
}
})

// Emitted when the window is going to be closed.
settings.window.on('close', function (event) {
if (settings.minimizeOnClose && !settings.app.isQuiting) {
event.preventDefault()
settings.window.hide()
return false
}

settings.window.hide()
})
}
Loading

0 comments on commit 878d427

Please sign in to comment.