@vue-skuilder/common-ui 0.2.30 → 0.2.32
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/dist/admin/admin.css +1 -1
- package/dist/admin/common-ui-admin.es.js +227 -219
- package/dist/admin/common-ui-admin.es.js.map +1 -1
- package/dist/admin/components/LearnerSessionDetail.vue.d.ts.map +1 -1
- package/dist/admin/components/RunDetail.vue.d.ts.map +1 -1
- package/dist/components/auth/UserRegistration.vue.d.ts.map +1 -1
- package/dist/stores/useAuthStore.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/admin/components/LearnerSessionDetail.vue +3 -0
- package/src/admin/components/RunDetail.vue +21 -7
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, nextTick as l, normalizeClass as u, normalizeStyle as d, onMounted as f, openBlock as p, ref as m, renderList as h, resolveComponent as g, shallowRef as _, toDisplayString as v, unref as y, watch as b, withCtx as x, withKeys as S } from "vue";
|
|
2
|
-
import { SESSION_FLAGS as C, cardDossiers as w, dumpFileName as T, eloLedger as E, fetchLearnerDump as D, fmtAnswer as O, fmtDelta as k, fmtDuration as A,
|
|
3
|
-
import { PIPELINE_STAGES as
|
|
2
|
+
import { SESSION_FLAGS as C, cardDossiers as w, dumpFileName as T, eloLedger as E, fetchLearnerDump as D, fmtAnswer as O, fmtDelta as k, fmtDuration as A, fmtScore as j, fromDump as M, isSkillTag as N, parseLearnerDump as P, pipelineRunStats as F, recordPerformance as I, regulatorText as L, runCardSource as R, runText as ee, scoredTagDeltas as te, selectedBySource as z, servedTags as B, sessionDetail as V, sessionText as ne, shortTag as H, summarizeSessions as re } from "@vue-skuilder/db/diagnostics";
|
|
3
|
+
import { PIPELINE_STAGES as U, planPipeline as ie } from "@vue-skuilder/db";
|
|
4
4
|
//#region \0rolldown/runtime.js
|
|
5
|
-
var
|
|
5
|
+
var ae = Object.defineProperty, __name = (e, t) => ae(e, "name", {
|
|
6
6
|
value: t,
|
|
7
7
|
configurable: !0
|
|
8
8
|
});
|
|
@@ -14,7 +14,7 @@ function useLearnerDataset() {
|
|
|
14
14
|
n.value = !0, r.value = null;
|
|
15
15
|
try {
|
|
16
16
|
let n = await i();
|
|
17
|
-
t.value =
|
|
17
|
+
t.value = M(n, a), e.value = n;
|
|
18
18
|
} catch (e) {
|
|
19
19
|
r.value = e instanceof Error ? e.message : String(e);
|
|
20
20
|
} finally {
|
|
@@ -28,7 +28,7 @@ function useLearnerDataset() {
|
|
|
28
28
|
}), e.courseId);
|
|
29
29
|
}
|
|
30
30
|
function loadFromFile(e, t) {
|
|
31
|
-
return load(async () =>
|
|
31
|
+
return load(async () => P(await e.text()), t);
|
|
32
32
|
}
|
|
33
33
|
return {
|
|
34
34
|
dump: e,
|
|
@@ -45,10 +45,10 @@ function downloadLearnerDump(e) {
|
|
|
45
45
|
}
|
|
46
46
|
//#endregion
|
|
47
47
|
//#region src/admin/components/LearnerDatasetSource.vue?vue&type=script&setup=true&lang.ts
|
|
48
|
-
var
|
|
48
|
+
var oe = { class: "d-flex flex-wrap align-center ga-2" }, se = {
|
|
49
49
|
key: 1,
|
|
50
50
|
class: "d-flex flex-wrap align-center ga-2 mt-3"
|
|
51
|
-
},
|
|
51
|
+
}, ce = /* @__PURE__ */ c({
|
|
52
52
|
__name: "LearnerDatasetSource",
|
|
53
53
|
props: {
|
|
54
54
|
couchUrl: {},
|
|
@@ -82,7 +82,7 @@ var ne = { class: "d-flex flex-wrap align-center ga-2" }, re = {
|
|
|
82
82
|
return p(), n(b, { variant: "outlined" }, {
|
|
83
83
|
default: x(() => [s(m, null, {
|
|
84
84
|
default: x(() => [
|
|
85
|
-
a("div",
|
|
85
|
+
a("div", oe, [
|
|
86
86
|
s(l, {
|
|
87
87
|
modelValue: D.value,
|
|
88
88
|
"onUpdate:modelValue": c[0] || (c[0] = (e) => D.value = e),
|
|
@@ -130,7 +130,7 @@ var ne = { class: "d-flex flex-wrap align-center ga-2" }, re = {
|
|
|
130
130
|
default: x(() => [o(v(y(w)), 1)]),
|
|
131
131
|
_: 1
|
|
132
132
|
})) : r("", !0),
|
|
133
|
-
y(_) && y(h) ? (p(), i("div",
|
|
133
|
+
y(_) && y(h) ? (p(), i("div", se, [
|
|
134
134
|
a("span", null, [
|
|
135
135
|
a("strong", null, v(y(_).username), 1),
|
|
136
136
|
o(" · " + v(y(_).sessions.length) + " sessions ", 1),
|
|
@@ -156,7 +156,7 @@ var ne = { class: "d-flex flex-wrap align-center ga-2" }, re = {
|
|
|
156
156
|
});
|
|
157
157
|
};
|
|
158
158
|
}
|
|
159
|
-
}),
|
|
159
|
+
}), W = {
|
|
160
160
|
churned: {
|
|
161
161
|
icon: "mdi-autorenew",
|
|
162
162
|
color: "warning"
|
|
@@ -218,22 +218,22 @@ function useCopy() {
|
|
|
218
218
|
}
|
|
219
219
|
//#endregion
|
|
220
220
|
//#region src/admin/components/CardDossierDetail.vue?vue&type=script&setup=true&lang.ts
|
|
221
|
-
var
|
|
221
|
+
var G = {
|
|
222
222
|
key: 0,
|
|
223
223
|
class: "text-caption mb-2"
|
|
224
|
-
},
|
|
224
|
+
}, le = { class: "text-medium-emphasis" }, ue = { class: "d-flex flex-wrap mb-2 ga-1" }, de = {
|
|
225
225
|
key: 0,
|
|
226
226
|
class: "text-caption text-disabled"
|
|
227
|
-
},
|
|
227
|
+
}, fe = { class: "text-caption text-medium-emphasis mb-2" }, pe = {
|
|
228
228
|
key: 0,
|
|
229
229
|
class: "text-error"
|
|
230
|
-
},
|
|
230
|
+
}, me = { class: "text-no-wrap" }, he = {
|
|
231
231
|
key: 2,
|
|
232
232
|
class: "text-disabled"
|
|
233
|
-
},
|
|
233
|
+
}, ge = {
|
|
234
234
|
class: "text-truncate",
|
|
235
235
|
style: { "max-width": "200px" }
|
|
236
|
-
},
|
|
236
|
+
}, _e = /* @__PURE__ */ c({
|
|
237
237
|
__name: "CardDossierDetail",
|
|
238
238
|
props: {
|
|
239
239
|
dossier: {},
|
|
@@ -241,7 +241,7 @@ var ae = {
|
|
|
241
241
|
},
|
|
242
242
|
setup(t) {
|
|
243
243
|
function perf(e) {
|
|
244
|
-
let t =
|
|
244
|
+
let t = I(e);
|
|
245
245
|
return t === null ? "—" : t.toFixed(2);
|
|
246
246
|
}
|
|
247
247
|
function fmtInterval(e) {
|
|
@@ -250,20 +250,20 @@ var ae = {
|
|
|
250
250
|
return (t, c) => {
|
|
251
251
|
let l = g("v-chip"), d = g("v-icon"), f = g("v-table");
|
|
252
252
|
return p(), i("div", null, [
|
|
253
|
-
t.dossier.card && Object.keys(t.dossier.card.data).length ? (p(), i("div",
|
|
253
|
+
t.dossier.card && Object.keys(t.dossier.card.data).length ? (p(), i("div", G, [(p(!0), i(e, null, h(t.dossier.card.data, (e, t) => (p(), i("span", {
|
|
254
254
|
key: t,
|
|
255
255
|
class: "mr-3"
|
|
256
|
-
}, [a("span",
|
|
257
|
-
a("div",
|
|
256
|
+
}, [a("span", le, v(t) + ":", 1), o(" " + v(y(O)(e, 60)), 1)]))), 128))])) : r("", !0),
|
|
257
|
+
a("div", ue, [(p(!0), i(e, null, h(t.dossier.card?.tags ?? [], (e) => (p(), n(l, {
|
|
258
258
|
key: e,
|
|
259
259
|
size: "x-small",
|
|
260
260
|
variant: "outlined",
|
|
261
|
-
color: y(
|
|
261
|
+
color: y(N)(t.interpreters, e) ? "primary" : void 0
|
|
262
262
|
}, {
|
|
263
263
|
default: x(() => [o(v(e), 1)]),
|
|
264
264
|
_: 2
|
|
265
|
-
}, 1032, ["color"]))), 128)), t.dossier.card ? r("", !0) : (p(), i("span",
|
|
266
|
-
a("div",
|
|
265
|
+
}, 1032, ["color"]))), 128)), t.dossier.card ? r("", !0) : (p(), i("span", de, "no course data in this dataset"))]),
|
|
266
|
+
a("div", fe, [o(" lapses " + v(t.dossier.lapses) + " · streak " + v(t.dossier.streak) + " · best interval " + v(fmtInterval(t.dossier.bestIntervalSeconds)) + " · ", 1), t.dossier.pendingReview ? (p(), i(e, { key: 0 }, [o(" next review " + v(y(fmtTime)(t.dossier.pendingReview.reviewTime)) + " ", 1), t.dossier.pendingReview.overdue ? (p(), i("span", pe, "(overdue)")) : r("", !0)], 64)) : (p(), i(e, { key: 1 }, [o("no review scheduled")], 64))]),
|
|
267
267
|
s(f, {
|
|
268
268
|
density: "compact",
|
|
269
269
|
class: "sk-record-table"
|
|
@@ -281,7 +281,7 @@ var ae = {
|
|
|
281
281
|
class: u(e.isCorrect === !1 ? "sk-fail-row" : "")
|
|
282
282
|
}, [
|
|
283
283
|
a("td", null, v(t + 1), 1),
|
|
284
|
-
a("td",
|
|
284
|
+
a("td", me, v(y(fmtTime)(e.timeStamp)), 1),
|
|
285
285
|
a("td", null, [e.isCorrect === !0 ? (p(), n(d, {
|
|
286
286
|
key: 0,
|
|
287
287
|
size: "small",
|
|
@@ -296,11 +296,11 @@ var ae = {
|
|
|
296
296
|
}, {
|
|
297
297
|
default: x(() => c[1] || (c[1] = [o("mdi-close")])),
|
|
298
298
|
_: 1
|
|
299
|
-
})) : (p(), i("span",
|
|
299
|
+
})) : (p(), i("span", he, "—"))]),
|
|
300
300
|
a("td", null, v(perf(e)), 1),
|
|
301
301
|
a("td", null, v(e.priorAttemps ?? "—"), 1),
|
|
302
302
|
a("td", null, v(((e.timeSpent ?? 0) / 1e3).toFixed(1)) + "s", 1),
|
|
303
|
-
a("td",
|
|
303
|
+
a("td", ge, v(y(O)(e.userAnswer)), 1)
|
|
304
304
|
], 2))), 128))])]),
|
|
305
305
|
_: 1
|
|
306
306
|
})
|
|
@@ -311,13 +311,13 @@ var ae = {
|
|
|
311
311
|
let n = e.__vccOpts || e;
|
|
312
312
|
for (let [e, r] of t) n[e] = r;
|
|
313
313
|
return n;
|
|
314
|
-
}, "default"), q = /* @__PURE__ */ K(
|
|
314
|
+
}, "default"), q = /* @__PURE__ */ K(_e, [["__scopeId", "data-v-76b0a622"]]), ve = { class: "text-caption text-medium-emphasis mb-4" }, ye = { class: "text-h6" }, be = { class: "text-caption" }, xe = { class: "d-flex align-center flex-wrap mb-3 ga-3" }, Se = {
|
|
315
315
|
class: "d-flex align-center flex-wrap ga-2",
|
|
316
316
|
style: { width: "100%" }
|
|
317
|
-
},
|
|
317
|
+
}, Ce = { class: "text-body-2 font-weight-medium" }, we = { class: "text-caption text-medium-emphasis" }, Te = {
|
|
318
318
|
key: 2,
|
|
319
319
|
class: "text-caption"
|
|
320
|
-
},
|
|
320
|
+
}, Ee = {
|
|
321
321
|
key: 0,
|
|
322
322
|
class: "ml-1 text-disabled"
|
|
323
323
|
}, J = /* @__PURE__ */ K(/* @__PURE__ */ c({
|
|
@@ -384,7 +384,7 @@ var ae = {
|
|
|
384
384
|
return b(() => d.focus, (e) => void applyFocus(e), { immediate: !0 }), (t, c) => {
|
|
385
385
|
let l = g("v-icon"), d = g("v-card"), m = g("v-col"), b = g("v-row"), w = g("v-btn"), k = g("v-btn-toggle"), j = g("v-text-field"), M = g("v-alert"), N = g("v-spacer"), P = g("v-chip"), F = g("v-expansion-panel-title"), I = g("v-expansion-panel-text"), L = g("v-expansion-panel"), R = g("v-expansion-panels");
|
|
386
386
|
return p(), i("div", null, [
|
|
387
|
-
a("p",
|
|
387
|
+
a("p", ve, [
|
|
388
388
|
c[5] || (c[5] = o(" Every card the learner has met, most painful first (time sunk × failures), with its pending review and current card ELO. ")),
|
|
389
389
|
s(l, {
|
|
390
390
|
size: "x-small",
|
|
@@ -418,14 +418,14 @@ var ae = {
|
|
|
418
418
|
color: e.color,
|
|
419
419
|
class: "pa-2 text-center"
|
|
420
420
|
}, {
|
|
421
|
-
default: x(() => [a("div",
|
|
421
|
+
default: x(() => [a("div", ye, v(e.value), 1), a("div", be, v(e.label), 1)]),
|
|
422
422
|
_: 2
|
|
423
423
|
}, 1032, ["color"])]),
|
|
424
424
|
_: 2
|
|
425
425
|
}, 1024))), 128))]),
|
|
426
426
|
_: 1
|
|
427
427
|
}),
|
|
428
|
-
a("div",
|
|
428
|
+
a("div", xe, [s(k, {
|
|
429
429
|
modelValue: _.value,
|
|
430
430
|
"onUpdate:modelValue": c[0] || (c[0] = (e) => _.value = e),
|
|
431
431
|
density: "compact",
|
|
@@ -509,7 +509,7 @@ var ae = {
|
|
|
509
509
|
class: u(e.cardId === T.value ? "sk-card-flash" : "")
|
|
510
510
|
}, {
|
|
511
511
|
default: x(() => [s(F, null, {
|
|
512
|
-
default: x(() => [a("div",
|
|
512
|
+
default: x(() => [a("div", Se, [
|
|
513
513
|
e.stuck ? (p(), n(l, {
|
|
514
514
|
key: 0,
|
|
515
515
|
color: "error",
|
|
@@ -528,9 +528,9 @@ var ae = {
|
|
|
528
528
|
default: x(() => c[12] || (c[12] = [o(" mdi-snowflake ")])),
|
|
529
529
|
_: 1
|
|
530
530
|
})) : r("", !0),
|
|
531
|
-
a("span",
|
|
532
|
-
a("code",
|
|
533
|
-
headline(e) ? (p(), i("span",
|
|
531
|
+
a("span", Ce, v(e.card?.questionType ?? "card"), 1),
|
|
532
|
+
a("code", we, v(y(shortId)(e.cardId, 24)), 1),
|
|
533
|
+
headline(e) ? (p(), i("span", Te, v(headline(e)), 1)) : r("", !0),
|
|
534
534
|
s(N),
|
|
535
535
|
e.fails > 0 ? (p(), n(P, {
|
|
536
536
|
key: 3,
|
|
@@ -570,7 +570,7 @@ var ae = {
|
|
|
570
570
|
variant: "tonal",
|
|
571
571
|
color: e.frozenElo ? "warning" : void 0
|
|
572
572
|
}, {
|
|
573
|
-
default: x(() => [o(" ELO " + v(e.cardElo === null ? "?" : Math.round(e.cardElo)) + " ", 1), e.cardEloCount === null ? r("", !0) : (p(), i("span",
|
|
573
|
+
default: x(() => [o(" ELO " + v(e.cardElo === null ? "?" : Math.round(e.cardElo)) + " ", 1), e.cardEloCount === null ? r("", !0) : (p(), i("span", Ee, "/" + v(e.cardEloCount), 1))]),
|
|
574
574
|
_: 2
|
|
575
575
|
}, 1032, ["color"])
|
|
576
576
|
])]),
|
|
@@ -593,28 +593,34 @@ var ae = {
|
|
|
593
593
|
]);
|
|
594
594
|
};
|
|
595
595
|
}
|
|
596
|
-
}), [["__scopeId", "data-v-bb6b302b"]]),
|
|
596
|
+
}), [["__scopeId", "data-v-bb6b302b"]]), De = { class: "sk-run-detail" }, Oe = {
|
|
597
597
|
key: 0,
|
|
598
598
|
class: "mb-2"
|
|
599
|
-
},
|
|
599
|
+
}, ke = { class: "text-right" }, Ae = { class: "text-right" }, je = { class: "text-right" }, Me = { class: "text-right" }, Ne = {
|
|
600
600
|
key: 1,
|
|
601
601
|
class: "mb-2"
|
|
602
|
-
},
|
|
602
|
+
}, Pe = { class: "text-right" }, Fe = { class: "text-right" }, Ie = { class: "text-right" }, Le = {
|
|
603
603
|
key: 2,
|
|
604
|
-
class: "mb-2"
|
|
605
|
-
},
|
|
604
|
+
class: "mb-2 sk-mini-line text-medium-emphasis"
|
|
605
|
+
}, Re = {
|
|
606
606
|
key: 3,
|
|
607
607
|
class: "mb-2"
|
|
608
|
-
},
|
|
609
|
-
key: 1,
|
|
610
|
-
title: "runner-up"
|
|
611
|
-
}, Le = ["onClick"], Re = { class: "text-right" }, ze = { class: "text-caption font-weight-medium" }, Be = ["onClick"], Ve = { class: "text-medium-emphasis" }, He = { class: "text-no-wrap" }, Ue = { class: "text-no-wrap" }, We = { class: "text-right text-no-wrap" }, Ge = { class: "text-caption" }, Ke = {
|
|
608
|
+
}, ze = {
|
|
612
609
|
key: 4,
|
|
613
610
|
class: "mb-2"
|
|
614
|
-
},
|
|
611
|
+
}, Be = { class: "text-caption font-weight-medium" }, Ve = {
|
|
612
|
+
key: 0,
|
|
613
|
+
class: "text-medium-emphasis font-weight-regular"
|
|
614
|
+
}, He = {
|
|
615
|
+
key: 1,
|
|
616
|
+
title: "runner-up"
|
|
617
|
+
}, Ue = ["onClick"], We = { class: "text-right" }, Ge = { class: "text-caption font-weight-medium" }, Ke = ["onClick"], qe = { class: "text-medium-emphasis" }, Je = { class: "text-no-wrap" }, Ye = { class: "text-no-wrap" }, Xe = { class: "text-right text-no-wrap" }, Ze = { class: "text-caption" }, Qe = {
|
|
615
618
|
key: 5,
|
|
619
|
+
class: "mb-2"
|
|
620
|
+
}, $e = { class: "sk-hint-block" }, et = {
|
|
621
|
+
key: 6,
|
|
616
622
|
class: "text-caption text-medium-emphasis"
|
|
617
|
-
},
|
|
623
|
+
}, tt = { key: 2 }, Y = /* @__PURE__ */ K(/* @__PURE__ */ c({
|
|
618
624
|
__name: "RunDetail",
|
|
619
625
|
props: { run: {} },
|
|
620
626
|
emits: ["open-card"],
|
|
@@ -628,14 +634,11 @@ var ae = {
|
|
|
628
634
|
label: "top-generated new card (sunk)",
|
|
629
635
|
card: e.topGenerated
|
|
630
636
|
}), t;
|
|
631
|
-
});
|
|
632
|
-
function fmtScore(e) {
|
|
633
|
-
return Math.abs(e) >= .01 || e === 0 ? e.toFixed(2) : e.toExponential(1);
|
|
634
|
-
}
|
|
637
|
+
}), _ = t(() => z(d.run).map((e) => `${e.source} ${e.count}`).join(" · "));
|
|
635
638
|
return (t, c) => {
|
|
636
639
|
let l = g("v-table"), d = g("v-icon");
|
|
637
|
-
return p(), i("div",
|
|
638
|
-
t.run.generators?.length ? (p(), i("div",
|
|
640
|
+
return p(), i("div", De, [
|
|
641
|
+
t.run.generators?.length ? (p(), i("div", Oe, [c[1] || (c[1] = a("div", { class: "text-caption font-weight-medium" }, "generators", -1)), s(l, {
|
|
639
642
|
density: "compact",
|
|
640
643
|
class: "sk-mini-table"
|
|
641
644
|
}, {
|
|
@@ -647,14 +650,14 @@ var ae = {
|
|
|
647
650
|
a("th", { class: "text-right" }, "top")
|
|
648
651
|
])], -1)), a("tbody", null, [(p(!0), i(e, null, h(t.run.generators, (e) => (p(), i("tr", { key: e.name }, [
|
|
649
652
|
a("td", null, v(e.name), 1),
|
|
650
|
-
a("td",
|
|
651
|
-
a("td",
|
|
652
|
-
a("td",
|
|
653
|
-
a("td",
|
|
653
|
+
a("td", ke, v(e.cardCount), 1),
|
|
654
|
+
a("td", Ae, v(e.newCount), 1),
|
|
655
|
+
a("td", je, v(e.reviewCount), 1),
|
|
656
|
+
a("td", Me, v(e.topScore.toFixed(2)), 1)
|
|
654
657
|
]))), 128))])]),
|
|
655
658
|
_: 1
|
|
656
659
|
})])) : r("", !0),
|
|
657
|
-
t.run.filters?.length ? (p(), i("div",
|
|
660
|
+
t.run.filters?.length ? (p(), i("div", Ne, [c[3] || (c[3] = a("div", { class: "text-caption font-weight-medium" }, "filters", -1)), s(l, {
|
|
658
661
|
density: "compact",
|
|
659
662
|
class: "sk-mini-table"
|
|
660
663
|
}, {
|
|
@@ -668,26 +671,27 @@ var ae = {
|
|
|
668
671
|
])], -1)), a("tbody", null, [(p(!0), i(e, null, h(t.run.filters, (e) => (p(), i("tr", { key: e.name }, [
|
|
669
672
|
a("td", null, v(e.name), 1),
|
|
670
673
|
a("td", null, v(e.kind ?? "—"), 1),
|
|
671
|
-
a("td",
|
|
672
|
-
a("td",
|
|
673
|
-
a("td",
|
|
674
|
+
a("td", Pe, v(e.boosted), 1),
|
|
675
|
+
a("td", Fe, v(e.penalized), 1),
|
|
676
|
+
a("td", Ie, v(e.passed), 1),
|
|
674
677
|
a("td", { class: u(["text-right", e.removed > 0 ? "text-error" : ""]) }, v(e.removed), 3)
|
|
675
678
|
]))), 128))])]),
|
|
676
679
|
_: 1
|
|
677
680
|
})])) : r("", !0),
|
|
678
|
-
t.run.
|
|
681
|
+
t.run.versions ? (p(), i("div", Le, " strategies " + v(t.run.versions.strategies ?? "—") + " · content " + v(t.run.versions.content ?? "—"), 1)) : r("", !0),
|
|
682
|
+
t.run.regulators?.length ? (p(), i("div", Re, [c[4] || (c[4] = a("div", { class: "text-caption font-weight-medium" }, "regulators", -1)), (p(!0), i(e, null, h(t.run.regulators, (e) => (p(), i("div", {
|
|
679
683
|
key: e.name,
|
|
680
684
|
class: "sk-mini-line"
|
|
681
|
-
}, [a("span", { class: u(e.multiplier > 1 ? "text-warning" : "text-medium-emphasis") }, " ×" + v(e.multiplier.toFixed(2)), 3), o(" " + v(y(
|
|
682
|
-
t.run.cards?.length ? (p(), i("div",
|
|
685
|
+
}, [a("span", { class: u(e.multiplier > 1 ? "text-warning" : "text-medium-emphasis") }, " ×" + v(e.multiplier.toFixed(2)), 3), o(" " + v(y(L)(e)), 1)]))), 128))])) : r("", !0),
|
|
686
|
+
t.run.cards?.length ? (p(), i("div", ze, [a("div", Be, [c[5] || (c[5] = o(" selection ")), _.value ? (p(), i("span", Ve, " · by source: " + v(_.value), 1)) : r("", !0)]), s(l, {
|
|
683
687
|
density: "compact",
|
|
684
688
|
class: "sk-mini-table"
|
|
685
689
|
}, {
|
|
686
|
-
default: x(() => [c[
|
|
690
|
+
default: x(() => [c[7] || (c[7] = a("thead", null, [a("tr", null, [
|
|
687
691
|
a("th"),
|
|
688
692
|
a("th", null, "card"),
|
|
689
693
|
a("th", null, "origin"),
|
|
690
|
-
a("th", null, "
|
|
694
|
+
a("th", null, "source"),
|
|
691
695
|
a("th", { class: "text-right" }, "score")
|
|
692
696
|
])], -1)), a("tbody", null, [(p(!0), i(e, null, h(t.run.cards, (e) => (p(), i("tr", {
|
|
693
697
|
key: e.cardId,
|
|
@@ -698,67 +702,67 @@ var ae = {
|
|
|
698
702
|
size: "x-small",
|
|
699
703
|
color: "success"
|
|
700
704
|
}, {
|
|
701
|
-
default: x(() => c[
|
|
705
|
+
default: x(() => c[6] || (c[6] = [o("mdi-check")])),
|
|
702
706
|
_: 1
|
|
703
|
-
})) : (p(), i("span",
|
|
707
|
+
})) : (p(), i("span", He, "·"))]),
|
|
704
708
|
a("td", null, [a("a", {
|
|
705
709
|
class: "sk-card-link",
|
|
706
710
|
onClick: (t) => f("open-card", e.cardId)
|
|
707
|
-
}, v(e.cardId), 9,
|
|
711
|
+
}, v(e.cardId), 9, Ue)]),
|
|
708
712
|
a("td", null, v(e.origin), 1),
|
|
709
|
-
a("td", null, v(e
|
|
710
|
-
a("td",
|
|
713
|
+
a("td", null, v(y(R)(e)), 1),
|
|
714
|
+
a("td", We, v(y(j)(e.score)), 1)
|
|
711
715
|
], 2))), 128))])]),
|
|
712
716
|
_: 1
|
|
713
717
|
})])) : r("", !0),
|
|
714
718
|
(p(!0), i(e, null, h(m.value, (t) => (p(), i("div", {
|
|
715
719
|
key: t.label,
|
|
716
720
|
class: "mb-2"
|
|
717
|
-
}, [a("div",
|
|
721
|
+
}, [a("div", Ge, [
|
|
718
722
|
o(v(t.label) + ": ", 1),
|
|
719
723
|
a("a", {
|
|
720
724
|
class: "sk-card-link",
|
|
721
725
|
onClick: (e) => f("open-card", t.card.cardId)
|
|
722
|
-
}, v(t.card.cardId), 9,
|
|
723
|
-
a("span",
|
|
726
|
+
}, v(t.card.cardId), 9, Ke),
|
|
727
|
+
a("span", qe, " (" + v(t.card.origin) + ", " + v(y(R)(t.card)) + ") final " + v(y(j)(t.card.score)), 1)
|
|
724
728
|
]), s(l, {
|
|
725
729
|
density: "compact",
|
|
726
730
|
class: "sk-mini-table"
|
|
727
731
|
}, {
|
|
728
732
|
default: x(() => [a("tbody", null, [(p(!0), i(e, null, h(t.card.trail, (e, t) => (p(), i("tr", { key: t }, [
|
|
729
|
-
a("td",
|
|
730
|
-
a("td",
|
|
731
|
-
a("td",
|
|
732
|
-
a("td",
|
|
733
|
+
a("td", Je, v(e.action), 1),
|
|
734
|
+
a("td", Ye, v(e.strategyName), 1),
|
|
735
|
+
a("td", Xe, v(y(j)(e.score)), 1),
|
|
736
|
+
a("td", Ze, v(e.reason), 1)
|
|
733
737
|
]))), 128))])]),
|
|
734
738
|
_: 2
|
|
735
739
|
}, 1024)]))), 128)),
|
|
736
|
-
t.run.hints ? (p(), i("div",
|
|
737
|
-
t.run.discardedTail ? (p(), i("div",
|
|
740
|
+
t.run.hints ? (p(), i("div", Qe, [c[8] || (c[8] = a("div", { class: "text-caption font-weight-medium" }, "hints", -1)), a("pre", $e, v(JSON.stringify(t.run.hints, null, 2)), 1)])) : r("", !0),
|
|
741
|
+
t.run.discardedTail ? (p(), i("div", et, [
|
|
738
742
|
o(" discarded tail: " + v(t.run.discardedTail.count) + " cards ", 1),
|
|
739
743
|
t.run.discardedTail.scoreRange ? (p(), i(e, { key: 0 }, [o(" · score [" + v(t.run.discardedTail.scoreRange[0].toFixed(2)) + ", " + v(t.run.discardedTail.scoreRange[1].toFixed(2)) + "] ", 1)], 64)) : r("", !0),
|
|
740
744
|
t.run.discardedTail.eloRange ? (p(), i(e, { key: 1 }, [o(" · ELO [" + v(Math.round(t.run.discardedTail.eloRange[0])) + ", " + v(Math.round(t.run.discardedTail.eloRange[1])) + "] ", 1)], 64)) : r("", !0),
|
|
741
|
-
t.run.discardedTail.note ? (p(), i("div",
|
|
745
|
+
t.run.discardedTail.note ? (p(), i("div", tt, v(t.run.discardedTail.note), 1)) : r("", !0)
|
|
742
746
|
])) : r("", !0)
|
|
743
747
|
]);
|
|
744
748
|
};
|
|
745
749
|
}
|
|
746
|
-
}), [["__scopeId", "data-v-
|
|
750
|
+
}), [["__scopeId", "data-v-90c88783"]]), nt = { class: "d-flex align-center flex-wrap mb-4 ga-2" }, rt = { class: "text-caption text-medium-emphasis" }, it = { class: "text-right" }, at = { class: "text-right" }, ot = {
|
|
747
751
|
key: 1,
|
|
748
752
|
class: "text-caption text-disabled"
|
|
749
|
-
},
|
|
753
|
+
}, st = { class: "sk-hint-block" }, ct = { class: "sk-hint-block" }, lt = { class: "text-caption text-medium-emphasis mb-4" }, ut = { class: "text-right" }, dt = { class: "text-right" }, ft = { class: "text-disabled" }, pt = { class: "text-right" }, mt = { class: "d-flex flex-wrap ga-5" }, ht = { class: "text-caption text-medium-emphasis" }, gt = { class: "text-h6 text-success" }, _t = { class: "text-caption text-medium-emphasis" }, vt = { class: "text-h6 text-error" }, yt = { class: "text-h6" }, bt = { class: "text-caption text-disabled" }, xt = { class: "d-flex align-center flex-wrap mb-2 ga-3" }, St = {
|
|
750
754
|
key: 4,
|
|
751
755
|
class: "sk-timeline"
|
|
752
|
-
},
|
|
756
|
+
}, Ct = { class: "sk-tl-time text-caption text-disabled" }, wt = { class: "sk-tl-gutter" }, Tt = {
|
|
753
757
|
key: 0,
|
|
754
758
|
class: "sk-tl-body"
|
|
755
|
-
},
|
|
759
|
+
}, Et = { class: "d-flex align-center flex-wrap ga-1" }, Dt = { class: "font-weight-medium" }, Ot = { class: "text-caption text-medium-emphasis ml-2" }, kt = {
|
|
756
760
|
key: 1,
|
|
757
761
|
class: "text-caption text-error ml-2"
|
|
758
|
-
},
|
|
762
|
+
}, At = {
|
|
759
763
|
key: 1,
|
|
760
764
|
class: "sk-tl-body"
|
|
761
|
-
},
|
|
765
|
+
}, jt = ["title", "onClick"], Mt = { class: "text-caption" }, Nt = { class: "text-caption text-medium-emphasis ml-2" }, Pt = {
|
|
762
766
|
key: 0,
|
|
763
767
|
class: "text-caption text-disabled ml-2"
|
|
764
768
|
}, X = /* @__PURE__ */ K(/* @__PURE__ */ c({
|
|
@@ -770,17 +774,17 @@ var ae = {
|
|
|
770
774
|
},
|
|
771
775
|
emits: ["open-card"],
|
|
772
776
|
setup(c, { emit: l }) {
|
|
773
|
-
let d = c, f = l, _ = t(() =>
|
|
777
|
+
let d = c, f = l, _ = t(() => V(d.dataset, d.sessionId, d.interpreters)), b = t(() => _.value.summary.doc), S = t(() => B(_.value?.timeline ?? [], d.interpreters)), w = t(() => E(_.value?.timeline ?? [])), T = t(() => _.value?.timeline.filter((e) => e.kind === "response").length ?? 0), D = m("all"), j = t(() => {
|
|
774
778
|
let e = _.value?.timeline ?? [];
|
|
775
779
|
return !D.value || D.value === "all" ? e : e.filter((e) => e.kind === D.value);
|
|
776
|
-
}),
|
|
780
|
+
}), M = m(/* @__PURE__ */ new Set());
|
|
777
781
|
function toggle(e) {
|
|
778
|
-
let t = new Set(
|
|
779
|
-
t.has(e) ? t.delete(e) : t.add(e),
|
|
782
|
+
let t = new Set(M.value);
|
|
783
|
+
t.has(e) ? t.delete(e) : t.add(e), M.value = t;
|
|
780
784
|
}
|
|
781
785
|
let { copied: P, copy: F } = useCopy();
|
|
782
786
|
function asText() {
|
|
783
|
-
return _.value ?
|
|
787
|
+
return _.value ? ne(d.dataset.username, _.value, {
|
|
784
788
|
servedTags: S.value,
|
|
785
789
|
eloLedger: w.value
|
|
786
790
|
}, d.interpreters) : "";
|
|
@@ -792,7 +796,7 @@ var ae = {
|
|
|
792
796
|
return e.durationSeconds === null ? `— of ${t}` : `${A(e.durationSeconds)} of ${t}`;
|
|
793
797
|
});
|
|
794
798
|
function skillTags(e) {
|
|
795
|
-
return e.filter((e) =>
|
|
799
|
+
return e.filter((e) => N(d.interpreters, e)).slice(0, 3);
|
|
796
800
|
}
|
|
797
801
|
function fmtNum(e) {
|
|
798
802
|
return e === null ? "—" : Number.isInteger(e) ? String(e) : e.toFixed(1);
|
|
@@ -810,9 +814,9 @@ var ae = {
|
|
|
810
814
|
return e.kind === "run" ? "sk-tl-run" : e.isCorrect === !1 ? "sk-tl-fail" : "";
|
|
811
815
|
}
|
|
812
816
|
return (t, c) => {
|
|
813
|
-
let l = g("v-alert"), d = g("v-chip"), m = g("v-icon"), E = g("v-spacer"), A = g("v-btn"),
|
|
817
|
+
let l = g("v-alert"), d = g("v-chip"), m = g("v-icon"), E = g("v-spacer"), A = g("v-btn"), L = g("v-table"), R = g("v-card"), z = g("v-col"), B = g("v-row"), V = g("v-btn-toggle");
|
|
814
818
|
return p(), i("div", null, [_.value ? (p(), i(e, { key: 1 }, [
|
|
815
|
-
a("div",
|
|
819
|
+
a("div", nt, [
|
|
816
820
|
s(d, {
|
|
817
821
|
size: "small",
|
|
818
822
|
variant: "flat",
|
|
@@ -840,20 +844,20 @@ var ae = {
|
|
|
840
844
|
key: e,
|
|
841
845
|
size: "small",
|
|
842
846
|
variant: "tonal",
|
|
843
|
-
color: y(
|
|
847
|
+
color: y(W)[e].color,
|
|
844
848
|
title: y(C)[e].help
|
|
845
849
|
}, {
|
|
846
850
|
default: x(() => [s(m, {
|
|
847
851
|
start: "",
|
|
848
852
|
size: "small"
|
|
849
853
|
}, {
|
|
850
|
-
default: x(() => [o(v(y(
|
|
854
|
+
default: x(() => [o(v(y(W)[e].icon), 1)]),
|
|
851
855
|
_: 2
|
|
852
856
|
}, 1024), o(" " + v(y(C)[e].label), 1)]),
|
|
853
857
|
_: 2
|
|
854
858
|
}, 1032, ["color", "title"]))), 128)),
|
|
855
859
|
s(E),
|
|
856
|
-
a("code",
|
|
860
|
+
a("code", rt, v(t.sessionId), 1),
|
|
857
861
|
s(A, {
|
|
858
862
|
variant: "text",
|
|
859
863
|
size: "small",
|
|
@@ -875,19 +879,19 @@ var ae = {
|
|
|
875
879
|
default: x(() => [o(" The session records " + v(b.value.tally?.responses) + " responses but only " + v(T.value) + " card records carry its id. The timeline is incomplete. ", 1)]),
|
|
876
880
|
_: 1
|
|
877
881
|
})) : r("", !0),
|
|
878
|
-
s(
|
|
879
|
-
default: x(() => [s(
|
|
882
|
+
s(B, { class: "mb-2" }, {
|
|
883
|
+
default: x(() => [s(z, {
|
|
880
884
|
cols: "12",
|
|
881
885
|
md: "6"
|
|
882
886
|
}, {
|
|
883
|
-
default: x(() => [s(
|
|
887
|
+
default: x(() => [s(R, {
|
|
884
888
|
variant: "outlined",
|
|
885
889
|
class: "pa-3 h-100"
|
|
886
890
|
}, {
|
|
887
891
|
default: x(() => [
|
|
888
892
|
c[4] || (c[4] = a("div", { class: "text-subtitle-2 mb-1" }, "Learner state", -1)),
|
|
889
893
|
c[5] || (c[5] = a("div", { class: "text-caption text-medium-emphasis mb-3" }, " What the navigator was choosing against, and what moved. ", -1)),
|
|
890
|
-
_.value.summary.state.length ? (p(), n(
|
|
894
|
+
_.value.summary.state.length ? (p(), n(L, {
|
|
891
895
|
key: 0,
|
|
892
896
|
density: "compact",
|
|
893
897
|
class: "sk-mini-table"
|
|
@@ -899,21 +903,21 @@ var ae = {
|
|
|
899
903
|
a("th", { class: "text-right" }, "Δ")
|
|
900
904
|
])], -1)), a("tbody", null, [(p(!0), i(e, null, h(_.value.summary.state, (e) => (p(), i("tr", { key: e.label }, [
|
|
901
905
|
a("td", null, v(e.label), 1),
|
|
902
|
-
a("td",
|
|
903
|
-
a("td",
|
|
906
|
+
a("td", it, v(fmtNum(e.from)), 1),
|
|
907
|
+
a("td", at, v(fmtNum(e.to)), 1),
|
|
904
908
|
a("td", { class: u(["text-right", y(deltaClass)(e.delta)]) }, v(y(k)(e.delta)), 3)
|
|
905
909
|
]))), 128))])]),
|
|
906
910
|
_: 1
|
|
907
|
-
})) : (p(), i("div",
|
|
911
|
+
})) : (p(), i("div", ot, "No state snapshot recorded."))
|
|
908
912
|
]),
|
|
909
913
|
_: 1
|
|
910
914
|
})]),
|
|
911
915
|
_: 1
|
|
912
|
-
}), s(
|
|
916
|
+
}), s(z, {
|
|
913
917
|
cols: "12",
|
|
914
918
|
md: "6"
|
|
915
919
|
}, {
|
|
916
|
-
default: x(() => [s(
|
|
920
|
+
default: x(() => [s(R, {
|
|
917
921
|
variant: "outlined",
|
|
918
922
|
class: "pa-3 h-100"
|
|
919
923
|
}, {
|
|
@@ -921,9 +925,9 @@ var ae = {
|
|
|
921
925
|
c[6] || (c[6] = a("div", { class: "text-subtitle-2 mb-1" }, "Session hints", -1)),
|
|
922
926
|
c[7] || (c[7] = a("div", { class: "text-caption text-medium-emphasis mb-3" }, " What outcome observers told the navigator. They act only through these. ", -1)),
|
|
923
927
|
c[8] || (c[8] = a("span", { class: "text-caption font-weight-medium" }, "at open", -1)),
|
|
924
|
-
a("pre",
|
|
928
|
+
a("pre", st, v(fmtHints(b.value.config?.initHints)), 1),
|
|
925
929
|
c[9] || (c[9] = a("span", { class: "text-caption font-weight-medium" }, "at close", -1)),
|
|
926
|
-
a("pre",
|
|
930
|
+
a("pre", ct, v(fmtHints(b.value.finalHints)), 1)
|
|
927
931
|
]),
|
|
928
932
|
_: 1
|
|
929
933
|
})]),
|
|
@@ -931,8 +935,12 @@ var ae = {
|
|
|
931
935
|
})]),
|
|
932
936
|
_: 1
|
|
933
937
|
}),
|
|
934
|
-
a("div",
|
|
935
|
-
|
|
938
|
+
a("div", lt, [
|
|
939
|
+
o(" batch limit " + v(b.value.config?.defaultBatchLimit ?? "?") + " · " + v(b.value.config?.sourceCount ?? "?") + " source(s) · opening queues supply " + v(b.value.initialQueues?.supplyQ ?? "?") + " / failed " + v(b.value.initialQueues?.failedQ ?? "?") + " ", 1),
|
|
940
|
+
b.value.tally ? (p(), i(e, { key: 0 }, [o(" · ended with " + v(b.value.tally.failedQRemaining) + " still in the failed queue", 1)], 64)) : r("", !0),
|
|
941
|
+
b.value.versions ? (p(), i(e, { key: 1 }, [o(" · framework " + v(b.value.versions.framework), 1), b.value.versions.app ? (p(), i(e, { key: 0 }, [o(" · app " + v(b.value.versions.app), 1)], 64)) : r("", !0)], 64)) : r("", !0)
|
|
942
|
+
]),
|
|
943
|
+
S.value.length ? (p(), n(R, {
|
|
936
944
|
key: 1,
|
|
937
945
|
variant: "outlined",
|
|
938
946
|
class: "pa-3 mb-4"
|
|
@@ -940,7 +948,7 @@ var ae = {
|
|
|
940
948
|
default: x(() => [
|
|
941
949
|
c[11] || (c[11] = a("div", { class: "text-subtitle-2 mb-1" }, "Served tags", -1)),
|
|
942
950
|
c[12] || (c[12] = a("div", { class: "text-caption text-medium-emphasis mb-2" }, " What this sitting put in front of the learner, by content tag. A response with several tags counts toward each. ", -1)),
|
|
943
|
-
s(
|
|
951
|
+
s(L, {
|
|
944
952
|
density: "compact",
|
|
945
953
|
class: "sk-mini-table"
|
|
946
954
|
}, {
|
|
@@ -951,18 +959,18 @@ var ae = {
|
|
|
951
959
|
a("th", { class: "text-right" }, "Accuracy"),
|
|
952
960
|
a("th", { class: "text-right" }, "Time")
|
|
953
961
|
])], -1)), a("tbody", null, [(p(!0), i(e, null, h(S.value, (n) => (p(), i("tr", { key: n.tag }, [
|
|
954
|
-
a("td", null, [a("code", { class: u(y(
|
|
955
|
-
a("td",
|
|
956
|
-
a("td",
|
|
957
|
-
a("td", { class: u(["text-right", y(accuracyClass)(n.accuracy)]) }, [n.accuracy === null ? (p(), i(e, { key: 0 }, [o("—")], 64)) : (p(), i(e, { key: 1 }, [o(v(Math.round(n.accuracy * 100)) + "% ", 1), a("span",
|
|
958
|
-
a("td",
|
|
962
|
+
a("td", null, [a("code", { class: u(y(N)(t.interpreters, n.tag) ? "text-primary" : "") }, v(n.tag), 3)]),
|
|
963
|
+
a("td", ut, v(n.responses), 1),
|
|
964
|
+
a("td", dt, v(n.cards), 1),
|
|
965
|
+
a("td", { class: u(["text-right", y(accuracyClass)(n.accuracy)]) }, [n.accuracy === null ? (p(), i(e, { key: 0 }, [o("—")], 64)) : (p(), i(e, { key: 1 }, [o(v(Math.round(n.accuracy * 100)) + "% ", 1), a("span", ft, "(" + v(n.correct) + "/" + v(n.correct + n.incorrect) + ")", 1)], 64))], 2),
|
|
966
|
+
a("td", pt, v((n.totalTimeMs / 1e3).toFixed(1)) + "s", 1)
|
|
959
967
|
]))), 128))])]),
|
|
960
968
|
_: 1
|
|
961
969
|
})
|
|
962
970
|
]),
|
|
963
971
|
_: 1
|
|
964
972
|
})) : r("", !0),
|
|
965
|
-
w.value ? (p(), n(
|
|
973
|
+
w.value ? (p(), n(R, {
|
|
966
974
|
key: 2,
|
|
967
975
|
variant: "outlined",
|
|
968
976
|
class: "pa-3 mb-4"
|
|
@@ -970,20 +978,20 @@ var ae = {
|
|
|
970
978
|
default: x(() => [
|
|
971
979
|
c[15] || (c[15] = a("div", { class: "text-subtitle-2 mb-1" }, "ELO ledger", -1)),
|
|
972
980
|
c[16] || (c[16] = a("div", { class: "text-caption text-medium-emphasis mb-3" }, " The per-response learner global-ELO exchanges that net to the session's ELO move. Wins above the learner's level pay little; losses below it cost a lot, so a high hit rate can still net negative. ", -1)),
|
|
973
|
-
a("div",
|
|
981
|
+
a("div", mt, [
|
|
974
982
|
a("div", null, [c[13] || (c[13] = a("div", { class: "text-caption text-medium-emphasis" }, "net", -1)), a("div", { class: u(["text-h6", y(deltaClass)(w.value.net)]) }, v(y(k)(w.value.net)), 3)]),
|
|
975
|
-
a("div", null, [a("div",
|
|
976
|
-
a("div", null, [a("div",
|
|
983
|
+
a("div", null, [a("div", ht, "gained · " + v(w.value.wins) + " win(s)", 1), a("div", gt, v(y(k)(w.value.gained)), 1)]),
|
|
984
|
+
a("div", null, [a("div", _t, "lost · " + v(w.value.losses) + " loss(es)", 1), a("div", vt, v(y(k)(w.value.lost)), 1)]),
|
|
977
985
|
a("div", null, [
|
|
978
986
|
c[14] || (c[14] = a("div", { class: "text-caption text-medium-emphasis" }, "exchanges", -1)),
|
|
979
|
-
a("div",
|
|
980
|
-
a("div",
|
|
987
|
+
a("div", yt, v(w.value.count), 1),
|
|
988
|
+
a("div", bt, "of " + v(T.value) + " response(s)", 1)
|
|
981
989
|
])
|
|
982
990
|
])
|
|
983
991
|
]),
|
|
984
992
|
_: 1
|
|
985
993
|
})) : r("", !0),
|
|
986
|
-
a("div",
|
|
994
|
+
a("div", xt, [c[17] || (c[17] = a("h2", { class: "text-h6" }, "Timeline", -1)), s(V, {
|
|
987
995
|
modelValue: D.value,
|
|
988
996
|
"onUpdate:modelValue": c[1] || (c[1] = (e) => D.value = e),
|
|
989
997
|
density: "compact",
|
|
@@ -1022,20 +1030,20 @@ var ae = {
|
|
|
1022
1030
|
}, {
|
|
1023
1031
|
default: x(() => c[18] || (c[18] = [o("Nothing recorded for this session.")])),
|
|
1024
1032
|
_: 1
|
|
1025
|
-
})) : (p(), i("div",
|
|
1033
|
+
})) : (p(), i("div", St, [(p(!0), i(e, null, h(j.value, (l, g) => (p(), i("div", {
|
|
1026
1034
|
key: g,
|
|
1027
1035
|
class: u(["sk-tl-row", rowClass(l)])
|
|
1028
1036
|
}, [
|
|
1029
|
-
a("div",
|
|
1030
|
-
a("div",
|
|
1037
|
+
a("div", Ct, v(y(fmtClock)(l.at)), 1),
|
|
1038
|
+
a("div", wt, [s(m, {
|
|
1031
1039
|
size: "small",
|
|
1032
1040
|
color: entryColor(l)
|
|
1033
1041
|
}, {
|
|
1034
1042
|
default: x(() => [o(v(entryIcon(l)), 1)]),
|
|
1035
1043
|
_: 2
|
|
1036
1044
|
}, 1032, ["color"])]),
|
|
1037
|
-
l.kind === "run" ? (p(), i("div",
|
|
1038
|
-
a("span",
|
|
1045
|
+
l.kind === "run" ? (p(), i("div", Tt, [a("div", Et, [
|
|
1046
|
+
a("span", Dt, v(l.run.label), 1),
|
|
1039
1047
|
l.run.mode ? (p(), n(d, {
|
|
1040
1048
|
key: 0,
|
|
1041
1049
|
size: "x-small",
|
|
@@ -1044,8 +1052,8 @@ var ae = {
|
|
|
1044
1052
|
default: x(() => [o(v(l.run.mode), 1)]),
|
|
1045
1053
|
_: 2
|
|
1046
1054
|
}, 1024)) : r("", !0),
|
|
1047
|
-
a("span",
|
|
1048
|
-
l.run.generatedCount > 0 && l.run.finalCount === 0 ? (p(), i("span",
|
|
1055
|
+
a("span", Ot, " generated " + v(l.run.generatedCount) + " → selected " + v(l.run.finalCount) + " (" + v(l.run.newSelected) + " new, " + v(l.run.reviewsSelected) + " review) ", 1),
|
|
1056
|
+
l.run.generatedCount > 0 && l.run.finalCount === 0 ? (p(), i("span", kt, " nothing survived ")) : r("", !0),
|
|
1049
1057
|
typeof l.run.userElo == "number" ? (p(), n(d, {
|
|
1050
1058
|
key: 2,
|
|
1051
1059
|
size: "x-small",
|
|
@@ -1058,7 +1066,7 @@ var ae = {
|
|
|
1058
1066
|
}, 1024)) : r("", !0),
|
|
1059
1067
|
s(E),
|
|
1060
1068
|
s(A, {
|
|
1061
|
-
icon:
|
|
1069
|
+
icon: M.value.has(l.run.runId) ? "mdi-chevron-up" : "mdi-chevron-down",
|
|
1062
1070
|
size: "x-small",
|
|
1063
1071
|
variant: "text",
|
|
1064
1072
|
onClick: (e) => toggle(l.run.runId)
|
|
@@ -1069,23 +1077,23 @@ var ae = {
|
|
|
1069
1077
|
variant: "text",
|
|
1070
1078
|
color: y(P) === l.run.runId ? "success" : void 0,
|
|
1071
1079
|
title: "Copy run as text",
|
|
1072
|
-
onClick: (e) => y(F)(y(
|
|
1080
|
+
onClick: (e) => y(F)(y(ee)(l.run), l.run.runId)
|
|
1073
1081
|
}, null, 8, [
|
|
1074
1082
|
"icon",
|
|
1075
1083
|
"color",
|
|
1076
1084
|
"onClick"
|
|
1077
1085
|
])
|
|
1078
|
-
]),
|
|
1086
|
+
]), M.value.has(l.run.runId) ? (p(), n(Y, {
|
|
1079
1087
|
key: 0,
|
|
1080
1088
|
run: l.run,
|
|
1081
1089
|
class: "mt-1",
|
|
1082
1090
|
onOpenCard: c[2] || (c[2] = (e) => f("open-card", e))
|
|
1083
|
-
}, null, 8, ["run"])) : r("", !0)])) : (p(), i("div",
|
|
1091
|
+
}, null, 8, ["run"])) : r("", !0)])) : (p(), i("div", At, [
|
|
1084
1092
|
a("a", {
|
|
1085
1093
|
class: "sk-card-link",
|
|
1086
1094
|
title: `Open ${l.cardId} in card history`,
|
|
1087
1095
|
onClick: (e) => f("open-card", l.cardId)
|
|
1088
|
-
}, [o(v(l.questionType ?? "card") + " ", 1), a("code",
|
|
1096
|
+
}, [o(v(l.questionType ?? "card") + " ", 1), a("code", Mt, v(y(shortId)(l.cardId)), 1)], 8, jt),
|
|
1089
1097
|
(p(!0), i(e, null, h(skillTags(l.tags), (e) => (p(), n(d, {
|
|
1090
1098
|
key: e,
|
|
1091
1099
|
size: "x-small",
|
|
@@ -1096,8 +1104,8 @@ var ae = {
|
|
|
1096
1104
|
default: x(() => [o(v(y(H)(t.interpreters, e)), 1)]),
|
|
1097
1105
|
_: 2
|
|
1098
1106
|
}, 1024))), 128)),
|
|
1099
|
-
a("span",
|
|
1100
|
-
l.userAnswer == null ? r("", !0) : (p(), i("span",
|
|
1107
|
+
a("span", Nt, [o(v((l.timeSpentMs / 1e3).toFixed(1)) + "s ", 1), l.priorAttempts ? (p(), i(e, { key: 0 }, [o(" · attempt " + v(l.priorAttempts + 1), 1)], 64)) : r("", !0)]),
|
|
1108
|
+
l.userAnswer == null ? r("", !0) : (p(), i("span", Pt, "“" + v(y(O)(l.userAnswer)) + "”", 1)),
|
|
1101
1109
|
l.elo ? (p(), i(e, { key: 1 }, [s(d, {
|
|
1102
1110
|
size: "x-small",
|
|
1103
1111
|
variant: "tonal",
|
|
@@ -1107,7 +1115,7 @@ var ae = {
|
|
|
1107
1115
|
}, {
|
|
1108
1116
|
default: x(() => [o(" ELO " + v(y(k)(l.elo.global.delta)), 1)]),
|
|
1109
1117
|
_: 2
|
|
1110
|
-
}, 1032, ["color", "title"]), (p(!0), i(e, null, h(y(
|
|
1118
|
+
}, 1032, ["color", "title"]), (p(!0), i(e, null, h(y(te)(l.elo), (e) => (p(), n(d, {
|
|
1111
1119
|
key: e.tag,
|
|
1112
1120
|
size: "x-small",
|
|
1113
1121
|
variant: "text",
|
|
@@ -1130,13 +1138,13 @@ var ae = {
|
|
|
1130
1138
|
}))]);
|
|
1131
1139
|
};
|
|
1132
1140
|
}
|
|
1133
|
-
}), [["__scopeId", "data-v-
|
|
1141
|
+
}), [["__scopeId", "data-v-3cc6eb88"]]), Ft = { class: "text-h6" }, It = { class: "text-caption" }, Lt = { class: "d-flex align-center flex-wrap mb-3 ga-3" }, Rt = ["onClick"], zt = { class: "text-no-wrap" }, Bt = { class: "text-right" }, Vt = { class: "text-right" }, Ht = {
|
|
1134
1142
|
key: 1,
|
|
1135
1143
|
class: "text-disabled"
|
|
1136
|
-
},
|
|
1144
|
+
}, Ut = { class: "text-right" }, Wt = { class: "text-no-wrap text-caption" }, Gt = { class: "text-no-wrap text-caption" }, Kt = { key: 0 }, qt = {
|
|
1137
1145
|
key: 0,
|
|
1138
1146
|
class: "text-disabled"
|
|
1139
|
-
},
|
|
1147
|
+
}, Jt = { class: "text-right" }, Z = /* @__PURE__ */ K(/* @__PURE__ */ c({
|
|
1140
1148
|
__name: "LearnerSessionList",
|
|
1141
1149
|
props: {
|
|
1142
1150
|
dataset: {},
|
|
@@ -1144,7 +1152,7 @@ var ae = {
|
|
|
1144
1152
|
},
|
|
1145
1153
|
emits: ["open"],
|
|
1146
1154
|
setup(c, { emit: l }) {
|
|
1147
|
-
let d = c, f = l, _ = t(() =>
|
|
1155
|
+
let d = c, f = l, _ = t(() => re(d.dataset, d.interpreters)), b = m("all"), S = t(() => {
|
|
1148
1156
|
let e = /* @__PURE__ */ new Map();
|
|
1149
1157
|
for (let t of _.value) for (let n of t.flags) e.set(n, (e.get(n) ?? 0) + 1);
|
|
1150
1158
|
return [...e.entries()].map(([e, t]) => ({
|
|
@@ -1228,14 +1236,14 @@ var ae = {
|
|
|
1228
1236
|
color: e.color,
|
|
1229
1237
|
class: "pa-2 text-center"
|
|
1230
1238
|
}, {
|
|
1231
|
-
default: x(() => [a("div",
|
|
1239
|
+
default: x(() => [a("div", Ft, v(e.value), 1), a("div", It, v(e.label), 1)]),
|
|
1232
1240
|
_: 2
|
|
1233
1241
|
}, 1032, ["color"])]),
|
|
1234
1242
|
_: 2
|
|
1235
1243
|
}, 1024))), 128))]),
|
|
1236
1244
|
_: 1
|
|
1237
1245
|
}),
|
|
1238
|
-
a("div",
|
|
1246
|
+
a("div", Lt, [s(O, {
|
|
1239
1247
|
modelValue: b.value,
|
|
1240
1248
|
"onUpdate:modelValue": c[0] || (c[0] = (e) => b.value = e),
|
|
1241
1249
|
density: "compact",
|
|
@@ -1257,9 +1265,9 @@ var ae = {
|
|
|
1257
1265
|
default: x(() => [s(D, {
|
|
1258
1266
|
start: "",
|
|
1259
1267
|
size: "small",
|
|
1260
|
-
color: y(
|
|
1268
|
+
color: y(W)[e.flag].color
|
|
1261
1269
|
}, {
|
|
1262
|
-
default: x(() => [o(v(y(
|
|
1270
|
+
default: x(() => [o(v(y(W)[e.flag].icon), 1)]),
|
|
1263
1271
|
_: 2
|
|
1264
1272
|
}, 1032, ["color"]), o(" " + v(y(C)[e.flag].label) + " (" + v(e.count) + ") ", 1)]),
|
|
1265
1273
|
_: 2
|
|
@@ -1293,7 +1301,7 @@ var ae = {
|
|
|
1293
1301
|
class: "sk-admin-row",
|
|
1294
1302
|
onClick: (e) => f("open", t.doc.sessionId)
|
|
1295
1303
|
}, [
|
|
1296
|
-
a("td",
|
|
1304
|
+
a("td", zt, v(y(fmtTime)(t.doc.startTime)), 1),
|
|
1297
1305
|
a("td", null, [s(j, {
|
|
1298
1306
|
size: "x-small",
|
|
1299
1307
|
variant: "flat",
|
|
@@ -1302,92 +1310,92 @@ var ae = {
|
|
|
1302
1310
|
default: x(() => [o(v(t.doc.status), 1)]),
|
|
1303
1311
|
_: 2
|
|
1304
1312
|
}, 1032, ["color"])]),
|
|
1305
|
-
a("td",
|
|
1306
|
-
a("td",
|
|
1313
|
+
a("td", Bt, v(t.doc.tally?.cardsPresented ?? "—"), 1),
|
|
1314
|
+
a("td", Vt, [t.accuracy === null ? (p(), i("span", Ht, "—")) : (p(), i("span", {
|
|
1307
1315
|
key: 0,
|
|
1308
1316
|
class: u(y(accuracyClass)(t.accuracy))
|
|
1309
1317
|
}, v(Math.round(t.accuracy * 100)) + "% ", 3))]),
|
|
1310
|
-
a("td",
|
|
1311
|
-
a("td",
|
|
1312
|
-
a("td",
|
|
1318
|
+
a("td", Ut, v(t.doc.runs?.length ?? 0), 1),
|
|
1319
|
+
a("td", Wt, v(clockText(t)), 1),
|
|
1320
|
+
a("td", Gt, [(p(!0), i(e, null, h(deltas(t), (t, n) => (p(), i(e, { key: t.label }, [n > 0 ? (p(), i("span", Kt, " · ")) : r("", !0), a("span", { class: u(y(deltaClass)(t.delta)) }, v(y(k)(t.delta)) + "\xA0" + v(t.label), 3)], 64))), 128)), deltas(t).length === 0 ? (p(), i("span", qt, "—")) : r("", !0)]),
|
|
1313
1321
|
a("td", null, [(p(!0), i(e, null, h(t.flags, (e) => (p(), n(D, {
|
|
1314
1322
|
key: e,
|
|
1315
1323
|
size: "small",
|
|
1316
1324
|
class: "mr-1",
|
|
1317
|
-
color: y(
|
|
1325
|
+
color: y(W)[e].color,
|
|
1318
1326
|
title: `${y(C)[e].label}: ${y(C)[e].help}`
|
|
1319
1327
|
}, {
|
|
1320
|
-
default: x(() => [o(v(y(
|
|
1328
|
+
default: x(() => [o(v(y(W)[e].icon), 1)]),
|
|
1321
1329
|
_: 2
|
|
1322
1330
|
}, 1032, ["color", "title"]))), 128))]),
|
|
1323
|
-
a("td",
|
|
1331
|
+
a("td", Jt, [s(D, {
|
|
1324
1332
|
size: "small",
|
|
1325
1333
|
class: "text-disabled"
|
|
1326
1334
|
}, {
|
|
1327
1335
|
default: x(() => c[2] || (c[2] = [o("mdi-chevron-right")])),
|
|
1328
1336
|
_: 1
|
|
1329
1337
|
})])
|
|
1330
|
-
], 8,
|
|
1338
|
+
], 8, Rt))), 128))])]),
|
|
1331
1339
|
_: 1
|
|
1332
1340
|
}))
|
|
1333
1341
|
]);
|
|
1334
1342
|
};
|
|
1335
1343
|
}
|
|
1336
|
-
}), [["__scopeId", "data-v-5c46cc58"]]),
|
|
1344
|
+
}), [["__scopeId", "data-v-5c46cc58"]]), Yt = { class: "sk-pipeline" }, Xt = { class: "d-flex flex-wrap align-center ga-2 mb-3" }, Zt = { class: "text-caption" }, Qt = {
|
|
1337
1345
|
key: 0,
|
|
1338
1346
|
class: "text-caption text-medium-emphasis"
|
|
1339
|
-
},
|
|
1347
|
+
}, $t = { class: "sk-stage" }, en = { class: "d-flex align-center mb-1" }, tn = { class: "sk-stage-num" }, nn = { class: "font-weight-medium" }, rn = { class: "text-caption text-medium-emphasis mb-2" }, an = { class: "d-flex flex-wrap align-center ga-2" }, on = { class: "font-weight-medium" }, sn = { class: "text-caption" }, cn = {
|
|
1340
1348
|
key: 0,
|
|
1341
1349
|
class: "text-caption mt-1"
|
|
1342
|
-
},
|
|
1350
|
+
}, ln = {
|
|
1343
1351
|
key: 1,
|
|
1344
1352
|
class: "text-caption mt-1"
|
|
1345
|
-
},
|
|
1353
|
+
}, un = {
|
|
1346
1354
|
key: 1,
|
|
1347
1355
|
class: "text-medium-emphasis"
|
|
1348
|
-
},
|
|
1356
|
+
}, dn = {
|
|
1349
1357
|
key: 2,
|
|
1350
1358
|
class: "mt-1"
|
|
1351
|
-
},
|
|
1359
|
+
}, fn = ["onClick"], pn = {
|
|
1352
1360
|
key: 0,
|
|
1353
1361
|
class: "sk-config"
|
|
1354
|
-
},
|
|
1362
|
+
}, mn = {
|
|
1355
1363
|
key: 0,
|
|
1356
1364
|
class: "text-caption text-medium-emphasis"
|
|
1357
|
-
},
|
|
1365
|
+
}, hn = { class: "d-flex flex-wrap align-center ga-2" }, gn = { class: "font-weight-medium" }, _n = { class: "text-caption" }, vn = {
|
|
1358
1366
|
key: 0,
|
|
1359
1367
|
class: "text-caption mt-1"
|
|
1360
|
-
},
|
|
1368
|
+
}, yn = {
|
|
1361
1369
|
key: 1,
|
|
1362
1370
|
class: "text-caption mt-1 text-medium-emphasis"
|
|
1363
|
-
},
|
|
1371
|
+
}, bn = {
|
|
1364
1372
|
key: 2,
|
|
1365
1373
|
class: "mt-1"
|
|
1366
|
-
},
|
|
1374
|
+
}, xn = { class: "sk-impact-bar" }, Sn = ["title"], Cn = { class: "text-caption" }, wn = {
|
|
1367
1375
|
key: 1,
|
|
1368
1376
|
class: "text-caption text-medium-emphasis"
|
|
1369
|
-
},
|
|
1377
|
+
}, Tn = {
|
|
1370
1378
|
key: 3,
|
|
1371
1379
|
class: "mt-1"
|
|
1372
|
-
},
|
|
1380
|
+
}, En = ["onClick"], Dn = {
|
|
1373
1381
|
key: 0,
|
|
1374
1382
|
class: "sk-config"
|
|
1375
|
-
},
|
|
1383
|
+
}, Q = { class: "sk-nav" }, On = { class: "d-flex flex-wrap align-center ga-2" }, kn = { class: "text-caption mt-1" }, An = {
|
|
1376
1384
|
key: 0,
|
|
1377
1385
|
class: "text-caption mt-1"
|
|
1378
|
-
},
|
|
1386
|
+
}, jn = { class: "sk-nav" }, Mn = { class: "d-flex flex-wrap align-center ga-2" }, Nn = { class: "text-caption mt-1" }, Pn = {
|
|
1379
1387
|
key: 0,
|
|
1380
1388
|
class: "text-caption mt-1"
|
|
1381
|
-
},
|
|
1389
|
+
}, Fn = {
|
|
1382
1390
|
key: 0,
|
|
1383
1391
|
class: "text-caption text-medium-emphasis"
|
|
1384
|
-
},
|
|
1392
|
+
}, In = {
|
|
1385
1393
|
key: 3,
|
|
1386
1394
|
class: "text-caption"
|
|
1387
|
-
},
|
|
1395
|
+
}, Ln = {
|
|
1388
1396
|
key: 0,
|
|
1389
1397
|
class: "sk-stage-arrow"
|
|
1390
|
-
},
|
|
1398
|
+
}, Rn = {
|
|
1391
1399
|
key: 0,
|
|
1392
1400
|
class: "text-caption text-medium-emphasis mt-3"
|
|
1393
1401
|
}, $ = /* @__PURE__ */ K(/* @__PURE__ */ c({
|
|
@@ -1414,7 +1422,7 @@ var ae = {
|
|
|
1414
1422
|
}
|
|
1415
1423
|
}, regStat = (e) => l.stats?.regulators.find((t) => t.name === e);
|
|
1416
1424
|
function regStatText(e) {
|
|
1417
|
-
return `In these runs: active (×>1) in ${e.runsActive}/${e.runs}, mean ×${e.meanMultiplier.toFixed(2)}, max ×${e.maxMultiplier.toFixed(2)}. Last: ${
|
|
1425
|
+
return `In these runs: active (×>1) in ${e.runsActive}/${e.runs}, mean ×${e.meanMultiplier.toFixed(2)}, max ×${e.maxMultiplier.toFixed(2)}. Last: ${L(e.last)}.`;
|
|
1418
1426
|
}
|
|
1419
1427
|
let _ = {
|
|
1420
1428
|
gate: "Gate: its penalties mean not ready yet; regulators will not lift what it penalized.",
|
|
@@ -1432,7 +1440,7 @@ var ae = {
|
|
|
1432
1440
|
help: `${_.gate} Its class declares no kind, so it counts as a gate.`
|
|
1433
1441
|
};
|
|
1434
1442
|
}
|
|
1435
|
-
let b = t(() =>
|
|
1443
|
+
let b = t(() => ie(l.strategies, l.courseId)), S = t(() => new Map((l.stats?.generators ?? []).map((e) => [e.name, e]))), C = t(() => new Map((l.stats?.filters ?? []).map((e) => [e.name, e]))), genStat = (e) => S.value.get(e), filterStat = (e) => C.value.get(e), w = t(() => {
|
|
1436
1444
|
let e = [...b.value.notes], t = l.stats;
|
|
1437
1445
|
if (!t) return e;
|
|
1438
1446
|
for (let t of b.value.filters) {
|
|
@@ -1498,8 +1506,8 @@ var ae = {
|
|
|
1498
1506
|
}
|
|
1499
1507
|
return (t, c) => {
|
|
1500
1508
|
let l = g("v-chip"), m = g("v-alert"), _ = g("v-icon");
|
|
1501
|
-
return p(), i("div",
|
|
1502
|
-
a("div",
|
|
1509
|
+
return p(), i("div", Yt, [
|
|
1510
|
+
a("div", Xt, [
|
|
1503
1511
|
s(l, {
|
|
1504
1512
|
size: "small",
|
|
1505
1513
|
variant: "tonal",
|
|
@@ -1508,8 +1516,8 @@ var ae = {
|
|
|
1508
1516
|
default: x(() => [o(v(b.value.kind === "default" ? "default pipeline: the course has no strategy docs" : "assembled from strategy docs"), 1)]),
|
|
1509
1517
|
_: 1
|
|
1510
1518
|
}, 8, ["color"]),
|
|
1511
|
-
a("span",
|
|
1512
|
-
t.stats ? (p(), i("span",
|
|
1519
|
+
a("span", Zt, v(b.value.generators.length) + " generator(s) · " + v(b.value.filters.length) + " filter(s) ", 1),
|
|
1520
|
+
t.stats ? (p(), i("span", Qt, " · run stats" + v(t.statsLabel ? ` for ${t.statsLabel}` : "") + ": " + v(t.stats.runs) + " runs over " + v(t.stats.sessions) + " sessions, " + v(y(fmtTime)(t.stats.firstRunAt)) + " – " + v(y(fmtTime)(t.stats.lastRunAt)), 1)) : r("", !0)
|
|
1513
1521
|
]),
|
|
1514
1522
|
(p(!0), i(e, null, h(b.value.skipped, (e) => (p(), n(m, {
|
|
1515
1523
|
key: e.strategy._id,
|
|
@@ -1546,16 +1554,16 @@ var ae = {
|
|
|
1546
1554
|
default: x(() => [o(v(e), 1)]),
|
|
1547
1555
|
_: 2
|
|
1548
1556
|
}, 1024))), 128)),
|
|
1549
|
-
(p(!0), i(e, null, h(y(
|
|
1550
|
-
a("div",
|
|
1551
|
-
a("div",
|
|
1557
|
+
(p(!0), i(e, null, h(y(U), (m, g) => (p(), i("div", { key: m.key }, [a("div", $t, [
|
|
1558
|
+
a("div", en, [a("span", tn, v(g + 1), 1), a("span", nn, v(m.title), 1)]),
|
|
1559
|
+
a("div", rn, v(m.summary), 1),
|
|
1552
1560
|
m.key === "generate" ? (p(!0), i(e, { key: 0 }, h(b.value.generators, (n) => (p(), i("div", {
|
|
1553
1561
|
key: n.name,
|
|
1554
1562
|
class: "sk-nav"
|
|
1555
1563
|
}, [
|
|
1556
|
-
a("div",
|
|
1557
|
-
a("span",
|
|
1558
|
-
a("code",
|
|
1564
|
+
a("div", an, [
|
|
1565
|
+
a("span", on, v(n.name), 1),
|
|
1566
|
+
a("code", sn, v(n.implementingClass), 1),
|
|
1559
1567
|
s(l, {
|
|
1560
1568
|
size: "x-small",
|
|
1561
1569
|
variant: "outlined",
|
|
@@ -1565,24 +1573,24 @@ var ae = {
|
|
|
1565
1573
|
_: 2
|
|
1566
1574
|
}, 1032, ["color"])
|
|
1567
1575
|
]),
|
|
1568
|
-
n.strategy?.description ? (p(), i("div",
|
|
1569
|
-
t.stats ? (p(), i("div",
|
|
1576
|
+
n.strategy?.description ? (p(), i("div", cn, v(n.strategy.description), 1)) : r("", !0),
|
|
1577
|
+
t.stats ? (p(), i("div", ln, [genStat(n.name) ? (p(), i(e, { key: 0 }, [o(v(fmtNum(genStat(n.name).meanCards)) + " candidates/run (" + v(fmtNum(genStat(n.name).meanNew)) + " new, " + v(fmtNum(genStat(n.name).meanReview)) + " review) · top score " + v(genStat(n.name).topScoreLast.toFixed(2)) + " last, " + v(genStat(n.name).topScoreMax.toFixed(2)) + " max ", 1), t.stats.runsWithSelection > 0 ? (p(), i(e, { key: 0 }, [
|
|
1570
1578
|
c[1] || (c[1] = o(" · ")),
|
|
1571
1579
|
a("strong", null, v(genStat(n.name).selected), 1),
|
|
1572
1580
|
c[2] || (c[2] = o(" selected ")),
|
|
1573
1581
|
genStat(n.name).firstAttempts > 0 ? (p(), i(e, { key: 0 }, [o(" · first attempts " + v(genStat(n.name).firstAttemptsCorrect) + "/" + v(genStat(n.name).firstAttempts) + " correct ", 1), a("span", { class: u(y(accuracyClass)(accuracyOf(genStat(n.name)))) }, " (" + v(Math.round(100 * accuracyOf(genStat(n.name)))) + "%) ", 3)], 64)) : r("", !0)
|
|
1574
|
-
], 64)) : r("", !0)], 64)) : (p(), i("span",
|
|
1575
|
-
prettyConfig(n.strategy?.serializedData) ? (p(), i("div",
|
|
1582
|
+
], 64)) : r("", !0)], 64)) : (p(), i("span", un, "absent from these runs"))])) : r("", !0),
|
|
1583
|
+
prettyConfig(n.strategy?.serializedData) ? (p(), i("div", dn, [a("a", {
|
|
1576
1584
|
class: "sk-config-link text-caption",
|
|
1577
1585
|
onClick: (e) => toggleConfig(`g:${n.name}`)
|
|
1578
|
-
}, v(T.value.has(`g:${n.name}`) ? "Hide" : "Show") + " config ", 9,
|
|
1579
|
-
]))), 128)) : m.key === "filter" ? (p(), i(e, { key: 1 }, [b.value.filters.length === 0 ? (p(), i("div",
|
|
1586
|
+
}, v(T.value.has(`g:${n.name}`) ? "Hide" : "Show") + " config ", 9, fn), T.value.has(`g:${n.name}`) ? (p(), i("pre", pn, v(prettyConfig(n.strategy?.serializedData)), 1)) : r("", !0)])) : r("", !0)
|
|
1587
|
+
]))), 128)) : m.key === "filter" ? (p(), i(e, { key: 1 }, [b.value.filters.length === 0 ? (p(), i("div", mn, "No filters.")) : r("", !0), (p(!0), i(e, null, h(b.value.filters, (m) => (p(), i("div", {
|
|
1580
1588
|
key: m.name,
|
|
1581
1589
|
class: "sk-nav"
|
|
1582
1590
|
}, [
|
|
1583
|
-
a("div",
|
|
1584
|
-
a("span",
|
|
1585
|
-
a("code",
|
|
1591
|
+
a("div", hn, [
|
|
1592
|
+
a("span", gn, v(m.name), 1),
|
|
1593
|
+
a("code", _n, v(m.implementingClass), 1),
|
|
1586
1594
|
s(l, {
|
|
1587
1595
|
size: "x-small",
|
|
1588
1596
|
variant: "outlined",
|
|
@@ -1609,65 +1617,65 @@ var ae = {
|
|
|
1609
1617
|
_: 2
|
|
1610
1618
|
}, 1032, ["color", "title"])
|
|
1611
1619
|
]),
|
|
1612
|
-
m.strategy?.description ? (p(), i("div",
|
|
1613
|
-
t.stats ? (p(), i("div",
|
|
1620
|
+
m.strategy?.description ? (p(), i("div", vn, v(m.strategy.description), 1)) : m.strategy ? r("", !0) : (p(), i("div", yn, " Built in code; no strategy document. ")),
|
|
1621
|
+
t.stats ? (p(), i("div", bn, [filterStat(m.name) ? (p(), i(e, { key: 0 }, [a("div", xn, [(p(!0), i(e, null, h(impactParts(filterStat(m.name)), (e) => (p(), i("div", {
|
|
1614
1622
|
key: e.key,
|
|
1615
1623
|
class: u(`bg-${e.color}`),
|
|
1616
1624
|
style: d({ width: `${e.share * 100}%` }),
|
|
1617
1625
|
title: `${e.key}: ${e.count}`
|
|
1618
|
-
}, null, 14,
|
|
1626
|
+
}, null, 14, Sn))), 128))]), a("div", Cn, [o(" over " + v(filterStat(m.name).runs) + " runs: ", 1), (p(!0), i(e, null, h(impactParts(filterStat(m.name)), (e) => (p(), i("span", {
|
|
1619
1627
|
key: e.key,
|
|
1620
1628
|
class: "mr-2"
|
|
1621
|
-
}, [a("span", { class: u(`text-${e.color}`) }, "●", 2), o(" " + v(e.key) + " " + v(fmtPct(e.share)), 1)]))), 128))])], 64)) : (p(), i("span",
|
|
1622
|
-
prettyConfig(m.strategy?.serializedData) ? (p(), i("div",
|
|
1629
|
+
}, [a("span", { class: u(`text-${e.color}`) }, "●", 2), o(" " + v(e.key) + " " + v(fmtPct(e.share)), 1)]))), 128))])], 64)) : (p(), i("span", wn, "absent from these runs"))])) : r("", !0),
|
|
1630
|
+
prettyConfig(m.strategy?.serializedData) ? (p(), i("div", Tn, [a("a", {
|
|
1623
1631
|
class: "sk-config-link text-caption",
|
|
1624
1632
|
onClick: (e) => toggleConfig(`f:${m.name}`)
|
|
1625
|
-
}, v(T.value.has(`f:${m.name}`) ? "Hide" : "Show") + " config ", 9,
|
|
1633
|
+
}, v(T.value.has(`f:${m.name}`) ? "Hide" : "Show") + " config ", 9, En), T.value.has(`f:${m.name}`) ? (p(), i("pre", Dn, v(prettyConfig(m.strategy?.serializedData)), 1)) : r("", !0)])) : r("", !0)
|
|
1626
1634
|
]))), 128))], 64)) : m.key === "regulate" ? (p(), i(e, { key: 2 }, [
|
|
1627
|
-
a("div",
|
|
1628
|
-
a("div",
|
|
1635
|
+
a("div", Q, [
|
|
1636
|
+
a("div", On, [c[5] || (c[5] = a("span", { class: "font-weight-medium" }, "Review mass", -1)), s(l, {
|
|
1629
1637
|
size: "x-small",
|
|
1630
1638
|
variant: "outlined"
|
|
1631
1639
|
}, {
|
|
1632
1640
|
default: x(() => c[4] || (c[4] = [o("on review cards")])),
|
|
1633
1641
|
_: 1
|
|
1634
1642
|
})]),
|
|
1635
|
-
a("div",
|
|
1636
|
-
regStat("review-mass") ? (p(), i("div",
|
|
1643
|
+
a("div", kn, " Each due review weighs its SRS urgency (0–1) times the filters' net effect on it. Above " + v(b.value.regulators.reviewMass.healthyMass) + " card-equivalents, every review is multiplied by ×" + v(b.value.regulators.reviewMass.rate) + " per " + v(b.value.regulators.reviewMass.healthyMass) + " in excess (uncapped). Reviews without an urgency weigh their score against " + v(b.value.regulators.reviewMass.referenceScore) + ". ", 1),
|
|
1644
|
+
regStat("review-mass") ? (p(), i("div", An, v(regStatText(regStat("review-mass"))), 1)) : r("", !0)
|
|
1637
1645
|
]),
|
|
1638
|
-
a("div",
|
|
1639
|
-
a("div",
|
|
1646
|
+
a("div", jn, [
|
|
1647
|
+
a("div", Mn, [c[7] || (c[7] = a("span", { class: "font-weight-medium" }, "Intake", -1)), s(l, {
|
|
1640
1648
|
size: "x-small",
|
|
1641
1649
|
variant: "outlined"
|
|
1642
1650
|
}, {
|
|
1643
1651
|
default: x(() => c[6] || (c[6] = [o("on new cards no gate penalized")])),
|
|
1644
1652
|
_: 1
|
|
1645
1653
|
})]),
|
|
1646
|
-
a("div",
|
|
1647
|
-
regStat("intake") ? (p(), i("div",
|
|
1654
|
+
a("div", Nn, " ×" + v(b.value.regulators.intake.rate) + " per " + v(b.value.regulators.intake.scaleHours) + " hours since a new card was last presented (uncapped). The clock stops while no eligible new card exists. ", 1),
|
|
1655
|
+
regStat("intake") ? (p(), i("div", Pn, v(regStatText(regStat("intake"))), 1)) : r("", !0)
|
|
1648
1656
|
]),
|
|
1649
|
-
t.stats && t.stats.regulators.length === 0 ? (p(), i("div",
|
|
1650
|
-
], 64)) : m.key === "select" && t.stats && t.stats.runsWithSelection > 0 ? (p(), i("div",
|
|
1657
|
+
t.stats && t.stats.regulators.length === 0 ? (p(), i("div", Fn, " None of these runs recorded regulator readings (recorded from 0.2.29). ")) : r("", !0)
|
|
1658
|
+
], 64)) : m.key === "select" && t.stats && t.stats.runsWithSelection > 0 ? (p(), i("div", In, [
|
|
1651
1659
|
o(v(t.stats.selectedUnattributed) + " selected card(s) had no generator: forced in by a hint's ", 1),
|
|
1652
1660
|
c[8] || (c[8] = a("code", null, "requireCards", -1)),
|
|
1653
1661
|
c[9] || (c[9] = o(". "))
|
|
1654
1662
|
])) : r("", !0)
|
|
1655
|
-
]), g < y(
|
|
1663
|
+
]), g < y(U).length - 1 ? (p(), i("div", Ln, [s(_, { size: "small" }, {
|
|
1656
1664
|
default: x(() => c[10] || (c[10] = [o("mdi-arrow-down")])),
|
|
1657
1665
|
_: 1
|
|
1658
1666
|
})])) : r("", !0)]))), 128)),
|
|
1659
|
-
t.stats && t.stats.runsWithSelection === 0 ? (p(), i("div",
|
|
1667
|
+
t.stats && t.stats.runsWithSelection === 0 ? (p(), i("div", Rn, " None of these runs recorded which cards they selected (recorded from 0.2.28), so selection and first-attempt counts are not shown. ")) : r("", !0)
|
|
1660
1668
|
]);
|
|
1661
1669
|
};
|
|
1662
1670
|
}
|
|
1663
|
-
}), [["__scopeId", "data-v-24b6038f"]]),
|
|
1671
|
+
}), [["__scopeId", "data-v-24b6038f"]]), zn = /* @__PURE__ */ c({
|
|
1664
1672
|
__name: "LearnerDiagnostics",
|
|
1665
1673
|
props: {
|
|
1666
1674
|
dataset: {},
|
|
1667
1675
|
interpreters: {}
|
|
1668
1676
|
},
|
|
1669
1677
|
setup(a) {
|
|
1670
|
-
let c = a, l = m("sessions"), u = m(null), d = m(void 0), f = t(() =>
|
|
1678
|
+
let c = a, l = m("sessions"), u = m(null), d = m(void 0), f = t(() => F(c.dataset));
|
|
1671
1679
|
function openCard(e) {
|
|
1672
1680
|
d.value = void 0, l.value = "cards", setTimeout(() => d.value = e);
|
|
1673
1681
|
}
|
|
@@ -1747,6 +1755,6 @@ var ae = {
|
|
|
1747
1755
|
}
|
|
1748
1756
|
});
|
|
1749
1757
|
//#endregion
|
|
1750
|
-
export { q as CardDossierDetail, J as LearnerCardHistory,
|
|
1758
|
+
export { q as CardDossierDetail, J as LearnerCardHistory, ce as LearnerDatasetSource, zn as LearnerDiagnostics, X as LearnerSessionDetail, Z as LearnerSessionList, $ as PipelineOverview, Y as RunDetail, downloadLearnerDump, useLearnerDataset };
|
|
1751
1759
|
|
|
1752
1760
|
//# sourceMappingURL=common-ui-admin.es.js.map
|