1 line
6.1 KiB
Plaintext
1 line
6.1 KiB
Plaintext
{"version":3,"file":"studyplan-processor.min.js","sources":["../src/studyplan-processor.js"],"sourcesContent":["/*eslint no-console: \"off\"*/\n/**\n * Copy fields from one object to another\n * @param {Object} target The target to move to\n * @param {Object} source The source to move from\n * @param {Array} fields The field names to copy\n * @returns {Object} The map with strings loaded in\n */\nexport function objCopy(target,source,fields){\n for(const ix in fields) {\n const field = fields[ix];\n target[field] = source[field];\n }\n}\n\n/**\n * Transport items from one object to another\n * @param {Object} target The target to move to\n * @param {Object} source The source to move from\n * @param {*} identifier The value used to match the item\n * @param {string} param The field name to match on (default: 'value')\n */\nexport function transportItem(target,source,identifier,param){\n if(!param){\n param = 'value';\n }\n // find item\n let item;\n let itemindex;\n for(const ix in source){\n if(source[ix][param] == identifier){\n item = source[ix];\n itemindex = ix;\n break;\n }\n }\n if(item){\n target.push(item);\n source.splice(itemindex,1);\n }\n}\n\n/**\n * Do initial conversion on multiple studyplans\n * @param {Array} studyplans The list of studyplans to load\n * @returns {Array} List of updated studyplans\n */\nexport function ProcessStudyplans(studyplans){\n // Unify object references to connections between items, so there are no duplicates\n for(const isx in studyplans)\n {\n const studyplan = studyplans[isx];\n ProcessStudyplan(studyplan);\n }\n\n return studyplans;\n}\n\n/**\n * Perform initial processing on a downloaded studyplan\n * Mainly used to create the proper references between items\n * @param {Object} studyplan The studyplan to process\n * @returns Processed studyplan\n */\nexport function ProcessStudyplan(studyplan){\n for(const ip in studyplan.pages){\n const page = studyplan.pages[ip];\n ProcessStudyplanPage(page);\n }\n return studyplan;\n}\n\n/**\n * Perform initial processing on a downloaded studyplan'page\n * Mainly used to create the proper references between items\n * @param {Object} page The studyplan page to process\n * @returns Processed studyplan\n */\nexport function ProcessStudyplanPage(page){\n let connections = {};\n for(const il in page.studylines) {\n const line = page.studylines[il];\n\n for(const is in line.slots ) {\n const slot = line.slots[is];\n\n if(slot.courses !== undefined){\n for(const ic in slot.courses){\n const itm = slot.courses[ic];\n\n for(const idx in itm.connections.in) {\n const conn = itm.connections.in[idx];\n\n if(conn.id in connections){\n itm.connections[idx] = connections[conn.id];\n } else {\n connections[conn.id] = conn;\n }\n }\n for(const idx in itm.connections.out) {\n const conn = itm.connections.out[idx];\n\n if(conn.id in connections){\n itm.connections[idx] = connections[conn.id];\n } else {\n connections[conn.id] = conn;\n }\n }\n }\n }\n\n if(slot.filters !== undefined){\n for(const ix in slot.filters){\n const itm = slot.filters[ix];\n\n for(const idx in itm.connections.in) {\n const conn = itm.connections.in[idx];\n\n if(conn.id in connections){\n itm.connections[idx] = connections[conn.id];\n } else {\n connections[conn.id] = conn;\n }\n }\n for(const idx in itm.connections.out) {\n const conn = itm.connections.out[idx];\n\n if(conn.id in connections){\n itm.connections[idx] = connections[conn.id];\n } else {\n connections[conn.id] = conn;\n }\n }\n }\n }\n }\n }\n return page;\n}\n"],"names":["ProcessStudyplan","studyplan","ip","pages","ProcessStudyplanPage","page","connections","il","studylines","line","is","slots","slot","undefined","courses","ic","itm","idx","in","conn","id","out","filters","ix","studyplans","isx","target","source","fields","field","identifier","param","item","itemindex","push","splice"],"mappings":"0FAgEgBA,iBAAiBC,eACzB,IAAMC,MAAMD,UAAUE,MAAM,CAE5BC,qBADaH,UAAUE,MAAMD,YAG1BD,mBASKG,qBAAqBC,UAC7BC,YAAc,OACd,IAAMC,MAAMF,KAAKG,WAAY,KACvBC,KAAOJ,KAAKG,WAAWD,QAEzB,IAAMG,MAAMD,KAAKE,MAAQ,KACnBC,KAAOH,KAAKE,MAAMD,YAEJG,IAAjBD,KAAKE,YACA,IAAMC,MAAMH,KAAKE,QAAQ,KACnBE,IAAMJ,KAAKE,QAAQC,QAErB,IAAME,OAAOD,IAAIV,YAAYY,GAAI,KAC3BC,KAAOH,IAAIV,YAAYY,GAAGD,KAE7BE,KAAKC,MAAMd,YACVU,IAAIV,YAAYW,KAAOX,YAAYa,KAAKC,IAExCd,YAAYa,KAAKC,IAAMD,SAG3B,IAAMF,QAAOD,IAAIV,YAAYe,IAAK,KAC5BF,MAAOH,IAAIV,YAAYe,IAAIJ,MAE9BE,MAAKC,MAAMd,YACVU,IAAIV,YAAYW,MAAOX,YAAYa,MAAKC,IAExCd,YAAYa,MAAKC,IAAMD,eAMnBN,IAAjBD,KAAKU,YACA,IAAMC,MAAMX,KAAKU,QAAQ,KACnBN,KAAMJ,KAAKU,QAAQC,QAErB,IAAMN,SAAOD,KAAIV,YAAYY,GAAI,KAC3BC,OAAOH,KAAIV,YAAYY,GAAGD,OAE7BE,OAAKC,MAAMd,YACVU,KAAIV,YAAYW,OAAOX,YAAYa,OAAKC,IAExCd,YAAYa,OAAKC,IAAMD,WAG3B,IAAMF,SAAOD,KAAIV,YAAYe,IAAK,KAC5BF,OAAOH,KAAIV,YAAYe,IAAIJ,OAE9BE,OAAKC,MAAMd,YACVU,KAAIV,YAAYW,OAAOX,YAAYa,OAAKC,IAExCd,YAAYa,OAAKC,IAAMD,iBAOxCd,+LA1FuBmB,gBAE1B,IAAMC,OAAOD,WACjB,CAEIxB,iBADkBwB,WAAWC,aAI1BD,sCA/CaE,OAAOC,OAAOC,YAC9B,IAAML,MAAMK,OAAQ,KACdC,MAAQD,OAAOL,IACrBG,OAAOG,OAASF,OAAOE,yCAWDH,OAAOC,OAAOG,WAAWC,OAC/CA,QACAA,MAAQ,aAGRC,KACAC,cACA,IAAMV,MAAMI,UACTA,OAAOJ,IAAIQ,QAAUD,WAAW,CAC/BE,KAAOL,OAAOJ,IACdU,UAAYV,SAIjBS,OACCN,OAAOQ,KAAKF,MACZL,OAAOQ,OAAOF,UAAU"} |