in src/components/Pings.ts [20:62]
export default function Pings(props: {
signature: SignatureInfo,
selectedPing?: (ping: PingInfo | undefined) => void,
}) {
const selectPing = (ping: PingInfo | undefined) => {
PingInfo.setSelected(ping);
settings.pingCrashId = ping ? pingData.crashid[ping.ping] : undefined;
if (props.selectedPing) {
props.selectedPing(ping);
}
};
const pingData = allPings();
const pingInfos = createMemo(() => {
const infos = props.signature.pings.map(ping => new PingInfo(ping));
// Load settings
{
const pingCrashId = untrack(() => settings.pingCrashId);
if (pingCrashId) {
const ping: Ping | -1 = pingData.crashid.indexOf(pingCrashId);
if (ping !== -1) {
const info = infos.find(i => i.ping == ping);
if (info) selectPing(info);
}
}
}
return infos;
});
let firstRun = true;
// Clear the selected ping whenever the selected signature changes.
createEffect(on(() => props.signature, () => {
if (firstRun) {
firstRun = false;
return;
}
selectPing(undefined);
}));
const renderPingInfo = (info: PingInfo) => html`
<div role="row" class="listrow" classList=${() => info.selectedClassList} onClick=${(_: Event) => selectPing(info)}>