Browse Source

Config is now embedded inside main application

pull/342/head
Christian7573 4 years ago
parent
commit
6058b2bb97
  1. 4
      src/assets/xterm_config/functionality.js
  2. 1
      src/assets/xterm_config/style.css
  3. 2
      src/assets/xterm_config/xterm_advanced_options.js
  4. 2
      src/assets/xterm_config/xterm_color_theme.js
  5. 2
      src/assets/xterm_config/xterm_defaults.js
  6. 2
      src/assets/xterm_config/xterm_general_options.js
  7. 6
      src/client/wetty/term.ts
  8. 4
      src/client/wetty/term/confiruragtion.ts
  9. 4
      src/server/socketServer/html.ts

4
src/assets/xterm_config/functionality.js

@ -76,7 +76,7 @@ function setItem(json, path, item) {
} }
} }
window.load_options = function(config) { window.loadOptions = function(config) {
allOptions.forEach(option => { allOptions.forEach(option => {
let value = getItem(config, option.path); let value = getItem(config, option.path);
if (option.nullable === true && option.type === "text" && value == null) value = null; if (option.nullable === true && option.type === "text" && value == null) value = null;
@ -88,7 +88,7 @@ window.load_options = function(config) {
}); });
} }
if (window.top !== window) alert("Error: Page is top level. This page is supposed to be accessed from inside Wetty."); if (window.top === window) alert("Error: Page is top level. This page is supposed to be accessed from inside Wetty.");
document.querySelector("#save_button").addEventListener("click", () => { document.querySelector("#save_button").addEventListener("click", () => {
const newConfig = {}; const newConfig = {};

1
src/assets/xterm_config/style.css

@ -1,4 +1,5 @@
html { background-color: black; } html { background-color: black; }
html, body { overflow: hidden auto; }
body { body {
display: flex; display: flex;
flex-flow: column nowrap; flex-flow: column nowrap;

2
src/assets/xterm_config/xterm_advanced_options.js

@ -1,4 +1,4 @@
window.inflate_options([ window.inflateOptions([
{ {
type: "boolean", type: "boolean",
name: "Allow Proposed XTerm APIs", name: "Allow Proposed XTerm APIs",

2
src/assets/xterm_config/xterm_color_theme.js

@ -11,7 +11,7 @@ const selectionColorOpacityOption = {
path: ["wetty_void"], path: ["wetty_void"],
}; };
window.inflate_options([ window.inflateOptions([
{ {
type: "color", type: "color",
name: "Foreground Color", name: "Foreground Color",

2
src/assets/xterm_config/xterm_defaults.js

@ -1,5 +1,5 @@
const DEFAULT_BELL_SOUND = 'data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjMyLjEwNAAAAAAAAAAAAAAA//tQxAADB8AhSmxhIIEVCSiJrDCQBTcu3UrAIwUdkRgQbFAZC1CQEwTJ9mjRvBA4UOLD8nKVOWfh+UlK3z/177OXrfOdKl7pyn3Xf//WreyTRUoAWgBgkOAGbZHBgG1OF6zM82DWbZaUmMBptgQhGjsyYqc9ae9XFz280948NMBWInljyzsNRFLPWdnZGWrddDsjK1unuSrVN9jJsK8KuQtQCtMBjCEtImISdNKJOopIpBFpNSMbIHCSRpRR5iakjTiyzLhchUUBwCgyKiweBv/7UsQbg8isVNoMPMjAAAA0gAAABEVFGmgqK////9bP/6XCykxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq'; const DEFAULT_BELL_SOUND = 'data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjMyLjEwNAAAAAAAAAAAAAAA//tQxAADB8AhSmxhIIEVCSiJrDCQBTcu3UrAIwUdkRgQbFAZC1CQEwTJ9mjRvBA4UOLD8nKVOWfh+UlK3z/177OXrfOdKl7pyn3Xf//WreyTRUoAWgBgkOAGbZHBgG1OF6zM82DWbZaUmMBptgQhGjsyYqc9ae9XFz280948NMBWInljyzsNRFLPWdnZGWrddDsjK1unuSrVN9jJsK8KuQtQCtMBjCEtImISdNKJOopIpBFpNSMbIHCSRpRR5iakjTiyzLhchUUBwCgyKiweBv/7UsQbg8isVNoMPMjAAAA0gAAABEVFGmgqK////9bP/6XCykxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq';
window.load_options({ window.loadOptions({
wetty_fit_terminal: true, wetty_fit_terminal: true,
wetty_void: 0, wetty_void: 0,

2
src/assets/xterm_config/xterm_general_options.js

@ -1,4 +1,4 @@
window.inflate_options([ window.inflateOptions([
{ {
type: "text", type: "text",
name: "Font Family", name: "Font Family",

6
src/client/wetty/term.ts

@ -5,19 +5,19 @@ import { FitAddon } from 'xterm-addon-fit';
import { Terminal } from 'xterm'; import { Terminal } from 'xterm';
import type { Term } from './shared/type'; import type { Term } from './shared/type';
import { configureTerm } from './term/confiruragtion.js'; import { configureTerm, shouldFitTerm } from './term/confiruragtion.js';
import { terminal as termElement } from '../shared/elements.js'; import { terminal as termElement } from '../shared/elements.js';
export function terminal(socket: typeof Socket): Term | undefined { export function terminal(socket: typeof Socket): Term | undefined {
const term = new Terminal() as Term; const term = new Terminal() as Term;
if (_.isNull(termElement)) return; if (_.isNull(termElement)) return undefined;
const webLinksAddon = new WebLinksAddon(); const webLinksAddon = new WebLinksAddon();
term.loadAddon(webLinksAddon); term.loadAddon(webLinksAddon);
const fitAddon = new FitAddon(); const fitAddon = new FitAddon();
term.loadAddon(fitAddon); term.loadAddon(fitAddon);
term.open(termElement); term.open(termElement);
term.resizeTerm = () => { term.resizeTerm = () => {
fitAddon.fit(); if (shouldFitTerm()) fitAddon.fit();
socket.emit('resize', { cols: term.cols, rows: term.rows }); socket.emit('resize', { cols: term.cols, rows: term.rows });
}; };
configureTerm(term); configureTerm(term);

4
src/client/wetty/term/confiruragtion.ts

@ -35,3 +35,7 @@ export function configureTerm(term: Term): void {
false, false,
); );
} }
export function shouldFitTerm(): boolean {
return (loadOptions() as any).wetty_fit_terminal ?? true;
}

4
src/server/socketServer/html.ts

@ -9,6 +9,7 @@ const render = (
favicon: string, favicon: string,
css: string[], css: string[],
js: string[], js: string[],
configUrl: string,
): string => `<!doctype html> ): string => `<!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
@ -31,7 +32,7 @@ const render = (
href="#" href="#"
alt="Toggle options" alt="Toggle options"
><i class="fas fa-cogs"></i></a> ><i class="fas fa-cogs"></i></a>
<textarea class="editor"></textarea> <iframe class="editor" src="${configUrl}"></iframe>
</div> </div>
<div id="terminal"></div> <div id="terminal"></div>
${js ${js
@ -50,6 +51,7 @@ export const html = (base: string, title: string): RequestHandler => (
`${base}/favicon.ico`, `${base}/favicon.ico`,
cssFiles.map(css => `${base}/assets/css/${css}.css`), cssFiles.map(css => `${base}/assets/css/${css}.css`),
jsFiles.map(js => `${base}/client/${js}.js`), jsFiles.map(js => `${base}/client/${js}.js`),
`${base}/assets/xterm_config/index.html`,
), ),
); );
}; };

Loading…
Cancel
Save