@obe-loms/coms-parser 1.6.0 → 1.6.2

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.
@@ -7,11 +7,26 @@ export declare class CoaepDT extends DataTable<COAEP> {
7
7
  course: string | null;
8
8
  sy: string | null;
9
9
  semester: number | null;
10
+ /**
11
+ * Initializes the DataTable for COAEP.
12
+ * Also sets up custom validators for the DataTable.
13
+ */
10
14
  constructor();
15
+ validateFields(validMsgs: string[], tableErrors: DataTableException[]): Promise<void>;
11
16
  fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo>>;
12
17
  toJson(): Promise<ParserResult<{
13
18
  jsonObj: COAEP | null;
14
19
  validMsgs: string[];
15
20
  tableErrors: DataTableException[];
16
21
  }>>;
22
+ /**
23
+ * Local helper function that to validate grammar of a CO/ILO statement.
24
+ * Checks if the statement follows grammar to fetch the fields: cognitive level, taxonomy level, verb
25
+ *
26
+ * @param {string} stmt - The objective statement to validate.
27
+ * @param {number} row - The row of the statement in the table.
28
+ * @param {number} column - The column of the statement in the table.
29
+ * @param {DataTableException[]} tableErrors - The array of error messages to append to.
30
+ */
31
+ validateObjectiveGrammar(stmt: string, row: number, column: number, tableErrors: DataTableException[]): void;
17
32
  }
@@ -1,7 +1,32 @@
1
1
  import DataTableException from "../types/DataTableException";
2
2
  export declare abstract class DTValidator<DT, OBJ> {
3
3
  protected name: string;
4
+ /**
5
+ * Constructor for the DTValidator class.
6
+ *
7
+ * @param {string} name - The name of the validator.
8
+ */
4
9
  constructor(name: string);
10
+ /**
11
+ * @returns The name of the validator.
12
+ */
5
13
  getName(): string;
14
+ /**
15
+ * Helper function that updates the validMsgs and tableErrors arrays with a given localError array.
16
+ *
17
+ * @param localErrors - Local DataTableException throws of the validate method.
18
+ * @param validMsgs - String array to append successful validation messages to.
19
+ * @param tableErrors - DataTableException array to append error messages to.
20
+ */
21
+ report(localErrors: DataTableException[], validMsgs: string[], tableErrors: DataTableException[]): void;
22
+ /**
23
+ * Method to validate the DataTable and its JSON object conversion.
24
+ *
25
+ * @param validMsgs - An array of strings to append successful validation messages to.
26
+ * @param tableErrors - An array of DataTableException objects to append error messages to.
27
+ * @param dataTable - The DataTable object to validate.
28
+ * @param jsonObj - The associated JSON object to validate.
29
+ * @returns A Promise that resolves when the validation is complete.
30
+ */
6
31
  abstract validate(validMsgs: string[], tableErrors: DataTableException[], dataTable: DT, jsonObj: OBJ): Promise<void>;
7
32
  }
@@ -11,27 +11,120 @@ export declare abstract class DataTable<T> {
11
11
  protected table: (string | null)[][];
12
12
  protected headers: string[];
13
13
  protected validators: DTValidator<this, T>[];
14
- constructor();
14
+ /**
15
+ * Creates a new DataTable, initializes default values.
16
+ * If no name is given, the name defaults to "DataTable".
17
+ *
18
+ * @param {string} _name - The name of the DataTable. Defaults to "DataTable".
19
+ */
20
+ constructor(_name?: string);
21
+ /**
22
+ * Returns the name of the DataTable.
23
+ * @returns string
24
+ */
15
25
  getName(): string;
26
+ /**
27
+ * Returns the header names of the DataTable.
28
+ * @returns array of strings
29
+ */
16
30
  getHeaders(): string[];
31
+ /**
32
+ * Gets the DataTable from the current object.
33
+ * @returns ParserResult<DataTableInfo>
34
+ */
17
35
  getTable(): ParserResult<DataTableInfo>;
36
+ /**
37
+ * Sets the DataTable from a given table.
38
+ * Asserts first if the DataTable is initialized,
39
+ * then checks if the number of columns matches the number of headers.
40
+ *
41
+ * @param table - Internal table of type (string | null)[][].
42
+ * @returns A Promise that resolves when the table has been set.
43
+ */
18
44
  setTable(table: (string | null)[][]): Promise<void>;
45
+ /**
46
+ * Populates the internal table from a given File or CSV string.
47
+ *
48
+ * If the data is a File, it will be parsed using the fromXML method.
49
+ * If the data is a CSV string, it will be parsed using the fromCSVString method.
50
+ *
51
+ * @param {File | string} data - The File or CSV string to initialize the DataTable from.
52
+ * @returns A Promise that resolves to a ParserResult.
53
+ */
54
+ initializeTable(data: File | string): Promise<ParserResult<DataTableInfo>>;
55
+ /**
56
+ * Asserts that the DataTable has been initialized.
57
+ * If not, it throws a DataTableException.
58
+ *
59
+ * @returns A Promise that resolves with a string message.
60
+ * @throws {DataTableException} If the DataTable has not been initialized.
61
+ */
62
+ assertInitialized(): Promise<string>;
63
+ /**
64
+ * Parses a CSV string into a DataTable.
65
+ *
66
+ * @param csvString - The CSV string to parse.
67
+ * @returns A Promise that resolves to a ParserResult when the parsing is complete.
68
+ */
19
69
  abstract fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo>>;
70
+ /**
71
+ * Converts the DataTable to its JSON representation.
72
+ * The method will run all validators on the DataTable before conversion.
73
+ * If any validator fails, it will append the error message to the tableErrors array.
74
+ * If all validators pass, it will append the successful validation messages to the validMsgs array.
75
+ *
76
+ * @returns A Promise that resolves when the conversion is complete.
77
+ */
20
78
  abstract toJson(): Promise<ParserResult<{
21
79
  jsonObj: T | null;
22
80
  validMsgs: string[];
23
81
  tableErrors: DataTableException[];
24
82
  }>>;
25
- useValidator(validator: DTValidator<this, T>): void;
83
+ /**
84
+ * Method to set the internal table from an Excel file (.xls).
85
+ * This converts the file to CSVstring and calls the fromCSVString method.
86
+ *
87
+ * @param xls - The Excel file (.xls) to set the DataTable from.
88
+ * @param sheetName - Optional sheetname to set the DataTable from. Defaults to 1st sheet.
89
+ * @returns A Promise that resolves to a ParserResult when the DataTable is set.
90
+ */
26
91
  fromXML(xls: File, sheetName?: string): Promise<ParserResult<DataTableInfo>>;
92
+ /**
93
+ * Finds the row and column index of a given string in the DataTable.
94
+ *
95
+ * @param {string} str - The string to search for.
96
+ * @returns {Promise<{ row: number; column: number }>} - A promise resolving to the indices. Defaults to {row: -1, column: -1} if not found.
97
+ */
27
98
  findValue(str: string): Promise<{
28
99
  row: number;
29
100
  column: number;
30
101
  }>;
102
+ /**
103
+ * Runs all validators on the DataTable.
104
+ * By default runs the validations of the validateFields and toJson methods.
105
+ * If any validator fails, it will append the error message to the tableErrors array.
106
+ * If all validators pass, it will append the successful validation messages to the validMsgs array.
107
+ *
108
+ * @returns A Promise that resolves with a ParserResult containing the validation results.
109
+ * The data object within the ParserResult contains the arrays of valid messages and table errors.
110
+ */
31
111
  validate(): Promise<ParserResult<{
32
112
  validMsgs: string[];
33
113
  tableErrors: DataTableException[];
34
114
  }>>;
35
- assertInitialized(): Promise<string>;
36
- initializeTable(data: File | string): Promise<ParserResult>;
115
+ /**
116
+ * Validates all fields in the DataTable.
117
+ *
118
+ * @param {string[]} validMsgs - Array of valid messages.
119
+ * @param {DataTableException[]} tableErrors - Array of table errors.
120
+ * @returns {Promise<void>} - A promise that resolves when the validation is complete.
121
+ */
122
+ abstract validateFields(validMsgs: string[], tableErrors: DataTableException[]): Promise<void>;
123
+ /**
124
+ * Adds a custom validator to the DataTable.
125
+ * This validator will be called when the validate method is called.
126
+ *
127
+ * @param validator - The validator to add to the DataTable.
128
+ */
129
+ useValidator(validator: DTValidator<this, T>): void;
37
130
  }
@@ -4,6 +4,17 @@ import { CoaepDT } from "../../CoaepDT";
4
4
  import { DTValidator } from "../../DTValidator";
