Skip to content

Commit fc10a3c

Browse files
font smoothing option add, layout fixes
1 parent e47da22 commit fc10a3c

File tree

4 files changed

+123
-36
lines changed

4 files changed

+123
-36
lines changed

csp/webTerminal/css/terminal.css.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ terminal-base tr, td {
9696
z-index: 1000;
9797
background: rgba(40,40,40,0.95);
9898
color: white;
99+
overflow: auto;
99100
100101
transition: left 0.2s ease;
101102
-webkit-transition: left 0.2s ease;

csp/webTerminal/index.csp.xml

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<html>
77
88
<head>
9-
<title id="lang-field-15">Caché WEB Terminal</title>
9+
<title id="lang-field-77">Caché WEB Terminal</title>
1010
<meta charset="utf-8">
1111
<meta name="author" content="ZitRo - InterSystems">
1212
<meta name="Description" content="Web-based terminal for Cache administration.">
@@ -30,86 +30,96 @@
3030
<body>
3131
<div id="terminal-control-panel">
3232
<div class="terminal-control-content">
33-
<span id="terminal-control-closeButton" class="info"><span id="lang-field-0"></span></span>
34-
<h1 id="lang-field-1"></h1>
33+
<span id="terminal-control-closeButton" class="info"><span id="lang-field-62"></span></span>
34+
<h1 id="lang-field-63"></h1>
3535
<table id="terminal-control-table">
3636
<tbody>
3737
<tr>
38-
<td class="center" colspan="2" id="lang-field-2"></td>
38+
<td class="center" colspan="2" id="lang-field-64"></td>
3939
</tr>
4040
<tr>
4141
<td>
4242
<input id="settings-highlighting" type="checkbox">
43-
<label for="settings-highlighting" id="lang-field-3">
43+
<label for="settings-highlighting" id="lang-field-65">
4444
4545
</label>
4646
</td>
47-
<td id="lang-field-4">
47+
<td id="lang-field-66">
4848
4949
</td>
5050
</tr>
5151
<tr>
5252
<td>
5353
<input id="settings-parse-output" type="checkbox">
54-
<label for="settings-parse-output" id="lang-field-5">
54+
<label for="settings-parse-output" id="lang-field-67">
5555
5656
</label>
5757
</td>
58-
<td id="lang-field-6">
58+
<td id="lang-field-68">
5959
6060
</td>
6161
</tr>
6262
<tr>
6363
<td>
6464
<input id="settings-cleanStartup" type="checkbox">
65-
<label for="settings-cleanStartup" id="lang-field-7">
65+
<label for="settings-cleanStartup" id="lang-field-69">
6666
6767
</label>
6868
</td>
69-
<td id="lang-field-8">
69+
<td id="lang-field-70">
7070
7171
</td>
7272
</tr>
7373
<tr>
7474
<td>
7575
<input id="settings-animations" type="checkbox">
76-
<label for="settings-animations" id="lang-field-9">
76+
<label for="settings-animations" id="lang-field-71">
7777
7878
</label>
7979
</td>
80-
<td id="lang-field-10">
80+
<td id="lang-field-72">
8181
8282
</td>
8383
</tr>
8484
<tr>
8585
<td>
8686
<input id="settings-autosaving" type="checkbox">
87-
<label for="settings-autosaving" id="lang-field-11">
87+
<label for="settings-autosaving" id="lang-field-73">
8888
8989
</label>
9090
</td>
91-
<td id="lang-field-12">
91+
<td id="lang-field-74">
9292
9393
</td>
9494
</tr>
9595
<tr>
96-
<td id="lang-field-13">
96+
<td id="lang-field-80">
9797
9898
</td>
9999
<td>
100-
<label id="terminal-languages-container">
100+
<label><input name="settings-fontSmoothing" type="radio" value="0"><span id="lang-field-81"></span></label>
101+
<label><input name="settings-fontSmoothing" type="radio" value="1"><span id="lang-field-82"></span></label>
102+
<label><input name="settings-fontSmoothing" type="radio" value="2"><span id="lang-field-83"></span></label>
103+
</td>
104+
</tr>
105+
<tr>
106+
<td id="lang-field-75">
101107
102-
</label>
108+
</td>
109+
<td>
110+
<div id="terminal-languages-container">
111+
112+
</div>
103113
</td>
104114
</tr>
105115
<tr>
106-
<td id="lang-field-14">
116+
<td id="lang-field-76">
107117
108118
</td>
109119
<td>
110-
<label id="terminal-themes-container">
120+
<div id="terminal-themes-container">
111121
112-
</label>
122+
</div>
113123
</td>
114124
</tr>
115125
</tbody>

csp/webTerminal/js/base.js.xml

Lines changed: 66 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -242,15 +242,15 @@ var dom = new function() {
242242
243243
for (var theme in application.themes) {
244244
if (!application.themes.hasOwnProperty(theme) || !theme) continue;
245-
this.objects.themesContainer.innerHTML += "<input id=\"terminal-color-theme-" + theme + "\" " +
245+
this.objects.themesContainer.innerHTML += "<label><input id=\"terminal-color-theme-" + theme + "\" " +
246246
"type=\"radio\" name=\"terminal-color-scheme\" value=\"" + theme + "\">" + theme[0].toUpperCase() +
247-
theme.substr(1);
247+
theme.substr(1) + " </label>";
248248
}
249249
250250
for (var l in lang.availableLanguages) {
251251
if (!lang.availableLanguages.hasOwnProperty(l) || !l) continue;
252-
this.objects.languagesContainer.innerHTML += "<input id=\"terminal-language-unit-" + l + "\" " +
253-
"type=\"radio\" name=\"terminal-language-unit\" value=\"" + l + "\">" + l.toUpperCase();
252+
this.objects.languagesContainer.innerHTML += "<label><input id=\"terminal-language-unit-" + l + "\" " +
253+
"type=\"radio\" name=\"terminal-language-unit\" value=\"" + l + "\">" + l.toUpperCase() + " </label>";
254254
}
255255
256256
return this.objectsReady();
@@ -281,6 +281,7 @@ var settings = new function() {
281281
restoreSession = 0,
282282
parseOutput = 0,
283283
cleanStartup = 0,
284+
fontAntialiasing = 0,
284285
language = "en";
285286
286287
this.get_restoreSession = function() { return restoreSession == 1 };
@@ -299,7 +300,8 @@ var settings = new function() {
299300
restoreSession: restoreSession,
300301
cleanStartup: cleanStartup,
301302
parseOutput: parseOutput,
302-
language: language
303+
language: language,
304+
fontAntialiasing: fontAntialiasing
303305
};
304306
};
305307
@@ -308,7 +310,7 @@ var settings = new function() {
308310
settingImportObject.hasOwnProperty("animations") && settingImportObject.hasOwnProperty("highlighting") &&
309311
settingImportObject.hasOwnProperty("colorTheme") && settingImportObject.hasOwnProperty("restoreSession") &&
310312
settingImportObject.hasOwnProperty("cleanStartup") && settingImportObject.hasOwnProperty("parseOutput") &&
311-
settingImportObject.hasOwnProperty("language"))) {
313+
settingImportObject.hasOwnProperty("language") && settingImportObject.hasOwnProperty("fontAntialiasing"))) {
312314
log.write("Wrong settings object to import. Use /reset to restore settings.");
313315
return;
314316
}
@@ -319,6 +321,7 @@ var settings = new function() {
319321
restoreSession = (settingImportObject["restoreSession"] == 1)?1:0;
320322
cleanStartup = settingImportObject["cleanStartup"];
321323
language = settingImportObject["language"];
324+
fontAntialiasing = settingImportObject["fontAntialiasing"];
322325
this.update();
323326
};
324327
@@ -329,9 +332,40 @@ var settings = new function() {
329332
restoreSession = 0;
330333
parseOutput = 0;
331334
cleanStartup = 0;
335+
fontAntialiasing = 0;
332336
language = "en";
333337
this.update();
334338
};
339+
340+
var applyDomSettings = function() {
341+
342+
dom.objects.themeCSS.href = "css/theme-" + colorTheme + ".css";
343+
if (!animations) {
344+
dom.removeClass(dom.objects.body,"noAnimations");
345+
dom.addClass(dom.objects.body,"noAnimations");
346+
} else dom.removeClass(dom.objects.body,"noAnimations");
347+
348+
var p = ["-webkit-font-smoothing", "font-smoothing", "-moz-osx-font-smoothing"];
349+
350+
switch (parseInt(fontAntialiasing)) {
351+
case 0: {
352+
document.body.style[p[0]] = "none";
353+
document.body.style[p[1]] = "none";
354+
document.body.style[p[2]] = "none";
355+
} break;
356+
case 1: {
357+
document.body.style[p[0]] = "antialiased";
358+
document.body.style[p[1]] = "antialiased";
359+
document.body.style[p[2]] = "grayscale";
360+
} break;
361+
case 2: {
362+
document.body.style[p[0]] = "subpixel-antialiased";
363+
document.body.style[p[1]] = "subpixel-antialiased";
364+
document.body.style[p[2]] = "auto";
365+
} break;
366+
}
367+
368+
}
335369
336370
/**
337371
* Updates terminal settings according to dom checked boxes.
@@ -359,13 +393,18 @@ var settings = new function() {
359393
if (!obj2) continue;
360394
if (obj2.checked) language = l;
361395
}
396+
397+
fontAntialiasing = 0;
398+
var els = document.getElementsByName("settings-fontSmoothing");
399+
for (var ee in els) {
400+
if (!els.hasOwnProperty(ee)) continue;
401+
if (els[ee].checked) {
402+
fontAntialiasing = parseInt(els[ee].value);
403+
}
404+
}
362405
363-
dom.objects.themeCSS.href = "css/theme-" + colorTheme + ".css";
364-
if (!animations) {
365-
dom.removeClass(dom.objects.body,"noAnimations");
366-
dom.addClass(dom.objects.body,"noAnimations");
367-
} else dom.removeClass(dom.objects.body,"noAnimations");
368-
406+
applyDomSettings();
407+
369408
storage.set("settings", settings.export());
370409
371410
};
@@ -402,18 +441,26 @@ var settings = new function() {
402441
dom.objects.settingsParseOutput.checked = parseOutput;
403442
dom.objects.settingsAutoSaving.checked = restoreSession == 1;
404443
dom.objects.settingsCleanStartup.checked = cleanStartup == 1;
444+
405445
for (var theme in application.themes) {
406446
if (!application.themes.hasOwnProperty(theme)) continue;
407447
var obj = dom.objects.getThemeSelectorObject(theme);
408448
if (!obj) continue;
409449
obj.checked = colorTheme === theme;
410450
}
451+
411452
for (var l in lang.availableLanguages) {
412453
if (!lang.availableLanguages.hasOwnProperty(l)) continue;
413454
var obj2 = dom.objects.getLanguageSelectorObject(l);
414455
if (!obj2) continue;
415456
obj2.checked = language === l;
416457
}
458+
459+
var els = document.getElementsByName("settings-fontSmoothing");
460+
for (var ee in els) {
461+
if (!els.hasOwnProperty(ee)) continue;
462+
els[ee].checked = (parseInt(els[ee].value) == fontAntialiasing)?true:false;
463+
}
417464
};
418465
419466
this.update = function() {
@@ -425,11 +472,15 @@ var settings = new function() {
425472
* Applies language to the document.
426473
*/
427474
function translateDocument() {
428-
var i = 0, e;
429-
while (e = dom.element("lang-field-" + i)) {
475+
var e, l;
476+
for (var i = 0; i < lang.getLanguagesNumber(); i++) {
477+
e = dom.element("lang-field-" + i);
478+
if (e && (l = lang.get(i))) { e.innerHTML = l; }
479+
}
480+
/*while (e = dom.element("lang-field-" + i)) {
430481
e.innerHTML = lang.get(62 + i);
431482
i++;
432-
}
483+
}*/
433484
}
434485
435486
/**

csp/webTerminal/js/language.js.xml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -751,8 +751,33 @@ var lang = new function() {
751751
79: {
752752
en: "Login failed.",
753753
ru: "Вход не выполнен."
754+
},
755+
80: {
756+
en: "Font smoothing",
757+
ru: "Сглаживание шрифтов"
758+
},
759+
81: {
760+
en: "None",
761+
ru: "Нет"
762+
},
763+
82: {
764+
en: "Antialiasing",
765+
ru: "Антиалиасинг"
766+
},
767+
83: {
768+
en: "Subpixel-antialiasing",
769+
ru: "Субпиксельный антиалиасинг"
754770
}
755771
};
772+
773+
this.getLanguagesNumber = function() {
774+
var n = 0;
775+
for (var i in languageBase) {
776+
if(!languageBase.hasOwnProperty(i)) continue;
777+
if (parseInt(i) || 0 > n) n = i;
778+
}
779+
return n + 1;
780+
};
756781
757782
this.setLanguage = function(lang) {
758783
if (languages.hasOwnProperty(lang)) {
@@ -768,7 +793,7 @@ var lang = new function() {
768793
* Returns language constant according to current language.
769794
*/
770795
this.get = function(languageConstID) {
771-
var err = "[[No translation, id=" + languageConstID + "]]";
796+
var err = undefined;
772797
return (languageBase[languageConstID])?languageBase[languageConstID][currentLanguage] || err:err;
773798
};
774799

0 commit comments

Comments
 (0)