@design.estate/dees-catalog 3.35.1 → 3.37.0

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.
Files changed (29) hide show
  1. package/dist_bundle/bundle.js +1391 -247
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-button/dees-button/dees-button.d.ts +6 -0
  4. package/dist_ts_web/elements/00group-button/dees-button/dees-button.demo.js +69 -29
  5. package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +75 -6
  6. package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.d.ts +104 -6
  7. package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.demo.js +153 -54
  8. package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.js +716 -153
  9. package/dist_ts_web/elements/dees-statsgrid/dees-statsgrid.d.ts +22 -1
  10. package/dist_ts_web/elements/dees-statsgrid/dees-statsgrid.demo.js +130 -2
  11. package/dist_ts_web/elements/dees-statsgrid/dees-statsgrid.js +322 -1
  12. package/dist_ts_web/services/DeesServiceLibLoader.d.ts +34 -1
  13. package/dist_ts_web/services/DeesServiceLibLoader.js +27 -1
  14. package/dist_ts_web/services/index.d.ts +1 -1
  15. package/dist_ts_web/services/versions.d.ts +1 -0
  16. package/dist_ts_web/services/versions.js +2 -1
  17. package/dist_watch/bundle.js +1389 -245
  18. package/dist_watch/bundle.js.map +3 -3
  19. package/package.json +1 -1
  20. package/ts_web/00_commitinfo_data.ts +1 -1
  21. package/ts_web/elements/00group-button/dees-button/dees-button.demo.ts +68 -28
  22. package/ts_web/elements/00group-button/dees-button/dees-button.ts +78 -6
  23. package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.demo.ts +163 -56
  24. package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.ts +756 -161
  25. package/ts_web/elements/dees-statsgrid/dees-statsgrid.demo.ts +130 -2
  26. package/ts_web/elements/dees-statsgrid/dees-statsgrid.ts +352 -1
  27. package/ts_web/services/DeesServiceLibLoader.ts +50 -1
  28. package/ts_web/services/index.ts +1 -1
  29. package/ts_web/services/versions.ts +1 -0
@@ -1,11 +1,13 @@
1
- import { html } from '@design.estate/dees-element';
1
+ import { html, css, cssManager } from '@design.estate/dees-element';
2
2
  import '@design.estate/dees-wcctools/demotools';