5
5
  export declare class ILOTaxoOrder extends DTValidator<CoaepDT, COAEP> {
6
6
  constructor();
7
+ /**
8
+ * Validate the COAEP object.
9
+ * Checks if every Course Outcome has its ILOs in order of taxonomy level.
10
+ * If not, it will throw an error.
11
+ *
12
+ * @param {string[]} validMsgs - Array of valid messages.
13
+ * @param {DataTableException[]} tableErrors - Array of table errors.
14
+ * @param {CoaepDT} coaepDT - COAEP DataTable.
15
+ * @param {COAEP | null} coaepObj - COAEP object.
16
+ * @returns {Promise<void>} - Promise that resolves when validation is complete.
17
+ */
7
18
  validate(validMsgs: string[], tableErrors: DataTableException[], coaepDT: CoaepDT, coaepObj: COAEP | null): Promise<void>;
8
19
  }
9
20
  export default ILOTaxoOrder;
@@ -4,6 +4,17 @@ import DataTableException from "../../../types/DataTableException";
4
4
  import { DTValidator } from "../../DTValidator";
5
5
  export declare class LastILOTaxo extends DTValidator<CoaepDT, COAEP> {
6
6
  constructor();
7
+ /**
8
+ * Validate the COAEP object.
9
+ * Checks if the last ILO of every CO has the same taxonomy level as the CO.
10
+ * If not, it will throw an error.
11
+ *
12
+ * @param {string[]} validMsgs - Array of valid messages.
13
+ * @param {DataTableException[]} tableErrors - Array of table errors.
14
+ * @param {CoaepDT} coaepDT - COAEP DataTable.
15
+ * @param {COAEP | null} coaepObj - COAEP object.
16
+ * @returns {Promise<void>} - Promise that resolves when validation is complete.
17
+ */
7
18
  validate(validMsgs: string[], tableErrors: DataTableException[], coaepDT: CoaepDT, coaepObj: COAEP | null): Promise<void>;
8
19
  }
9
20
  export default LastILOTaxo;
@@ -4,5 +4,16 @@ import DataTableException from "../../../types/DataTableException";
4
4
  import { DTValidator } from "../../DTValidator";
5
5
  export declare class MinCOtaxo extends DTValidator<CoaepDT, COAEP> {
6
6
  constructor();
7
+ /**
8
+ * Validate the COAEP object.
9
+ * Checks if every Course Outcome has a taxonomy level of "Applying" or higher.
10
+ * This is done by checking for "Remembering" and "Understanding" as errors.
11
+ *
12
+ * @param {string[]} validMsgs - Array of valid messages.
13
+ * @param {DataTableException[]} tableErrors - Array of table errors.
14
+ * @param {CoaepDT} coaepDT - COAEP DataTable.
15
+ * @param {COAEP | null} coaepObj - COAEP object.
16
+ * @returns {Promise<void>} - Promise that resolves when validation is complete.
17
+ */
7
18
  validate(validMsgs: string[], tableErrors: DataTableException[], coaepDT: CoaepDT, coaepObj: COAEP | null): Promise<void>;
8
19
  }
package/bundle.js CHANGED
@@ -1,58 +1,58 @@
1
- import _0x11bf51 from 'papaparse';
2
- import * as _0x2bf800 from 'xlsx';
1
+ import _0x5b018f from 'papaparse';
2
+ import * as _0x3acb05 from 'xlsx';
3
3
 
4
- function parseCurriculum(_0x1826d8){let _0x2ff54a='',_0x2f9786='',_0x483420=0x0,_0x2ede2d=null;const _0x4b1260=[];return _0x11bf51['parse'](_0x1826d8,{'skipEmptyLines':!![],'complete':_0x442fd7=>{_0x442fd7['data']['forEach'](_0x522b3c=>{const _0x35bf10=_0x522b3c['map'](_0x1a04d7=>(_0x1a04d7??'')['toString']()['trim']()),_0x188379=_0x35bf10[0x0]??'';if(_0x188379['includes']('Rev#')){const _0x440e8a=_0x188379['match'](/([A-Z0-9]+)\s*-\s*.*:\s*(.*?)\s+Rev#\s*(\d+)/i);_0x440e8a&&(_0x2ff54a=_0x440e8a[0x1]?.['trim']()??'',_0x2f9786=_0x440e8a[0x2]?.['trim']()??'',_0x483420=parseInt(_0x440e8a[0x3]??'0',0xa));return;}if(/FIRST YEAR/i['test'](_0x188379)){_0x2ede2d=0x1;return;}if(/SECOND YEAR/i['test'](_0x188379)){_0x2ede2d=0x2;return;}if(/THIRD YEAR/i['test'](_0x188379)){_0x2ede2d=0x3;return;}if(/FOURTH YEAR/i['test'](_0x188379)){_0x2ede2d=0x4;return;}if(/FIFTH YEAR/i['test'](_0x188379)){_0x2ede2d=0x5;return;}if(/First Semester/i['test'](_0x188379)||/Second Semester/i['test'](_0x188379)||/Summer/i['test'](_0x188379))return;const _0x248f30=[{'sem':0x1,'offset':0x0},{'sem':0x2,'offset':0x6},{'sem':0x3,'offset':0xc}];_0x248f30['forEach'](({sem:_0x497b2f,offset:_0x194c18})=>{const _0x3499af=_0x35bf10[_0x194c18]??'',_0x518e68=_0x35bf10[_0x194c18+0x1]??'',_0xc0bfb6=_0x35bf10[_0x194c18+0x2]??'',_0x3c6d72=_0x35bf10[_0x194c18+0x3]??'',_0x13c36b=_0x35bf10[_0x194c18+0x4]??'';_0x3499af&&_0x2ede2d&&_0x4b1260['push']({'curr_id':_0x2ff54a,'program_name':_0x2f9786,'revision_no':_0x483420,'year_level':_0x2ede2d,'sem':_0x497b2f,'course_id':_0x3499af,'course_desc':_0x518e68,'total_units':_0xc0bfb6,'lec_unit':_0x3c6d72,'lab_unit':_0x13c36b});});});}}),_0x4b1260;}
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;}
5
5
 
6
- function convertToCSVFile(_0x40e1d5,_0x3b57e5){return new Promise((_0x3b6261,_0x104370)=>{const _0x16a4bd=new FileReader();_0x16a4bd['onload']=_0x3bc5b8=>{const _0x1c7f5e=_0x3bc5b8['target']?.['result'];if(!_0x1c7f5e){_0x104370(new Error('Failed\x20to\x20read\x20file'));return;}try{const _0x3bca66=_0x2bf800['read'](_0x1c7f5e,{'type':'array'});!_0x3b57e5&&(_0x3b57e5=_0x3bca66['SheetNames'][0x0]);if(!_0x3b57e5){_0x104370(new Error('No\x20sheets\x20found\x20in\x20workbook'));return;}const _0x1abb1a=_0x3bca66['Sheets'][_0x3b57e5];if(!_0x1abb1a){_0x104370(new Error('No\x20sheets\x20found\x20in\x20worksheet'));return;}const _0x52246d=_0x2bf800['utils']['sheet_to_csv'](_0x1abb1a,{'strip':!![]}),_0x48f0b4=_0x40e1d5['name']['replace'](/\.[^/.]+$/,'.csv'),_0x5cedc5=new File([_0x52246d],_0x48f0b4,{'type':'text/csv','lastModified':Date['now']()});_0x3b6261(_0x5cedc5);}catch(_0x15c9f0){_0x104370(_0x15c9f0);}},_0x16a4bd['onerror']=()=>{_0x104370(new Error('File\x20reading\x20failed'));},_0x16a4bd['readAsArrayBuffer'](_0x40e1d5);});}
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);});}
7
7
 
8
- async function uploadCurriculum(_0x5f176a,_0xdb14a4){try{const _0x2552e3=await convertToCSVFile(_0xdb14a4),_0x14dbf7=await _0x2552e3['text'](),_0x428d54=parseCurriculum(_0x14dbf7),_0x199d9d=_0x11bf51['unparse'](_0x428d54),_0x3d176d=new File([_0x199d9d],_0x2552e3['name'],{'type':'text/csv'}),_0x24ba5c=new FormData();_0x24ba5c['append']('csvFile',_0x3d176d);const _0x3cc2fb=await fetch(_0x5f176a+'/curr-courses/upload',{'method':'POST','body':_0x24ba5c});if(!_0x3cc2fb['ok']){const _0x266ac3=await _0x3cc2fb['json']();throw _0x266ac3;}return _0x3cc2fb['json']();}catch(_0xbe7945){throw _0xbe7945;}}
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;}}
9
9
 
10
- function parseCourseOffering(_0x16e338){let _0x28f84e='',_0x5c0601='';const _0x367e5d=[],_0x2276b3=_0x11bf51['parse'](_0x16e338,{'header':![],'skipEmptyLines':!![],'delimiter':','}),_0xb0d6e6=_0x2276b3['data'];for(let _0x2360e1=0x0;_0x2360e1<Math['min'](0x5,_0xb0d6e6['length']);_0x2360e1++){const _0x316b07=_0xb0d6e6[_0x2360e1];if(_0x316b07&&_0x316b07['length']>0x0){const _0x707b9b=_0x316b07[0x0]?.['toString']()||'',_0xdb8988=_0x707b9b['match'](/(First|Second)\s+Sem\s+S\/Y\s+(\d{4}-\d{4})/i);if(_0xdb8988){_0x28f84e=_0xdb8988[0x1]?.['toLowerCase']()==='first'?'1':'2';if(_0xdb8988[0x2]){const _0xaf154=_0xdb8988[0x2]['match'](/(\d{2})(\d{2})-(\d{2})(\d{2})/);_0xaf154&&_0xaf154[0x2]&&_0xaf154[0x4]&&(_0x5c0601=_0xaf154[0x2]+_0xaf154[0x4]);}}}}let _0x564091=-1;for(let _0x52427f=0x0;_0x52427f<_0xb0d6e6['length'];_0x52427f++){const _0x38f8e0=_0xb0d6e6[_0x52427f];if(_0x38f8e0&&_0x38f8e0['some'](_0x3a4318=>_0x3a4318?.['toString']()['toUpperCase']()['includes']('CODE'))){_0x564091=_0x52427f;break;}}if(_0x564091===-1)throw new Error('Could\x20not\x20find\x20header\x20row\x20in\x20CSV\x20data');let _0x26bc4f={'code':'','description':'','unit':0x0};for(let _0x56ff93=_0x564091+0x1;_0x56ff93<_0xb0d6e6['length'];_0x56ff93++){const _0x3d4df7=_0xb0d6e6[_0x56ff93];if(!_0x3d4df7||_0x3d4df7['length']<0x8)continue;const _0x376df8=_0x3d4df7[0x1]?.['toString']()['trim']()||'',_0x24c990=_0x3d4df7[0x4]?.['toString']()['trim']()||'',_0x5968e6=_0x3d4df7[0x5]?.['toString']()['trim']()||'',_0x25cfa1=_0x3d4df7[0x6]?.['toString']()['trim']()||'',_0x27c4ef=_0x3d4df7[0x7]?.['toString']()['trim']()||'',_0x479dfa=_0x3d4df7[0x3]?.['toString']()['trim']()||'';let _0x3d880f=_0x3d4df7[0x0]?.['toString']()['trim']()||'',_0x3f42f5=_0x3d4df7[0x2]?.['toString']()['trim']()||'';if(!_0x376df8)continue;if(!_0x3d880f)_0x3d880f=_0x26bc4f['code'];if(!_0x3f42f5)_0x3f42f5=_0x26bc4f['description'];let _0x5dc676=_0x26bc4f['unit'];if(_0x479dfa){const _0x59ad76=_0x479dfa['match'](/(\d+)/);_0x59ad76&&_0x59ad76[0x1]&&(_0x5dc676=parseInt(_0x59ad76[0x1],0xa));}const _0x1d0ac6={'sem':_0x28f84e,'school_year':_0x5c0601,'code':_0x3d880f,'course_no':_0x376df8,'course_desc':_0x3f42f5,'unit':_0x5dc676,'time':_0x24c990,'days':_0x5968e6,'faculty':_0x25cfa1,'room':_0x27c4ef};_0x26bc4f['code']=_0x3d880f,_0x26bc4f['description']=_0x3f42f5,_0x26bc4f['unit']=_0x5dc676,_0x367e5d['push'](_0x1d0ac6);}return _0x367e5d;}
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;}
11
11
 
