{"version":3,"file":"app-525cc5af.a299f4d9b38ce47d.bundle.js","mappings":"i5BAoBO,IAAMA,EAAN,MAsBN,WAAAC,CACSC,EAA4CC,EAAwBC,EAA6BC,EAA8BC,EAAoBC,EAAiCC,EAAoCC,EACxNC,EACDC,EACCC,GAHA,KAAAV,iBAAAA,EAA4C,KAAAC,OAAAA,EAAwB,KAAAC,MAAAA,EAA6B,KAAAC,UAAAA,EAA8B,KAAAC,KAAAA,EAAoB,KAAAC,OAAAA,EAAiC,KAAAC,aAAAA,EAAoC,KAAAC,WAAAA,EACxN,KAAAC,YAAAA,EACD,KAAAC,mBAAAA,EACC,KAAAC,gBAAAA,EAzBT,KAAAC,YAAsB,EACH,KAAAC,mBAAqC,GACjD,KAAAC,kBAAyC,KACzC,KAAAC,sBAAiD,KACjD,KAAAC,8BAAyD,KACzD,KAAAC,aAAoC,KACpC,KAAAC,iBAA4C,KAC5C,KAAAC,WAA6B,GAE7B,KAAAC,WAAqB,GACrB,KAAAC,iBAA2B,GAC1B,KAAAC,aAAuB,EACxB,KAAAC,OAAiB,OACjB,KAAAC,gBAA2B,CAAC,QAE3B,KAAAC,cAAgC,GACjC,KAAAC,kBAA4B,EAC5B,KAAAC,qBAA+B,GAUrCC,KAAKC,YAAc,QACpB,CAEA,cAAMC,CAASC,GAaU,aAApBA,EAAOC,WACVJ,KAAKpB,WAAWyB,WAAWF,EAAOC,WAE/BJ,KAAKpB,WAAWwB,iBACbJ,KAAKM,gBAEZN,KAAKO,kBACLP,KAAKQ,aAAe,CAAEC,KAAM,aAAcC,UAAW,YACtD,CAEA,eAAAH,GACCP,KAAKW,kBAAqBC,IACC,UAAbA,EAAMC,KACPb,KAAKc,mBAEA,SAAbF,EAAMC,KACLE,EAAE,oBAAoBC,GAAG,WAC5BhB,KAAKiB,gB,EAIRC,OAAOC,iBAAiB,QAASnB,KAAKW,mBAAmB,EAC1D,CAEA,QAAAS,GAECpB,KAAKH,cAAgB,CACpBG,KAAKtB,OAAO2C,UAAUrB,KAAKC,YAAc,sBAFnBqB,GAActB,KAAKuB,kBAAkBD,KAI7D,CAEA,QAAAE,GACKxB,KAAKW,mBACRO,OAAOO,oBAAoB,QAASzB,KAAKW,mBAAmB,GAE7DX,KAAKH,cAAc6B,SAAQC,GAC1BA,EAAaC,WAEf,CAEQ,iBAAAL,CAAkBD,GACzBtB,KAAKR,WAAa8B,EAClB,IAAIO,EAA+B7B,KAAKT,WAAWuC,QAAOC,GAClDA,EAAUC,KAAKC,oBAAoBC,SAASlC,KAAKR,cAErDQ,KAAKd,oBAAsB2C,EAAaK,SAASlC,KAAKd,oBACzDc,KAAKc,kBAEP,CAEA,yBAAAqB,GACCnC,KAAKF,iBACkC,IAAnCE,KAAKf,mBAAmBmD,QAClBpC,KAAKf,mBAAmBoD,OAAMC,GAA2B,yCAAtBA,EAAEC,iBAEhD,CAKO,UAAAC,CAAWC,GAIjBzC,KAAKF,kBAAmB,EACxB4C,QAAQC,IAAI,iBAUZ3C,KAAK4C,sBAAsBH,GAC3BzC,KAAKb,sBAAwB,KAC7Ba,KAAKX,aAAe,KACpBW,KAAKV,iBAAmB,IAEzB,CAEO,YAAAuD,CAAaJ,GACnBzC,KAAKF,kBAAmB,EACxB4C,QAAQC,IAAI,mBACR3C,KAAK8C,kCACR9C,KAAK+C,qBAEN/C,KAAKgD,+BAA8B,GACnChD,KAAK4C,sBAAsB,MAC3B5C,KAAKf,mBAAmBgE,OAAOjD,KAAKf,mBAAmBiE,QAAQT,GAAO,EACvE,CAEA,eAAAU,CAAgBV,GASfC,QAAQC,IAAI,sBACZ3C,KAAKD,qBAAuB,GACQ,MAAhCC,KAAKoD,yBACRpD,KAAK+C,qBAEF/C,KAAKqD,yBAA2BrD,KAAKd,mBAAqBuD,EAC7DzC,KAAKc,oBAINd,KAAKwC,WAAWC,GAChBzC,KAAKsD,yBACLtD,KAAKhB,YAAa,EAClBgB,KAAKtB,OAAO6E,QAAQ,iBACrB,CAEA,gBAAAzC,GACCd,KAAKhB,YAAa,EAClBgB,KAAKd,kBAAoB,KACzBc,KAAKP,iBAAmB,GACxBO,KAAKD,qBAAuB,GAC5BC,KAAKtB,OAAO6E,QAAQ,gBACrB,CAEO,YAAAC,GACNxD,KAAKyD,+BAA8B,GACnCzD,KAAK0D,8BAA8B1D,KAAK2D,yBACzC,CAEO,kBAAAZ,GACN/C,KAAKyD,+BAA8B,EACpC,CAEO,aAAMG,GACqBC,MAA7B7D,KAAKpB,WAAWwB,iBACbJ,KAAKzB,MAAMuF,UAAU,KAAcC,YAAWC,MAAM1B,IACpDA,EAAE2B,oBACAjE,KAAKkE,WAAW5B,EAAE6B,O,GAI5B,CAEQ,mBAAM7D,GACbN,KAAKT,kBAAoBS,KAAK3B,iBAAiB+F,0BAA0BtC,QAAOQ,GAAc,yCAATA,EAAE+B,KAC1DR,MAA1B7D,KAAKd,mBACPc,KAAKT,WAAWmC,SAAQ4C,I,MACrBA,EAAQD,KAA4B,QAAtB,EAAArE,KAAKd,yBAAiB,eAAEmF,MACvCrE,KAAKd,kBAAoBoF,E,GAK7B,CAEQ,4BAAMhB,GACb,IAAIiB,EAA8BvE,KAAKwE,uBACvC,IAAKD,EAEJ,YADA7B,QAAQ+B,KAAK,0DAGd,IAAIC,QAAc1E,KAAK3B,iBAAiBsG,2BAA2BJ,GAC/DvE,KAAKd,oBACRc,KAAKd,kBAAkBwF,MAAMA,EAG/B,CAEO,gBAAMR,CAAWlC,GACvB,GAAIA,EAAK4C,OAAOxC,OAAS,EAAG,CAC3B,IAAIyC,QAAmD7E,KAAK3B,iBAAiByG,oBAAoB9C,GAAM+C,SAAQ,KAAQ/E,KAAKX,aAAe,IAAI,IAC/I,GAAwBwE,MAApBgB,EAA+B,OAC5B7E,KAAKM,sBACLN,KAAKsD,yBACX,IAAI0B,EAAyChF,KAAKT,WAAWuC,QAAOmD,GAC5DA,EAAUZ,KAAMQ,aAAgB,EAAhBA,EAAkBR,MAEtCW,EAAuB5C,OAAS,GACnCpC,KAAKmD,gBAAgB6B,EAAuB,G,EAIhD,CAEO,UAAAE,GACFlF,KAAKd,oBACRc,KAAKmF,0BAA2BnF,KAAKoF,8BACrCpF,KAAK3B,iBAAiBgH,yBAAyBrF,KAAKd,mBACnDoG,MAAK,KACLtF,KAAK+C,oBAAoB,IAG5B,CAEO,UAAAwC,GACN7C,QAAQC,IAAI,iBACZ5B,EAAE,kBAAkByE,OACpBxF,KAAKzB,MAAMkH,YAAY,qBAAsB,6DAA6D1B,YAAW2B,I,QAC/GA,EAAEzB,eAOoB,QAAtB,EAAAjE,KAAKd,yBAAiB,eAAEmF,KAC3BrE,KAAK3B,iBAAiBsH,sBAAsB,CAAuB,QAAtB,EAAA3F,KAAKd,yBAAiB,eAAEmF,KACpEU,SAAQ,KACR/E,KAAK4C,sBAAsB,MAC3B5C,KAAKb,sBAAwB,KAC7Ba,KAAKf,mBAAqB,GACtBe,KAAKhB,YACRgB,KAAKc,mBAENd,KAAKM,gBACLN,KAAKN,aAAc,CAAK,G,GAK7B,CAEA,6BAAMkG,GACL7E,EAAE,mBAAmByE,OAChBxF,KAAKd,mBAAgE,yCAA3Cc,KAAKd,kBAAkBqD,iBAItDvC,KAAKzB,MAAMkH,YAAY,8BAA+B,mFAAmF1B,YAAWzB,KAC9IA,EAAE2B,cAAgBjE,KAAKd,oBAC3Bc,KAAK3B,iBAAiBwH,0CAA0C7F,KAAKd,kBAAkBmF,IACrFU,SAAQ,KACR/E,KAAKM,eAAe,IAErBN,KAAKc,mB,GAGT,CAaO,oBAAMgF,GACZ,IAAIC,EAAI/F,KAAKjB,gBACT+G,EAAyBC,EAAID,iBAEjC,OADApD,QAAQC,IAAI,oBAAqBmD,EAAgBC,EAAIC,WAChDF,UACE9F,KAAKzB,MAAM0H,YAAY,cAAc,yCACpC,EAGT,CAEO,mBAAMC,GAEZ,GADAxD,QAAQC,IAAI,0BACD3C,KAAK8F,iBAEf,YADApD,QAAQC,IAAI,YAIb,IAAIqD,EAAQhG,KAAKjB,gBAAgBiH,QAIjCtD,QAAQC,IAAI,4BAA6B3C,KAAKf,mBAAmBmD,QACjE,IAAK,MAAML,KAAa/B,KAAKf,mBAE5B,GADAyD,QAAQC,IAAI,eAAgBZ,GACxB/B,KAAKmG,kBAAkB,MAAMpE,GAAY,CAE5C,GADAW,QAAQC,IAAI,WACF3C,KAAKoG,iBAAiBJ,EAAOjE,EAAUiE,MAAOjE,GAAc,OAEtE,MAAMsE,EAAoBrG,KAAKpB,WAAW0H,mBAC1CtG,KAAKxB,UAAU+H,WAAWF,GACzBG,IAAI,4BAA8BzE,EAAUsC,IAC5CoC,YAAYzG,KAAKvB,KAAKiI,GAAG,uBAAwB1G,KAAKvB,KAAKiI,GAAG,0BAC9DC,aAAa,GAAG5E,EAAUC,Y,KACrB,CAEN,GADAU,QAAQC,IAAI,WACF3C,KAAKoG,iBAAiBJ,EAAOjE,EAAUiE,MAAOjE,GAAc,OAEtE/B,KAAKxB,UAAUoI,QAAQ5G,KAAKpB,WAAWwB,WACtCoG,IAAI,4BAA8BzE,EAAUsC,IAC5CoC,YAAYzG,KAAKvB,KAAKiI,GAAG,uBAAwB1G,KAAKvB,KAAKiI,GAAG,0BAC9DC,aAAa,GAAG5E,EAAUC,Y,CAG9B,CAEA,qBAAM6E,CAAgBb,GAErB,aADiBhG,KAAKxB,UAAUsI,OAAON,IAAI,4BAA4BR,KAASe,YAEjF,CAEA,sBAAMX,CAAiBJ,EAAcgB,EAAkBjF,GACtD,MAAMkF,IAAajB,IAAUgB,GAC7B,IAAKC,EAAY,OAAOA,EAGxB,MAAMC,QAAalH,KAAK6G,gBAAgBb,GAClCmB,QAAanH,KAAK6G,gBAAgBG,GAClCI,EAAcF,EAAO,GAAGA,EAAKlF,SAASgE,KAAWA,EACjDqB,EAAcF,EAAO,GAAGA,EAAKnF,SAASgF,KAAeA,EAErDM,EAAOvF,EAAUsC,GAEjBkD,EACL,+CAA+CH,uDACEC,4BAC3BA,gDAJVtF,EAAUC,QAKCsF,MAGxB,aADMtH,KAAKzB,MAAM0H,YAAY,cAAesB,GACrCN,CACR,CAEA,eAAAO,GACC,IAAIC,EAAsBzH,KAAKT,WAAWuC,QAAOQ,GAA2B,yCAAtBA,EAAEC,kBAExDvC,KAAKzB,MAAMuF,UAAU,IAAiB2D,GAAqB1D,YAAWzB,IAChEA,EAAE2B,eACFyD,QAAQpF,EAAE6B,OAAOwD,gBACpB3H,KAAK4H,mBAAmBtF,EAAE6B,QAE1BnE,KAAK6H,wBAAwBvF,EAAE6B,Q,GAInC,CAEO,kBAAAyD,CAAmBE,GACzB,IAAIC,EAAW,IAAIC,SACfF,EAAMG,QACTF,EAASG,OAAOlI,KAAKpB,WAAWwB,UAAW0H,EAAMG,MAAM,IACvDjI,KAAKxB,UAAUoI,QAAQ5G,KAAKpB,WAAWwB,WAAW+H,SAAS,iCAAiCL,EAAM9F,wBAAwB8F,EAAMM,kBAAmBL,GAClJtB,YAAYzG,KAAKvB,KAAKiI,GAAG,uBAAwB1G,KAAKvB,KAAKiI,GAAG,0BAC9D2B,eAAe/C,MAAKgD,IACpBtI,KAAKzB,MAAM0H,YAAY,iBAAkBqC,EAAQ,IAC/CvD,SAAQ,KACV/E,KAAKuI,sBAAsB,IAG9B,CAEO,uBAAAV,CAAwBC,GAC9B,IAAIC,EAAW,IAAIC,SACfF,EAAMG,QACTF,EAASG,OAAOlI,KAAKpB,WAAWwB,UAAW0H,EAAMG,MAAM,IACvDjI,KAAKxB,UAAUoI,QAAQ5G,KAAKpB,WAAWwB,WACrC+H,SAAS,wCAAwCL,EAAMU,uCAAuCV,EAAMM,kBAAmBL,GACvHtB,YAAYzG,KAAKvB,KAAKiI,GAAG,uBAAwB1G,KAAKvB,KAAKiI,GAAG,0BAC9D2B,eAAe/C,MAAKgD,IACpBtI,KAAKzB,MAAM0H,YAAY,iBAAkBqC,EAAQ,IAC/CvD,SAAQ,KACV/E,KAAKuI,sBAAsB,IAI/B,CAEA,oBAAAA,GACCvI,KAAKM,gBACLN,KAAKsD,wBACN,CAEO,kBAAMmF,GACPzI,KAAKd,wBAEMc,KAAK3B,iBAAiBqK,wBAAwB1I,KAAKd,kBAAkBmF,GAAIrE,KAAKpB,WAAWwB,mBAElGJ,KAAKM,sBACLN,KAAKsD,0BALmBZ,QAAQC,IAAI,0BAO5C,CAMO,cAAAgG,CAAeC,GACjB5I,KAAKb,wBACRa,KAAKb,sBAAsB0J,UAAW,EACtC7I,KAAKb,sBAAsB2J,WAAY,EACvC9I,KAAKb,sBAAsB4J,eAAgB,GAE5CH,EAAKC,UAAW,EAChB7I,KAAKb,sBAAwByJ,EAC7B5I,KAAKZ,8BAAgC4J,OAAOC,OAAO,CAAC,EAAGL,EACxD,CAEO,WAAAM,GACNlJ,KAAKV,iBAAmB,CACvB6J,MAAOnJ,KAAKD,qBACZsE,GAAI,uCACJ+E,YAAapJ,KAAKwE,uBAAyBxE,KAAKwE,uBAAuB,GAAK,GAC5E6E,UAAW,EACXC,WAAW,EACXC,QAAS,KAEX,CAEO,iBAAAC,GACNxJ,KAAKV,iBAAmB,KACxBU,KAAKb,sBAAwB,IAC9B,CAEO,iBAAAsK,CAAkBb,GACxB5I,KAAK2I,eAAeC,GAChB5I,KAAKb,wBACRa,KAAKb,sBAAsB2J,WAAY,EAEzC,CAEO,qBAAAY,CAAsBd,GAC5B5I,KAAK2I,eAAeC,GAChB5I,KAAKb,wBACRa,KAAKb,sBAAsB4J,eAAgB,EAE7C,CAEO,uBAAAY,GACF3J,KAAKb,wBACRa,KAAKb,sBAAsB2J,WAAY,EAEzC,CAEO,2BAAAc,GACF5J,KAAKb,wBACRa,KAAKb,sBAAsB4J,eAAgB,EAE7C,CAEO,cAAA9H,GACNF,EAAE,cAAcyE,OAChBxF,KAAKkJ,cACDlJ,KAAKV,mBACRU,KAAK3B,iBAAiBwL,wBAAwB7J,KAAKV,iBAAkBU,KAAK2D,0BACzE2B,MAAKwE,IACL,IAAIZ,EAAcF,OAAOC,OAAO,CAAC,EAAGa,GACpC9J,KAAK+J,0BAA0BC,KAAKd,GACpClJ,KAAKb,sBAAwB+J,EAC7BlJ,KAAKV,iBAAmB,IAAI,IAC1ByF,SAAQ,KACV/E,KAAKsD,wBAAwB,IAE9BtD,KAAKD,qBAAuB,GAC5BgB,EAAE,mBAAmBkJ,QAEvB,CAEO,cAAAC,G,QACFlK,KAAKb,wBAAmD,QAA1B,EAAAa,KAAKb,6BAAqB,eAAEgK,MAAMvE,WAA6C,QAAlC,EAAA5E,KAAKZ,qCAA6B,eAAE+J,MAAMvE,QACxH5E,KAAK3B,iBAAiB8L,wBAAwBnK,KAAKb,sBAAuBa,KAAK2D,0BAC7E2B,MAAK,KACDtF,KAAKb,wBACRa,KAAKb,sBAAsB2J,WAAY,E,IAEtC/D,SAAQ,KACV/E,KAAKsD,wBAAwB,IAG/BtD,KAAK2J,yBAEP,CAEO,cAAMS,CAASxB,SACf5I,KAAK3B,iBAAiBgM,iCAAiCzB,EAAM5I,KAAKpB,WAAWwB,UACpF,CAEO,kBAAAkK,CAAmB1B,GACrB5I,KAAKuK,sBAAsB,OAAQ3B,IACtCA,EAAKU,WAAaV,EAAKU,UACvBtJ,KAAK3B,iBAAiBmM,4BAA4B5B,EAAM5I,KAAK2D,0BAC3DoB,SAAQf,SAAYhE,KAAKsD,4BAE3BtD,KAAKzB,MAAM0H,YAAYjG,KAAKvB,KAAKiI,GAAG,uBAAwB,mKAE9D,CAEO,eAAA+D,G,QACFzK,KAAKb,wBAAmD,QAA1B,EAAAa,KAAKb,6BAAqB,eAAEkK,cAAgD,QAAlC,EAAArJ,KAAKZ,qCAA6B,eAAEiK,WAC/GrJ,KAAK3B,iBAAiBqM,yBAAyB1K,KAAKb,sBAAuBa,KAAK2D,0BAC9E2B,MAAK,KACDtF,KAAKb,wBACRa,KAAKb,sBAAsB4J,eAAgB,E,IAG5ChE,SAAQ,KACR/E,KAAKsD,wBAAwB,IAG/BtD,KAAK4J,6BAEP,CAEO,cAAAe,CAAe/B,GACrB7H,EAAE,0BAA0ByE,OAC5BxF,KAAKzB,MAAMkH,YAAY,SAAU,mEAAmE1B,YAAW6G,IAC1GA,EAAO3G,cAIXjE,KAAK3B,iBAAiBwM,wBAAwBjC,EAAM5I,KAAK2D,0BACvD2B,MAAK,KACL,IAAIwF,EAAY9K,KAAK+J,0BAA0BgB,WAAUzI,GAAKA,IAAMsG,IACpE5I,KAAK+J,0BAA0B9G,OAAO6H,EAAW,GACjD9K,KAAKb,sBAAwB,IAAI,GAChC,GAEL,CAEO,uBAAA4K,GACN,IAAI7K,EAAyCc,KAAKoD,wBAClD,OAAIlE,GAAqBA,EAAkBwF,MACnCxF,EAAkBwF,MAElB,EAET,CAEO,oBAAAF,GAGN,IAAIwG,EAA6BhL,KAAKoD,wBACtC,OAAK4H,EAIEA,EAAO3G,IAHb3B,QAAQ+B,KAAK,2DACN,KAGT,CACO,0BAAAW,GAA0B,MAAwB,OAAmC,QAA5B,EAAApF,KAAKoD,+BAAuB,eAAE6H,QAAU,CACjG,6BAAAvH,CAA8BwH,GACpC,IAAInJ,EAAiC/B,KAAKoD,wBACtCrB,IACFA,EAAUkJ,SAAWC,GAA4B,GAEpD,CAEO,sBAAAvH,GAAsB,MAAwB,OAAmC,QAA5B,EAAA3D,KAAKoD,+BAAuB,eAAEpB,IAAM,CACzF,yBAAAmD,CAA0BgG,GAChC,IAAIpJ,EAAiC/B,KAAKoD,wBACtCrB,IACHA,EAAUC,KAAOmJ,GAAoB,GAEvC,CAEO,8BAAArI,GAA8B,MAAa,OAAO4E,QAAoC,QAA5B,EAAA1H,KAAKoD,+BAAuB,eAAEgI,WAAa,CAErG,6BAAA3H,CAA8BzC,GACpC,IAAIe,EAAiC/B,KAAKoD,wBACtCrB,IACHA,EAAUqJ,WAAapK,EAEzB,CAEO,6BAAAgC,CAA8BqI,GACpC,IAAItJ,EAAiC/B,KAAKoD,wBACtCrB,IACHA,EAAU8G,SAAWwC,EAEvB,CAEO,qBAAAhI,GAAkC,OAAOqE,QAAQ1H,KAAKoD,wBAA0B,CAEhF,qBAAAA,GACN,OAAOpD,KAAKd,iBACb,CAEO,qBAAA0D,CAAsBvD,GAAkCW,KAAKd,kBAAkBG,CAAa,CAE5F,YAAMiM,CAAOC,SACbvL,KAAKnB,YAAYyM,OAAOC,GAAYjG,MAAKsF,IAC9C5K,KAAKL,OAASiL,EAAOjL,OACrBK,KAAKQ,aAAeoK,EAAOpK,YAAY,GAEzC,CAEO,gBAAMgL,SACNxL,KAAKnB,YAAY4M,cAAczL,KAAKT,YAAY+F,MAAOsF,IAC5D5K,KAAKf,mBAAqB2L,EAAO/B,SACjC7I,KAAKN,YAAckL,EAAOlL,WAAW,GAEvC,CAEO,eAAMgM,SACN1L,KAAKnB,YAAY6M,UAAU1L,KAAKT,WAAYS,KAAKR,WAAYQ,KAAKJ,iBAAiB0F,MAAMsF,IAC1FA,IACH5K,KAAKf,mBAAqB2L,EAAO/B,SACjC7I,KAAKN,YAAckL,EAAOlL,Y,GAG7B,CAEO,iBAAAyG,CAAkBwF,EAAYC,GAEpC,OAAoB,MAAhBA,GACHlJ,QAAQ+B,KAAK,wCACN,GAEgC,yCAAjCmH,EAAarJ,eACrB,CAEO,qBAAAgI,CAAsBoB,EAAYE,GAExC,OADAnJ,QAAQC,IAAIgJ,EAAI,4BAA8BE,GACtB,MAApBA,GACHnJ,QAAQ+B,KAAK,6CACN,GAEoC,yCAArCoH,EAAiBtJ,eACzB,CAEA,mBAAMuJ,CAAclL,GACnB,IAAImL,EAAU,GACdA,EAAQ/B,KAAK,CAAEgC,QAAS,SAAUC,MAAO,CAAEC,QAAS,oBAAqBzL,KAAK,mBAAoB0L,UAAW,kBAAmBC,QAAS,CAACC,gBAAiB,KAAQrM,KAAK4D,SAAS,MACjLmI,EAAQ/B,KAAK,CAAEgC,QAAS,OAAQC,MAAO,CAAC,IACxCF,EAAQ/B,KAAK,CAAEgC,QAAS,SAAUC,MAAO,CAAEC,QAAS,oBAAqBzL,KAAK,uBAAwB0L,UAAW,kBAAmBC,QAAS,CAACE,gBAAiB,KAAQtM,KAAKwH,iBAAiB,MAC7LuE,EAAQ/B,KAAK,CAAEgC,QAAS,SAAUC,MAAO,CAAEC,QAAS,2BAA4BzL,KAAK,qBAAsB8L,aAAcvM,KAAKf,mBAAmBmD,OAAS,GAAI+J,UAAW,gBAAiBC,QAAS,CAAClG,cAAe,KAAQlG,KAAKkG,eAAe,MACzOlG,KAAKlB,mBAAmB0N,KAAK5L,EAAOmL,EAC3C,CAEA,UAAAU,CAAWC,GACV,IAAIC,EAAgB,IAAIC,KAAKF,GACzBG,EAAWF,EAAcG,aAAaC,WAAW3K,OAAS,EAAKuK,EAAcG,aAAe,IAAMH,EAAcG,aAChHE,EAASL,EAAcM,WAAWF,WAAW3K,OAAS,EAAKuK,EAAcM,WAAa,IAAMN,EAAcM,WAC9G,OAAON,EAAcO,eAAiB,MAAQF,EAAQ,IAAMH,CAC7D,GApqBA,GAAC,EAAAM,W,iEAFWhP,EAAU,GADtB,EAAAiP,W,uBAwB2B,IAAkC,KAAuB,IAAiC,IAAyB,EAAAC,KAAsB,EAAAC,gBAAuC,IAAkC,IACvN,IACM,IACF,OA1BdnP,E","sources":["webpack://client-app/./src/app/project/value-lists/value-lists.ts"],"sourcesContent":["import { ListService, SelectResult } from 'app/services/list-service';\r\nimport { ModalService } from './../../services/modal-service';\r\nimport { Router } from 'aurelia-router';\r\nimport { AppContextService } from 'app/services/app-context-service';\r\nimport { ErrorService } from 'app/services/error-service';\r\nimport { Subscription, EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject, observable } from \"aurelia-framework\";\r\nimport { ValueListDto, ValueListItemDto } from \"app/models/value-list-dtos\";\r\nimport { ValueListService } from \"app/services/value-list/value-list-service\";\r\nimport { ApiClient } from 'app/services/api-client';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { ValuelistUpload } from 'app/components/file-upload/specific-uploads/valuelist-upload';\r\nimport { ImportValuelistModel } from 'app/models/viewmodels/import-valuelist-model';\r\nimport { NewValueList } from 'app/components/modals/new-value-list/new-value-list';\r\nimport { ContextMenuService } from 'app/services/context-menu-service';\r\nimport { OrgTokenService } from 'app/services/org-token-service';\r\n\r\ndeclare let $: any;\r\n\r\n@autoinject\r\nexport class ValueLists {\r\n\tshowValues: boolean = false;\r\n\t@observable public selectedValueLists: ValueListDto[] = [];\r\n\tpublic selectedValueList: ValueListDto | null = null; // does not correspond to checkbox-selection, only subnavigate dialog.. (inconsistent design.)\r\n\tpublic selectedValueListItem: ValueListItemDto | null = null;\r\n\tpublic selectedValueListItemOriginal: ValueListItemDto | null = null;\r\n\tpublic newValueList: ValueListDto | null = null;\r\n\tpublic newValueListItem: ValueListItemDto | null = null;\r\n\tpublic valueLists: ValueListDto[] = [];\r\n\tpublic viewContext: string;\r\n\tpublic searchTerm: string = \"\";\r\n\tpublic searchTermValues: string = \"\";\r\n\tprivate allSelected: boolean = false;\r\n\tpublic column: string = \"name\";\r\n\tpublic columnsToSearch:string[] = [\"name\"];\r\n\tpublic displayState: { icon: string, direction: string } | undefined;\r\n\tprivate subscriptions: Subscription[] = [];\r\n\tpublic isDeleteDisabled: boolean = true;\r\n\tpublic newValueListItemName: string = \"\";\r\n\r\n\tpublic keybuttonHandling: ((this: Window, ev: KeyboardEvent) => any) | undefined; //How to avoid strictmode getting unsatisfied?\r\n\r\n\tconstructor(\r\n\t\tprivate valueListService: ValueListService, private router: Router, private modal: ModalService, private apiClient: ApiClient, private i18n: I18N, private events: EventAggregator, private errorService: ErrorService, private appContext: AppContextService, \r\n\t\tprivate listService: ListService, \r\n\t\tpublic contextMenuService: ContextMenuService,\r\n\t\tprivate orgTokenService: OrgTokenService\r\n\t) {\r\n\t\tthis.viewContext = \"TopBar\";\r\n\t}\r\n\r\n\tasync activate(params: any) {\r\n\t\t/*\r\n\t\tvi skal navigere til en route URL for det \"valgte projekt\".\r\n\t\tDer ER ikke noget valgt projekt..\r\n\t\tDen konkrete vaerdi vi staar med i haanden, er undefined.\r\n\t\tundefined bliver formateret ind i vores routeURl.\r\n\r\n\t\tnaar aurelias magi senere skal populere params,\r\n\t\tfinder den \"vaerdien\" u-n-d-e-f-i-n-e-d i URL'en, og det kan jo vaere hvad som helst, dog ikke et tal..\r\n\r\n\t\taox.ts er modtageren - den er grunden til, der dekodes TEKSTEN u-n-d-e-f-i-n-e-d ind i params\r\n\t\tnavigation.ts er afsenderen: Det er den der formaterer u-n-d-e-f-i-n-e-d ind i routeURL..\r\n\t\t*/\r\n\t\tif (params.projectId != 'undefined') {\r\n\t\t\tthis.appContext.setProject(params.projectId); //activate\r\n\t\t}\r\n\t\tif (this.appContext.projectId) {\r\n\t\t\tawait this.getValueLists();\r\n\t\t}\r\n\t\tthis.setupKeyHandler();\r\n\t\tthis.displayState = { icon: \"fa-sort-up\", direction: \"ascending\" };\r\n\t}\r\n\t\r\n\tsetupKeyHandler() {\r\n\t\tthis.keybuttonHandling = (event) => {\r\n if (event.key == \"Escape\") {\r\n this.closeValuesPanel();\r\n } \r\n\t\t\tif (event.key == \"Enter\") {\r\n\t\t\t\tif ($('.list-item-input').is(\":focus\")) {\r\n\t\t\t\t\tthis.addNewListItem();\r\n\t\t\t\t}\r\n\t\t\t}\r\n };\r\n\t\twindow.addEventListener('keyup', this.keybuttonHandling, false);\r\n\t}\r\n\r\n\tattached() {\r\n\t\tconst searchHandler = (data: any) => this.handleSearchEvent(data);\r\n\t\tthis.subscriptions = [\r\n\t\t\tthis.events.subscribe(this.viewContext + \":SearchTermChanged\", searchHandler)\r\n\t\t];\r\n\t}\r\n\r\n\tdetached() {\r\n\t\tif (this.keybuttonHandling) {\r\n\t\t\twindow.removeEventListener('keyup', this.keybuttonHandling, false);\r\n\t\t}\r\n\t\tthis.subscriptions.forEach(subscription => (\r\n\t\t\tsubscription.dispose()\r\n\t\t));\r\n\t}\r\n\r\n\tprivate handleSearchEvent(data: string) {\r\n\t\tthis.searchTerm = data;\r\n\t\tlet includedList: ValueListDto[] = this.valueLists.filter(valueList => {\r\n\t\t\treturn valueList.name.toLocaleLowerCase().includes(this.searchTerm);\r\n\t\t});\r\n\t\tif (this.selectedValueList && !includedList.includes(this.selectedValueList)) {\r\n\t\t\tthis.closeValuesPanel();\r\n\t\t}\r\n\t}\r\n\r\n\tselectedValueListsChanged() {\r\n\t\tthis.isDeleteDisabled = \r\n\t\t( this.selectedValueLists.length === 0\r\n || this.selectedValueLists.every(x => x.sourceProjectId === \"00000000-0000-0000-0000-000000000000\")\r\n\t\t);\r\n\t}\r\n\r\n\t/*\r\n\t* ValueLists \r\n\t*/\r\n\tpublic selectList(list: ValueListDto) { \r\n\t\t/* select og deselect er utilities til showValuesPanel,\r\n\t\tDe svarer IKKE til checkbox-selects!\r\n\t\t*/\r\n\t\tthis.isDeleteDisabled = false;\r\n\t\tconsole.log('vl.selectList');\r\n\t\t// if (this.has_selectedValueList()) {\r\n\t\t// \tif (this.selectedValueList_id() === list.id) {\r\n\t\t\t\t// this.deselectList(list); // in selectList.\r\n\t\t\t\t// return;\r\n\t\t\t// }\r\n\t\t\t// this.selectedValueList_setSelected(false);\r\n\t\t\t// this.selectedValueList_setEditMode(false);\r\n\t\t// }\r\n\t\t// list.selected = true; //TODO - See if this functionality i necessary.\r\n\t\tthis.set_selectedValueList(list); // in selectList.\r\n\t\tthis.selectedValueListItem = null;\r\n\t\tthis.newValueList = null;\r\n\t\tthis.newValueListItem = null;\r\n\t\t// this.selectedValueLists = [...this.selectedValueLists, list];\r\n\t}\r\n\r\n\tpublic deselectList(list: ValueListDto) {\r\n\t\tthis.isDeleteDisabled = true;\r\n\t\tconsole.log('vl.deselectList');\r\n\t\tif (this.selectedValueList_isInEditMode()) {\r\n\t\t\tthis.cancelEditListMode();\r\n\t\t}\r\n\t\tthis.selectedValueList_setSelected(false);\r\n\t\tthis.set_selectedValueList(null); // in deselectList.\r\n\t\tthis.selectedValueLists.splice(this.selectedValueLists.indexOf(list), 1);\r\n\t}\r\n\r\n\tshowValuesPanel(list: ValueListDto) {\r\n\t\t/* A...HA! value-list dialogen har TO selection-modeller..\r\n\r\n\t\tValueItems-redigerings-panelet \r\n\t\thar sin egen 'focused-row-selection',\r\n\t\tsom kun bliver sat når man vælger en hel række som fokus\r\n\t\t(er uafhængigt af checkbox-selection-modellen.)\r\n\t\tAk.\r\n\t\t*/\r\n\t\tconsole.log('VL.showValuesPanel');\r\n\t\tthis.newValueListItemName = \"\";\r\n\t\tif (this.get_SelectedValueList() != null) {\r\n\t\t\tthis.cancelEditListMode();\r\n\t\t}\r\n\t\tif (this.has_selectedValueList() && this.selectedValueList == list) {\r\n\t\t\tthis.closeValuesPanel();\r\n\t\t\treturn;\r\n\t\t\t// this.deselectList(list); // in showValuesPanel.\r\n\t\t}\r\n\t\tthis.selectList(list);\r\n\t\tthis.retrieveValueListItems();//showValuesPanel\r\n\t\tthis.showValues = true;\r\n\t\tthis.events.publish(\"aside-toggled\");\r\n\t}\r\n\r\n\tcloseValuesPanel() {\r\n\t\tthis.showValues = false;\r\n\t\tthis.selectedValueList = null;\r\n\t\tthis.searchTermValues = \"\";\r\n\t\tthis.newValueListItemName = \"\";\r\n\t\tthis.events.publish(\"aside-toggled\");\r\n\t}\r\n\r\n\tpublic editListName() {\r\n\t\tthis.selectedValueList_setEditMode(true);\r\n\t\tthis.selectedValueList_setEditName(this.selectedValueList_name());\r\n\t}\r\n\r\n\tpublic cancelEditListMode() {\r\n\t\tthis.selectedValueList_setEditMode(false);\r\n\t}\r\n\r\n\tpublic async newList() {\r\n\t\tif (this.appContext.projectId != undefined) {\r\n\t\t\tawait this.modal.OpenModal(NewValueList).whenClosed(async x => {\r\n\t\t\t\tif (!x.wasCancelled) {\r\n\t\t\t\t\tawait this.addNewList(x.output);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getValueLists() {\r\n\t\tthis.valueLists = (await this.valueListService.getValueListsOnProject()).filter(x => x.id !== \"00000000-0000-0000-0000-000000000000\");\r\n\t\tif(this.selectedValueList != undefined) {\r\n\t\t\tthis.valueLists.forEach(element => {\r\n\t\t\tif(element.id == this.selectedValueList?.id) {\r\n\t\t\t\t\tthis.selectedValueList = element;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate async retrieveValueListItems() {\r\n\t\tlet sel_ValueList:string | null = this.selectedValueList_id();\r\n\t\tif (!sel_ValueList) {\r\n\t\t\tconsole.warn('retrieveValueListItems: no current valueList selected.');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet items = await this.valueListService.getValueListItemsOnProject(sel_ValueList);\r\n\t\tif (this.selectedValueList) {\r\n\t\t\tthis.selectedValueList.items=items;//_in_retrieveValueListItems.\r\n\t\t}\r\n\t\t// this.selectedValueList.selected = true;\r\n\t}\r\n\r\n\tpublic async addNewList(name: string) {\r\n\t\tif (name.trim().length > 0) {\r\n\t\t\tlet createdValueList: ValueListDto | undefined = await this.valueListService.addNewListToProject(name).finally(() => { this.newValueList = null; });\r\n\t\t\tif (createdValueList != undefined) {\r\n\t\t\t\tawait this.getValueLists();\r\n\t\t\t\tawait this.retrieveValueListItems();\r\n\t\t\t\tlet finishedSetupValueList: ValueListDto[] = this.valueLists.filter(valuelist => {\r\n\t\t\t\t\treturn valuelist.id == createdValueList?.id;\r\n\t\t\t\t});\r\n\t\t\t\tif (finishedSetupValueList.length > 0) {\r\n\t\t\t\t\tthis.showValuesPanel(finishedSetupValueList[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic renameList() {\r\n\t\tif (this.selectedValueList) {\r\n\t\t\tthis.selectedValueList_setName( this.selectedValueList_editName() );\r\n\t\t\tthis.valueListService.renameValueListOnProject(this.selectedValueList)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.cancelEditListMode();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic removeList() {\r\n\t\tconsole.log('vl.removeList');\r\n\t\t$(\".delete-button\").blur()\r\n\t\tthis.modal.OpenConfirm(\"Delete value lists\", `Are you sure you wish to delete the selected value lists?`).whenClosed(y => {\r\n\t\t\tif (!y.wasCancelled) {\r\n\t\t\t\t// let ids: string[] = [];\r\n\t\t\t\t// this.selectedValueLists.forEach(x => {\r\n\t\t\t\t// \tif (x.sourceProjectId !== \"00000000-0000-0000-0000-000000000000\") {\r\n\t\t\t\t// \t\tids.push(x.id);\r\n\t\t\t\t// \t}\r\n\t\t\t\t// });\r\n\t\t\t\tif (this.selectedValueList?.id) {\r\n\t\t\t\t\tthis.valueListService.removeListFromProject([this.selectedValueList?.id])\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.set_selectedValueList(null); // in removeList.\r\n\t\t\t\t\t\tthis.selectedValueListItem = null;\r\n\t\t\t\t\t\tthis.selectedValueLists = [];\r\n\t\t\t\t\t\tif (this.showValues) {\r\n\t\t\t\t\t\t\tthis.closeValuesPanel();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.getValueLists();\r\n\t\t\t\t\t\tthis.allSelected = false;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tasync changeToSystemValueList() {\r\n\t\t$('.convert-button').blur();\r\n\t\tif (!this.selectedValueList || this.selectedValueList.sourceProjectId === \"00000000-0000-0000-0000-000000000000\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.modal.OpenConfirm(\"Change to system value list\", \"Are you sure you wish to change the selected value list to a system value list?\").whenClosed(x => {\r\n\t\t\tif (!x.wasCancelled && this.selectedValueList) {\r\n\t\t\t\tthis.valueListService.changeProjectValueListIntoSystemValueList(this.selectedValueList.id)\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.getValueLists();\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.closeValuesPanel();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/* old crap for exportToExcel:\r\n\t\t//var idToExport:string = undefined;\r\n\t\t// var anySelectedValueList:ValueListDto = this.selectedValueLists.find(x => x.selected);\r\n\t\t// if (!anySelectedValueList) {\r\n\t\t// \tconsole.log('trying to use focused valueList row, as no SELECTED valuelistrow.');\r\n\t\t// \t// her fejler den, fordi this.selectedValueList er syg.\r\n\t\t// \tanySelectedValueList = this.get_SelectedValueList();\r\n\t\t// \tDette skal istedet integreres med den ANDEN selection-model..\r\n\t\t// }\r\n\t */\r\n\r\n\tpublic async hasOrgSelected():Promise {\r\n\t\tlet ots=this.orgTokenService;\r\n\t\tlet hasOrgSelected:boolean = ots.hasOrgSelected();\r\n\t\tconsole.log('hasOrgSelected B?', hasOrgSelected, ots.orgId());\r\n\t\tif (!hasOrgSelected) {\r\n\t\t\tawait this.modal.OpenMessage('Information','Please select a current organisation');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic async exportToExcel() {//B\r\n\t\tconsole.log('exportToExcel B'); // C:/dev/aoc/AO.Client/ClientApp/src/app/project/value-lists/value-lists.ts\r\n\t\tif (!await this.hasOrgSelected()) { \r\n\t\t\tconsole.log('(no org)')\r\n\t\t\treturn; \r\n\t\t}\r\n\r\n\t\tlet orgId =\tthis.orgTokenService.orgId();\r\n\t\t\r\n\t\t// New take on it downloading, based on changes to the selectedValueLists.\r\n\r\n\t\tconsole.log('selectedValueLists.length', this.selectedValueLists.length);\r\n\t\tfor (const valueList of this.selectedValueLists) {//: ValueListDto\r\n\t\t\tconsole.log('prjcase, vl:', valueList);\r\n\t\t\tif (this.isSystemValueList('xtx',valueList)) {\r\n\t\t\t\tconsole.log('A');\r\n\t\t\t\tif (await this.giveUpOnMismatch(orgId, valueList.orgId, valueList)) { return; } // in exportToExcel.\r\n\r\n\t\t\t\tconst currentUser_OrgId = this.appContext.currentUserOrgId(); // this.apiClient.appContext.currentUser?.organization.id;\r\n\t\t\t\tthis.apiClient.orgByToken(currentUser_OrgId)\r\n\t\t\t\t.get(\"Excel/ExportValueList?id=\" + valueList.id) // under project.\r\n\t\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t\t.downloadFile(`${valueList.name}.xlsx`);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log('B');\r\n\t\t\t\tif (await this.giveUpOnMismatch(orgId, valueList.orgId, valueList)) { return; } // also in exportToExcel.\r\n\r\n\t\t\t\tthis.apiClient.project(this.appContext.projectId)\t\r\n\t\t\t\t.get(\"Excel/ExportValueList?id=\" + valueList.id)\r\n\t\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t\t.downloadFile(`${valueList.name}.xlsx`);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync getOrganization(orgId:string): Promise {\r\n\t\tlet org = await this.apiClient.global.get(`UserInfo/GetOrganization/${orgId}`).jsonResult();\r\n\t\treturn org;\r\n\t}\r\n\r\n\tasync giveUpOnMismatch(orgId:string, vl_orgId2:string, valueList:ValueListDto):Promise { \r\n\t\tconst mismatch = !(orgId === vl_orgId2); // || true;\r\n\t\tif (!mismatch) { return mismatch; }\r\n\r\n\t // https://jira.eg.dk/browse/AJC-3656\r\n\t\tconst org1 = await this.getOrganization(orgId);\r\n\t\tconst org2 = await this.getOrganization(vl_orgId2);\r\n\t\tconst thisOrgName = org1 ? `${org1.name} (${orgId})` : orgId;\r\n\t\tconst thatOrgName = org2 ? `${org2.name} (${vl_orgId2})` : vl_orgId2;\r\n\r\n\t\tconst vlId = valueList.id;\r\n\t\tconst name = valueList.name;\r\n\t\tconst msg = \r\n\t\t `⚠️ You are currently viewing organisation\\n ${thisOrgName}.\\n\\n`\r\n\t\t+`But this value list belongs to organisation\\n ${thatOrgName}.\\n\\n`\r\n\t\t+` Please switch to ${thatOrgName} to work with that value list.\\n`\r\n\t\t+`(Value list ${name} ${vlId}).`;\r\n\r\n\t\tawait this.modal.OpenMessage('Information', msg);\r\n\t\treturn mismatch; \r\n\t}\r\n\r\n\topenImportModal() {\r\n\t\tlet valueListsForImport = this.valueLists.filter(x => x.sourceProjectId !== \"00000000-0000-0000-0000-000000000000\");\r\n\r\n\t\tthis.modal.OpenModal(ValuelistUpload, valueListsForImport).whenClosed(x => {\r\n\t\t\tif (!x.wasCancelled) {\r\n\t\t\t\tif (Boolean(x.output.isNewValueList)) {\r\n\t\t\t\t\tthis.importNewFromExcel(x.output);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.importExistingFromExcel(x.output);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic importNewFromExcel(model: ImportValuelistModel) {\r\n\t\tlet formData = new FormData();\r\n\t\tif (model.files) {\r\n\t\t\tformData.append(this.appContext.projectId, model.files[0]);\r\n\t\t\tthis.apiClient.project(this.appContext.projectId).postForm(`Excel/ImportNewValueList?name=${model.name}&containsHeaders=${model.containsHeaders}`, formData)\r\n\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t.stringResult().then(receipt => {\r\n\t\t\t\tthis.modal.OpenMessage(\"Import Receipt\", receipt);\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tthis.handleImportFinished();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic importExistingFromExcel(model: ImportValuelistModel) {\r\n\t\tlet formData = new FormData();\r\n\t\tif (model.files) {\r\n\t\t\tformData.append(this.appContext.projectId, model.files[0]);\r\n\t\t\tthis.apiClient.project(this.appContext.projectId)\r\n\t\t\t\t.postForm(`Excel/ImportExistingValueList?listId=${model.selectedValueListId}&containsHeaders=${model.containsHeaders}`, formData)\r\n\t\t\t\t.handleError(this.i18n.tr('Error_Title_Generic'), this.i18n.tr('Error_Message_Generic'))\r\n\t\t\t\t.stringResult().then(receipt => {\r\n\t\t\t\t\tthis.modal.OpenMessage(\"Import Receipt\", receipt);\r\n\t\t\t\t}).finally(() => {\r\n\t\t\t\t\tthis.handleImportFinished();\r\n\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\thandleImportFinished() {\r\n\t\tthis.getValueLists();\r\n\t\tthis.retrieveValueListItems();//importNewFromExcel\r\n\t}\r\n\r\n\tpublic async assignColors() {\r\n\t\tif (!this.selectedValueList) { console.log('no selected value list.'); return; }\r\n\r\n\t\tlet rsp = await this.valueListService.assignColorsWithProject(this.selectedValueList.id, this.appContext.projectId);\r\n\t\tif (rsp) {\r\n\t\t\tawait this.getValueLists();\r\n\t\t\tawait this.retrieveValueListItems();//assignColors\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t* ValueListItems \r\n\t*/\r\n\r\n\tpublic selectListItem(item: ValueListItemDto) {\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.selected = false;\r\n\t\t\tthis.selectedValueListItem.editValue = false;\r\n\t\t\tthis.selectedValueListItem.editSortOrder = false;\r\n\t\t}\r\n\t\titem.selected = true;\r\n\t\tthis.selectedValueListItem = item;\r\n\t\tthis.selectedValueListItemOriginal = Object.assign({}, item);\r\n\t}\r\n\r\n\tpublic newListItem() {\r\n\t\tthis.newValueListItem = {\r\n\t\t\tvalue: this.newValueListItemName,\r\n\t\t\tid: '00000000-0000-0000-0000-000000000000',\r\n\t\t\tvalueListId: this.selectedValueList_id() ? this.selectedValueList_id()+\"\" : \"\",\r\n\t\t\tsortOrder: 0,\r\n\t\t\tisDefault: false,\r\n\t\t\tcolorUI: null // Means that it should be generated on the back end\r\n\t\t}\r\n\t}\r\n\r\n\tpublic cancelNewListItem() {\r\n\t\tthis.newValueListItem = null;\r\n\t\tthis.selectedValueListItem = null;\r\n\t}\r\n\r\n\tpublic editListItemValue(item: ValueListItemDto) {\r\n\t\tthis.selectListItem(item);\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.editValue = true;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic editListItemSortOrder(item: ValueListItemDto) {\r\n\t\tthis.selectListItem(item);\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.editSortOrder = true;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic cancelEditListItemValue() {\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.editValue = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic cancelEditListItemSortOrder() {\r\n\t\tif (this.selectedValueListItem) {\r\n\t\t\tthis.selectedValueListItem.editSortOrder = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic addNewListItem() {\r\n\t\t$('button-add').blur();\r\n\t\tthis.newListItem();\r\n\t\tif (this.newValueListItem) {\r\n\t\t\tthis.valueListService.addNewListItemOnProject(this.newValueListItem, this.selectedValueList_name())\r\n\t\t\t.then(response => {\r\n\t\t\t\tlet newListItem = Object.assign({}, response);\r\n\t\t\t\tthis.selectedValueList_items().push(newListItem);\r\n\t\t\t\tthis.selectedValueListItem = newListItem;\r\n\t\t\t\tthis.newValueListItem = null;\r\n\t\t\t}).finally(() => {\r\n\t\t\t\tthis.retrieveValueListItems();//addNewListItem\r\n\t\t\t});\r\n\t\t\tthis.newValueListItemName = \"\";\r\n\t\t\t$('list-item-input').focus();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic renameListItem() {\r\n\t\tif (this.selectedValueListItem && this.selectedValueListItem?.value.trim() !== this.selectedValueListItemOriginal?.value.trim()) {\r\n\t\t\tthis.valueListService.renameListItemOnProject(this.selectedValueListItem, this.selectedValueList_name())\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tif (this.selectedValueListItem) {\r\n\t\t\t\t\t\tthis.selectedValueListItem.editValue = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}).finally(() => {\r\n\t\t\t\t\tthis.retrieveValueListItems();//renameListItem\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.cancelEditListItemValue();\r\n\t\t}\r\n\t}\r\n\t\r\n\tpublic async setColor(item : ValueListItemDto) {\r\n\t\tawait this.valueListService.assignColorToListItemWithProject(item, this.appContext.projectId);\r\n\t}\r\n\r\n\tpublic setDefaultListItem(item: ValueListItemDto) {\r\n\t\tif (this.isSystemValueListItem('sdli', item)) {\r\n\t\t\titem.isDefault = !item.isDefault;\r\n\t\t\tthis.valueListService.setDefaultListItemOnProject(item, this.selectedValueList_name())\r\n\t\t\t\t.finally(async () => this.retrieveValueListItems());//setDefaultListItem\r\n\t\t} else {\r\n\t\t\tthis.modal.OpenMessage(this.i18n.tr('Error_Title_Generic'), `This is a system value list item. If you wish to set this item as the default, you will have to do this in 'System value lists' under the 'Administration' area.`);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic reorderListItem() {\r\n\t\tif (this.selectedValueListItem && this.selectedValueListItem?.sortOrder !== this.selectedValueListItemOriginal?.sortOrder) {\r\n\t\t\tthis.valueListService.reorderListItemOnProject(this.selectedValueListItem, this.selectedValueList_name())\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tif (this.selectedValueListItem) {\r\n\t\t\t\t\t\tthis.selectedValueListItem.editSortOrder = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tthis.retrieveValueListItems();//reorderListItem\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.cancelEditListItemSortOrder();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic removeListItem(item: ValueListItemDto) {\r\n\t\t$('.btn-delete-value-list').blur();\r\n\t\tthis.modal.OpenConfirm(`Delete`, `Please confirm that you want to delete the selected value lists`).whenClosed(result => {\r\n\t\t\tif (result.wasCancelled) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.valueListService.removeListItemOnProject(item, this.selectedValueList_name())\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tlet itemIndex = this.selectedValueList_items().findIndex(x => x === item);\r\n\t\t\t\t\tthis.selectedValueList_items().splice(itemIndex, 1);\r\n\t\t\t\t\tthis.selectedValueListItem = null;\r\n\t\t\t\t});\r\n\t\t})\r\n\t}\r\n\r\n\tpublic selectedValueList_items():ValueListItemDto[] { \r\n\t\tlet selectedValueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (selectedValueList && selectedValueList.items) {\r\n\t\t\treturn selectedValueList.items;\r\n\t\t} else {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tpublic selectedValueList_id():string | null { \r\n\t\t// This is NOT the checkbox selection.\r\n\t\t// This selection may be empty!\r\n\t\tlet sel_VL:ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (!sel_VL) {\r\n\t\t\tconsole.warn('selectedValueList_id, no current get_SelectedValueList.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn sel_VL.id; \r\n\t}\r\n\tpublic selectedValueList_editName():string | undefined { return this.get_SelectedValueList()?.editName; }\r\n\tpublic selectedValueList_setEditName(newEditName:string | undefined) {\r\n\t\tlet valueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (valueList) {\r\n\t\t\t valueList.editName = newEditName ? newEditName : \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tpublic selectedValueList_name():string | undefined { return this.get_SelectedValueList()?.name; }\r\n\tpublic selectedValueList_setName(newName:string | undefined) {\r\n\t\tlet valueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (valueList) {\r\n\t\t\tvalueList.name = newName ? newName : \"\"; \t\r\n\t\t}\r\n\t}\r\n\r\n\tpublic selectedValueList_isInEditMode():boolean { return Boolean(this.get_SelectedValueList()?.inEditMode); }\r\n\t\r\n\tpublic selectedValueList_setEditMode(is:boolean) {\r\n\t\tlet valueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (valueList) {\r\n\t\t\tvalueList.inEditMode = is;\r\n\t\t} \r\n\t}\r\n\t\r\n\tpublic selectedValueList_setSelected(sel:boolean) {\r\n\t\tlet valueList: ValueListDto | null = this.get_SelectedValueList();\r\n\t\tif (valueList) {\r\n\t\t\tvalueList.selected = sel;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic has_selectedValueList():boolean { return Boolean(this.get_SelectedValueList()); }\r\n\r\n\tpublic get_SelectedValueList():ValueListDto | null { \r\n\t\treturn this.selectedValueList; // is NULL unless someone set_selectedValueList().\r\n\t}\r\n\r\n\tpublic set_selectedValueList(newValueList:ValueListDto | null){this.selectedValueList=newValueList;}\r\n\r\n\tpublic async sortBy(columnName: string) {\r\n\t\tawait this.listService.sortBy(columnName).then(result => {\r\n\t\t\tthis.column = result.column;\r\n\t\t\tthis.displayState = result.displayState;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async toggleList() {\r\n\t\tawait this.listService.toggleElement(this.valueLists).then( (result:SelectResult) => {\r\n\t\t\tthis.selectedValueLists = result.selected; // IN toggleList.\r\n\t\t\tthis.allSelected = result.allSelected; // IN toggleList.\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async toggleAll() {\r\n\t\tawait this.listService.toggleAll(this.valueLists, this.searchTerm, this.columnsToSearch).then((result:SelectResult | undefined) => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.selectedValueLists = result.selected;//IN-toggleAll\r\n\t\t\t\tthis.allSelected = result.allSelected;//IN-toggleAll\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\t\r\n\tpublic isSystemValueList(who:string, valueListDto : ValueListDto) : boolean {\r\n\t\t// console.log(who,\"is System Value List\" , valueListDto);\r\n\t\tif (valueListDto == null) {\r\n\t\t\tconsole.warn('Cannot determine type of value list')\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn valueListDto.sourceProjectId === '00000000-0000-0000-0000-000000000000';\r\n\t}\r\n\r\n\tpublic isSystemValueListItem(who:string, valueListItemDto : ValueListItemDto) : boolean {\r\n\t\tconsole.log(who,\"is System Value List item\" , valueListItemDto);\r\n\t\tif (valueListItemDto == null) {\r\n\t\t\tconsole.warn('Cannot determine type of value list item')\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn valueListItemDto.sourceProjectId === '00000000-0000-0000-0000-000000000000';\r\n\t}\r\n\r\n\tasync showMenuItems(event: Event): Promise {\r\n\t\tlet actions = [];\r\n\t\tactions.push({ viewKey: \"button\", setup: { textKey: \"Create Value list\", icon:\"fa-solid fa-list\", actionKey: \"createValueList\", service: {createValueList: () => { this.newList() }}}});\r\n\t\tactions.push({ viewKey: \"line\", setup: {}});\r\n\t\tactions.push({ viewKey: \"button\", setup: { textKey: \"Import from Excel\", icon:\"fa-solid fa-download\", actionKey: \"importFromExcel\", service: {importFromExcel: () => { this.openImportModal() }}}});\r\n\t\tactions.push({ viewKey: \"button\", setup: { textKey: \"Export selected to Excel\", icon:\"fa-solid fa-upload\", isDisabled: !(this.selectedValueLists.length > 0), actionKey: \"exportToExcel\", service: {exportToExcel: () => { this.exportToExcel() }}}});\r\n this.contextMenuService.open(event, actions);\r\n\t}\r\n\t\r\n\tformatDate(date: string): string {\r\n\t\tlet formattedDate = new Date(date);\r\n\t\tlet minutes = (formattedDate.getMinutes().toString().length > 1) ? formattedDate.getMinutes() : \"0\" + formattedDate.getMinutes();\r\n\t\tlet hours = (formattedDate.getHours().toString().length > 1) ? formattedDate.getHours() : \"0\" + formattedDate.getHours();\r\n\t\treturn formattedDate.toDateString() + \" - \" + hours + \":\" + minutes;\r\n\t}\r\n}\r\n\r\ninterface OrganizationDto {id: string, name: string}\r\n"],"names":["ValueLists","constructor","valueListService","router","modal","apiClient","i18n","events","errorService","appContext","listService","contextMenuService","orgTokenService","showValues","selectedValueLists","selectedValueList","selectedValueListItem","selectedValueListItemOriginal","newValueList","newValueListItem","valueLists","searchTerm","searchTermValues","allSelected","column","columnsToSearch","subscriptions","isDeleteDisabled","newValueListItemName","this","viewContext","activate","params","projectId","setProject","getValueLists","setupKeyHandler","displayState","icon","direction","keybuttonHandling","event","key","closeValuesPanel","$","is","addNewListItem","window","addEventListener","attached","subscribe","data","handleSearchEvent","detached","removeEventListener","forEach","subscription","dispose","includedList","filter","valueList","name","toLocaleLowerCase","includes","selectedValueListsChanged","length","every","x","sourceProjectId","selectList","list","console","log","set_selectedValueList","deselectList","selectedValueList_isInEditMode","cancelEditListMode","selectedValueList_setSelected","splice","indexOf","showValuesPanel","get_SelectedValueList","has_selectedValueList","retrieveValueListItems","publish","editListName","selectedValueList_setEditMode","selectedValueList_setEditName","selectedValueList_name","newList","undefined","OpenModal","whenClosed","async","wasCancelled","addNewList","output","getValueListsOnProject","id","element","sel_ValueList","selectedValueList_id","warn","items","getValueListItemsOnProject","trim","createdValueList","addNewListToProject","finally","finishedSetupValueList","valuelist","renameList","selectedValueList_setName","selectedValueList_editName","renameValueListOnProject","then","removeList","blur","OpenConfirm","y","removeListFromProject","changeToSystemValueList","changeProjectValueListIntoSystemValueList","hasOrgSelected","ots","orgId","OpenMessage","exportToExcel","isSystemValueList","giveUpOnMismatch","currentUser_OrgId","currentUserOrgId","orgByToken","get","handleError","tr","downloadFile","project","getOrganization","global","jsonResult","vl_orgId2","mismatch","org1","org2","thisOrgName","thatOrgName","vlId","msg","openImportModal","valueListsForImport","Boolean","isNewValueList","importNewFromExcel","importExistingFromExcel","model","formData","FormData","files","append","postForm","containsHeaders","stringResult","receipt","handleImportFinished","selectedValueListId","assignColors","assignColorsWithProject","selectListItem","item","selected","editValue","editSortOrder","Object","assign","newListItem","value","valueListId","sortOrder","isDefault","colorUI","cancelNewListItem","editListItemValue","editListItemSortOrder","cancelEditListItemValue","cancelEditListItemSortOrder","addNewListItemOnProject","response","selectedValueList_items","push","focus","renameListItem","renameListItemOnProject","setColor","assignColorToListItemWithProject","setDefaultListItem","isSystemValueListItem","setDefaultListItemOnProject","reorderListItem","reorderListItemOnProject","removeListItem","result","removeListItemOnProject","itemIndex","findIndex","sel_VL","editName","newEditName","newName","inEditMode","sel","sortBy","columnName","toggleList","toggleElement","toggleAll","who","valueListDto","valueListItemDto","showMenuItems","actions","viewKey","setup","textKey","actionKey","service","createValueList","importFromExcel","isDisabled","open","formatDate","date","formattedDate","Date","minutes","getMinutes","toString","hours","getHours","toDateString","observable","autoinject","I18N","EventAggregator"],"sourceRoot":""}