3
3
  export const demoFunc = () => {
4
4
  return html `
5
5
  <dees-demowrapper .runAfterRender=${async (elementArg) => {
6
- // Get the log element
7
- const logElement = elementArg.querySelector('dees-chart-log');
8
- let intervalId;
6
+ // Get the log elements
7
+ const structuredLog = elementArg.querySelector('#structured-log');
8
+ const rawLog = elementArg.querySelector('#raw-log');
9
+ let structuredIntervalId;
10
+ let rawIntervalId;
9
11
  const serverSources = ['Server', 'Database', 'API', 'Auth', 'Cache', 'Queue', 'WebSocket', 'Scheduler'];
10
12
  const logTemplates = {
11
13
  debug: [
@@ -44,9 +46,24 @@ export const demoFunc = () => {
44
46
  'Health check passed: all systems operational',
45
47
  ],
46
48
  };
49
+ // Docker-like raw log lines with ANSI colors
50
+ const dockerLogTemplates = [
51
+ '\x1b[90m2024-01-15T10:23:45.123Z\x1b[0m \x1b[36mINFO\x1b[0m [nginx] GET /api/health 200 - 2ms',
52
+ '\x1b[90m2024-01-15T10:23:45.456Z\x1b[0m \x1b[33mWARN\x1b[0m [redis] Connection pool running low: 3/10',
53
+ '\x1b[90m2024-01-15T10:23:45.789Z\x1b[0m \x1b[31mERROR\x1b[0m [mongodb] Query timeout after 30000ms',
54
+ '\x1b[90m2024-01-15T10:23:46.012Z\x1b[0m \x1b[36mINFO\x1b[0m [app] Processing batch job #{{jobId}}',
55
+ '\x1b[90m2024-01-15T10:23:46.345Z\x1b[0m \x1b[32mOK\x1b[0m [health] All services healthy',
56
+ '\x1b[90m2024-01-15T10:23:46.678Z\x1b[0m \x1b[36mINFO\x1b[0m [kafka] Message consumed from topic: events',
57
+ '\x1b[90m2024-01-15T10:23:47.001Z\x1b[0m \x1b[35mDEBUG\x1b[0m [grpc] Request received: GetUser(id={{userId}})',
58
+ '\x1b[90m2024-01-15T10:23:47.234Z\x1b[0m \x1b[31mERROR\x1b[0m [auth] Token validation failed: expired',
59
+ '\x1b[90m2024-01-15T10:23:47.567Z\x1b[0m \x1b[33mWARN\x1b[0m [rate-limit] IP {{ip}} approaching rate limit',
60
+ '\x1b[90m2024-01-15T10:23:47.890Z\x1b[0m \x1b[36mINFO\x1b[0m [websocket] Client connected: session={{session}}',
61
+ // Multi-line log entry like stack traces
62
+ '\x1b[31mError: Connection refused\x1b[0m\n at TcpConnection.connect (/app/node_modules/pg/lib/connection.js:12:15)\n at Pool.connect (/app/node_modules/pg/lib/pool.js:45:23)\n at async DatabaseService.query (/app/src/db/service.ts:89:12)',
63
+ ];
47
64
  const generateRandomLog = () => {
48
65
  const levels = ['debug', 'info', 'warn', 'error', 'success'];
49
- const weights = [0.2, 0.5, 0.15, 0.1, 0.05]; // Weighted probability
66
+ const weights = [0.2, 0.5, 0.15, 0.1, 0.05];
50
67
  const random = Math.random();
51
68
  let cumulative = 0;
52
69
  let level = 'info';
@@ -82,16 +99,46 @@ export const demoFunc = () => {
82
99
  .replace('{{service}}', ['Redis', 'MongoDB', 'ElasticSearch'][Math.floor(Math.random() * 3)])
83
100
  .replace('{{port}}', String(3000 + Math.floor(Math.random() * 10)))
84
101
  .replace('{{size}}', String(Math.floor(Math.random() * 500) + 100));
85
- logElement.addLog(level, message, source);
102
+ structuredLog.addLog(level, message, source);
86
103
  };
87
- const startSimulation = () => {
88
- if (!intervalId) {
89
- // Generate logs at random intervals between 500ms and 2500ms
104
+ const generateDockerLog = () => {
105
+ const template = dockerLogTemplates[Math.floor(Math.random() * dockerLogTemplates.length)];
106
+ const now = new Date().toISOString();
107
+ const logLine = template
108
+ .replace(/2024-01-15T10:23:\d{2}\.\d{3}Z/g, now)
109
+ .replace('{{jobId}}', String(Math.floor(Math.random() * 10000)))
110
+ .replace('{{userId}}', String(Math.floor(Math.random() * 10000)))
111
+ .replace('{{ip}}', `192.168.1.${Math.floor(Math.random() * 255)}`)
112
+ .replace('{{session}}', Math.random().toString(36).substring(2, 11));
113
+ rawLog.writelnRaw(logLine);
114
+ };
115
+ const startStructuredSimulation = () => {
116
+ if (!structuredIntervalId) {
90
117
  const scheduleNext = () => {
91
118
  generateRandomLog();
92
119
  const nextDelay = Math.random() * 2000 + 500;
93
- intervalId = window.setTimeout(() => {
94
- if (intervalId) {
120
+ structuredIntervalId = window.setTimeout(() => {
121
+ if (structuredIntervalId) {
122
+ scheduleNext();
123
+ }
124
+ }, nextDelay);
125
+ };
126
+ scheduleNext();
127
+ }
128
+ };
129
+ const stopStructuredSimulation = () => {
130
+ if (structuredIntervalId) {
131
+ window.clearTimeout(structuredIntervalId);
132
+ structuredIntervalId = null;
133
+ }
134
+ };
135
+ const startRawSimulation = () => {
136
+ if (!rawIntervalId) {
137
+ const scheduleNext = () => {
138
+ generateDockerLog();
139
+ const nextDelay = Math.random() * 1000 + 200;
140
+ rawIntervalId = window.setTimeout(() => {
141
+ if (rawIntervalId) {
95
142
  scheduleNext();
96
143
  }
97
144
  }, nextDelay);
@@ -99,62 +146,114 @@ export const demoFunc = () => {
99
146
  scheduleNext();
100
147
  }
101
148
  };
102
- const stopSimulation = () => {
103
- if (intervalId) {
104
- window.clearTimeout(intervalId);
105
- intervalId = null;
149
+ const stopRawSimulation = () => {
150
+ if (rawIntervalId) {
151
+ window.clearTimeout(rawIntervalId);
152
+ rawIntervalId = null;
106
153
  }
107
154
  };
108
155
  // Wire up button click handlers
109
156
  const buttons = elementArg.querySelectorAll('dees-button');
110
157
  buttons.forEach(button => {
111
158
  const text = button.textContent?.trim();
112
- if (text === 'Add Single Log') {
113
- button.addEventListener('click', () => generateRandomLog());
114
- }
115
- else if (text === 'Start Simulation') {
116
- button.addEventListener('click', () => startSimulation());
117
- }
118
- else if (text === 'Stop Simulation') {
119
- button.addEventListener('click', () => stopSimulation());
159
+ switch (text) {
160
+ case 'Add Structured Log':
161
+ button.addEventListener('click', () => generateRandomLog());
162
+ break;
163
+ case 'Start Structured':
164
+ button.addEventListener('click', () => startStructuredSimulation());
165
+ break;
166
+ case 'Stop Structured':
167
+ button.addEventListener('click', () => stopStructuredSimulation());
168
+ break;
169
+ case 'Add Docker Log':
170
+ button.addEventListener('click', () => generateDockerLog());
171
+ break;
172
+ case 'Start Docker':
173
+ button.addEventListener('click', () => startRawSimulation());
174
+ break;
175
+ case 'Stop Docker':
176
+ button.addEventListener('click', () => stopRawSimulation());
177
+ break;
120
178
  }
121
179
  });
122
180
  }}>
123
181
  <style>
124
- .demoBox {
125
- position: relative;
126
- background: #000000;
127
- height: 100%;
128
- width: 100%;
129
- padding: 40px;
130
- box-sizing: border-box;
131
- display: flex;
132
- flex-direction: column;
133
- gap: 20px;
134
- }
135
- .controls {
136
- display: flex;
137
- gap: 10px;
138
- flex-wrap: wrap;
139
- }
140
- .info {
141
- color: #888;
142
- font-size: 12px;
143
- font-family: 'Geist Sans', sans-serif;
144
- }
145
- </style>
182
+ ${css `
183
+ .demoBox {
184
+ position: relative;
185
+ background: ${cssManager.bdTheme('hsl(0 0% 95%)', 'hsl(0 0% 5%)')};
186
+ height: 100%;
187
+ width: 100%;
188
+ padding: 40px;
189
+ box-sizing: border-box;
190
+ display: flex;
191
+ flex-direction: column;
192
+ gap: 24px;
193
+ }
194
+ .section {
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 12px;
198
+ }
199
+ .section-title {
200
+ color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 95%)')};
201
+ font-size: 14px;
202
+ font-weight: 600;
203
+ font-family: 'Geist Sans', sans-serif;
204
+ }
205
+ .section-description {
206
+ color: ${cssManager.bdTheme('hsl(215.4 16.3% 46.9%)', 'hsl(215 20.2% 65.1%)')};
207
+ font-size: 12px;
208
+ font-family: 'Geist Sans', sans-serif;
209
+ }
210
+ .controls {
211
+ display: flex;
212
+ gap: 10px;
213
+ flex-wrap: wrap;
214
+ }
215
+ `}
216
+ </style>
146
217
  <div class="demoBox">
147
- <div class="controls">
148
- <dees-button>Add Single Log</dees-button>
149
- <dees-button>Start Simulation</dees-button>
150
- <dees-button>Stop Simulation</dees-button>
218
+ <!-- Structured Logs Section -->
219
+ <div class="section">
220
+ <div class="section-title">Structured Logs (ILogEntry)</div>
221
+ <div class="section-description">
222
+ Structured log entries with level, message, and source. Supports search and keyword highlighting.
223
+ </div>
224
+ <div class="controls">
225
+ <dees-button>Add Structured Log</dees-button>
226
+ <dees-button>Start Structured</dees-button>
227
+ <dees-button>Stop Structured</dees-button>
228
+ </div>
229
+ <dees-chart-log
230
+ id="structured-log"
231
+ .label=${'Production Server Logs'}
232
+ .highlightKeywords=${['error', 'failed', 'timeout']}
233
+ .showMetrics=${true}
234
+ ></dees-chart-log>
235
+ </div>
236
+
237
+ <!-- Raw Logs Section -->
238
+ <div class="section">
239
+ <div class="section-title">Raw Logs (Docker/Container Style)</div>
240
+ <div class="section-description">
241
+ Raw log output with ANSI escape sequences for real Docker/container logs.
242
+ </div>
243
+ <div class="controls">
244
+ <dees-button>Add Docker Log</dees-button>
245
+ <dees-button>Start Docker</dees-button>
246
+ <dees-button>Stop Docker</dees-button>
247
+ </div>
248
+ <dees-chart-log
249
+ id="raw-log"
250
+ .label=${'Docker Container Logs'}
251
+ .mode=${'raw'}
252
+ .showMetrics=${false}
253
+ ></dees-chart-log>
151
254
  </div>
152
- <div class="info">Simulating realistic server logs with various levels and sources</div>
153
- <dees-chart-log
154
- .label=${'Production Server Logs'}
155
- ></dees-chart-log>
156
255
  </div>
157
256
  </dees-demowrapper>
158
257
  `;
