@eeplatform/nuxt-layer-common 1.7.51 → 1.7.53

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @eeplatform/nuxt-layer-common
2
2
 
3
+ ## 1.7.53
4
+
5
+ ### Patch Changes
6
+
7
+ - 2cb09c5: Integrate track and strands to enrollment form
8
+
9
+ ## 1.7.52
10
+
11
+ ### Patch Changes
12
+
13
+ - 01dfd23: Fix enrollment form - reset semeste, track, and strand when grade level changes
14
+
3
15
  ## 1.7.51
4
16
 
5
17
  ### Patch Changes
@@ -1295,10 +1295,11 @@
1295
1295
  <v-col cols="12">
1296
1296
  <v-autocomplete
1297
1297
  v-model="enrollment.seniorHighInfo.track"
1298
- item-title="title"
1299
- item-value="value"
1298
+ item-title="name"
1299
+ item-value="_id"
1300
1300
  :return-object="false"
1301
- :items="tracks"
1301
+ :items="schoolTracks"
1302
+ :loading="loadingTracks"
1302
1303
  :rules="[requiredRule]"
1303
1304
  ></v-autocomplete>
1304
1305
  </v-col>
@@ -1315,10 +1316,11 @@
1315
1316
  <v-col cols="12">
1316
1317
  <v-autocomplete
1317
1318
  v-model="enrollment.seniorHighInfo.strand"
1318
- item-title="title"
1319
- item-value="value"
1319
+ item-title="name"
1320
+ item-value="_id"
1320
1321
  :return-object="false"
1321
1322
  :items="selectedTrackStrands"
1323
+ :loading="loadingStrands"
1322
1324
  :rules="[requiredRule]"
1323
1325
  ></v-autocomplete>
1324
1326
  </v-col>
