@magmamath/students-features 1.3.12-rc.0 → 1.3.12-rc.1
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/commonjs/features/pmProgress/hooks/useNextUpDomain.js +7 -5
- package/dist/commonjs/features/pmProgress/hooks/useNextUpDomain.js.map +1 -1
- package/dist/commonjs/features/pmProgress/model/PmTreeModel.js +7 -33
- package/dist/commonjs/features/pmProgress/model/PmTreeModel.js.map +1 -1
- package/dist/module/features/pmProgress/hooks/useNextUpDomain.js +7 -5
- package/dist/module/features/pmProgress/hooks/useNextUpDomain.js.map +1 -1
- package/dist/module/features/pmProgress/model/PmTreeModel.js +8 -34
- package/dist/module/features/pmProgress/model/PmTreeModel.js.map +1 -1
- package/dist/typescript/commonjs/features/pmProgress/hooks/useNextUpDomain.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/pmProgress/model/PmTreeModel.d.ts +2 -3
- package/dist/typescript/commonjs/features/pmProgress/model/PmTreeModel.d.ts.map +1 -1
- package/dist/typescript/module/features/pmProgress/hooks/useNextUpDomain.d.ts.map +1 -1
- package/dist/typescript/module/features/pmProgress/model/PmTreeModel.d.ts +2 -3
- package/dist/typescript/module/features/pmProgress/model/PmTreeModel.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/pmProgress/hooks/useNextUpDomain.ts +7 -5
- package/src/features/pmProgress/model/PmTreeModel.ts +18 -34
|
@@ -12,19 +12,21 @@ const useNextUpDomain = () => {
|
|
|
12
12
|
model
|
|
13
13
|
} = (0, _PmProgressContext.usePmProgress)();
|
|
14
14
|
const magmaRecs = (0, _effectorReact.useUnit)(model.recommendations.$magma);
|
|
15
|
+
const domainsInTree = (0, _effectorReact.useUnit)(model.tree.$domains);
|
|
15
16
|
return (0, _effectorReact.useStoreMap)({
|
|
16
|
-
store: model.tree.$
|
|
17
|
-
keys: [magmaRecs],
|
|
18
|
-
fn:
|
|
17
|
+
store: model.tree.$domainsInGrade,
|
|
18
|
+
keys: [magmaRecs, domainsInTree],
|
|
19
|
+
fn: domainsInGrade => {
|
|
19
20
|
const firstRec = magmaRecs.items[0];
|
|
20
21
|
if (firstRec) {
|
|
21
|
-
const
|
|
22
|
+
const allDomains = Object.values(domainsInTree).flat();
|
|
23
|
+
const domain = (0, _pmProgressHelpers.findDomainBySkillId)(firstRec._id, allDomains) ?? null;
|
|
22
24
|
return {
|
|
23
25
|
domain,
|
|
24
26
|
isFromRecommendation: true
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
|
-
const domain =
|
|
29
|
+
const domain = domainsInGrade.find(domain => {
|
|
28
30
|
const isFluency = (0, _pmProgressHelpers.isFluencyDomain)(domain.title);
|
|
29
31
|
const isDomainCompleted = domain.standards.every(standard => standard.isCompleted);
|
|
30
32
|
return !isFluency && !isDomainCompleted;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effectorReact","require","_PmProgressContext","_pmProgressHelpers","useNextUpDomain","model","usePmProgress","magmaRecs","useUnit","recommendations","$magma","
|
|
1
|
+
{"version":3,"names":["_effectorReact","require","_PmProgressContext","_pmProgressHelpers","useNextUpDomain","model","usePmProgress","magmaRecs","useUnit","recommendations","$magma","domainsInTree","tree","$domains","useStoreMap","store","$domainsInGrade","keys","fn","domainsInGrade","firstRec","items","allDomains","Object","values","flat","domain","findDomainBySkillId","_id","isFromRecommendation","find","isFluency","isFluencyDomain","title","isDomainCompleted","standards","every","standard","isCompleted","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/hooks/useNextUpDomain.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAEO,MAAMG,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAM;IAAEC;EAAM,CAAC,GAAG,IAAAC,gCAAa,EAAC,CAAC;EACjC,MAAMC,SAAS,GAAG,IAAAC,sBAAO,EAACH,KAAK,CAACI,eAAe,CAACC,MAAM,CAAC;EACvD,MAAMC,aAAa,GAAG,IAAAH,sBAAO,EAACH,KAAK,CAACO,IAAI,CAACC,QAAQ,CAAC;EAElD,OAAO,IAAAC,0BAAW,EAAC;IACjBC,KAAK,EAAEV,KAAK,CAACO,IAAI,CAACI,eAAe;IACjCC,IAAI,EAAE,CAACV,SAAS,EAAEI,aAAa,CAAC;IAChCO,EAAE,EAAGC,cAAc,IAAK;MACtB,MAAMC,QAAQ,GAAGb,SAAS,CAACc,KAAK,CAAC,CAAC,CAAC;MACnC,IAAID,QAAQ,EAAE;QACZ,MAAME,UAAU,GAAGC,MAAM,CAACC,MAAM,CAACb,aAAa,CAAC,CAACc,IAAI,CAAC,CAAC;QACtD,MAAMC,MAAM,GAAG,IAAAC,sCAAmB,EAACP,QAAQ,CAACQ,GAAG,EAAEN,UAAU,CAAC,IAAI,IAAI;QACpE,OAAO;UAAEI,MAAM;UAAEG,oBAAoB,EAAE;QAAK,CAAC;MAC/C;MAEA,MAAMH,MAAM,GACVP,cAAc,CAACW,IAAI,CAAEJ,MAAM,IAAK;QAC9B,MAAMK,SAAS,GAAG,IAAAC,kCAAe,EAACN,MAAM,CAACO,KAAK,CAAC;QAC/C,MAAMC,iBAAiB,GAAGR,MAAM,CAACS,SAAS,CAACC,KAAK,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,WAAW,CAAC;QACpF,OAAO,CAACP,SAAS,IAAI,CAACG,iBAAiB;MACzC,CAAC,CAAC,IAAI,IAAI;MAEZ,OAAO;QAAER,MAAM;QAAEG,oBAAoB,EAAE;MAAM,CAAC;IAChD;EACF,CAAC,CAAC;AACJ,CAAC;AAAAU,OAAA,CAAAnC,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -20,8 +20,8 @@ class PmTreeModel {
|
|
|
20
20
|
setGrade = (0, _effector.createEvent)();
|
|
21
21
|
$isInitialized = (0, _effector.createStore)(false);
|
|
22
22
|
$grade = (0, _effector.restore)(this.setGrade, null);
|
|
23
|
-
$
|
|
24
|
-
$
|
|
23
|
+
$domains = (0, _effector.createStore)({});
|
|
24
|
+
$domainsInGrade = (0, _effector.combine)(this.$domains, this.$grade, (domains, grade) => grade !== null ? domains[grade] ?? [] : []);
|
|
25
25
|
$grades = (0, _effector.createStore)([]);
|
|
26
26
|
$status = (0, _effector.createStore)(null);
|
|
27
27
|
constructor(api) {
|
|
@@ -33,13 +33,12 @@ class PmTreeModel {
|
|
|
33
33
|
});
|
|
34
34
|
(0, _session.persist)({
|
|
35
35
|
key: _pmProgressConstants.SessionStorageKeys.DOMAINS,
|
|
36
|
-
store: this.$
|
|
36
|
+
store: this.$domains
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
this.setupFailedAndLockedStatus();
|
|
40
40
|
this.setupTreeInit();
|
|
41
41
|
this.setupGradeInit();
|
|
42
|
-
this.setupDomainStructure();
|
|
43
42
|
this.setupDomainsInTree();
|
|
44
43
|
}
|
|
45
44
|
initTreeFx = (0, _effector.createEffect)(async ({
|
|
@@ -147,31 +146,6 @@ class PmTreeModel {
|
|
|
147
146
|
target: this.setGrade
|
|
148
147
|
});
|
|
149
148
|
}
|
|
150
|
-
setupDomainStructure() {
|
|
151
|
-
(0, _effector.sample)({
|
|
152
|
-
clock: [this.$grade, this.initTreeFx.doneData],
|
|
153
|
-
source: {
|
|
154
|
-
tree: this.$tree,
|
|
155
|
-
stats: this.$stats,
|
|
156
|
-
user: this.$user,
|
|
157
|
-
grade: this.$grade
|
|
158
|
-
},
|
|
159
|
-
filter: _pmProgressHelpers.isTreeDataReady,
|
|
160
|
-
fn: ({
|
|
161
|
-
tree,
|
|
162
|
-
stats,
|
|
163
|
-
user,
|
|
164
|
-
grade
|
|
165
|
-
}) => {
|
|
166
|
-
const [treeWithUserStats] = (0, _skillsUtils.enhanceProgressMatrixData)(Object.values(tree.treeMapping), stats, [{
|
|
167
|
-
entityId: user._id,
|
|
168
|
-
name: user.fullName
|
|
169
|
-
}], grade);
|
|
170
|
-
return (0, _pmProgressHelpers.getDomainStructure)(treeWithUserStats, tree.treeMapping);
|
|
171
|
-
},
|
|
172
|
-
target: this.$domainsInGrade
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
149
|
setupDomainsInTree() {
|
|
176
150
|
(0, _effector.sample)({
|
|
177
151
|
clock: this.initTreeFx.doneData,
|
|
@@ -188,15 +162,15 @@ class PmTreeModel {
|
|
|
188
162
|
}) => {
|
|
189
163
|
const treeNodes = Object.values(tree.treeMapping);
|
|
190
164
|
const grades = (0, _pmProgressHelpers.getTreeGrades)(tree, user).filter(g => !g.isLocked);
|
|
191
|
-
return grades.
|
|
165
|
+
return Object.fromEntries(grades.map(grade => {
|
|
192
166
|
const [treeWithStats] = (0, _skillsUtils.enhanceProgressMatrixData)(treeNodes, stats, [{
|
|
193
167
|
entityId: user._id,
|
|
194
168
|
name: user.fullName
|
|
195
169
|
}], grade.value);
|
|
196
|
-
return (0, _pmProgressHelpers.getDomainStructure)(treeWithStats, tree.treeMapping);
|
|
197
|
-
});
|
|
170
|
+
return [grade.value, (0, _pmProgressHelpers.getDomainStructure)(treeWithStats, tree.treeMapping)];
|
|
171
|
+
}));
|
|
198
172
|
},
|
|
199
|
-
target: this.$
|
|
173
|
+
target: this.$domains
|
|
200
174
|
});
|
|
201
175
|
}
|
|
202
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effector","require","_effectorAction","_skillsUtils","_pmProgressHelpers","_TreeNormalizer","_session","_pmProgressConstants","_commonConstants","PmTreeModel","$tree","createStore","$stats","$user","setupInitialGrade","createEvent","setGrade","$isInitialized","$grade","restore","$
|
|
1
|
+
{"version":3,"names":["_effector","require","_effectorAction","_skillsUtils","_pmProgressHelpers","_TreeNormalizer","_session","_pmProgressConstants","_commonConstants","PmTreeModel","$tree","createStore","$stats","$user","setupInitialGrade","createEvent","setGrade","$isInitialized","$grade","restore","$domains","$domainsInGrade","combine","domains","grade","$grades","$status","constructor","api","isWeb","persist","key","SessionStorageKeys","GRADE","store","DOMAINS","setupFailedAndLockedStatus","setupTreeInit","setupGradeInit","setupDomainsInTree","initTreeFx","createEffect","user","setting","practiceModeTreeId","Error","tree","stats","Promise","all","getTreeFx","getStatisticsFx","entityIds","_id","TreeNormalizer","normalize","getTreeContextFx","attach","source","mapParams","_","isTreeDataReady","effect","treeWithStats","enhanceProgressMatrixData","Object","values","treeMapping","entityId","name","fullName","sample","clock","fail","fn","PmProgressStatus","ERROR","target","filter","grades","length","every","g","isLocked","LOCKED","createAction","done","params","result","getTreeGrades","userLockedGrades","practiceModeLockedGrades","isPersistedGradeValid","includes","treeGrades","node","type","map","attributes","getInitialPmGrade","userGrade","lockedGrades","enrolledGrades","doneData","isTreeDataWithoutGradeReady","treeNodes","fromEntries","value","getDomainStructure","exports"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmTreeModel.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,19 +8,21 @@ export const useNextUpDomain = () => {
|
|
|
8
8
|
model
|
|
9
9
|
} = usePmProgress();
|
|
10
10
|
const magmaRecs = useUnit(model.recommendations.$magma);
|
|
11
|
+
const domainsInTree = useUnit(model.tree.$domains);
|
|
11
12
|
return useStoreMap({
|
|
12
|
-
store: model.tree.$
|
|
13
|
-
keys: [magmaRecs],
|
|
14
|
-
fn:
|
|
13
|
+
store: model.tree.$domainsInGrade,
|
|
14
|
+
keys: [magmaRecs, domainsInTree],
|
|
15
|
+
fn: domainsInGrade => {
|
|
15
16
|
const firstRec = magmaRecs.items[0];
|
|
16
17
|
if (firstRec) {
|
|
17
|
-
const
|
|
18
|
+
const allDomains = Object.values(domainsInTree).flat();
|
|
19
|
+
const domain = findDomainBySkillId(firstRec._id, allDomains) ?? null;
|
|
18
20
|
return {
|
|
19
21
|
domain,
|
|
20
22
|
isFromRecommendation: true
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
|
-
const domain =
|
|
25
|
+
const domain = domainsInGrade.find(domain => {
|
|
24
26
|
const isFluency = isFluencyDomain(domain.title);
|
|
25
27
|
const isDomainCompleted = domain.standards.every(standard => standard.isCompleted);
|
|
26
28
|
return !isFluency && !isDomainCompleted;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useUnit","useStoreMap","usePmProgress","findDomainBySkillId","isFluencyDomain","useNextUpDomain","model","magmaRecs","recommendations","$magma","
|
|
1
|
+
{"version":3,"names":["useUnit","useStoreMap","usePmProgress","findDomainBySkillId","isFluencyDomain","useNextUpDomain","model","magmaRecs","recommendations","$magma","domainsInTree","tree","$domains","store","$domainsInGrade","keys","fn","domainsInGrade","firstRec","items","allDomains","Object","values","flat","domain","_id","isFromRecommendation","find","isFluency","title","isDomainCompleted","standards","every","standard","isCompleted"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/hooks/useNextUpDomain.ts"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,WAAW,QAAQ,gBAAgB;AACrD,SAASC,aAAa,QAAQ,iCAA8B;AAC5D,SAASC,mBAAmB,EAAEC,eAAe,QAAQ,iCAA8B;AAEnF,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAM;IAAEC;EAAM,CAAC,GAAGJ,aAAa,CAAC,CAAC;EACjC,MAAMK,SAAS,GAAGP,OAAO,CAACM,KAAK,CAACE,eAAe,CAACC,MAAM,CAAC;EACvD,MAAMC,aAAa,GAAGV,OAAO,CAACM,KAAK,CAACK,IAAI,CAACC,QAAQ,CAAC;EAElD,OAAOX,WAAW,CAAC;IACjBY,KAAK,EAAEP,KAAK,CAACK,IAAI,CAACG,eAAe;IACjCC,IAAI,EAAE,CAACR,SAAS,EAAEG,aAAa,CAAC;IAChCM,EAAE,EAAGC,cAAc,IAAK;MACtB,MAAMC,QAAQ,GAAGX,SAAS,CAACY,KAAK,CAAC,CAAC,CAAC;MACnC,IAAID,QAAQ,EAAE;QACZ,MAAME,UAAU,GAAGC,MAAM,CAACC,MAAM,CAACZ,aAAa,CAAC,CAACa,IAAI,CAAC,CAAC;QACtD,MAAMC,MAAM,GAAGrB,mBAAmB,CAACe,QAAQ,CAACO,GAAG,EAAEL,UAAU,CAAC,IAAI,IAAI;QACpE,OAAO;UAAEI,MAAM;UAAEE,oBAAoB,EAAE;QAAK,CAAC;MAC/C;MAEA,MAAMF,MAAM,GACVP,cAAc,CAACU,IAAI,CAAEH,MAAM,IAAK;QAC9B,MAAMI,SAAS,GAAGxB,eAAe,CAACoB,MAAM,CAACK,KAAK,CAAC;QAC/C,MAAMC,iBAAiB,GAAGN,MAAM,CAACO,SAAS,CAACC,KAAK,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,WAAW,CAAC;QACpF,OAAO,CAACN,SAAS,IAAI,CAACE,iBAAiB;MACzC,CAAC,CAAC,IAAI,IAAI;MAEZ,OAAO;QAAEN,MAAM;QAAEE,oBAAoB,EAAE;MAAM,CAAC;IAChD;EACF,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { attach, createEffect, createEvent, createStore, restore, sample } from 'effector';
|
|
3
|
+
import { attach, combine, createEffect, createEvent, createStore, restore, sample } from 'effector';
|
|
4
4
|
import { createAction } from 'effector-action';
|
|
5
5
|
import { enhanceProgressMatrixData } from '@matteappen/skills-utils';
|
|
6
6
|
import { getDomainStructure, getInitialPmGrade, getTreeGrades, isTreeDataReady, isTreeDataWithoutGradeReady } from "../shared/pmProgress.helpers.js";
|
|
@@ -16,8 +16,8 @@ export class PmTreeModel {
|
|
|
16
16
|
setGrade = createEvent();
|
|
17
17
|
$isInitialized = createStore(false);
|
|
18
18
|
$grade = restore(this.setGrade, null);
|
|
19
|
-
$
|
|
20
|
-
$
|
|
19
|
+
$domains = createStore({});
|
|
20
|
+
$domainsInGrade = combine(this.$domains, this.$grade, (domains, grade) => grade !== null ? domains[grade] ?? [] : []);
|
|
21
21
|
$grades = createStore([]);
|
|
22
22
|
$status = createStore(null);
|
|
23
23
|
constructor(api) {
|
|
@@ -29,13 +29,12 @@ export class PmTreeModel {
|
|
|
29
29
|
});
|
|
30
30
|
persist({
|
|
31
31
|
key: SessionStorageKeys.DOMAINS,
|
|
32
|
-
store: this.$
|
|
32
|
+
store: this.$domains
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
this.setupFailedAndLockedStatus();
|
|
36
36
|
this.setupTreeInit();
|
|
37
37
|
this.setupGradeInit();
|
|
38
|
-
this.setupDomainStructure();
|
|
39
38
|
this.setupDomainsInTree();
|
|
40
39
|
}
|
|
41
40
|
initTreeFx = createEffect(async ({
|
|
@@ -143,31 +142,6 @@ export class PmTreeModel {
|
|
|
143
142
|
target: this.setGrade
|
|
144
143
|
});
|
|
145
144
|
}
|
|
146
|
-
setupDomainStructure() {
|
|
147
|
-
sample({
|
|
148
|
-
clock: [this.$grade, this.initTreeFx.doneData],
|
|
149
|
-
source: {
|
|
150
|
-
tree: this.$tree,
|
|
151
|
-
stats: this.$stats,
|
|
152
|
-
user: this.$user,
|
|
153
|
-
grade: this.$grade
|
|
154
|
-
},
|
|
155
|
-
filter: isTreeDataReady,
|
|
156
|
-
fn: ({
|
|
157
|
-
tree,
|
|
158
|
-
stats,
|
|
159
|
-
user,
|
|
160
|
-
grade
|
|
161
|
-
}) => {
|
|
162
|
-
const [treeWithUserStats] = enhanceProgressMatrixData(Object.values(tree.treeMapping), stats, [{
|
|
163
|
-
entityId: user._id,
|
|
164
|
-
name: user.fullName
|
|
165
|
-
}], grade);
|
|
166
|
-
return getDomainStructure(treeWithUserStats, tree.treeMapping);
|
|
167
|
-
},
|
|
168
|
-
target: this.$domainsInGrade
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
145
|
setupDomainsInTree() {
|
|
172
146
|
sample({
|
|
173
147
|
clock: this.initTreeFx.doneData,
|
|
@@ -184,15 +158,15 @@ export class PmTreeModel {
|
|
|
184
158
|
}) => {
|
|
185
159
|
const treeNodes = Object.values(tree.treeMapping);
|
|
186
160
|
const grades = getTreeGrades(tree, user).filter(g => !g.isLocked);
|
|
187
|
-
return grades.
|
|
161
|
+
return Object.fromEntries(grades.map(grade => {
|
|
188
162
|
const [treeWithStats] = enhanceProgressMatrixData(treeNodes, stats, [{
|
|
189
163
|
entityId: user._id,
|
|
190
164
|
name: user.fullName
|
|
191
165
|
}], grade.value);
|
|
192
|
-
return getDomainStructure(treeWithStats, tree.treeMapping);
|
|
193
|
-
});
|
|
166
|
+
return [grade.value, getDomainStructure(treeWithStats, tree.treeMapping)];
|
|
167
|
+
}));
|
|
194
168
|
},
|
|
195
|
-
target: this.$
|
|
169
|
+
target: this.$domains
|
|
196
170
|
});
|
|
197
171
|
}
|
|
198
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["attach","createEffect","createEvent","createStore","restore","sample","createAction","enhanceProgressMatrixData","getDomainStructure","getInitialPmGrade","getTreeGrades","isTreeDataReady","isTreeDataWithoutGradeReady","TreeNormalizer","persist","PmProgressStatus","SessionStorageKeys","isWeb","PmTreeModel","$tree","$stats","$user","setupInitialGrade","setGrade","$isInitialized","$grade","$
|
|
1
|
+
{"version":3,"names":["attach","combine","createEffect","createEvent","createStore","restore","sample","createAction","enhanceProgressMatrixData","getDomainStructure","getInitialPmGrade","getTreeGrades","isTreeDataReady","isTreeDataWithoutGradeReady","TreeNormalizer","persist","PmProgressStatus","SessionStorageKeys","isWeb","PmTreeModel","$tree","$stats","$user","setupInitialGrade","setGrade","$isInitialized","$grade","$domains","$domainsInGrade","domains","grade","$grades","$status","constructor","api","key","GRADE","store","DOMAINS","setupFailedAndLockedStatus","setupTreeInit","setupGradeInit","setupDomainsInTree","initTreeFx","user","setting","practiceModeTreeId","Error","tree","stats","Promise","all","getTreeFx","getStatisticsFx","entityIds","_id","normalize","getTreeContextFx","source","mapParams","_","effect","treeWithStats","Object","values","treeMapping","entityId","name","fullName","clock","fail","fn","ERROR","target","filter","grades","length","every","g","isLocked","LOCKED","done","params","result","userLockedGrades","practiceModeLockedGrades","isPersistedGradeValid","includes","treeGrades","node","type","map","attributes","userGrade","lockedGrades","enrolledGrades","doneData","treeNodes","fromEntries","value"],"sourceRoot":"../../../../../src","sources":["features/pmProgress/model/PmTreeModel.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNextUpDomain.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/hooks/useNextUpDomain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;
|
|
1
|
+
{"version":3,"file":"useNextUpDomain.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/hooks/useNextUpDomain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;CA0B3B,CAAA"}
|
|
@@ -10,8 +10,8 @@ export declare class PmTreeModel {
|
|
|
10
10
|
readonly setGrade: import("effector").EventCallable<number | null>;
|
|
11
11
|
readonly $isInitialized: import("effector").StoreWritable<boolean>;
|
|
12
12
|
readonly $grade: import("effector").StoreWritable<number | null>;
|
|
13
|
-
readonly $
|
|
14
|
-
readonly $
|
|
13
|
+
readonly $domains: import("effector").StoreWritable<Record<number, Domain[]>>;
|
|
14
|
+
readonly $domainsInGrade: import("effector").Store<Domain[]>;
|
|
15
15
|
readonly $grades: import("effector").StoreWritable<Grade[]>;
|
|
16
16
|
readonly $status: import("effector").StoreWritable<PmProgressStatus | null>;
|
|
17
17
|
constructor(api: PmProgressApi);
|
|
@@ -20,7 +20,6 @@ export declare class PmTreeModel {
|
|
|
20
20
|
private setupFailedAndLockedStatus;
|
|
21
21
|
private setupTreeInit;
|
|
22
22
|
private setupGradeInit;
|
|
23
|
-
private setupDomainStructure;
|
|
24
23
|
private setupDomainsInTree;
|
|
25
24
|
}
|
|
26
25
|
//# sourceMappingURL=PmTreeModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PmTreeModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/model/PmTreeModel.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EACN,KAAK,EACL,mBAAmB,EAEnB,aAAa,EAEb,WAAW,EACX,mBAAmB,EAEpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAW/C,OAAO,EAAE,gBAAgB,EAAsB,MAAM,gCAAgC,CAAA;AAGrF,qBAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"PmTreeModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/model/PmTreeModel.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EACN,KAAK,EACL,mBAAmB,EAEnB,aAAa,EAEb,WAAW,EACX,mBAAmB,EAEpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAW/C,OAAO,EAAE,gBAAgB,EAAsB,MAAM,gCAAgC,CAAA;AAGrF,qBAAa,WAAW;IAiBV,OAAO,CAAC,QAAQ,CAAC,GAAG;IAhBhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgD;IACtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,SAAgB,QAAQ,kDAA+B;IAEvD,SAAgB,cAAc,4CAAqB;IACnD,SAAgB,MAAM,kDAA+B;IACrD,SAAgB,QAAQ,6DAA4C;IACpE,SAAgB,eAAe,qCAE9B;IACD,SAAgB,OAAO,4CAA2B;IAClD,SAAgB,OAAO,4DAA6C;gBAEvC,GAAG,EAAE,aAAa;IAY/C,SAAgB,UAAU,uGAUxB;IAEF,SAAgB,gBAAgB,sDAwB9B;IAEF,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,kBAAkB;CAwB3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNextUpDomain.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/hooks/useNextUpDomain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;
|
|
1
|
+
{"version":3,"file":"useNextUpDomain.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/hooks/useNextUpDomain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;CA0B3B,CAAA"}
|
|
@@ -10,8 +10,8 @@ export declare class PmTreeModel {
|
|
|
10
10
|
readonly setGrade: import("effector").EventCallable<number | null>;
|
|
11
11
|
readonly $isInitialized: import("effector").StoreWritable<boolean>;
|
|
12
12
|
readonly $grade: import("effector").StoreWritable<number | null>;
|
|
13
|
-
readonly $
|
|
14
|
-
readonly $
|
|
13
|
+
readonly $domains: import("effector").StoreWritable<Record<number, Domain[]>>;
|
|
14
|
+
readonly $domainsInGrade: import("effector").Store<Domain[]>;
|
|
15
15
|
readonly $grades: import("effector").StoreWritable<Grade[]>;
|
|
16
16
|
readonly $status: import("effector").StoreWritable<PmProgressStatus | null>;
|
|
17
17
|
constructor(api: PmProgressApi);
|
|
@@ -20,7 +20,6 @@ export declare class PmTreeModel {
|
|
|
20
20
|
private setupFailedAndLockedStatus;
|
|
21
21
|
private setupTreeInit;
|
|
22
22
|
private setupGradeInit;
|
|
23
|
-
private setupDomainStructure;
|
|
24
23
|
private setupDomainsInTree;
|
|
25
24
|
}
|
|
26
25
|
//# sourceMappingURL=PmTreeModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PmTreeModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/model/PmTreeModel.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EACN,KAAK,EACL,mBAAmB,EAEnB,aAAa,EAEb,WAAW,EACX,mBAAmB,EAEpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAW/C,OAAO,EAAE,gBAAgB,EAAsB,MAAM,gCAAgC,CAAA;AAGrF,qBAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"PmTreeModel.d.ts","sourceRoot":"","sources":["../../../../../../src/features/pmProgress/model/PmTreeModel.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EACN,KAAK,EACL,mBAAmB,EAEnB,aAAa,EAEb,WAAW,EACX,mBAAmB,EAEpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAW/C,OAAO,EAAE,gBAAgB,EAAsB,MAAM,gCAAgC,CAAA;AAGrF,qBAAa,WAAW;IAiBV,OAAO,CAAC,QAAQ,CAAC,GAAG;IAhBhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgD;IACtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,SAAgB,QAAQ,kDAA+B;IAEvD,SAAgB,cAAc,4CAAqB;IACnD,SAAgB,MAAM,kDAA+B;IACrD,SAAgB,QAAQ,6DAA4C;IACpE,SAAgB,eAAe,qCAE9B;IACD,SAAgB,OAAO,4CAA2B;IAClD,SAAgB,OAAO,4DAA6C;gBAEvC,GAAG,EAAE,aAAa;IAY/C,SAAgB,UAAU,uGAUxB;IAEF,SAAgB,gBAAgB,sDAwB9B;IAEF,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,kBAAkB;CAwB3B"}
|
package/package.json
CHANGED
|
@@ -5,19 +5,21 @@ import { findDomainBySkillId, isFluencyDomain } from '../shared/pmProgress.helpe
|
|
|
5
5
|
export const useNextUpDomain = () => {
|
|
6
6
|
const { model } = usePmProgress()
|
|
7
7
|
const magmaRecs = useUnit(model.recommendations.$magma)
|
|
8
|
+
const domainsInTree = useUnit(model.tree.$domains)
|
|
8
9
|
|
|
9
10
|
return useStoreMap({
|
|
10
|
-
store: model.tree.$
|
|
11
|
-
keys: [magmaRecs],
|
|
12
|
-
fn: (
|
|
11
|
+
store: model.tree.$domainsInGrade,
|
|
12
|
+
keys: [magmaRecs, domainsInTree],
|
|
13
|
+
fn: (domainsInGrade) => {
|
|
13
14
|
const firstRec = magmaRecs.items[0]
|
|
14
15
|
if (firstRec) {
|
|
15
|
-
const
|
|
16
|
+
const allDomains = Object.values(domainsInTree).flat()
|
|
17
|
+
const domain = findDomainBySkillId(firstRec._id, allDomains) ?? null
|
|
16
18
|
return { domain, isFromRecommendation: true }
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
const domain =
|
|
20
|
-
|
|
22
|
+
domainsInGrade.find((domain) => {
|
|
21
23
|
const isFluency = isFluencyDomain(domain.title)
|
|
22
24
|
const isDomainCompleted = domain.standards.every((standard) => standard.isCompleted)
|
|
23
25
|
return !isFluency && !isDomainCompleted
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { attach, createEffect, createEvent, createStore, restore, sample } from 'effector'
|
|
1
|
+
import { attach, combine, createEffect, createEvent, createStore, restore, sample } from 'effector'
|
|
2
2
|
import { createAction } from 'effector-action'
|
|
3
3
|
import {
|
|
4
4
|
Domain,
|
|
@@ -35,21 +35,22 @@ export class PmTreeModel {
|
|
|
35
35
|
|
|
36
36
|
public readonly $isInitialized = createStore(false)
|
|
37
37
|
public readonly $grade = restore(this.setGrade, null)
|
|
38
|
-
public readonly $
|
|
39
|
-
public readonly $
|
|
38
|
+
public readonly $domains = createStore<Record<number, Domain[]>>({})
|
|
39
|
+
public readonly $domainsInGrade = combine(this.$domains, this.$grade, (domains, grade) =>
|
|
40
|
+
grade !== null ? (domains[grade] ?? []) : [],
|
|
41
|
+
)
|
|
40
42
|
public readonly $grades = createStore<Grade[]>([])
|
|
41
43
|
public readonly $status = createStore<PmProgressStatus | null>(null)
|
|
42
44
|
|
|
43
45
|
constructor(private readonly api: PmProgressApi) {
|
|
44
46
|
if (isWeb) {
|
|
45
47
|
persist({ key: SessionStorageKeys.GRADE, store: this.$grade })
|
|
46
|
-
persist({ key: SessionStorageKeys.DOMAINS, store: this.$
|
|
48
|
+
persist({ key: SessionStorageKeys.DOMAINS, store: this.$domains })
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
this.setupFailedAndLockedStatus()
|
|
50
52
|
this.setupTreeInit()
|
|
51
53
|
this.setupGradeInit()
|
|
52
|
-
this.setupDomainStructure()
|
|
53
54
|
this.setupDomainsInTree()
|
|
54
55
|
}
|
|
55
56
|
|
|
@@ -152,25 +153,6 @@ export class PmTreeModel {
|
|
|
152
153
|
})
|
|
153
154
|
}
|
|
154
155
|
|
|
155
|
-
private setupDomainStructure() {
|
|
156
|
-
sample({
|
|
157
|
-
clock: [this.$grade, this.initTreeFx.doneData],
|
|
158
|
-
source: { tree: this.$tree, stats: this.$stats, user: this.$user, grade: this.$grade },
|
|
159
|
-
filter: isTreeDataReady,
|
|
160
|
-
fn: ({ tree, stats, user, grade }) => {
|
|
161
|
-
const [treeWithUserStats] = enhanceProgressMatrixData(
|
|
162
|
-
Object.values(tree.treeMapping),
|
|
163
|
-
stats,
|
|
164
|
-
[{ entityId: user._id, name: user.fullName }],
|
|
165
|
-
grade as number,
|
|
166
|
-
)
|
|
167
|
-
|
|
168
|
-
return getDomainStructure(treeWithUserStats, tree.treeMapping)
|
|
169
|
-
},
|
|
170
|
-
target: this.$domainsInGrade,
|
|
171
|
-
})
|
|
172
|
-
}
|
|
173
|
-
|
|
174
156
|
private setupDomainsInTree() {
|
|
175
157
|
sample({
|
|
176
158
|
clock: this.initTreeFx.doneData,
|
|
@@ -180,17 +162,19 @@ export class PmTreeModel {
|
|
|
180
162
|
const treeNodes = Object.values(tree.treeMapping)
|
|
181
163
|
const grades = getTreeGrades(tree, user).filter((g) => !g.isLocked)
|
|
182
164
|
|
|
183
|
-
return
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
165
|
+
return Object.fromEntries(
|
|
166
|
+
grades.map((grade) => {
|
|
167
|
+
const [treeWithStats] = enhanceProgressMatrixData(
|
|
168
|
+
treeNodes,
|
|
169
|
+
stats,
|
|
170
|
+
[{ entityId: user._id, name: user.fullName }],
|
|
171
|
+
grade.value,
|
|
172
|
+
)
|
|
173
|
+
return [grade.value, getDomainStructure(treeWithStats, tree.treeMapping)]
|
|
174
|
+
}),
|
|
175
|
+
)
|
|
192
176
|
},
|
|
193
|
-
target: this.$
|
|
177
|
+
target: this.$domains,
|
|
194
178
|
})
|
|
195
179
|
}
|
|
196
180
|
}
|