@01-edu/shared 1.1.8 → 1.1.10
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/attrs-defs.js +32 -35
- package/package.json +1 -1
- package/toolbox.js +7 -0
package/attrs-defs.js
CHANGED
|
@@ -3607,13 +3607,11 @@ attrs.text = {
|
|
|
3607
3607
|
types.timelineChunk = TypeObject({
|
|
3608
3608
|
label: 'Month guideline',
|
|
3609
3609
|
type: {
|
|
3610
|
-
month: Literal(
|
|
3610
|
+
month: Literal(1, {
|
|
3611
3611
|
label: 'Month',
|
|
3612
3612
|
editable: true,
|
|
3613
3613
|
required: true,
|
|
3614
3614
|
primary: true,
|
|
3615
|
-
// to put 120 first in options - could also be [120, ...arrayOf(119, 1)]
|
|
3616
|
-
options: arrayOf(120, 1).reverse(),
|
|
3617
3615
|
check: (month, object) => {
|
|
3618
3616
|
checkIntegerInBetween(month, 1, 120)
|
|
3619
3617
|
|
|
@@ -3628,29 +3626,31 @@ types.timelineChunk = TypeObject({
|
|
|
3628
3626
|
},
|
|
3629
3627
|
}),
|
|
3630
3628
|
minLevel: Literal(0, {
|
|
3631
|
-
label: 'Minimum level
|
|
3629
|
+
label: 'Minimum level',
|
|
3630
|
+
instruction: 'Minimum level to be considered on time',
|
|
3632
3631
|
editable: true,
|
|
3633
3632
|
required: true,
|
|
3634
|
-
options: arrayOf(MAX_LEVEL, 0),
|
|
3635
3633
|
check: level => checkIntegerInBetween(level, 0, MAX_LEVEL),
|
|
3636
3634
|
}),
|
|
3637
3635
|
expectedLevel: Literal(0, {
|
|
3638
3636
|
label: 'Expected level',
|
|
3639
3637
|
editable: true,
|
|
3640
3638
|
required: true,
|
|
3641
|
-
|
|
3639
|
+
instruction: 'Recommended level the user should achieve',
|
|
3642
3640
|
check: level => checkIntegerInBetween(level, 0, MAX_LEVEL),
|
|
3643
3641
|
}),
|
|
3644
3642
|
checkpointLevel: Literal(0, {
|
|
3645
3643
|
label: 'Expected checkpoint level',
|
|
3646
3644
|
editable: true,
|
|
3647
3645
|
required: true,
|
|
3648
|
-
|
|
3646
|
+
instruction: 'Recommended checkpoint level the user should achieve',
|
|
3649
3647
|
check: level => checkIntegerInBetween(level, 0, 100),
|
|
3650
3648
|
}),
|
|
3651
3649
|
rank: Literal('', {
|
|
3652
3650
|
label: 'Expected rank',
|
|
3653
3651
|
editable: true,
|
|
3652
|
+
instruction: 'Recommended rank the user should achieve',
|
|
3653
|
+
options: object => object.attrs.ranksDefinitions?.map(item => item.name),
|
|
3654
3654
|
check: (rank, object) => {
|
|
3655
3655
|
if (!object.attrs.ranksDefinitions?.length) {
|
|
3656
3656
|
throw Error(
|
|
@@ -3670,41 +3670,38 @@ types.timelineChunk = TypeObject({
|
|
|
3670
3670
|
}
|
|
3671
3671
|
},
|
|
3672
3672
|
}),
|
|
3673
|
-
|
|
3674
|
-
label: '
|
|
3673
|
+
skills: TypeObject({
|
|
3674
|
+
label: 'Expected skills',
|
|
3675
|
+
instruction: 'Recommended skills the user should get',
|
|
3675
3676
|
editable: true,
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3677
|
+
required: true,
|
|
3678
|
+
value: {},
|
|
3679
|
+
type: mapValues(
|
|
3680
|
+
skillsSet,
|
|
3681
|
+
({ name, type: instruction, description }) => ({
|
|
3682
|
+
label: name,
|
|
3683
|
+
instruction,
|
|
3684
|
+
description,
|
|
3679
3685
|
editable: true,
|
|
3680
|
-
|
|
3681
|
-
|
|
3686
|
+
type: 'number',
|
|
3687
|
+
value: 1,
|
|
3688
|
+
options: arrayOf(100, 1),
|
|
3689
|
+
check: amount => checkIntegerInBetween(amount, 1, 100),
|
|
3682
3690
|
}),
|
|
3683
|
-
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
label: 'Skill developed',
|
|
3691
|
-
editable: true,
|
|
3692
|
-
required: true,
|
|
3693
|
-
// check: value => checkNotEmpty(value), // cannot check not empty if def value is empty
|
|
3694
|
-
}),
|
|
3695
|
-
],
|
|
3696
|
-
check: list => {
|
|
3697
|
-
if (!list?.length || !Array.isArray(list)) {
|
|
3698
|
-
throw Error('Must be a non empty array')
|
|
3699
|
-
}
|
|
3700
|
-
},
|
|
3701
|
-
},
|
|
3702
|
-
},
|
|
3691
|
+
),
|
|
3692
|
+
}),
|
|
3693
|
+
notes: Literal('', {
|
|
3694
|
+
label: 'Other qualitative notes',
|
|
3695
|
+
instruction:
|
|
3696
|
+
'Write any other notes or expectations the user should aim for',
|
|
3697
|
+
editable: true,
|
|
3703
3698
|
}),
|
|
3704
3699
|
},
|
|
3705
3700
|
})
|
|
3706
3701
|
const sharedTimeline = {
|
|
3707
|
-
label: 'Timeline
|
|
3702
|
+
label: 'Timeline of the curriculum',
|
|
3703
|
+
instruction:
|
|
3704
|
+
'Create a timeline with monthly expectations for users to better track their progression over time',
|
|
3708
3705
|
value: (...args) => [
|
|
3709
3706
|
mapValues(types.timelineChunk.type, subDef =>
|
|
3710
3707
|
getDefaultValue(subDef, ...args),
|
package/package.json
CHANGED
package/toolbox.js
CHANGED
|
@@ -64,6 +64,12 @@ export const handleKeyDownEvent = args => {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
export const swap = (arr, i, j) => {
|
|
68
|
+
const newArr = [...arr] // don’t mutate the original
|
|
69
|
+
;[newArr[i], newArr[j]] = [newArr[j], newArr[i]]
|
|
70
|
+
return newArr
|
|
71
|
+
}
|
|
72
|
+
|
|
67
73
|
export const last = array => array[array.length - 1]
|
|
68
74
|
|
|
69
75
|
export const upperFirst = str =>
|
|
@@ -190,6 +196,7 @@ export const formatedDuration = (seconds, { noSeconds } = {}) => {
|
|
|
190
196
|
|
|
191
197
|
const toDate = date => (date instanceof Date ? date : new Date(date))
|
|
192
198
|
export const toDateFormat = (d, isISO = true) => {
|
|
199
|
+
if (dateIsPermanent(d)) return '∞'
|
|
193
200
|
const date = toDate(d)
|
|
194
201
|
const month = (date.getMonth() + 1).toString().padStart(2, '0')
|
|
195
202
|
const day = date.getDate().toString().padStart(2, '0')
|