12
- async function uploadCourseOffering(_0x15538e,_0x2c4117){try{const _0x195356=await convertToCSVFile(_0x2c4117),_0x3ac2f3=await _0x195356['text'](),_0x335929=parseCourseOffering(_0x3ac2f3),_0x19518e=_0x11bf51['unparse'](_0x335929),_0x18fd6e=new File([_0x19518e],_0x195356['name'],{'type':'text/csv'}),_0x4dbc4c=new FormData();_0x4dbc4c['append']('csvFile',_0x18fd6e);const _0x4c97fd=await fetch(_0x15538e+'/course-offerings/upload',{'method':'POST','body':_0x4dbc4c});if(!_0x4c97fd['ok']){const _0x522acf=await _0x4c97fd['json']();throw _0x522acf;}return _0x4c97fd['json']();}catch(_0x330e43){throw _0x330e43;}}
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;}}
13
13
 
14
- function performaceTarget(_0x138369){if(!_0x138369)return {'performance_target':null,'passing_score':null};const _0x384407=_0x138369['match'](/\d+/g);return {'performance_target':_0x384407?.[0x0]?parseInt(_0x384407[0x0],0xa):null,'passing_score':_0x384407?.[0x1]?parseInt(_0x384407[0x1],0xa):null};}
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};}
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(_0x238a4e){let _0x32c332={'headerRowIndex':-1,'coIdx':-1,'iloIdx':-1,'assessToolIdx':-1,'perfTargetIdx':-1};for(let _0x10e8db=0x0;_0x10e8db<Math['min'](_0x238a4e['length'],0x14);_0x10e8db++){const _0x59b197=(_0x238a4e[_0x10e8db]??[])['map'](_0x23a020=>_0x23a020['toLowerCase']()['trim']()),_0x1f5796=_0x59b197['findIndex'](_0x4ac4ce=>HEADERS$1['co']['some'](_0xd1264=>_0x4ac4ce['includes'](_0xd1264))),_0x1fa733=_0x59b197['findIndex'](_0x3c1139=>HEADERS$1['ilo']['some'](_0x47be58=>_0x3c1139['includes'](_0x47be58))),_0x559a80=_0x59b197['findIndex'](_0xe8f955=>HEADERS$1['assessTool']['some'](_0xe078d2=>_0xe8f955['includes'](_0xe078d2))),_0x103b60=_0x59b197['findIndex'](_0x243bf5=>HEADERS$1['perfTarget']['some'](_0x539972=>_0x243bf5['includes'](_0x539972))),_0x4bf42b=[_0x1f5796,_0x1fa733,_0x559a80,_0x103b60]['filter'](_0x1048f0=>_0x1048f0!==-1)['length'];if(_0x4bf42b>=0x3){_0x32c332={'headerRowIndex':_0x10e8db,'coIdx':_0x1f5796,'iloIdx':_0x1fa733,'assessToolIdx':_0x559a80,'perfTargetIdx':_0x103b60};break;}}return _0x32c332;}
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;}
17
17
 
18
- function extractFromObjective(_0x5d2559){const _0x584975={'cognitive_level':null,'taxonomy_level':null,'verb':null},_0x5d34b1=/(?:\(([IED])\))?\s*(\w+)\s*:\s*(.*)/i,_0x43740d=_0x5d2559['match'](_0x5d34b1);if(_0x43740d){if(_0x43740d[0x1])_0x584975['cognitive_level']=_0x43740d[0x1];if(_0x43740d[0x2])_0x584975['taxonomy_level']=_0x43740d[0x2]['toLowerCase']();const _0x938c42=_0x43740d[0x3]?.['trim']();if(_0x938c42){const _0x3e9d2a=/(?:shall|will)\s+(\w+)/i,_0x142352=_0x938c42['match'](_0x3e9d2a);_0x142352?_0x584975['verb']=_0x142352[0x1]['toLowerCase']():_0x584975['verb']=_0x938c42['split'](/\s+/)[0x0]['toLowerCase']();}}return _0x584975;}
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;}
19
19
 
