@obe-loms/coms-parser 1.6.3 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,21 @@
1
1
  import { COAEP } from "../../types/coaep";
2
- import { DataTable, DataTableInfo } from "./DataTable";
2
+ import { DataTable } from "./DataTable";
3
3
  import { ParserResult } from "../types/ParserResult";
4
4
  import DataTableException from "../types/DataTableException";
5
- export type CoaepDTCellType = null | string | (number | null)[];
6
- export declare class CoaepDT extends DataTable<COAEP, CoaepDTCellType> {
5
+ export type CoaepRow = [
6
+ string | null,
7
+ // CO No
8
+ string | null,
9
+ // CO Statement
10
+ string | null,
11
+ // ILO Statement
12
+ string | null,
13
+ [
14
+ number | null,
15
+ number | null
16
+ ]
17
+ ];
18
+ export declare class CoaepDT extends DataTable<COAEP, CoaepRow> {
7
19
  faculty: string | null;
8
20
  course: string | null;
9
21
  sy: string | null;
@@ -14,9 +26,9 @@ export declare class CoaepDT extends DataTable<COAEP, CoaepDTCellType> {
14
26
  */
15
27
  constructor();
16
28
  validateFields(validMsgs: string[], tableErrors: DataTableException[]): Promise<void>;
17
- fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo<CoaepDTCellType>>>;
29
+ fromCSVString(csvString: string): Promise<ParserResult<CoaepRow[]>>;
18
30
  toJson(): Promise<ParserResult<{
19
- jsonObj: COAEP | null;
31
+ jsonObj: COAEP;
20
32
  validMsgs: string[];
21
33
  tableErrors: DataTableException[];
22
34
  }>>;
@@ -1,27 +1,27 @@
1
1
  import { ParserResult } from "../types/ParserResult";
2
2
  import DataTableException from "../types/DataTableException";
3
3
  import { DTValidator } from "./DTValidator";
4
- export type DefaultCellType = string | null;
5
- export type DataTableInfo<U> = {
4
+ export type DataTableInfo<RowType = any[]> = {
6
5
  name: string;
7
- table: U[][];
8
6
  headers: string[];
7
+ table: RowType[];
9
8
  };
10
- export declare abstract class DataTable<T, U = DefaultCellType> {
9
+ export declare abstract class DataTable<Obj, RowType> {
11
10
  protected name: string;
12
- protected table: U[][];
13
11
  protected headers: string[];
14
- protected validators: DTValidator<this, T>[];
12
+ protected table: RowType[];
13
+ protected validators: DTValidator<this, Obj>[];
15
14
  /**
16
15
  * Creates a new DataTable, initializes default values.
17
16
  * If no name is given, the name defaults to "DataTable".
18
17
  *
19
- * @template T - The type of the DataTable JSON output.
20
- * @template U - The type of the inner table cells.
18
+ * @template Obj - The type of the DataTable JSON output.
19
+ * @template RowType - The type of each row of the inner table.
21
20
  *
22
21
  * @param {string} _name - The name of the DataTable. Defaults to "DataTable".
22
+ * @param {string[]} _headers - The headers of the DataTable.
23
23
  */
24
- constructor(_name?: string);
24
+ constructor(_name: string | undefined, _headers: string[]);
25
25
  /**
26
26
  * Returns the name of the DataTable.
27
27
  * @returns string
@@ -36,7 +36,7 @@ export declare abstract class DataTable<T, U = DefaultCellType> {
36
36
  * Gets the DataTable from the current object.
37
37
  * @returns ParserResult<DataTableInfo>
38
38
  */
39
- getTable(): ParserResult<DataTableInfo<U>>;
39
+ getTable(): ParserResult<DataTableInfo<RowType>>;
40
40
  /**
41
41
  * Sets the DataTable from a given table.
42
42
  * Asserts first if the DataTable is initialized,
@@ -45,7 +45,7 @@ export declare abstract class DataTable<T, U = DefaultCellType> {
45
45
  * @param table - Internal table of type (string | null)[][].
46
46
  * @returns A Promise that resolves when the table has been set.
47
47
  */
48
- setTable(table: U[][]): Promise<void>;
48
+ setTable(table: RowType[]): Promise<void>;
49
49
  /**
50
50
  * Populates the internal table from a given File or CSV string.
51
51
  *
@@ -55,22 +55,21 @@ export declare abstract class DataTable<T, U = DefaultCellType> {
55
55
  * @param {File | string} data - The File or CSV string to initialize the DataTable from.
56
56
  * @returns A Promise that resolves to a ParserResult.
57
57
  */
58
- initializeTable(data: File | string): Promise<ParserResult<DataTableInfo<U>>>;
58
+ initializeTable(data: File | string, sheetName?: string): Promise<ParserResult<RowType[]>>;
59
59
  /**
60
60
  * Asserts that the DataTable has been initialized.
61
61
  * If not, it throws a DataTableException.
62
62
  *
63
- * @returns A Promise that resolves with a string message.
64
63
  * @throws {DataTableException} If the DataTable has not been initialized.
65
64
  */
66
- assertInitialized(): Promise<string>;
65
+ assertInitialized(): Promise<void>;
67
66
  /**
68
67
  * Parses a CSV string into a DataTable.
69
68
  *
70
69
  * @param csvString - The CSV string to parse.
71
70
  * @returns A Promise that resolves to a ParserResult when the parsing is complete.
72
71
  */
73
- abstract fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo<U>>>;
72
+ abstract fromCSVString(csvString: string): Promise<ParserResult<RowType[]>>;
74
73
  /**
75
74
  * Converts the DataTable to its JSON representation.
76
75
  * The method will run all validators on the DataTable before conversion.
@@ -80,7 +79,7 @@ export declare abstract class DataTable<T, U = DefaultCellType> {
80
79
  * @returns A Promise that resolves when the conversion is complete.
81
80
  */
82
81
  abstract toJson(): Promise<ParserResult<{
83
- jsonObj: T | null;
82
+ jsonObj: Obj;
84
83
  validMsgs: string[];
85
84
  tableErrors: DataTableException[];
86
85
  }>>;
@@ -92,14 +91,14 @@ export declare abstract class DataTable<T, U = DefaultCellType> {
92
91
  * @param sheetName - Optional sheetname to set the DataTable from. Defaults to 1st sheet.
93
92
  * @returns A Promise that resolves to a ParserResult when the DataTable is set.
94
93
  */
95
- fromXML(xls: File, sheetName?: string): Promise<ParserResult<DataTableInfo<U>>>;
94
+ fromXML(xls: File, sheetName?: string): Promise<ParserResult<RowType[]>>;
96
95
  /**
97
96
  * Finds the row and column index of a given string in the DataTable.
98
97
  *
99
98
  * @param {string} str - The string to search for.
100
99
  * @returns {Promise<{ row: number; column: number }>} - A promise resolving to the indices. Defaults to {row: -1, column: -1} if not found.
101
100
  */
102
- findValue(str: string): Promise<{
101
+ findValue(val: string | any): Promise<{
103
102
  row: number;
104
103
  column: number;
105
104
  }>;
@@ -130,5 +129,5 @@ export declare abstract class DataTable<T, U = DefaultCellType> {
130
129
  *
131
130
  * @param validator - The validator to add to the DataTable.
132
131
  */
133
- useValidator(validator: DTValidator<this, T>): void;
132
+ useValidator(validator: DTValidator<this, Obj>): void;
134
133
  }
@@ -1,20 +1 @@
1
- import { POAEP } from "../../types/poaep";
2
- import DataTableException from "../types/DataTableException";
3
- import ParserResult from "../types/ParserResult";
4
- import { DataTable, DataTableInfo } from "./DataTable";
5
- type CellType = null | string | (string | number | null)[];
6
- export declare class PoaepDT extends DataTable<POAEP, CellType> {
7
- /**
8
- * Initializes the DataTable for POAEP
9
- * Also sets up custom validators for the DataTable
10
- */
11
- constructor();
12
- fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo<CellType>>>;
13
- toJson(): Promise<ParserResult<{
14
- jsonObj: POAEP | null;
15
- validMsgs: string[];
16
- tableErrors: DataTableException[];
17
- }>>;
18
- validateFields(validMsgs: string[], tableErrors: DataTableException[]): Promise<void>;
19
- }
20
1
  export {};
package/bundle.js CHANGED
@@ -1,60 +1,60 @@
1
- import _0x5084af from 'papaparse';
2
- import * as _0x3eec61 from 'xlsx';
1
+ import _0x204ec9 from 'papaparse';
2
+ import * as _0x1a3ace from 'xlsx';
3
3
 
4
- function parseCurriculum(_0x4d1c33){let _0x384931='',_0x130eae='',_0x51400f=0x0,_0xeedfb5=null;const _0xf24785=[];return _0x5084af['parse'](_0x4d1c33,{'skipEmptyLines':!![],'complete':_0x1e9f7d=>{_0x1e9f7d['data']['forEach'](_0x55be75=>{const _0x18c7d1=_0x55be75['map'](_0x2ad793=>(_0x2ad793??'')['toString']()['trim']()),_0xb4a65c=_0x18c7d1[0x0]??'';if(_0xb4a65c['includes']('Rev#')){const _0x2f9582=_0xb4a65c['match'](/([A-Z0-9]+)\s*-\s*.*:\s*(.*?)\s+Rev#\s*(\d+)/i);_0x2f9582&&(_0x384931=_0x2f9582[0x1]?.['trim']()??'',_0x130eae=_0x2f9582[0x2]?.['trim']()??'',_0x51400f=parseInt(_0x2f9582[0x3]??'0',0xa));return;}if(/FIRST YEAR/i['test'](_0xb4a65c)){_0xeedfb5=0x1;return;}if(/SECOND YEAR/i['test'](_0xb4a65c)){_0xeedfb5=0x2;return;}if(/THIRD YEAR/i['test'](_0xb4a65c)){_0xeedfb5=0x3;return;}if(/FOURTH YEAR/i['test'](_0xb4a65c)){_0xeedfb5=0x4;return;}if(/FIFTH YEAR/i['test'](_0xb4a65c)){_0xeedfb5=0x5;return;}if(/First Semester/i['test'](_0xb4a65c)||/Second Semester/i['test'](_0xb4a65c)||/Summer/i['test'](_0xb4a65c))return;const _0x411ada=[{'sem':0x1,'offset':0x0},{'sem':0x2,'offset':0x6},{'sem':0x3,'offset':0xc}];_0x411ada['forEach'](({sem:_0x5de49d,offset:_0x4c9b1b})=>{const _0xb81082=_0x18c7d1[_0x4c9b1b]??'',_0x106170=_0x18c7d1[_0x4c9b1b+0x1]??'',_0x2d22e7=_0x18c7d1[_0x4c9b1b+0x2]??'',_0x57a40f=_0x18c7d1[_0x4c9b1b+0x3]??'',_0x56480e=_0x18c7d1[_0x4c9b1b+0x4]??'';_0xb81082&&_0xeedfb5&&_0xf24785['push']({'curr_id':_0x384931,'program_name':_0x130eae,'revision_no':_0x51400f,'year_level':_0xeedfb5,'sem':_0x5de49d,'course_id':_0xb81082,'course_desc':_0x106170,'total_units':_0x2d22e7,'lec_unit':_0x57a40f,'lab_unit':_0x56480e});});});}}),_0xf24785;}
4
+ function parseCurriculum(_0x47ca94){let _0x14a2cb='',_0x5ce737='',_0x45805c=0x0,_0x179e2b=null;const _0x40855f=[];return _0x204ec9['parse'](_0x47ca94,{'skipEmptyLines':!![],'complete':_0x5c1f20=>{_0x5c1f20['data']['forEach'](_0xa0da37=>{const _0x1eee1d=_0xa0da37['map'](_0x311717=>(_0x311717??'')['toString']()['trim']()),_0x52590d=_0x1eee1d[0x0]??'';if(_0x52590d['includes']('Rev#')){const _0x1b7cc7=_0x52590d['match'](/([A-Z0-9]+)\s*-\s*.*:\s*(.*?)\s+Rev#\s*(\d+)/i);_0x1b7cc7&&(_0x14a2cb=_0x1b7cc7[0x1]?.['trim']()??'',_0x5ce737=_0x1b7cc7[0x2]?.['trim']()??'',_0x45805c=parseInt(_0x1b7cc7[0x3]??'0',0xa));return;}if(/FIRST YEAR/i['test'](_0x52590d)){_0x179e2b=0x1;return;}if(/SECOND YEAR/i['test'](_0x52590d)){_0x179e2b=0x2;return;}if(/THIRD YEAR/i['test'](_0x52590d)){_0x179e2b=0x3;return;}if(/FOURTH YEAR/i['test'](_0x52590d)){_0x179e2b=0x4;return;}if(/FIFTH YEAR/i['test'](_0x52590d)){_0x179e2b=0x5;return;}if(/First Semester/i['test'](_0x52590d)||/Second Semester/i['test'](_0x52590d)||/Summer/i['test'](_0x52590d))return;const _0x5ca6d8=[{'sem':0x1,'offset':0x0},{'sem':0x2,'offset':0x6},{'sem':0x3,'offset':0xc}];_0x5ca6d8['forEach'](({sem:_0x502359,offset:_0x48ccba})=>{const _0x3d0a89=_0x1eee1d[_0x48ccba]??'',_0x12b206=_0x1eee1d[_0x48ccba+0x1]??'',_0x245b73=_0x1eee1d[_0x48ccba+0x2]??'',_0x33d374=_0x1eee1d[_0x48ccba+0x3]??'',_0x2f5939=_0x1eee1d[_0x48ccba+0x4]??'';_0x3d0a89&&_0x179e2b&&_0x40855f['push']({'curr_id':_0x14a2cb,'program_name':_0x5ce737,'revision_no':_0x45805c,'year_level':_0x179e2b,'sem':_0x502359,'course_id':_0x3d0a89,'course_desc':_0x12b206,'total_units':_0x245b73,'lec_unit':_0x33d374,'lab_unit':_0x2f5939});});});}}),_0x40855f;}
5
5
 
6
- function convertToCSVFile(_0x1bae0d,_0x51df03){return new Promise((_0x5b69e5,_0x2ce5a2)=>{const _0x2664cd=new FileReader();_0x2664cd['onload']=_0x28fb30=>{const _0x584b18=_0x28fb30['target']?.['result'];if(!_0x584b18){_0x2ce5a2(new Error('Failed\x20to\x20read\x20file'));return;}try{const _0x13fd3b=_0x3eec61['read'](_0x584b18,{'type':'array'});!_0x51df03&&(_0x51df03=_0x13fd3b['SheetNames'][0x0]);if(!_0x51df03){_0x2ce5a2(new Error('No\x20sheets\x20found\x20in\x20workbook'));return;}const _0x31c393=_0x13fd3b['Sheets'][_0x51df03];if(!_0x31c393){_0x2ce5a2(new Error('No\x20sheets\x20found\x20in\x20worksheet'));return;}const _0x3ebca0=_0x3eec61['utils']['sheet_to_csv'](_0x31c393,{'strip':!![]}),_0x1d0198=_0x1bae0d['name']['replace'](/\.[^/.]+$/,'.csv'),_0x1ee11b=new File([_0x3ebca0],_0x1d0198,{'type':'text/csv','lastModified':Date['now']()});_0x5b69e5(_0x1ee11b);}catch(_0x536d98){_0x2ce5a2(_0x536d98);}},_0x2664cd['onerror']=()=>{_0x2ce5a2(new Error('File\x20reading\x20failed'));},_0x2664cd['readAsArrayBuffer'](_0x1bae0d);});}
6
+ function convertToCSVFile(_0x3bb9bd,_0x18d14c){return new Promise((_0x482d15,_0xb2919a)=>{const _0xdf3ef9=new FileReader();_0xdf3ef9['onload']=_0x3a4630=>{const _0x32892c=_0x3a4630['target']?.['result'];if(!_0x32892c){_0xb2919a(new Error('Failed\x20to\x20read\x20file'));return;}try{const _0x133311=_0x1a3ace['read'](_0x32892c,{'type':'array'});!_0x18d14c&&(_0x18d14c=_0x133311['SheetNames'][0x0]);if(!_0x18d14c){_0xb2919a(new Error('No\x20sheets\x20found\x20in\x20workbook'));return;}const _0x3356a7=_0x133311['Sheets'][_0x18d14c];if(!_0x3356a7){_0xb2919a(new Error('No\x20sheets\x20found\x20in\x20worksheet'));return;}const _0x292383=_0x1a3ace['utils']['sheet_to_csv'](_0x3356a7,{'strip':!![]}),_0x48d222=_0x3bb9bd['name']['replace'](/\.[^/.]+$/,'.csv'),_0x34a86f=new File([_0x292383],_0x48d222,{'type':'text/csv','lastModified':Date['now']()});_0x482d15(_0x34a86f);}catch(_0x5cd568){_0xb2919a(_0x5cd568);}},_0xdf3ef9['onerror']=()=>{_0xb2919a(new Error('File\x20reading\x20failed'));},_0xdf3ef9['readAsArrayBuffer'](_0x3bb9bd);});}
7
7
 
8
- async function uploadCurriculum(_0x50ac86,_0x2235f3){try{const _0x3b90e7=await convertToCSVFile(_0x2235f3),_0x166c13=await _0x3b90e7['text'](),_0x415cc3=parseCurriculum(_0x166c13),_0x4a29e1=_0x5084af['unparse'](_0x415cc3),_0x5a9628=new File([_0x4a29e1],_0x3b90e7['name'],{'type':'text/csv'}),_0x54cd64=new FormData();_0x54cd64['append']('csvFile',_0x5a9628);const _0x41a7ad=await fetch(_0x50ac86+'/curr-courses/upload',{'method':'POST','body':_0x54cd64});if(!_0x41a7ad['ok']){const _0x32ec70=await _0x41a7ad['json']();throw _0x32ec70;}return _0x41a7ad['json']();}catch(_0x409ec8){throw _0x409ec8;}}
8
+ async function uploadCurriculum(_0x1e532b,_0x13c1b7){try{const _0x19d45f=await convertToCSVFile(_0x13c1b7),_0x8ef6e6=await _0x19d45f['text'](),_0x4f34fe=parseCurriculum(_0x8ef6e6),_0x390d42=_0x204ec9['unparse'](_0x4f34fe),_0x14742d=new File([_0x390d42],_0x19d45f['name'],{'type':'text/csv'}),_0x68a5d7=new FormData();_0x68a5d7['append']('csvFile',_0x14742d);const _0x419ad7=await fetch(_0x1e532b+'/curr-courses/upload',{'method':'POST','body':_0x68a5d7});if(!_0x419ad7['ok']){const _0x457b03=await _0x419ad7['json']();throw _0x457b03;}return _0x419ad7['json']();}catch(_0x2a3f8a){throw _0x2a3f8a;}}
9
9
 
10
- function parseCourseOffering(_0x344041){let _0x21b53c='',_0x1d0633='';const _0x1cabba=[],_0x496958=_0x5084af['parse'](_0x344041,{'header':![],'skipEmptyLines':!![],'delimiter':','}),_0x54d419=_0x496958['data'];for(let _0x3373c7=0x0;_0x3373c7<Math['min'](0x5,_0x54d419['length']);_0x3373c7++){const _0x5b99ca=_0x54d419[_0x3373c7];if(_0x5b99ca&&_0x5b99ca['length']>0x0){const _0x38b3bd=_0x5b99ca[0x0]?.['toString']()||'',_0x27bdba=_0x38b3bd['match'](/(First|Second)\s+Sem\s+S\/Y\s+(\d{4}-\d{4})/i);if(_0x27bdba){_0x21b53c=_0x27bdba[0x1]?.['toLowerCase']()==='first'?'1':'2';if(_0x27bdba[0x2]){const _0x2d0394=_0x27bdba[0x2]['match'](/(\d{2})(\d{2})-(\d{2})(\d{2})/);_0x2d0394&&_0x2d0394[0x2]&&_0x2d0394[0x4]&&(_0x1d0633=_0x2d0394[0x2]+_0x2d0394[0x4]);}}}}let _0x22b277=-1;for(let _0x44c1ee=0x0;_0x44c1ee<_0x54d419['length'];_0x44c1ee++){const _0xd59eb7=_0x54d419[_0x44c1ee];if(_0xd59eb7&&_0xd59eb7['some'](_0x5e6f32=>_0x5e6f32?.['toString']()['toUpperCase']()['includes']('CODE'))){_0x22b277=_0x44c1ee;break;}}if(_0x22b277===-1)throw new Error('Could\x20not\x20find\x20header\x20row\x20in\x20CSV\x20data');let _0x569ebb={'code':'','description':'','unit':0x0};for(let _0x35d85a=_0x22b277+0x1;_0x35d85a<_0x54d419['length'];_0x35d85a++){const _0x539d21=_0x54d419[_0x35d85a];if(!_0x539d21||_0x539d21['length']<0x8)continue;const _0x5c8fbe=_0x539d21[0x1]?.['toString']()['trim']()||'',_0x341f87=_0x539d21[0x4]?.['toString']()['trim']()||'',_0x3c41d1=_0x539d21[0x5]?.['toString']()['trim']()||'',_0x3e358f=_0x539d21[0x6]?.['toString']()['trim']()||'',_0x2b7c9a=_0x539d21[0x7]?.['toString']()['trim']()||'',_0x3673b3=_0x539d21[0x3]?.['toString']()['trim']()||'';let _0x2ec956=_0x539d21[0x0]?.['toString']()['trim']()||'',_0x9c3d7a=_0x539d21[0x2]?.['toString']()['trim']()||'';if(!_0x5c8fbe)continue;if(!_0x2ec956)_0x2ec956=_0x569ebb['code'];if(!_0x9c3d7a)_0x9c3d7a=_0x569ebb['description'];let _0xcf2f1c=_0x569ebb['unit'];if(_0x3673b3){const _0x4df361=_0x3673b3['match'](/(\d+)/);_0x4df361&&_0x4df361[0x1]&&(_0xcf2f1c=parseInt(_0x4df361[0x1],0xa));}const _0x87e7e3={'sem':_0x21b53c,'school_year':_0x1d0633,'code':_0x2ec956,'course_no':_0x5c8fbe,'course_desc':_0x9c3d7a,'unit':_0xcf2f1c,'time':_0x341f87,'days':_0x3c41d1,'faculty':_0x3e358f,'room':_0x2b7c9a};_0x569ebb['code']=_0x2ec956,_0x569ebb['description']=_0x9c3d7a,_0x569ebb['unit']=_0xcf2f1c,_0x1cabba['push'](_0x87e7e3);}return _0x1cabba;}
10
+ function parseCourseOffering(_0x8105eb){let _0x5166a1='',_0x46eb52='';const _0x1263ee=[],_0x445e32=_0x204ec9['parse'](_0x8105eb,{'header':![],'skipEmptyLines':!![],'delimiter':','}),_0x3f2109=_0x445e32['data'];for(let _0x18411d=0x0;_0x18411d<Math['min'](0x5,_0x3f2109['length']);_0x18411d++){const _0x26b62b=_0x3f2109[_0x18411d];if(_0x26b62b&&_0x26b62b['length']>0x0){const _0x4421ba=_0x26b62b[0x0]?.['toString']()||'',_0x47a186=_0x4421ba['match'](/(First|Second)\s+Sem\s+S\/Y\s+(\d{4}-\d{4})/i);if(_0x47a186){_0x5166a1=_0x47a186[0x1]?.['toLowerCase']()==='first'?'1':'2';if(_0x47a186[0x2]){const _0x39d597=_0x47a186[0x2]['match'](/(\d{2})(\d{2})-(\d{2})(\d{2})/);_0x39d597&&_0x39d597[0x2]&&_0x39d597[0x4]&&(_0x46eb52=_0x39d597[0x2]+_0x39d597[0x4]);}}}}let _0x1a8dcd=-1;for(let _0x243bd0=0x0;_0x243bd0<_0x3f2109['length'];_0x243bd0++){const _0x31d0b0=_0x3f2109[_0x243bd0];if(_0x31d0b0&&_0x31d0b0['some'](_0x40a692=>_0x40a692?.['toString']()['toUpperCase']()['includes']('CODE'))){_0x1a8dcd=_0x243bd0;break;}}if(_0x1a8dcd===-1)throw new Error('Could\x20not\x20find\x20header\x20row\x20in\x20CSV\x20data');let _0x381280={'code':'','description':'','unit':0x0};for(let _0x37e4e2=_0x1a8dcd+0x1;_0x37e4e2<_0x3f2109['length'];_0x37e4e2++){const _0x3af46c=_0x3f2109[_0x37e4e2];if(!_0x3af46c||_0x3af46c['length']<0x8)continue;const _0x1d1eb6=_0x3af46c[0x1]?.['toString']()['trim']()||'',_0x34b41e=_0x3af46c[0x4]?.['toString']()['trim']()||'',_0x15b943=_0x3af46c[0x5]?.['toString']()['trim']()||'',_0x17e307=_0x3af46c[0x6]?.['toString']()['trim']()||'',_0x1dfc93=_0x3af46c[0x7]?.['toString']()['trim']()||'',_0x47c538=_0x3af46c[0x3]?.['toString']()['trim']()||'';let _0x62bbb9=_0x3af46c[0x0]?.['toString']()['trim']()||'',_0x3b7b64=_0x3af46c[0x2]?.['toString']()['trim']()||'';if(!_0x1d1eb6)continue;if(!_0x62bbb9)_0x62bbb9=_0x381280['code'];if(!_0x3b7b64)_0x3b7b64=_0x381280['description'];let _0x2f97a5=_0x381280['unit'];if(_0x47c538){const _0x3f42ac=_0x47c538['match'](/(\d+)/);_0x3f42ac&&_0x3f42ac[0x1]&&(_0x2f97a5=parseInt(_0x3f42ac[0x1],0xa));}const _0x43c144={'sem':_0x5166a1,'school_year':_0x46eb52,'code':_0x62bbb9,'course_no':_0x1d1eb6,'course_desc':_0x3b7b64,'unit':_0x2f97a5,'time':_0x34b41e,'days':_0x15b943,'faculty':_0x17e307,'room':_0x1dfc93};_0x381280['code']=_0x62bbb9,_0x381280['description']=_0x3b7b64,_0x381280['unit']=_0x2f97a5,_0x1263ee['push'](_0x43c144);}return _0x1263ee;}
11
11
 
12
- async function uploadCourseOffering(_0x441368,_0x43d64f){try{const _0x2ca68a=await convertToCSVFile(_0x43d64f),_0x19a713=await _0x2ca68a['text'](),_0x48ac74=parseCourseOffering(_0x19a713),_0x2955b0=_0x5084af['unparse'](_0x48ac74),_0x5dc851=new File([_0x2955b0],_0x2ca68a['name'],{'type':'text/csv'}),_0x13f002=new FormData();_0x13f002['append']('csvFile',_0x5dc851);const _0x1be852=await fetch(_0x441368+'/course-offerings/upload',{'method':'POST','body':_0x13f002});if(!_0x1be852['ok']){const _0x10d746=await _0x1be852['json']();throw _0x10d746;}return _0x1be852['json']();}catch(_0x35fb7c){throw _0x35fb7c;}}
12
+ async function uploadCourseOffering(_0x2f9b6c,_0x5d1596){try{const _0x4b66a8=await convertToCSVFile(_0x5d1596),_0x37e3d9=await _0x4b66a8['text'](),_0x1040e5=parseCourseOffering(_0x37e3d9),_0x5cb1eb=_0x204ec9['unparse'](_0x1040e5),_0x2a166a=new File([_0x5cb1eb],_0x4b66a8['name'],{'type':'text/csv'}),_0x247ddc=new FormData();_0x247ddc['append']('csvFile',_0x2a166a);const _0x1c731f=await fetch(_0x2f9b6c+'/course-offerings/upload',{'method':'POST','body':_0x247ddc});if(!_0x1c731f['ok']){const _0x5dbe10=await _0x1c731f['json']();throw _0x5dbe10;}return _0x1c731f['json']();}catch(_0x1a819d){throw _0x1a819d;}}
13
13
 
14
- function performaceTarget(_0x3d0a17){if(!_0x3d0a17)return {'performance_target':null,'passing_score':null};const _0x4f1aff=_0x3d0a17['match'](/\d+/g);return {'performance_target':_0x4f1aff?.[0x0]?parseInt(_0x4f1aff[0x0],0xa):null,'passing_score':_0x4f1aff?.[0x1]?parseInt(_0x4f1aff[0x1],0xa):null};}
14
+ function performaceTarget(_0x24cad9){if(!_0x24cad9)return {'performance_target':null,'passing_score':null};const _0x5837ea=_0x24cad9['match'](/\d+/g);return {'performance_target':_0x5837ea?.[0x0]?parseInt(_0x5837ea[0x0],0xa):null,'passing_score':_0x5837ea?.[0x1]?parseInt(_0x5837ea[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(_0x52cd06){let _0x2b4769={'headerRowIndex':-1,'coIdx':-1,'iloIdx':-1,'assessToolIdx':-1,'perfTargetIdx':-1};for(let _0x3cbbd0=0x0;_0x3cbbd0<Math['min'](_0x52cd06['length'],0x14);_0x3cbbd0++){const _0x3615fe=(_0x52cd06[_0x3cbbd0]??[])['map'](_0x40b9=>_0x40b9['toLowerCase']()['trim']()),_0x42694d=_0x3615fe['findIndex'](_0x429a91=>HEADERS$1['co']['some'](_0x44d29e=>_0x429a91['includes'](_0x44d29e))),_0x180a94=_0x3615fe['findIndex'](_0x3f409b=>HEADERS$1['ilo']['some'](_0x3632fa=>_0x3f409b['includes'](_0x3632fa))),_0xb2b320=_0x3615fe['findIndex'](_0x3744e3=>HEADERS$1['assessTool']['some'](_0x138797=>_0x3744e3['includes'](_0x138797))),_0x1d837c=_0x3615fe['findIndex'](_0x2a3ba6=>HEADERS$1['perfTarget']['some'](_0x43f3d5=>_0x2a3ba6['includes'](_0x43f3d5))),_0x9b2524=[_0x42694d,_0x180a94,_0xb2b320,_0x1d837c]['filter'](_0x1d098d=>_0x1d098d!==-1)['length'];if(_0x9b2524>=0x3){_0x2b4769={'headerRowIndex':_0x3cbbd0,'coIdx':_0x42694d,'iloIdx':_0x180a94,'assessToolIdx':_0xb2b320,'perfTargetIdx':_0x1d837c};break;}}return _0x2b4769;}
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(_0x50e493){let _0x49b57e={'headerRowIndex':-1,'coIdx':-1,'iloIdx':-1,'assessToolIdx':-1,'perfTargetIdx':-1};for(let _0x2202d1=0x0;_0x2202d1<Math['min'](_0x50e493['length'],0x14);_0x2202d1++){const _0x28bbeb=(_0x50e493[_0x2202d1]??[])['map'](_0x6aa2ba=>_0x6aa2ba['toLowerCase']()['trim']()),_0x5985db=_0x28bbeb['findIndex'](_0x299245=>HEADERS$1['co']['some'](_0x30579d=>_0x299245['includes'](_0x30579d))),_0x2c8b3d=_0x28bbeb['findIndex'](_0x521bb6=>HEADERS$1['ilo']['some'](_0x2b6f2b=>_0x521bb6['includes'](_0x2b6f2b))),_0x3aa789=_0x28bbeb['findIndex'](_0x669274=>HEADERS$1['assessTool']['some'](_0x554b26=>_0x669274['includes'](_0x554b26))),_0x284fae=_0x28bbeb['findIndex'](_0x476aee=>HEADERS$1['perfTarget']['some'](_0x4e42eb=>_0x476aee['includes'](_0x4e42eb))),_0x2b9fa8=[_0x5985db,_0x2c8b3d,_0x3aa789,_0x284fae]['filter'](_0x514d39=>_0x514d39!==-1)['length'];if(_0x2b9fa8>=0x3){_0x49b57e={'headerRowIndex':_0x2202d1,'coIdx':_0x5985db,'iloIdx':_0x2c8b3d,'assessToolIdx':_0x3aa789,'perfTargetIdx':_0x284fae};break;}}return _0x49b57e;}
17
17
 
18
- function extractFromObjective(_0x51c11f){const _0x320c03={'cognitive_level':null,'taxonomy_level':null,'verb':null},_0x2a276b=/(?:\(([IED])\))?\s*(\w+)\s*:\s*(.*)/i,_0x489b0f=_0x51c11f['match'](_0x2a276b);if(_0x489b0f){if(_0x489b0f[0x1])_0x320c03['cognitive_level']=_0x489b0f[0x1];if(_0x489b0f[0x2])_0x320c03['taxonomy_level']=_0x489b0f[0x2]['toLowerCase']();const _0x46c083=_0x489b0f[0x3]?.['trim']();if(_0x46c083){const _0x1785d5=/(?:shall|will)\s+(\w+)/i,_0xca736c=_0x46c083['match'](_0x1785d5);_0xca736c?_0x320c03['verb']=_0xca736c[0x1]['toLowerCase']():_0x320c03['verb']=_0x46c083['split'](/\s+/)[0x0]['toLowerCase']();}}return _0x320c03;}
18
+ function extractFromObjective(_0x1f76f4){const _0x22ed99={'cognitive_level':null,'taxonomy_level':null,'verb':null},_0x62ff2=/(?:\(([IED])\))?\s*(\w+)\s*:\s*(.*)/i,_0x19e998=_0x1f76f4['match'](_0x62ff2);if(_0x19e998){if(_0x19e998[0x1])_0x22ed99['cognitive_level']=_0x19e998[0x1];if(_0x19e998[0x2])_0x22ed99['taxonomy_level']=_0x19e998[0x2]['toLowerCase']();const _0x3d71f5=_0x19e998[0x3]?.['trim']();if(_0x3d71f5){const _0x1ebdf9=/(?:shall|will)\s+(\w+)/i,_0x4a5dfc=_0x3d71f5['match'](_0x1ebdf9);_0x4a5dfc?_0x22ed99['verb']=_0x4a5dfc[0x1]['toLowerCase']():_0x22ed99['verb']=_0x3d71f5['split'](/\s+/)[0x0]['toLowerCase']();}}return _0x22ed99;}
19
19
 
20
- function parseCOAEP(_0x378d76){const _0x31cd5f=_0x5084af['parse'](_0x378d76,{'skipEmptyLines':![]})['data'],_0x2124ac={'COAEP':{'faculty':null,'course':null,'sy':null,'semester':null,'co':[]}},{headerRowIndex:_0x138ea7,coIdx:_0x4ee632,iloIdx:_0x992a3f,assessToolIdx:_0x4afddb,perfTargetIdx:_0x23e467}=getCoaepHeader(_0x31cd5f);if(_0x138ea7===-1)return {'error':'Could\x20not\x20auto-detect\x20header\x20row.','message':'Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.'};_0x31cd5f['forEach'](_0x5d81b7=>{const _0xca7ace=_0x5d81b7['indexOf']('Name\x20of\x20Faculty:'),_0x5d01a0=_0x5d81b7['indexOf']('School\x20Year'),_0x4de3ee=_0x5d81b7['indexOf']('Course:'),_0x3edda1=_0x5d81b7['indexOf']('Semester');_0xca7ace!==-1&&(_0x2124ac['COAEP']['faculty']=_0x5d81b7[_0xca7ace+0x1]?.['trim']()||_0x2124ac['COAEP']['faculty']);_0x5d01a0!==-1&&(_0x2124ac['COAEP']['sy']=_0x5d81b7[_0x5d01a0+0x1]?.['trim']()||_0x2124ac['COAEP']['sy']);_0x4de3ee!==-1&&(_0x2124ac['COAEP']['course']=_0x5d81b7[_0x4de3ee+0x1]?.['trim']()||_0x2124ac['COAEP']['course']);if(_0x3edda1!==-1){const _0x282c2b=_0x5d81b7[_0x3edda1+0x1]?.['trim']()||'',_0xeaaccc=_0x282c2b['match'](/\d+/)?.[0x0];_0x2124ac['COAEP']['semester']=_0xeaaccc?parseInt(_0xeaaccc,0xa):_0x2124ac['COAEP']['semester'];}});let _0x49688f=null;return _0x31cd5f['forEach']((_0x1e1672,_0x3e4b66)=>{if(_0x3e4b66<=_0x138ea7)return;let _0x283ee6=_0x1e1672[_0x4ee632-0x1]?.['trim']()||'',_0x499092=_0x1e1672[_0x4ee632]?.['trim']()||'';/^\d+$/['test'](_0x1e1672[_0x4ee632]?.['trim']()||'')&&(_0x283ee6=_0x1e1672[_0x4ee632]?.['trim']()||'',_0x499092=_0x1e1672[_0x4ee632+0x1]?.['trim']()||'');const _0x1c486e=_0x1e1672[_0x992a3f]?.['trim']()||'',_0xec9d2a=_0x1e1672[_0x4afddb]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0x18d001=_0x1e1672[_0x23e467]?.['replace'](/\s+/g,'\x20')['trim']()||'';if(_0x283ee6&&/^\d+$/['test'](_0x283ee6)){_0x49688f&&_0x2124ac['COAEP']['co']['push'](_0x49688f);const _0x45d4d7=_0x499092,{verb:_0x7042fd,cognitive_level:_0x14bc41,taxonomy_level:_0x3af9cf}=extractFromObjective(_0x45d4d7);if(!_0x7042fd)return {'error':'Could\x20not\x20find\x20verb.','message':'Please\x20ensure\x20the\x20Course\x20Outcome\x20#'+_0x283ee6+'\x20is\x20in\x20the\x20correct\x20format.'};_0x49688f={'statement':_0x45d4d7,'ilo':[],'verb':_0x7042fd,'cognitive_level':_0x14bc41,'taxonomy_level':_0x3af9cf};}if(_0x49688f&&_0x1c486e&&_0x18d001){const _0x78ab82=_0x1c486e['replace'](/^ILO\d+[:.]?\s*/,'');if(_0x78ab82['match'](/^(Revision|Prepared|Date|Approved|Effectivity|Page)/i)||_0x78ab82['length']<0xa)return;let _0x37f834=_0xec9d2a;if(!_0x37f834&&_0x78ab82['includes'](':')){const _0x5e483b=_0x78ab82['match'](/^ILO\d+:\s*(.+?)(?:\s*\(|$)/);_0x5e483b&&(_0x37f834=_0x5e483b[0x1]?.['trim']()||'');}const {performance_target:_0x48c0f1,passing_score:_0x454864}=performaceTarget(_0x18d001),{verb:_0x24dad2,cognitive_level:_0xb4b3be,taxonomy_level:_0x23ae61}=extractFromObjective(_0x78ab82);_0x49688f['ilo']['push']({'statement':_0x78ab82,'assessment_tool':_0x37f834,'performance_target':_0x48c0f1,'passing_score':_0x454864,'verb':_0x24dad2,'cognitive_level':_0xb4b3be,'taxonomy_level':_0x23ae61});}}),_0x49688f&&_0x2124ac['COAEP']['co']['push'](_0x49688f),_0x2124ac;}
20
+ function parseCOAEP(_0x34d690){const _0x48e8c8=_0x204ec9['parse'](_0x34d690,{'skipEmptyLines':![]})['data'],_0x5a52bb={'COAEP':{'faculty':null,'course':null,'sy':null,'semester':null,'co':[]}},{headerRowIndex:_0xe28965,coIdx:_0x407fa6,iloIdx:_0x3983a5,assessToolIdx:_0x55431f,perfTargetIdx:_0x2e2833}=getCoaepHeader(_0x48e8c8);if(_0xe28965===-1)return {'error':'Could\x20not\x20auto-detect\x20header\x20row.','message':'Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.'};_0x48e8c8['forEach'](_0x4723c9=>{const _0x5e898d=_0x4723c9['indexOf']('Name\x20of\x20Faculty:'),_0x38b50c=_0x4723c9['indexOf']('School\x20Year'),_0x4ffdd3=_0x4723c9['indexOf']('Course:'),_0x52f9ae=_0x4723c9['indexOf']('Semester');_0x5e898d!==-1&&(_0x5a52bb['COAEP']['faculty']=_0x4723c9[_0x5e898d+0x1]?.['trim']()||_0x5a52bb['COAEP']['faculty']);_0x38b50c!==-1&&(_0x5a52bb['COAEP']['sy']=_0x4723c9[_0x38b50c+0x1]?.['trim']()||_0x5a52bb['COAEP']['sy']);_0x4ffdd3!==-1&&(_0x5a52bb['COAEP']['course']=_0x4723c9[_0x4ffdd3+0x1]?.['trim']()||_0x5a52bb['COAEP']['course']);if(_0x52f9ae!==-1){const _0xa0715c=_0x4723c9[_0x52f9ae+0x1]?.['trim']()||'',_0x43dc76=_0xa0715c['match'](/\d+/)?.[0x0];_0x5a52bb['COAEP']['semester']=_0x43dc76?parseInt(_0x43dc76,0xa):_0x5a52bb['COAEP']['semester'];}});let _0x12b782=null;return _0x48e8c8['forEach']((_0xa87a4d,_0x445618)=>{if(_0x445618<=_0xe28965)return;let _0x51dbb9=_0xa87a4d[_0x407fa6-0x1]?.['trim']()||'',_0x5de714=_0xa87a4d[_0x407fa6]?.['trim']()||'';/^\d+$/['test'](_0xa87a4d[_0x407fa6]?.['trim']()||'')&&(_0x51dbb9=_0xa87a4d[_0x407fa6]?.['trim']()||'',_0x5de714=_0xa87a4d[_0x407fa6+0x1]?.['trim']()||'');const _0x3b72ce=_0xa87a4d[_0x3983a5]?.['trim']()||'',_0x4c7678=_0xa87a4d[_0x55431f]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0x52c788=_0xa87a4d[_0x2e2833]?.['replace'](/\s+/g,'\x20')['trim']()||'';if(_0x51dbb9&&/^\d+$/['test'](_0x51dbb9)){_0x12b782&&_0x5a52bb['COAEP']['co']['push'](_0x12b782);const _0xa2b2a3=_0x5de714,{verb:_0x2d2fcd,cognitive_level:_0x3dca50,taxonomy_level:_0x11f1b6}=extractFromObjective(_0xa2b2a3);if(!_0x2d2fcd)return {'error':'Could\x20not\x20find\x20verb.','message':'Please\x20ensure\x20the\x20Course\x20Outcome\x20#'+_0x51dbb9+'\x20is\x20in\x20the\x20correct\x20format.'};_0x12b782={'statement':_0xa2b2a3,'ilo':[],'verb':_0x2d2fcd,'cognitive_level':_0x3dca50,'taxonomy_level':_0x11f1b6};}if(_0x12b782&&_0x3b72ce&&_0x52c788){const _0x4aaa0e=_0x3b72ce['replace'](/^ILO\d+[:.]?\s*/,'');if(_0x4aaa0e['match'](/^(Revision|Prepared|Date|Approved|Effectivity|Page)/i)||_0x4aaa0e['length']<0xa)return;let _0x131616=_0x4c7678;if(!_0x131616&&_0x4aaa0e['includes'](':')){const _0x2d4c2a=_0x4aaa0e['match'](/^ILO\d+:\s*(.+?)(?:\s*\(|$)/);_0x2d4c2a&&(_0x131616=_0x2d4c2a[0x1]?.['trim']()||'');}const {performance_target:_0x1cf8da,passing_score:_0x4fe79e}=performaceTarget(_0x52c788),{verb:_0x35efe4,cognitive_level:_0x13edb0,taxonomy_level:_0xb535ea}=extractFromObjective(_0x4aaa0e);_0x12b782['ilo']['push']({'statement':_0x4aaa0e,'assessment_tool':_0x131616,'performance_target':_0x1cf8da,'passing_score':_0x4fe79e,'verb':_0x35efe4,'cognitive_level':_0x13edb0,'taxonomy_level':_0xb535ea});}}),_0x12b782&&_0x5a52bb['COAEP']['co']['push'](_0x12b782),_0x5a52bb;}
21
21
 
22
- async function uploadCOAEP(_0x2ac168,_0x52bcb3,_0x4aa639){try{const _0x2d5706=await convertToCSVFile(_0x52bcb3),_0x4b19b4=await _0x2d5706['text'](),_0x3f9aa5=parseCOAEP(_0x4b19b4);console['log'](_0x3f9aa5);const _0x6dd52b=await fetch(_0x2ac168+'/coaeps/upload?course_id='+_0x4aa639,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3f9aa5)});if(!_0x6dd52b['ok']){const _0x144720=await _0x6dd52b['json']();throw _0x144720;}return _0x6dd52b['json']();}catch(_0x46e9de){throw _0x46e9de;}}
22
+ async function uploadCOAEP(_0x4611ec,_0x59f8bc,_0x4fe363){try{const _0x2b4aeb=await convertToCSVFile(_0x59f8bc),_0x3ba9f7=await _0x2b4aeb['text'](),_0x4eb092=parseCOAEP(_0x3ba9f7);console['log'](_0x4eb092);const _0x37858f=await fetch(_0x4611ec+'/coaeps/upload?course_id='+_0x4fe363,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4eb092)});if(!_0x37858f['ok']){const _0x22de4f=await _0x37858f['json']();throw _0x22de4f;}return _0x37858f['json']();}catch(_0x1c80dd){throw _0x1c80dd;}}
23
23
 
24
- async function uploadEnrolledStudent(_0xef6802,_0x272b80){try{const _0x1d38d0=await convertToCSVFile(_0x272b80),_0x1e9b9d=new FormData();_0x1e9b9d['append']('csvFile',_0x1d38d0);const _0x2b1d55=await fetch(_0xef6802+'/enrolled-students/upload',{'method':'POST','body':_0x1e9b9d});if(!_0x2b1d55['ok']){const _0x194751=await _0x2b1d55['json']();throw _0x194751;}return _0x2b1d55['json']();}catch(_0x5f199f){throw _0x5f199f;}}
24
+ async function uploadEnrolledStudent(_0x5a646d,_0x9a8d98){try{const _0x453c7e=await convertToCSVFile(_0x9a8d98),_0x4d018a=new FormData();_0x4d018a['append']('csvFile',_0x453c7e);const _0x230cc3=await fetch(_0x5a646d+'/enrolled-students/upload',{'method':'POST','body':_0x4d018a});if(!_0x230cc3['ok']){const _0x5c32d4=await _0x230cc3['json']();throw _0x5c32d4;}return _0x230cc3['json']();}catch(_0x27e91e){throw _0x27e91e;}}
25
25
 
26
- function parseClassList(_0x4119c6){const _0x41821f=_0x5084af['parse'](_0x4119c6,{'skipEmptyLines':!![]})['data'];let _0x13fe2a='',_0x2980c9='',_0x1ef181='';const _0x4e441f=[];return _0x41821f['forEach'](_0x248fa3=>{const _0x306428=_0x248fa3['map'](_0x4bcb76=>(_0x4bcb76??'')['toString']()['trim']()),_0x4b0b9b=_0x306428[0x0]??'';if(_0x4b0b9b['startsWith']('Course\x20No:')){const _0x5dd835=_0x4b0b9b['replace']('Course\x20No:','')['trim'](),_0x4527d9=_0x5dd835['split'](/\s+/);_0x1ef181=_0x4527d9[0x0]??'';const [_0x24e8dc,_0x51fbcc]=(_0x4527d9[0x1]??'')['split']('-');_0x2980c9=_0x24e8dc??'';const _0x5eb128=(_0x51fbcc??'')['match'](/[a-z]$/);_0x13fe2a=_0x5eb128?_0x5eb128[0x0]:'';}if(/^\d+$/['test'](_0x4b0b9b)){const _0x127a52=_0x306428[0x2]??'';_0x4e441f['push']({'subj_code':_0x1ef181,'student_no':_0x127a52,'course_id':_0x2980c9,'section':_0x13fe2a});}}),{'enrolledCourses':_0x4e441f};}
26
+ function parseClassList(_0x1c45b7){const _0x5b6031=_0x204ec9['parse'](_0x1c45b7,{'skipEmptyLines':!![]})['data'];let _0x17213c='',_0x4056ca='',_0x3fe3db='';const _0x5d0f3f=[];return _0x5b6031['forEach'](_0x39674d=>{const _0x437e8e=_0x39674d['map'](_0x558148=>(_0x558148??'')['toString']()['trim']()),_0x18f07f=_0x437e8e[0x0]??'';if(_0x18f07f['startsWith']('Course\x20No:')){const _0x2cf79b=_0x18f07f['replace']('Course\x20No:','')['trim'](),_0x29e102=_0x2cf79b['split'](/\s+/);_0x3fe3db=_0x29e102[0x0]??'';const [_0x34c285,_0x4b8eee]=(_0x29e102[0x1]??'')['split']('-');_0x4056ca=_0x34c285??'';const _0x1a280a=(_0x4b8eee??'')['match'](/[a-z]$/);_0x17213c=_0x1a280a?_0x1a280a[0x0]:'';}if(/^\d+$/['test'](_0x18f07f)){const _0x5f1ba0=_0x437e8e[0x2]??'';_0x5d0f3f['push']({'subj_code':_0x3fe3db,'student_no':_0x5f1ba0,'course_id':_0x4056ca,'section':_0x17213c});}}),{'enrolledCourses':_0x5d0f3f};}
27
27
 
28
- async function uploadClassList(_0x16de8c,_0x11d9bc,_0x4f550b,_0x2b0c59){try{const _0x1f5314=await convertToCSVFile(_0x11d9bc),_0x49a0d5=await _0x1f5314['text'](),_0x498e0a=parseClassList(_0x49a0d5),_0x11233a='subj_code='+_0x4f550b+'&period_id='+_0x2b0c59,_0x2be949=await fetch(_0x16de8c+'/enrolled-courses/upload?'+_0x11233a,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x498e0a)});if(!_0x2be949['ok']){const _0x23c17d=await _0x2be949['json']();throw _0x23c17d;}return _0x2be949['json']();}catch(_0x43bc30){throw _0x43bc30;}}
28
+ async function uploadClassList(_0x57e5d1,_0x2b8e5f,_0x312357,_0x524e05){try{const _0x599731=await convertToCSVFile(_0x2b8e5f),_0x25f968=await _0x599731['text'](),_0x4de0d9=parseClassList(_0x25f968),_0x33a28f='subj_code='+_0x312357+'&period_id='+_0x524e05,_0x3ece73=await fetch(_0x57e5d1+'/enrolled-courses/upload?'+_0x33a28f,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x4de0d9)});if(!_0x3ece73['ok']){const _0x57de13=await _0x3ece73['json']();throw _0x57de13;}return _0x3ece73['json']();}catch(_0x5dcf4c){throw _0x5dcf4c;}}
29
29
 
30
- function parseAssessmentCsv(_0x379cd3){const {data:_0x287286}=_0x5084af['parse'](_0x379cd3,{'skipEmptyLines':!![]}),_0x339e31=_0x287286['filter'](_0xa2ad96=>_0xa2ad96['length']>0x0),_0x590c89=_0x339e31['find'](_0x2bd20b=>_0x2bd20b['some'](_0x132033=>_0x132033?.['includes']('Faculty'))),_0x27d349=_0x590c89?_0x590c89['findIndex'](_0xd6d74c=>_0xd6d74c?.['includes']('Faculty')):-1,_0x26b7d5=_0x27d349!==-1&&_0x590c89?_0x590c89[_0x27d349+0x2]?.['replace'](/"/g,'')['trim']()??'':'',_0x262c1a=_0x339e31['find'](_0x5c31bb=>_0x5c31bb['some'](_0x1da12b=>_0x1da12b?.['includes']('Semester'))),_0xa6e691=_0x262c1a?_0x262c1a['findIndex'](_0x21e693=>_0x21e693?.['includes']('Semester')):-1,_0x5497dc=_0xa6e691!==-1&&_0x262c1a?_0x262c1a[_0xa6e691+0x2]?.['trim']()??'':'',_0x410aa0=_0x5497dc['includes']('1st')?0x1:_0x5497dc['includes']('2nd')?0x2:0x0,_0x1e4c6f=_0x339e31['find'](_0x33300f=>_0x33300f['some'](_0x3baae6=>_0x3baae6?.['includes']('Course\x20&\x20Sec'))),_0x422c2d=_0x1e4c6f?_0x1e4c6f['findIndex'](_0x31cb60=>_0x31cb60?.['includes']('Course\x20&\x20Sec')):-1,_0x31ec25=_0x422c2d!==-1&&_0x1e4c6f?_0x1e4c6f[_0x422c2d+0x2]?.['trim']()??'':'';let _0x4a6163='',_0x21f3c6='';if(_0x31ec25){const _0x42b1d6=_0x31ec25['match'](/^([A-Za-z0-9]+)-?([A-Za-z]+)?/);_0x42b1d6&&(_0x4a6163=_0x42b1d6[0x1]??'',_0x42b1d6[0x2]&&(_0x21f3c6=_0x42b1d6[0x2]['replace'](/^OC/i,'')));}const _0x5973f1=_0x339e31['find'](_0x474109=>_0x474109['some'](_0x5b91cb=>_0x5b91cb?.['includes']('School\x20Year'))),_0x4893ed=_0x5973f1?_0x5973f1['findIndex'](_0x421fcc=>_0x421fcc?.['includes']('School\x20Year')):-1,_0x25788f=_0x4893ed!==-1&&_0x5973f1?_0x5973f1[_0x4893ed+0x2]?.['trim']()??'':'';let _0x4a2862=0x0;if(_0x25788f){const _0x27819d=_0x25788f['match'](/(\d{4})-(\d{4})/);if(_0x27819d){const _0x322191=(_0x27819d[0x1]??'')['slice'](0x2),_0x1ec4ab=(_0x27819d[0x2]??'')['slice'](0x2);_0x4a2862=parseInt(_0x322191+_0x1ec4ab,0xa);}}const _0x28a620={'faculty':_0x26b7d5,'course':_0x4a6163,'section':_0x21f3c6,'semester':_0x410aa0,'sy':_0x4a2862},_0x259344=_0x339e31['findIndex'](_0x2d86c0=>_0x2d86c0['some'](_0x46541b=>_0x46541b?.['trim']()==='CO\x20#'));if(_0x259344===-1)throw new Error('CO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x3a94f6=_0x339e31[_0x259344+0x1];if(!_0x3a94f6)throw new Error('ILO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x441670={};let _0xdeee5=0x1,_0x203dc4=0x1;for(let _0x397e91=0x3;_0x397e91<_0x3a94f6['length'];_0x397e91++){const _0x2e3c5d=_0x3a94f6[_0x397e91];if(!_0x2e3c5d)continue;const _0x37e4ce='co'+_0xdeee5;if(!_0x441670[_0x37e4ce])_0x441670[_0x37e4ce]=[];_0x441670[_0x37e4ce]['push']('ilo'+_0x203dc4),_0x203dc4++,_0x203dc4>0x3&&(_0xdeee5++,_0x203dc4=0x1);}const _0x16c87e=_0x339e31['findIndex'](_0x1da25c=>_0x1da25c['includes']('Name\x20of\x20Students'));if(_0x16c87e===-1)throw new Error('Student\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x1799da=_0x339e31[_0x16c87e];if(!_0x1799da)throw new Error('Student\x20header\x20row\x20is\x20missing');const _0x1ef13e=_0x1799da['findIndex'](_0x343094=>_0x343094?.['includes']('Name\x20of\x20Students'));if(_0x1ef13e===-1)throw new Error('Name\x20of\x20Students\x20column\x20not\x20found\x20in\x20CSV');const _0x55d8cb=_0x1ef13e+0x2,_0xeebd0c=[];for(let _0x362e55=_0x16c87e+0x1;_0x362e55<_0x339e31['length'];_0x362e55++){const _0x3e16e5=_0x339e31[_0x362e55];if(!_0x3e16e5)continue;if(_0x3e16e5['some'](_0x7a2e1e=>_0x7a2e1e?.['toUpperCase']()['includes']('TOTAL\x20STUDENTS')||_0x7a2e1e?.['toUpperCase']()['includes']('ACHIEVED\x20THE\x20MINIMUM')||_0x7a2e1e?.['toUpperCase']()['includes']('INACTIVE')||_0x7a2e1e?.['toUpperCase']()['includes']('AVERAGE')))continue;if(!_0x3e16e5[_0x1ef13e])continue;const _0x1947ce=_0x3e16e5[_0x1ef13e]['replace'](/"/g,'')['trim'](),_0x101032=_0x3e16e5['slice'](_0x55d8cb)['map'](_0x1d39ba=>_0x1d39ba===null?null:!isNaN(Number(_0x1d39ba))?parseFloat(_0x1d39ba):0x0);let _0x476880=0x0;const _0x2788a6={};Object['entries'](_0x441670)['forEach'](([_0x25dd68,_0xb4d070])=>{const _0x3e0f4e={};_0xb4d070['forEach'](_0x189c4f=>{_0x3e0f4e[_0x189c4f]=_0x101032[_0x476880]??0x0,_0x476880++;}),_0x2788a6[_0x25dd68]={'transmuted_score':_0x3e0f4e};}),_0xeebd0c['push']({'student_name':_0x1947ce,'coaep':_0x2788a6});}const _0x2bf0ae=_0x339e31['find'](_0x5442f2=>_0x5442f2['some'](_0x3a7f40=>_0x3a7f40?.['includes']('ACHIEVED\x20THE\x20MINIMUM'))),_0x3b6954=_0x339e31['find'](_0x50b564=>_0x50b564['some'](_0x413444=>_0x413444?.['includes']('AVERAGE'))),_0x1e164b=_0x2bf0ae?_0x2bf0ae['slice'](_0x55d8cb)['map'](_0x216e05=>_0x216e05&&!isNaN(Number(_0x216e05))?parseInt(_0x216e05):0x0):[],_0x20f46a=_0x3b6954?_0x3b6954['slice'](_0x55d8cb)['map'](_0x49ba94=>_0x49ba94&&_0x49ba94!=='#DIV/0!'&&!isNaN(Number(_0x49ba94))?parseInt(_0x49ba94):0x0):[],_0x3fa9b0={};let _0x41f09e=0x0;return Object['entries'](_0x441670)['forEach'](([_0x2a4ecd,_0xbda9c6])=>{if(!_0x3fa9b0[_0x2a4ecd])_0x3fa9b0[_0x2a4ecd]={};_0xbda9c6['forEach'](_0x3b3ff3=>{_0x3fa9b0[_0x2a4ecd][_0x3b3ff3]={'achievedMinimum':_0x1e164b[_0x41f09e]??0x0,'average':_0x20f46a[_0x41f09e]??0x0},_0x41f09e++;});}),{'assessmentData':{'classAssignment':_0x28a620,'student':_0xeebd0c,'total':_0x3fa9b0}};}
30
+ function parseAssessmentCsv(_0x73eff8){const {data:_0x1e7544}=_0x204ec9['parse'](_0x73eff8,{'skipEmptyLines':!![]}),_0x3bbb07=_0x1e7544['filter'](_0x8ac9ab=>_0x8ac9ab['length']>0x0),_0x510348=_0x3bbb07['find'](_0x50cc06=>_0x50cc06['some'](_0x360726=>_0x360726?.['includes']('Faculty'))),_0x2d9218=_0x510348?_0x510348['findIndex'](_0x5d689b=>_0x5d689b?.['includes']('Faculty')):-1,_0x5b0146=_0x2d9218!==-1&&_0x510348?_0x510348[_0x2d9218+0x2]?.['replace'](/"/g,'')['trim']()??'':'',_0x1b8b93=_0x3bbb07['find'](_0x2a8b04=>_0x2a8b04['some'](_0x45ab55=>_0x45ab55?.['includes']('Semester'))),_0x248bb3=_0x1b8b93?_0x1b8b93['findIndex'](_0x565f74=>_0x565f74?.['includes']('Semester')):-1,_0x34396f=_0x248bb3!==-1&&_0x1b8b93?_0x1b8b93[_0x248bb3+0x2]?.['trim']()??'':'',_0x48434b=_0x34396f['includes']('1st')?0x1:_0x34396f['includes']('2nd')?0x2:0x0,_0x4b9b0b=_0x3bbb07['find'](_0x272699=>_0x272699['some'](_0x448ffb=>_0x448ffb?.['includes']('Course\x20&\x20Sec'))),_0x3468b4=_0x4b9b0b?_0x4b9b0b['findIndex'](_0x2e3e08=>_0x2e3e08?.['includes']('Course\x20&\x20Sec')):-1,_0x444df8=_0x3468b4!==-1&&_0x4b9b0b?_0x4b9b0b[_0x3468b4+0x2]?.['trim']()??'':'';let _0x27a853='',_0x59a9c1='';if(_0x444df8){const _0x1019aa=_0x444df8['match'](/^([A-Za-z0-9]+)-?([A-Za-z]+)?/);_0x1019aa&&(_0x27a853=_0x1019aa[0x1]??'',_0x1019aa[0x2]&&(_0x59a9c1=_0x1019aa[0x2]['replace'](/^OC/i,'')));}const _0x3fcf44=_0x3bbb07['find'](_0x390d61=>_0x390d61['some'](_0x4ef8f1=>_0x4ef8f1?.['includes']('School\x20Year'))),_0x6c0666=_0x3fcf44?_0x3fcf44['findIndex'](_0x42c8bd=>_0x42c8bd?.['includes']('School\x20Year')):-1,_0x125c09=_0x6c0666!==-1&&_0x3fcf44?_0x3fcf44[_0x6c0666+0x2]?.['trim']()??'':'';let _0x433bd8=0x0;if(_0x125c09){const _0x1d3f17=_0x125c09['match'](/(\d{4})-(\d{4})/);if(_0x1d3f17){const _0x3b977=(_0x1d3f17[0x1]??'')['slice'](0x2),_0x1656f1=(_0x1d3f17[0x2]??'')['slice'](0x2);_0x433bd8=parseInt(_0x3b977+_0x1656f1,0xa);}}const _0x4baf3c={'faculty':_0x5b0146,'course':_0x27a853,'section':_0x59a9c1,'semester':_0x48434b,'sy':_0x433bd8},_0x1f950d=_0x3bbb07['findIndex'](_0x365392=>_0x365392['some'](_0x214391=>_0x214391?.['trim']()==='CO\x20#'));if(_0x1f950d===-1)throw new Error('CO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x280d9f=_0x3bbb07[_0x1f950d+0x1];if(!_0x280d9f)throw new Error('ILO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x14a308={};let _0x21cd76=0x1,_0xc767ef=0x1;for(let _0x2f80b4=0x3;_0x2f80b4<_0x280d9f['length'];_0x2f80b4++){const _0x35e743=_0x280d9f[_0x2f80b4];if(!_0x35e743)continue;const _0x1761d2='co'+_0x21cd76;if(!_0x14a308[_0x1761d2])_0x14a308[_0x1761d2]=[];_0x14a308[_0x1761d2]['push']('ilo'+_0xc767ef),_0xc767ef++,_0xc767ef>0x3&&(_0x21cd76++,_0xc767ef=0x1);}const _0x5be349=_0x3bbb07['findIndex'](_0x1e7e72=>_0x1e7e72['includes']('Name\x20of\x20Students'));if(_0x5be349===-1)throw new Error('Student\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0xa21a4a=_0x3bbb07[_0x5be349];if(!_0xa21a4a)throw new Error('Student\x20header\x20row\x20is\x20missing');const _0x3b784e=_0xa21a4a['findIndex'](_0x302350=>_0x302350?.['includes']('Name\x20of\x20Students'));if(_0x3b784e===-1)throw new Error('Name\x20of\x20Students\x20column\x20not\x20found\x20in\x20CSV');const _0x129f63=_0x3b784e+0x2,_0x13ba45=[];for(let _0x6c5635=_0x5be349+0x1;_0x6c5635<_0x3bbb07['length'];_0x6c5635++){const _0x4f8a80=_0x3bbb07[_0x6c5635];if(!_0x4f8a80)continue;if(_0x4f8a80['some'](_0x23f14b=>_0x23f14b?.['toUpperCase']()['includes']('TOTAL\x20STUDENTS')||_0x23f14b?.['toUpperCase']()['includes']('ACHIEVED\x20THE\x20MINIMUM')||_0x23f14b?.['toUpperCase']()['includes']('INACTIVE')||_0x23f14b?.['toUpperCase']()['includes']('AVERAGE')))continue;if(!_0x4f8a80[_0x3b784e])continue;const _0x1d1b39=_0x4f8a80[_0x3b784e]['replace'](/"/g,'')['trim'](),_0x2c2f23=_0x4f8a80['slice'](_0x129f63)['map'](_0x579fea=>_0x579fea===null?null:!isNaN(Number(_0x579fea))?parseFloat(_0x579fea):0x0);let _0x4d6baa=0x0;const _0x1cf043={};Object['entries'](_0x14a308)['forEach'](([_0x5de681,_0x4bd134])=>{const _0x1e4f64={};_0x4bd134['forEach'](_0x531d96=>{_0x1e4f64[_0x531d96]=_0x2c2f23[_0x4d6baa]??0x0,_0x4d6baa++;}),_0x1cf043[_0x5de681]={'transmuted_score':_0x1e4f64};}),_0x13ba45['push']({'student_name':_0x1d1b39,'coaep':_0x1cf043});}const _0x59d6de=_0x3bbb07['find'](_0x516ee5=>_0x516ee5['some'](_0xc10b58=>_0xc10b58?.['includes']('ACHIEVED\x20THE\x20MINIMUM'))),_0x4e54a6=_0x3bbb07['find'](_0x277a5c=>_0x277a5c['some'](_0x8a87d4=>_0x8a87d4?.['includes']('AVERAGE'))),_0x90d328=_0x59d6de?_0x59d6de['slice'](_0x129f63)['map'](_0x278387=>_0x278387&&!isNaN(Number(_0x278387))?parseInt(_0x278387):0x0):[],_0x1a81da=_0x4e54a6?_0x4e54a6['slice'](_0x129f63)['map'](_0x181ecf=>_0x181ecf&&_0x181ecf!=='#DIV/0!'&&!isNaN(Number(_0x181ecf))?parseInt(_0x181ecf):0x0):[],_0x361d43={};let _0x1cfdc3=0x0;return Object['entries'](_0x14a308)['forEach'](([_0x41944a,_0x1eec9a])=>{if(!_0x361d43[_0x41944a])_0x361d43[_0x41944a]={};_0x1eec9a['forEach'](_0x557a83=>{_0x361d43[_0x41944a][_0x557a83]={'achievedMinimum':_0x90d328[_0x1cfdc3]??0x0,'average':_0x1a81da[_0x1cfdc3]??0x0},_0x1cfdc3++;});}),{'assessmentData':{'classAssignment':_0x4baf3c,'student':_0x13ba45,'total':_0x361d43}};}
31
31
 
32
- async function uploadAssessmentData(_0x290c8b,_0x120c56){try{const _0x1f5260=await convertToCSVFile(_0x120c56),_0x1b98d1=await _0x1f5260['text'](),_0x3947a7=parseAssessmentCsv(_0x1b98d1),_0x51f0f6=await fetch(_0x290c8b+'/assessment-data/upload',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3947a7)});if(!_0x51f0f6['ok']){const _0xe3a25c=await _0x51f0f6['json']();throw _0xe3a25c;}return _0x51f0f6['json']();}catch(_0x4b5224){throw _0x4b5224;}}
32
+ async function uploadAssessmentData(_0x43a6b1,_0x358246){try{const _0x135156=await convertToCSVFile(_0x358246),_0x23a6db=await _0x135156['text'](),_0x1e4494=parseAssessmentCsv(_0x23a6db),_0x42fb92=await fetch(_0x43a6b1+'/assessment-data/upload',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x1e4494)});if(!_0x42fb92['ok']){const _0x1ded8a=await _0x42fb92['json']();throw _0x1ded8a;}return _0x42fb92['json']();}catch(_0x13b364){throw _0x13b364;}}
33
33
 
34
- async function uploadDeptFaculty(_0xc3e436,_0x487e87){try{const _0x1692e7=await convertToCSVFile(_0x487e87),_0x36c3fb=new FormData();_0x36c3fb['append']('csvFile',_0x1692e7);const _0x41a44b=await fetch(_0xc3e436+'/dept-faculties/upload',{'method':'POST','body':_0x36c3fb});if(!_0x41a44b['ok']){const _0x38c4dc=await _0x41a44b['json']();throw _0x38c4dc;}return _0x41a44b['json']();}catch(_0x2d6bf3){throw _0x2d6bf3;}}
34
+ async function uploadDeptFaculty(_0x3546e6,_0x3c5e11){try{const _0x55bab0=await convertToCSVFile(_0x3c5e11),_0x541d32=new FormData();_0x541d32['append']('csvFile',_0x55bab0);const _0x4e1510=await fetch(_0x3546e6+'/dept-faculties/upload',{'method':'POST','body':_0x541d32});if(!_0x4e1510['ok']){const _0x470e10=await _0x4e1510['json']();throw _0x470e10;}return _0x4e1510['json']();}catch(_0x1f1b6e){throw _0x1f1b6e;}}
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(_0x325279){let _0x51f268={'headerIdx':-1,'poIdx':-1,'tlIdx':-1,'piIdx':-1,'fcIdx':-1,'scIdx':-1,'atIdx':-1,'ptIdx':-1};for(let _0x46faad=0x0;_0x46faad<Math['min'](_0x325279['length'],0x14);_0x46faad++){const _0x521820=(_0x325279[_0x46faad]??[])['map'](_0x450b74=>_0x450b74['toLowerCase']()['trim']()),_0x117988=_0x521820['findIndex'](_0x4a3656=>HEADERS['po']['some'](_0x1da5d2=>_0x4a3656['toLowerCase']()['includes'](_0x1da5d2))),_0x39d7e5=_0x521820['findIndex'](_0x2bb49a=>HEADERS['tl']['some'](_0x2c8292=>_0x2bb49a['toLowerCase']()['includes'](_0x2c8292))),_0x527276=_0x521820['findIndex'](_0x3fbca7=>HEADERS['pi']['some'](_0x3145d6=>_0x3fbca7['toLowerCase']()['includes'](_0x3145d6))),_0x416616=_0x521820['findIndex'](_0x2629ca=>HEADERS['fc']['some'](_0x24b30a=>_0x2629ca['toLowerCase']()['includes'](_0x24b30a))),_0x2178c7=_0x521820['findIndex'](_0x346fc6=>HEADERS['sc']['some'](_0x59c4ab=>_0x346fc6['toLowerCase']()['includes'](_0x59c4ab))),_0x221027=_0x521820['findIndex'](_0x251478=>HEADERS['at']['some'](_0x1bf169=>_0x251478['toLowerCase']()['includes'](_0x1bf169))),_0x196a95=_0x521820['findIndex'](_0x2c0dd6=>HEADERS['pt']['some'](_0x5ab361=>_0x2c0dd6['toLowerCase']()['includes'](_0x5ab361))),_0x52d129=[_0x117988,_0x39d7e5,_0x527276,_0x416616,_0x2178c7,_0x221027,_0x196a95]['filter'](_0x5e561b=>_0x5e561b!==-1)['length'];if(_0x52d129>=0x3){_0x51f268={'headerIdx':_0x46faad,'poIdx':_0x117988,'tlIdx':_0x39d7e5,'piIdx':_0x527276,'fcIdx':_0x416616,'scIdx':_0x2178c7,'atIdx':_0x221027,'ptIdx':_0x196a95};break;}}if(_0x51f268['headerIdx']===-1)throw new Error('No\x20valid\x20headers\x20found\x20in\x20POAEP\x20file.');return _0x51f268;}
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(_0x35288d){let _0x5d287f={'headerIdx':-1,'poIdx':-1,'tlIdx':-1,'piIdx':-1,'fcIdx':-1,'scIdx':-1,'atIdx':-1,'ptIdx':-1};for(let _0x362e62=0x0;_0x362e62<Math['min'](_0x35288d['length'],0x14);_0x362e62++){const _0x355f89=(_0x35288d[_0x362e62]??[])['map'](_0x46d3c1=>_0x46d3c1['toLowerCase']()['trim']()),_0x1812ed=_0x355f89['findIndex'](_0x94ff14=>HEADERS['po']['some'](_0x1fd138=>_0x94ff14['toLowerCase']()['includes'](_0x1fd138))),_0x44603d=_0x355f89['findIndex'](_0x803d50=>HEADERS['tl']['some'](_0x40acc7=>_0x803d50['toLowerCase']()['includes'](_0x40acc7))),_0x53048d=_0x355f89['findIndex'](_0x3456b3=>HEADERS['pi']['some'](_0x2d49d8=>_0x3456b3['toLowerCase']()['includes'](_0x2d49d8))),_0x269799=_0x355f89['findIndex'](_0x3e86ce=>HEADERS['fc']['some'](_0x48ecdb=>_0x3e86ce['toLowerCase']()['includes'](_0x48ecdb))),_0x213d51=_0x355f89['findIndex'](_0x21f508=>HEADERS['sc']['some'](_0x29d639=>_0x21f508['toLowerCase']()['includes'](_0x29d639))),_0x1306c0=_0x355f89['findIndex'](_0x8ba892=>HEADERS['at']['some'](_0xad0fe9=>_0x8ba892['toLowerCase']()['includes'](_0xad0fe9))),_0x10a2ba=_0x355f89['findIndex'](_0x42fdf2=>HEADERS['pt']['some'](_0x101d10=>_0x42fdf2['toLowerCase']()['includes'](_0x101d10))),_0x3709e6=[_0x1812ed,_0x44603d,_0x53048d,_0x269799,_0x213d51,_0x1306c0,_0x10a2ba]['filter'](_0x1f3188=>_0x1f3188!==-1)['length'];if(_0x3709e6>=0x3){_0x5d287f={'headerIdx':_0x362e62,'poIdx':_0x1812ed,'tlIdx':_0x44603d,'piIdx':_0x53048d,'fcIdx':_0x269799,'scIdx':_0x213d51,'atIdx':_0x1306c0,'ptIdx':_0x10a2ba};break;}}if(_0x5d287f['headerIdx']===-1)throw new Error('No\x20valid\x20headers\x20found\x20in\x20POAEP\x20file.');return _0x5d287f;}
37
37
 
38
- const parseFormativeCourses=_0x490386=>{let _0x1a0ee1=_0x490386['split'](',')['reduce']((_0x355768,_0x47e7c5)=>{const _0x1be243=_0x47e7c5['trim']();if(_0x1be243)_0x355768['push'](_0x1be243);return _0x355768;},[]);return _0x1a0ee1;};
38
+ const parseFormativeCourses=_0x30fdd2=>{let _0x88a082=_0x30fdd2['split'](',')['reduce']((_0x150b8c,_0xd1bd37)=>{const _0x49bb8b=_0xd1bd37['trim']();if(_0x49bb8b)_0x150b8c['push'](_0x49bb8b);return _0x150b8c;},[]);return _0x88a082;};
39
39
 
40
- const parsePOAEP=_0xb1b9ab=>{try{const _0x2d1ff6=_0x5084af['parse'](_0xb1b9ab,{'skipEmptyLines':![]})['data'],{headerIdx:_0x37c29d,poIdx:_0x373710,tlIdx:_0x252555,piIdx:_0xd7103b,fcIdx:_0x31bca9,scIdx:_0x40bb8e,atIdx:_0x36af2a,ptIdx:_0x28683c}=getPoaepHeader(_0x2d1ff6),_0x3db197=[];let _0x2726ac={'po_desc':'','seq_no':0x0,'PerfIndicators':[]},_0xc11d81='',_0x3bd4f='',_0x5e8580='';for(let _0x150e90=_0x37c29d+0x1;_0x150e90<_0x2d1ff6['length'];_0x150e90++){const _0x1e4b4d=_0x2d1ff6[_0x150e90];if(!_0x1e4b4d)break;const _0x324c5e=_0x1e4b4d[_0x373710]?.['trim']()||'';_0x324c5e!==''&&(_0x2726ac={'po_desc':_0x324c5e,'seq_no':_0x2726ac['seq_no']+0x1,'PerfIndicators':[]},_0x3db197['push'](_0x2726ac),_0xc11d81='',_0x3bd4f='',_0x5e8580='');if(_0x2726ac['po_desc']==='')throw new Error('Invalid\x20Program\x20Outcome\x20at\x20row\x20'+_0x150e90+'.');const _0x21c7b0=_0x1e4b4d[_0xd7103b]?.['trim']()||'';if(_0x21c7b0==='')break;const _0xc528dd=_0x1e4b4d[_0x31bca9]?.['trim']()||'';if(_0xc528dd==='')throw new Error('Empty\x20Formative\x20Courses\x20at\x20row\x20'+_0x150e90+'.');const _0x189e27=_0x1e4b4d[_0x40bb8e]?.['trim']()||_0xc11d81;if(_0x189e27==='')throw new Error('Empty\x20Summative\x20Course\x20at\x20row\x20'+_0x150e90+'.');_0xc11d81=_0x189e27;const _0x7a5f8a=_0x1e4b4d[_0x36af2a]?.['trim']()||_0x3bd4f;if(_0x7a5f8a==='')throw new Error('Empty\x20Assessment\x20Tool\x20at\x20row\x20'+_0x150e90+'.');_0x3bd4f=_0x7a5f8a;const _0x49e7ba=_0x1e4b4d[_0x28683c]?.['trim']()||_0x5e8580;if(_0x49e7ba==='')throw new Error('Empty\x20Performance\x20Target\x20at\x20row\x20'+_0x150e90+'.');_0x5e8580=_0x49e7ba;const _0x4eafc0=parseFormativeCourses(_0xc528dd);if(_0x4eafc0['length']===0x0)throw new Error('Invalid\x20Formative\x20Courses\x20format\x20at\x20row\x20'+_0x150e90+'.');const _0x357317=performaceTarget(_0x49e7ba);if(!_0x357317['performance_target']||!_0x357317['passing_score'])throw new Error('Invalid\x20Performance\x20Targets\x20format\x20at\x20row\x20'+_0x150e90+'.');const _0x1d2847={'pi_desc':_0x21c7b0,'FormativeCourses':_0x4eafc0['map'](_0x13f2f0=>({'course_id':_0x13f2f0,'cognitive_level':0x0})),'SummativeCourse':{'course_id':_0x189e27},'AssessmentTool':{'at_desc':_0x7a5f8a},'PerformanceTargets':{'target_percent':_0x357317['performance_target'],'min_score':_0x357317['passing_score']}};_0x2726ac['PerfIndicators']['push'](_0x1d2847);}return {'success':!![],'message':'Successfully\x20parsed\x20POAEP\x20file.','data':{'POAEP':_0x3db197}};}catch(_0x332b65){return {'success':![],'error':_0x332b65 instanceof Error?_0x332b65['message']:_0x332b65,'message':'Please\x20ensure\x20the\x20file\x20follows\x20the\x20POAEP\x20template.'};}};
40
+ const parsePOAEP=_0x406466=>{try{const _0x586cfc=_0x204ec9['parse'](_0x406466,{'skipEmptyLines':![]})['data'],{headerIdx:_0x3dcd20,poIdx:_0x3858ce,tlIdx:_0x141a4a,piIdx:_0x1b4814,fcIdx:_0x39090d,scIdx:_0xad4f7c,atIdx:_0x2d5d37,ptIdx:_0x3c8d33}=getPoaepHeader(_0x586cfc),_0x1a9076=[];let _0x1d6c69={'po_desc':'','seq_no':0x0,'PerfIndicators':[]},_0x313ec4='',_0x58e402='',_0xab7eda='';for(let _0x23147a=_0x3dcd20+0x1;_0x23147a<_0x586cfc['length'];_0x23147a++){const _0x364d0a=_0x586cfc[_0x23147a];if(!_0x364d0a)break;const _0x5b5ce3=_0x364d0a[_0x3858ce]?.['trim']()||'';_0x5b5ce3!==''&&(_0x1d6c69={'po_desc':_0x5b5ce3,'seq_no':_0x1d6c69['seq_no']+0x1,'PerfIndicators':[]},_0x1a9076['push'](_0x1d6c69),_0x313ec4='',_0x58e402='',_0xab7eda='');if(_0x1d6c69['po_desc']==='')throw new Error('Invalid\x20Program\x20Outcome\x20at\x20row\x20'+_0x23147a+'.');const _0x57bdb5=_0x364d0a[_0x1b4814]?.['trim']()||'';if(_0x57bdb5==='')break;const _0x22fd75=_0x364d0a[_0x39090d]?.['trim']()||'';if(_0x22fd75==='')throw new Error('Empty\x20Formative\x20Courses\x20at\x20row\x20'+_0x23147a+'.');const _0xd06234=_0x364d0a[_0xad4f7c]?.['trim']()||_0x313ec4;if(_0xd06234==='')throw new Error('Empty\x20Summative\x20Course\x20at\x20row\x20'+_0x23147a+'.');_0x313ec4=_0xd06234;const _0x134714=_0x364d0a[_0x2d5d37]?.['trim']()||_0x58e402;if(_0x134714==='')throw new Error('Empty\x20Assessment\x20Tool\x20at\x20row\x20'+_0x23147a+'.');_0x58e402=_0x134714;const _0x14eca1=_0x364d0a[_0x3c8d33]?.['trim']()||_0xab7eda;if(_0x14eca1==='')throw new Error('Empty\x20Performance\x20Target\x20at\x20row\x20'+_0x23147a+'.');_0xab7eda=_0x14eca1;const _0x2b26d4=parseFormativeCourses(_0x22fd75);if(_0x2b26d4['length']===0x0)throw new Error('Invalid\x20Formative\x20Courses\x20format\x20at\x20row\x20'+_0x23147a+'.');const _0xb03350=performaceTarget(_0x14eca1);if(!_0xb03350['performance_target']||!_0xb03350['passing_score'])throw new Error('Invalid\x20Performance\x20Targets\x20format\x20at\x20row\x20'+_0x23147a+'.');const _0x127419={'pi_desc':_0x57bdb5,'FormativeCourses':_0x2b26d4['map'](_0x5e4c28=>({'course_id':_0x5e4c28,'cognitive_level':0x0})),'SummativeCourse':{'course_id':_0xd06234},'AssessmentTool':{'at_desc':_0x134714},'PerformanceTargets':{'target_percent':_0xb03350['performance_target'],'min_score':_0xb03350['passing_score']}};_0x1d6c69['PerfIndicators']['push'](_0x127419);}return {'success':!![],'message':'Successfully\x20parsed\x20POAEP\x20file.','data':{'POAEP':_0x1a9076}};}catch(_0x982bc0){return {'success':![],'error':_0x982bc0 instanceof Error?_0x982bc0['message']:_0x982bc0,'message':'Please\x20ensure\x20the\x20file\x20follows\x20the\x20POAEP\x20template.'};}};
41
41
 
42
- async function uploadPOAEP(_0x4f7c5c,_0x12b5c7,_0x4e5c18,_0x53e173,_0x52907b){try{const _0x14709e=await convertToCSVFile(_0x12b5c7),_0x18d1a2=await _0x14709e['text'](),_0x54c158=parsePOAEP(_0x18d1a2),_0x40bd6b=await fetch(_0x4f7c5c+'/program-outcomes/poaep/upload?curr_id='+_0x53e173+'&period_id='+_0x52907b,{'method':'POST','headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+_0x4e5c18},'credentials':'include','body':JSON['stringify'](_0x54c158)});if(!_0x40bd6b['ok']){const _0x1e6026=await _0x40bd6b['json']();throw _0x1e6026;}return _0x40bd6b['json']();}catch(_0x4350b9){throw _0x4350b9;}}
42
+ async function uploadPOAEP(_0x4f7c04,_0x37d774,_0x57f647,_0x16e09e,_0x208e4a){try{const _0x13c044=await convertToCSVFile(_0x37d774),_0x141651=await _0x13c044['text'](),_0x102ff8=parsePOAEP(_0x141651),_0x263d23=await fetch(_0x4f7c04+'/program-outcomes/poaep/upload?curr_id='+_0x16e09e+'&period_id='+_0x208e4a,{'method':'POST','headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+_0x57f647},'credentials':'include','body':JSON['stringify'](_0x102ff8)});if(!_0x263d23['ok']){const _0x459e1e=await _0x263d23['json']();throw _0x459e1e;}return _0x263d23['json']();}catch(_0x2ea1c7){throw _0x2ea1c7;}}
43
43
 
44
- class DataTable{['name'];['table'];['headers'];['validators']=[];constructor(_0x1d4fa0='DataTable'){this['name']=_0x1d4fa0,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'](_0x26697b){await this['assertInitialized']();if(_0x26697b[0x0]['length']!==this['headers']['length'])Promise['reject'](new Error('Number\x20of\x20columns\x20does\x20not\x20match\x20number\x20of\x20headers.'));this['table']=_0x26697b;}async['initializeTable'](_0x3771f5){try{let _0x1bf180;if(_0x3771f5 instanceof File)_0x1bf180=await this['fromXML'](_0x3771f5);else _0x1bf180=await this['fromCSVString'](_0x3771f5);if(!_0x1bf180['success']||!_0x1bf180['data'])return _0x1bf180;if(_0x1bf180['data']['table']['length']===0x0)throw new Error('Cannot\x20set\x20an\x20empty\x20table.');const {table:_0x228ba0,headers:_0x412337}=_0x1bf180['data'];return this['table']=_0x228ba0,this['headers']=_0x412337,{'success':!![],'message':'Successfully\x20set\x20table.'};}catch(_0x43c9b4){return {'success':![],'message':'Error\x20setting\x20table.','error':_0x43c9b4};}}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'](_0x83852c,_0x37801b){const _0x116bbe=await convertToCSVFile(_0x83852c,_0x37801b),_0xab5773=await _0x116bbe['text']();return this['fromCSVString'](_0xab5773);}async['findValue'](_0x9204e5){await this['assertInitialized']();for(let _0x583110=0x0;_0x583110<this['table']['length'];_0x583110++){for(let _0x8709b7=0x0;_0x8709b7<this['table'][_0x583110]['length'];_0x8709b7++){if(this['table'][_0x583110][_0x8709b7]===_0x9204e5)return {'row':_0x583110,'column':_0x8709b7};}}return {'row':-1,'column':-1};}async['validate'](){const _0x10551e=[],_0x66fa11=[];try{await this['assertInitialized']()['then'](_0x2eb7fc=>{_0x10551e['push'](_0x2eb7fc);})['catch'](_0xc18d96=>_0x66fa11['push'](_0xc18d96));if(_0x66fa11['length']>0x0)throw 'Cannot\x20validate\x20uninitialized\x20table.';await this['validateFields'](_0x10551e,_0x66fa11);const {success:_0x116ec4,message:_0x36a7b7,error:_0x3c7f70,data:_0x5cfd3f}=await this['toJson']();if(!_0x5cfd3f)throw 'Cannot\x20access\x20Json\x20Object\x20data.';_0x10551e['push'](..._0x5cfd3f['validMsgs']),_0x66fa11['push'](..._0x5cfd3f['tableErrors']);const {jsonObj:_0x183613}=_0x5cfd3f;for(const _0x17a1aa of this['validators']){await _0x17a1aa['validate'](_0x10551e,_0x66fa11,this,_0x183613);}let _0x151d70=this['name']+'\x20ran\x20its\x20validations.';if(_0x10551e['length']>0x0)_0x151d70+='\x20'+_0x10551e['length']+'\x20validations\x20were\x20successful.';if(_0x66fa11['length']>0x0)_0x151d70+='\x20'+_0x66fa11['length']+'\x20validations\x20failed.';return {'success':!![],'message':_0x151d70,'data':{'validMsgs':_0x10551e,'tableErrors':_0x66fa11}};}catch(_0x4b4983){return _0x66fa11['push']({'error':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','from':this['name']['toUpperCase']()+'_VALIDATE','cause':_0x4b4983}),{'success':![],'message':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','data':{'validMsgs':_0x10551e,'tableErrors':_0x66fa11}};}}['useValidator'](_0x2113b3){this['validators']['push'](_0x2113b3);}}
44
+ class DataTable{['name'];['headers'];['table'];['validators']=[];constructor(_0x1e6a33='DataTable',_0x1adc04){this['name']=_0x1e6a33,this['headers']=_0x1adc04,this['table']=[],this['validators']=[];}['getName'](){return this['name'];}['getHeaders'](){return this['headers'];}['getTable'](){if(this['table']['length']===0x0)return {'success':![],'message':'Datatable\x20is\x20unset.'};return {'success':!![],'message':'Successfully\x20fetched\x20datatable.','data':{'name':this['name'],'headers':this['headers'],'table':this['table']}};}async['setTable'](_0x377aeb){await this['assertInitialized']();}async['initializeTable'](_0x376dd0,_0x595427){try{let _0x304810;if(_0x376dd0 instanceof File)_0x304810=await this['fromXML'](_0x376dd0,_0x595427);else _0x304810=await this['fromCSVString'](_0x376dd0);if(!_0x304810['success']||!_0x304810['data'])return _0x304810;if(_0x304810['data']['length']===0x0)throw new Error('Cannot\x20set\x20an\x20empty\x20table.');return this['table']=_0x304810['data'],{'success':!![],'message':'Successfully\x20set\x20table.'};}catch(_0x260a11){return {'success':![],'message':'Error\x20setting\x20table.','error':_0x260a11};}}async['assertInitialized'](){if(this['table']['length']===0x0)Promise['reject']({'error':this['name']+'\x20is\x20unset.','from':this['name']['toUpperCase']()+'_ASSERT_INIT'});}async['fromXML'](_0x2dc729,_0x511c01){const _0x13ed8e=await convertToCSVFile(_0x2dc729,_0x511c01),_0x13a9a1=await _0x13ed8e['text']();return this['fromCSVString'](_0x13a9a1);}async['findValue'](_0x36f86d){let [_0x2fcc1b,_0x2133ed]=[-1,-1];if(!_0x36f86d)return {'row':_0x2fcc1b,'column':_0x2133ed};for(let _0x54a938=0x0;_0x54a938<this['table']['length'];_0x54a938++){const _0x293832=this['table'][_0x54a938];for(let _0x303e79=0x0;_0x303e79<_0x293832['length'];_0x303e79++){if(typeof _0x36f86d==='string'){if(_0x293832[_0x303e79]===_0x36f86d)return {'row':_0x54a938,'column':_0x303e79};}else {if(_0x293832[_0x303e79]){if(_0x293832[_0x303e79]===_0x36f86d)return {'row':_0x54a938,'column':_0x303e79};}}}}return {'row':_0x2fcc1b,'column':_0x2133ed};}async['validate'](){const _0x570a2a=[],_0x158411=[];try{await this['assertInitialized']()['then'](()=>{_0x570a2a['push']('Table\x20is\x20initialized.');})['catch'](_0x5704d2=>_0x158411['push'](_0x5704d2));if(_0x158411['length']>0x0)throw 'Cannot\x20validate\x20uninitialized\x20table.';await this['validateFields'](_0x570a2a,_0x158411);const {success:_0x89cadd,message:_0x7158d3,error:_0x548f19,data:_0x1ee36b}=await this['toJson']();if(!_0x1ee36b)throw 'Cannot\x20access\x20Json\x20Object\x20data.';_0x570a2a['push'](..._0x1ee36b['validMsgs']),_0x158411['push'](..._0x1ee36b['tableErrors']);const {jsonObj:_0x596b16}=_0x1ee36b;for(const _0x573dec of this['validators']){await _0x573dec['validate'](_0x570a2a,_0x158411,this,_0x596b16);}let _0x3b1c5f=this['name']+'\x20ran\x20its\x20validations.';if(_0x570a2a['length']>0x0)_0x3b1c5f+='\x20'+_0x570a2a['length']+'\x20validations\x20were\x20successful.';if(_0x158411['length']>0x0)_0x3b1c5f+='\x20'+_0x158411['length']+'\x20validations\x20failed.';return {'success':!![],'message':_0x3b1c5f,'data':{'validMsgs':_0x570a2a,'tableErrors':_0x158411}};}catch(_0x5ac405){return _0x158411['push']({'error':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','from':this['name']['toUpperCase']()+'_VALIDATE','cause':_0x5ac405}),{'success':![],'message':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','data':{'validMsgs':_0x570a2a,'tableErrors':_0x158411}};}}['useValidator'](_0x2d0084){this['validators']['push'](_0x2d0084);}}
45
45
 
46
- class DTValidator{['name'];constructor(_0x54c547){this['name']=_0x54c547;}['getName'](){return this['name'];}['report'](_0x50027a,_0x5b708a,_0x284f7f){if(_0x50027a['length']>0x0)_0x284f7f['push'](..._0x50027a);else _0x5b708a['push'](this['name']+'\x20successfully\x20validated.');}}
46
+ class DTValidator{['name'];constructor(_0x318b20){this['name']=_0x318b20;}['getName'](){return this['name'];}['report'](_0x881c88,_0x4c6682,_0x41925e){if(_0x881c88['length']>0x0)_0x41925e['push'](..._0x881c88);else _0x4c6682['push'](this['name']+'\x20successfully\x20validated.');}}
47
47
 
48
- class LastILOTaxo extends DTValidator{constructor(){super('LAST_ILO_TAXO');}async['validate'](_0x230995,_0x485179,_0x38e045,_0x4d47b0){const _0x5f26d2=[];if(!_0x4d47b0){_0x485179['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x37cfec=0x0;_0x37cfec<_0x4d47b0['co']['length'];_0x37cfec++){const _0x590de0=_0x4d47b0['co'][_0x37cfec];if(!_0x590de0){const {row:_0x1f9b4e,column:_0x476e5c}=await _0x38e045['findValue'](_0x37cfec+0x1+'');_0x5f26d2['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x37cfec+0x1)+'.','row':_0x1f9b4e,'column':_0x476e5c+0x1,'from':this['name']});continue;}if(!_0x590de0?.['ilo']){const {row:_0x20eb53,column:_0x139dd2}=await _0x38e045['findValue'](_0x590de0['statement']);_0x5f26d2['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x37cfec+0x1)+'.','row':_0x20eb53,'column':_0x139dd2,'from':this['name']});continue;}const _0x14f900=_0x590de0['ilo']['length']-0x1,_0x2256bb=_0x590de0['ilo'][_0x14f900];if(!_0x2256bb['taxonomy_level']){const {row:_0x49d58c,column:_0x133bfd}=await _0x38e045['findValue'](_0x2256bb['statement']);_0x5f26d2['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x37cfec+0x1)+'\x20has\x20no\x20Taxonomy\x20Level.','row':_0x49d58c,'column':_0x133bfd,'from':this['name']});continue;}if(_0x2256bb['taxonomy_level']!==_0x590de0['taxonomy_level']){const {row:_0x771b61,column:_0x1a36ee}=await _0x38e045['findValue'](_0x2256bb['statement']);_0x5f26d2['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x37cfec+0x1)+'\x20does\x20not\x20match\x20the\x20CO\x27s\x20Taxonomy\x20Level.\x20('+_0x2256bb['taxonomy_level']+'\x20!==\x20'+_0x590de0['taxonomy_level']+')','row':_0x771b61,'column':_0x1a36ee,'from':this['name']});}}this['report'](_0x5f26d2,_0x230995,_0x485179);}}
48
+ class LastILOTaxo extends DTValidator{constructor(){super('LAST_ILO_TAXO');}async['validate'](_0x1645b9,_0x505b01,_0x2f0e51,_0x32bec2){const _0x2589b3=[];if(!_0x32bec2){_0x505b01['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x469923=0x0;_0x469923<_0x32bec2['co']['length'];_0x469923++){const _0x5d29a8=_0x32bec2['co'][_0x469923];if(!_0x5d29a8){const {row:_0xab9db0,column:_0x5d459b}=await _0x2f0e51['findValue'](_0x469923+0x1+'');_0x2589b3['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x469923+0x1)+'.','row':_0xab9db0,'column':_0x5d459b+0x1,'from':this['name']});continue;}if(!_0x5d29a8?.['ilo']){const {row:_0x348d6d,column:_0x3cdbd8}=await _0x2f0e51['findValue'](_0x5d29a8['statement']);_0x2589b3['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x469923+0x1)+'.','row':_0x348d6d,'column':_0x3cdbd8,'from':this['name']});continue;}const _0x307fb3=_0x5d29a8['ilo']['length']-0x1,_0x10cf8f=_0x5d29a8['ilo'][_0x307fb3];if(!_0x10cf8f['taxonomy_level']){const {row:_0x4b4391,column:_0x3c8d8b}=await _0x2f0e51['findValue'](_0x10cf8f['statement']);_0x2589b3['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x469923+0x1)+'\x20has\x20no\x20Taxonomy\x20Level.','row':_0x4b4391,'column':_0x3c8d8b,'from':this['name']});continue;}if(_0x10cf8f['taxonomy_level']!==_0x5d29a8['taxonomy_level']){const {row:_0x171930,column:_0x20da4f}=await _0x2f0e51['findValue'](_0x10cf8f['statement']);_0x2589b3['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x469923+0x1)+'\x20does\x20not\x20match\x20the\x20CO\x27s\x20Taxonomy\x20Level.\x20('+_0x10cf8f['taxonomy_level']+'\x20!==\x20'+_0x5d29a8['taxonomy_level']+')','row':_0x171930,'column':_0x20da4f,'from':this['name']});}}this['report'](_0x2589b3,_0x1645b9,_0x505b01);}}
49
49
 
50
- const whitelist=['applying','analyzing','evaluating','creating'];class MinCOtaxo extends DTValidator{constructor(){super('MIN_CO_TAXO');}async['validate'](_0x4fb61d,_0x573676,_0x3d1e6f,_0x34ff07){const _0x3cf306=[];if(!_0x34ff07){_0x573676['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x3ec8a6=0x0;_0x3ec8a6<_0x34ff07['co']['length'];_0x3ec8a6++){const _0x4ced40=_0x34ff07['co'][_0x3ec8a6];if(!_0x4ced40['taxonomy_level']){_0x3cf306['push']({'error':'No\x20taxonomy\x20level\x20for\x20CO\x20'+(_0x3ec8a6+0x1),'from':this['name']});continue;}if(!whitelist['includes'](_0x4ced40['taxonomy_level'])){const {row:_0x280764,column:_0xf882f8}=await _0x3d1e6f['findValue'](_0x4ced40['statement']);let _0x4f392b={'error':'Cannot\x20have\x20CO\x20Taxonomy\x20Level\x20of\x20lower\x20than\x20Applying:\x20'+_0x4ced40['taxonomy_level']['toUpperCase'](),'from':this['name']};(_0x280764!==-1||_0xf882f8!==-1)&&(_0x4f392b['row']=_0x280764,_0x4f392b['column']=_0xf882f8),_0x3cf306['push'](_0x4f392b);}}this['report'](_0x3cf306,_0x4fb61d,_0x573676);return;}}
50
+ const whitelist=['applying','analyzing','evaluating','creating'];class MinCOtaxo extends DTValidator{constructor(){super('MIN_CO_TAXO');}async['validate'](_0x591d03,_0x3c7eab,_0x280d45,_0x368610){const _0x3870b0=[];if(!_0x368610){_0x3c7eab['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x46ace9=0x0;_0x46ace9<_0x368610['co']['length'];_0x46ace9++){const _0x338339=_0x368610['co'][_0x46ace9];if(!_0x338339['taxonomy_level']){_0x3870b0['push']({'error':'No\x20taxonomy\x20level\x20for\x20CO\x20'+(_0x46ace9+0x1),'from':this['name']});continue;}if(!whitelist['includes'](_0x338339['taxonomy_level'])){const {row:_0x132b4a,column:_0x5a6ff1}=await _0x280d45['findValue'](_0x338339['statement']);let _0x28f9da={'error':'Cannot\x20have\x20CO\x20Taxonomy\x20Level\x20of\x20lower\x20than\x20Applying:\x20'+_0x338339['taxonomy_level']['toUpperCase'](),'from':this['name']};(_0x132b4a!==-1||_0x5a6ff1!==-1)&&(_0x28f9da['row']=_0x132b4a,_0x28f9da['column']=_0x5a6ff1),_0x3870b0['push'](_0x28f9da);}}this['report'](_0x3870b0,_0x591d03,_0x3c7eab);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'](_0x5bbf07,_0x2a1bde,_0x109d96,_0xee6921){const _0x44ce96=[];if(!_0xee6921){_0x2a1bde['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x4b904a=0x0;_0x4b904a<_0xee6921['co']['length'];_0x4b904a++){const _0x349005=_0xee6921['co'][_0x4b904a];if(!_0x349005){const {row:_0x4712de,column:_0x156d7d}=await _0x109d96['findValue'](_0x4b904a+0x1+'');_0x44ce96['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x4b904a+0x1)+'.','row':_0x4712de,'column':_0x156d7d+0x1,'from':this['name']});continue;}if(!_0x349005?.['ilo']){const {row:_0xfca9d8,column:_0x4ede76}=await _0x109d96['findValue'](_0x349005['statement']);_0x44ce96['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x4b904a+0x1)+'.','row':_0xfca9d8,'column':_0x4ede76,'from':this['name']});continue;}const _0xafdddc=await _0x109d96['findValue'](_0x349005['ilo'][0x0]['statement']),_0x1bee70=_0x349005['ilo']['map'](_0x1d8a62=>taxoOrder[_0x1d8a62['taxonomy_level']]);let _0x38e8a4=_0x1bee70[0x0];for(let _0x5cdee6=0x1;_0x5cdee6<_0x1bee70['length'];_0x5cdee6++){if(_0x1bee70[_0x5cdee6]<_0x38e8a4){_0x44ce96['push']({'error':'Under\x20CO\x20'+(_0x4b904a+0x1)+',\x20ILO\x20'+(_0x5cdee6+0x1)+'\x20should\x20not\x20have\x20a\x20taxonomy\x20level\x20lower\x20than\x20ILO\x20'+_0x5cdee6+'\x27s.','row':_0xafdddc['row'],'column':_0xafdddc['column']+_0x5cdee6,'from':this['name']});continue;}_0x38e8a4=_0x1bee70[_0x5cdee6];}}this['report'](_0x44ce96,_0x5bbf07,_0x2a1bde);}}
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'](_0x49748b,_0x5bdf73,_0x5bab50,_0x3d7917){const _0x3c4171=[];if(!_0x3d7917){_0x5bdf73['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x557439=0x0;_0x557439<_0x3d7917['co']['length'];_0x557439++){const _0x1d2ea8=_0x3d7917['co'][_0x557439];if(!_0x1d2ea8){const {row:_0x198659,column:_0x32fec6}=await _0x5bab50['findValue'](_0x557439+0x1+'');_0x3c4171['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x557439+0x1)+'.','row':_0x198659,'column':_0x32fec6+0x1,'from':this['name']});continue;}if(!_0x1d2ea8?.['ilo']){const {row:_0x10c42c,column:_0x34a5b1}=await _0x5bab50['findValue'](_0x1d2ea8['statement']);_0x3c4171['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x557439+0x1)+'.','row':_0x10c42c,'column':_0x34a5b1,'from':this['name']});continue;}const _0x7ff0fa=await _0x5bab50['findValue'](_0x1d2ea8['ilo'][0x0]['statement']),_0x31d32d=_0x1d2ea8['ilo']['map'](_0x101852=>taxoOrder[_0x101852['taxonomy_level']]);let _0x1e4733=_0x31d32d[0x0];for(let _0x37f1cc=0x1;_0x37f1cc<_0x31d32d['length'];_0x37f1cc++){if(_0x31d32d[_0x37f1cc]<_0x1e4733){_0x3c4171['push']({'error':'Under\x20CO\x20'+(_0x557439+0x1)+',\x20ILO\x20'+(_0x37f1cc+0x1)+'\x20should\x20not\x20have\x20a\x20taxonomy\x20level\x20lower\x20than\x20ILO\x20'+_0x37f1cc+'\x27s.','row':_0x7ff0fa['row'],'column':_0x7ff0fa['column']+_0x37f1cc,'from':this['name']});continue;}_0x1e4733=_0x31d32d[_0x37f1cc];}}this['report'](_0x3c4171,_0x49748b,_0x5bdf73);}}
53
53
 
54
- const minPerfTarget=0x32,minPassScore=0x32;class MinPerfTarget extends DTValidator{constructor(){super('MIN_PERF_TARGET');}async['validate'](_0x3947e,_0x37c123,_0x306eef,_0x5f5871){const {success:_0x5cd240,data:_0xb66b07}=_0x306eef['getTable'](),_0x210a2a=[];if(!_0x5cd240){_0x210a2a['push']({'error':'Failed\x20to\x20access\x20table\x20data.','from':this['name']});return;}const {table:_0x62fc2e}=_0xb66b07;for(let _0x238a33=0x0;_0x238a33<_0x62fc2e['length'];_0x238a33++){const _0x40fba7=_0x62fc2e[_0x238a33],[_0xd96763,_0x39ed45]=_0x40fba7[0x4];if(!_0xd96763)_0x210a2a['push']({'error':'Performance\x20target\x20is\x20required.','row':_0x238a33,'column':0x4,'from':this['name']});else _0xd96763<minPerfTarget&&_0x210a2a['push']({'error':'Performance\x20target\x20must\x20be\x20at\x20least\x20'+minPerfTarget+'.','row':_0x238a33,'column':0x4,'from':this['name']});if(!_0x39ed45)_0x210a2a['push']({'error':'Pass\x20score\x20is\x20required.','row':_0x238a33,'column':0x6,'from':this['name']});else _0x39ed45<minPassScore&&_0x210a2a['push']({'error':'Pass\x20score\x20must\x20be\x20at\x20least\x20'+minPassScore+'.','row':_0x238a33,'column':0x6,'from':this['name']});}this['report'](_0x210a2a,_0x3947e,_0x37c123);}}
54
+ const minPerfTarget=0x32,minPassScore=0x32;class MinPerfTarget extends DTValidator{constructor(){super('MIN_PERF_TARGET');}async['validate'](_0x25e98f,_0x321cf1,_0x14b30e,_0x1b5698){const {success:_0x55cbec,data:_0x51e644}=_0x14b30e['getTable'](),_0x5c4445=[];if(!_0x55cbec){_0x5c4445['push']({'error':'Failed\x20to\x20access\x20table\x20data.','from':this['name']});return;}const {table:_0x4ca890}=_0x51e644;for(let _0x3cb96b=0x0;_0x3cb96b<_0x4ca890['length'];_0x3cb96b++){const _0x23c286=_0x4ca890[_0x3cb96b],[_0x17e4ef,_0x2ff396]=_0x23c286[0x4];if(!_0x17e4ef)_0x5c4445['push']({'error':'Performance\x20target\x20is\x20required.','row':_0x3cb96b,'column':0x4,'from':this['name']});else _0x17e4ef<minPerfTarget&&_0x5c4445['push']({'error':'Performance\x20target\x20must\x20be\x20at\x20least\x20'+minPerfTarget+'.','row':_0x3cb96b,'column':0x4,'from':this['name']});if(!_0x2ff396)_0x5c4445['push']({'error':'Pass\x20score\x20is\x20required.','row':_0x3cb96b,'column':0x6,'from':this['name']});else _0x2ff396<minPassScore&&_0x5c4445['push']({'error':'Pass\x20score\x20must\x20be\x20at\x20least\x20'+minPassScore+'.','row':_0x3cb96b,'column':0x6,'from':this['name']});}this['report'](_0x5c4445,_0x25e98f,_0x321cf1);}}
55
55
 
56
- 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()),this['useValidator'](new MinPerfTarget());}async['validateFields'](_0x2d0d30,_0x18a197){const _0x340858=[];let _0x172dfd=null,_0x2e8749=null;for(let _0xc77eeb=0x0;_0xc77eeb<this['table']['length'];_0xc77eeb++){const _0x183d4a=[],_0x4dd8e0=this['table'][_0xc77eeb],_0x23f99e=_0x4dd8e0[0x0]||_0x172dfd,_0x57721c=_0x4dd8e0[0x1]||_0x2e8749,_0x4ee19d=_0x4dd8e0[0x2],_0x16e406=_0x4dd8e0[0x3],_0x5f34c6=_0x4dd8e0[0x4];if(!_0x23f99e)_0x183d4a['push'](0x0);if(!_0x57721c)_0x183d4a['push'](0x1);if(!_0x4ee19d)_0x183d4a['push'](0x2);if(!_0x16e406)_0x183d4a['push'](0x3);if(!_0x5f34c6)_0x183d4a['push'](0x4);if(_0x2e8749!==_0x57721c)this['validateObjectiveGrammar'](_0x57721c,_0xc77eeb,0x1,_0x18a197);_0x172dfd=_0x23f99e,_0x2e8749=_0x57721c;for(const _0x17d33b of _0x183d4a){_0x340858['push']({'error':'Missing\x20field:\x20'+this['headers'][_0x17d33b],'row':_0xc77eeb,'column':_0x17d33b});}if(_0x4ee19d)this['validateObjectiveGrammar'](_0x4ee19d,_0xc77eeb,0x2,_0x18a197);}if(_0x340858['length']>0x0)_0x18a197['push'](..._0x340858);else _0x2d0d30['push'](this['name']+'\x20successfully\x20validated\x20all\x20fields.');}async['fromCSVString'](_0x2f79ae){try{const _0x349710={'name':this['name'],'table':[],'headers':[],'types':[]},_0x2502eb=_0x5084af['parse'](_0x2f79ae,{'skipEmptyLines':![]})['data'];_0x349710['headers']=['No.','Course\x20Outcome\x20Statement','Intended\x20Learning\x20Outcome','Assessment\x20Tool','Performance\x20Target'];const {headerRowIndex:_0xaa03f0,coIdx:_0x3efc78,iloIdx:_0x858ab5,assessToolIdx:_0xdac277,perfTargetIdx:_0x3317a1}=getCoaepHeader(_0x2502eb);if(_0xaa03f0===-0x1)throw new Error('Could\x20not\x20auto-detect\x20header\x20row.\x20Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.');_0x2502eb['forEach'](_0x5a9f4d=>{const _0x24f5be=_0x5a9f4d['indexOf']('Name\x20of\x20Faculty:'),_0x5170a1=_0x5a9f4d['indexOf']('School\x20Year'),_0x1ed135=_0x5a9f4d['indexOf']('Course:'),_0x4cd9c3=_0x5a9f4d['indexOf']('Semester');_0x24f5be!==-0x1&&(this['faculty']=_0x5a9f4d[_0x24f5be+0x1]?.['trim']()||this['faculty']);_0x5170a1!==-0x1&&(this['sy']=_0x5a9f4d[_0x5170a1+0x1]?.['trim']()||this['sy']);_0x1ed135!==-0x1&&(this['course']=_0x5a9f4d[_0x1ed135+0x1]?.['trim']()||this['course']);if(_0x4cd9c3!==-0x1){const _0x205e66=_0x5a9f4d[_0x4cd9c3+0x1]?.['trim']()||'',_0x5968c4=_0x205e66['match'](/\d+/)?.[0x0];this['semester']=_0x5968c4?parseInt(_0x5968c4,0xa):this['semester'];}});for(let _0x52e4e6=0x0;_0x52e4e6<=_0x2502eb['length'];_0x52e4e6++){const _0x1c35e2=_0x2502eb[_0x52e4e6];if(!_0x1c35e2)break;if(_0x52e4e6<=_0xaa03f0)continue;let _0x250579=_0x1c35e2[_0x3efc78-0x1]?.['trim']()||'',_0x1f6fc2=_0x1c35e2[_0x3efc78]?.['trim']()||'';/^\d+$/['test'](_0x1c35e2[_0x3efc78]?.['trim']()||'')&&(_0x250579=_0x1c35e2[_0x3efc78]?.['trim']()||'',_0x1f6fc2=_0x1c35e2[_0x3efc78+0x1]?.['trim']()||'');const _0x4dc0c3=_0x1c35e2[_0x3317a1]?.['replace'](/\s+/g,'\x20')['trim']()||'',{performance_target:_0x289d7b,passing_score:_0x2035d2}=performaceTarget(_0x4dc0c3);if(_0x1c35e2[_0x858ab5])_0x349710['table']['push']([_0x250579,_0x1f6fc2,_0x1c35e2[_0x858ab5]?.['trim']()||'',_0x1c35e2[_0xdac277]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',[_0x289d7b,_0x2035d2]]);else break;}return {'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable.','data':_0x349710};}catch(_0x3d5e77){return {'success':![],'message':'Error\x20parsing\x20COAEP\x20table','error':_0x3d5e77};}}async['toJson'](){const _0x1e6c02=[],_0x315f4f=[],_0x32a7c1='COAEPDT_TO_JSON';try{await this['assertInitialized']();const _0x1a0dd0={'faculty':this['faculty'],'course':this['course'],'sy':this['sy'],'semester':this['semester'],'co':[]};let _0x23c078=null,_0x5a8f3c='',_0x40756d=[null,null];this['table']['forEach']((_0x23c600,_0x326aad)=>{if(_0x326aad===0x0&&!_0x23c600[0x1])_0x315f4f['push']({'error':'Cannot\x20have\x20empty\x20CO\x20Statement\x20in\x20first\x20row.','row':0x0,'column':0x1,'from':_0x32a7c1});_0x23c600[0x1]&&(_0x5a8f3c='',_0x40756d=[null,null]);const _0x3eaf5c=_0x23c600[0x1],_0x12a156=_0x23c600[0x2],_0x1ac04e=_0x23c600[0x3]||_0x5a8f3c,_0xff003=_0x23c600[0x4]||_0x40756d;if(!_0x12a156)_0x315f4f['push']({'error':'Cannot\x20have\x20empty\x20ILO.','row':0x1,'column':0x2,'from':_0x32a7c1});if(!_0x1ac04e)_0x315f4f['push']({'error':'Cannot\x20have\x20empty\x20Assessment\x20Tool.','row':_0x326aad,'column':0x3,'from':_0x32a7c1});if(!_0xff003)_0x315f4f['push']({'error':'Cannot\x20have\x20empty\x20Performance\x20Target.','row':_0x326aad,'column':0x4,'from':_0x32a7c1});if(_0x23c600[0x1]){const {cognitive_level:_0x2228e8,taxonomy_level:_0x555a46,verb:_0x35434a}=extractFromObjective(_0x3eaf5c),_0x257c4e={'statement':_0x3eaf5c,'ilo':[],'taxonomy_level':_0x555a46,'cognitive_level':_0x2228e8,'verb':_0x35434a};_0x23c078=_0x257c4e,_0x1a0dd0['co']['push'](_0x257c4e);}const {cognitive_level:_0x1a2baa,taxonomy_level:_0x2fea57,verb:_0x52815a}=extractFromObjective(_0x12a156),[_0x39a2e3,_0x4bf692]=_0xff003,_0x388ddb={'statement':_0x12a156,'assessment_tool':_0x1ac04e,'performance_target':_0x39a2e3,'passing_score':_0x4bf692,'cognitive_level':_0x1a2baa,'taxonomy_level':_0x2fea57,'verb':_0x52815a};_0x23c078['ilo']['push'](_0x388ddb);});if(_0x315f4f['length'])return _0x315f4f['push']({'error':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','from':_0x32a7c1}),{'success':![],'message':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','data':{'jsonObj':_0x1a0dd0,'validMsgs':_0x1e6c02,'tableErrors':_0x315f4f}};return _0x1e6c02['push']('Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON.'),{'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON','data':{'jsonObj':_0x1a0dd0,'validMsgs':_0x1e6c02,'tableErrors':_0x315f4f}};}catch(_0x152326){return _0x315f4f['push']({'error':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','from':_0x32a7c1}),{'success':![],'message':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','error':_0x152326,'data':{'jsonObj':null,'tableErrors':_0x315f4f}};}}['validateObjectiveGrammar'](_0x414b5e,_0x4b5cba,_0x3a306c,_0x59e3ed){const {cognitive_level:_0x2a6fad,taxonomy_level:_0x6707d9,verb:_0x4e37b0}=extractFromObjective(_0x414b5e),_0x1893a3=[];if(!_0x2a6fad)_0x1893a3['push']('cognitive_level');if(!_0x6707d9)_0x1893a3['push']('taxonomy_level');if(!_0x4e37b0)_0x1893a3['push']('verb');if(!_0x1893a3['length'])return;_0x59e3ed['push']({'error':'Cannot\x20find\x20fields:\x20'+_0x1893a3['join'](',\x20')+'.','row':_0x4b5cba,'column':_0x3a306c,'from':this['name']['toUpperCase']()+'_OBJ_GRAMMAR'});}}
56
+ class CoaepDT extends DataTable{['faculty']=null;['course']=null;['sy']=null;['semester']=null;constructor(){super('CoaepDT',['No.','Course\x20Outcome\x20Statement','Intended\x20Learning\x20Outcome','Assessment\x20Tool','Performance\x20Target']),this['useValidator'](new MinCOtaxo()),this['useValidator'](new LastILOTaxo()),this['useValidator'](new ILOTaxoOrder()),this['useValidator'](new MinPerfTarget());}async['validateFields'](_0x5e2d7e,_0x74369b){const _0xd869f9=[];let _0x1030a9=null,_0x15246a=null;for(let _0xc3f565=0x0;_0xc3f565<this['table']['length'];_0xc3f565++){const _0x5034f7=[],_0x386899=this['table'][_0xc3f565],_0x204952=_0x386899[0x0]||_0x1030a9,_0x4fe919=_0x386899[0x1]||_0x15246a,_0x1715ee=_0x386899[0x2],_0x914380=_0x386899[0x3],_0x456cba=_0x386899[0x4];if(!_0x204952)_0x5034f7['push'](0x0);if(!_0x4fe919)_0x5034f7['push'](0x1);if(!_0x1715ee)_0x5034f7['push'](0x2);if(!_0x914380)_0x5034f7['push'](0x3);if(!_0x456cba)_0x5034f7['push'](0x4);if(_0x15246a!==_0x4fe919)this['validateObjectiveGrammar'](_0x4fe919,_0xc3f565,0x1,_0x74369b);_0x1030a9=_0x204952,_0x15246a=_0x4fe919;for(const _0x2d8636 of _0x5034f7){_0xd869f9['push']({'error':'Missing\x20field:\x20'+this['headers'][_0x2d8636],'row':_0xc3f565,'column':_0x2d8636});}if(_0x1715ee)this['validateObjectiveGrammar'](_0x1715ee,_0xc3f565,0x2,_0x74369b);}if(_0xd869f9['length']>0x0)_0x74369b['push'](..._0xd869f9);else _0x5e2d7e['push'](this['name']+'\x20successfully\x20validated\x20all\x20fields.');}async['fromCSVString'](_0x331f84){try{const _0x12219c=[],_0x13f2c8=_0x204ec9['parse'](_0x331f84,{'skipEmptyLines':![]})['data'],{headerRowIndex:_0x4fd797,coIdx:_0x42135d,iloIdx:_0x1f6bf2,assessToolIdx:_0x4b0cac,perfTargetIdx:_0x319c83}=getCoaepHeader(_0x13f2c8);if(_0x4fd797===-0x1)throw new Error('Could\x20not\x20auto-detect\x20header\x20row.\x20Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.');_0x13f2c8['forEach'](_0x175c0e=>{const _0x848ea2=_0x175c0e['indexOf']('Name\x20of\x20Faculty:'),_0x25971b=_0x175c0e['indexOf']('School\x20Year'),_0x39ea60=_0x175c0e['indexOf']('Course:'),_0x5e0cd2=_0x175c0e['indexOf']('Semester');_0x848ea2!==-0x1&&(this['faculty']=_0x175c0e[_0x848ea2+0x1]?.['trim']()||this['faculty']);_0x25971b!==-0x1&&(this['sy']=_0x175c0e[_0x25971b+0x1]?.['trim']()||this['sy']);_0x39ea60!==-0x1&&(this['course']=_0x175c0e[_0x39ea60+0x1]?.['trim']()||this['course']);if(_0x5e0cd2!==-0x1){const _0x380fe6=_0x175c0e[_0x5e0cd2+0x1]?.['trim']()||'',_0x42b4de=_0x380fe6['match'](/\d+/)?.[0x0];this['semester']=_0x42b4de?parseInt(_0x42b4de,0xa):this['semester'];}});for(let _0x4f2e9a=0x0;_0x4f2e9a<=_0x13f2c8['length'];_0x4f2e9a++){const _0x352918=_0x13f2c8[_0x4f2e9a];if(!_0x352918)break;if(_0x4f2e9a<=_0x4fd797)continue;let _0x205f0d=_0x352918[_0x42135d-0x1]?.['trim']()||'',_0x159764=_0x352918[_0x42135d]?.['trim']()||'';/^\d+$/['test'](_0x352918[_0x42135d]?.['trim']()||'')&&(_0x205f0d=_0x352918[_0x42135d]?.['trim']()||'',_0x159764=_0x352918[_0x42135d+0x1]?.['trim']()||'');const _0x546dcd=_0x352918[_0x319c83]?.['replace'](/\s+/g,'\x20')['trim']()||'',{performance_target:_0x408fe6,passing_score:_0x5c8e00}=performaceTarget(_0x546dcd);if(_0x352918[_0x1f6bf2])_0x12219c['push']([_0x205f0d,_0x159764,_0x352918[_0x1f6bf2]?.['trim']()||'',_0x352918[_0x4b0cac]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',[_0x408fe6,_0x5c8e00]]);else break;}return {'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable.','data':_0x12219c};}catch(_0xbca190){return {'success':![],'message':'Error\x20parsing\x20COAEP\x20table','error':_0xbca190};}}async['toJson'](){const _0x5632ae=[],_0x1edef4=[],_0x110601='COAEPDT_TO_JSON';try{await this['assertInitialized']();const _0x3410bc={'faculty':this['faculty'],'course':this['course'],'sy':this['sy'],'semester':this['semester'],'co':[]};let _0x4c8142=null,_0x343160='',_0x2ea4d7=[null,null];this['table']['forEach']((_0x4f3adf,_0x38f8d6)=>{if(_0x38f8d6===0x0&&!_0x4f3adf[0x1])_0x1edef4['push']({'error':'Cannot\x20have\x20empty\x20CO\x20Statement\x20in\x20first\x20row.','row':0x0,'column':0x1,'from':_0x110601});_0x4f3adf[0x1]&&(_0x343160='',_0x2ea4d7=[null,null]);const _0x74609d=_0x4f3adf[0x1],_0x2138c3=_0x4f3adf[0x2],_0x43ea0b=_0x4f3adf[0x3]||_0x343160,_0x315fa1=_0x4f3adf[0x4]||_0x2ea4d7;if(!_0x2138c3)_0x1edef4['push']({'error':'Cannot\x20have\x20empty\x20ILO.','row':0x1,'column':0x2,'from':_0x110601});if(!_0x43ea0b)_0x1edef4['push']({'error':'Cannot\x20have\x20empty\x20Assessment\x20Tool.','row':_0x38f8d6,'column':0x3,'from':_0x110601});if(!_0x315fa1)_0x1edef4['push']({'error':'Cannot\x20have\x20empty\x20Performance\x20Target.','row':_0x38f8d6,'column':0x4,'from':_0x110601});if(_0x4f3adf[0x1]){const {cognitive_level:_0x1a6f85,taxonomy_level:_0x13735b,verb:_0x56dd62}=extractFromObjective(_0x74609d),_0x1854ba={'statement':_0x74609d,'ilo':[],'taxonomy_level':_0x13735b,'cognitive_level':_0x1a6f85,'verb':_0x56dd62};_0x4c8142=_0x1854ba,_0x3410bc['co']['push'](_0x1854ba);}const {cognitive_level:_0x24e28d,taxonomy_level:_0x335f2a,verb:_0x281cff}=extractFromObjective(_0x2138c3),[_0x31225c,_0x3bb392]=_0x315fa1,_0x453c08={'statement':_0x2138c3,'assessment_tool':_0x43ea0b,'performance_target':_0x31225c,'passing_score':_0x3bb392,'cognitive_level':_0x24e28d,'taxonomy_level':_0x335f2a,'verb':_0x281cff};_0x4c8142['ilo']['push'](_0x453c08);});if(_0x1edef4['length'])return _0x1edef4['push']({'error':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','from':_0x110601}),{'success':![],'message':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','data':{'jsonObj':_0x3410bc,'validMsgs':_0x5632ae,'tableErrors':_0x1edef4}};return _0x5632ae['push']('Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON.'),{'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON','data':{'jsonObj':_0x3410bc,'validMsgs':_0x5632ae,'tableErrors':_0x1edef4}};}catch(_0x4631f1){return _0x1edef4['push']({'error':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','from':_0x110601}),{'success':![],'message':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','error':_0x4631f1,'data':{'jsonObj':null,'tableErrors':_0x1edef4}};}}['validateObjectiveGrammar'](_0x188fe3,_0x214d33,_0x1fe854,_0x5cb26c){const {cognitive_level:_0x2e2892,taxonomy_level:_0x397d17,verb:_0x24fb7f}=extractFromObjective(_0x188fe3),_0x1e13dd=[];if(!_0x2e2892)_0x1e13dd['push']('cognitive_level');if(!_0x397d17)_0x1e13dd['push']('taxonomy_level');if(!_0x24fb7f)_0x1e13dd['push']('verb');if(!_0x1e13dd['length'])return;_0x5cb26c['push']({'error':'Cannot\x20find\x20fields:\x20'+_0x1e13dd['join'](',\x20')+'.','row':_0x214d33,'column':_0x1fe854,'from':this['name']['toUpperCase']()+'_OBJ_GRAMMAR'});}}
57
57
 
58
- class Client{['BASE_URL'];constructor(_0x4aae15){this['BASE_URL']=_0x4aae15;}['Parser'](){return {'curriculum':async _0x36d85b=>{const _0x1a9288=await uploadCurriculum(this['BASE_URL'],_0x36d85b);return _0x1a9288;},'courseOffering':async _0x266479=>{const _0x495ef9=await uploadCourseOffering(this['BASE_URL'],_0x266479);return _0x495ef9;},'coaep':async(_0x3e995a,_0x128506)=>{const _0x5338f4=await uploadCOAEP(this['BASE_URL'],_0x3e995a,_0x128506);return _0x5338f4;},'enrolledStudent':async _0xd04f77=>{const _0x12cd05=await uploadEnrolledStudent(this['BASE_URL'],_0xd04f77);return _0x12cd05;},'classlist':async(_0x9c81a5,_0x2b7e1e,_0x59e1bd)=>{const _0x3f99e5=await uploadClassList(this['BASE_URL'],_0x9c81a5,_0x2b7e1e,_0x59e1bd);return _0x3f99e5;},'assessmentData':async _0xae6573=>{const _0x471e53=await uploadAssessmentData(this['BASE_URL'],_0xae6573);return _0x471e53;},'deptFaculty':async _0x37a598=>{const _0x469177=await uploadDeptFaculty(this['BASE_URL'],_0x37a598);return _0x469177;},'poaep':async(_0xbad106,_0x5a9a77,_0x120ff3,_0x30be38)=>{const _0x45d33e=await uploadPOAEP(this['BASE_URL'],_0xbad106,_0x5a9a77,_0x120ff3,_0x30be38);return _0x45d33e;},'CoaepDT':CoaepDT};}}
58
+ class Client{['BASE_URL'];constructor(_0xab2fc9){this['BASE_URL']=_0xab2fc9;}['Parser'](){return {'curriculum':async _0x195bed=>{const _0x4b0dcd=await uploadCurriculum(this['BASE_URL'],_0x195bed);return _0x4b0dcd;},'courseOffering':async _0xa2ad14=>{const _0x3e4aa1=await uploadCourseOffering(this['BASE_URL'],_0xa2ad14);return _0x3e4aa1;},'coaep':async(_0x342688,_0x226a12)=>{const _0x31edc6=await uploadCOAEP(this['BASE_URL'],_0x342688,_0x226a12);return _0x31edc6;},'enrolledStudent':async _0x3e1af1=>{const _0x1959d0=await uploadEnrolledStudent(this['BASE_URL'],_0x3e1af1);return _0x1959d0;},'classlist':async(_0x3b788d,_0x4f2aea,_0x2fa8e4)=>{const _0x3b583d=await uploadClassList(this['BASE_URL'],_0x3b788d,_0x4f2aea,_0x2fa8e4);return _0x3b583d;},'assessmentData':async _0x2c1d53=>{const _0x37a6ac=await uploadAssessmentData(this['BASE_URL'],_0x2c1d53);return _0x37a6ac;},'deptFaculty':async _0x546b21=>{const _0x2e6058=await uploadDeptFaculty(this['BASE_URL'],_0x546b21);return _0x2e6058;},'poaep':async(_0x4f3499,_0x5355a1,_0x592d8d,_0x55666e)=>{const _0x10a6bd=await uploadPOAEP(this['BASE_URL'],_0x4f3499,_0x5355a1,_0x592d8d,_0x55666e);return _0x10a6bd;},'CoaepDT':CoaepDT};}}
59
59
 
60
60
  export { Client as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@obe-loms/coms-parser",
3
- "version": "1.6.3",
3
+ "version": "1.6.5",
4
4
  "license": "ISC",
5
5
  "dependencies": {
6
6
  "papaparse": "^5.5.3",