@obe-loms/coms-parser 1.6.2 → 1.6.4

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.
@@ -1,8 +1,21 @@
1
1
  import { COAEP } from "../../types/coaep";
2
- import { DataTable, DataTableInfo } from "./DataTable";
2
+ import { DataTable } from "./DataTable";
3
3
  import { ParserResult } from "../types/ParserResult";
4
4
  import DataTableException from "../types/DataTableException";
5
- export declare class CoaepDT extends DataTable<COAEP> {
5
+ export type CoaepRow = [
6
+ string | null,
7
+ // CO No
8
+ string | null,
9
+ // CO Statement
10
+ string | null,
11
+ // ILO Statement
12
+ string | null,
13
+ [
14
+ number | null,
15
+ number | null
16
+ ]
17
+ ];
18
+ export declare class CoaepDT extends DataTable<COAEP, CoaepRow> {
6
19
  faculty: string | null;
7
20
  course: string | null;
8
21
  sy: string | null;
@@ -13,9 +26,9 @@ export declare class CoaepDT extends DataTable<COAEP> {
13
26
  */
14
27
  constructor();
15
28
  validateFields(validMsgs: string[], tableErrors: DataTableException[]): Promise<void>;
16
- fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo>>;
29
+ fromCSVString(csvString: string): Promise<ParserResult<CoaepRow[]>>;
17
30
  toJson(): Promise<ParserResult<{
18
- jsonObj: COAEP | null;
31
+ jsonObj: COAEP;
19
32
  validMsgs: string[];
20
33
  tableErrors: DataTableException[];
21
34
  }>>;
@@ -1,23 +1,27 @@
1
1
  import { ParserResult } from "../types/ParserResult";
2
2
  import DataTableException from "../types/DataTableException";
3
3
  import { DTValidator } from "./DTValidator";
4
- export type DataTableInfo = {
4
+ export type DataTableInfo<RowType = any[]> = {
5
5
  name: string;
6
- table: (string | null)[][];
7
6
  headers: string[];
7
+ table: RowType[];
8
8
  };
9
- export declare abstract class DataTable<T> {
9
+ export declare abstract class DataTable<Obj, RowType> {
10
10
  protected name: string;
11
- protected table: (string | null)[][];
12
11
  protected headers: string[];
13
- protected validators: DTValidator<this, T>[];
12
+ protected table: RowType[];
13
+ protected validators: DTValidator<this, Obj>[];
14
14
  /**
15
15
  * Creates a new DataTable, initializes default values.
16
16
  * If no name is given, the name defaults to "DataTable".
17
17
  *
18
+ * @template Obj - The type of the DataTable JSON output.
19
+ * @template RowType - The type of each row of the inner table.
20
+ *
18
21
  * @param {string} _name - The name of the DataTable. Defaults to "DataTable".
22
+ * @param {string[]} _headers - The headers of the DataTable.
19
23
  */
20
- constructor(_name?: string);
24
+ constructor(_name: string | undefined, _headers: string[]);
21
25
  /**
22
26
  * Returns the name of the DataTable.
23
27
  * @returns string
@@ -32,7 +36,7 @@ export declare abstract class DataTable<T> {
32
36
  * Gets the DataTable from the current object.
33
37
  * @returns ParserResult<DataTableInfo>
34
38
  */
35
- getTable(): ParserResult<DataTableInfo>;
39
+ getTable(): ParserResult<DataTableInfo<RowType>>;
36
40
  /**
37
41
  * Sets the DataTable from a given table.
38
42
  * Asserts first if the DataTable is initialized,
@@ -41,7 +45,7 @@ export declare abstract class DataTable<T> {
41
45
  * @param table - Internal table of type (string | null)[][].
42
46
  * @returns A Promise that resolves when the table has been set.
43
47
  */
44
- setTable(table: (string | null)[][]): Promise<void>;
48
+ setTable(table: RowType[]): Promise<void>;
45
49
  /**
46
50
  * Populates the internal table from a given File or CSV string.
47
51
  *
@@ -51,22 +55,21 @@ export declare abstract class DataTable<T> {
51
55
  * @param {File | string} data - The File or CSV string to initialize the DataTable from.
52
56
  * @returns A Promise that resolves to a ParserResult.
53
57
  */
54
- initializeTable(data: File | string): Promise<ParserResult<DataTableInfo>>;
58
+ initializeTable(data: File | string): Promise<ParserResult<RowType[]>>;
55
59
  /**
56
60
  * Asserts that the DataTable has been initialized.
57
61
  * If not, it throws a DataTableException.
58
62
  *
59
- * @returns A Promise that resolves with a string message.
60
63
  * @throws {DataTableException} If the DataTable has not been initialized.
61
64
  */
62
- assertInitialized(): Promise<string>;
65
+ assertInitialized(): Promise<void>;
63
66
  /**
64
67
  * Parses a CSV string into a DataTable.
65
68
  *
66
69
  * @param csvString - The CSV string to parse.
67
70
  * @returns A Promise that resolves to a ParserResult when the parsing is complete.
68
71
  */
69
- abstract fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo>>;
72
+ abstract fromCSVString(csvString: string): Promise<ParserResult<RowType[]>>;
70
73
  /**
71
74
  * Converts the DataTable to its JSON representation.
72
75
  * The method will run all validators on the DataTable before conversion.
@@ -76,7 +79,7 @@ export declare abstract class DataTable<T> {
76
79
  * @returns A Promise that resolves when the conversion is complete.
77
80
  */
78
81
  abstract toJson(): Promise<ParserResult<{
79
- jsonObj: T | null;
82
+ jsonObj: Obj;
80
83
  validMsgs: string[];
81
84
  tableErrors: DataTableException[];
82
85
  }>>;
@@ -88,14 +91,14 @@ export declare abstract class DataTable<T> {
88
91
  * @param sheetName - Optional sheetname to set the DataTable from. Defaults to 1st sheet.
89
92
  * @returns A Promise that resolves to a ParserResult when the DataTable is set.
90
93
  */
91
- fromXML(xls: File, sheetName?: string): Promise<ParserResult<DataTableInfo>>;
94
+ fromXML(xls: File, sheetName?: string): Promise<ParserResult<RowType[]>>;
92
95
  /**
93
96
  * Finds the row and column index of a given string in the DataTable.
94
97
  *
95
98
  * @param {string} str - The string to search for.
96
99
  * @returns {Promise<{ row: number; column: number }>} - A promise resolving to the indices. Defaults to {row: -1, column: -1} if not found.
97
100
  */
98
- findValue(str: string): Promise<{
101
+ findValue(val: string | any): Promise<{
99
102
  row: number;
100
103
  column: number;
101
104
  }>;
@@ -126,5 +129,5 @@ export declare abstract class DataTable<T> {
126
129
  *
127
130
  * @param validator - The validator to add to the DataTable.
128
131
  */
129
- useValidator(validator: DTValidator<this, T>): void;
132
+ useValidator(validator: DTValidator<this, Obj>): void;
130
133
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { COAEP } from "../../../../types/coaep";
2
+ import DataTableException from "../../../types/DataTableException";
3
+ import { CoaepDT } from "../../CoaepDT";
4
+ import { DTValidator } from "../../DTValidator";
5
+ export declare class MinPerfTarget extends DTValidator<CoaepDT, COAEP> {
6
+ constructor();
7
+ validate(validMsgs: string[], tableErrors: DataTableException[], coaepDT: CoaepDT, coaepObj: COAEP | null): Promise<void>;
8
+ }
package/bundle.js CHANGED
@@ -1,58 +1,60 @@
1
- import _0x5b018f from 'papaparse';
2
- import * as _0x3acb05 from 'xlsx';
1
+ import _0xbd7909 from 'papaparse';
2
+ import * as _0x7ad0a from 'xlsx';
3
3
 
4
- function parseCurriculum(_0x243b20){let _0x547486='',_0x526d1e='',_0x533395=0x0,_0x5be130=null;const _0x127c9e=[];return _0x5b018f['parse'](_0x243b20,{'skipEmptyLines':!![],'complete':_0x3e076e=>{_0x3e076e['data']['forEach'](_0x58de07=>{const _0x46f599=_0x58de07['map'](_0x159621=>(_0x159621??'')['toString']()['trim']()),_0x2b3b84=_0x46f599[0x0]??'';if(_0x2b3b84['includes']('Rev#')){const _0x41d2a2=_0x2b3b84['match'](/([A-Z0-9]+)\s*-\s*.*:\s*(.*?)\s+Rev#\s*(\d+)/i);_0x41d2a2&&(_0x547486=_0x41d2a2[0x1]?.['trim']()??'',_0x526d1e=_0x41d2a2[0x2]?.['trim']()??'',_0x533395=parseInt(_0x41d2a2[0x3]??'0',0xa));return;}if(/FIRST YEAR/i['test'](_0x2b3b84)){_0x5be130=0x1;return;}if(/SECOND YEAR/i['test'](_0x2b3b84)){_0x5be130=0x2;return;}if(/THIRD YEAR/i['test'](_0x2b3b84)){_0x5be130=0x3;return;}if(/FOURTH YEAR/i['test'](_0x2b3b84)){_0x5be130=0x4;return;}if(/FIFTH YEAR/i['test'](_0x2b3b84)){_0x5be130=0x5;return;}if(/First Semester/i['test'](_0x2b3b84)||/Second Semester/i['test'](_0x2b3b84)||/Summer/i['test'](_0x2b3b84))return;const _0x5d13c9=[{'sem':0x1,'offset':0x0},{'sem':0x2,'offset':0x6},{'sem':0x3,'offset':0xc}];_0x5d13c9['forEach'](({sem:_0x49c3f1,offset:_0x2cc1e5})=>{const _0x272839=_0x46f599[_0x2cc1e5]??'',_0x188bb2=_0x46f599[_0x2cc1e5+0x1]??'',_0x1bb471=_0x46f599[_0x2cc1e5+0x2]??'',_0x56046=_0x46f599[_0x2cc1e5+0x3]??'',_0x586526=_0x46f599[_0x2cc1e5+0x4]??'';_0x272839&&_0x5be130&&_0x127c9e['push']({'curr_id':_0x547486,'program_name':_0x526d1e,'revision_no':_0x533395,'year_level':_0x5be130,'sem':_0x49c3f1,'course_id':_0x272839,'course_desc':_0x188bb2,'total_units':_0x1bb471,'lec_unit':_0x56046,'lab_unit':_0x586526});});});}}),_0x127c9e;}
4
+ function parseCurriculum(_0x5bb076){let _0x2bf119='',_0x1a1319='',_0x219af1=0x0,_0x449012=null;const _0x569874=[];return _0xbd7909['parse'](_0x5bb076,{'skipEmptyLines':!![],'complete':_0x1a4363=>{_0x1a4363['data']['forEach'](_0xd8a943=>{const _0x377673=_0xd8a943['map'](_0x3ef414=>(_0x3ef414??'')['toString']()['trim']()),_0x291044=_0x377673[0x0]??'';if(_0x291044['includes']('Rev#')){const _0x1a0ffa=_0x291044['match'](/([A-Z0-9]+)\s*-\s*.*:\s*(.*?)\s+Rev#\s*(\d+)/i);_0x1a0ffa&&(_0x2bf119=_0x1a0ffa[0x1]?.['trim']()??'',_0x1a1319=_0x1a0ffa[0x2]?.['trim']()??'',_0x219af1=parseInt(_0x1a0ffa[0x3]??'0',0xa));return;}if(/FIRST YEAR/i['test'](_0x291044)){_0x449012=0x1;return;}if(/SECOND YEAR/i['test'](_0x291044)){_0x449012=0x2;return;}if(/THIRD YEAR/i['test'](_0x291044)){_0x449012=0x3;return;}if(/FOURTH YEAR/i['test'](_0x291044)){_0x449012=0x4;return;}if(/FIFTH YEAR/i['test'](_0x291044)){_0x449012=0x5;return;}if(/First Semester/i['test'](_0x291044)||/Second Semester/i['test'](_0x291044)||/Summer/i['test'](_0x291044))return;const _0xf56bc0=[{'sem':0x1,'offset':0x0},{'sem':0x2,'offset':0x6},{'sem':0x3,'offset':0xc}];_0xf56bc0['forEach'](({sem:_0x412309,offset:_0x53a058})=>{const _0x40eeb3=_0x377673[_0x53a058]??'',_0x4d6e61=_0x377673[_0x53a058+0x1]??'',_0x52e712=_0x377673[_0x53a058+0x2]??'',_0x44afe8=_0x377673[_0x53a058+0x3]??'',_0x17b795=_0x377673[_0x53a058+0x4]??'';_0x40eeb3&&_0x449012&&_0x569874['push']({'curr_id':_0x2bf119,'program_name':_0x1a1319,'revision_no':_0x219af1,'year_level':_0x449012,'sem':_0x412309,'course_id':_0x40eeb3,'course_desc':_0x4d6e61,'total_units':_0x52e712,'lec_unit':_0x44afe8,'lab_unit':_0x17b795});});});}}),_0x569874;}
5
5
 
6
- function convertToCSVFile(_0x46e902,_0x5bf90d){return new Promise((_0x1a8183,_0x49aae2)=>{const _0xd1bd24=new FileReader();_0xd1bd24['onload']=_0x10876e=>{const _0x42c10b=_0x10876e['target']?.['result'];if(!_0x42c10b){_0x49aae2(new Error('Failed\x20to\x20read\x20file'));return;}try{const _0x49040a=_0x3acb05['read'](_0x42c10b,{'type':'array'});!_0x5bf90d&&(_0x5bf90d=_0x49040a['SheetNames'][0x0]);if(!_0x5bf90d){_0x49aae2(new Error('No\x20sheets\x20found\x20in\x20workbook'));return;}const _0x2dd1c5=_0x49040a['Sheets'][_0x5bf90d];if(!_0x2dd1c5){_0x49aae2(new Error('No\x20sheets\x20found\x20in\x20worksheet'));return;}const _0x3bfdbf=_0x3acb05['utils']['sheet_to_csv'](_0x2dd1c5,{'strip':!![]}),_0x2e08e6=_0x46e902['name']['replace'](/\.[^/.]+$/,'.csv'),_0x1bafb6=new File([_0x3bfdbf],_0x2e08e6,{'type':'text/csv','lastModified':Date['now']()});_0x1a8183(_0x1bafb6);}catch(_0x3fa561){_0x49aae2(_0x3fa561);}},_0xd1bd24['onerror']=()=>{_0x49aae2(new Error('File\x20reading\x20failed'));},_0xd1bd24['readAsArrayBuffer'](_0x46e902);});}
6
+ function convertToCSVFile(_0x1a9b61,_0x481525){return new Promise((_0x3b916a,_0x2f202f)=>{const _0x1bb32c=new FileReader();_0x1bb32c['onload']=_0x5f0993=>{const _0x41c2f4=_0x5f0993['target']?.['result'];if(!_0x41c2f4){_0x2f202f(new Error('Failed\x20to\x20read\x20file'));return;}try{const _0x2dc606=_0x7ad0a['read'](_0x41c2f4,{'type':'array'});!_0x481525&&(_0x481525=_0x2dc606['SheetNames'][0x0]);if(!_0x481525){_0x2f202f(new Error('No\x20sheets\x20found\x20in\x20workbook'));return;}const _0xae7cce=_0x2dc606['Sheets'][_0x481525];if(!_0xae7cce){_0x2f202f(new Error('No\x20sheets\x20found\x20in\x20worksheet'));return;}const _0x40a965=_0x7ad0a['utils']['sheet_to_csv'](_0xae7cce,{'strip':!![]}),_0x4882a2=_0x1a9b61['name']['replace'](/\.[^/.]+$/,'.csv'),_0x52e764=new File([_0x40a965],_0x4882a2,{'type':'text/csv','lastModified':Date['now']()});_0x3b916a(_0x52e764);}catch(_0x1c55ce){_0x2f202f(_0x1c55ce);}},_0x1bb32c['onerror']=()=>{_0x2f202f(new Error('File\x20reading\x20failed'));},_0x1bb32c['readAsArrayBuffer'](_0x1a9b61);});}
7
7
 
8
- async function uploadCurriculum(_0x338973,_0x471568){try{const _0x2ca057=await convertToCSVFile(_0x471568),_0x2d51c2=await _0x2ca057['text'](),_0x50e2bb=parseCurriculum(_0x2d51c2),_0x428659=_0x5b018f['unparse'](_0x50e2bb),_0x2ed3cc=new File([_0x428659],_0x2ca057['name'],{'type':'text/csv'}),_0x2ef7be=new FormData();_0x2ef7be['append']('csvFile',_0x2ed3cc);const _0x1c5196=await fetch(_0x338973+'/curr-courses/upload',{'method':'POST','body':_0x2ef7be});if(!_0x1c5196['ok']){const _0x4ec297=await _0x1c5196['json']();throw _0x4ec297;}return _0x1c5196['json']();}catch(_0x4596c1){throw _0x4596c1;}}
8
+ async function uploadCurriculum(_0x1b2eb7,_0x3cd5e4){try{const _0x5e8bfe=await convertToCSVFile(_0x3cd5e4),_0x41e9c6=await _0x5e8bfe['text'](),_0x18d10e=parseCurriculum(_0x41e9c6),_0x12c982=_0xbd7909['unparse'](_0x18d10e),_0x13d454=new File([_0x12c982],_0x5e8bfe['name'],{'type':'text/csv'}),_0x15fd3f=new FormData();_0x15fd3f['append']('csvFile',_0x13d454);const _0x520747=await fetch(_0x1b2eb7+'/curr-courses/upload',{'method':'POST','body':_0x15fd3f});if(!_0x520747['ok']){const _0x556f95=await _0x520747['json']();throw _0x556f95;}return _0x520747['json']();}catch(_0xd7466){throw _0xd7466;}}
9
9
 
10
- function parseCourseOffering(_0x202dff){let _0x37e56d='',_0x12cd99='';const _0x338edd=[],_0x26c709=_0x5b018f['parse'](_0x202dff,{'header':![],'skipEmptyLines':!![],'delimiter':','}),_0xe40213=_0x26c709['data'];for(let _0xb88767=0x0;_0xb88767<Math['min'](0x5,_0xe40213['length']);_0xb88767++){const _0x4e3ea1=_0xe40213[_0xb88767];if(_0x4e3ea1&&_0x4e3ea1['length']>0x0){const _0x567507=_0x4e3ea1[0x0]?.['toString']()||'',_0x1ae327=_0x567507['match'](/(First|Second)\s+Sem\s+S\/Y\s+(\d{4}-\d{4})/i);if(_0x1ae327){_0x37e56d=_0x1ae327[0x1]?.['toLowerCase']()==='first'?'1':'2';if(_0x1ae327[0x2]){const _0x1eae4a=_0x1ae327[0x2]['match'](/(\d{2})(\d{2})-(\d{2})(\d{2})/);_0x1eae4a&&_0x1eae4a[0x2]&&_0x1eae4a[0x4]&&(_0x12cd99=_0x1eae4a[0x2]+_0x1eae4a[0x4]);}}}}let _0x37f6be=-1;for(let _0x2fc39c=0x0;_0x2fc39c<_0xe40213['length'];_0x2fc39c++){const _0x1fba02=_0xe40213[_0x2fc39c];if(_0x1fba02&&_0x1fba02['some'](_0x28f3af=>_0x28f3af?.['toString']()['toUpperCase']()['includes']('CODE'))){_0x37f6be=_0x2fc39c;break;}}if(_0x37f6be===-1)throw new Error('Could\x20not\x20find\x20header\x20row\x20in\x20CSV\x20data');let _0x1d90df={'code':'','description':'','unit':0x0};for(let _0x3d9d54=_0x37f6be+0x1;_0x3d9d54<_0xe40213['length'];_0x3d9d54++){const _0x2ce3e2=_0xe40213[_0x3d9d54];if(!_0x2ce3e2||_0x2ce3e2['length']<0x8)continue;const _0x1038fb=_0x2ce3e2[0x1]?.['toString']()['trim']()||'',_0x86f48c=_0x2ce3e2[0x4]?.['toString']()['trim']()||'',_0x3729ad=_0x2ce3e2[0x5]?.['toString']()['trim']()||'',_0x120459=_0x2ce3e2[0x6]?.['toString']()['trim']()||'',_0x4812e8=_0x2ce3e2[0x7]?.['toString']()['trim']()||'',_0x5630f7=_0x2ce3e2[0x3]?.['toString']()['trim']()||'';let _0x3edec5=_0x2ce3e2[0x0]?.['toString']()['trim']()||'',_0x5f1cad=_0x2ce3e2[0x2]?.['toString']()['trim']()||'';if(!_0x1038fb)continue;if(!_0x3edec5)_0x3edec5=_0x1d90df['code'];if(!_0x5f1cad)_0x5f1cad=_0x1d90df['description'];let _0x56d1e8=_0x1d90df['unit'];if(_0x5630f7){const _0x326f0f=_0x5630f7['match'](/(\d+)/);_0x326f0f&&_0x326f0f[0x1]&&(_0x56d1e8=parseInt(_0x326f0f[0x1],0xa));}const _0x30c580={'sem':_0x37e56d,'school_year':_0x12cd99,'code':_0x3edec5,'course_no':_0x1038fb,'course_desc':_0x5f1cad,'unit':_0x56d1e8,'time':_0x86f48c,'days':_0x3729ad,'faculty':_0x120459,'room':_0x4812e8};_0x1d90df['code']=_0x3edec5,_0x1d90df['description']=_0x5f1cad,_0x1d90df['unit']=_0x56d1e8,_0x338edd['push'](_0x30c580);}return _0x338edd;}
10
+ function parseCourseOffering(_0x32b9fb){let _0x29a328='',_0x23e394='';const _0x11ddcd=[],_0x476ddb=_0xbd7909['parse'](_0x32b9fb,{'header':![],'skipEmptyLines':!![],'delimiter':','}),_0x58213f=_0x476ddb['data'];for(let _0x46921e=0x0;_0x46921e<Math['min'](0x5,_0x58213f['length']);_0x46921e++){const _0x39c15a=_0x58213f[_0x46921e];if(_0x39c15a&&_0x39c15a['length']>0x0){const _0x51543a=_0x39c15a[0x0]?.['toString']()||'',_0x2c9407=_0x51543a['match'](/(First|Second)\s+Sem\s+S\/Y\s+(\d{4}-\d{4})/i);if(_0x2c9407){_0x29a328=_0x2c9407[0x1]?.['toLowerCase']()==='first'?'1':'2';if(_0x2c9407[0x2]){const _0x5b2f9c=_0x2c9407[0x2]['match'](/(\d{2})(\d{2})-(\d{2})(\d{2})/);_0x5b2f9c&&_0x5b2f9c[0x2]&&_0x5b2f9c[0x4]&&(_0x23e394=_0x5b2f9c[0x2]+_0x5b2f9c[0x4]);}}}}let _0x1e47e3=-1;for(let _0x3f4318=0x0;_0x3f4318<_0x58213f['length'];_0x3f4318++){const _0x2bb614=_0x58213f[_0x3f4318];if(_0x2bb614&&_0x2bb614['some'](_0x2ada73=>_0x2ada73?.['toString']()['toUpperCase']()['includes']('CODE'))){_0x1e47e3=_0x3f4318;break;}}if(_0x1e47e3===-1)throw new Error('Could\x20not\x20find\x20header\x20row\x20in\x20CSV\x20data');let _0x2965e3={'code':'','description':'','unit':0x0};for(let _0xee7e5e=_0x1e47e3+0x1;_0xee7e5e<_0x58213f['length'];_0xee7e5e++){const _0x1fc2fc=_0x58213f[_0xee7e5e];if(!_0x1fc2fc||_0x1fc2fc['length']<0x8)continue;const _0x4735b7=_0x1fc2fc[0x1]?.['toString']()['trim']()||'',_0x11cc48=_0x1fc2fc[0x4]?.['toString']()['trim']()||'',_0x5008c6=_0x1fc2fc[0x5]?.['toString']()['trim']()||'',_0x173f38=_0x1fc2fc[0x6]?.['toString']()['trim']()||'',_0x19d6d4=_0x1fc2fc[0x7]?.['toString']()['trim']()||'',_0x20d295=_0x1fc2fc[0x3]?.['toString']()['trim']()||'';let _0x4efeb7=_0x1fc2fc[0x0]?.['toString']()['trim']()||'',_0x134b64=_0x1fc2fc[0x2]?.['toString']()['trim']()||'';if(!_0x4735b7)continue;if(!_0x4efeb7)_0x4efeb7=_0x2965e3['code'];if(!_0x134b64)_0x134b64=_0x2965e3['description'];let _0x5b65f2=_0x2965e3['unit'];if(_0x20d295){const _0x458e83=_0x20d295['match'](/(\d+)/);_0x458e83&&_0x458e83[0x1]&&(_0x5b65f2=parseInt(_0x458e83[0x1],0xa));}const _0x29f74a={'sem':_0x29a328,'school_year':_0x23e394,'code':_0x4efeb7,'course_no':_0x4735b7,'course_desc':_0x134b64,'unit':_0x5b65f2,'time':_0x11cc48,'days':_0x5008c6,'faculty':_0x173f38,'room':_0x19d6d4};_0x2965e3['code']=_0x4efeb7,_0x2965e3['description']=_0x134b64,_0x2965e3['unit']=_0x5b65f2,_0x11ddcd['push'](_0x29f74a);}return _0x11ddcd;}
11
11
 
12
- async function uploadCourseOffering(_0x2fd2e0,_0x34e7b3){try{const _0x334bbe=await convertToCSVFile(_0x34e7b3),_0x1b0ad2=await _0x334bbe['text'](),_0x772c17=parseCourseOffering(_0x1b0ad2),_0xc7500=_0x5b018f['unparse'](_0x772c17),_0x41bf08=new File([_0xc7500],_0x334bbe['name'],{'type':'text/csv'}),_0x457c2a=new FormData();_0x457c2a['append']('csvFile',_0x41bf08);const _0x53abab=await fetch(_0x2fd2e0+'/course-offerings/upload',{'method':'POST','body':_0x457c2a});if(!_0x53abab['ok']){const _0x45c250=await _0x53abab['json']();throw _0x45c250;}return _0x53abab['json']();}catch(_0x361419){throw _0x361419;}}
12
+ async function uploadCourseOffering(_0x28b8ca,_0x48fb2a){try{const _0x5a6229=await convertToCSVFile(_0x48fb2a),_0x2e1270=await _0x5a6229['text'](),_0x1cbf23=parseCourseOffering(_0x2e1270),_0x19a8b2=_0xbd7909['unparse'](_0x1cbf23),_0x187b8a=new File([_0x19a8b2],_0x5a6229['name'],{'type':'text/csv'}),_0x3ddd21=new FormData();_0x3ddd21['append']('csvFile',_0x187b8a);const _0x484f29=await fetch(_0x28b8ca+'/course-offerings/upload',{'method':'POST','body':_0x3ddd21});if(!_0x484f29['ok']){const _0x1b4ff8=await _0x484f29['json']();throw _0x1b4ff8;}return _0x484f29['json']();}catch(_0x3113a8){throw _0x3113a8;}}
13
13
 
14
- function performaceTarget(_0x500696){if(!_0x500696)return {'performance_target':null,'passing_score':null};const _0x2a78f3=_0x500696['match'](/\d+/g);return {'performance_target':_0x2a78f3?.[0x0]?parseInt(_0x2a78f3[0x0],0xa):null,'passing_score':_0x2a78f3?.[0x1]?parseInt(_0x2a78f3[0x1],0xa):null};}
14
+ function performaceTarget(_0x52b4ca){if(!_0x52b4ca)return {'performance_target':null,'passing_score':null};const _0x10ff67=_0x52b4ca['match'](/\d+/g);return {'performance_target':_0x10ff67?.[0x0]?parseInt(_0x10ff67[0x0],0xa):null,'passing_score':_0x10ff67?.[0x1]?parseInt(_0x10ff67[0x1],0xa):null};}
15
15
 
16
- const HEADERS$1={'co':['course\x20outcome','co\x20statement','outcome\x20statement'],'ilo':['intended\x20learning','ilo','learning\x20outcome'],'assessTool':['assessment\x20tool','assessment\x20method','tool'],'perfTarget':['performance\x20target','target','passing']};function getCoaepHeader(_0x4ce451){let _0x53da24={'headerRowIndex':-1,'coIdx':-1,'iloIdx':-1,'assessToolIdx':-1,'perfTargetIdx':-1};for(let _0xda4270=0x0;_0xda4270<Math['min'](_0x4ce451['length'],0x14);_0xda4270++){const _0x582063=(_0x4ce451[_0xda4270]??[])['map'](_0x149a9c=>_0x149a9c['toLowerCase']()['trim']()),_0x379455=_0x582063['findIndex'](_0x30fe97=>HEADERS$1['co']['some'](_0x5d49c8=>_0x30fe97['includes'](_0x5d49c8))),_0x4a2a55=_0x582063['findIndex'](_0x4009d5=>HEADERS$1['ilo']['some'](_0x302411=>_0x4009d5['includes'](_0x302411))),_0xc80129=_0x582063['findIndex'](_0x17b9c8=>HEADERS$1['assessTool']['some'](_0x4e18f8=>_0x17b9c8['includes'](_0x4e18f8))),_0x1398df=_0x582063['findIndex'](_0x4ff50f=>HEADERS$1['perfTarget']['some'](_0x1bba1d=>_0x4ff50f['includes'](_0x1bba1d))),_0x5b6646=[_0x379455,_0x4a2a55,_0xc80129,_0x1398df]['filter'](_0x44d6c7=>_0x44d6c7!==-1)['length'];if(_0x5b6646>=0x3){_0x53da24={'headerRowIndex':_0xda4270,'coIdx':_0x379455,'iloIdx':_0x4a2a55,'assessToolIdx':_0xc80129,'perfTargetIdx':_0x1398df};break;}}return _0x53da24;}
16
+ const HEADERS$1={'co':['course\x20outcome','co\x20statement','outcome\x20statement'],'ilo':['intended\x20learning','ilo','learning\x20outcome'],'assessTool':['assessment\x20tool','assessment\x20method','tool'],'perfTarget':['performance\x20target','target','passing']};function getCoaepHeader(_0x1384d4){let _0x383513={'headerRowIndex':-1,'coIdx':-1,'iloIdx':-1,'assessToolIdx':-1,'perfTargetIdx':-1};for(let _0x138f76=0x0;_0x138f76<Math['min'](_0x1384d4['length'],0x14);_0x138f76++){const _0x3145a7=(_0x1384d4[_0x138f76]??[])['map'](_0x5bf199=>_0x5bf199['toLowerCase']()['trim']()),_0x25839c=_0x3145a7['findIndex'](_0x47d9c0=>HEADERS$1['co']['some'](_0x13677f=>_0x47d9c0['includes'](_0x13677f))),_0x596ad4=_0x3145a7['findIndex'](_0xd3b538=>HEADERS$1['ilo']['some'](_0x370018=>_0xd3b538['includes'](_0x370018))),_0x1bb4d5=_0x3145a7['findIndex'](_0x48bdce=>HEADERS$1['assessTool']['some'](_0x11d665=>_0x48bdce['includes'](_0x11d665))),_0x5f5228=_0x3145a7['findIndex'](_0x3608be=>HEADERS$1['perfTarget']['some'](_0xc25d10=>_0x3608be['includes'](_0xc25d10))),_0x4a07a7=[_0x25839c,_0x596ad4,_0x1bb4d5,_0x5f5228]['filter'](_0x27fe86=>_0x27fe86!==-1)['length'];if(_0x4a07a7>=0x3){_0x383513={'headerRowIndex':_0x138f76,'coIdx':_0x25839c,'iloIdx':_0x596ad4,'assessToolIdx':_0x1bb4d5,'perfTargetIdx':_0x5f5228};break;}}return _0x383513;}
17
17
 
18
- function extractFromObjective(_0x46da89){const _0x2c50c3={'cognitive_level':null,'taxonomy_level':null,'verb':null},_0x1c64d0=/(?:\(([IED])\))?\s*(\w+)\s*:\s*(.*)/i,_0x492568=_0x46da89['match'](_0x1c64d0);if(_0x492568){if(_0x492568[0x1])_0x2c50c3['cognitive_level']=_0x492568[0x1];if(_0x492568[0x2])_0x2c50c3['taxonomy_level']=_0x492568[0x2]['toLowerCase']();const _0x226d92=_0x492568[0x3]?.['trim']();if(_0x226d92){const _0x594ebc=/(?:shall|will)\s+(\w+)/i,_0x30c350=_0x226d92['match'](_0x594ebc);_0x30c350?_0x2c50c3['verb']=_0x30c350[0x1]['toLowerCase']():_0x2c50c3['verb']=_0x226d92['split'](/\s+/)[0x0]['toLowerCase']();}}return _0x2c50c3;}
18
+ function extractFromObjective(_0x2c2f60){const _0x50f3fd={'cognitive_level':null,'taxonomy_level':null,'verb':null},_0xb7496f=/(?:\(([IED])\))?\s*(\w+)\s*:\s*(.*)/i,_0x26aee1=_0x2c2f60['match'](_0xb7496f);if(_0x26aee1){if(_0x26aee1[0x1])_0x50f3fd['cognitive_level']=_0x26aee1[0x1];if(_0x26aee1[0x2])_0x50f3fd['taxonomy_level']=_0x26aee1[0x2]['toLowerCase']();const _0x22f243=_0x26aee1[0x3]?.['trim']();if(_0x22f243){const _0x48adbf=/(?:shall|will)\s+(\w+)/i,_0x453d76=_0x22f243['match'](_0x48adbf);_0x453d76?_0x50f3fd['verb']=_0x453d76[0x1]['toLowerCase']():_0x50f3fd['verb']=_0x22f243['split'](/\s+/)[0x0]['toLowerCase']();}}return _0x50f3fd;}
19
19
 
20
- function parseCOAEP(_0x1bad3f){const _0x55f5f5=_0x5b018f['parse'](_0x1bad3f,{'skipEmptyLines':![]})['data'],_0x5d7a54={'COAEP':{'faculty':null,'course':null,'sy':null,'semester':null,'co':[]}},{headerRowIndex:_0x427ce0,coIdx:_0x5a9066,iloIdx:_0x55f126,assessToolIdx:_0x4f0470,perfTargetIdx:_0x339e25}=getCoaepHeader(_0x55f5f5);if(_0x427ce0===-1)return {'error':'Could\x20not\x20auto-detect\x20header\x20row.','message':'Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.'};_0x55f5f5['forEach'](_0x4e21e4=>{const _0x5ee546=_0x4e21e4['indexOf']('Name\x20of\x20Faculty:'),_0x449381=_0x4e21e4['indexOf']('School\x20Year'),_0x1b5e60=_0x4e21e4['indexOf']('Course:'),_0x591306=_0x4e21e4['indexOf']('Semester');_0x5ee546!==-1&&(_0x5d7a54['COAEP']['faculty']=_0x4e21e4[_0x5ee546+0x1]?.['trim']()||_0x5d7a54['COAEP']['faculty']);_0x449381!==-1&&(_0x5d7a54['COAEP']['sy']=_0x4e21e4[_0x449381+0x1]?.['trim']()||_0x5d7a54['COAEP']['sy']);_0x1b5e60!==-1&&(_0x5d7a54['COAEP']['course']=_0x4e21e4[_0x1b5e60+0x1]?.['trim']()||_0x5d7a54['COAEP']['course']);if(_0x591306!==-1){const _0x660fd0=_0x4e21e4[_0x591306+0x1]?.['trim']()||'',_0x536e5a=_0x660fd0['match'](/\d+/)?.[0x0];_0x5d7a54['COAEP']['semester']=_0x536e5a?parseInt(_0x536e5a,0xa):_0x5d7a54['COAEP']['semester'];}});let _0xf06b90=null;return _0x55f5f5['forEach']((_0x59f304,_0x1b5aa8)=>{if(_0x1b5aa8<=_0x427ce0)return;let _0x1b1995=_0x59f304[_0x5a9066-0x1]?.['trim']()||'',_0x5e5de7=_0x59f304[_0x5a9066]?.['trim']()||'';/^\d+$/['test'](_0x59f304[_0x5a9066]?.['trim']()||'')&&(_0x1b1995=_0x59f304[_0x5a9066]?.['trim']()||'',_0x5e5de7=_0x59f304[_0x5a9066+0x1]?.['trim']()||'');const _0x37bc05=_0x59f304[_0x55f126]?.['trim']()||'',_0x999e3=_0x59f304[_0x4f0470]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0x5e1890=_0x59f304[_0x339e25]?.['replace'](/\s+/g,'\x20')['trim']()||'';if(_0x1b1995&&/^\d+$/['test'](_0x1b1995)){_0xf06b90&&_0x5d7a54['COAEP']['co']['push'](_0xf06b90);const _0x378d8e=_0x5e5de7,{verb:_0x3d62d0,cognitive_level:_0xcde6b5,taxonomy_level:_0x32ae3e}=extractFromObjective(_0x378d8e);if(!_0x3d62d0)return {'error':'Could\x20not\x20find\x20verb.','message':'Please\x20ensure\x20the\x20Course\x20Outcome\x20#'+_0x1b1995+'\x20is\x20in\x20the\x20correct\x20format.'};_0xf06b90={'statement':_0x378d8e,'ilo':[],'verb':_0x3d62d0,'cognitive_level':_0xcde6b5,'taxonomy_level':_0x32ae3e};}if(_0xf06b90&&_0x37bc05&&_0x5e1890){const _0x1487d0=_0x37bc05['replace'](/^ILO\d+[:.]?\s*/,'');if(_0x1487d0['match'](/^(Revision|Prepared|Date|Approved|Effectivity|Page)/i)||_0x1487d0['length']<0xa)return;let _0x52345d=_0x999e3;if(!_0x52345d&&_0x1487d0['includes'](':')){const _0xf147de=_0x1487d0['match'](/^ILO\d+:\s*(.+?)(?:\s*\(|$)/);_0xf147de&&(_0x52345d=_0xf147de[0x1]?.['trim']()||'');}const {performance_target:_0x3f4e5a,passing_score:_0x57e74a}=performaceTarget(_0x5e1890),{verb:_0x131472,cognitive_level:_0x62c64c,taxonomy_level:_0x2122c0}=extractFromObjective(_0x1487d0);_0xf06b90['ilo']['push']({'statement':_0x1487d0,'assessment_tool':_0x52345d,'performance_target':_0x3f4e5a,'passing_score':_0x57e74a,'verb':_0x131472,'cognitive_level':_0x62c64c,'taxonomy_level':_0x2122c0});}}),_0xf06b90&&_0x5d7a54['COAEP']['co']['push'](_0xf06b90),_0x5d7a54;}
20
+ function parseCOAEP(_0x1251e9){const _0x4eae84=_0xbd7909['parse'](_0x1251e9,{'skipEmptyLines':![]})['data'],_0x46e31d={'COAEP':{'faculty':null,'course':null,'sy':null,'semester':null,'co':[]}},{headerRowIndex:_0x9aba51,coIdx:_0x30f67b,iloIdx:_0xf716f7,assessToolIdx:_0x20f2e5,perfTargetIdx:_0x2ea5bf}=getCoaepHeader(_0x4eae84);if(_0x9aba51===-1)return {'error':'Could\x20not\x20auto-detect\x20header\x20row.','message':'Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.'};_0x4eae84['forEach'](_0x1f74af=>{const _0x5f15ea=_0x1f74af['indexOf']('Name\x20of\x20Faculty:'),_0x53fc56=_0x1f74af['indexOf']('School\x20Year'),_0x324517=_0x1f74af['indexOf']('Course:'),_0x2bb152=_0x1f74af['indexOf']('Semester');_0x5f15ea!==-1&&(_0x46e31d['COAEP']['faculty']=_0x1f74af[_0x5f15ea+0x1]?.['trim']()||_0x46e31d['COAEP']['faculty']);_0x53fc56!==-1&&(_0x46e31d['COAEP']['sy']=_0x1f74af[_0x53fc56+0x1]?.['trim']()||_0x46e31d['COAEP']['sy']);_0x324517!==-1&&(_0x46e31d['COAEP']['course']=_0x1f74af[_0x324517+0x1]?.['trim']()||_0x46e31d['COAEP']['course']);if(_0x2bb152!==-1){const _0x118417=_0x1f74af[_0x2bb152+0x1]?.['trim']()||'',_0x586582=_0x118417['match'](/\d+/)?.[0x0];_0x46e31d['COAEP']['semester']=_0x586582?parseInt(_0x586582,0xa):_0x46e31d['COAEP']['semester'];}});let _0x1a7494=null;return _0x4eae84['forEach']((_0x20ceaf,_0x35fe70)=>{if(_0x35fe70<=_0x9aba51)return;let _0x15aea2=_0x20ceaf[_0x30f67b-0x1]?.['trim']()||'',_0x2beb87=_0x20ceaf[_0x30f67b]?.['trim']()||'';/^\d+$/['test'](_0x20ceaf[_0x30f67b]?.['trim']()||'')&&(_0x15aea2=_0x20ceaf[_0x30f67b]?.['trim']()||'',_0x2beb87=_0x20ceaf[_0x30f67b+0x1]?.['trim']()||'');const _0x387405=_0x20ceaf[_0xf716f7]?.['trim']()||'',_0x34efff=_0x20ceaf[_0x20f2e5]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0x39f014=_0x20ceaf[_0x2ea5bf]?.['replace'](/\s+/g,'\x20')['trim']()||'';if(_0x15aea2&&/^\d+$/['test'](_0x15aea2)){_0x1a7494&&_0x46e31d['COAEP']['co']['push'](_0x1a7494);const _0x5c8460=_0x2beb87,{verb:_0x4003f8,cognitive_level:_0x220d7a,taxonomy_level:_0x278285}=extractFromObjective(_0x5c8460);if(!_0x4003f8)return {'error':'Could\x20not\x20find\x20verb.','message':'Please\x20ensure\x20the\x20Course\x20Outcome\x20#'+_0x15aea2+'\x20is\x20in\x20the\x20correct\x20format.'};_0x1a7494={'statement':_0x5c8460,'ilo':[],'verb':_0x4003f8,'cognitive_level':_0x220d7a,'taxonomy_level':_0x278285};}if(_0x1a7494&&_0x387405&&_0x39f014){const _0x1f17cb=_0x387405['replace'](/^ILO\d+[:.]?\s*/,'');if(_0x1f17cb['match'](/^(Revision|Prepared|Date|Approved|Effectivity|Page)/i)||_0x1f17cb['length']<0xa)return;let _0x2d4060=_0x34efff;if(!_0x2d4060&&_0x1f17cb['includes'](':')){const _0x5d511a=_0x1f17cb['match'](/^ILO\d+:\s*(.+?)(?:\s*\(|$)/);_0x5d511a&&(_0x2d4060=_0x5d511a[0x1]?.['trim']()||'');}const {performance_target:_0x2b55fa,passing_score:_0x46dfa2}=performaceTarget(_0x39f014),{verb:_0x2462bf,cognitive_level:_0x5ba081,taxonomy_level:_0x5a90c9}=extractFromObjective(_0x1f17cb);_0x1a7494['ilo']['push']({'statement':_0x1f17cb,'assessment_tool':_0x2d4060,'performance_target':_0x2b55fa,'passing_score':_0x46dfa2,'verb':_0x2462bf,'cognitive_level':_0x5ba081,'taxonomy_level':_0x5a90c9});}}),_0x1a7494&&_0x46e31d['COAEP']['co']['push'](_0x1a7494),_0x46e31d;}
21
21
 
22
- async function uploadCOAEP(_0x129da1,_0x16f2c2,_0x4f3c13){try{const _0x34e488=await convertToCSVFile(_0x16f2c2),_0x271dfd=await _0x34e488['text'](),_0x4446a7=parseCOAEP(_0x271dfd);console['log'](_0x4446a7);const _0x4a3181=await fetch(_0x129da1+'/coaeps/upload?course_id='+_0x4f3c13,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4446a7)});if(!_0x4a3181['ok']){const _0x1e1f4a=await _0x4a3181['json']();throw _0x1e1f4a;}return _0x4a3181['json']();}catch(_0x24d931){throw _0x24d931;}}
22
+ async function uploadCOAEP(_0x884502,_0x2b0ff1,_0x28f829){try{const _0x220078=await convertToCSVFile(_0x2b0ff1),_0x4c118a=await _0x220078['text'](),_0x2bb0e0=parseCOAEP(_0x4c118a);console['log'](_0x2bb0e0);const _0x3e28ff=await fetch(_0x884502+'/coaeps/upload?course_id='+_0x28f829,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2bb0e0)});if(!_0x3e28ff['ok']){const _0x4c1e3c=await _0x3e28ff['json']();throw _0x4c1e3c;}return _0x3e28ff['json']();}catch(_0x1883b1){throw _0x1883b1;}}
23
23
 
24
- async function uploadEnrolledStudent(_0x2aadcb,_0x522720){try{const _0x4b0430=await convertToCSVFile(_0x522720),_0x9d2037=new FormData();_0x9d2037['append']('csvFile',_0x4b0430);const _0x2513d8=await fetch(_0x2aadcb+'/enrolled-students/upload',{'method':'POST','body':_0x9d2037});if(!_0x2513d8['ok']){const _0x4f31fb=await _0x2513d8['json']();throw _0x4f31fb;}return _0x2513d8['json']();}catch(_0x32d2ae){throw _0x32d2ae;}}
24
+ async function uploadEnrolledStudent(_0x1b1974,_0x2c3026){try{const _0x13b025=await convertToCSVFile(_0x2c3026),_0x1b616f=new FormData();_0x1b616f['append']('csvFile',_0x13b025);const _0x95c65c=await fetch(_0x1b1974+'/enrolled-students/upload',{'method':'POST','body':_0x1b616f});if(!_0x95c65c['ok']){const _0x54f648=await _0x95c65c['json']();throw _0x54f648;}return _0x95c65c['json']();}catch(_0xf6f75f){throw _0xf6f75f;}}
25
25
 
26
- function parseClassList(_0xa7ece3){const _0x5b652c=_0x5b018f['parse'](_0xa7ece3,{'skipEmptyLines':!![]})['data'];let _0x1b29c3='',_0x4f8949='',_0x40fede='';const _0x17687f=[];return _0x5b652c['forEach'](_0x317a37=>{const _0x6ed967=_0x317a37['map'](_0xf9726a=>(_0xf9726a??'')['toString']()['trim']()),_0x3c6c18=_0x6ed967[0x0]??'';if(_0x3c6c18['startsWith']('Course\x20No:')){const _0x1a3221=_0x3c6c18['replace']('Course\x20No:','')['trim'](),_0x533c87=_0x1a3221['split'](/\s+/);_0x40fede=_0x533c87[0x0]??'';const [_0x480bc1,_0x1c5ff6]=(_0x533c87[0x1]??'')['split']('-');_0x4f8949=_0x480bc1??'';const _0xfbc6f8=(_0x1c5ff6??'')['match'](/[a-z]$/);_0x1b29c3=_0xfbc6f8?_0xfbc6f8[0x0]:'';}if(/^\d+$/['test'](_0x3c6c18)){const _0x3a386d=_0x6ed967[0x2]??'';_0x17687f['push']({'subj_code':_0x40fede,'student_no':_0x3a386d,'course_id':_0x4f8949,'section':_0x1b29c3});}}),{'enrolledCourses':_0x17687f};}
26
+ function parseClassList(_0x261de0){const _0x505df9=_0xbd7909['parse'](_0x261de0,{'skipEmptyLines':!![]})['data'];let _0x36714e='',_0x32598c='',_0x171ba6='';const _0x44a26f=[];return _0x505df9['forEach'](_0x4a972a=>{const _0x2bb5f2=_0x4a972a['map'](_0x31865c=>(_0x31865c??'')['toString']()['trim']()),_0x4c321d=_0x2bb5f2[0x0]??'';if(_0x4c321d['startsWith']('Course\x20No:')){const _0x4b7d9d=_0x4c321d['replace']('Course\x20No:','')['trim'](),_0x37d6b5=_0x4b7d9d['split'](/\s+/);_0x171ba6=_0x37d6b5[0x0]??'';const [_0x2e69db,_0x29eb4a]=(_0x37d6b5[0x1]??'')['split']('-');_0x32598c=_0x2e69db??'';const _0x4ccc64=(_0x29eb4a??'')['match'](/[a-z]$/);_0x36714e=_0x4ccc64?_0x4ccc64[0x0]:'';}if(/^\d+$/['test'](_0x4c321d)){const _0x6ae181=_0x2bb5f2[0x2]??'';_0x44a26f['push']({'subj_code':_0x171ba6,'student_no':_0x6ae181,'course_id':_0x32598c,'section':_0x36714e});}}),{'enrolledCourses':_0x44a26f};}
27
27
 
28
- async function uploadClassList(_0xec7b51,_0x487ccd,_0x4615ac,_0x361135){try{const _0x1be436=await convertToCSVFile(_0x487ccd),_0x1aa05e=await _0x1be436['text'](),_0x1a5193=parseClassList(_0x1aa05e),_0x2c241e='subj_code='+_0x4615ac+'&period_id='+_0x361135,_0x32a38d=await fetch(_0xec7b51+'/enrolled-courses/upload?'+_0x2c241e,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1a5193)});if(!_0x32a38d['ok']){const _0x51aa5b=await _0x32a38d['json']();throw _0x51aa5b;}return _0x32a38d['json']();}catch(_0x3ce10d){throw _0x3ce10d;}}
28
+ async function uploadClassList(_0x4ffff6,_0x2b2d60,_0x34a706,_0x17568b){try{const _0x1fcfdb=await convertToCSVFile(_0x2b2d60),_0x1f999c=await _0x1fcfdb['text'](),_0x205226=parseClassList(_0x1f999c),_0x28de3c='subj_code='+_0x34a706+'&period_id='+_0x17568b,_0x4deea3=await fetch(_0x4ffff6+'/enrolled-courses/upload?'+_0x28de3c,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x205226)});if(!_0x4deea3['ok']){const _0x49efae=await _0x4deea3['json']();throw _0x49efae;}return _0x4deea3['json']();}catch(_0x5da138){throw _0x5da138;}}
29
29
 
30
- function parseAssessmentCsv(_0x3e0545){const {data:_0x101883}=_0x5b018f['parse'](_0x3e0545,{'skipEmptyLines':!![]}),_0x1f0283=_0x101883['filter'](_0x33773e=>_0x33773e['length']>0x0),_0x574e32=_0x1f0283['find'](_0x511a8e=>_0x511a8e['some'](_0xf96927=>_0xf96927?.['includes']('Faculty'))),_0x37fafe=_0x574e32?_0x574e32['findIndex'](_0x1d76ec=>_0x1d76ec?.['includes']('Faculty')):-1,_0x4e694b=_0x37fafe!==-1&&_0x574e32?_0x574e32[_0x37fafe+0x2]?.['replace'](/"/g,'')['trim']()??'':'',_0x3af6f5=_0x1f0283['find'](_0xc57c14=>_0xc57c14['some'](_0x4b3619=>_0x4b3619?.['includes']('Semester'))),_0x38c8f2=_0x3af6f5?_0x3af6f5['findIndex'](_0x8bec6a=>_0x8bec6a?.['includes']('Semester')):-1,_0x3463c8=_0x38c8f2!==-1&&_0x3af6f5?_0x3af6f5[_0x38c8f2+0x2]?.['trim']()??'':'',_0x297129=_0x3463c8['includes']('1st')?0x1:_0x3463c8['includes']('2nd')?0x2:0x0,_0x1f76cb=_0x1f0283['find'](_0x321e72=>_0x321e72['some'](_0x325d9c=>_0x325d9c?.['includes']('Course\x20&\x20Sec'))),_0x5179f8=_0x1f76cb?_0x1f76cb['findIndex'](_0xab1e4c=>_0xab1e4c?.['includes']('Course\x20&\x20Sec')):-1,_0x1cd241=_0x5179f8!==-1&&_0x1f76cb?_0x1f76cb[_0x5179f8+0x2]?.['trim']()??'':'';let _0x2a6131='',_0x2838db='';if(_0x1cd241){const _0xaaae13=_0x1cd241['match'](/^([A-Za-z0-9]+)-?([A-Za-z]+)?/);_0xaaae13&&(_0x2a6131=_0xaaae13[0x1]??'',_0xaaae13[0x2]&&(_0x2838db=_0xaaae13[0x2]['replace'](/^OC/i,'')));}const _0x4f5449=_0x1f0283['find'](_0x30f6b3=>_0x30f6b3['some'](_0x43f31c=>_0x43f31c?.['includes']('School\x20Year'))),_0x561f2b=_0x4f5449?_0x4f5449['findIndex'](_0x25280b=>_0x25280b?.['includes']('School\x20Year')):-1,_0x1ae039=_0x561f2b!==-1&&_0x4f5449?_0x4f5449[_0x561f2b+0x2]?.['trim']()??'':'';let _0x4a22f6=0x0;if(_0x1ae039){const _0x2acace=_0x1ae039['match'](/(\d{4})-(\d{4})/);if(_0x2acace){const _0x78ac32=(_0x2acace[0x1]??'')['slice'](0x2),_0x304a92=(_0x2acace[0x2]??'')['slice'](0x2);_0x4a22f6=parseInt(_0x78ac32+_0x304a92,0xa);}}const _0x1f7379={'faculty':_0x4e694b,'course':_0x2a6131,'section':_0x2838db,'semester':_0x297129,'sy':_0x4a22f6},_0x3f12c8=_0x1f0283['findIndex'](_0x3dc3c6=>_0x3dc3c6['some'](_0x20296f=>_0x20296f?.['trim']()==='CO\x20#'));if(_0x3f12c8===-1)throw new Error('CO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x1fa3b6=_0x1f0283[_0x3f12c8+0x1];if(!_0x1fa3b6)throw new Error('ILO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x10bb02={};let _0xaf121f=0x1,_0x18f013=0x1;for(let _0x4387ce=0x3;_0x4387ce<_0x1fa3b6['length'];_0x4387ce++){const _0x2f86dd=_0x1fa3b6[_0x4387ce];if(!_0x2f86dd)continue;const _0x3b4576='co'+_0xaf121f;if(!_0x10bb02[_0x3b4576])_0x10bb02[_0x3b4576]=[];_0x10bb02[_0x3b4576]['push']('ilo'+_0x18f013),_0x18f013++,_0x18f013>0x3&&(_0xaf121f++,_0x18f013=0x1);}const _0x1b6c5a=_0x1f0283['findIndex'](_0x1fea75=>_0x1fea75['includes']('Name\x20of\x20Students'));if(_0x1b6c5a===-1)throw new Error('Student\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x307131=_0x1f0283[_0x1b6c5a];if(!_0x307131)throw new Error('Student\x20header\x20row\x20is\x20missing');const _0x98ca0e=_0x307131['findIndex'](_0x577d28=>_0x577d28?.['includes']('Name\x20of\x20Students'));if(_0x98ca0e===-1)throw new Error('Name\x20of\x20Students\x20column\x20not\x20found\x20in\x20CSV');const _0x1b1ffe=_0x98ca0e+0x2,_0x113c8b=[];for(let _0x4338be=_0x1b6c5a+0x1;_0x4338be<_0x1f0283['length'];_0x4338be++){const _0x35311e=_0x1f0283[_0x4338be];if(!_0x35311e)continue;if(_0x35311e['some'](_0x45a4e8=>_0x45a4e8?.['toUpperCase']()['includes']('TOTAL\x20STUDENTS')||_0x45a4e8?.['toUpperCase']()['includes']('ACHIEVED\x20THE\x20MINIMUM')||_0x45a4e8?.['toUpperCase']()['includes']('INACTIVE')||_0x45a4e8?.['toUpperCase']()['includes']('AVERAGE')))continue;if(!_0x35311e[_0x98ca0e])continue;const _0x23b514=_0x35311e[_0x98ca0e]['replace'](/"/g,'')['trim'](),_0x541a4d=_0x35311e['slice'](_0x1b1ffe)['map'](_0x1fb087=>_0x1fb087===null?null:!isNaN(Number(_0x1fb087))?parseFloat(_0x1fb087):0x0);let _0x314976=0x0;const _0x58e519={};Object['entries'](_0x10bb02)['forEach'](([_0x42033c,_0x43c86c])=>{const _0x4faf31={};_0x43c86c['forEach'](_0x2ded2f=>{_0x4faf31[_0x2ded2f]=_0x541a4d[_0x314976]??0x0,_0x314976++;}),_0x58e519[_0x42033c]={'transmuted_score':_0x4faf31};}),_0x113c8b['push']({'student_name':_0x23b514,'coaep':_0x58e519});}const _0x2ddc6b=_0x1f0283['find'](_0x1e73e6=>_0x1e73e6['some'](_0x53c089=>_0x53c089?.['includes']('ACHIEVED\x20THE\x20MINIMUM'))),_0x3e51d5=_0x1f0283['find'](_0x290540=>_0x290540['some'](_0x5d43dd=>_0x5d43dd?.['includes']('AVERAGE'))),_0x575a6b=_0x2ddc6b?_0x2ddc6b['slice'](_0x1b1ffe)['map'](_0xe93274=>_0xe93274&&!isNaN(Number(_0xe93274))?parseInt(_0xe93274):0x0):[],_0x15c675=_0x3e51d5?_0x3e51d5['slice'](_0x1b1ffe)['map'](_0x58f37b=>_0x58f37b&&_0x58f37b!=='#DIV/0!'&&!isNaN(Number(_0x58f37b))?parseInt(_0x58f37b):0x0):[],_0x50ddf2={};let _0x4d034f=0x0;return Object['entries'](_0x10bb02)['forEach'](([_0x85814e,_0x57b416])=>{if(!_0x50ddf2[_0x85814e])_0x50ddf2[_0x85814e]={};_0x57b416['forEach'](_0x75c6e8=>{_0x50ddf2[_0x85814e][_0x75c6e8]={'achievedMinimum':_0x575a6b[_0x4d034f]??0x0,'average':_0x15c675[_0x4d034f]??0x0},_0x4d034f++;});}),{'assessmentData':{'classAssignment':_0x1f7379,'student':_0x113c8b,'total':_0x50ddf2}};}
30
+ function parseAssessmentCsv(_0x291d62){const {data:_0x55a86a}=_0xbd7909['parse'](_0x291d62,{'skipEmptyLines':!![]}),_0x19f6d5=_0x55a86a['filter'](_0x10c5a1=>_0x10c5a1['length']>0x0),_0x23f2c1=_0x19f6d5['find'](_0x31a573=>_0x31a573['some'](_0x3b5107=>_0x3b5107?.['includes']('Faculty'))),_0x48c409=_0x23f2c1?_0x23f2c1['findIndex'](_0x7b4438=>_0x7b4438?.['includes']('Faculty')):-1,_0x190ec5=_0x48c409!==-1&&_0x23f2c1?_0x23f2c1[_0x48c409+0x2]?.['replace'](/"/g,'')['trim']()??'':'',_0x618663=_0x19f6d5['find'](_0x18debd=>_0x18debd['some'](_0x2ff360=>_0x2ff360?.['includes']('Semester'))),_0xe8fee7=_0x618663?_0x618663['findIndex'](_0x30d73b=>_0x30d73b?.['includes']('Semester')):-1,_0x5b37fc=_0xe8fee7!==-1&&_0x618663?_0x618663[_0xe8fee7+0x2]?.['trim']()??'':'',_0x3da25a=_0x5b37fc['includes']('1st')?0x1:_0x5b37fc['includes']('2nd')?0x2:0x0,_0x1992d0=_0x19f6d5['find'](_0x33e3b0=>_0x33e3b0['some'](_0x3665eb=>_0x3665eb?.['includes']('Course\x20&\x20Sec'))),_0x249d48=_0x1992d0?_0x1992d0['findIndex'](_0x475bbb=>_0x475bbb?.['includes']('Course\x20&\x20Sec')):-1,_0x3eff66=_0x249d48!==-1&&_0x1992d0?_0x1992d0[_0x249d48+0x2]?.['trim']()??'':'';let _0x5e00f6='',_0x294d04='';if(_0x3eff66){const _0x3b9044=_0x3eff66['match'](/^([A-Za-z0-9]+)-?([A-Za-z]+)?/);_0x3b9044&&(_0x5e00f6=_0x3b9044[0x1]??'',_0x3b9044[0x2]&&(_0x294d04=_0x3b9044[0x2]['replace'](/^OC/i,'')));}const _0x58181c=_0x19f6d5['find'](_0x59eefa=>_0x59eefa['some'](_0x4e4140=>_0x4e4140?.['includes']('School\x20Year'))),_0x588fa1=_0x58181c?_0x58181c['findIndex'](_0x52035c=>_0x52035c?.['includes']('School\x20Year')):-1,_0x3c5873=_0x588fa1!==-1&&_0x58181c?_0x58181c[_0x588fa1+0x2]?.['trim']()??'':'';let _0x2cc232=0x0;if(_0x3c5873){const _0x39c785=_0x3c5873['match'](/(\d{4})-(\d{4})/);if(_0x39c785){const _0x937ffb=(_0x39c785[0x1]??'')['slice'](0x2),_0x5ba9af=(_0x39c785[0x2]??'')['slice'](0x2);_0x2cc232=parseInt(_0x937ffb+_0x5ba9af,0xa);}}const _0x3af905={'faculty':_0x190ec5,'course':_0x5e00f6,'section':_0x294d04,'semester':_0x3da25a,'sy':_0x2cc232},_0x57b7cb=_0x19f6d5['findIndex'](_0x2d0256=>_0x2d0256['some'](_0x1c6ca9=>_0x1c6ca9?.['trim']()==='CO\x20#'));if(_0x57b7cb===-1)throw new Error('CO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x3ea504=_0x19f6d5[_0x57b7cb+0x1];if(!_0x3ea504)throw new Error('ILO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x3dbc15={};let _0x1e0530=0x1,_0x3da6b4=0x1;for(let _0xa984a=0x3;_0xa984a<_0x3ea504['length'];_0xa984a++){const _0x7af23a=_0x3ea504[_0xa984a];if(!_0x7af23a)continue;const _0x16b1a2='co'+_0x1e0530;if(!_0x3dbc15[_0x16b1a2])_0x3dbc15[_0x16b1a2]=[];_0x3dbc15[_0x16b1a2]['push']('ilo'+_0x3da6b4),_0x3da6b4++,_0x3da6b4>0x3&&(_0x1e0530++,_0x3da6b4=0x1);}const _0x4fbf73=_0x19f6d5['findIndex'](_0x320df6=>_0x320df6['includes']('Name\x20of\x20Students'));if(_0x4fbf73===-1)throw new Error('Student\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x3c8aa9=_0x19f6d5[_0x4fbf73];if(!_0x3c8aa9)throw new Error('Student\x20header\x20row\x20is\x20missing');const _0x47b137=_0x3c8aa9['findIndex'](_0x242123=>_0x242123?.['includes']('Name\x20of\x20Students'));if(_0x47b137===-1)throw new Error('Name\x20of\x20Students\x20column\x20not\x20found\x20in\x20CSV');const _0x58c9b7=_0x47b137+0x2,_0x482ffc=[];for(let _0x5ae956=_0x4fbf73+0x1;_0x5ae956<_0x19f6d5['length'];_0x5ae956++){const _0x2dbfcb=_0x19f6d5[_0x5ae956];if(!_0x2dbfcb)continue;if(_0x2dbfcb['some'](_0x55bdd8=>_0x55bdd8?.['toUpperCase']()['includes']('TOTAL\x20STUDENTS')||_0x55bdd8?.['toUpperCase']()['includes']('ACHIEVED\x20THE\x20MINIMUM')||_0x55bdd8?.['toUpperCase']()['includes']('INACTIVE')||_0x55bdd8?.['toUpperCase']()['includes']('AVERAGE')))continue;if(!_0x2dbfcb[_0x47b137])continue;const _0x5c890e=_0x2dbfcb[_0x47b137]['replace'](/"/g,'')['trim'](),_0x1bd7d8=_0x2dbfcb['slice'](_0x58c9b7)['map'](_0x177a5b=>_0x177a5b===null?null:!isNaN(Number(_0x177a5b))?parseFloat(_0x177a5b):0x0);let _0xddd956=0x0;const _0x14bd1c={};Object['entries'](_0x3dbc15)['forEach'](([_0x18baac,_0x1e2d10])=>{const _0x27bd05={};_0x1e2d10['forEach'](_0x324710=>{_0x27bd05[_0x324710]=_0x1bd7d8[_0xddd956]??0x0,_0xddd956++;}),_0x14bd1c[_0x18baac]={'transmuted_score':_0x27bd05};}),_0x482ffc['push']({'student_name':_0x5c890e,'coaep':_0x14bd1c});}const _0x424006=_0x19f6d5['find'](_0x2dfe54=>_0x2dfe54['some'](_0x2c18b0=>_0x2c18b0?.['includes']('ACHIEVED\x20THE\x20MINIMUM'))),_0x2e246a=_0x19f6d5['find'](_0x44c5a4=>_0x44c5a4['some'](_0x4bd641=>_0x4bd641?.['includes']('AVERAGE'))),_0x3d0944=_0x424006?_0x424006['slice'](_0x58c9b7)['map'](_0xc773a2=>_0xc773a2&&!isNaN(Number(_0xc773a2))?parseInt(_0xc773a2):0x0):[],_0x21174d=_0x2e246a?_0x2e246a['slice'](_0x58c9b7)['map'](_0x340522=>_0x340522&&_0x340522!=='#DIV/0!'&&!isNaN(Number(_0x340522))?parseInt(_0x340522):0x0):[],_0x22f620={};let _0x5975a1=0x0;return Object['entries'](_0x3dbc15)['forEach'](([_0x53998a,_0x3e64ec])=>{if(!_0x22f620[_0x53998a])_0x22f620[_0x53998a]={};_0x3e64ec['forEach'](_0x3d859e=>{_0x22f620[_0x53998a][_0x3d859e]={'achievedMinimum':_0x3d0944[_0x5975a1]??0x0,'average':_0x21174d[_0x5975a1]??0x0},_0x5975a1++;});}),{'assessmentData':{'classAssignment':_0x3af905,'student':_0x482ffc,'total':_0x22f620}};}
31
31
 
32
- async function uploadAssessmentData(_0x599500,_0x2f8d94){try{const _0x3620d0=await convertToCSVFile(_0x2f8d94),_0x3d33d1=await _0x3620d0['text'](),_0x5c4d82=parseAssessmentCsv(_0x3d33d1),_0x1ed852=await fetch(_0x599500+'/assessment-data/upload',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x5c4d82)});if(!_0x1ed852['ok']){const _0x50b526=await _0x1ed852['json']();throw _0x50b526;}return _0x1ed852['json']();}catch(_0x110da4){throw _0x110da4;}}
32
+ async function uploadAssessmentData(_0x2884fd,_0xdb51b){try{const _0x23d319=await convertToCSVFile(_0xdb51b),_0x4cbefd=await _0x23d319['text'](),_0x268265=parseAssessmentCsv(_0x4cbefd),_0x4d1cfe=await fetch(_0x2884fd+'/assessment-data/upload',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x268265)});if(!_0x4d1cfe['ok']){const _0x166cf7=await _0x4d1cfe['json']();throw _0x166cf7;}return _0x4d1cfe['json']();}catch(_0x3b43fc){throw _0x3b43fc;}}
33
33
 
34
- async function uploadDeptFaculty(_0x490706,_0x43b365){try{const _0x340544=await convertToCSVFile(_0x43b365),_0x3b26b0=new FormData();_0x3b26b0['append']('csvFile',_0x340544);const _0xeba74b=await fetch(_0x490706+'/dept-faculties/upload',{'method':'POST','body':_0x3b26b0});if(!_0xeba74b['ok']){const _0x8bf218=await _0xeba74b['json']();throw _0x8bf218;}return _0xeba74b['json']();}catch(_0x414048){throw _0x414048;}}
34
+ async function uploadDeptFaculty(_0x644b38,_0x499b34){try{const _0x4af772=await convertToCSVFile(_0x499b34),_0x147f0=new FormData();_0x147f0['append']('csvFile',_0x4af772);const _0x2498a5=await fetch(_0x644b38+'/dept-faculties/upload',{'method':'POST','body':_0x147f0});if(!_0x2498a5['ok']){const _0x16f588=await _0x2498a5['json']();throw _0x16f588;}return _0x2498a5['json']();}catch(_0x1f3461){throw _0x1f3461;}}
35
35
 
36
- const HEADERS={'po':['program\x20outcome','po\x20statement','outcome\x20statement'],'tl':['taxonomy','level'],'pi':['performance\x20indicator'],'fc':['formative'],'sc':['summative'],'at':['assessment\x20tool','assessment\x20method','tool'],'pt':['performance\x20target','target','passing']};function getPoaepHeader(_0x9ed7f9){let _0x4a0bde={'headerIdx':-1,'poIdx':-1,'tlIdx':-1,'piIdx':-1,'fcIdx':-1,'scIdx':-1,'atIdx':-1,'ptIdx':-1};for(let _0x13c4d7=0x0;_0x13c4d7<Math['min'](_0x9ed7f9['length'],0x14);_0x13c4d7++){const _0x5b4964=(_0x9ed7f9[_0x13c4d7]??[])['map'](_0x1868dc=>_0x1868dc['toLowerCase']()['trim']()),_0x1a5852=_0x5b4964['findIndex'](_0x3975ea=>HEADERS['po']['some'](_0xf0de38=>_0x3975ea['toLowerCase']()['includes'](_0xf0de38))),_0x389f42=_0x5b4964['findIndex'](_0x3c7095=>HEADERS['tl']['some'](_0x46dc46=>_0x3c7095['toLowerCase']()['includes'](_0x46dc46))),_0x5ea7fd=_0x5b4964['findIndex'](_0x54bd32=>HEADERS['pi']['some'](_0x202ac2=>_0x54bd32['toLowerCase']()['includes'](_0x202ac2))),_0x1436ec=_0x5b4964['findIndex'](_0x2efdd1=>HEADERS['fc']['some'](_0x472256=>_0x2efdd1['toLowerCase']()['includes'](_0x472256))),_0x54bf41=_0x5b4964['findIndex'](_0x439141=>HEADERS['sc']['some'](_0x1a6d3a=>_0x439141['toLowerCase']()['includes'](_0x1a6d3a))),_0x17b55c=_0x5b4964['findIndex'](_0x3f11a8=>HEADERS['at']['some'](_0x570d8e=>_0x3f11a8['toLowerCase']()['includes'](_0x570d8e))),_0x11e415=_0x5b4964['findIndex'](_0x179599=>HEADERS['pt']['some'](_0x155bc5=>_0x179599['toLowerCase']()['includes'](_0x155bc5))),_0x31794c=[_0x1a5852,_0x389f42,_0x5ea7fd,_0x1436ec,_0x54bf41,_0x17b55c,_0x11e415]['filter'](_0x4ba646=>_0x4ba646!==-1)['length'];if(_0x31794c>=0x3){_0x4a0bde={'headerIdx':_0x13c4d7,'poIdx':_0x1a5852,'tlIdx':_0x389f42,'piIdx':_0x5ea7fd,'fcIdx':_0x1436ec,'scIdx':_0x54bf41,'atIdx':_0x17b55c,'ptIdx':_0x11e415};break;}}if(_0x4a0bde['headerIdx']===-1)throw new Error('No\x20valid\x20headers\x20found\x20in\x20POAEP\x20file.');return _0x4a0bde;}
36
+ const HEADERS={'po':['program\x20outcome','po\x20statement','outcome\x20statement'],'tl':['taxonomy','level'],'pi':['performance\x20indicator'],'fc':['formative'],'sc':['summative'],'at':['assessment\x20tool','assessment\x20method','tool'],'pt':['performance\x20target','target','passing']};function getPoaepHeader(_0x4cfa5d){let _0x4b3f2d={'headerIdx':-1,'poIdx':-1,'tlIdx':-1,'piIdx':-1,'fcIdx':-1,'scIdx':-1,'atIdx':-1,'ptIdx':-1};for(let _0x1d78a6=0x0;_0x1d78a6<Math['min'](_0x4cfa5d['length'],0x14);_0x1d78a6++){const _0x2ec345=(_0x4cfa5d[_0x1d78a6]??[])['map'](_0x242be5=>_0x242be5['toLowerCase']()['trim']()),_0x507900=_0x2ec345['findIndex'](_0x25a5b2=>HEADERS['po']['some'](_0x125400=>_0x25a5b2['toLowerCase']()['includes'](_0x125400))),_0x1e85c2=_0x2ec345['findIndex'](_0x533df7=>HEADERS['tl']['some'](_0xa5d856=>_0x533df7['toLowerCase']()['includes'](_0xa5d856))),_0x303b11=_0x2ec345['findIndex'](_0x9e8f85=>HEADERS['pi']['some'](_0x3864ef=>_0x9e8f85['toLowerCase']()['includes'](_0x3864ef))),_0x26d97c=_0x2ec345['findIndex'](_0x472fdb=>HEADERS['fc']['some'](_0x18e0af=>_0x472fdb['toLowerCase']()['includes'](_0x18e0af))),_0x3ee77e=_0x2ec345['findIndex'](_0x4e39f2=>HEADERS['sc']['some'](_0x52e6fb=>_0x4e39f2['toLowerCase']()['includes'](_0x52e6fb))),_0x3f7af5=_0x2ec345['findIndex'](_0x52c5b2=>HEADERS['at']['some'](_0x4451f6=>_0x52c5b2['toLowerCase']()['includes'](_0x4451f6))),_0x1ae3cd=_0x2ec345['findIndex'](_0x879d0a=>HEADERS['pt']['some'](_0x57c5d9=>_0x879d0a['toLowerCase']()['includes'](_0x57c5d9))),_0x275a91=[_0x507900,_0x1e85c2,_0x303b11,_0x26d97c,_0x3ee77e,_0x3f7af5,_0x1ae3cd]['filter'](_0x5bdbd7=>_0x5bdbd7!==-1)['length'];if(_0x275a91>=0x3){_0x4b3f2d={'headerIdx':_0x1d78a6,'poIdx':_0x507900,'tlIdx':_0x1e85c2,'piIdx':_0x303b11,'fcIdx':_0x26d97c,'scIdx':_0x3ee77e,'atIdx':_0x3f7af5,'ptIdx':_0x1ae3cd};break;}}if(_0x4b3f2d['headerIdx']===-1)throw new Error('No\x20valid\x20headers\x20found\x20in\x20POAEP\x20file.');return _0x4b3f2d;}
37
37
 
38
- const parseFormativeCourses=_0x56f162=>{let _0xadeb5c=_0x56f162['split'](',')['reduce']((_0x2190b4,_0x4b75e7)=>{const _0x46d0e3=_0x4b75e7['trim']();if(_0x46d0e3)_0x2190b4['push'](_0x46d0e3);return _0x2190b4;},[]);return _0xadeb5c;};
38
+ const parseFormativeCourses=_0x2d98ab=>{let _0x22d228=_0x2d98ab['split'](',')['reduce']((_0x5d4d46,_0x2bfe8d)=>{const _0xe47f39=_0x2bfe8d['trim']();if(_0xe47f39)_0x5d4d46['push'](_0xe47f39);return _0x5d4d46;},[]);return _0x22d228;};
39
39
 
40
- const parsePOAEP=_0x5ee7f1=>{try{const _0x5d5ae1=_0x5b018f['parse'](_0x5ee7f1,{'skipEmptyLines':![]})['data'],{headerIdx:_0xe3f8e,poIdx:_0x1096ff,tlIdx:_0x118652,piIdx:_0x2f67b6,fcIdx:_0x537ae5,scIdx:_0x76f6bc,atIdx:_0x2e660d,ptIdx:_0x5013c4}=getPoaepHeader(_0x5d5ae1),_0x268e4f=[];let _0x55f131={'po_desc':'','seq_no':0x0,'PerfIndicators':[]},_0x232842='',_0x509a8e='',_0x3394e0='';for(let _0x2f402a=_0xe3f8e+0x1;_0x2f402a<_0x5d5ae1['length'];_0x2f402a++){const _0x2cf607=_0x5d5ae1[_0x2f402a];if(!_0x2cf607)break;const _0x33ecae=_0x2cf607[_0x1096ff]?.['trim']()||'';_0x33ecae!==''&&(_0x55f131={'po_desc':_0x33ecae,'seq_no':_0x55f131['seq_no']+0x1,'PerfIndicators':[]},_0x268e4f['push'](_0x55f131),_0x232842='',_0x509a8e='',_0x3394e0='');if(_0x55f131['po_desc']==='')throw new Error('Invalid\x20Program\x20Outcome\x20at\x20row\x20'+_0x2f402a+'.');const _0x2ec4f3=_0x2cf607[_0x2f67b6]?.['trim']()||'';if(_0x2ec4f3==='')break;const _0x572c4e=_0x2cf607[_0x537ae5]?.['trim']()||'';if(_0x572c4e==='')throw new Error('Empty\x20Formative\x20Courses\x20at\x20row\x20'+_0x2f402a+'.');const _0x2b9345=_0x2cf607[_0x76f6bc]?.['trim']()||_0x232842;if(_0x2b9345==='')throw new Error('Empty\x20Summative\x20Course\x20at\x20row\x20'+_0x2f402a+'.');_0x232842=_0x2b9345;const _0x1f5fd6=_0x2cf607[_0x2e660d]?.['trim']()||_0x509a8e;if(_0x1f5fd6==='')throw new Error('Empty\x20Assessment\x20Tool\x20at\x20row\x20'+_0x2f402a+'.');_0x509a8e=_0x1f5fd6;const _0x3fe522=_0x2cf607[_0x5013c4]?.['trim']()||_0x3394e0;if(_0x3fe522==='')throw new Error('Empty\x20Performance\x20Target\x20at\x20row\x20'+_0x2f402a+'.');_0x3394e0=_0x3fe522;const _0x352ad0=parseFormativeCourses(_0x572c4e);if(_0x352ad0['length']===0x0)throw new Error('Invalid\x20Formative\x20Courses\x20format\x20at\x20row\x20'+_0x2f402a+'.');const _0x16edc2=performaceTarget(_0x3fe522);if(!_0x16edc2['performance_target']||!_0x16edc2['passing_score'])throw new Error('Invalid\x20Performance\x20Targets\x20format\x20at\x20row\x20'+_0x2f402a+'.');const _0xe0cea3={'pi_desc':_0x2ec4f3,'FormativeCourses':_0x352ad0['map'](_0x5e6663=>({'course_id':_0x5e6663,'cognitive_level':0x0})),'SummativeCourse':{'course_id':_0x2b9345},'AssessmentTool':{'at_desc':_0x1f5fd6},'PerformanceTargets':{'target_percent':_0x16edc2['performance_target'],'min_score':_0x16edc2['passing_score']}};_0x55f131['PerfIndicators']['push'](_0xe0cea3);}return {'success':!![],'message':'Successfully\x20parsed\x20POAEP\x20file.','data':{'POAEP':_0x268e4f}};}catch(_0x4cf3d9){return {'success':![],'error':_0x4cf3d9 instanceof Error?_0x4cf3d9['message']:_0x4cf3d9,'message':'Please\x20ensure\x20the\x20file\x20follows\x20the\x20POAEP\x20template.'};}};
40
+ const parsePOAEP=_0x8103ff=>{try{const _0x18457e=_0xbd7909['parse'](_0x8103ff,{'skipEmptyLines':![]})['data'],{headerIdx:_0x55026e,poIdx:_0xee9bce,tlIdx:_0x91929,piIdx:_0x5278f7,fcIdx:_0x3bf22a,scIdx:_0x5bed41,atIdx:_0x5d3bb5,ptIdx:_0x1df8b7}=getPoaepHeader(_0x18457e),_0x434a6b=[];let _0x1a29fe={'po_desc':'','seq_no':0x0,'PerfIndicators':[]},_0x1b2ca0='',_0x4b650b='',_0x462c2f='';for(let _0x64808d=_0x55026e+0x1;_0x64808d<_0x18457e['length'];_0x64808d++){const _0x464e84=_0x18457e[_0x64808d];if(!_0x464e84)break;const _0x113537=_0x464e84[_0xee9bce]?.['trim']()||'';_0x113537!==''&&(_0x1a29fe={'po_desc':_0x113537,'seq_no':_0x1a29fe['seq_no']+0x1,'PerfIndicators':[]},_0x434a6b['push'](_0x1a29fe),_0x1b2ca0='',_0x4b650b='',_0x462c2f='');if(_0x1a29fe['po_desc']==='')throw new Error('Invalid\x20Program\x20Outcome\x20at\x20row\x20'+_0x64808d+'.');const _0x727f3a=_0x464e84[_0x5278f7]?.['trim']()||'';if(_0x727f3a==='')break;const _0x122bf6=_0x464e84[_0x3bf22a]?.['trim']()||'';if(_0x122bf6==='')throw new Error('Empty\x20Formative\x20Courses\x20at\x20row\x20'+_0x64808d+'.');const _0x2de24a=_0x464e84[_0x5bed41]?.['trim']()||_0x1b2ca0;if(_0x2de24a==='')throw new Error('Empty\x20Summative\x20Course\x20at\x20row\x20'+_0x64808d+'.');_0x1b2ca0=_0x2de24a;const _0x47f108=_0x464e84[_0x5d3bb5]?.['trim']()||_0x4b650b;if(_0x47f108==='')throw new Error('Empty\x20Assessment\x20Tool\x20at\x20row\x20'+_0x64808d+'.');_0x4b650b=_0x47f108;const _0x3c751b=_0x464e84[_0x1df8b7]?.['trim']()||_0x462c2f;if(_0x3c751b==='')throw new Error('Empty\x20Performance\x20Target\x20at\x20row\x20'+_0x64808d+'.');_0x462c2f=_0x3c751b;const _0x8310d6=parseFormativeCourses(_0x122bf6);if(_0x8310d6['length']===0x0)throw new Error('Invalid\x20Formative\x20Courses\x20format\x20at\x20row\x20'+_0x64808d+'.');const _0x5aba01=performaceTarget(_0x3c751b);if(!_0x5aba01['performance_target']||!_0x5aba01['passing_score'])throw new Error('Invalid\x20Performance\x20Targets\x20format\x20at\x20row\x20'+_0x64808d+'.');const _0x543416={'pi_desc':_0x727f3a,'FormativeCourses':_0x8310d6['map'](_0x3cf0fc=>({'course_id':_0x3cf0fc,'cognitive_level':0x0})),'SummativeCourse':{'course_id':_0x2de24a},'AssessmentTool':{'at_desc':_0x47f108},'PerformanceTargets':{'target_percent':_0x5aba01['performance_target'],'min_score':_0x5aba01['passing_score']}};_0x1a29fe['PerfIndicators']['push'](_0x543416);}return {'success':!![],'message':'Successfully\x20parsed\x20POAEP\x20file.','data':{'POAEP':_0x434a6b}};}catch(_0x32df21){return {'success':![],'error':_0x32df21 instanceof Error?_0x32df21['message']:_0x32df21,'message':'Please\x20ensure\x20the\x20file\x20follows\x20the\x20POAEP\x20template.'};}};
41
41
 
42
- async function uploadPOAEP(_0xc29a40,_0x1e1ed4,_0x453031,_0x38949b,_0x13cf78){try{const _0x47a5b2=await convertToCSVFile(_0x1e1ed4),_0x10ed32=await _0x47a5b2['text'](),_0x4ca063=parsePOAEP(_0x10ed32),_0x526025=await fetch(_0xc29a40+'/program-outcomes/poaep/upload?curr_id='+_0x38949b+'&period_id='+_0x13cf78,{'method':'POST','headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+_0x453031},'credentials':'include','body':JSON['stringify'](_0x4ca063)});if(!_0x526025['ok']){const _0x60d351=await _0x526025['json']();throw _0x60d351;}return _0x526025['json']();}catch(_0x9e4cbb){throw _0x9e4cbb;}}
42
+ async function uploadPOAEP(_0x598edf,_0x22dc4e,_0x43a9f6,_0x52e5b3,_0x197e09){try{const _0x477fca=await convertToCSVFile(_0x22dc4e),_0x16fe5f=await _0x477fca['text'](),_0x77708e=parsePOAEP(_0x16fe5f),_0x399a13=await fetch(_0x598edf+'/program-outcomes/poaep/upload?curr_id='+_0x52e5b3+'&period_id='+_0x197e09,{'method':'POST','headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+_0x43a9f6},'credentials':'include','body':JSON['stringify'](_0x77708e)});if(!_0x399a13['ok']){const _0x52c033=await _0x399a13['json']();throw _0x52c033;}return _0x399a13['json']();}catch(_0x2449a6){throw _0x2449a6;}}
43
43
 
44
- class DataTable{['name'];['table']=[];['headers'];['validators']=[];constructor(_0x384cc1='DataTable'){this['name']=_0x384cc1,this['table']=[],this['headers']=[],this['validators']=[];}['getName'](){return this['name'];}['getHeaders'](){return this['headers'];}['getTable'](){if(this['table']['length']===0x0)return {'success':![],'message':'Datatable\x20is\x20unset.'};return {'success':!![],'message':'Successfully\x20fetched\x20datatable.','data':{'name':this['name'],'table':this['table'],'headers':this['headers']}};}async['setTable'](_0x4985ac){await this['assertInitialized']();if(_0x4985ac[0x0]['length']!==this['headers']['length'])Promise['reject'](new Error('Number\x20of\x20columns\x20does\x20not\x20match\x20number\x20of\x20headers.'));this['table']=_0x4985ac;}async['initializeTable'](_0x124417){try{let _0x4d3af2;if(_0x124417 instanceof File)_0x4d3af2=await this['fromXML'](_0x124417);else _0x4d3af2=await this['fromCSVString'](_0x124417);if(!_0x4d3af2['success']||!_0x4d3af2['data'])return _0x4d3af2;if(_0x4d3af2['data']['table']['length']===0x0)throw new Error('Cannot\x20set\x20an\x20empty\x20table.');const {table:_0x203e75,headers:_0x78d546}=_0x4d3af2['data'];return this['table']=_0x203e75,this['headers']=_0x78d546,{'success':!![],'message':'Successfully\x20set\x20table.'};}catch(_0x4f3085){return {'success':![],'message':'Error\x20setting\x20table.','error':_0x4f3085};}}async['assertInitialized'](){if(this['headers']['length']===0x0)throw {'error':'This\x20'+this['name']+'\x20is\x20not\x20initialized.','from':'ASSERT_INIT'};return Promise['resolve']('The\x20table\x20is\x20initialized.');}async['fromXML'](_0x1f7979,_0x19f603){const _0x45be0a=await convertToCSVFile(_0x1f7979,_0x19f603),_0xcfba07=await _0x45be0a['text']();return this['fromCSVString'](_0xcfba07);}async['findValue'](_0x40b1d3){await this['assertInitialized']();for(let _0x365a1d=0x0;_0x365a1d<this['table']['length'];_0x365a1d++){for(let _0x4a78d7=0x0;_0x4a78d7<this['table'][_0x365a1d]['length'];_0x4a78d7++){if(this['table'][_0x365a1d][_0x4a78d7]===_0x40b1d3)return {'row':_0x365a1d,'column':_0x4a78d7};}}return {'row':-1,'column':-1};}async['validate'](){const _0x1ed5ce=[],_0x55af0f=[];try{await this['assertInitialized']()['then'](_0x19a0ca=>{_0x1ed5ce['push'](_0x19a0ca);})['catch'](_0x4ec788=>_0x55af0f['push'](_0x4ec788));if(_0x55af0f['length']>0x0)throw 'Cannot\x20validate\x20uninitialized\x20table.';await this['validateFields'](_0x1ed5ce,_0x55af0f);const {success:_0x255ca5,message:_0x44e771,error:_0x4b76d7,data:_0x1b50c7}=await this['toJson']();if(!_0x1b50c7)throw 'Cannot\x20access\x20Json\x20Object\x20data.';_0x1ed5ce['push'](..._0x1b50c7['validMsgs']),_0x55af0f['push'](..._0x1b50c7['tableErrors']);const {jsonObj:_0x5d4b72}=_0x1b50c7;for(const _0x59771d of this['validators']){await _0x59771d['validate'](_0x1ed5ce,_0x55af0f,this,_0x5d4b72);}let _0x382663=this['name']+'\x20ran\x20its\x20validations.';if(_0x1ed5ce['length']>0x0)_0x382663+='\x20'+_0x1ed5ce['length']+'\x20validations\x20were\x20successful.';if(_0x55af0f['length']>0x0)_0x382663+='\x20'+_0x55af0f['length']+'\x20validations\x20failed.';return {'success':!![],'message':_0x382663,'data':{'validMsgs':_0x1ed5ce,'tableErrors':_0x55af0f}};}catch(_0x13f4cf){return _0x55af0f['push']({'error':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','from':this['name']['toUpperCase']()+'_VALIDATE','cause':_0x13f4cf}),{'success':![],'message':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','data':{'validMsgs':_0x1ed5ce,'tableErrors':_0x55af0f}};}}['useValidator'](_0x49860f){this['validators']['push'](_0x49860f);}}
44
+ class DataTable{['name'];['headers'];['table'];['validators']=[];constructor(_0x16da07='DataTable',_0x23c274){this['name']=_0x16da07,this['headers']=_0x23c274,this['table']=[],this['validators']=[];}['getName'](){return this['name'];}['getHeaders'](){return this['headers'];}['getTable'](){if(this['table']['length']===0x0)return {'success':![],'message':'Datatable\x20is\x20unset.'};return {'success':!![],'message':'Successfully\x20fetched\x20datatable.','data':{'name':this['name'],'headers':this['headers'],'table':this['table']}};}async['setTable'](_0x7a8972){await this['assertInitialized']();}async['initializeTable'](_0x34697f){try{let _0x4b69ef;if(_0x34697f instanceof File)_0x4b69ef=await this['fromXML'](_0x34697f);else _0x4b69ef=await this['fromCSVString'](_0x34697f);if(!_0x4b69ef['success']||!_0x4b69ef['data'])return _0x4b69ef;if(_0x4b69ef['data']['length']===0x0)throw new Error('Cannot\x20set\x20an\x20empty\x20table.');return this['table']=_0x4b69ef['data'],{'success':!![],'message':'Successfully\x20set\x20table.'};}catch(_0x33926d){return {'success':![],'message':'Error\x20setting\x20table.','error':_0x33926d};}}async['assertInitialized'](){if(this['table']['length']===0x0)Promise['reject']({'error':this['name']+'\x20is\x20unset.','from':this['name']['toUpperCase']()+'_ASSERT_INIT'});}async['fromXML'](_0x537345,_0x5f284a){const _0x19d164=await convertToCSVFile(_0x537345,_0x5f284a),_0x2817e0=await _0x19d164['text']();return this['fromCSVString'](_0x2817e0);}async['findValue'](_0x547260){let [_0x5816a1,_0x233a46]=[-1,-1];if(!_0x547260)return {'row':_0x5816a1,'column':_0x233a46};for(let _0x464868=0x0;_0x464868<this['table']['length'];_0x464868++){const _0x319cde=this['table'][_0x464868];for(let _0x235b00=0x0;_0x235b00<_0x319cde['length'];_0x235b00++){if(typeof _0x547260==='string'){if(_0x319cde[_0x235b00]===_0x547260)return {'row':_0x464868,'column':_0x235b00};}else {if(_0x319cde[_0x235b00]){if(_0x319cde[_0x235b00]===_0x547260)return {'row':_0x464868,'column':_0x235b00};}}}}return {'row':_0x5816a1,'column':_0x233a46};}async['validate'](){const _0x54d533=[],_0x46b54b=[];try{await this['assertInitialized']()['then'](()=>{_0x54d533['push']('Table\x20is\x20initialized.');})['catch'](_0xdd9a7e=>_0x46b54b['push'](_0xdd9a7e));if(_0x46b54b['length']>0x0)throw 'Cannot\x20validate\x20uninitialized\x20table.';await this['validateFields'](_0x54d533,_0x46b54b);const {success:_0x16a39c,message:_0x11ced0,error:_0x299863,data:_0xd1d452}=await this['toJson']();if(!_0xd1d452)throw 'Cannot\x20access\x20Json\x20Object\x20data.';_0x54d533['push'](..._0xd1d452['validMsgs']),_0x46b54b['push'](..._0xd1d452['tableErrors']);const {jsonObj:_0x41ebe6}=_0xd1d452;for(const _0x2d4fc6 of this['validators']){await _0x2d4fc6['validate'](_0x54d533,_0x46b54b,this,_0x41ebe6);}let _0x5ae36b=this['name']+'\x20ran\x20its\x20validations.';if(_0x54d533['length']>0x0)_0x5ae36b+='\x20'+_0x54d533['length']+'\x20validations\x20were\x20successful.';if(_0x46b54b['length']>0x0)_0x5ae36b+='\x20'+_0x46b54b['length']+'\x20validations\x20failed.';return {'success':!![],'message':_0x5ae36b,'data':{'validMsgs':_0x54d533,'tableErrors':_0x46b54b}};}catch(_0x2ca3ed){return _0x46b54b['push']({'error':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','from':this['name']['toUpperCase']()+'_VALIDATE','cause':_0x2ca3ed}),{'success':![],'message':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','data':{'validMsgs':_0x54d533,'tableErrors':_0x46b54b}};}}['useValidator'](_0x5110d6){this['validators']['push'](_0x5110d6);}}
45
45
 
46
- class DTValidator{['name'];constructor(_0x582c66){this['name']=_0x582c66;}['getName'](){return this['name'];}['report'](_0x5f2588,_0x34503e,_0x211747){if(_0x5f2588['length']>0x0)_0x211747['push'](..._0x5f2588);else _0x34503e['push'](this['name']+'\x20successfully\x20validated.');}}
46
+ class DTValidator{['name'];constructor(_0x1b5672){this['name']=_0x1b5672;}['getName'](){return this['name'];}['report'](_0x600f55,_0x35d463,_0x2a1658){if(_0x600f55['length']>0x0)_0x2a1658['push'](..._0x600f55);else _0x35d463['push'](this['name']+'\x20successfully\x20validated.');}}
47
47
 
48
- class LastILOTaxo extends DTValidator{constructor(){super('LAST_ILO_TAXO');}async['validate'](_0x2c1b08,_0x5e88ed,_0xfd86c,_0x4ef366){const _0x41e6f9=[];if(!_0x4ef366){_0x5e88ed['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x35a3b5=0x0;_0x35a3b5<_0x4ef366['co']['length'];_0x35a3b5++){const _0x5395ab=_0x4ef366['co'][_0x35a3b5];if(!_0x5395ab){const {row:_0x412357,column:_0x2d3dd2}=await _0xfd86c['findValue'](_0x35a3b5+0x1+'');_0x41e6f9['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x35a3b5+0x1)+'.','row':_0x412357,'column':_0x2d3dd2+0x1,'from':this['name']});continue;}if(!_0x5395ab?.['ilo']){const {row:_0x3c4edb,column:_0x51cfe1}=await _0xfd86c['findValue'](_0x5395ab['statement']);_0x41e6f9['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x35a3b5+0x1)+'.','row':_0x3c4edb,'column':_0x51cfe1,'from':this['name']});continue;}const _0x448a11=_0x5395ab['ilo']['length']-0x1,_0x38e224=_0x5395ab['ilo'][_0x448a11];if(!_0x38e224['taxonomy_level']){const {row:_0x483e23,column:_0x28f1d8}=await _0xfd86c['findValue'](_0x38e224['statement']);_0x41e6f9['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x35a3b5+0x1)+'\x20has\x20no\x20Taxonomy\x20Level.','row':_0x483e23,'column':_0x28f1d8,'from':this['name']});continue;}if(_0x38e224['taxonomy_level']!==_0x5395ab['taxonomy_level']){const {row:_0x321305,column:_0x5529d1}=await _0xfd86c['findValue'](_0x38e224['statement']);_0x41e6f9['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x35a3b5+0x1)+'\x20does\x20not\x20match\x20the\x20CO\x27s\x20Taxonomy\x20Level.\x20('+_0x38e224['taxonomy_level']+'\x20!==\x20'+_0x5395ab['taxonomy_level']+')','row':_0x321305,'column':_0x5529d1,'from':this['name']});}}this['report'](_0x41e6f9,_0x2c1b08,_0x5e88ed);}}
48
+ class LastILOTaxo extends DTValidator{constructor(){super('LAST_ILO_TAXO');}async['validate'](_0x271952,_0x3013f4,_0xa8ced6,_0x1a0139){const _0x2834d2=[];if(!_0x1a0139){_0x3013f4['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x4a4cca=0x0;_0x4a4cca<_0x1a0139['co']['length'];_0x4a4cca++){const _0x16e362=_0x1a0139['co'][_0x4a4cca];if(!_0x16e362){const {row:_0x311d04,column:_0x47a426}=await _0xa8ced6['findValue'](_0x4a4cca+0x1+'');_0x2834d2['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x4a4cca+0x1)+'.','row':_0x311d04,'column':_0x47a426+0x1,'from':this['name']});continue;}if(!_0x16e362?.['ilo']){const {row:_0x19a94b,column:_0x570c36}=await _0xa8ced6['findValue'](_0x16e362['statement']);_0x2834d2['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x4a4cca+0x1)+'.','row':_0x19a94b,'column':_0x570c36,'from':this['name']});continue;}const _0x1f86d6=_0x16e362['ilo']['length']-0x1,_0x173dbc=_0x16e362['ilo'][_0x1f86d6];if(!_0x173dbc['taxonomy_level']){const {row:_0x2cd01c,column:_0x2dbaa2}=await _0xa8ced6['findValue'](_0x173dbc['statement']);_0x2834d2['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x4a4cca+0x1)+'\x20has\x20no\x20Taxonomy\x20Level.','row':_0x2cd01c,'column':_0x2dbaa2,'from':this['name']});continue;}if(_0x173dbc['taxonomy_level']!==_0x16e362['taxonomy_level']){const {row:_0x73e929,column:_0x32c960}=await _0xa8ced6['findValue'](_0x173dbc['statement']);_0x2834d2['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x4a4cca+0x1)+'\x20does\x20not\x20match\x20the\x20CO\x27s\x20Taxonomy\x20Level.\x20('+_0x173dbc['taxonomy_level']+'\x20!==\x20'+_0x16e362['taxonomy_level']+')','row':_0x73e929,'column':_0x32c960,'from':this['name']});}}this['report'](_0x2834d2,_0x271952,_0x3013f4);}}
49
49
 
50
- const invalidTaxos=['remembering','understanding'];class MinCOtaxo extends DTValidator{constructor(){super('MIN_CO_TAXO');}async['validate'](_0x455b21,_0x117115,_0x318448,_0x2b2c6e){const _0x259992=[];if(!_0x2b2c6e){_0x117115['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x555841=0x0;_0x555841<_0x2b2c6e['co']['length'];_0x555841++){const _0x21ba70=_0x2b2c6e['co'][_0x555841];if(!_0x21ba70['taxonomy_level']){_0x259992['push']({'error':'No\x20taxonomy\x20level\x20for\x20CO\x20'+(_0x555841+0x1),'from':this['name']});continue;}for(const _0x440720 of invalidTaxos){if(_0x21ba70['taxonomy_level']===_0x440720){const {row:_0x3bb38d,column:_0x16896a}=await _0x318448['findValue'](_0x21ba70['statement']);let _0xb4d215={'error':'Cannot\x20have\x20CO\x20Taxonomy\x20Level\x20of\x20lower\x20than\x20Applying:\x20'+_0x21ba70['taxonomy_level']['toUpperCase'](),'from':this['name']};(_0x3bb38d!==-1||_0x16896a!==-1)&&(_0xb4d215={..._0xb4d215,'row':_0x3bb38d,'column':_0x16896a}),_0x259992['push'](_0xb4d215);}}}this['report'](_0x259992,_0x455b21,_0x117115);return;}}
50
+ const whitelist=['applying','analyzing','evaluating','creating'];class MinCOtaxo extends DTValidator{constructor(){super('MIN_CO_TAXO');}async['validate'](_0x463ba7,_0x2e2912,_0x31c854,_0x5c7e3c){const _0x1bceef=[];if(!_0x5c7e3c){_0x2e2912['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x108e5c=0x0;_0x108e5c<_0x5c7e3c['co']['length'];_0x108e5c++){const _0x191bd7=_0x5c7e3c['co'][_0x108e5c];if(!_0x191bd7['taxonomy_level']){_0x1bceef['push']({'error':'No\x20taxonomy\x20level\x20for\x20CO\x20'+(_0x108e5c+0x1),'from':this['name']});continue;}if(!whitelist['includes'](_0x191bd7['taxonomy_level'])){const {row:_0x3e52a5,column:_0x48d26a}=await _0x31c854['findValue'](_0x191bd7['statement']);let _0x23a897={'error':'Cannot\x20have\x20CO\x20Taxonomy\x20Level\x20of\x20lower\x20than\x20Applying:\x20'+_0x191bd7['taxonomy_level']['toUpperCase'](),'from':this['name']};(_0x3e52a5!==-1||_0x48d26a!==-1)&&(_0x23a897['row']=_0x3e52a5,_0x23a897['column']=_0x48d26a),_0x1bceef['push'](_0x23a897);}}this['report'](_0x1bceef,_0x463ba7,_0x2e2912);return;}}
51
51
 
52
- const taxoOrder={'remembering':0x1,'understanding':0x2,'applying':0x3,'analyzing':0x4,'evaluating':0x5,'creating':0x6};class ILOTaxoOrder extends DTValidator{constructor(){super('ILO_TAXO_ORDER');}async['validate'](_0x375481,_0x4ab706,_0x2c515d,_0xbe87a8){const _0x439bcd=[];if(!_0xbe87a8){_0x4ab706['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x5df830=0x0;_0x5df830<_0xbe87a8['co']['length'];_0x5df830++){const _0xe292c6=_0xbe87a8['co'][_0x5df830];if(!_0xe292c6){const {row:_0x406d00,column:_0x3d7685}=await _0x2c515d['findValue'](_0x5df830+0x1+'');_0x439bcd['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x5df830+0x1)+'.','row':_0x406d00,'column':_0x3d7685+0x1,'from':this['name']});continue;}if(!_0xe292c6?.['ilo']){const {row:_0x2b1961,column:_0x4659e9}=await _0x2c515d['findValue'](_0xe292c6['statement']);_0x439bcd['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x5df830+0x1)+'.','row':_0x2b1961,'column':_0x4659e9,'from':this['name']});continue;}const _0x2a46d1=await _0x2c515d['findValue'](_0xe292c6['ilo'][0x0]['statement']),_0x2cd06b=_0xe292c6['ilo']['map'](_0x50637f=>taxoOrder[_0x50637f['taxonomy_level']]);let _0x450262=_0x2cd06b[0x0];for(let _0x5e3d3c=0x1;_0x5e3d3c<_0x2cd06b['length'];_0x5e3d3c++){if(_0x2cd06b[_0x5e3d3c]<_0x450262){_0x439bcd['push']({'error':'Under\x20CO\x20'+(_0x5df830+0x1)+',\x20ILO\x20'+(_0x5e3d3c+0x1)+'\x20should\x20not\x20have\x20a\x20taxonomy\x20level\x20lower\x20than\x20ILO\x20'+_0x5e3d3c+'\x27s.','row':_0x2a46d1['row'],'column':_0x2a46d1['column']+_0x5e3d3c,'from':this['name']});continue;}_0x450262=_0x2cd06b[_0x5e3d3c];}}this['report'](_0x439bcd,_0x375481,_0x4ab706);}}
52
+ const taxoOrder={'remembering':0x1,'understanding':0x2,'applying':0x3,'analyzing':0x4,'evaluating':0x5,'creating':0x6};class ILOTaxoOrder extends DTValidator{constructor(){super('ILO_TAXO_ORDER');}async['validate'](_0x33f9e1,_0x3ea3cf,_0xea50b6,_0x26c2e1){const _0x3326d3=[];if(!_0x26c2e1){_0x3ea3cf['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x68b936=0x0;_0x68b936<_0x26c2e1['co']['length'];_0x68b936++){const _0x42117c=_0x26c2e1['co'][_0x68b936];if(!_0x42117c){const {row:_0x3a56b3,column:_0x48e8e0}=await _0xea50b6['findValue'](_0x68b936+0x1+'');_0x3326d3['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x68b936+0x1)+'.','row':_0x3a56b3,'column':_0x48e8e0+0x1,'from':this['name']});continue;}if(!_0x42117c?.['ilo']){const {row:_0x3e56c1,column:_0x79f598}=await _0xea50b6['findValue'](_0x42117c['statement']);_0x3326d3['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x68b936+0x1)+'.','row':_0x3e56c1,'column':_0x79f598,'from':this['name']});continue;}const _0xe5d065=await _0xea50b6['findValue'](_0x42117c['ilo'][0x0]['statement']),_0x3166d9=_0x42117c['ilo']['map'](_0x3f81d2=>taxoOrder[_0x3f81d2['taxonomy_level']]);let _0x10ec04=_0x3166d9[0x0];for(let _0x5e9b5f=0x1;_0x5e9b5f<_0x3166d9['length'];_0x5e9b5f++){if(_0x3166d9[_0x5e9b5f]<_0x10ec04){_0x3326d3['push']({'error':'Under\x20CO\x20'+(_0x68b936+0x1)+',\x20ILO\x20'+(_0x5e9b5f+0x1)+'\x20should\x20not\x20have\x20a\x20taxonomy\x20level\x20lower\x20than\x20ILO\x20'+_0x5e9b5f+'\x27s.','row':_0xe5d065['row'],'column':_0xe5d065['column']+_0x5e9b5f,'from':this['name']});continue;}_0x10ec04=_0x3166d9[_0x5e9b5f];}}this['report'](_0x3326d3,_0x33f9e1,_0x3ea3cf);}}
53
53
 
54
- class CoaepDT extends DataTable{['faculty']=null;['course']=null;['sy']=null;['semester']=null;constructor(){super('CoaepDT'),this['useValidator'](new MinCOtaxo()),this['useValidator'](new LastILOTaxo()),this['useValidator'](new ILOTaxoOrder());}async['validateFields'](_0x3cc85d,_0xab9bb7){const _0x353998=[];let _0x23541a=null,_0x5629a8=null;for(let _0x186107=0x0;_0x186107<this['table']['length'];_0x186107++){const _0x2dcf6b=[],_0x38face=this['table'][_0x186107],_0x32485a=_0x38face[0x0]||_0x23541a,_0x3816e1=_0x38face[0x1]||_0x5629a8,_0x42b62d=_0x38face[0x2],_0x163f44=_0x38face[0x3],_0x59d5e9=_0x38face[0x4];if(!_0x32485a)_0x2dcf6b['push'](0x0);if(!_0x3816e1)_0x2dcf6b['push'](0x1);if(!_0x42b62d)_0x2dcf6b['push'](0x2);if(!_0x163f44)_0x2dcf6b['push'](0x3);if(!_0x59d5e9)_0x2dcf6b['push'](0x4);if(_0x5629a8!==_0x3816e1)this['validateObjectiveGrammar'](_0x3816e1,_0x186107,0x1,_0xab9bb7);_0x23541a=_0x32485a,_0x5629a8=_0x3816e1;for(const _0x58f473 of _0x2dcf6b){_0x353998['push']({'error':'Missing\x20field:\x20'+this['headers'][_0x58f473],'row':_0x186107,'column':_0x58f473});}if(_0x42b62d)this['validateObjectiveGrammar'](_0x42b62d,_0x186107,0x2,_0xab9bb7);}if(_0x353998['length']>0x0)_0xab9bb7['push'](..._0x353998);else _0x3cc85d['push'](this['name']+'\x20successfully\x20validated\x20all\x20fields.');}async['fromCSVString'](_0x3ad7f2){try{const _0x54b7cf={'name':this['name'],'table':[],'headers':[],'types':[]},_0x341155=_0x5b018f['parse'](_0x3ad7f2,{'skipEmptyLines':![]})['data'];_0x54b7cf['headers']=['No.','Course\x20Outcome\x20Statement','Intended\x20Learning\x20Outcome','Assessment\x20Tool','Performance\x20Target'];const {headerRowIndex:_0xfc0a3b,coIdx:_0x59b49b,iloIdx:_0x38f4f7,assessToolIdx:_0x3d84a8,perfTargetIdx:_0x2c6f94}=getCoaepHeader(_0x341155);if(_0xfc0a3b===-0x1)throw new Error('Could\x20not\x20auto-detect\x20header\x20row.\x20Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.');_0x341155['forEach'](_0x3c2c4a=>{const _0x1daee7=_0x3c2c4a['indexOf']('Name\x20of\x20Faculty:'),_0x35c053=_0x3c2c4a['indexOf']('School\x20Year'),_0x3c2d74=_0x3c2c4a['indexOf']('Course:'),_0x52fdde=_0x3c2c4a['indexOf']('Semester');_0x1daee7!==-0x1&&(this['faculty']=_0x3c2c4a[_0x1daee7+0x1]?.['trim']()||this['faculty']);_0x35c053!==-0x1&&(this['sy']=_0x3c2c4a[_0x35c053+0x1]?.['trim']()||this['sy']);_0x3c2d74!==-0x1&&(this['course']=_0x3c2c4a[_0x3c2d74+0x1]?.['trim']()||this['course']);if(_0x52fdde!==-0x1){const _0x264834=_0x3c2c4a[_0x52fdde+0x1]?.['trim']()||'',_0x2f00a4=_0x264834['match'](/\d+/)?.[0x0];this['semester']=_0x2f00a4?parseInt(_0x2f00a4,0xa):this['semester'];}});for(let _0x35c68f=0x0;_0x35c68f<=_0x341155['length'];_0x35c68f++){const _0x2bf866=_0x341155[_0x35c68f];if(!_0x2bf866)break;if(_0x35c68f<=_0xfc0a3b)continue;let _0x56242b=_0x2bf866[_0x59b49b-0x1]?.['trim']()||'',_0x51c7d1=_0x2bf866[_0x59b49b]?.['trim']()||'';/^\d+$/['test'](_0x2bf866[_0x59b49b]?.['trim']()||'')&&(_0x56242b=_0x2bf866[_0x59b49b]?.['trim']()||'',_0x51c7d1=_0x2bf866[_0x59b49b+0x1]?.['trim']()||'');if(_0x2bf866[_0x38f4f7])_0x54b7cf['table']['push']([_0x56242b,_0x51c7d1,_0x2bf866[_0x38f4f7]?.['trim']()||'',_0x2bf866[_0x3d84a8]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0x2bf866[_0x2c6f94]?.['replace'](/\s+/g,'\x20')['trim']()||'']);else break;}return {'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable.','data':_0x54b7cf};}catch(_0x3bd275){return {'success':![],'message':'Error\x20parsing\x20COAEP\x20table','error':_0x3bd275};}}async['toJson'](){const _0xfe268e=[],_0x529528=[],_0xaee6a9='COAEPDT_TO_JSON';try{await this['assertInitialized']();const _0x10e694={'faculty':this['faculty'],'course':this['course'],'sy':this['sy'],'semester':this['semester'],'co':[]};let _0x576877=null,_0x3f5852='',_0x5aed69='';this['table']['forEach']((_0x133979,_0x40b22e)=>{if(_0x40b22e===0x0&&!_0x133979[0x1])_0x529528['push']({'error':'Cannot\x20have\x20empty\x20CO\x20Statement\x20in\x20first\x20row.','row':0x0,'column':0x1,'from':_0xaee6a9});_0x133979[0x1]&&(_0x3f5852='',_0x5aed69='');const _0x1d7dbb=_0x133979[0x1],_0xca4614=_0x133979[0x2],_0x21dc18=_0x133979[0x3]||_0x3f5852,_0x550d36=_0x133979[0x4]||_0x5aed69;if(!_0xca4614)_0x529528['push']({'error':'Cannot\x20have\x20empty\x20ILO.','row':0x1,'column':0x2,'from':_0xaee6a9});if(!_0x21dc18)_0x529528['push']({'error':'Cannot\x20have\x20empty\x20Assessment\x20Tool.','row':_0x40b22e,'column':0x3,'from':_0xaee6a9});if(!_0x550d36)_0x529528['push']({'error':'Cannot\x20have\x20empty\x20Performance\x20Target.','row':_0x40b22e,'column':0x4,'from':_0xaee6a9});if(_0x133979[0x1]){const {cognitive_level:_0x323cdf,taxonomy_level:_0x3b956e,verb:_0x223c53}=extractFromObjective(_0x1d7dbb),_0x27dd3c={'statement':_0x1d7dbb,'ilo':[],'taxonomy_level':_0x3b956e,'cognitive_level':_0x323cdf,'verb':_0x223c53};_0x576877=_0x27dd3c,_0x10e694['co']['push'](_0x27dd3c);}const {cognitive_level:_0x44db7c,taxonomy_level:_0x4a4ae4,verb:_0x579c14}=extractFromObjective(_0xca4614),{performance_target:_0x5e667,passing_score:_0x2bcff4}=performaceTarget(_0x550d36),_0x43c99b={'statement':_0xca4614,'assessment_tool':_0x21dc18,'performance_target':_0x5e667,'passing_score':_0x2bcff4,'cognitive_level':_0x44db7c,'taxonomy_level':_0x4a4ae4,'verb':_0x579c14};_0x576877['ilo']['push'](_0x43c99b);});if(_0x529528['length'])return _0x529528['push']({'error':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','from':_0xaee6a9}),{'success':![],'message':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','data':{'jsonObj':_0x10e694,'validMsgs':_0xfe268e,'tableErrors':_0x529528}};return _0xfe268e['push']('Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON.'),{'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON','data':{'jsonObj':_0x10e694,'validMsgs':_0xfe268e,'tableErrors':_0x529528}};}catch(_0x36c058){return _0x529528['push']({'error':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','from':_0xaee6a9}),{'success':![],'message':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','error':_0x36c058,'data':{'jsonObj':null,'tableErrors':_0x529528}};}}['validateObjectiveGrammar'](_0x5c2905,_0x329490,_0x2fea9e,_0x698871){const {cognitive_level:_0x20f830,taxonomy_level:_0x106331,verb:_0x57200d}=extractFromObjective(_0x5c2905),_0x46b63a=[];if(!_0x20f830)_0x46b63a['push']('cognitive_level');if(!_0x106331)_0x46b63a['push']('taxonomy_level');if(!_0x57200d)_0x46b63a['push']('verb');if(!_0x46b63a['length'])return;_0x698871['push']({'error':'Cannot\x20find\x20fields:\x20'+_0x46b63a['join'](',\x20')+'.','row':_0x329490,'column':_0x2fea9e,'from':this['name']['toUpperCase']()+'_OBJ_GRAMMAR'});}}
54
+ const minPerfTarget=0x32,minPassScore=0x32;class MinPerfTarget extends DTValidator{constructor(){super('MIN_PERF_TARGET');}async['validate'](_0x529569,_0x4df37f,_0x24fa9a,_0x113293){const {success:_0xd876c3,data:_0x2cbf22}=_0x24fa9a['getTable'](),_0x3b5f1a=[];if(!_0xd876c3){_0x3b5f1a['push']({'error':'Failed\x20to\x20access\x20table\x20data.','from':this['name']});return;}const {table:_0x3899d2}=_0x2cbf22;for(let _0xee9ebe=0x0;_0xee9ebe<_0x3899d2['length'];_0xee9ebe++){const _0x59d04e=_0x3899d2[_0xee9ebe],[_0x2890ff,_0x433552]=_0x59d04e[0x4];if(!_0x2890ff)_0x3b5f1a['push']({'error':'Performance\x20target\x20is\x20required.','row':_0xee9ebe,'column':0x4,'from':this['name']});else _0x2890ff<minPerfTarget&&_0x3b5f1a['push']({'error':'Performance\x20target\x20must\x20be\x20at\x20least\x20'+minPerfTarget+'.','row':_0xee9ebe,'column':0x4,'from':this['name']});if(!_0x433552)_0x3b5f1a['push']({'error':'Pass\x20score\x20is\x20required.','row':_0xee9ebe,'column':0x6,'from':this['name']});else _0x433552<minPassScore&&_0x3b5f1a['push']({'error':'Pass\x20score\x20must\x20be\x20at\x20least\x20'+minPassScore+'.','row':_0xee9ebe,'column':0x6,'from':this['name']});}this['report'](_0x3b5f1a,_0x529569,_0x4df37f);}}
55
55
 
56
- class Client{['BASE_URL'];constructor(_0x93391e){this['BASE_URL']=_0x93391e;}['Parser'](){return {'curriculum':async _0x24ef12=>{const _0x349283=await uploadCurriculum(this['BASE_URL'],_0x24ef12);return _0x349283;},'courseOffering':async _0x46c932=>{const _0x180dc8=await uploadCourseOffering(this['BASE_URL'],_0x46c932);return _0x180dc8;},'coaep':async(_0x46bb46,_0x9af493)=>{const _0x2c6f2e=await uploadCOAEP(this['BASE_URL'],_0x46bb46,_0x9af493);return _0x2c6f2e;},'enrolledStudent':async _0x159a54=>{const _0x28a5f3=await uploadEnrolledStudent(this['BASE_URL'],_0x159a54);return _0x28a5f3;},'classlist':async(_0x1a62be,_0x1562b4,_0x1cec8c)=>{const _0x4a1196=await uploadClassList(this['BASE_URL'],_0x1a62be,_0x1562b4,_0x1cec8c);return _0x4a1196;},'assessmentData':async _0x2176d5=>{const _0x554b29=await uploadAssessmentData(this['BASE_URL'],_0x2176d5);return _0x554b29;},'deptFaculty':async _0x5dc6fc=>{const _0x2abb2e=await uploadDeptFaculty(this['BASE_URL'],_0x5dc6fc);return _0x2abb2e;},'poaep':async(_0x19fb2a,_0x1ef332,_0x43aa59,_0x5476bf)=>{const _0x4787a8=await uploadPOAEP(this['BASE_URL'],_0x19fb2a,_0x1ef332,_0x43aa59,_0x5476bf);return _0x4787a8;},'CoaepDT':CoaepDT};}}
56
+ class CoaepDT extends DataTable{['faculty']=null;['course']=null;['sy']=null;['semester']=null;constructor(){super('CoaepDT',['No.','Course\x20Outcome\x20Statement','Intended\x20Learning\x20Outcome','Assessment\x20Tool','Performance\x20Target']),this['useValidator'](new MinCOtaxo()),this['useValidator'](new LastILOTaxo()),this['useValidator'](new ILOTaxoOrder()),this['useValidator'](new MinPerfTarget());}async['validateFields'](_0x5986dc,_0xea77d3){const _0x1d7a51=[];let _0x8f3c0c=null,_0x158f7f=null;for(let _0x2d165d=0x0;_0x2d165d<this['table']['length'];_0x2d165d++){const _0x1125de=[],_0x4dd25a=this['table'][_0x2d165d],_0x33e932=_0x4dd25a[0x0]||_0x8f3c0c,_0x25cf3a=_0x4dd25a[0x1]||_0x158f7f,_0x4d41dd=_0x4dd25a[0x2],_0x589970=_0x4dd25a[0x3],_0x101119=_0x4dd25a[0x4];if(!_0x33e932)_0x1125de['push'](0x0);if(!_0x25cf3a)_0x1125de['push'](0x1);if(!_0x4d41dd)_0x1125de['push'](0x2);if(!_0x589970)_0x1125de['push'](0x3);if(!_0x101119)_0x1125de['push'](0x4);if(_0x158f7f!==_0x25cf3a)this['validateObjectiveGrammar'](_0x25cf3a,_0x2d165d,0x1,_0xea77d3);_0x8f3c0c=_0x33e932,_0x158f7f=_0x25cf3a;for(const _0x1ca0fb of _0x1125de){_0x1d7a51['push']({'error':'Missing\x20field:\x20'+this['headers'][_0x1ca0fb],'row':_0x2d165d,'column':_0x1ca0fb});}if(_0x4d41dd)this['validateObjectiveGrammar'](_0x4d41dd,_0x2d165d,0x2,_0xea77d3);}if(_0x1d7a51['length']>0x0)_0xea77d3['push'](..._0x1d7a51);else _0x5986dc['push'](this['name']+'\x20successfully\x20validated\x20all\x20fields.');}async['fromCSVString'](_0x389a0f){try{const _0x52aa9e=[],_0x4f5a76=_0xbd7909['parse'](_0x389a0f,{'skipEmptyLines':![]})['data'],{headerRowIndex:_0x286385,coIdx:_0x763876,iloIdx:_0x2549b7,assessToolIdx:_0x391f54,perfTargetIdx:_0x5e5343}=getCoaepHeader(_0x4f5a76);if(_0x286385===-0x1)throw new Error('Could\x20not\x20auto-detect\x20header\x20row.\x20Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.');_0x4f5a76['forEach'](_0x31f3e5=>{const _0x418c72=_0x31f3e5['indexOf']('Name\x20of\x20Faculty:'),_0x2ae9e1=_0x31f3e5['indexOf']('School\x20Year'),_0xd48eed=_0x31f3e5['indexOf']('Course:'),_0x365274=_0x31f3e5['indexOf']('Semester');_0x418c72!==-0x1&&(this['faculty']=_0x31f3e5[_0x418c72+0x1]?.['trim']()||this['faculty']);_0x2ae9e1!==-0x1&&(this['sy']=_0x31f3e5[_0x2ae9e1+0x1]?.['trim']()||this['sy']);_0xd48eed!==-0x1&&(this['course']=_0x31f3e5[_0xd48eed+0x1]?.['trim']()||this['course']);if(_0x365274!==-0x1){const _0x18a22c=_0x31f3e5[_0x365274+0x1]?.['trim']()||'',_0x2fddec=_0x18a22c['match'](/\d+/)?.[0x0];this['semester']=_0x2fddec?parseInt(_0x2fddec,0xa):this['semester'];}});for(let _0x34a433=0x0;_0x34a433<=_0x4f5a76['length'];_0x34a433++){const _0x31da17=_0x4f5a76[_0x34a433];if(!_0x31da17)break;if(_0x34a433<=_0x286385)continue;let _0x1d26e7=_0x31da17[_0x763876-0x1]?.['trim']()||'',_0x2c94f9=_0x31da17[_0x763876]?.['trim']()||'';/^\d+$/['test'](_0x31da17[_0x763876]?.['trim']()||'')&&(_0x1d26e7=_0x31da17[_0x763876]?.['trim']()||'',_0x2c94f9=_0x31da17[_0x763876+0x1]?.['trim']()||'');const _0x172660=_0x31da17[_0x5e5343]?.['replace'](/\s+/g,'\x20')['trim']()||'',{performance_target:_0x23514c,passing_score:_0x2166db}=performaceTarget(_0x172660);if(_0x31da17[_0x2549b7])_0x52aa9e['push']([_0x1d26e7,_0x2c94f9,_0x31da17[_0x2549b7]?.['trim']()||'',_0x31da17[_0x391f54]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',[_0x23514c,_0x2166db]]);else break;}return {'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable.','data':_0x52aa9e};}catch(_0x35abf2){return {'success':![],'message':'Error\x20parsing\x20COAEP\x20table','error':_0x35abf2};}}async['toJson'](){const _0x2e55cd=[],_0x5efcf2=[],_0x57de83='COAEPDT_TO_JSON';try{await this['assertInitialized']();const _0x10b339={'faculty':this['faculty'],'course':this['course'],'sy':this['sy'],'semester':this['semester'],'co':[]};let _0x3b0b0b=null,_0x3576bb='',_0x468d7e=[null,null];this['table']['forEach']((_0x13ea68,_0xf4a1a9)=>{if(_0xf4a1a9===0x0&&!_0x13ea68[0x1])_0x5efcf2['push']({'error':'Cannot\x20have\x20empty\x20CO\x20Statement\x20in\x20first\x20row.','row':0x0,'column':0x1,'from':_0x57de83});_0x13ea68[0x1]&&(_0x3576bb='',_0x468d7e=[null,null]);const _0x167fdb=_0x13ea68[0x1],_0x491f33=_0x13ea68[0x2],_0x19579b=_0x13ea68[0x3]||_0x3576bb,_0x3d1cb8=_0x13ea68[0x4]||_0x468d7e;if(!_0x491f33)_0x5efcf2['push']({'error':'Cannot\x20have\x20empty\x20ILO.','row':0x1,'column':0x2,'from':_0x57de83});if(!_0x19579b)_0x5efcf2['push']({'error':'Cannot\x20have\x20empty\x20Assessment\x20Tool.','row':_0xf4a1a9,'column':0x3,'from':_0x57de83});if(!_0x3d1cb8)_0x5efcf2['push']({'error':'Cannot\x20have\x20empty\x20Performance\x20Target.','row':_0xf4a1a9,'column':0x4,'from':_0x57de83});if(_0x13ea68[0x1]){const {cognitive_level:_0x4dfc0,taxonomy_level:_0x3660ef,verb:_0x1012b8}=extractFromObjective(_0x167fdb),_0x33d65b={'statement':_0x167fdb,'ilo':[],'taxonomy_level':_0x3660ef,'cognitive_level':_0x4dfc0,'verb':_0x1012b8};_0x3b0b0b=_0x33d65b,_0x10b339['co']['push'](_0x33d65b);}const {cognitive_level:_0x23c8e2,taxonomy_level:_0x566487,verb:_0x4601b5}=extractFromObjective(_0x491f33),[_0x20bfd4,_0x20e29f]=_0x3d1cb8,_0x3b0e02={'statement':_0x491f33,'assessment_tool':_0x19579b,'performance_target':_0x20bfd4,'passing_score':_0x20e29f,'cognitive_level':_0x23c8e2,'taxonomy_level':_0x566487,'verb':_0x4601b5};_0x3b0b0b['ilo']['push'](_0x3b0e02);});if(_0x5efcf2['length'])return _0x5efcf2['push']({'error':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','from':_0x57de83}),{'success':![],'message':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','data':{'jsonObj':_0x10b339,'validMsgs':_0x2e55cd,'tableErrors':_0x5efcf2}};return _0x2e55cd['push']('Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON.'),{'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON','data':{'jsonObj':_0x10b339,'validMsgs':_0x2e55cd,'tableErrors':_0x5efcf2}};}catch(_0x51ecd0){return _0x5efcf2['push']({'error':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','from':_0x57de83}),{'success':![],'message':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','error':_0x51ecd0,'data':{'jsonObj':null,'tableErrors':_0x5efcf2}};}}['validateObjectiveGrammar'](_0x4d7cca,_0x2fd5c2,_0x19b0d1,_0x1c3828){const {cognitive_level:_0x2f2bc4,taxonomy_level:_0x2f46db,verb:_0x569453}=extractFromObjective(_0x4d7cca),_0xc6ec5e=[];if(!_0x2f2bc4)_0xc6ec5e['push']('cognitive_level');if(!_0x2f46db)_0xc6ec5e['push']('taxonomy_level');if(!_0x569453)_0xc6ec5e['push']('verb');if(!_0xc6ec5e['length'])return;_0x1c3828['push']({'error':'Cannot\x20find\x20fields:\x20'+_0xc6ec5e['join'](',\x20')+'.','row':_0x2fd5c2,'column':_0x19b0d1,'from':this['name']['toUpperCase']()+'_OBJ_GRAMMAR'});}}
57
+
58
+ class Client{['BASE_URL'];constructor(_0x4deaae){this['BASE_URL']=_0x4deaae;}['Parser'](){return {'curriculum':async _0x4815a5=>{const _0x5833a7=await uploadCurriculum(this['BASE_URL'],_0x4815a5);return _0x5833a7;},'courseOffering':async _0x4cf8d0=>{const _0x256345=await uploadCourseOffering(this['BASE_URL'],_0x4cf8d0);return _0x256345;},'coaep':async(_0x1f620b,_0x633e4a)=>{const _0x57d6e4=await uploadCOAEP(this['BASE_URL'],_0x1f620b,_0x633e4a);return _0x57d6e4;},'enrolledStudent':async _0x527a6c=>{const _0x251ee7=await uploadEnrolledStudent(this['BASE_URL'],_0x527a6c);return _0x251ee7;},'classlist':async(_0x43e1d5,_0x186895,_0x408198)=>{const _0x5a7fa2=await uploadClassList(this['BASE_URL'],_0x43e1d5,_0x186895,_0x408198);return _0x5a7fa2;},'assessmentData':async _0x4808b5=>{const _0x12f4a5=await uploadAssessmentData(this['BASE_URL'],_0x4808b5);return _0x12f4a5;},'deptFaculty':async _0x4fbd8c=>{const _0x573a6f=await uploadDeptFaculty(this['BASE_URL'],_0x4fbd8c);return _0x573a6f;},'poaep':async(_0x5e39d2,_0x3453d5,_0x702b80,_0x48384d)=>{const _0xe1167c=await uploadPOAEP(this['BASE_URL'],_0x5e39d2,_0x3453d5,_0x702b80,_0x48384d);return _0xe1167c;},'CoaepDT':CoaepDT};}}
57
59
 
58
60
  export { Client as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@obe-loms/coms-parser",
3
- "version": "1.6.2",
3
+ "version": "1.6.4",
4
4
  "license": "ISC",
5
5
  "dependencies": {
6
6
  "papaparse": "^5.5.3",
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export type Taxonomy = "remembering" | "understanding" | "applying" | "analyzing" | "evaluating" | "creating";
2
+ export default Taxonomy;
package/types/poaep.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ export interface POAEP {
2
+ po: PO[];
3
+ }
1
4
  export interface PO {
2
5
  po_desc: string;
3
6
  seq_no: number;