20
- function parseCOAEP(_0x1b0146){const _0x5aee28=_0x11bf51['parse'](_0x1b0146,{'skipEmptyLines':![]})['data'],_0xa452bc={'COAEP':{'faculty':null,'course':null,'sy':null,'semester':null,'co':[]}},{headerRowIndex:_0x199ed8,coIdx:_0x517daa,iloIdx:_0x3bc43e,assessToolIdx:_0x48c7f9,perfTargetIdx:_0x26547f}=getCoaepHeader(_0x5aee28);if(_0x199ed8===-1)return {'error':'Could\x20not\x20auto-detect\x20header\x20row.','message':'Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.'};_0x5aee28['forEach'](_0x385660=>{const _0x1960b0=_0x385660['indexOf']('Name\x20of\x20Faculty:'),_0x6cfba1=_0x385660['indexOf']('School\x20Year'),_0x306f05=_0x385660['indexOf']('Course:'),_0x2e36ae=_0x385660['indexOf']('Semester');_0x1960b0!==-1&&(_0xa452bc['COAEP']['faculty']=_0x385660[_0x1960b0+0x1]?.['trim']()||_0xa452bc['COAEP']['faculty']);_0x6cfba1!==-1&&(_0xa452bc['COAEP']['sy']=_0x385660[_0x6cfba1+0x1]?.['trim']()||_0xa452bc['COAEP']['sy']);_0x306f05!==-1&&(_0xa452bc['COAEP']['course']=_0x385660[_0x306f05+0x1]?.['trim']()||_0xa452bc['COAEP']['course']);if(_0x2e36ae!==-1){const _0x39dfbb=_0x385660[_0x2e36ae+0x1]?.['trim']()||'',_0x5e588f=_0x39dfbb['match'](/\d+/)?.[0x0];_0xa452bc['COAEP']['semester']=_0x5e588f?parseInt(_0x5e588f,0xa):_0xa452bc['COAEP']['semester'];}});let _0x539b9f=null;return _0x5aee28['forEach']((_0x259400,_0x492656)=>{if(_0x492656<=_0x199ed8)return;let _0x570d06=_0x259400[_0x517daa-0x1]?.['trim']()||'',_0x147c10=_0x259400[_0x517daa]?.['trim']()||'';/^\d+$/['test'](_0x259400[_0x517daa]?.['trim']()||'')&&(_0x570d06=_0x259400[_0x517daa]?.['trim']()||'',_0x147c10=_0x259400[_0x517daa+0x1]?.['trim']()||'');const _0x5b0c98=_0x259400[_0x3bc43e]?.['trim']()||'',_0x35e56b=_0x259400[_0x48c7f9]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0x3466ef=_0x259400[_0x26547f]?.['replace'](/\s+/g,'\x20')['trim']()||'';if(_0x570d06&&/^\d+$/['test'](_0x570d06)){_0x539b9f&&_0xa452bc['COAEP']['co']['push'](_0x539b9f);const _0x4c9273=_0x147c10,{verb:_0x1e8074,cognitive_level:_0x801e8f,taxonomy_level:_0x28721a}=extractFromObjective(_0x4c9273);if(!_0x1e8074)return {'error':'Could\x20not\x20find\x20verb.','message':'Please\x20ensure\x20the\x20Course\x20Outcome\x20#'+_0x570d06+'\x20is\x20in\x20the\x20correct\x20format.'};_0x539b9f={'statement':_0x4c9273,'ilo':[],'verb':_0x1e8074,'cognitive_level':_0x801e8f,'taxonomy_level':_0x28721a};}if(_0x539b9f&&_0x5b0c98&&_0x3466ef){const _0x604a4c=_0x5b0c98['replace'](/^ILO\d+[:.]?\s*/,'');if(_0x604a4c['match'](/^(Revision|Prepared|Date|Approved|Effectivity|Page)/i)||_0x604a4c['length']<0xa)return;let _0x1ebd33=_0x35e56b;if(!_0x1ebd33&&_0x604a4c['includes'](':')){const _0x3609a6=_0x604a4c['match'](/^ILO\d+:\s*(.+?)(?:\s*\(|$)/);_0x3609a6&&(_0x1ebd33=_0x3609a6[0x1]?.['trim']()||'');}const {performance_target:_0x2fdfc4,passing_score:_0x205e6f}=performaceTarget(_0x3466ef),{verb:_0xfb6f6e,cognitive_level:_0x414ed4,taxonomy_level:_0x414992}=extractFromObjective(_0x604a4c);_0x539b9f['ilo']['push']({'statement':_0x604a4c,'assessment_tool':_0x1ebd33,'performance_target':_0x2fdfc4,'passing_score':_0x205e6f,'verb':_0xfb6f6e,'cognitive_level':_0x414ed4,'taxonomy_level':_0x414992});}}),_0x539b9f&&_0xa452bc['COAEP']['co']['push'](_0x539b9f),_0xa452bc;}
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;}
21
21
 
22
- async function uploadCOAEP(_0x57e703,_0x243ae5,_0x2c4cb9){try{const _0x4e984=await convertToCSVFile(_0x243ae5),_0x20c86f=await _0x4e984['text'](),_0x3ac8a2=parseCOAEP(_0x20c86f);console['log'](_0x3ac8a2);const _0x1ffd13=await fetch(_0x57e703+'/coaeps/upload?course_id='+_0x2c4cb9,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ac8a2)});if(!_0x1ffd13['ok']){const _0x10b9fa=await _0x1ffd13['json']();throw _0x10b9fa;}return _0x1ffd13['json']();}catch(_0x6a6f15){throw _0x6a6f15;}}
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;}}
23
23
 
24
- async function uploadEnrolledStudent(_0x4233b1,_0x80dc99){try{const _0x1b223b=await convertToCSVFile(_0x80dc99),_0x13943b=new FormData();_0x13943b['append']('csvFile',_0x1b223b);const _0x182985=await fetch(_0x4233b1+'/enrolled-students/upload',{'method':'POST','body':_0x13943b});if(!_0x182985['ok']){const _0xb5ab43=await _0x182985['json']();throw _0xb5ab43;}return _0x182985['json']();}catch(_0x17db4b){throw _0x17db4b;}}
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;}}
25
25
 
26
- function parseClassList(_0x52c7e1){const _0x1a7493=_0x11bf51['parse'](_0x52c7e1,{'skipEmptyLines':!![]})['data'];let _0x39f3a9='',_0x2ac93='',_0x2f6297='';const _0x5b4e4a=[];return _0x1a7493['forEach'](_0xc58f0=>{const _0xc2a20f=_0xc58f0['map'](_0x4a8a53=>(_0x4a8a53??'')['toString']()['trim']()),_0x326f7c=_0xc2a20f[0x0]??'';if(_0x326f7c['startsWith']('Course\x20No:')){const _0x9a0c64=_0x326f7c['replace']('Course\x20No:','')['trim'](),_0x4b1e53=_0x9a0c64['split'](/\s+/);_0x2f6297=_0x4b1e53[0x0]??'';const [_0x391d07,_0xd0de0b]=(_0x4b1e53[0x1]??'')['split']('-');_0x2ac93=_0x391d07??'';const _0x5e17e3=(_0xd0de0b??'')['match'](/[a-z]$/);_0x39f3a9=_0x5e17e3?_0x5e17e3[0x0]:'';}if(/^\d+$/['test'](_0x326f7c)){const _0x12af99=_0xc2a20f[0x2]??'';_0x5b4e4a['push']({'subj_code':_0x2f6297,'student_no':_0x12af99,'course_id':_0x2ac93,'section':_0x39f3a9});}}),{'enrolledCourses':_0x5b4e4a};}
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};}
27
27
 
28
- async function uploadClassList(_0x1bc767,_0x4d05c1,_0x419fa9,_0x8cf560){try{const _0x55f736=await convertToCSVFile(_0x4d05c1),_0x1bbd20=await _0x55f736['text'](),_0x2bad74=parseClassList(_0x1bbd20),_0x53db77='subj_code='+_0x419fa9+'&period_id='+_0x8cf560,_0x1a08f3=await fetch(_0x1bc767+'/enrolled-courses/upload?'+_0x53db77,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2bad74)});if(!_0x1a08f3['ok']){const _0x3e657b=await _0x1a08f3['json']();throw _0x3e657b;}return _0x1a08f3['json']();}catch(_0x52e03a){throw _0x52e03a;}}
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;}}
29
29
 
