fix: исправлены ошибки JavaScript с регулярными выражениями
- Исправлено экранирование в регулярных выражениях - Исправлены шаблонные строки с неправильным экранированием - Исправлена ошибка 'Invalid regular expression: missing' - Исправлены проблемы с ANSI escape sequences - Теперь переключение темы и отображение логов работают корректно - Автор: Сергей Антропов (https://devops.org.ru)
This commit is contained in:
@@ -236,7 +236,7 @@ function parsePrefixAndStrip(line){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function ansiToHtml(text){
|
function ansiToHtml(text){
|
||||||
const ESC = '\\u001b[';
|
const ESC = '\u001b[';
|
||||||
const parts = text.split(ESC);
|
const parts = text.split(ESC);
|
||||||
if (parts.length === 1) return escapeHtml(text);
|
if (parts.length === 1) return escapeHtml(text);
|
||||||
let html = escapeHtml(parts[0]);
|
let html = escapeHtml(parts[0]);
|
||||||
@@ -360,8 +360,7 @@ function openWs(svc, panel){
|
|||||||
ws.onclose = ()=> setWsState(Object.keys(state.open).length? 'on':'off');
|
ws.onclose = ()=> setWsState(Object.keys(state.open).length? 'on':'off');
|
||||||
ws.onerror = ()=> setWsState('err');
|
ws.onerror = ()=> setWsState('err');
|
||||||
ws.onmessage = (ev)=>{
|
ws.onmessage = (ev)=>{
|
||||||
const parts = (ev.data||'').split(/
|
const parts = (ev.data||'').split(/\r?\n/);
|
||||||
?
|
|
||||||
for (let i=0;i<parts.length;i++){
|
for (let i=0;i<parts.length;i++){
|
||||||
if (parts[i].length===0 && i===parts.length-1) continue;
|
if (parts[i].length===0 && i===parts.length-1) continue;
|
||||||
// harvest instance ids if present
|
// harvest instance ids if present
|
||||||
@@ -397,7 +396,7 @@ function openWs(svc, panel){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function ensurePanel(svc){
|
function ensurePanel(svc){
|
||||||
function ensurePanel(svc){
|
let panel = els.grid.querySelector(`.panel[data-cid="${svc.id}"]`);
|
||||||
if (!panel){
|
if (!panel){
|
||||||
panel = panelTemplate(svc);
|
panel = panelTemplate(svc);
|
||||||
els.grid.appendChild(panel);
|
els.grid.appendChild(panel);
|
||||||
@@ -522,7 +521,7 @@ function openFanGroup(services){
|
|||||||
ws.onclose = ()=> setWsState(Object.keys(state.open).length? 'on':'off');
|
ws.onclose = ()=> setWsState(Object.keys(state.open).length? 'on':'off');
|
||||||
ws.onerror = ()=> setWsState('err');
|
ws.onerror = ()=> setWsState('err');
|
||||||
ws.onmessage = (ev)=>{
|
ws.onmessage = (ev)=>{
|
||||||
ws.onmessage = (ev)=>{
|
const parts = (ev.data||'').split(/\r?\n/);
|
||||||
for (let i=0;i<parts.length;i++){
|
for (let i=0;i<parts.length;i++){
|
||||||
if (parts[i].length===0 && i===parts.length-1) continue;
|
if (parts[i].length===0 && i===parts.length-1) continue;
|
||||||
const pr = parsePrefixAndStrip(parts[i]);
|
const pr = parsePrefixAndStrip(parts[i]);
|
||||||
@@ -557,7 +556,7 @@ els.tail.onchange = ()=> {
|
|||||||
Object.keys(state.open).forEach(id=>{
|
Object.keys(state.open).forEach(id=>{
|
||||||
const svc = state.services.find(s=> s.id===id);
|
const svc = state.services.find(s=> s.id===id);
|
||||||
if (!svc) return;
|
if (!svc) return;
|
||||||
if (!svc) return;
|
const panel = els.grid.querySelector(`.panel[data-cid="${id}"]`);
|
||||||
if (!panel) return;
|
if (!panel) return;
|
||||||
state.open[id].logEl.textContent='';
|
state.open[id].logEl.textContent='';
|
||||||
closeWs(id); openWs(svc, panel);
|
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 (idx>=0 && idx<state.services.length-1) switchToSingle(state.services[idx+1]);
|
||||||
}
|
}
|
||||||
if (e.key.toLowerCase()==='m'){
|
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);
|
const ans = prompt('IDs через запятую:\n'+list);
|
||||||
if (ans) openMulti(ans.split(',').map(x=>x.trim()).filter(Boolean));
|
if (ans) openMulti(ans.split(',').map(x=>x.trim()).filter(Boolean));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user