@@ -2273,15 +2275,29 @@ watch(selectedSchool, (val) => {
2273
2275
 
2274
2276
  watch(
2275
2277
  () => enrollment.value.gradeLevel,
2276
- () => {
2278
+ (newGradeLevel) => {
2277
2279
  if (enrollment.value.returningLearnerInfo) {
2278
2280
  enrollment.value.returningLearnerInfo.lastGradeLevelCompleted = "";
2279
2281
  }
2282
+
2283
+ // Clear senior high fields when switching to a non-senior-high grade level
2284
+ if (
2285
+ enrollment.value.seniorHighInfo &&
2286
+ !["grade-11", "grade-12"].includes(newGradeLevel)
2287
+ ) {
2288
+ enrollment.value.seniorHighInfo.semester = "";
2289
+ enrollment.value.seniorHighInfo.track = "";
2290
+ enrollment.value.seniorHighInfo.trackName = "";
2291
+ enrollment.value.seniorHighInfo.strand = "";
2292
+ enrollment.value.seniorHighInfo.strandName = "";
2293
+ }
2280
2294
  }
2281
2295
  );
2282
2296
 
2283
- const { gradeLevels, generateSchoolYears, motherTongueOptions, tracks } =
2284
- useBasicEdu();
2297
+ const { gradeLevels, generateSchoolYears, motherTongueOptions } = useBasicEdu();
2298
+
2299
+ const { getAll: getAllTracks } = useTrack();
2300
+ const { getAll: getAllStrands } = useStrand();
2285
2301
 
2286
2302
  const gradeLevelOffering = ref<Record<string, any>[]>([]);
2287
2303
 
@@ -2289,6 +2305,52 @@ const { getAll: getGradeLevels } = useGradeLevel();
2289
2305
 
2290
2306
  const theSchool = computed(() => prop.school || enrollment.value.school);
2291
2307
 
2308
+ const schoolTracks = ref<Array<Record<string, any>>>([]);
2309
+
2310
+ const { data: getTracksData, status: getTracksStatus } = await useLazyAsyncData(
2311
+ `get-tracks-enrollment-form-${theSchool.value}`,
2312
+ () => getAllTracks({ school: theSchool.value, limit: 100 }),
2313
+ {
2314
+ watch: [theSchool],
2315
+ }
2316
+ );
2317
+
2318
+ const loadingTracks = computed(() => getTracksStatus.value === "pending");
2319
+
2320
+ watchEffect(() => {
2321
+ if (getTracksData.value) {
2322
+ schoolTracks.value = getTracksData.value.items;
2323
+ }
2324
+ });
2325
+
2326
+ const schoolStrands = ref<Array<Record<string, any>>>([]);
2327
+
2328
+ const selectedTrackId = computed(
2329
+ () => enrollment.value.seniorHighInfo?.track || ""
2330
+ );
2331
+
2332
+ const { data: getStrandsData, status: getStrandsStatus } =
2333
+ await useLazyAsyncData(
2334
+ `get-strands-enrollment-form-${theSchool.value}-${selectedTrackId.value}`,
2335
+ () =>
2336
+ getAllStrands({
2337
+ school: theSchool.value,
2338
+ track: selectedTrackId.value,
2339
+ limit: 100,
2340
+ }),
2341
+ {
2342
+ watch: [theSchool, selectedTrackId],
2343
+ }
2344
+ );
2345
+
2346
+ const loadingStrands = computed(() => getStrandsStatus.value === "pending");
2347
+
2348
+ watchEffect(() => {
2349
+ if (getStrandsData.value) {
2350
+ schoolStrands.value = getStrandsData.value.items;
2351
+ }
2352
+ });
2353
+
2292
2354
  const { data: getGradeLevelReq, status: statusGradeLevel } =
2293
2355
  await useLazyAsyncData(
2294
2356
  "get-grade-level-offerings" + theSchool.value,
@@ -2316,12 +2378,7 @@ watchEffect(() => {
2316
2378
  }
2317
2379
  });
2318
2380
 
2319
- const selectedTrackStrands = computed(
2320
- () =>
2321
- tracks.find(
2322
- (track) => track.value === enrollment.value.seniorHighInfo?.track
2323
- )?.strands || []
2324
- );
2381
+ const selectedTrackStrands = computed(() => schoolStrands.value);
2325
2382
 
2326
2383
  const isSeniorHighSchool = computed(() => {
2327
2384
  const gradeLevel = enrollment.value.gradeLevel;
@@ -2338,9 +2395,11 @@ watch(
2338
2395
  enrollment.value.seniorHighInfo.strand = "";
2339
2396
  enrollment.value.seniorHighInfo.strandName = "";
2340
2397
 
2341
- const selectedTrack = tracks.find((track) => track.value === trackValue);
2398
+ const selectedTrack = schoolTracks.value.find(
2399
+ (track: Record<string, any>) => track._id === trackValue
2400
+ );
2342
2401
  if (selectedTrack && enrollment.value.seniorHighInfo) {
2343
- enrollment.value.seniorHighInfo.trackName = selectedTrack.title ?? "";
2402
+ enrollment.value.seniorHighInfo.trackName = selectedTrack.name ?? "";
2344
2403
  }
2345
2404
  }
2346
2405
  );
@@ -2352,10 +2411,10 @@ watch(
2352
2411
  if (!strandValue || !enrollment.value.seniorHighInfo) return;
2353
2412
 
2354
2413
  const selectedStrand = selectedTrackStrands.value.find(
2355
- (strand) => strand.value === strandValue
2414
+ (strand: Record<string, any>) => strand._id === strandValue
2356
2415
  );
2357
2416
  if (selectedStrand && enrollment.value.seniorHighInfo) {
2358
- enrollment.value.seniorHighInfo.strandName = selectedStrand.title ?? "";
2417
+ enrollment.value.seniorHighInfo.strandName = selectedStrand.name ?? "";
2359
2418
  }
2360
2419
  }
2361
2420
  );
@@ -0,0 +1,21 @@
1
+ export default function useStrand() {
2
+ function getAll({
3
+ page = 1,
4
+ search = "",
5
+ status = "active",
6
+ limit = 100,
7
+ school = "",
8
+ track = "",
9
+ } = {}) {
10
+ return useNuxtApp().$api<Record<string, any>>(
11
+ `/api/basic-education/strands/school/${school}`,
12
+ {
13
+ query: { page, search, status, limit, track },
14
+ }
15
+ );
16
+ }
17
+
18
+ return {
19
+ getAll,
20
+ };
21
+ }
@@ -0,0 +1,20 @@
1
+ export default function useTrack() {
2
+ function getAll({
3
+ page = 1,
4
+ search = "",
5
+ status = "active",
6
+ limit = 100,
7
+ school = "",
8
+ } = {}) {
9
+ return useNuxtApp().$api<Record<string, any>>(
10
+ `/api/basic-education/tracks/school/${school}`,
11
+ {
12
+ query: { page, search, status, limit },
13
+ }
14
+ );
15
+ }
16
+
17
+ return {
18
+ getAll,
19
+ };
20
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@eeplatform/nuxt-layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "1.7.51",
5
+ "version": "1.7.53",
6
6
  "main": "./nuxt.config.ts",
7
7
  "publishConfig": {
8
8
  "access": "public"