30
- function parseAssessmentCsv(_0x271768){const {data:_0x4351af}=_0x11bf51['parse'](_0x271768,{'skipEmptyLines':!![]}),_0x4913f3=_0x4351af['filter'](_0xb0ffec=>_0xb0ffec['length']>0x0),_0x4344d3=_0x4913f3['find'](_0x9b2629=>_0x9b2629['some'](_0x4e7f81=>_0x4e7f81?.['includes']('Faculty'))),_0x130cba=_0x4344d3?_0x4344d3['findIndex'](_0x2a6b6d=>_0x2a6b6d?.['includes']('Faculty')):-1,_0x207a85=_0x130cba!==-1&&_0x4344d3?_0x4344d3[_0x130cba+0x2]?.['replace'](/"/g,'')['trim']()??'':'',_0x4cebe2=_0x4913f3['find'](_0x148ebd=>_0x148ebd['some'](_0x56e009=>_0x56e009?.['includes']('Semester'))),_0x24dfd2=_0x4cebe2?_0x4cebe2['findIndex'](_0x46b202=>_0x46b202?.['includes']('Semester')):-1,_0x368df8=_0x24dfd2!==-1&&_0x4cebe2?_0x4cebe2[_0x24dfd2+0x2]?.['trim']()??'':'',_0xf453d3=_0x368df8['includes']('1st')?0x1:_0x368df8['includes']('2nd')?0x2:0x0,_0x2b13ea=_0x4913f3['find'](_0x56ff90=>_0x56ff90['some'](_0x5429f2=>_0x5429f2?.['includes']('Course\x20&\x20Sec'))),_0x468bb3=_0x2b13ea?_0x2b13ea['findIndex'](_0x560f07=>_0x560f07?.['includes']('Course\x20&\x20Sec')):-1,_0x531cb7=_0x468bb3!==-1&&_0x2b13ea?_0x2b13ea[_0x468bb3+0x2]?.['trim']()??'':'';let _0x4cb60f='',_0x267d78='';if(_0x531cb7){const _0x5072cd=_0x531cb7['match'](/^([A-Za-z0-9]+)-?([A-Za-z]+)?/);_0x5072cd&&(_0x4cb60f=_0x5072cd[0x1]??'',_0x5072cd[0x2]&&(_0x267d78=_0x5072cd[0x2]['replace'](/^OC/i,'')));}const _0x20f4ee=_0x4913f3['find'](_0xe3a57a=>_0xe3a57a['some'](_0x31f341=>_0x31f341?.['includes']('School\x20Year'))),_0x170d14=_0x20f4ee?_0x20f4ee['findIndex'](_0x4bb120=>_0x4bb120?.['includes']('School\x20Year')):-1,_0x1bd93e=_0x170d14!==-1&&_0x20f4ee?_0x20f4ee[_0x170d14+0x2]?.['trim']()??'':'';let _0x118726=0x0;if(_0x1bd93e){const _0x56233d=_0x1bd93e['match'](/(\d{4})-(\d{4})/);if(_0x56233d){const _0x4b6db7=(_0x56233d[0x1]??'')['slice'](0x2),_0x190302=(_0x56233d[0x2]??'')['slice'](0x2);_0x118726=parseInt(_0x4b6db7+_0x190302,0xa);}}const _0x39814b={'faculty':_0x207a85,'course':_0x4cb60f,'section':_0x267d78,'semester':_0xf453d3,'sy':_0x118726},_0x2f8cc7=_0x4913f3['findIndex'](_0x3c2544=>_0x3c2544['some'](_0x4ee6c9=>_0x4ee6c9?.['trim']()==='CO\x20#'));if(_0x2f8cc7===-1)throw new Error('CO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x51b959=_0x4913f3[_0x2f8cc7+0x1];if(!_0x51b959)throw new Error('ILO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x5467fb={};let _0xe80079=0x1,_0xa31938=0x1;for(let _0x3b787f=0x3;_0x3b787f<_0x51b959['length'];_0x3b787f++){const _0x84a2a3=_0x51b959[_0x3b787f];if(!_0x84a2a3)continue;const _0x42a0ab='co'+_0xe80079;if(!_0x5467fb[_0x42a0ab])_0x5467fb[_0x42a0ab]=[];_0x5467fb[_0x42a0ab]['push']('ilo'+_0xa31938),_0xa31938++,_0xa31938>0x3&&(_0xe80079++,_0xa31938=0x1);}const _0x51e3b3=_0x4913f3['findIndex'](_0x1611db=>_0x1611db['includes']('Name\x20of\x20Students'));if(_0x51e3b3===-1)throw new Error('Student\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x49ee2e=_0x4913f3[_0x51e3b3];if(!_0x49ee2e)throw new Error('Student\x20header\x20row\x20is\x20missing');const _0x2f5e1a=_0x49ee2e['findIndex'](_0x32798d=>_0x32798d?.['includes']('Name\x20of\x20Students'));if(_0x2f5e1a===-1)throw new Error('Name\x20of\x20Students\x20column\x20not\x20found\x20in\x20CSV');const _0x293297=_0x2f5e1a+0x2,_0x130edc=[];for(let _0x25e898=_0x51e3b3+0x1;_0x25e898<_0x4913f3['length'];_0x25e898++){const _0x25e0bc=_0x4913f3[_0x25e898];if(!_0x25e0bc)continue;if(_0x25e0bc['some'](_0x522f8e=>_0x522f8e?.['toUpperCase']()['includes']('TOTAL\x20STUDENTS')||_0x522f8e?.['toUpperCase']()['includes']('ACHIEVED\x20THE\x20MINIMUM')||_0x522f8e?.['toUpperCase']()['includes']('INACTIVE')||_0x522f8e?.['toUpperCase']()['includes']('AVERAGE')))continue;if(!_0x25e0bc[_0x2f5e1a])continue;const _0x322050=_0x25e0bc[_0x2f5e1a]['replace'](/"/g,'')['trim'](),_0x113d69=_0x25e0bc['slice'](_0x293297)['map'](_0x354daa=>_0x354daa===null?null:!isNaN(Number(_0x354daa))?parseFloat(_0x354daa):0x0);let _0x232967=0x0;const _0x4de0cd={};Object['entries'](_0x5467fb)['forEach'](([_0x4a9e06,_0x3d6641])=>{const _0x1035ea={};_0x3d6641['forEach'](_0x2dad63=>{_0x1035ea[_0x2dad63]=_0x113d69[_0x232967]??0x0,_0x232967++;}),_0x4de0cd[_0x4a9e06]={'transmuted_score':_0x1035ea};}),_0x130edc['push']({'student_name':_0x322050,'coaep':_0x4de0cd});}const _0x497fd6=_0x4913f3['find'](_0x7425bc=>_0x7425bc['some'](_0x558476=>_0x558476?.['includes']('ACHIEVED\x20THE\x20MINIMUM'))),_0x2ab50f=_0x4913f3['find'](_0x3c6cac=>_0x3c6cac['some'](_0x1790bd=>_0x1790bd?.['includes']('AVERAGE'))),_0x233cae=_0x497fd6?_0x497fd6['slice'](_0x293297)['map'](_0x3a8504=>_0x3a8504&&!isNaN(Number(_0x3a8504))?parseInt(_0x3a8504):0x0):[],_0x4ced12=_0x2ab50f?_0x2ab50f['slice'](_0x293297)['map'](_0x38a897=>_0x38a897&&_0x38a897!=='#DIV/0!'&&!isNaN(Number(_0x38a897))?parseInt(_0x38a897):0x0):[],_0x2be44a={};let _0x4ca77a=0x0;return Object['entries'](_0x5467fb)['forEach'](([_0x5ccd28,_0x25b648])=>{if(!_0x2be44a[_0x5ccd28])_0x2be44a[_0x5ccd28]={};_0x25b648['forEach'](_0x301eea=>{_0x2be44a[_0x5ccd28][_0x301eea]={'achievedMinimum':_0x233cae[_0x4ca77a]??0x0,'average':_0x4ced12[_0x4ca77a]??0x0},_0x4ca77a++;});}),{'assessmentData':{'classAssignment':_0x39814b,'student':_0x130edc,'total':_0x2be44a}};}
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}};}
31
31
 
32
- async function uploadAssessmentData(_0x4d369f,_0x25430a){try{const _0x4f8c0e=await convertToCSVFile(_0x25430a),_0x2680b3=await _0x4f8c0e['text'](),_0x2a2eb3=parseAssessmentCsv(_0x2680b3),_0x5af267=await fetch(_0x4d369f+'/assessment-data/upload',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2a2eb3)});if(!_0x5af267['ok']){const _0x50fac9=await _0x5af267['json']();throw _0x50fac9;}return _0x5af267['json']();}catch(_0xedd98c){throw _0xedd98c;}}
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;}}
33
33
 
