fix: исправлены ошибки JavaScript с регулярными выражениями

- Исправлено экранирование в регулярных выражениях
- Исправлены шаблонные строки с неправильным экранированием
- Исправлена ошибка 'Invalid regular expression: missing'
- Исправлены проблемы с ANSI escape sequences
- Теперь переключение темы и отображение логов работают корректно
- Автор: Сергей Антропов (https://devops.org.ru)
This commit is contained in:
Сергей Антропов
2025-08-16 11:44:37 +03:00
parent 3654d6699e
commit e2d532c1f5

View File

@@ -236,7 +236,7 @@ function parsePrefixAndStrip(line){
}
function ansiToHtml(text){
const ESC = '\\u001b[';
const ESC = '\u001b[';
const parts = text.split(ESC);
if (parts.length === 1) return escapeHtml(text);
let html = escapeHtml(parts[0]);
@@ -360,8 +360,7 @@ function openWs(svc, panel){
ws.onclose = ()=> setWsState(Object.keys(state.open).length? 'on':'off');
ws.onerror = ()=> setWsState('err');
ws.onmessage = (ev)=>{
const parts = (ev.data||'').split(/
?
const parts = (ev.data||'').split(/\r?\n/);
for (let i=0;i<parts.length;i++){
if (parts[i].length===0 && i===parts.length-1) continue;
// harvest instance ids if present
@@ -397,7 +396,7 @@ function openWs(svc, panel){
}
function ensurePanel(svc){
function ensurePanel(svc){
let panel = els.grid.querySelector(`.panel[data-cid="${svc.id}"]`);
if (!panel){
panel = panelTemplate(svc);
els.grid.appendChild(panel);
@@ -522,7 +521,7 @@ function openFanGroup(services){
ws.onclose = ()=> setWsState(Object.keys(state.open).length? 'on':'off');
ws.onerror = ()=> setWsState('err');
ws.onmessage = (ev)=>{
ws.onmessage = (ev)=>{
const parts = (ev.data||'').split(/\r?\n/);
for (let i=0;i<parts.length;i++){
if (parts[i].length===0 && i===parts.length-1) continue;
const pr = parsePrefixAndStrip(parts[i]);
@@ -557,7 +556,7 @@ els.tail.onchange = ()=> {
Object.keys(state.open).forEach(id=>{
const svc = state.services.find(s=> s.id===id);
if (!svc) return;
if (!svc) return;
const panel = els.grid.querySelector(`.panel[data-cid="${id}"]`);
if (!panel) return;
state.open[id].logEl.textContent='';
closeWs(id); openWs(svc, panel);
@@ -583,7 +582,7 @@ window.addEventListener('keydown', (e)=>{
if (idx>=0 && idx<state.services.length-1) switchToSingle(state.services[idx+1]);
}
if (e.key.toLowerCase()==='m'){
if (e.key.toLowerCase()==='m'){
const list = state.services.map(s=> `${s.id}:${s.service}`).join(', ');
const ans = prompt('IDs через запятую:\n'+list);
if (ans) openMulti(ans.split(',').map(x=>x.trim()).filter(Boolean));
}