Skip to content

Commit eedbb22

Browse files
committed
AEDebugging_ Jump to event in timeline
SQUASHED: AUTO-COMMIT-src-client-reactive-active-expression-active-expression.js,AUTO-COMMIT-src-client-reactive-components-basic-aexpr-timeline.html,AUTO-COMMIT-src-client-reactive-components-basic-aexpr-timeline.js,
1 parent 63d04b7 commit eedbb22

File tree

3 files changed

+40
-9
lines changed

3 files changed

+40
-9
lines changed

src/client/reactive/active-expression/active-expression.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ export class BaseActiveExpression {
213213
}
214214

215215
this.initializeEvents();
216-
this.logEvent('created', {ae: this, stack: lively.stack()});
216+
this.logEvent('created', {ae: this, stack: lively.stack(), value: "no value yet"});
217217

218218
if (new.target === BaseActiveExpression) {
219219
this.addToRegistry();
@@ -291,7 +291,7 @@ export class BaseActiveExpression {
291291
*/
292292
onChange(callback) {
293293
this.callbacks.push(callback);
294-
this.logEvent('dependencies changed', 'Added: ' + callback);
294+
this.logEvent('callbacks changed', 'Added: ' + callback);
295295
AExprRegistry.updateAExpr(this);
296296
return this;
297297
}
@@ -305,7 +305,7 @@ export class BaseActiveExpression {
305305
const index = this.callbacks.indexOf(callback);
306306
if (index > -1) {
307307
this.callbacks.splice(index, 1);
308-
this.logEvent('dependencies changed', 'Removed: ' + callback);
308+
this.logEvent('callbacks', 'Removed: ' + callback);
309309
AExprRegistry.updateAExpr(this);
310310
}
311311
if (this._shouldDisposeOnLastCallbackDetached && this.callbacks.length === 0) {

src/client/reactive/components/basic/aexpr-timeline.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@
4646
border: 1px solid #d5d5d5;
4747
overflow-y: auto;
4848
}
49+
.tableCell {
50+
cursor: pointer;
51+
}
4952
.variable {
5053
color: #0000FF
5154
}

src/client/reactive/components/basic/aexpr-timeline.js

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default class EventDrops extends Morph {
4343
return 'red';
4444
case 'changed value':
4545
return 'blue';
46-
case 'dependencies changed':
46+
case 'callbacks changed':
4747
return 'purple';
4848
default:
4949
return 'black';
@@ -189,7 +189,7 @@ export default class EventDrops extends Morph {
189189
}, "", "o"]);
190190
break;
191191
}
192-
case 'dependencies changed':
192+
case 'callbacks changed':
193193
default:
194194
{
195195
break;
@@ -233,7 +233,7 @@ export default class EventDrops extends Morph {
233233
const location = ae.meta().get("location");
234234
return this.humanizePosition(location.file, location.start.line);
235235
}
236-
case 'dependencies changed':
236+
case 'callbacks changed':
237237
default:
238238
return (event.value || "").toString();
239239
}
@@ -332,20 +332,48 @@ export default class EventDrops extends Morph {
332332

333333
updateValuesOverTime(aexprs) {
334334
const aeWithRelevantEvents = aexprs.map(ae => {
335-
return { ae, events: ae.meta().get('events').filter(event => event.type === "changed value").filter(this.filterFunction) };
335+
return { ae, events: ae.meta().get('events').filter(event => event.type === "changed value" || event.type === "created").filter(this.filterFunction) };
336336
});
337+
337338
this.valuesOverTime.innerHTML = "";
338339

339340
for (const { ae, events } of aeWithRelevantEvents) {
340341
if (events.length === 0) continue;
341342
let row = <tr><th>{ae.meta().get('id')}</th></tr>;
342-
row.append(<td>{events[0].value.lastValue}</td>);
343+
//row.append(<td>{events[0].value.lastValue}</td>);
343344
for (const event of events) {
344-
row.append(<td>{event.value.value}</td>);
345+
const cell = <td class="tableCell">{event.value.value}</td>;
346+
347+
row.append(cell);
348+
349+
cell.addEventListener('click', () => {
350+
this.showEvent(event, ae);
351+
//lively.notify(event.value.value)
352+
});
345353
}
346354
this.valuesOverTime.append(row);
347355
}
348356
}
357+
358+
showEvent(event, ae) {
359+
let min = new Date(event.timestamp.getTime() - 10);
360+
let max = new Date(event.timestamp.getTime() + 10);
361+
this.chart.zoomToDomain([min, max]);
362+
//Add delay to allow rerender
363+
setTimeout(() => {
364+
const selectedDrops = this.shadowRoot.querySelectorAll(".drop[cx=\"437\"]")
365+
.filter(drop => {
366+
const dropLineName = drop.parentElement.nextElementSibling.innerHTML;
367+
let dropLineAEName = dropLineName.substring(0, dropLineName.lastIndexOf(" "));
368+
return ae.meta().get('id').includes(dropLineAEName);
369+
});
370+
for(const drop of selectedDrops) {
371+
drop.setAttribute("r", 10);
372+
}
373+
//filter to parent -> line-label sibling value = AE id
374+
}, 30);
375+
376+
}
349377

350378
updateOverview(aexprs) {
351379
jQuery(this.aeOverview).jstree(true).settings.core.data = this.generateOverviewJSON(aexprs);

0 commit comments

Comments
 (0)