34
- async function uploadDeptFaculty(_0x28ca04,_0x188339){try{const _0x212e44=await convertToCSVFile(_0x188339),_0x75b77e=new FormData();_0x75b77e['append']('csvFile',_0x212e44);const _0x472542=await fetch(_0x28ca04+'/dept-faculties/upload',{'method':'POST','body':_0x75b77e});if(!_0x472542['ok']){const _0xa78a94=await _0x472542['json']();throw _0xa78a94;}return _0x472542['json']();}catch(_0x19ae1a){throw _0x19ae1a;}}
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;}}
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(_0x107d1c){let _0x330ffd={'headerIdx':-1,'poIdx':-1,'tlIdx':-1,'piIdx':-1,'fcIdx':-1,'scIdx':-1,'atIdx':-1,'ptIdx':-1};for(let _0x598c83=0x0;_0x598c83<Math['min'](_0x107d1c['length'],0x14);_0x598c83++){const _0x10ab24=(_0x107d1c[_0x598c83]??[])['map'](_0x2e180a=>_0x2e180a['toLowerCase']()['trim']()),_0xe98c5a=_0x10ab24['findIndex'](_0x56fd0b=>HEADERS['po']['some'](_0x355bf2=>_0x56fd0b['toLowerCase']()['includes'](_0x355bf2))),_0x4dea37=_0x10ab24['findIndex'](_0x21644a=>HEADERS['tl']['some'](_0x1abf96=>_0x21644a['toLowerCase']()['includes'](_0x1abf96))),_0x326222=_0x10ab24['findIndex'](_0x4f1800=>HEADERS['pi']['some'](_0x3a2058=>_0x4f1800['toLowerCase']()['includes'](_0x3a2058))),_0x27dd82=_0x10ab24['findIndex'](_0x9127d2=>HEADERS['fc']['some'](_0x1eab7e=>_0x9127d2['toLowerCase']()['includes'](_0x1eab7e))),_0x102221=_0x10ab24['findIndex'](_0x51ec7a=>HEADERS['sc']['some'](_0x48c659=>_0x51ec7a['toLowerCase']()['includes'](_0x48c659))),_0x2bf7bc=_0x10ab24['findIndex'](_0x31681f=>HEADERS['at']['some'](_0x473ee5=>_0x31681f['toLowerCase']()['includes'](_0x473ee5))),_0x33e587=_0x10ab24['findIndex'](_0x19ac8d=>HEADERS['pt']['some'](_0x418547=>_0x19ac8d['toLowerCase']()['includes'](_0x418547))),_0x5a1e63=[_0xe98c5a,_0x4dea37,_0x326222,_0x27dd82,_0x102221,_0x2bf7bc,_0x33e587]['filter'](_0x478a13=>_0x478a13!==-1)['length'];if(_0x5a1e63>=0x3){_0x330ffd={'headerIdx':_0x598c83,'poIdx':_0xe98c5a,'tlIdx':_0x4dea37,'piIdx':_0x326222,'fcIdx':_0x27dd82,'scIdx':_0x102221,'atIdx':_0x2bf7bc,'ptIdx':_0x33e587};break;}}if(_0x330ffd['headerIdx']===-1)throw new Error('No\x20valid\x20headers\x20found\x20in\x20POAEP\x20file.');return _0x330ffd;}
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;}
37
37
 
38
- const parseFormativeCourses=_0x239a29=>{let _0x2a4088=_0x239a29['split'](',')['reduce']((_0x35f232,_0x370e95)=>{const _0x1a1999=_0x370e95['trim']();if(_0x1a1999)_0x35f232['push'](_0x1a1999);return _0x35f232;},[]);return _0x2a4088;};
38
+ const parseFormativeCourses=_0x56f162=>{let _0xadeb5c=_0x56f162['split'](',')['reduce']((_0x2190b4,_0x4b75e7)=>{const _0x46d0e3=_0x4b75e7['trim']();if(_0x46d0e3)_0x2190b4['push'](_0x46d0e3);return _0x2190b4;},[]);return _0xadeb5c;};
39
39
 
40
- const parsePOAEP=_0x3c959f=>{try{const _0x546340=_0x11bf51['parse'](_0x3c959f,{'skipEmptyLines':![]})['data'],{headerIdx:_0x4f9cf3,poIdx:_0x54388f,tlIdx:_0xc1b26c,piIdx:_0x2b5998,fcIdx:_0x63d60f,scIdx:_0x5d2ab0,atIdx:_0x3d2f4c,ptIdx:_0x3a8a1e}=getPoaepHeader(_0x546340),_0x1be2aa=[];let _0x2001c2={'po_desc':'','seq_no':0x0,'PerfIndicators':[]},_0x4df191='',_0x4371af='',_0x492557='';for(let _0x1e60ea=_0x4f9cf3+0x1;_0x1e60ea<_0x546340['length'];_0x1e60ea++){const _0x43d114=_0x546340[_0x1e60ea];if(!_0x43d114)break;const _0x27eb76=_0x43d114[_0x54388f]?.['trim']()||'';_0x27eb76!==''&&(_0x2001c2={'po_desc':_0x27eb76,'seq_no':_0x2001c2['seq_no']+0x1,'PerfIndicators':[]},_0x1be2aa['push'](_0x2001c2),_0x4df191='',_0x4371af='',_0x492557='');if(_0x2001c2['po_desc']==='')throw new Error('Invalid\x20Program\x20Outcome\x20at\x20row\x20'+_0x1e60ea+'.');const _0x463f76=_0x43d114[_0x2b5998]?.['trim']()||'';if(_0x463f76==='')break;const _0x4a3f1e=_0x43d114[_0x63d60f]?.['trim']()||'';if(_0x4a3f1e==='')throw new Error('Empty\x20Formative\x20Courses\x20at\x20row\x20'+_0x1e60ea+'.');const _0x22e17a=_0x43d114[_0x5d2ab0]?.['trim']()||_0x4df191;if(_0x22e17a==='')throw new Error('Empty\x20Summative\x20Course\x20at\x20row\x20'+_0x1e60ea+'.');_0x4df191=_0x22e17a;const _0x4a7979=_0x43d114[_0x3d2f4c]?.['trim']()||_0x4371af;if(_0x4a7979==='')throw new Error('Empty\x20Assessment\x20Tool\x20at\x20row\x20'+_0x1e60ea+'.');_0x4371af=_0x4a7979;const _0x4aa3de=_0x43d114[_0x3a8a1e]?.['trim']()||_0x492557;if(_0x4aa3de==='')throw new Error('Empty\x20Performance\x20Target\x20at\x20row\x20'+_0x1e60ea+'.');_0x492557=_0x4aa3de;const _0x1eddf3=parseFormativeCourses(_0x4a3f1e);if(_0x1eddf3['length']===0x0)throw new Error('Invalid\x20Formative\x20Courses\x20format\x20at\x20row\x20'+_0x1e60ea+'.');const _0x25e1ba=performaceTarget(_0x4aa3de);if(!_0x25e1ba['performance_target']||!_0x25e1ba['passing_score'])throw new Error('Invalid\x20Performance\x20Targets\x20format\x20at\x20row\x20'+_0x1e60ea+'.');const _0x5f516a={'pi_desc':_0x463f76,'FormativeCourses':_0x1eddf3['map'](_0x1ac497=>({'course_id':_0x1ac497,'cognitive_level':0x0})),'SummativeCourse':{'course_id':_0x22e17a},'AssessmentTool':{'at_desc':_0x4a7979},'PerformanceTargets':{'target_percent':_0x25e1ba['performance_target'],'min_score':_0x25e1ba['passing_score']}};_0x2001c2['PerfIndicators']['push'](_0x5f516a);}return {'success':!![],'message':'Successfully\x20parsed\x20POAEP\x20file.','data':{'POAEP':_0x1be2aa}};}catch(_0x4ff4e1){return {'success':![],'error':_0x4ff4e1 instanceof Error?_0x4ff4e1['message']:_0x4ff4e1,'message':'Please\x20ensure\x20the\x20file\x20follows\x20the\x20POAEP\x20template.'};}};
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.'};}};
41
41
 