159
258
  };
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1jaGFydC1sb2cuZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWNoYXJ0L2RlZXMtY2hhcnQtbG9nL2RlZXMtY2hhcnQtbG9nLmRlbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE9BQU8sd0NBQXdDLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUMzQixPQUFPLElBQUksQ0FBQTt3Q0FDMkIsS0FBSyxFQUFFLFVBQXVCLEVBQUUsRUFBRTtRQUNwRSxzQkFBc0I7UUFDdEIsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBaUIsQ0FBQztRQUM5RSxJQUFJLFVBQWtCLENBQUM7UUFFdkIsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFeEcsTUFBTSxZQUFZLEdBQUc7WUFDbkIsS0FBSyxFQUFFO2dCQUNMLDRCQUE0QjtnQkFDNUIsNEJBQTRCO2dCQUM1QixrQ0FBa0M7Z0JBQ2xDLDhCQUE4QjtnQkFDOUIsc0NBQXNDO2FBQ3ZDO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLHVDQUF1QztnQkFDdkMsNENBQTRDO2dCQUM1QyxxQ0FBcUM7Z0JBQ3JDLG1DQUFtQztnQkFDbkMsOENBQThDO2FBQy9DO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLDZDQUE2QztnQkFDN0MsOEJBQThCO2dCQUM5QixzQ0FBc0M7Z0JBQ3RDLDhDQUE4QztnQkFDOUMsc0NBQXNDO2FBQ3ZDO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLHFDQUFxQztnQkFDckMsc0NBQXNDO2dCQUN0Qyx5Q0FBeUM7Z0JBQ3pDLDBC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
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1jaGFydC1sb2cuZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWNoYXJ0L2RlZXMtY2hhcnQtbG9nL2RlZXMtY2hhcnQtbG9nLmRlbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFcEUsT0FBTyx3Q0FBd0MsQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE9BQU8sSUFBSSxDQUFBO3dDQUMyQixLQUFLLEVBQUUsVUFBdUIsRUFBRSxFQUFFO1FBQ3BFLHVCQUF1QjtRQUN2QixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFpQixDQUFDO1FBQ2xGLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFpQixDQUFDO1FBQ3BFLElBQUksb0JBQTRCLENBQUM7UUFDakMsSUFBSSxhQUFxQixDQUFDO1FBRTFCLE1BQU0sYUFBYSxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXhHLE1BQU0sWUFBWSxHQUFHO1lBQ25CLEtBQUssRUFBRTtnQkFDTCw0QkFBNEI7Z0JBQzVCLDRCQUE0QjtnQkFDNUIsa0NBQWtDO2dCQUNsQyw4QkFBOEI7Z0JBQzlCLHNDQUFzQzthQUN2QztZQUNELElBQUksRUFBRTtnQkFDSix1Q0FBdUM7Z0JBQ3ZDLDRDQUE0QztnQkFDNUMscUNBQXFDO2dCQUNyQyxtQ0FBbUM7Z0JBQ25DLDhDQUE4QzthQUMvQztZQUNELElBQUksRUFBRTtnQkFDSiw2Q0FBNkM7Z0JBQzdDLDhCQUE4QjtnQkFDOUIsc0NBQXND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