@kwirthmagnify/kwirth-plugin-status 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/front.js +25 -3
- package/package.json +1 -1
package/front.js
CHANGED
|
@@ -172,8 +172,12 @@
|
|
|
172
172
|
return filas();
|
|
173
173
|
}
|
|
174
174
|
};
|
|
175
|
-
var
|
|
175
|
+
var VELOCIDAD_INICIAL = 20;
|
|
176
|
+
var StatusDiagram = ({ inventory, active, autoRefresh }) => {
|
|
176
177
|
const theme = (0, import_material2.useTheme)();
|
|
178
|
+
const vueltas = import_react2.default.useRef({ inventario: inventory, n: 0 });
|
|
179
|
+
if (vueltas.current.inventario !== inventory) vueltas.current = { inventario: inventory, n: vueltas.current.n + 1 };
|
|
180
|
+
const frenada = `statusFrenada${vueltas.current.n % 2}`;
|
|
177
181
|
const [posiciones, setPosiciones] = import_react2.default.useState(void 0);
|
|
178
182
|
const [seleccionado, setSeleccionado] = import_react2.default.useState(void 0);
|
|
179
183
|
const colores = {
|
|
@@ -309,7 +313,25 @@
|
|
|
309
313
|
},
|
|
310
314
|
"& .react-flow__controls-button:hover": { background: theme.palette.action.hover },
|
|
311
315
|
"& .react-flow__controls-button svg": { fill: theme.palette.text.primary },
|
|
312
|
-
"& .react-flow__attribution": { display: "none" }
|
|
316
|
+
"& .react-flow__attribution": { display: "none" },
|
|
317
|
+
/*
|
|
318
|
+
Con auto-refresco, la línea viva arranca a la velocidad de serie y va FRENANDO hasta
|
|
319
|
+
pararse justo cuando llega la siguiente foto: lo que se ha visto moverse es lo que
|
|
320
|
+
pasó en ese intervalo, y la línea no sigue diciendo "ahora" cuando el dato ya es viejo.
|
|
321
|
+
En manual no hay intervalo que agotar, así que se queda la animación continua de serie.
|
|
322
|
+
|
|
323
|
+
El recorrido sale de la curva: con ease-out cuadrática la velocidad inicial es 2·D/T,
|
|
324
|
+
así que D = VELOCIDAD_INICIAL·T/2 arranca igual que la de serie, sin tirón.
|
|
325
|
+
*/
|
|
326
|
+
...autoRefresh > 0 ? {
|
|
327
|
+
[`@keyframes ${frenada}`]: {
|
|
328
|
+
from: { strokeDashoffset: VELOCIDAD_INICIAL * autoRefresh / 2 },
|
|
329
|
+
to: { strokeDashoffset: 0 }
|
|
330
|
+
},
|
|
331
|
+
"& .react-flow__edge.animated path": {
|
|
332
|
+
animation: `${frenada} ${autoRefresh}s cubic-bezier(0.5, 1, 0.89, 1) 1 forwards`
|
|
333
|
+
}
|
|
334
|
+
} : {}
|
|
313
335
|
} }, /* @__PURE__ */ import_react2.default.createElement(
|
|
314
336
|
import_react3.ReactFlow,
|
|
315
337
|
{
|
|
@@ -480,7 +502,7 @@
|
|
|
480
502
|
/* @__PURE__ */ import_react4.default.createElement(import_material3.MenuItem, { value: 15 }, "Every 15s"),
|
|
481
503
|
/* @__PURE__ */ import_react4.default.createElement(import_material3.MenuItem, { value: 30 }, "Every 30s"),
|
|
482
504
|
/* @__PURE__ */ import_react4.default.createElement(import_material3.MenuItem, { value: 60 }, "Every minute")
|
|
483
|
-
), /* @__PURE__ */ import_react4.default.createElement(import_material3.Tooltip, { title: "Take a new snapshot" }, /* @__PURE__ */ import_react4.default.createElement(import_material3.IconButton, { size: "small", onClick: refresh }, /* @__PURE__ */ import_react4.default.createElement(import_icons.Refresh, { fontSize: "small" })))), /* @__PURE__ */ import_react4.default.createElement(import_material3.Typography, { variant: "caption", color: "text.secondary", sx: { mb: 1 } }, "Snapshot taken at ", new Date(inventory.takenAt).toLocaleTimeString(), data.autoRefresh ? ` \u2014 refreshing every ${data.autoRefresh}s while this tab is open` : " \u2014 it does not refresh on its own", ".", " ", "Delivered counts since each component started; the rate is measured against your previous snapshot."), /* @__PURE__ */ import_react4.default.createElement(import_material3.Box, { ref: boxRef, sx: { display: "flex", flexDirection: "column", overflowY: vista === "table" ? "auto" : "hidden", overflowX: "hidden", width: "100%", flexGrow: 1, height: `calc(100vh - ${boxTop}px - 35px)` } }, vista === "graph" && /* @__PURE__ */ import_react4.default.createElement(StatusDiagram, { inventory, active: activos }), vista === "table" && /* @__PURE__ */ import_react4.default.createElement(import_material3.Table, { size: "small", stickyHeader: true }, /* @__PURE__ */ import_react4.default.createElement(import_material3.TableHead, null, /* @__PURE__ */ import_react4.default.createElement(import_material3.TableRow, null, /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, null, "Kind"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, null, "Name"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, null, "State"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, { align: "right" }, "Consumers"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, { align: "right" }, "Delivered"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, null, "Why"))), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableBody, null, componentes.map(fila)))), data.signals.length > 0 && /* @__PURE__ */ import_react4.default.createElement(import_material3.Box, { sx: { mt: 1 } }, data.signals.map((s, i) => /* @__PURE__ */ import_react4.default.createElement(import_material3.Typography, { key: i, variant: "caption", color: "error", display: "block" }, s))));
|
|
505
|
+
), /* @__PURE__ */ import_react4.default.createElement(import_material3.Tooltip, { title: "Take a new snapshot" }, /* @__PURE__ */ import_react4.default.createElement(import_material3.IconButton, { size: "small", onClick: refresh }, /* @__PURE__ */ import_react4.default.createElement(import_icons.Refresh, { fontSize: "small" })))), /* @__PURE__ */ import_react4.default.createElement(import_material3.Typography, { variant: "caption", color: "text.secondary", sx: { mb: 1 } }, "Snapshot taken at ", new Date(inventory.takenAt).toLocaleTimeString(), data.autoRefresh ? ` \u2014 refreshing every ${data.autoRefresh}s while this tab is open` : " \u2014 it does not refresh on its own", ".", " ", "Delivered counts since each component started; the rate is measured against your previous snapshot."), /* @__PURE__ */ import_react4.default.createElement(import_material3.Box, { ref: boxRef, sx: { display: "flex", flexDirection: "column", overflowY: vista === "table" ? "auto" : "hidden", overflowX: "hidden", width: "100%", flexGrow: 1, height: `calc(100vh - ${boxTop}px - 35px)` } }, vista === "graph" && /* @__PURE__ */ import_react4.default.createElement(StatusDiagram, { inventory, active: activos, autoRefresh: data.autoRefresh }), vista === "table" && /* @__PURE__ */ import_react4.default.createElement(import_material3.Table, { size: "small", stickyHeader: true }, /* @__PURE__ */ import_react4.default.createElement(import_material3.TableHead, null, /* @__PURE__ */ import_react4.default.createElement(import_material3.TableRow, null, /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, null, "Kind"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, null, "Name"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, null, "State"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, { align: "right" }, "Consumers"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, { align: "right" }, "Delivered"), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableCell, null, "Why"))), /* @__PURE__ */ import_react4.default.createElement(import_material3.TableBody, null, componentes.map(fila)))), data.signals.length > 0 && /* @__PURE__ */ import_react4.default.createElement(import_material3.Box, { sx: { mt: 1 } }, data.signals.map((s, i) => /* @__PURE__ */ import_react4.default.createElement(import_material3.Typography, { key: i, variant: "caption", color: "error", display: "block" }, s))));
|
|
484
506
|
};
|
|
485
507
|
|
|
486
508
|
// src/front/StatusChannel.ts
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"id": "status",
|
|
5
5
|
"name": "@kwirthmagnify/kwirth-plugin-status",
|
|
6
6
|
"displayName": "Kwirth Status",
|
|
7
|
-
"version": "0.2.
|
|
7
|
+
"version": "0.2.4",
|
|
8
8
|
"description": "A look inside Kwirth: what is installed, how it is doing and who consumes what",
|
|
9
9
|
"icon": "<svg viewBox='0 0 24 24'><g fill='none' stroke='currentColor' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><rect x='2.6' y='4.6' width='18.8' height='14.8' rx='2.2'/><path d='M6 12h2.6l1.5-3.4 2.6 6.8 1.5-3.4H18'/></g></svg>",
|
|
10
10
|
"requiresRestart": false,
|