42
- async function uploadPOAEP(_0x3d09ae,_0x303aa7,_0x2d6966,_0x21066a,_0x2dfe35){try{const _0x303189=await convertToCSVFile(_0x303aa7),_0x1646f4=await _0x303189['text'](),_0x2d86f0=parsePOAEP(_0x1646f4),_0x4a3ff0=await fetch(_0x3d09ae+'/program-outcomes/poaep/upload?curr_id='+_0x21066a+'&period_id='+_0x2dfe35,{'method':'POST','headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+_0x2d6966},'credentials':'include','body':JSON['stringify'](_0x2d86f0)});if(!_0x4a3ff0['ok']){const _0x4a62af=await _0x4a3ff0['json']();throw _0x4a62af;}return _0x4a3ff0['json']();}catch(_0x1aec87){throw _0x1aec87;}}
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;}}
43
43
 
44
- class DataTable{['name'];['table']=[];['headers'];['validators']=[];constructor(){this['name']='DataTable',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'](_0x242aa9){await this['assertInitialized'](),this['table']=_0x242aa9;}['useValidator'](_0x633eca){this['validators']['push'](_0x633eca);}async['fromXML'](_0x34c0c9,_0x40a3a4){const _0x4c3519=await convertToCSVFile(_0x34c0c9,_0x40a3a4),_0x2c7cb4=await _0x4c3519['text']();return this['fromCSVString'](_0x2c7cb4);}async['findValue'](_0x386d90){await this['assertInitialized']();for(let _0x35b8c3=0x0;_0x35b8c3<this['table']['length'];_0x35b8c3++){for(let _0x51f1bc=0x0;_0x51f1bc<this['table'][_0x35b8c3]['length'];_0x51f1bc++){if(this['table'][_0x35b8c3][_0x51f1bc]===_0x386d90)return {'row':_0x35b8c3,'column':_0x51f1bc};}}return {'row':-1,'column':-1};}async['validate'](){const _0x472bc2=[],_0x23f5d9=[];try{this['assertInitialized']()['then'](_0x17c1f0=>{_0x472bc2['push'](_0x17c1f0);})['catch'](_0x3b2288=>_0x23f5d9['push'](_0x3b2288));const {success:_0x26fb3d,message:_0x1f9981,error:_0x59365e,data:_0x56cc6e}=await this['toJson']();if(!_0x56cc6e)throw 'Cannot\x20access\x20Json\x20Object\x20data.';_0x472bc2['push'](..._0x56cc6e['validMsgs']),_0x23f5d9['push'](..._0x56cc6e['tableErrors']);const {jsonObj:_0x5dbf12}=_0x56cc6e;for(const _0x214a68 of this['validators']){await _0x214a68['validate'](_0x472bc2,_0x23f5d9,this,_0x5dbf12);}let _0x3bcb45=this['name']+'\x20ran\x20its\x20validations.';if(_0x472bc2['length']>0x0)_0x3bcb45+='\x20'+_0x472bc2['length']+'\x20validations\x20were\x20successful.';if(_0x23f5d9['length']>0x0)_0x3bcb45+='\x20'+_0x23f5d9['length']+'\x20validations\x20failed.';return {'success':!![],'message':_0x3bcb45,'data':{'validMsgs':_0x472bc2,'tableErrors':_0x23f5d9}};}catch(_0x379228){return _0x23f5d9['push']({'error':_0x379228||this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','from':this['name']+'.validate()','cause':_0x379228}),{'success':![],'message':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','data':{'validMsgs':_0x472bc2,'tableErrors':_0x23f5d9}};}}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['initializeTable'](_0x3c60d3){try{let _0x4dd8fc;if(_0x3c60d3 instanceof File)_0x4dd8fc=await this['fromXML'](_0x3c60d3);else _0x4dd8fc=await this['fromCSVString'](_0x3c60d3);if(!_0x4dd8fc['success']||!_0x4dd8fc['data'])return _0x4dd8fc;if(_0x4dd8fc['data']['table']['length']===0x0)throw new Error('Cannot\x20set\x20an\x20empty\x20table.');const {table:_0x26835c,headers:_0x5a396e}=_0x4dd8fc['data'];return this['table']=_0x26835c,this['headers']=_0x5a396e,{'success':!![],'message':'Successfully\x20set\x20table.'};}catch(_0xa3f17a){return {'success':![],'message':'Error\x20setting\x20table.','error':_0xa3f17a};}}}
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);}}
45
45
 
46
- class DTValidator{['name'];constructor(_0x4b99db){this['name']=_0x4b99db;}['getName'](){return this['name'];}}
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.');}}
47
47
 
48
- class LastILOTaxo extends DTValidator{constructor(){super('LAST_ILO_TAXO');}async['validate'](_0x10fd4a,_0x4174f4,_0x17e824,_0x257996){const _0x5ad092=[];if(!_0x257996){_0x4174f4['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x740d47=0x0;_0x740d47<_0x257996['co']['length'];_0x740d47++){const _0x6eb4f1=_0x257996['co'][_0x740d47];if(!_0x6eb4f1){const {row:_0x35037e,column:_0x398395}=await _0x17e824['findValue'](_0x740d47+0x1+'');_0x5ad092['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x740d47+0x1)+'.','row':_0x35037e,'column':_0x398395+0x1,'from':this['name']});continue;}if(!_0x6eb4f1?.['ilo']){const {row:_0x12adfc,column:_0x4a1357}=await _0x17e824['findValue'](_0x6eb4f1['statement']);_0x5ad092['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x740d47+0x1)+'.','row':_0x12adfc,'column':_0x4a1357,'from':this['name']});continue;}const _0x566143=_0x6eb4f1['ilo']['length']-0x1,_0x5dcd30=_0x6eb4f1['ilo'][_0x566143];if(!_0x5dcd30['taxonomy_level']){const {row:_0x44ae95,column:_0x4ba38e}=await _0x17e824['findValue'](_0x5dcd30['statement']);_0x5ad092['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x740d47+0x1)+'\x20has\x20no\x20Taxonomy\x20Level.','row':_0x44ae95,'column':_0x4ba38e,'from':this['name']});continue;}if(_0x5dcd30['taxonomy_level']!==_0x6eb4f1['taxonomy_level']){const {row:_0x36444e,column:_0x22eece}=await _0x17e824['findValue'](_0x5dcd30['statement']);_0x5ad092['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x740d47+0x1)+'\x20does\x20not\x20match\x20the\x20CO\x27s\x20Taxonomy\x20Level.\x20('+_0x5dcd30['taxonomy_level']+'\x20!==\x20'+_0x6eb4f1['taxonomy_level']+')','row':_0x36444e,'column':_0x22eece,'from':this['name']});}}if(_0x5ad092['length']>0x0)_0x4174f4['push'](..._0x5ad092);else _0x10fd4a['push'](this['name']+'\x20successfully\x20validated.');return;}}
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);}}
49
49
 
50
- const invalidTaxos=['remembering','understanding'];class MinCOtaxo extends DTValidator{constructor(){super('MIN_CO_TAXO');}async['validate'](_0x5afc92,_0x3be1c8,_0x225c63,_0x40ce38){const _0x55e3b5=[];if(!_0x40ce38){_0x3be1c8['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(const _0x3cff4c of _0x40ce38['co']){if(!_0x3cff4c['taxonomy_level']){_0x55e3b5['push']({'error':'No\x20taxonomy\x20level\x20for\x20CO\x20Statement:\x20'+_0x3cff4c['statement'],'from':this['name']});continue;}for(const _0x243c3e of invalidTaxos){if(_0x3cff4c['taxonomy_level']===_0x243c3e){const {row:_0x1f1c29,column:_0x1ea00d}=await _0x225c63['findValue'](_0x3cff4c['statement']);let _0x1ee11e={'error':'Cannot\x20have\x20CO\x20Taxonomy\x20Level\x20of\x20lower\x20than\x20Applying:\x20'+_0x3cff4c['taxonomy_level']['toUpperCase'](),'from':this['name']};(_0x1f1c29!==-1||_0x1ea00d!==-1)&&(_0x1ee11e={..._0x1ee11e,'row':_0x1f1c29,'column':_0x1ea00d}),_0x55e3b5['push'](_0x1ee11e);}}}if(_0x55e3b5['length']>0x0)_0x3be1c8['push'](..._0x55e3b5);else _0x5afc92['push'](this['name']+'\x20successfully\x20validated.');return;}}
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;}}
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'](_0x5077bb,_0x1d6c95,_0x5cdb25,_0x16ef49){const _0x4fe462=[];if(!_0x16ef49){_0x1d6c95['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x5d70ec=0x0;_0x5d70ec<_0x16ef49['co']['length'];_0x5d70ec++){const _0x383b7c=_0x16ef49['co'][_0x5d70ec];if(!_0x383b7c){const {row:_0x1ee97d,column:_0x2316a5}=await _0x5cdb25['findValue'](_0x5d70ec+0x1+'');_0x4fe462['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x5d70ec+0x1)+'.','row':_0x1ee97d,'column':_0x2316a5+0x1,'from':this['name']});continue;}if(!_0x383b7c?.['ilo']){const {row:_0x498b34,column:_0xa56e06}=await _0x5cdb25['findValue'](_0x383b7c['statement']);_0x4fe462['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x5d70ec+0x1)+'.','row':_0x498b34,'column':_0xa56e06,'from':this['name']});continue;}const _0x3b33ca=await _0x5cdb25['findValue'](_0x383b7c['ilo'][0x0]['statement']),_0x20b1d1=_0x383b7c['ilo']['map'](_0xd25d9e=>taxoOrder[_0xd25d9e['taxonomy_level']]);let _0xfd5b46=_0x20b1d1[0x0];for(let _0xb02e38=0x1;_0xb02e38<_0x20b1d1['length'];_0xb02e38++){if(_0x20b1d1[_0xb02e38]<_0xfd5b46){_0x4fe462['push']({'error':'Under\x20CO\x20'+(_0x5d70ec+0x1)+',\x20ILO\x20'+(_0xb02e38+0x1)+'\x20should\x20not\x20have\x20a\x20taxonomy\x20level\x20lower\x20than\x20ILO\x20'+_0xb02e38+'\x27s.','row':_0x3b33ca['row'],'column':_0x3b33ca['column']+_0xb02e38,'from':this['name']});continue;}_0xfd5b46=_0x20b1d1[_0xb02e38];}}if(_0x4fe462['length']>0x0)_0x1d6c95['push'](..._0x4fe462);else _0x5077bb['push'](this['name']+'\x20successfully\x20validated.');return;}}
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);}}
53
53
 
54
- class CoaepDT extends DataTable{['faculty']=null;['course']=null;['sy']=null;['semester']=null;constructor(){super(),this['name']='CoaepDT',this['useValidator'](new MinCOtaxo()),this['useValidator'](new LastILOTaxo()),this['useValidator'](new ILOTaxoOrder());}async['fromCSVString'](_0x42dbe6){try{const _0x12792e={'name':this['name'],'table':[],'headers':[],'types':[]},_0xb40299=_0x11bf51['parse'](_0x42dbe6,{'skipEmptyLines':![]})['data'];_0x12792e['headers']=['No.','Course\x20Outcome\x20Statement','Intended\x20Learning\x20Outcome','Assessment\x20Tool','Performance\x20Target'];const {headerRowIndex:_0x48e57b,coIdx:_0x2f81ec,iloIdx:_0x483145,assessToolIdx:_0x205a47,perfTargetIdx:_0x56b961}=getCoaepHeader(_0xb40299);if(_0x48e57b===-0x1)throw new Error('Could\x20not\x20auto-detect\x20header\x20row.\x20Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.');_0xb40299['forEach'](_0x46c41a=>{const _0x170d3b=_0x46c41a['indexOf']('Name\x20of\x20Faculty:'),_0x5e3a14=_0x46c41a['indexOf']('School\x20Year'),_0x322266=_0x46c41a['indexOf']('Course:'),_0x323782=_0x46c41a['indexOf']('Semester');_0x170d3b!==-0x1&&(this['faculty']=_0x46c41a[_0x170d3b+0x1]?.['trim']()||this['faculty']);_0x5e3a14!==-0x1&&(this['sy']=_0x46c41a[_0x5e3a14+0x1]?.['trim']()||this['sy']);_0x322266!==-0x1&&(this['course']=_0x46c41a[_0x322266+0x1]?.['trim']()||this['course']);if(_0x323782!==-0x1){const _0x208e53=_0x46c41a[_0x323782+0x1]?.['trim']()||'',_0x207cca=_0x208e53['match'](/\d+/)?.[0x0];this['semester']=_0x207cca?parseInt(_0x207cca,0xa):this['semester'];}});for(let _0x1fc913=0x0;_0x1fc913<=_0xb40299['length'];_0x1fc913++){const _0xcb9335=_0xb40299[_0x1fc913];if(!_0xcb9335)break;if(_0x1fc913<=_0x48e57b)continue;let _0x25a60e=_0xcb9335[_0x2f81ec-0x1]?.['trim']()||'',_0x35c99d=_0xcb9335[_0x2f81ec]?.['trim']()||'';/^\d+$/['test'](_0xcb9335[_0x2f81ec]?.['trim']()||'')&&(_0x25a60e=_0xcb9335[_0x2f81ec]?.['trim']()||'',_0x35c99d=_0xcb9335[_0x2f81ec+0x1]?.['trim']()||'');if(_0xcb9335[_0x483145])_0x12792e['table']['push']([_0x25a60e,_0x35c99d,_0xcb9335[_0x483145]?.['trim']()||'',_0xcb9335[_0x205a47]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0xcb9335[_0x56b961]?.['replace'](/\s+/g,'\x20')['trim']()||'']);else break;}return {'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable.','data':_0x12792e};}catch(_0x8c3cbe){return {'success':![],'message':'Error\x20parsing\x20COAEP\x20table','error':_0x8c3cbe};}}async['toJson'](){const _0x2371e2=[],_0x24ea08=[],_0x367a86='COAEPDT_TO_JSON';try{await this['assertInitialized']();const _0x3cd0ac={'faculty':this['faculty'],'course':this['course'],'sy':this['sy'],'semester':this['semester'],'co':[]};let _0x36c32a=null,_0x206ae9='',_0x11a5b9='';this['table']['forEach']((_0x134656,_0x571487)=>{if(_0x571487===0x0&&!_0x134656[0x1])_0x24ea08['push']({'error':'Cannot\x20have\x20empty\x20CO\x20Statement\x20in\x20first\x20row.','row':0x0,'column':0x1,'from':_0x367a86});_0x134656[0x1]&&(_0x206ae9='',_0x11a5b9='');const _0x5b312d=_0x134656[0x1],_0x19de8d=_0x134656[0x2],_0x490741=_0x134656[0x3]||_0x206ae9,_0x8a6272=_0x134656[0x4]||_0x11a5b9;if(!_0x19de8d)_0x24ea08['push']({'error':'Cannot\x20have\x20empty\x20ILO.','row':0x1,'column':0x2,'from':_0x367a86});if(!_0x490741)_0x24ea08['push']({'error':'Cannot\x20have\x20empty\x20Assessment\x20Tool.','row':_0x571487,'column':0x3,'from':_0x367a86});if(!_0x8a6272)_0x24ea08['push']({'error':'Cannot\x20have\x20empty\x20Performance\x20Target.','row':_0x571487,'column':0x4,'from':_0x367a86});if(_0x134656[0x1]){const {cognitive_level:_0x3a2b8a,taxonomy_level:_0x747bb0,verb:_0x47ed06}=extractFromObjective(_0x5b312d),_0x2d107d={'statement':_0x5b312d,'ilo':[],'taxonomy_level':_0x747bb0,'cognitive_level':_0x3a2b8a,'verb':_0x47ed06};_0x36c32a=_0x2d107d,_0x3cd0ac['co']['push'](_0x2d107d);}const {cognitive_level:_0x451e06,taxonomy_level:_0x336dd1,verb:_0x5a8bf8}=extractFromObjective(_0x19de8d),{performance_target:_0xc28dc0,passing_score:_0x5bf087}=performaceTarget(_0x8a6272),_0xef75ea={'statement':_0x19de8d,'assessment_tool':_0x490741,'performance_target':_0xc28dc0,'passing_score':_0x5bf087,'cognitive_level':_0x451e06,'taxonomy_level':_0x336dd1,'verb':_0x5a8bf8};_0x36c32a['ilo']['push'](_0xef75ea);});if(_0x24ea08['length'])return _0x24ea08['push']({'error':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','from':_0x367a86}),{'success':![],'message':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','data':{'jsonObj':_0x3cd0ac,'validMsgs':_0x2371e2,'tableErrors':_0x24ea08}};return _0x2371e2['push']('Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON.'),{'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON','data':{'jsonObj':_0x3cd0ac,'validMsgs':_0x2371e2,'tableErrors':_0x24ea08}};}catch(_0x22d80f){return _0x24ea08['push']({'error':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','from':_0x367a86}),{'success':![],'message':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','error':_0x22d80f,'data':{'jsonObj':null,'tableErrors':_0x24ea08}};}}}
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'});}}
55
55
 
56
- class Client{['BASE_URL'];constructor(_0x227315){this['BASE_URL']=_0x227315;}['Parser'](){return {'curriculum':async _0xe5cb45=>{const _0xb40594=await uploadCurriculum(this['BASE_URL'],_0xe5cb45);return _0xb40594;},'courseOffering':async _0x1b8cd5=>{const _0x57292e=await uploadCourseOffering(this['BASE_URL'],_0x1b8cd5);return _0x57292e;},'coaep':async(_0xe12892,_0x40abfb)=>{const _0x2e68cc=await uploadCOAEP(this['BASE_URL'],_0xe12892,_0x40abfb);return _0x2e68cc;},'enrolledStudent':async _0x1c4b07=>{const _0x19a77d=await uploadEnrolledStudent(this['BASE_URL'],_0x1c4b07);return _0x19a77d;},'classlist':async(_0x27b374,_0x58e817,_0x3b5b31)=>{const _0x10d611=await uploadClassList(this['BASE_URL'],_0x27b374,_0x58e817,_0x3b5b31);return _0x10d611;},'assessmentData':async _0x1b8315=>{const _0x49d587=await uploadAssessmentData(this['BASE_URL'],_0x1b8315);return _0x49d587;},'deptFaculty':async _0x3c09f7=>{const _0x46a0bf=await uploadDeptFaculty(this['BASE_URL'],_0x3c09f7);return _0x46a0bf;},'poaep':async(_0x3958e3,_0xc0c00e,_0x5022eb,_0x177b59)=>{const _0x32f866=await uploadPOAEP(this['BASE_URL'],_0x3958e3,_0xc0c00e,_0x5022eb,_0x177b59);return _0x32f866;},'CoaepDT':CoaepDT};}}
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};}}
57
57
 
58
58
  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.0",
3
+ "version": "1.6.2",
4
4
  "license": "ISC",
5
5
  "dependencies": {
6
6
  "papaparse": "^5.5.3",