{"version":3,"file":"main.4ddbdad2085a9f61.js","mappings":"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3BA,EAAIj4V,QAAQ03V,GAEZO,EAAI56W,WAEZ,MAAMm6W,EAAYI,EAASJ,UAAkB,YAANl0W,EAAkCs0W,EAASJ,SAAzB32V,EAAK22V,SACxDU,EAnOV,SAASC,iBAAiB/rG,EAAQ9rP,EAAMy3V,EAAWP,GACjD,GAAe,MAAXprG,IAAmBorG,EACrB,OAAO,KAET,QAAaluW,IAATgX,EACF,OAAO,KAET,IAAI0iD,EAAMopM,EAAS9rP,EAKnB,MAHe,MAAX8rP,GAAkB2rG,IACpB/0S,GAAO,KAEFA,CACT,CAsNsBm1S,CAAiBF,EAAKL,EAASt0W,GAAIs0W,EAASG,UAAWP,GACvD,OAAdU,GACF/0W,EAAOqJ,KAAK0rW,EACd,IAGEr3V,EAAK42V,QACPt0W,EAASA,EAAOuuB,MAAM,EAAG7Q,EAAK42V,QAGhCt0W,EAASA,EAAOiT,KAAKyhW,GAEjBC,IACF30W,EAAS20W,EAAQ30W,IAGM,IAAlBA,EAAO+C,OAAe,KAAO/C,CACtC,C,kBCxcA,IAAIhC,EAAM,CACT,eAAgB,CACf,MACA,oDACA,2CAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,yBAA0B,CACzB,MACA,oDACA,qDAED,2BAA4B,CAC3B,MACA,oDACA,uDAED,mBAAoB,CACnB,MACA,oDACA,uDAED,uBAAwB,CACvB,MACA,oDACA,mDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,mBAAoB,CACnB,MACA,oDACA,+CAED,iCAAkC,CACjC,MACA,oDACA,UAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,uBAAwB,CACvB,MACA,oDACA,mDAED,eAAgB,CACf,MACA,oDACA,mDAED,qBAAsB,CACrB,MACA,oDACA,iDAED,WAAY,CACX,MACA,oDACA,uCAED,iBAAkB,CACjB,MACA,oDACA,sDACA,6CAED,iBAAkB,CACjB,MACA,oDACA,6CAED,qBAAsB,CACrB,MACA,oDACA,gEACA,kDACA,8DACA,SACA,iDAED,6BAA8B,CAC7B,MACA,oDACA,SACA,yDAED,eAAgB,CACf,KACA,oDACA,2CAED,mBAAoB,CACnB,IACA,oDACA,+CAED,iBAAkB,CACjB,MACA,oDACA,6CAED,eAAgB,CACf,MACA,oDACA,2CAED,qBAAsB,CACrB,MACA,oDACA,iDAED,eAAgB,CACf,MACA,oDACA,2CAED,qBAAsB,CACrB,MACA,oDACA,iDAED,qBAAsB,CACrB,MACA,oDACA,SACA,iDAED,eAAgB,CACf,MACA,oDACA,2CAED,mBAAoB,CACnB,MACA,oDACA,+CAED,uBAAwB,CACvB,MACA,oDACA,mDAED,eAAgB,CACf,MACA,oDACA,2CAED,eAAgB,CACf,MACA,oDACA,4DACA,SACA,2CAED,uBAAwB,CACvB,MACA,oDACA,mDAED,aAAc,CACb,KACA,oDACA,yCAED,qBAAsB,CACrB,MACA,oDACA,iDAED,iBAAkB,CACjB,MACA,oDACA,gEACA,kDACA,8DACA,SACA,6CAED,6BAA8B,CAC7B,MACA,oDACA,UAED,yCAA0C,CACzC,MACA,oDACA,SACA,qEAED,uBAAwB,CACvB,KACA,oDACA,UAED,iBAAkB,CACjB,MACA,oDACA,6CAED,iCAAkC,CACjC,MACA,oDACA,gEACA,kDACA,8DACA,SACA,6DAED,2BAA4B,CAC3B,MACA,oDACA,gEACA,kDACA,+DAED,iBAAkB,CACjB,MACA,oDACA,6CAED,eAAgB,CACf,MACA,oDACA,2CAED,6BAA8B,CAC7B,MACA,oDACA,iEAED,qBAAsB,CACrB,MACA,oDACA,iDAED,eAAgB,CACf,MACA,oDACA,gEACA,2CAED,mBAAoB,CACnB,MACA,oDACA,+CAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,eAAgB,CACf,MACA,oDACA,2CAED,yBAA0B,CACzB,MACA,oDACA,6DAED,+BAAgC,CAC/B,MACA,oDACA,2DAED,iBAAkB,CACjB,MACA,oDACA,6CAED,iBAAkB,CACjB,MACA,oDACA,6CAED,qBAAsB,CACrB,MACA,oDACA,iDAED,yBAA0B,CACzB,MACA,oDACA,qDAED,qBAAsB,CACrB,MACA,oDACA,iDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,mBAAoB,CACnB,MACA,oDACA,+CAED,iBAAkB,CACjB,MACA,oDACA,SACA,6CAED,yBAA0B,CACzB,MACA,oDACA,qDAED,qBAAsB,CACrB,MACA,oDACA,iDAED,aAAc,CACb,KACA,oDACA,yCAED,qBAAsB,CACrB,MACA,oDACA,iDAED,mBAAoB,CACnB,MACA,oDACA,gEACA,+CAED,iBAAkB,CACjB,MACA,oDACA,6CAED,eAAgB,CACf,MACA,oDACA,gEACA,kDACA,8DACA,sDACA,2CAED,eAAgB,CACf,MACA,oDACA,2CAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,yBAA0B,CACzB,MACA,oDACA,qDAED,eAAgB,CACf,MACA,oDACA,gEACA,kDACA,8DACA,UAED,qBAAsB,CACrB,MACA,oDACA,iDAED,qBAAsB,CACrB,KACA,oDACA,UAED,WAAY,CACX,MACA,oDACA,uCAED,WAAY,CACX,MACA,oDACA,uCAED,eAAgB,CACf,MACA,oDACA,2CAED,eAAgB,CACf,MACA,oDACA,SACA,2CAED,iBAAkB,CACjB,KACA,oDACA,UAED,iBAAkB,CACjB,MACA,oDACA,SACA,6CAED,eAAgB,CACf,MACA,oDACA,2CAED,iBAAkB,CACjB,MACA,oDACA,kDACA,UAED,qBAAsB,CACrB,MACA,oDACA,iDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,mBAAoB,CACnB,MACA,oDACA,+CAED,iBAAkB,CACjB,MACA,oDACA,gEACA,kDACA,8DACA,SACA,6CAED,2BAA4B,CAC3B,MACA,oDACA,uDAED,qBAAsB,CACrB,MACA,oDACA,iDAED,iBAAkB,CACjB,MACA,oDACA,6CAED,eAAgB,CACf,MACA,oDACA,gEACA,kDACA,8DACA,2CAED,qBAAsB,CACrB,MACA,oDACA,iDAED,+BAAgC,CAC/B,MACA,oDACA,2DAED,eAAgB,CACf,MACA,oDACA,2CAED,iBAAkB,CACjB,MACA,oDACA,UAED,qBAAsB,CACrB,MACA,oDACA,yDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,eAAgB,CACf,MACA,oDACA,2CAED,uBAAwB,CACvB,MACA,oDACA,mDAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,iBAAkB,CACjB,MACA,oDACA,6CAED,iBAAkB,CACjB,MACA,oDACA,6CAED,uBAAwB,CACvB,MACA,oDACA,gEACA,kDACA,8DACA,SACA,mDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,yBAA0B,CACzB,MACA,oDACA,qDAED,iBAAkB,CACjB,MACA,oDACA,6CAED,qBAAsB,CACrB,MACA,oDACA,iDAED,iBAAkB,CACjB,MACA,oDACA,SACA,6CAED,aAAc,CACb,MACA,oDACA,yCAED,yBAA0B,CACzB,MACA,oDACA,qDAED,yBAA0B,CACzB,MACA,oDACA,qDAED,uBAAwB,CACvB,MACA,oDACA,mDAED,iBAAkB,CACjB,MACA,oDACA,6CAED,eAAgB,CACf,MACA,oDACA,gEACA,kDACA,8DACA,wDACA,SACA,2CAED,iBAAkB,CACjB,MACA,oDACA,SACA,6CAED,qBAAsB,CACrB,MACA,oDACA,iDAED,eAAgB,CACf,MACA,oDACA,2CAED,qBAAsB,CACrB,MACA,oDACA,iDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,yCAA0C,CACzC,MACA,oDACA,SACA,qEAED,iBAAkB,CACjB,MACA,oDACA,UAED,eAAgB,CACf,MACA,oDACA,4CAGF,SAASi3W,oBAAoBzwS,GAC5B,IAAI0wS,EAAoB3wU,EAAEvmC,EAAKwmE,GAC9B,OAAO5+D,QAAQC,UAAU1I,MAAK,KAC7B,IAAIu2B,EAAI,IAAIiD,MAAM,uBAAyB6tC,EAAM,KAEjD,MADA9wC,EAAE26M,KAAO,mBACH36M,CAAC,IAIT,IAAI/tB,EAAM3H,EAAIwmE,GAAMvqE,EAAK0L,EAAI,GAC7B,OAAOC,QAAQ8pB,IAAI/pB,EAAI4oB,MAAM,GAAGvwB,IAAIk3W,EAAoBxhV,IAAIv2B,MAAK,IACzD+3W,EAAoB/0W,EAAElG,EAAI,KAEnC,CACAg7W,oBAAoBrjW,KAAO,IAAOD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,uBAED,YAAa,CACZ,KACA,uBAED,YAAa,CACZ,MACA,uBAED,gBAAiB,CAChB,MACA,2BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,KACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,gBAAiB,CAChB,MACA,2BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,aAAc,CACb,MACA,wBAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,KACA,uBAED,YAAa,CACZ,MACA,uBAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,KACA,uBAED,eAAgB,CACf,KACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,gBAAiB,CAChB,MACA,2BAED,gBAAiB,CAChB,MACA,2BAED,YAAa,CACZ,MACA,uBAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,KACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,KACA,uBAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,KACA,uBAED,eAAgB,CACf,IACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,gBAAiB,CAChB,MACA,4BAGF,SAASi3W,oBAAoBzwS,GAC5B,IAAI0wS,EAAoB3wU,EAAEvmC,EAAKwmE,GAC9B,OAAO5+D,QAAQC,UAAU1I,MAAK,KAC7B,IAAIu2B,EAAI,IAAIiD,MAAM,uBAAyB6tC,EAAM,KAEjD,MADA9wC,EAAE26M,KAAO,mBACH36M,CAAC,IAIT,IAAI/tB,EAAM3H,EAAIwmE,GAAMvqE,EAAK0L,EAAI,GAC7B,OAAOuvW,EAAoBxhV,EAAE/tB,EAAI,IAAIxI,MAAK,IAClC+3W,EAAoB/0W,EAAElG,EAAI,KAEnC,CACAg7W,oBAAoBrjW,KAAO,IAAOD,OAAOC,KAAK5T,GAC9Ci3W,oBAAoBh7W,GAAK,MACzB8pT,EAAO9uQ,QAAUggU,mB,kBC9gBjB,IAAIj3W,EAAM,CACT,mCAAoC,CACnC,MACA,sEAED,oCAAqC,CACpC,MACA,uEAED,8CAA+C,CAC9C,MACA,iFAED,uCAAwC,CACvC,MACA,0EAED,2BAA4B,CAC3B,MACA,8DAED,8BAA+B,CAC9B,MACA,iEAED,2CAA4C,CAC3C,MACA,8EAED,2BAA4B,CAC3B,MACA,8DAED,yBAA0B,CACzB,MACA,4DAED,gCAAiC,CAChC,MACA,mEAED,wBAAyB,CACxB,MACA,2DAED,gCAAiC,CAChC,MACA,mEAED,oCAAqC,CACpC,MACA,uEAED,4BAA6B,CAC5B,MACA,+DAED,+BAAgC,CAC/B,MACA,kEAED,kCAAmC,CAClC,MACA,UAED,mCAAoC,CACnC,MACA,sEAED,8BAA+B,CAC9B,MACA,iEAED,qCAAsC,CACrC,MACA,wEAED,kCAAmC,CAClC,MACA,qEAED,+BAAgC,CAC/B,KACA,kEAED,iDAAkD,CACjD,MACA,oFAED,wCAAyC,CACxC,MACA,2EAED,+BAAgC,CAC/B,MACA,kEAED,oCAAqC,CACpC,IACA,uEAED,oCAAqC,CACpC,KACA,uEAED,4BAA6B,CAC5B,MACA,+DAED,0BAA2B,CAC1B,OAED,6BAA8B,CAC7B,MACA,gEAED,6BAA8B,CAC7B,MACA,gEAED,yBAA0B,CACzB,MACA,4DAED,iDAAkD,CACjD,MACA,oFAED,uCAAwC,CACvC,MACA,0EAED,oCAAqC,CACpC,MACA,UAED,mDAAoD,CACnD,MACA,SACA,sFAED,iCAAkC,CACjC,OAED,uCAAwC,CACvC,MACA,0EAED,qCAAsC,CACrC,MACA,wEAED,mCAAoC,CACnC,MACA,sEAED,qCAAsC,CACrC,MACA,wEAED,oCAAqC,CACpC,MACA,uEAED,8BAA+B,CAC9B,MACA,iEAED,mEAAoE,CACnE,MACA,sGAED,uDAAwD,CACvD,MACA,0FAED,mDAAoD,CACnD,MACA,sFAED,iDAAkD,CACjD,MACA,SACA,oFAED,yCAA0C,CACzC,MACA,4EAED,qCAAsC,CACrC,MACA,wEAED,uBAAwB,CACvB,MACA,0DAED,iCAAkC,CACjC,MACA,oEAED,0BAA2B,CAC1B,MACA,6DAED,yCAA0C,CACzC,MACA,4EAED,0BAA2B,CAC1B,MACA,6DAED,kDAAmD,CAClD,MACA,qFAED,iDAAkD,CACjD,MACA,oFAED,2CAA4C,CAC3C,MACA,8EAED,iDAAkD,CACjD,OAED,0CAA2C,CAC1C,MACA,6EAED,4CAA6C,CAC5C,OAED,2CAA4C,CAC3C,MACA,8EAED,yCAA0C,CACzC,MACA,4EAED,sDAAuD,CACtD,MACA,yFAED,iDAAkD,CACjD,MACA,oFAED,8CAA+C,CAC9C,MACA,iFAED,kDAAmD,CAClD,MACA,sFAGF,SAASi3W,oBAAoBzwS,GAC5B,IAAI0wS,EAAoB3wU,EAAEvmC,EAAKwmE,GAC9B,OAAO5+D,QAAQC,UAAU1I,MAAK,KAC7B,IAAIu2B,EAAI,IAAIiD,MAAM,uBAAyB6tC,EAAM,KAEjD,MADA9wC,EAAE26M,KAAO,mBACH36M,CAAC,IAIT,IAAI/tB,EAAM3H,EAAIwmE,GAAMvqE,EAAK0L,EAAI,GAC7B,OAAOC,QAAQ8pB,IAAI/pB,EAAI4oB,MAAM,GAAGvwB,IAAIk3W,EAAoBxhV,IAAIv2B,MAAK,IACzD+3W,EAAoBj7W,IAE7B,CACAg7W,oBAAoBrjW,KAAO,IAAOD,OAAOC,KAAK5T,GAC9Ci3W,oBAAoBh7W,GAAK,MACzB8pT,EAAO9uQ,QAAUggU,mB,kBCpRjB,IAAIj3W,EAAM,CACT,UAAW,CACV,KACA,0CAED,UAAW,CACV,MACA,0CAED,WAAY,CACX,MACA,2CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,KACA,6CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,KACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,eAAgB,CACf,KACA,+CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,2CAGF,SAASi3W,oBAAoBzwS,GAC5B,IAAI0wS,EAAoB3wU,EAAEvmC,EAAKwmE,GAC9B,OAAO5+D,QAAQC,UAAU1I,MAAK,KAC7B,IAAIu2B,EAAI,IAAIiD,MAAM,uBAAyB6tC,EAAM,KAEjD,MADA9wC,EAAE26M,KAAO,mBACH36M,CAAC,IAIT,IAAI/tB,EAAM3H,EAAIwmE,GAAMvqE,EAAK0L,EAAI,GAC7B,OAAOuvW,EAAoBxhV,EAAE/tB,EAAI,IAAIxI,MAAK,IAClC+3W,EAAoB/0W,EAAElG,EAAI,KAEnC,CACAg7W,oBAAoBrjW,KAAO,IAAOD,OAAOC,KAAK5T,GAC9Ci3W,oBAAoBh7W,GAAK,MACzB8pT,EAAO9uQ,QAAUggU,mB","sources":["./src/app/core/active-window/active-window.service.ts","./src/app/core/apiv3/endpoints/grids/apiv3-grid-paths.ts","./src/app/core/apiv3/endpoints/grids/apiv3-grids-paths.ts","./src/app/core/apiv3/cache/cachable-apiv3-resource.ts","./src/app/core/apiv3/endpoints/time-entries/apiv3-time-entry-paths.ts","./src/app/core/apiv3/cache/cachable-apiv3-collection.ts","./src/app/core/apiv3/endpoints/time-entries/time-entry-cache.service.ts","./src/app/core/apiv3/endpoints/time-entries/apiv3-time-entries-paths.ts","./src/app/core/apiv3/endpoints/capabilities/apiv3-capability-paths.ts","./src/app/core/apiv3/endpoints/capabilities/apiv3-capabilities-paths.ts","./src/app/core/apiv3/endpoints/projects/apiv3-available-projects-paths.ts","./src/app/core/apiv3/endpoints/memberships/apiv3-memberships-form.ts","./src/app/core/apiv3/endpoints/memberships/apiv3-memberships-paths.ts","./src/app/core/apiv3/endpoints/users/apiv3-user-preferences-paths.ts","./src/app/core/apiv3/endpoints/users/apiv3-user-paths.ts","./src/app/core/apiv3/endpoints/users/apiv3-users-paths.ts","./src/app/core/apiv3/endpoints/types/apiv3-type-paths.ts","./src/app/core/apiv3/endpoints/types/apiv3-types-paths.ts","./src/app/core/apiv3/endpoints/queries/apiv3-query-order.ts","./src/app/core/apiv3/endpoints/queries/apiv3-query-form.ts","./src/app/core/apiv3/endpoints/queries/apiv3-query-paths.ts","./src/app/core/apiv3/endpoints/queries/apiv3-queries-paths.ts","./src/app/core/apiv3/endpoints/relations/apiv3-relations-paths.ts","./src/app/core/apiv3/endpoints/work_packages/apiv3-work-package-form.ts","./src/app/core/apiv3/endpoints/work_packages/api-v3-work-package-paths.ts","./src/app/core/apiv3/endpoints/work_packages/work-package.cache.ts","./src/app/core/apiv3/endpoints/work_packages/api-v3-work-package-cached-subresource.ts","./src/app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths.ts","./src/app/core/apiv3/endpoints/versions/apiv3-version-paths.ts","./src/app/core/apiv3/endpoints/versions/apiv3-versions-paths.ts","./src/app/core/apiv3/endpoints/projects/apiv3-project-copy-paths.ts","./src/app/core/apiv3/endpoints/projects/apiv3-project-paths.ts","./src/app/core/apiv3/endpoints/projects/project.cache.ts","./src/app/core/apiv3/endpoints/projects/apiv3-projects-paths.ts","./src/app/core/apiv3/endpoints/statuses/apiv3-status-paths.ts","./src/app/core/apiv3/endpoints/statuses/apiv3-statuses-paths.ts","./src/app/core/apiv3/endpoints/roles/apiv3-role-paths.ts","./src/app/core/apiv3/endpoints/roles/apiv3-roles-paths.ts","./src/app/core/apiv3/endpoints/news/apiv3-news-paths.ts","./src/app/core/apiv3/endpoints/help_texts/apiv3-help-texts-paths.ts","./src/app/core/apiv3/endpoints/configuration/apiv3-configuration-path.ts","./src/app/features/boards/board/board.ts","./src/app/core/apiv3/virtual/apiv3-board-path.ts","./src/app/core/apiv3/virtual/apiv3-boards-paths.ts","./src/app/core/apiv3/endpoints/placeholder-users/apiv3-placeholder-user-paths.ts","./src/app/core/apiv3/endpoints/placeholder-users/apiv3-placeholder-users-paths.ts","./src/app/core/apiv3/endpoints/groups/apiv3-group-paths.ts","./src/app/core/apiv3/endpoints/groups/apiv3-groups-paths.ts","./src/app/core/apiv3/endpoints/notifications/apiv3-notification-paths.ts","./src/app/core/apiv3/endpoints/notifications/apiv3-notifications-paths.ts","./src/app/core/apiv3/endpoints/views/apiv3-views-paths.ts","./src/app/core/apiv3/endpoints/backups/apiv3-backups-path.ts","./src/app/core/apiv3/endpoints/days/api-v3-day-paths.ts","./src/app/core/apiv3/endpoints/days/api-v3-days-paths.ts","./src/app/core/apiv3/endpoints/storages/api-v3-storages-paths.ts","./src/app/core/apiv3/endpoints/project-storages/api-v3-project-storages-paths.ts","./src/app/core/apiv3/api-v3.service.ts","./src/app/core/apiv3/cache/state-cache.service.ts","./src/app/core/apiv3/endpoints/grids/apiv3-grid-form.ts","./src/app/core/apiv3/forms/apiv3-form-resource.ts","./src/app/core/apiv3/helpers/add-filters-to-path.ts","./src/app/core/apiv3/helpers/get-paginated-results.ts","./src/app/core/apiv3/paths/apiv3-list-resource.interface.ts","./src/app/core/apiv3/paths/apiv3-resource.ts","./src/app/core/apiv3/paths/path-resources.ts","./src/app/core/browser/browser-detector.service.ts","./src/app/core/browser/device.service.ts","./src/app/core/config/configuration.service.ts","./src/app/core/current-project/current-project.service.ts","./src/app/core/current-user/current-user.module.ts","./src/app/core/current-user/current-user.query.ts","./src/app/core/current-user/current-user.service.ts","./src/app/core/current-user/current-user.store.ts","./src/app/core/datetime/timezone.service.ts","./src/app/core/days/weekday.service.ts","./src/app/core/enterprise/banners.service.ts","./src/app/core/gon/gon.service.ts","./src/app/core/html/op-title.service.ts","./src/app/core/i18n/i18n.service.ts","./src/app/core/loading-indicator/loading-indicator.service.ts","./src/app/core/main-menu/main-menu-toggle.service.ts","./src/app/core/main-menu/submenu.service.ts","./src/app/core/model-auth/model-auth.service.ts","./src/app/core/navigation/navigation.service.ts","./src/app/core/navigation/url-params.service.ts","./src/app/core/path-helper/apiv3-paths.ts","./src/app/core/path-helper/path-helper.service.ts","./src/app/core/recent-items.service.ts","./src/app/core/routing/first-route-service.ts","./src/app/core/schemas/schema-cache.service.ts","./src/app/core/setup/globals/constants.const.ts","./src/app/core/setup/globals/global-helpers.ts","./src/app/core/setup/globals/global-listeners/action-menu.ts","./src/app/core/setup/globals/global-listeners/setup-server-response.ts","./src/app/core/setup/globals/onboarding/helpers.ts","./src/app/core/setup/globals/openproject.ts","./src/app/core/setup/init-vendors.ts","./src/app/core/state/actions/actions.service.ts","./src/app/core/state/attachments/attachments.store.ts","./src/app/core/state/attachments/attachments.service.ts","./src/app/core/state/capabilities/capabilities.store.ts","./src/app/core/state/capabilities/capabilities.service.ts","./src/app/core/state/days/day.store.ts","./src/app/core/state/days/day.service.ts","./src/app/core/state/days/weekday.store.ts","./src/app/core/state/days/weekday.service.ts","./src/app/core/state/effects/effect-handler.decorator.ts","./src/app/core/state/file-links/file-links.store.ts","./src/app/core/state/file-links/file-links.service.ts","./src/app/core/state/in-app-notifications/in-app-notification.model.ts","./src/app/core/state/in-app-notifications/in-app-notifications.actions.ts","./src/app/core/state/in-app-notifications/in-app-notifications.store.ts","./src/app/core/state/in-app-notifications/in-app-notifications.service.ts","./src/app/core/state/is-defined-entity.ts","./src/app/core/state/is-not-null.ts","./src/app/core/state/principals/principals.store.ts","./src/app/core/state/principals/principals.service.ts","./src/app/core/state/project-storages/project-storages.store.ts","./src/app/core/state/project-storages/project-storages.service.ts","./src/app/core/state/projects/projects.store.ts","./src/app/core/state/projects/projects.service.ts","./src/app/core/state/resource-store.service.ts","./src/app/core/state/resource-store.ts","./src/app/core/state/storage-files/storage-files.store.ts","./src/app/core/state/storage-files/storage-files.service.ts","./src/app/core/state/storages/storages.store.ts","./src/app/core/state/storages/storages.service.ts","./src/app/core/states/states.service.ts","./src/app/core/top-menu/top-menu.service.ts","./src/app/core/turbo/turbo-requests.service.ts","./src/app/core/upload/is-http-response.ts","./src/app/core/upload/upload.service.ts","./src/app/core/upload/wait-for-uploads-finished.ts","./src/app/features/bim/bcf/api/bcf-path-resources.ts","./src/app/features/bim/bcf/api/bcf-api-request.service.ts","./src/app/features/bim/bcf/api/projects/bcf-project.resource.ts","./src/app/features/bim/bcf/api/topics/bcf-topic.resource.ts","./src/app/features/bim/bcf/api/viewpoints/bcf-viewpoint-selection.paths.ts","./src/app/features/bim/bcf/api/viewpoints/bcf-viewpoint-visibility.paths.ts","./src/app/features/bim/bcf/api/viewpoints/bcf-viewpoint.paths.ts","./src/app/features/bim/bcf/api/viewpoints/bcf-viewpoint-collection.paths.ts","./src/app/features/bim/bcf/api/topics/bcf-topic.paths.ts","./src/app/features/bim/bcf/api/topics/bcf-viewpoint-collection.paths.ts","./src/app/features/bim/bcf/api/extensions/bcf-extension.resource.ts","./src/app/features/bim/bcf/api/extensions/bcf-extension.paths.ts","./src/app/features/bim/bcf/api/projects/bcf-project.paths.ts","./src/app/features/bim/bcf/api/bcf-api.service.ts","./src/app/features/bim/bcf/bcf-viewer-bridge/viewer-bridge.service.ts","./src/app/features/bim/bcf/helper/bcf-path-helper.service.ts","./src/app/features/bim/bcf/helper/viewpoints.service.ts","./src/app/features/bim/bcf/fields/display/bcf-thumbnail-field.module.ts","./src/app/features/bim/bcf/helper/bcf-detector.service.ts","./src/app/features/bim/bcf/api/bcf-authorization.service.ts","./src/app/features/bim/bcf/bcf-wp-attribute-group/bcf-wp-attribute-group.component.html","./src/app/features/bim/bcf/bcf-wp-attribute-group/bcf-wp-attribute-group.component.ts","./src/app/features/bim/bcf/bcf-wp-attribute-group/bcf-new-wp-attribute-group.component.ts","./src/app/features/bim/revit_add_in/revit-bridge.service.ts","./src/app/features/bim/bcf/openproject-bcf.module.ts","./src/app/features/bim/ifc_models/xeokit/xeokit-server.ts","./src/app/features/bim/ifc_models/ifc-viewer/ifc-viewer.service.ts","./src/app/features/bim/ifc_models/pages/viewer/bcf-view.service.ts","./src/app/features/bim/ifc_models/toolbar/import-export-bcf/bcf-export-button.component.ts","./src/app/features/bim/ifc_models/toolbar/import-export-bcf/bcf-import-button.component.ts","./src/app/features/bim/ifc_models/toolbar/import-export-bcf/refresh-button.component.ts","./src/app/features/boards/board/caused-updates/caused-updates.service.ts","./src/app/features/calendar/calendar.actions.ts","./src/app/features/calendar/op-calendar.service.ts","./src/app/features/calendar/op-work-packages-calendar.service.ts","./src/app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.html","./src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts","./src/app/features/calendar/calendar.routes.ts","./src/app/features/calendar/openproject-calendar.module.ts","./src/app/features/calendar/te-calendar/te-calendar.template.html","./src/app/features/calendar/te-calendar/te-calendar.component.ts","./src/app/features/calendar/wp-calendar/wp-calendar.template.html","./src/app/features/calendar/wp-calendar/wp-calendar.component.ts","./src/app/features/enterprise/enterprise-active-trial/ee-active-trial.base.ts","./src/app/features/enterprise/enterprise-active-trial/ee-active-trial.component.html","./src/app/features/enterprise/enterprise-active-trial/ee-active-trial.component.ts","./src/app/shared/helpers/i18n/localized-link.ts","./src/app/features/enterprise/enterprise-modal/enterprise-trial-form/ee-trial-form.component.html","./src/app/features/enterprise/enterprise-modal/enterprise-trial-form/ee-trial-form.component.ts","./src/app/features/enterprise/enterprise-modal/enterprise-trial.modal.html","./src/app/features/enterprise/enterprise-modal/enterprise-trial.modal.ts","./src/app/features/enterprise/enterprise-trial-waiting/ee-trial-waiting.component.html","./src/app/features/enterprise/enterprise-trial-waiting/ee-trial-waiting.component.ts","./src/app/features/enterprise/enterprise-trial.store.ts","./src/app/features/enterprise/enterprise-trial.service.ts","./src/app/features/enterprise/free-trial-button/free-trial-button.component.ts","./src/app/features/enterprise/free-trial-button/free-trial-button.component.html","./src/app/features/enterprise/share-upsale/share-upsale.component.ts","./src/app/features/enterprise/share-upsale/share-upsale.component.html","./src/app/features/hal/hal-link/hal-link.ts","./src/app/features/hal/helpers/lazy-accessor.ts","./src/app/features/hal/helpers/hal-resource-builder.ts","./src/app/features/hal/helpers/id-from-link.ts","./src/app/features/hal/helpers/is-new-resource.ts","./src/app/features/hal/helpers/is-persisted-resource.ts","./src/app/features/hal/http/openproject-header-interceptor.ts","./src/app/features/hal/services/hal-aware-error-handler.ts","./src/app/features/hal/resources/wiki-page-resource.ts","./src/app/features/hal/resources/meeting-content-resource.ts","./src/app/features/hal/resources/post-resource.ts","./src/app/features/hal/resources/time-entry-resource.ts","./src/app/features/hal/resources/news-resource.ts","./src/app/features/hal/resources/membership-resource.ts","./src/app/features/hal/resources/group-resource.ts","./src/app/features/hal/resources/root-resource.ts","./src/app/features/hal/resources/type-resource.ts","./src/app/features/hal/resources/query-operator-resource.ts","./src/app/features/hal/resources/form-resource.ts","./src/app/features/hal/resources/help-text-resource.ts","./src/app/features/hal/resources/schema-dependency-resource.ts","./src/app/features/hal/resources/query-filter-instance-schema-resource.ts","./src/app/features/hal/resources/wp-collection-resource.ts","./src/app/features/hal/resources/meeting-resource.ts","./src/app/features/hal/services/hal-resource.config.ts","./src/app/features/hal/openproject-hal.module.ts","./src/app/features/hal/resources/attachment-collection-resource.ts","./src/app/features/hal/resources/collection-resource.ts","./src/app/features/hal/resources/custom-action-resource.ts","./src/app/features/hal/resources/error-resource.ts","./src/app/features/hal/resources/grid-resource.ts","./src/app/features/hal/resources/grid-widget-resource.ts","./src/app/features/hal/resources/hal-resource.ts","./src/app/features/hal/resources/mixins/attachable-mixin.ts","./src/app/features/hal/resources/project-resource.ts","./src/app/features/hal/resources/query-filter-instance-resource.ts","./src/app/features/hal/resources/query-filter-resource.ts","./src/app/features/hal/resources/query-resource.ts","./src/app/features/hal/resources/query-sort-by-resource.ts","./src/app/features/hal/resources/relation-resource.ts","./src/app/features/hal/resources/role-resource.ts","./src/app/features/hal/resources/schema-resource.ts","./src/app/features/hal/resources/status-resource.ts","./src/app/features/hal/resources/user-resource.ts","./src/app/features/hal/resources/version-resource.ts","./src/app/features/hal/resources/work-package-resource.ts","./src/app/features/hal/schemas/hal-payload.helper.ts","./src/app/features/hal/schemas/schema-proxy.ts","./src/app/features/hal/schemas/work-package-schema-proxy.ts","./src/app/features/hal/services/hal-error.ts","./src/app/features/hal/services/hal-events.service.ts","./src/app/features/hal/services/hal-resource-notification.service.ts","./src/app/features/hal/services/hal-resource-sorting.service.ts","./src/app/features/hal/services/hal-resource.service.ts","./src/app/features/hal/services/url-params-encoder.ts","./src/app/features/homescreen/blocks/new-features.component.ts","./src/app/features/bim/bcf/bcf-constants.const.ts","./src/app/features/in-app-notifications/bell/state/ian-bell.query.ts","./src/app/features/in-app-notifications/bell/state/ian-bell.store.ts","./src/app/features/in-app-notifications/bell/state/ian-bell.service.ts","./src/app/features/in-app-notifications/center/state/ian-center.store.ts","./src/app/features/invite-user-modal/button/invite-user-button.component.html","./src/app/features/invite-user-modal/button/invite-user-button.component.ts","./src/app/features/invite-user-modal/button/invite-user-button.module.ts","./src/app/features/invite-user-modal/invite-user-modal.service.ts","./src/app/features/invite-user-modal/invite-user.component.ts","./src/app/features/invite-user-modal/invite-user.component.html","./src/app/features/job-status/job-status-modal.service.ts","./src/app/features/plugins/hook-service.ts","./src/app/features/projects/components/copy-project/copy-project.component.ts","./src/app/features/projects/components/copy-project/copy-project.component.html","./src/app/features/projects/components/new-project/new-project.component.ts","./src/app/features/projects/components/new-project/new-project.component.html","./src/app/features/projects/components/projects/projects.component.ts","./src/app/features/projects/components/projects/projects.component.html","./src/app/features/projects/openproject-projects.module.ts","./src/app/features/team-planner/team-planner/planner/background-events.ts","./src/app/features/work-packages/components/back-routing/back-button.component.ts","./src/app/features/work-packages/components/back-routing/back-button.component.html","./src/app/features/work-packages/components/back-routing/back-routing.service.ts","./src/app/features/work-packages/components/edit-actions-bar/wp-edit-actions-bar.component.ts","./src/app/features/work-packages/components/edit-actions-bar/wp-edit-actions-bar.html","./src/app/features/work-packages/components/filters/abstract-filter-date-time-value/abstract-filter-date-time-value.controller.ts","./src/app/features/work-packages/components/filters/filter-boolean-value/filter-boolean-value.component.ts","./src/app/features/work-packages/components/filters/filter-boolean-value/filter-boolean-value.component.html","./src/app/features/work-packages/components/filters/filter-container/filter-container.directive.html","./src/app/features/work-packages/components/filters/filter-container/filter-container.directive.ts","./src/app/features/work-packages/components/filters/filter-date-time-value/filter-date-time-value.component.html","./src/app/features/work-packages/components/filters/filter-date-time-value/filter-date-time-value.component.ts","./src/app/features/work-packages/components/filters/filter-date-times-value/filter-date-times-value.component.html","./src/app/features/work-packages/components/filters/filter-date-times-value/filter-date-times-value.component.ts","./src/app/features/work-packages/components/filters/filter-date-value/filter-date-value.component.ts","./src/app/features/work-packages/components/filters/filter-date-value/filter-date-value.component.html","./src/app/features/work-packages/components/filters/filter-dates-value/filter-dates-value.component.ts","./src/app/features/work-packages/components/filters/filter-dates-value/filter-dates-value.component.html","./src/app/features/work-packages/components/filters/filter-integer-value/filter-integer-value.component.ts","./src/app/features/work-packages/components/filters/filter-integer-value/filter-integer-value.component.html","./src/app/features/work-packages/components/filters/filter-project/filter-project.component.ts","./src/app/features/work-packages/components/filters/filter-project/filter-project.component.html","./src/app/features/work-packages/components/filters/filter-searchable-multiselect-value/filter-searchable-multiselect-value.component.ts","./src/app/features/work-packages/components/filters/filter-searchable-multiselect-value/filter-searchable-multiselect-value.component.html","./src/app/features/work-packages/components/filters/filter-string-value/filter-string-value.component.ts","./src/app/features/work-packages/components/filters/filter-string-value/filter-string-value.component.html","./src/app/features/work-packages/components/filters/filter-toggled-multiselect-value/filter-toggled-multiselect-value.component.ts","./src/app/features/work-packages/components/filters/filter-toggled-multiselect-value/filter-toggled-multiselect-value.component.html","./src/app/features/work-packages/components/filters/query-filter/query-filter.component.html","./src/app/features/work-packages/components/filters/query-filter/query-filter.component.ts","./src/app/features/work-packages/components/filters/query-filters/query-filters.component.html","./src/app/features/work-packages/components/filters/query-filters/query-filters.component.ts","./src/app/features/work-packages/components/filters/quick-filter-by-text-input/quick-filter-by-text-input.component.ts","./src/app/features/work-packages/components/filters/quick-filter-by-text-input/quick-filter-by-text-input.html","./src/app/features/work-packages/components/filters/wp-filters/wp-filters.service.ts","./src/app/features/work-packages/components/wp-baseline/baseline-helpers.ts","./src/app/features/work-packages/components/wp-baseline/baseline-legends/baseline-legends.component.html","./src/app/features/work-packages/components/wp-baseline/baseline-legends/baseline-legends.component.ts","./src/app/features/work-packages/components/wp-baseline/baseline-loading/baseline-loading.component.ts","./src/app/features/work-packages/components/wp-baseline/baseline-loading/baseline-loading.component.html","./src/app/features/work-packages/components/wp-baseline/baseline-modal/baseline-modal.component.ts","./src/app/features/work-packages/components/wp-baseline/baseline-modal/baseline-modal.component.html","./src/app/features/work-packages/components/wp-baseline/baseline/baseline.component.html","./src/app/features/work-packages/components/wp-baseline/baseline/baseline.component.ts","./src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.html","./src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts","./src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.html","./src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-buttons.module.ts","./src/app/features/work-packages/components/wp-buttons/wp-create-button/wp-create-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-create-button/wp-create-button.html","./src/app/features/work-packages/components/wp-buttons/wp-details-view-button/wp-details-view-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-button.template.html","./src/app/features/work-packages/components/wp-buttons/wp-filter-button/wp-filter-button.html","./src/app/features/work-packages/components/wp-buttons/wp-filter-button/wp-filter-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-fold-toggle-button/wp-fold-toggle-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-mark-notification-button/work-package-mark-notification-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-mark-notification-button/work-package-mark-notification-button.component.html","./src/app/features/work-packages/components/wp-buttons/wp-reminder-button/wp-reminder-button.html","./src/app/features/work-packages/components/wp-buttons/wp-reminder-button/wp-reminder-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-settings-button/wp-settings-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-settings-button/wp-settings-button.component.html","./src/app/features/work-packages/components/wp-buttons/wp-share-button/wp-share-button.html","./src/app/features/work-packages/components/wp-buttons/wp-share-button/wp-share-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-status-button/wp-status-button.html","./src/app/features/work-packages/components/wp-buttons/wp-status-button/wp-status-button.component.ts","./src/app/features/work-packages/components/wp-buttons/wp-timeline-toggle-button/wp-timeline-toggle-button.html","./src/app/features/work-packages/components/wp-buttons/wp-timeline-toggle-button/wp-timeline-toggle-button.component.ts","./src/app/features/work-packages/components/wp-buttons/zen-mode-toggle-button/zen-mode-toggle-button.component.ts","./src/app/features/work-packages/components/wp-card-view/event-handler/click-handler.ts","./src/app/features/work-packages/components/wp-card-view/event-handler/double-click-handler.ts","./src/app/features/work-packages/components/wp-card-view/event-handler/right-click-handler.ts","./src/app/features/work-packages/components/wp-card-view/event-handler/card-view-handler-registry.ts","./src/app/features/work-packages/components/wp-card-view/services/wp-card-drag-and-drop.service.ts","./src/app/features/work-packages/components/wp-card-view/services/wp-card-view.service.ts","./src/app/features/work-packages/components/wp-card-view/wp-card-view.component.html","./src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts","./src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html","./src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts","./src/app/features/work-packages/components/wp-new/wp-new-full-view.html","./src/app/features/work-packages/components/wp-copy/wp-copy-full-view.component.ts","./src/app/features/work-packages/components/wp-new/wp-new-split-view.html","./src/app/features/work-packages/components/wp-copy/wp-copy-split-view.component.ts","./src/app/features/work-packages/components/wp-copy/wp-copy.controller.ts","./src/app/features/work-packages/components/wp-custom-actions/date-action/custom-date-action-admin.html","./src/app/features/work-packages/components/wp-custom-actions/date-action/custom-date-action-admin.component.ts","./src/app/features/work-packages/components/wp-custom-actions/wp-custom-actions.component.html","./src/app/features/work-packages/components/wp-custom-actions/wp-custom-actions.component.ts","./src/app/features/work-packages/components/wp-custom-actions/wp-custom-actions/wp-custom-action.component.ts","./src/app/features/work-packages/components/wp-custom-actions/wp-custom-actions/wp-custom-action.component.html","./src/app/features/work-packages/components/wp-details/wp-details-toolbar.html","./src/app/features/work-packages/components/wp-details/wp-details-toolbar.component.ts","./src/app/features/work-packages/components/wp-edit-form/work-package-filter-values.ts","./src/app/features/work-packages/components/wp-edit/work-package-changeset.ts","./src/app/features/work-packages/components/wp-edit/wp-edit-field/wp-replacement-label.component.ts","./src/app/features/work-packages/components/wp-edit/wp-edit-field/wp-replacement-label.html","./src/app/features/work-packages/components/wp-fast-table/builders/cell-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions.ts","./src/app/features/work-packages/components/wp-fast-table/builders/internal-sort-columns.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/grouped/group-sums-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-classes.constants.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-rows-helpers.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/hierarchy/single-hierarchy-row-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/relation-cell-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/table-action-renderer.ts","./src/app/features/work-packages/components/wp-fast-table/builders/baseline/baseline-column-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/share-cell-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/rows/single-row-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/timeline/timeline-row-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/click-or-enter-handler.ts","./src/app/features/work-packages/components/wp-fast-table/helpers/wp-table-hierarchy-helpers.ts","./src/app/features/work-packages/components/wp-fast-table/helpers/wp-table-row-helpers.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/rows-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/grouped/group-header-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/highlighting/row-highlight-render-pass.ts","./src/app/features/work-packages/components/wp-fast-table/builders/drag-and-drop/drag-drop-handle-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/drag-and-drop/drag-drop-handle-render-pass.ts","./src/app/features/work-packages/components/wp-fast-table/builders/timeline/timeline-render-pass.ts","./src/app/features/work-packages/components/wp-fast-table/builders/relations/relation-row-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/relations/relations-render-pass.ts","./src/app/features/work-packages/components/wp-fast-table/builders/primary-render-pass.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/plain/plain-render-pass.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-render-pass.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-rows-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/hierarchy/hierarchy-render-pass.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/hierarchy/hierarchy-rows-builder.ts","./src/app/features/work-packages/components/wp-fast-table/builders/modes/plain/plain-rows-builder.ts","./src/app/features/work-packages/components/wp-edit-form/table-edit-form.ts","./src/app/features/work-packages/components/wp-fast-table/wp-table-editing.ts","./src/app/features/work-packages/components/wp-fast-table/wp-fast-table.ts","./src/app/features/work-packages/components/wp-grid/wp-grid.component.ts","./src/app/features/work-packages/components/wp-inline-create/inline-create-row-builder.ts","./src/app/features/work-packages/components/wp-inline-create/wp-inline-create.component.html","./src/app/features/work-packages/components/wp-inline-create/wp-inline-create.component.ts","./src/app/features/work-packages/components/wp-inline-create/wp-inline-create.service.ts","./src/app/features/work-packages/components/wp-list/wp-list-checksum.service.ts","./src/app/features/work-packages/components/wp-list/wp-list-invalid-query.service.ts","./src/app/features/work-packages/components/wp-list/wp-list.service.ts","./src/app/features/work-packages/components/wp-list/wp-query-view.service.ts","./src/app/features/work-packages/components/wp-list/wp-states-initialization.service.ts","./src/app/features/work-packages/components/wp-new/wp-create.component.ts","./src/app/features/work-packages/components/wp-new/wp-create.service.ts","./src/app/features/work-packages/components/wp-new/wp-new-full-view.component.ts","./src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts","./src/app/features/work-packages/components/wp-query/query-column.ts","./src/app/features/work-packages/components/wp-query/query-filters.service.ts","./src/app/features/work-packages/components/wp-query/query-param-listener.service.ts","./src/app/features/work-packages/components/wp-query/url-params-helper.ts","./src/app/features/work-packages/components/wp-relations/embedded/children/wp-children-inline-create.service.ts","./src/app/features/work-packages/components/wp-relations/embedded/inline/add-existing/wp-relation-inline-add-existing.component.ts","./src/app/features/work-packages/components/wp-relations/embedded/inline/add-existing/wp-relation-inline-add-existing.component.html","./src/app/features/work-packages/components/wp-relations/embedded/relations/wp-relation-inline-create.service.ts","./src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html","./src/app/features/work-packages/components/wp-relations/wp-relations-create/wp-relations-autocomplete/wp-relations-autocomplete.component.ts","./src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service.ts","./src/app/features/work-packages/components/wp-relations/wp-relations.component.ts","./src/app/features/work-packages/components/wp-relations/wp-relations.template.html","./src/app/features/work-packages/components/wp-relations/wp-relations.service.ts","./src/app/features/work-packages/components/wp-reminder-modal/reminder.actions.ts","./src/app/features/work-packages/components/wp-reminder-modal/wp-reminder.modal.ts","./src/app/features/work-packages/components/wp-reminder-modal/wp-reminder.modal.html","./src/app/features/work-packages/components/wp-share-modal/sharing.actions.ts","./src/app/features/work-packages/components/wp-share-modal/wp-share.modal.ts","./src/app/features/work-packages/components/wp-share-modal/wp-share.modal.html","./src/app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-base.controller.ts","./src/app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-tab.component.ts","./src/app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-tab.html","./src/app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service.ts","./src/app/features/work-packages/components/wp-single-view-tabs/files-tab/op-files-tab.component.html","./src/app/features/work-packages/components/wp-single-view-tabs/files-tab/op-files-tab.component.ts","./src/app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service.ts","./src/app/features/work-packages/components/wp-single-view-tabs/overview-tab/overview-tab.html","./src/app/features/work-packages/components/wp-single-view-tabs/overview-tab/overview-tab.component.ts","./src/app/features/work-packages/components/wp-single-view-tabs/relations-tab/relations-tab.html","./src/app/features/work-packages/components/wp-single-view-tabs/relations-tab/relations-tab.component.ts","./src/app/features/work-packages/components/wp-single-view-tabs/watchers-tab/watchers-tab.html","./src/app/features/work-packages/components/wp-single-view-tabs/watchers-tab/watchers-tab.component.ts","./src/app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watchers.service.ts","./src/app/features/work-packages/components/wp-single-view-tabs/wp-linked-resource-cache.service.ts","./src/app/features/work-packages/components/wp-single-view/wp-single-view.component.html","./src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts","./src/app/features/work-packages/components/wp-subject/wp-subject.html","./src/app/features/work-packages/components/wp-subject/wp-subject.component.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/columns-tab.component.html","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/columns-tab.component.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-tab.component.html","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-tab.component.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/filters-tab.component.html","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/filters-tab.component.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/highlighting-tab.component.html","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/highlighting-tab.component.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/sort-by-tab.component.html","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/sort-by-tab.component.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/timelines-tab.component.html","./src/app/features/work-packages/components/wp-table/configuration-modal/tabs/timelines-tab.component.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration-relation-selector.html","./src/app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration-relation-selector.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.modal.html","./src/app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.modal.ts","./src/app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.service.ts","./src/app/features/work-packages/components/wp-table/context-menu-helper/wp-context-menu-helper.service.ts","./src/app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-action.service.ts","./src/app/features/work-packages/components/wp-table/drag-and-drop/actions/hierarchy-drag-action.service.ts","./src/app/features/work-packages/components/wp-table/drag-and-drop/actions/group-by-drag-action.service.ts","./src/app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-actions-registry.service.ts","./src/app/features/work-packages/components/wp-table/embedded/embedded-tables-macro.component.ts","./src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table-entry.component.ts","./src/app/features/work-packages/components/wp-table/embedded/wp-embedded-base.component.ts","./src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.html","./src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts","./src/app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.component.ts","./src/app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.template.html","./src/app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.constants.ts","./src/app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.service.ts","./src/app/features/work-packages/components/wp-table/external-configuration/external-relation-query-configuration.component.ts","./src/app/features/work-packages/components/wp-table/external-configuration/external-relation-query-configuration.service.ts","./src/app/features/work-packages/components/wp-table/external-configuration/restricted-wp-table-configuration.service.ts","./src/app/features/work-packages/components/wp-table/sort-header/sort-header.directive.html","./src/app/features/work-packages/components/wp-table/sort-header/sort-header.directive.ts","./src/app/features/work-packages/components/wp-table/table-actions/table-action.ts","./src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts","./src/app/features/work-packages/components/wp-table/table-actions/actions/context-menu-table-action.ts","./src/app/features/work-packages/components/wp-table/table-actions/table-actions.service.ts","./src/app/shared/components/table-pagination/table-pagination.component.html","./src/app/features/work-packages/components/wp-table/table-pagination/wp-table-pagination.component.ts","./src/app/features/work-packages/components/wp-table/timeline/wp-timeline.ts","./src/app/features/work-packages/components/wp-table/wp-table-configuration.ts","./src/app/features/work-packages/components/wp-table/wp-table-scroll-sync.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/highlighting-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/drag-and-drop-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/group-fold-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/cell/edit-cell-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/cell/relations-cell-handler.ts","./src/app/shared/components/op-context-menu/wp-context-menu/wp-table-context-menu.directive.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/context-menu/context-menu-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/context-menu/context-menu-click-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/context-menu/context-menu-keyboard-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/context-menu/context-menu-rightclick-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/row/click-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/row/double-click-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/row/group-row-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/row/hierarchy-click-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/columns-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/hierarchy-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/relations-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/rows-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/selection-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/timeline-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/state/sharing-transformer.ts","./src/app/features/work-packages/components/wp-fast-table/handlers/table-handler-registry.ts","./src/app/features/work-packages/components/wp-table/wp-table-hover-sync.ts","./src/app/features/work-packages/components/wp-table/wp-table.component.html","./src/app/features/work-packages/components/wp-table/wp-table.component.ts","./src/app/features/work-packages/components/wp-tabs/components/wp-tab-wrapper/wp-tab-wrapper.html","./src/app/features/work-packages/components/wp-tabs/components/wp-tab-wrapper/wp-tab-wrapper.component.ts","./src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.html","./src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts","./src/app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-watchers-count.function.ts","./src/app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-relations-count.function.ts","./src/app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-notifications-count.function.ts","./src/app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-files-count.function.ts","./src/app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-tabs.service.ts","./src/app/features/work-packages/components/wp-timer-button/time-formatter.helper.ts","./src/app/features/work-packages/components/wp-timer-button/wp-timer-button.component.html","./src/app/features/work-packages/components/wp-timer-button/wp-timer-button.component.ts","./src/app/features/work-packages/components/wp-type-status/wp-type-status.html","./src/app/features/work-packages/components/wp-type-status/wp-type-status.component.ts","./src/app/features/work-packages/components/wp-watcher-button/wp-watcher-button.html","./src/app/features/work-packages/components/wp-watcher-button/wp-watcher-button.component.ts","./src/app/features/work-packages/directives/query-space/isolated-query-space.ts","./src/app/features/work-packages/directives/query-space/wp-isolated-query-space.directive.ts","./src/app/features/work-packages/components/wp-table/timeline/cells/wp-timeline-cell-labels.ts","./src/app/features/work-packages/components/wp-table/timeline/cells/timeline-cell-renderer.ts","./src/app/features/work-packages/components/wp-table/timeline/cells/timeline-milestone-cell-renderer.ts","./src/app/features/work-packages/components/wp-table/timeline/cells/wp-timeline-cell-mouse-handler.ts","./src/app/features/work-packages/components/wp-table/timeline/cells/wp-timeline-cell.ts","./src/app/features/work-packages/components/wp-table/timeline/cells/wp-timeline-cells-renderer.ts","./src/app/features/work-packages/components/wp-table/timeline/container/wp-timeline-container.directive.ts","./src/app/features/work-packages/components/wp-table/timeline/container/wp-timeline-container.html","./src/app/shared/components/op-context-menu/handlers/op-columns-context-menu.directive.ts","./src/app/features/work-packages/components/wp-table/timeline/header/wp-timeline-header.directive.ts","./src/app/features/work-packages/components/wp-table/timeline/header/wp-timeline-header.html","./src/app/features/work-packages/components/wp-table/timeline/global-elements/timeline-relation-element.ts","./src/app/features/work-packages/components/wp-table/timeline/global-elements/wp-timeline-relations.directive.ts","./src/app/features/work-packages/components/wp-table/timeline/global-elements/timeline-static-element.ts","./src/app/features/work-packages/components/wp-table/timeline/global-elements/wp-timeline.today-line.ts","./src/app/features/work-packages/components/wp-table/timeline/global-elements/wp-timeline-static-elements.directive.ts","./src/app/features/work-packages/components/wp-table/timeline/grid/wp-timeline-grid.directive.ts","./src/app/features/work-packages/components/wp-relations/wp-relation-row/wp-relation-row.template.html","./src/app/features/work-packages/components/wp-relations/wp-relation-row/wp-relation-row.component.ts","./src/app/features/work-packages/components/wp-relations/wp-relations-group/wp-relations-group.template.html","./src/app/features/work-packages/components/wp-relations/wp-relations-group/wp-relations-group.component.ts","./src/app/features/work-packages/components/wp-relations/wp-relations-create/wp-relation-create.template.html","./src/app/features/work-packages/components/wp-relations/wp-relations-create/wp-relations-create.component.ts","./src/app/features/work-packages/components/wp-table/table-actions/actions/unlink-table-action.ts","./src/app/features/work-packages/components/wp-relations/embedded/wp-relation-query.base.ts","./src/app/features/work-packages/components/wp-relations/embedded/wp-relation-query.html","./src/app/features/work-packages/components/wp-relations/embedded/children/wp-children-query.component.ts","./src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.template.html","./src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts","./src/app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watcher-entry.component.ts","./src/app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watcher-entry.component.html","./src/app/features/work-packages/components/wp-table/wp-table-sums-row/wp-table-sums-row.directive.ts","./src/app/features/work-packages/components/wp-relations/embedded/relations/wp-relation-query.component.ts","./src/app/features/work-packages/components/wp-table/config-menu/config-menu.component.ts","./src/app/features/work-packages/components/wp-table/config-menu/config-menu.template.html","./src/app/shared/components/op-context-menu/handlers/wp-view-dropdown-menu.directive.ts","./src/app/features/work-packages/components/wp-tabs/wp-tabs.module.ts","./src/app/features/work-packages/components/wp-form-group/wp-attribute-group.template.html","./src/app/features/work-packages/components/wp-form-group/wp-attribute-group.component.ts","./src/app/features/work-packages/helpers/time-entries/time-entry-changeset.ts","./src/app/shared/components/storages/openproject-storages.module.ts","./src/app/features/work-packages/openproject-work-packages.module.ts","./src/app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.ts","./src/app/features/work-packages/routing/split-view-routes.helper.ts","./src/app/features/work-packages/routing/split-view-routes.template.ts","./src/app/features/work-packages/routing/wp-edit-form/wp-edit-form-routing.service.ts","./src/app/features/work-packages/routing/wp-base/wp--base.component.ts","./src/app/features/work-packages/routing/wp-full-view/wp-full-view.html","./src/app/features/work-packages/routing/wp-full-view/wp-full-view.component.ts","./src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.html","./src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts","./src/app/features/work-packages/routing/wp-split-view/wp-split-view-entry.component.ts","./src/app/features/work-packages/routing/wp-split-view/wp-split-view.html","./src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts","./src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts","./src/app/features/work-packages/routing/wp-view-base/state/wp-single-view.store.ts","./src/app/features/work-packages/routing/wp-view-base/state/wp-single-view.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-additional-elements.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-base.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-collapsed-groups.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy-indentation.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-table-hierarchies.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-include-subprojects.service.ts","./src/app/shared/helpers/drag-and-drop/reorder-delta-builder.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-table-pagination.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service.ts","./src/app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service.ts","./src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts","./src/app/features/work-packages/routing/wp-view-base/work-packages-view.actions.ts","./src/app/features/work-packages/routing/wp-view-base/work-packages-view.base.ts","./src/app/features/work-packages/routing/wp-view-page/wp-view-page.component.ts","./src/app/features/work-packages/services/notifications/work-package-notification.service.ts","./src/app/features/work-packages/services/work-package.service.ts","./src/app/shared/components/attachments/attachment-list/attachment-list-item.component.html","./src/app/shared/components/attachments/attachment-list/attachment-list-item.component.ts","./src/app/shared/components/attachments/attachment-list/attachment-list.component.html","./src/app/shared/components/attachments/attachment-list/attachment-list.component.ts","./src/app/shared/components/attachments/attachments.component.html","./src/app/shared/components/attachments/attachments.component.ts","./src/app/shared/components/attachments/openproject-attachments.module.ts","./src/app/shared/components/attribute-help-texts/attribute-help-text.service.ts","./src/app/shared/components/attribute-help-texts/attribute-help-text.component.html","./src/app/shared/components/attribute-help-texts/attribute-help-text.component.ts","./src/app/shared/components/attribute-help-texts/help-text.modal.html","./src/app/shared/components/attribute-help-texts/attribute-help-text.modal.ts","./src/app/shared/components/attribute-help-texts/attribute-help-text.module.ts","./src/app/shared/components/attribute-help-texts/static-attribute-help-text.component.ts","./src/app/shared/components/attribute-help-texts/static-attribute-help-text.component.html","./src/app/shared/components/attribute-help-texts/static-attribute-help-text.modal.ts","./src/app/shared/components/attribute-help-texts/static-attribute-help-text.modal.html","./src/app/shared/components/autocompleter/autocompleter-footer-template/op-autocompleter-footer-template.directive.ts","./src/app/shared/components/autocompleter/create-autocompleter/create-autocompleter.component.html","./src/app/shared/components/autocompleter/create-autocompleter/create-autocompleter.component.ts","./src/app/shared/components/autocompleter/draggable-autocomplete/draggable-autocomplete.component.html","./src/app/shared/components/autocompleter/draggable-autocomplete/draggable-autocomplete.component.ts","./src/app/shared/components/autocompleter/op-autocompleter/autocompleter.helper.ts","./src/app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-header-template.directive.ts","./src/app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-label-template.directive.ts","./src/app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-option-template.directive.ts","./src/app/shared/components/autocompleter/op-autocompleter/services/op-autocompleter.service.ts","./src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.ts","./src/app/shared/components/autocompleter/openproject-autocompleter.module.ts","./src/app/shared/components/autocompleter/project-autocompleter/project-autocompleter-template.component.html","./src/app/shared/components/autocompleter/project-autocompleter/project-autocompleter-template.component.ts","./src/app/shared/components/autocompleter/project-autocompleter/flatten-project-tree.ts","./src/app/shared/components/autocompleter/project-autocompleter/insert-in-list.ts","./src/app/shared/components/autocompleter/project-autocompleter/recursive-sort.ts","./src/app/shared/components/autocompleter/project-autocompleter/project-autocompleter.component.ts","./src/app/shared/components/autocompleter/time-entries-work-package-autocompleter/time-entries-work-package-autocompleter-template.component.html","./src/app/shared/components/autocompleter/time-entries-work-package-autocompleter/time-entries-work-package-autocompleter-template.component.ts","./src/app/shared/components/autocompleter/time-entries-work-package-autocompleter/time-entries-work-package-autocompleter.component.ts","./src/app/shared/components/autocompleter/user-autocompleter/user-autocompleter-template.component.html","./src/app/shared/components/autocompleter/user-autocompleter/user-autocompleter-template.component.ts","./src/app/shared/components/autocompleter/user-autocompleter/user-autocompleter.component.ts","./src/app/shared/components/autocompleter/version-autocompleter/version-autocompleter.component.ts","./src/app/shared/components/autocompleter/work-package-autocompleter/wp-autocompleter.component.ts","./src/app/shared/components/collapsible-section/collapsible-section.component.ts","./src/app/shared/components/collapsible-section/collapsible-section.html","./src/app/shared/components/colors/colors-autocompleter.component.ts","./src/app/shared/components/colors/colors.service.ts","./src/app/shared/components/copy-to-clipboard/copy-to-clipboard.component.ts","./src/app/shared/components/copy-to-clipboard/copy-to-clipboard.service.ts","./src/app/shared/components/dataset-inputs.ts","./src/app/shared/components/date/op-date-time.component.ts","./src/app/shared/components/datepicker/basic-range-date-picker/basic-range-date-picker.component.html","./src/app/shared/components/datepicker/basic-range-date-picker/basic-range-date-picker.component.ts","./src/app/shared/components/datepicker/basic-single-date-picker/basic-single-date-picker.component.html","./src/app/shared/components/datepicker/basic-single-date-picker/basic-single-date-picker.component.ts","./src/app/shared/components/datepicker/datepicker.ts","./src/app/shared/components/datepicker/helpers/date-modal.helpers.ts","./src/app/shared/components/datepicker/modal-single-date-picker/modal-single-date-picker.component.html","./src/app/shared/components/datepicker/modal-single-date-picker/modal-single-date-picker.component.ts","./src/app/shared/components/datepicker/sheet/date-picker-sheet.component.ts","./src/app/shared/components/datepicker/sheet/date-picker-sheet.component.html","./src/app/shared/components/datepicker/wp-date-picker-modal/wp-date-picker-instance.component.ts","./src/app/shared/components/datepicker/wp-date-picker-modal/wp-date-picker.modal.html","./src/app/shared/components/datepicker/wp-date-picker-modal/wp-date-picker.modal.ts","./src/app/core/forms/forms.service.ts","./src/app/shared/components/dynamic-forms/services/dynamic-fields/dynamic-fields.service.ts","./src/app/shared/helpers/url-helpers.ts","./src/app/shared/components/dynamic-forms/services/dynamic-form/dynamic-form.service.ts","./src/app/shared/components/dynamic-forms/components/dynamic-form/dynamic-form.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-form/dynamic-form.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/text-input/text-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/text-input/text-input.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/integer-input/integer-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/integer-input/integer-input.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/select-input/select-input.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/select-input/select-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/project-input/project-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/project-input/project-input.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/select-project-status-input/select-project-status-input.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/select-project-status-input/select-project-status-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/boolean-input/boolean-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/boolean-input/boolean-input.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/formattable-textarea-input/components/formattable-control/formattable-control.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/formattable-textarea-input/components/formattable-control/formattable-control.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/formattable-textarea-input/formattable-textarea-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/formattable-textarea-input/formattable-textarea-input.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-field-wrapper/dynamic-field-wrapper.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-field-wrapper/dynamic-field-wrapper.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/date-input/date-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/date-input/date-input.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-field-group-wrapper/dynamic-field-group-wrapper.component.html","./src/app/shared/components/dynamic-forms/components/dynamic-field-group-wrapper/dynamic-field-group-wrapper.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/formattable-textarea-input/components/formattable-control/formattable-control.module.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/user-input/user-input.component.ts","./src/app/shared/components/dynamic-forms/components/dynamic-inputs/user-input/user-input.component.html","./src/app/shared/components/dynamic-forms/dynamic-forms.module.ts","./src/app/shared/components/editable-toolbar-title/editable-toolbar-title.html","./src/app/shared/components/editable-toolbar-title/editable-toolbar-title.component.ts","./src/app/shared/components/editor/components/ckeditor-augmented-textarea/ckeditor-augmented-textarea.html","./src/app/shared/components/editor/components/ckeditor-augmented-textarea/ckeditor-augmented-textarea.component.ts","./src/app/shared/components/editor/components/ckeditor/ckeditor-preview.service.ts","./src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts","./src/app/shared/components/editor/components/ckeditor/op-ckeditor.html","./src/app/shared/components/editor/components/ckeditor/op-ckeditor.component.ts","./src/app/shared/components/editor/openproject-editor.module.ts","./src/app/shared/components/enterprise-banner/enterprise-banner.component.html","./src/app/shared/components/enterprise-banner/enterprise-banner.component.ts","./src/app/shared/components/enterprise-page/enterprise-page.component.html","./src/app/shared/components/enterprise-page/enterprise-page.component.ts","./src/app/shared/components/fields/changeset/changeset.ts","./src/app/shared/components/fields/changeset/resource-changeset.ts","./src/app/shared/components/fields/display/display-field-renderer.ts","./src/app/shared/components/fields/display/display-field.component.ts","./src/app/shared/components/fields/display/display-field.module.ts","./src/app/shared/components/fields/display/field-types/multiple-lines-custom-options-display-field.module.ts","./src/app/shared/components/fields/display/field-types/multiple-lines-user-display-field.module.ts","./src/app/shared/components/fields/display/field-types/progress-text-display-field.module.ts","./src/app/shared/components/fields/display/field-types/render-hierarchy-item.ts","./src/app/shared/components/fields/display/field-types/hierarchy-item-display-field.module.ts","./src/app/shared/components/fields/display/field-types/multiple-lines-hierarchy-item-display-field.module.ts","./src/app/shared/components/fields/display/display-field.service.ts","./src/app/shared/components/fields/display/field-types/combined-date-display.field.ts","./src/app/shared/components/fields/display/field-types/date-display-field.module.ts","./src/app/shared/components/fields/display/field-types/highlightable-display-field.module.ts","./src/app/shared/components/fields/display/field-types/resource-display-field.module.ts","./src/app/shared/components/fields/display/field-types/resources-display-field.module.ts","./src/app/shared/components/fields/display/info/op-exclusion-info.component.ts","./src/app/shared/components/fields/display/info/op-exclusion-info.component.html","./src/app/shared/components/fields/edit/edit-field.component.ts","./src/app/shared/components/fields/edit/edit-field.service.ts","./src/app/shared/components/fields/edit/edit-form/edit-form-routing.service.ts","./src/app/shared/components/fields/edit/services/global-edit-form-changes-tracker/global-edit-form-changes-tracker.service.ts","./src/app/shared/components/fields/edit/edit-form/edit-form.component.ts","./src/app/shared/components/fields/edit/edit-form/edit-form.ts","./src/app/shared/components/fields/edit/editing-portal/edit-field-handler.ts","./src/app/shared/components/fields/edit/editing-portal/edit-form-portal.component.html","./src/app/shared/components/fields/edit/editing-portal/edit-form-portal.component.ts","./src/app/shared/components/fields/edit/editing-portal/edit-form-portal.injector.ts","./src/app/shared/components/fields/edit/field-handler/hal-resource-edit-field-handler.ts","./src/app/shared/components/fields/edit/editing-portal/editing-portal-service.ts","./src/app/shared/components/fields/edit/field-controls/edit-field-controls.component.ts","./src/app/shared/components/fields/edit/field-controls/edit-field-controls.component.html","./src/app/shared/components/fields/edit/field-controls/edit-field-controls.module.ts","./src/app/shared/components/fields/edit/field-types/formattable-edit-field/formattable-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/formattable-edit-field/formattable-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/formattable-edit-field/formattable-edit-field.module.ts","./src/app/shared/components/fields/edit/field/editable-attribute-field.component.ts","./src/app/shared/helpers/selection-helpers.ts","./src/app/shared/components/fields/edit/field/editable-attribute-field.component.html","./src/app/shared/components/fields/edit/modal-with-turbo-content/modal-with-turbo-content.directive.ts","./src/app/shared/components/fields/edit/services/hal-resource-editing.service.ts","./src/app/shared/components/fields/field.base.ts","./src/app/shared/components/fields/field.service.ts","./src/app/shared/components/fields/helpers/project-status-helper.ts","./src/app/shared/components/fields/macros/attribute-label-macro.html","./src/app/shared/components/fields/macros/attribute-label-macro.component.ts","./src/app/shared/helpers/string-helpers.ts","./src/app/shared/components/fields/macros/attribute-model-loader.service.ts","./src/app/shared/components/fields/macros/attribute-value-macro.html","./src/app/shared/components/fields/macros/attribute-value-macro.component.ts","./src/app/shared/components/fields/macros/work-package-quickinfo-macro.html","./src/app/shared/components/fields/macros/work-package-quickinfo-macro.component.ts","./src/app/shared/components/fields/edit/field-types/text-edit-field/text-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/text-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/integer-edit-field/integer-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/select-edit-field/select-autocompleter-register.service.ts","./src/app/shared/components/fields/edit/field-types/select-edit-field/select-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/select-edit-field/select-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/multi-select-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/multi-select-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/float-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/boolean-edit-field/boolean-edit-field.component.ts","./src/app/shared/helpers/rxjs/debounced-input-switchmap.ts","./src/app/shared/components/fields/edit/field-types/work-package-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/work-package-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/date-edit-field/date-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/project-status-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/project-status-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/plain-formattable-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/date-picker-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/combined-date-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/combined-date-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/project-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/project-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/hours-duration-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/user-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/user-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/days-duration-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/days-duration-edit-field.component.html","./src/app/shared/components/fields/edit/field-types/progress-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/progress-popover-edit-field.component.ts","./src/app/shared/components/fields/edit/field-types/progress-popover-edit-field.component.html","./src/app/shared/components/fields/edit/edit-field.initializer.ts","./src/app/shared/components/fields/display/field-types/boolean-display-field.module.ts","./src/app/shared/components/fields/display/field-types/hierarchy-query-link-helper.service.ts","./src/app/shared/components/fields/display/field-types/excluded-icon-helper.service.ts","./src/app/shared/components/fields/display/field-types/compound-progress-display-field.module.ts","./src/app/shared/components/fields/display/field-types/datetime-display-field.module.ts","./src/app/shared/components/fields/display/field-types/days-duration-display-field.module.ts","./src/app/shared/components/fields/display/field-types/work-display-field.module.ts","./src/app/shared/components/fields/display/field-types/float-display-field.module.ts","./src/app/core/expression/expression.service.ts","./src/app/shared/components/fields/display/field-types/formattable-display-field.module.ts","./src/app/shared/components/fields/display/field-types/highlighted-resource-display-field.module.ts","./src/app/shared/components/fields/display/field-types/id-display-field.module.ts","./src/app/shared/components/fields/display/field-types/integer-display-field.module.ts","./src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts","./src/app/shared/components/fields/display/field-types/linked-work-package-display-field.module.ts","./src/app/shared/components/fields/display/field-types/multiple-user-display-field.module.ts","./src/app/shared/components/fields/display/field-types/plain-formattable-display-field.module.ts","./src/app/shared/components/fields/display/field-types/project-status-display-field.module.ts","./src/app/shared/components/fields/display/field-types/text-display-field.module.ts","./src/app/shared/components/fields/display/field-types/type-display-field.module.ts","./src/app/shared/components/fields/display/field-types/user-display-field.module.ts","./src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts","./src/app/shared/components/fields/display/field-types/wp-spent-time-display-field.module.ts","./src/app/shared/components/fields/display/field-types/link-display-field.module.ts","./src/app/shared/components/fields/display/display-field.initializer.ts","./src/app/shared/components/fields/edit/field-types/boolean-edit-field/boolean-edit-field.module.ts","./src/app/shared/components/fields/edit/field-types/integer-edit-field/integer-edit-field.module.ts","./src/app/shared/components/fields/edit/field-types/text-edit-field/text-edit-field.module.ts","./src/app/shared/components/fields/edit/field-types/date-edit-field/date-edit-field.module.ts","./src/app/shared/components/fields/edit/field-types/select-edit-field/select-edit-field.module.ts","./src/app/shared/components/fields/openproject-fields.module.ts","./src/app/shared/components/grids/widgets/widget-changeset.ts","./src/app/shared/components/grids/widgets/abstract-widget.component.ts","./src/app/shared/components/hide-section/add-section-dropdown/add-section-dropdown.component.html","./src/app/shared/components/hide-section/add-section-dropdown/add-section-dropdown.component.ts","./src/app/shared/components/hide-section/hide-section-link/hide-section-link.component.ts","./src/app/shared/components/hide-section/hide-section-link/hide-section-link.component.html","./src/app/shared/components/hide-section/hide-section.service.ts","./src/app/shared/components/icon/icon.component.ts","./src/app/shared/components/icon/icon.module.ts","./src/app/shared/components/modal/modal-overlay.component.html","./src/app/shared/components/modal/custom-modal-overlay.component.ts","./src/app/shared/components/modal/modal-overlay.component.ts","./src/app/shared/components/modal/modal-wrapper-augment.service.ts","./src/app/shared/components/modal/modal.component.ts","./src/app/shared/components/modal/modal-banner/modal-banner.component.html","./src/app/shared/components/modal/modal-banner/modal-banner.component.ts","./src/app/shared/components/modal/modal.module.ts","./src/app/shared/components/modal/modal.service.ts","./src/app/shared/components/modal/portal-outlet-target.enum.ts","./src/app/shared/components/modals/confirm-dialog/confirm-dialog.modal.html","./src/app/shared/components/modals/confirm-dialog/confirm-dialog.modal.ts","./src/app/shared/components/modals/confirm-dialog/confirm-dialog.service.ts","./src/app/shared/components/modals/editor/editor-macros.service.ts","./src/app/shared/components/modals/editor/macro-child-pages-modal/child-pages-macro.modal.ts","./src/app/shared/components/modals/editor/macro-child-pages-modal/child-pages-macro.modal.html","./src/app/shared/components/modals/editor/macro-code-block-modal/code-block-macro.modal.ts","./src/app/shared/components/modals/editor/macro-code-block-modal/code-block-macro.modal.html","./src/app/shared/components/modals/editor/macro-wiki-include-page-modal/wiki-include-page-macro.modal.ts","./src/app/shared/components/modals/editor/macro-wiki-include-page-modal/wiki-include-page-macro.modal.html","./src/app/shared/components/modals/editor/macro-wp-button-modal/wp-button-macro.modal.html","./src/app/shared/components/modals/editor/macro-wp-button-modal/wp-button-macro.modal.ts","./src/app/shared/components/modals/get-ical-url-modal/query-get-ical-url.modal.html","./src/app/shared/components/modals/get-ical-url-modal/query-get-ical-url.modal.ts","./src/app/shared/components/modals/modal-wrapper/dynamic-content.modal.ts","./src/app/shared/components/modals/modal-wrapper/dynamic-content.modal.html","./src/app/shared/components/modals/request-for-confirmation/password-confirmation.modal.ts","./src/app/shared/components/modals/request-for-confirmation/password-confirmation.modal.html","./src/app/shared/components/modals/save-modal/save-query.modal.ts","./src/app/shared/components/modals/save-modal/save-query.modal.html","./src/app/shared/components/modals/share-modal/query-sharing-form.component.ts","./src/app/shared/components/modals/share-modal/query-sharing-form.html","./src/app/shared/components/modals/share-modal/query-sharing.modal.ts","./src/app/shared/components/modals/share-modal/query-sharing.modal.html","./src/app/shared/components/modals/wp-destroy-modal/wp-destroy.modal.html","./src/app/shared/components/modals/wp-destroy-modal/wp-destroy.modal.ts","./src/app/shared/components/no-results/no-results.component.html","./src/app/shared/components/no-results/no-results.component.ts","./src/app/shared/components/op-content-loader/op-content-loader.component.ts","./src/app/shared/components/op-content-loader/op-content-loader.component.html","./src/app/shared/components/op-content-loader/op-principal-loading-skeleton/op-principal-loading-skeleton.component.ts","./src/app/shared/components/op-content-loader/op-principal-loading-skeleton/op-principal-loading-skeleton.component.html","./src/app/shared/components/op-content-loader/op-wp-loading-skeleton/op-wp-loading-skeleton.component.ts","./src/app/shared/components/op-content-loader/op-wp-loading-skeleton/op-wp-loading-skeleton.component.html","./src/app/shared/components/op-content-loader/openproject-content-loader.module.ts","./src/app/shared/components/op-context-menu/handlers/op-context-menu-trigger.directive.ts","./src/app/shared/components/op-context-menu/handlers/op-settings-dropdown-menu.directive.ts","./src/app/shared/components/op-context-menu/handlers/op-types-context-menu.directive.ts","./src/app/shared/components/op-context-menu/handlers/wp-create-settings-menu.directive.ts","./src/app/shared/components/op-context-menu/handlers/wp-group-toggle-dropdown-menu.directive.ts","./src/app/shared/components/op-context-menu/handlers/wp-status-dropdown-menu.directive.ts","./src/app/shared/components/op-context-menu/icon-triggered-context-menu/icon-triggered-context-menu.component.ts","./src/app/shared/components/op-context-menu/icon-triggered-context-menu/icon-triggered-context-menu.component.html","./src/app/shared/components/op-context-menu/op-context-menu-handler.ts","./src/app/shared/components/op-context-menu/op-context-menu.html","./src/app/shared/components/op-context-menu/op-context-menu.component.ts","./src/app/shared/components/op-context-menu/op-context-menu.service.ts","./src/app/shared/components/op-context-menu/op-context-menu.types.ts","./src/app/features/work-packages/services/work-package-authorization.service.ts","./src/app/shared/components/op-context-menu/wp-context-menu/wp-single-context-menu.ts","./src/app/shared/components/op-context-menu/wp-context-menu/wp-static-context-menu-actions.ts","./src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts","./src/app/shared/components/op-non-working-days-list/op-non-working-days-list.component.html","./src/app/shared/components/op-non-working-days-list/op-non-working-days-list.component.ts","./src/app/shared/components/op-view-select/op-static-queries.service.ts","./src/app/shared/components/option-list/option-list.component.html","./src/app/shared/components/option-list/option-list.component.ts","./src/app/shared/components/persistent-toggle/persistent-toggle.component.ts","./src/app/shared/components/principal/principal-helper.ts","./src/app/shared/components/principal/principal-renderer.service.ts","./src/app/shared/components/principal/principal-rendering.module.ts","./src/app/shared/components/principal/principal.component.ts","./src/app/shared/components/project-include/insert-in-list.ts","./src/app/shared/components/project-include/list/project-include-list.component.html","./src/app/shared/components/project-include/list/project-include-list.component.ts","./src/app/shared/components/project-include/calculate-positions.ts","./src/app/shared/components/project-include/project-include.component.html","./src/app/shared/components/project-include/project-include.component.ts","./src/app/shared/components/project-include/recursive-sort.ts","./src/app/shared/components/remote-field-updater/remote-field-updater.component.ts","./src/app/shared/components/resizer/resizer.component.html","./src/app/shared/components/resizer/resizer.component.ts","./src/app/shared/components/resizer/resizer/wp-resizer.component.ts","./src/app/shared/components/searchable-project-list/loading-project-list.component.ts","./src/app/shared/components/searchable-project-list/loading-project-list.component.html","./src/app/shared/components/searchable-project-list/searchable-project-list.service.ts","./src/app/shared/components/storages/file-link-list-item/floating-action.ts","./src/app/shared/components/storages/file-link-list-item/file-link-list-item.html","./src/app/shared/components/storages/file-link-list-item/file-link-list-item.component.ts","./src/app/spot/components/breadcrumbs/breadcrumbs-content.ts","./src/app/shared/components/storages/file-picker-base-modal/file-picker-base-modal.component.ts","./src/app/shared/components/storages/file-picker-modal/file-picker-modal.component.html","./src/app/shared/components/storages/file-picker-modal/file-picker-modal.component.ts","./src/app/shared/components/storages/functions/storages.functions.ts","./src/app/shared/components/storages/icons.mapping.ts","./src/app/shared/components/storages/loading-file-list/loading-file-list.component.ts","./src/app/shared/components/storages/loading-file-list/loading-file-list.html","./src/app/shared/components/storages/location-picker-modal/location-picker-modal.component.html","./src/app/shared/components/storages/location-picker-modal/location-picker-modal.component.ts","./src/app/shared/components/storages/pipes/sort-files.pipe.ts","./src/app/shared/components/storages/storage-file-list-item/storage-file-list-item.html","./src/app/shared/components/storages/storage-file-list-item/storage-file-list-item.component.ts","./src/app/shared/components/storages/storage-file-list-item/storage-file-list-item.ts","./src/app/shared/components/storages/storage-information/storage-information.html","./src/app/shared/components/storages/storage-information/storage-information.component.ts","./src/app/shared/components/storages/storage-information/storage-information-box.ts","./src/app/shared/components/storages/storage-information/storage-information.service.ts","./src/app/shared/components/storages/storage-login-button/storage-login-button.component.ts","./src/app/shared/components/storages/storage-login-button/storage-login-button.component.html","./src/app/core/upload/convert-http-event.ts","./src/app/shared/components/storages/upload/nextcloud-upload.strategy.ts","./src/app/shared/components/storages/upload/one-drive-upload.strategy.ts","./src/app/shared/components/storages/upload/storage-upload.service.ts","./src/app/shared/components/storages/storage/storage.component.html","./src/app/shared/components/storages/storage/storage.component.ts","./src/app/core/state/compare-id.ts","./src/app/shared/components/storages/storages-constants.const.ts","./src/app/shared/components/storages/upload-conflict-modal/upload-conflict-modal.component.ts","./src/app/shared/components/storages/upload-conflict-modal/upload-conflict-modal.component.html","./src/app/shared/components/table-pagination/pagination-instance.ts","./src/app/shared/components/table-pagination/pagination-service.ts","./src/app/shared/components/table-pagination/table-pagination.component.ts","./src/app/shared/components/tabs/scrollable-tabs/scrollable-tabs.component.html","./src/app/shared/components/tabs/content-tabs/content-tabs.component.ts","./src/app/shared/components/tabs/openproject-tabs.module.ts","./src/app/shared/components/tabs/scrollable-tabs/scrollable-tabs.component.ts","./src/app/shared/components/tabs/tab-badges/tab-count.component.html","./src/app/shared/components/tabs/tab-badges/tab-count.component.ts","./src/app/shared/components/time_entries/shared/modal/base.modal.html","./src/app/shared/components/time_entries/create/create.modal.ts","./src/app/shared/components/time_entries/create/create.service.ts","./src/app/shared/components/time_entries/edit/edit.modal.ts","./src/app/shared/components/time_entries/edit/edit.service.ts","./src/app/shared/components/time_entries/edit/trigger-actions-entry.component.ts","./src/app/shared/components/time_entries/form/form.component.html","./src/app/shared/components/time_entries/form/form.component.ts","./src/app/shared/components/time_entries/openproject-time-entries.module.ts","./src/app/shared/components/time_entries/services/time-entry-timer.service.ts","./src/app/shared/components/time_entries/shared/modal/base.modal.ts","./src/app/shared/components/time_entries/timer/stop-existing-timer-modal.component.ts","./src/app/shared/components/time_entries/timer/stop-existing-timer-modal.component.html","./src/app/shared/components/time_entries/timer/timer-account-menu.component.html","./src/app/shared/components/time_entries/timer/timer-account-menu.component.ts","./src/app/shared/components/toaster/toast.component.html","./src/app/shared/components/toaster/toast.component.ts","./src/app/shared/components/toaster/toast.service.ts","./src/app/shared/components/toaster/toasts-container.component.ts","./src/app/shared/components/toaster/upload-progress.component.ts","./src/app/shared/components/user-link/user-link.component.ts","./src/app/shared/components/work-packages/alternative-search.service.ts","./src/app/shared/directives/focus/autofocus.directive.ts","./src/app/shared/directives/focus/contain-helpers.ts","./src/app/shared/directives/focus/focus-helper.ts","./src/app/shared/directives/focus/focus-within.directive.ts","./src/app/shared/directives/focus/focus.module.ts","./src/app/shared/directives/search-highlight.directive.ts","./src/app/shared/helpers/angular/inject-field.decorator.ts","./src/app/shared/helpers/angular/tracking-functions.ts","./src/app/shared/helpers/angular/until-destroyed.mixin.ts","./src/app/shared/helpers/api-v3/api-v3-filter-builder.ts","./src/app/shared/helpers/debug_output.ts","./src/app/shared/helpers/dom/set-window-cursor.helper.ts","./src/app/shared/helpers/drag-and-drop/dom-autoscroll.service.ts","./src/app/shared/helpers/drag-and-drop/drag-and-drop.helpers.ts","./src/app/shared/helpers/drag-and-drop/drag-and-drop.service.ts","./src/app/shared/helpers/focus-helpers.ts","./src/app/shared/helpers/images/path-helper.ts","./src/app/shared/helpers/keyCodes.enum.ts","./src/app/shared/helpers/link-handling/link-handling.ts","./src/app/shared/helpers/op-icon-builder.ts","./src/app/shared/helpers/random-string.ts","./src/app/shared/helpers/rxjs/debounced-event-emitter.ts","./src/app/shared/helpers/set-click-position/set-click-position.ts","./src/app/shared/helpers/videos/path-helper.ts","./src/app/core/state/views/views.store.ts","./src/app/core/state/views/views.service.ts","./src/app/shared/components/datepicker/basic-datepicker.module.ts","./src/app/shared/components/datepicker/datepicker.module.ts","./src/app/shared/shared.module.ts","./src/app/spot/components/breadcrumbs/breadcrumbs.component.html","./src/app/spot/components/breadcrumbs/breadcrumbs.component.ts","./src/app/spot/components/checkbox/checkbox.component.ts","./src/app/spot/components/checkbox/checkbox.component.html","./src/app/spot/components/drop-modal/drop-modal-portal.component.ts","./src/app/spot/components/drop-modal/drop-modal-teleportation.service.ts","./src/app/spot/components/drop-modal/drop-modal.component.html","./src/app/spot/components/drop-modal/drop-modal.component.ts","./src/app/spot/components/form-field/form-binding.directive.ts","./src/app/spot/components/form-field/form-field.component.html","./src/app/spot/components/form-field/form-field.component.ts","./src/app/spot/components/selector-field/selector-field.component.html","./src/app/spot/components/selector-field/selector-field.component.ts","./src/app/spot/components/switch/switch.component.ts","./src/app/spot/components/switch/switch.component.html","./src/app/spot/components/text-field/text-field.component.html","./src/app/spot/components/text-field/text-field.component.ts","./src/app/spot/components/toggle/toggle.component.html","./src/app/spot/components/toggle/toggle.component.ts","./src/app/spot/components/tooltip/tooltip.component.html","./src/app/spot/components/tooltip/tooltip.component.ts","./src/app/spot/drop-alignment-options.ts","./src/app/spot/components/filter-chip/filter-chip.component.html","./src/app/spot/components/filter-chip/filter-chip.component.ts","./src/app/spot/spot.module.ts","./src/environments/environment.prod.ts","./src/app/shared/directives/op-drag-scroll/op-drag-scroll.directive.ts","./src/app/shared/components/grids/areas/grid-area.ts","./src/app/shared/components/grids/areas/grid-widget-area.ts","./src/app/shared/components/grids/areas/grid-gap.ts","./src/app/shared/components/grids/grid/area.service.ts","./src/app/shared/components/grids/grid/remove-widget.service.ts","./src/app/shared/components/grids/widgets/menu/widget-abstract-menu.component.ts","./src/app/shared/components/grids/widgets/menu/widget-menu.component.html","./src/app/shared/components/grids/widgets/menu/widget-menu.component.ts","./src/app/shared/components/grids/widgets/header/header.component.ts","./src/app/shared/components/grids/widgets/header/header.component.html","./src/app/shared/components/grids/widgets/wp-calendar/wp-calendar.component.html","./src/app/shared/components/grids/widgets/wp-calendar/wp-calendar.component.ts","./src/app/shared/components/grids/widgets/time-entries/current-user/configuration-modal/services/configuration-modal/configuration-modal.service.ts","./src/app/shared/components/grids/widgets/time-entries/current-user/configuration-modal/configuration.modal.html","./src/app/shared/components/grids/widgets/time-entries/current-user/configuration-modal/configuration.modal.ts","./src/app/shared/components/grids/widgets/time-entries/current-user/time-entries-current-user-menu.component.ts","./src/app/shared/components/grids/widgets/time-entries/current-user/time-entries-current-user.component.ts","./src/app/shared/components/grids/widgets/time-entries/current-user/time-entries-current-user.component.html","./src/app/shared/components/grids/widgets/widgets.service.ts","./src/app/shared/components/grids/grid/move.service.ts","./src/app/shared/components/grids/grid/drag-and-drop.service.ts","./src/app/shared/components/grids/grid/resize.service.ts","./src/app/shared/components/grids/widgets/add/add.modal.html","./src/app/shared/components/grids/widgets/add/add.modal.ts","./src/app/shared/components/grids/grid/add-widget.service.ts","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/settings-tab.component.ts","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/settings-tab.component.html","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/filters-tab.component.ts","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/filters-tab.component.html","./src/app/shared/components/work-package-graphs/configuration/wp-graph-configuration.ts","./src/app/shared/components/work-package-graphs/configuration/wp-graph-configuration.service.ts","./src/app/shared/components/work-package-graphs/embedded/wp-embedded-graph.html","./src/app/shared/components/work-package-graphs/embedded/wp-embedded-graph.component.ts","./src/app/shared/components/work-package-graphs/configuration-modal/wp-graph-configuration.modal.ts","./src/app/shared/components/grids/widgets/menu/wp-set-menu.component.ts","./src/app/shared/components/grids/widgets/wp-graph/wp-graph-menu.component.ts","./src/app/shared/components/grids/widgets/wp-graph/wp-graph.component.ts","./src/app/shared/components/grids/widgets/wp-graph/wp-graph.component.html","./src/app/shared/components/grids/grid/grid.component.html","./src/app/shared/components/grids/grid/grid.component.ts","./src/app/shared/components/grids/widgets/documents/documents.component.html","./src/app/shared/components/grids/widgets/documents/documents.component.ts","./src/app/shared/components/grids/widgets/news/news.component.html","./src/app/shared/components/grids/widgets/news/news.component.ts","./src/app/shared/components/grids/widgets/wp-table/wp-table-menu.component.ts","./src/app/shared/components/grids/widgets/wp-table/wp-table.component.html","./src/app/shared/components/grids/widgets/wp-table/wp-table.component.ts","./src/app/shared/components/grids/grid/initialization.service.ts","./src/app/shared/components/grids/widgets/wp-table/wp-table-qs.component.ts","./src/app/shared/components/grids/widgets/wp-table/wp-table-qs.component.html","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/abstract-query-spaced-tab.component.ts","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/filters-tab-inner.component.html","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/filters-tab-inner.component.ts","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/settings-tab-inner.component.html","./src/app/shared/components/work-package-graphs/configuration-modal/tabs/settings-tab-inner.component.ts","./src/app/shared/components/work-package-graphs/overview/wp-overview-graph.template.html","./src/app/shared/components/work-package-graphs/overview/wp-overview-graph.component.ts","./src/app/shared/components/work-package-graphs/openproject-work-package-graphs.module.ts","./src/app/shared/components/grids/widgets/project-description/project-description.component.html","./src/app/shared/components/grids/widgets/project-description/project-description.component.ts","./src/app/shared/components/grids/widgets/wp-overview/wp-overview.component.ts","./src/app/shared/components/grids/widgets/wp-overview/wp-overview.component.html","./src/app/shared/components/grids/widgets/custom-text/custom-text-edit-field.service.ts","./src/app/shared/components/grids/widgets/custom-text/custom-text.component.html","./src/app/shared/components/grids/widgets/custom-text/custom-text.component.ts","./src/app/shared/components/grids/widgets/time-entries/list/time-entries-list.component.ts","./src/app/shared/components/grids/widgets/time-entries/list/time-entries-list.component.html","./src/app/shared/components/grids/widgets/time-entries/project/time-entries-project.component.ts","./src/app/shared/components/grids/widgets/subprojects/subprojects.component.html","./src/app/shared/components/grids/widgets/subprojects/subprojects.component.ts","./src/app/shared/components/grids/widgets/members/members.component.html","./src/app/shared/components/grids/widgets/members/members.component.ts","./src/app/shared/components/grids/widgets/project-status/project-status.component.html","./src/app/shared/components/grids/widgets/project-status/project-status.component.ts","./src/app/shared/components/grids/widgets/project-favorites/widget-project-favorites.component.html","./src/app/shared/components/grids/widgets/project-favorites/widget-project-favorites.component.ts","./src/app/shared/components/grids/openproject-grids.module.ts","./src/app/core/routing/base/application-base.component.ts","./src/app/features/team-planner/team-planner/team-planner.lazy-routes.ts","./src/app/core/routing/openproject.routes.ts","./src/app/features/calendar/calendar.lazy-routes.ts","./src/app/shared/helpers/routing/mobile-guard.helper.ts","./src/app/core/routing/openproject-router.module.ts","./src/app/features/work-packages/routing/work-packages-routes.ts","./src/app/features/work-packages/routing/work-packages-gantt-routes.ts","./src/app/features/work-packages/openproject-work-package-routes.module.ts","./src/app/core/global_search/services/global-search.service.ts","./src/app/core/global_search/input/global-search-input.component.html","./src/app/core/global_search/input/global-search-input.component.ts","./src/app/core/global_search/global-search-work-packages.component.ts","./src/app/core/global_search/tabs/global-search-tabs.component.ts","./src/app/core/global_search/title/global-search-title.component.ts","./src/app/core/global_search/title/global-search-title.component.html","./src/app/core/global_search/openproject-global-search.module.ts","./src/app/shared/components/grids/grid/page/grid-page.component.ts","./src/app/shared/components/grids/grid/page/grid-page.component.html","./src/app/features/dashboards/dashboard/dashboard.component.ts","./src/app/features/dashboards/openproject-dashboards.module.ts","./src/app/features/overview/overview.component.ts","./src/app/features/overview/openproject-overview.module.ts","./src/app/features/my-page/my-page.component.ts","./src/app/features/my-page/openproject-my-page.module.ts","./src/app/shared/directives/a11y/keyboard-shortcut.service.ts","./src/app/shared/components/autocompleter/members-autocompleter/members-autocompleter.component.ts","./src/app/shared/components/autocompleter/members-autocompleter/members.module.ts","./src/app/core/augmenting/openproject-augmenting.module.ts","./src/app/features/invite-user-modal/invite-user-modal-augment.service.ts","./src/app/features/invite-user-modal/project-selection/project-selection.component.html","./src/app/features/invite-user-modal/project-selection/project-selection.component.ts","./src/app/features/invite-user-modal/project-selection/project-allowed.validator.ts","./src/app/features/invite-user-modal/principal/principal-search.component.html","./src/app/features/invite-user-modal/principal/principal-search.component.ts","./src/app/features/invite-user-modal/role/role-search.component.html","./src/app/features/invite-user-modal/role/role-search.component.ts","./src/app/features/invite-user-modal/principal/principal.component.html","./src/app/features/invite-user-modal/principal/principal.component.ts","./src/app/features/invite-user-modal/summary/summary.component.html","./src/app/features/invite-user-modal/summary/summary.component.ts","./src/app/features/invite-user-modal/success/success.component.ts","./src/app/features/invite-user-modal/success/success.component.html","./src/app/features/invite-user-modal/invite-user-modal.module.ts","./src/app/features/bim/revit_add_in/revit-add-in-settings-button.service.ts","./src/app/features/enterprise/enterprise-base.component.html","./src/app/features/enterprise/enterprise-base.component.ts","./src/app/features/enterprise/enterprise-active-trial/ee-active-saved-trial.component.ts","./src/app/features/enterprise/openproject-enterprise.module.ts","./src/app/core/main-menu/main-menu-toggle.component.ts","./src/app/core/main-menu/main-menu-toggle.component.html","./src/app/shared/components/header-project-select/list/header-project-select-list.component.html","./src/app/shared/components/header-project-select/list/header-project-select-list.component.ts","./src/app/shared/components/header-project-select/header-project-select.component.html","./src/app/shared/components/header-project-select/header-project-select.component.ts","./src/app/shared/components/resizer/resizer/main-menu-resizer.component.ts","./src/app/features/admin/types/type-banner.service.ts","./src/app/features/admin/types/group-edit-in-place.html","./src/app/features/admin/types/group-edit-in-place.component.ts","./src/app/features/admin/types/attribute-group.component.html","./src/app/features/admin/types/attribute-group.component.ts","./src/app/features/admin/types/type-form-configuration.html","./src/app/features/admin/types/type-form-configuration.component.ts","./src/app/features/admin/types/query-group.component.ts","./src/app/features/admin/types/query-group.component.html","./src/app/features/admin/editable-query-props/editable-query-props.component.ts","./src/app/features/admin/editable-query-props/editable-query-props.component.html","./src/app/features/admin/openproject-admin.module.ts","./src/app/core/html-sanitize/html-sanitize.service.ts","./src/app/features/plugins/plugin-context.ts","./src/app/features/plugins/openproject-plugins.module.ts","./src/app/features/plugins/linked/budgets/augment/planned-costs-form.ts","./src/app/features/plugins/linked/budgets/hal/resources/budget-resource.ts","./src/app/features/plugins/linked/budgets/main.ts","./src/app/features/plugins/linked/costs/wp-display/costs-by-type-display-field.module.ts","./src/app/features/plugins/linked/costs/wp-display/currency-display-field.module.ts","./src/app/features/plugins/linked/costs/main.ts","./src/app/shared/helpers/images/resizer.ts","./src/app/features/plugins/linked/openproject-avatars/avatar-upload.service.ts","./src/app/features/plugins/linked/openproject-avatars/avatar-upload-form/avatar-upload-form.html","./src/app/features/plugins/linked/openproject-avatars/avatar-upload-form/avatar-upload-form.component.ts","./src/app/shared/helpers/angular/custom-elements.helper.ts","./src/app/features/plugins/linked/openproject-avatars/main.ts","./src/app/features/plugins/linked/openproject-documents/hal/resources/document-resource.ts","./src/app/features/plugins/linked/openproject-documents/main.ts","./src/app/features/plugins/linked/openproject-github_integration/git-actions/git-actions.service.ts","./src/app/features/plugins/linked/openproject-github_integration/git-actions-menu/git-actions-menu.template.html","./src/app/features/plugins/linked/openproject-github_integration/git-actions-menu/git-actions-menu.component.ts","./src/app/features/plugins/linked/openproject-github_integration/git-actions-menu/git-actions-menu.directive.ts","./src/app/features/plugins/linked/openproject-github_integration/tab-header/tab-header.component.ts","./src/app/features/plugins/linked/openproject-github_integration/tab-header/tab-header.template.html","./src/app/features/plugins/linked/openproject-github_integration/state/github-pull-request.store.ts","./src/app/features/plugins/linked/openproject-github_integration/state/github-pull-request.service.ts","./src/app/features/plugins/linked/openproject-github_integration/pull-request/pull-request-state.component.ts","./src/app/features/plugins/linked/openproject-github_integration/pull-request/pull-request-state.component.html","./src/app/features/plugins/linked/openproject-github_integration/pull-request/pull-request.component.html","./src/app/features/plugins/linked/openproject-github_integration/pull-request/pull-request.component.ts","./src/app/features/plugins/linked/openproject-github_integration/tab-prs/tab-prs.component.html","./src/app/features/plugins/linked/openproject-github_integration/tab-prs/tab-prs.component.ts","./src/app/features/plugins/linked/openproject-github_integration/github-tab/github-tab.component.ts","./src/app/features/plugins/linked/openproject-github_integration/github-tab/github-tab.template.html","./src/app/features/plugins/linked/openproject-github_integration/pull-request/pull-request-macro.component.html","./src/app/features/plugins/linked/openproject-github_integration/pull-request/pull-request-macro.component.ts","./src/app/features/plugins/linked/openproject-github_integration/main.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/git-actions/git-actions.service.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/git-actions-menu/git-actions-menu.template.html","./src/app/features/plugins/linked/openproject-gitlab_integration/git-actions-menu/git-actions-menu.component.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/git-actions-menu/git-actions-menu.directive.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-header-mr/tab-header-mr.component.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-header-mr/tab-header-mr.template.html","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-header-issue/tab-header-issue.component.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-header-issue/tab-header-issue.template.html","./src/app/features/plugins/linked/openproject-gitlab_integration/merge-request/merge-request.component.html","./src/app/features/plugins/linked/openproject-gitlab_integration/merge-request/merge-request.component.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-mrs/tab-mrs.template.html","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-mrs/tab-mrs.component.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/issue/issue.component.html","./src/app/features/plugins/linked/openproject-gitlab_integration/issue/issue.component.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-issue/tab-issue.template.html","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-issue/tab-issue.component.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/gitlab-tab/gitlab-tab.component.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/gitlab-tab/gitlab-tab.template.html","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-mrs/wp-gitlab-mrs.service.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/tab-issue/wp-gitlab-issue.service.ts","./src/app/features/plugins/linked/openproject-gitlab_integration/main.ts","./src/app/features/plugins/linked/openproject-meeting/meetings-tab/meetings-tab.component.ts","./src/app/features/plugins/linked/openproject-meeting/meetings-tab/meetings-tab.template.html","./src/app/features/plugins/linked/openproject-meeting/main.ts","./src/app/features/plugins/linked-plugins.module.ts","./src/app/features/in-app-notifications/bell/in-app-notification-bell.component.html","./src/app/features/in-app-notifications/bell/in-app-notification-bell.component.ts","./src/app/features/in-app-notifications/center/state/ian-center.service.ts","./src/app/features/in-app-notifications/entry/status/in-app-notification-status.component.ts","./src/app/features/in-app-notifications/entry/status/in-app-notification-status.component.html","./src/app/features/in-app-notifications/entry/relative-time/in-app-notification-relative-time.component.ts","./src/app/features/in-app-notifications/entry/relative-time/in-app-notification-relative-time.component.html","./src/app/features/in-app-notifications/entry/actors-line/in-app-notification-actors-line.component.html","./src/app/features/in-app-notifications/entry/actors-line/in-app-notification-actors-line.component.ts","./src/app/features/in-app-notifications/entry/date-alert/in-app-notification-date-alert.component.ts","./src/app/features/in-app-notifications/entry/date-alert/in-app-notification-date-alert.component.html","./src/app/features/in-app-notifications/entry/reminder-alert/in-app-notification-reminder-alert.component.html","./src/app/features/in-app-notifications/entry/reminder-alert/in-app-notification-reminder-alert.component.ts","./src/app/features/in-app-notifications/entry/in-app-notification-entry.component.html","./src/app/features/in-app-notifications/entry/in-app-notification-entry.component.ts","./src/app/features/in-app-notifications/center/in-app-notification-center.component.html","./src/app/features/in-app-notifications/center/in-app-notification-center.component.ts","./src/app/features/in-app-notifications/date-alerts-upsale/ian-date-alerts-upsale.component.ts","./src/app/features/in-app-notifications/date-alerts-upsale/ian-date-alerts-upsale.component.html","./src/app/features/in-app-notifications/in-app-notifications.module.ts","./src/app/core/backup/op-backup.service.ts","./src/app/core/state/openproject-state.module.ts","./src/app/core/upload/fog-upload.service.ts","./src/app/core/upload/local-upload.service.ts","./src/app/features/job-status/openproject-job-status.module.ts","./src/app/features/user-preferences/state/user-preferences.store.ts","./src/app/features/user-preferences/state/user-preferences.query.ts","./src/app/features/user-preferences/state/user-preferences.service.ts","./src/app/features/user-preferences/notifications-settings/overdue-reminder-available-times.ts","./src/app/features/user-preferences/notifications-settings/inline-create/notification-setting-inline-create.component.html","./src/app/features/user-preferences/notifications-settings/inline-create/notification-setting-inline-create.component.ts","./src/app/features/user-preferences/notifications-settings/table/notification-settings-table.component.html","./src/app/features/user-preferences/notifications-settings/table/notification-settings-table.component.ts","./src/app/features/user-preferences/notifications-settings/page/notifications-settings-page.component.html","./src/app/features/user-preferences/notifications-settings/page/notifications-settings-page.component.ts","./src/app/features/user-preferences/reminder-settings/email-alerts/email-alerts-settings.component.html","./src/app/features/user-preferences/reminder-settings/email-alerts/email-alerts-settings.component.ts","./src/app/features/user-preferences/reminder-settings/reminder-time/reminder-settings-daily-time.component.html","./src/app/features/user-preferences/reminder-settings/reminder-time/reminder-settings-daily-time.component.ts","./src/app/features/user-preferences/reminder-settings/immediate-reminders/immediate-reminder-settings.component.ts","./src/app/features/user-preferences/reminder-settings/immediate-reminders/immediate-reminder-settings.component.html","./src/app/features/user-preferences/reminder-settings/pause-reminders/pause-reminders.component.html","./src/app/features/user-preferences/reminder-settings/pause-reminders/pause-reminders.component.ts","./src/app/features/user-preferences/reminder-settings/workdays/workdays-settings.component.html","./src/app/features/user-preferences/reminder-settings/workdays/workdays-settings.component.ts","./src/app/features/user-preferences/reminder-settings/page/reminder-settings-page.component.html","./src/app/features/user-preferences/reminder-settings/page/reminder-settings-page.component.ts","./src/app/shared/helpers/rxjs/filterWith.ts","./src/app/features/user-preferences/user-preferences.module.ts","./src/app/core/setup/globals/components/admin/backup.component.ts","./src/app/core/setup/globals/components/admin/backup.component.html","./src/app/app.module.ts","./src/app/core/errors/error-reporter-base.ts","./src/app/core/errors/appsignal/appsignal-reporter.ts","./src/app/core/errors/local/local-reporter.ts","./src/app/core/setup/globals/global-listeners/link-hijacking.ts","./src/main.ts","./src/app/core/errors/configure-reporter.ts","./src/app/core/setup/init-locale.ts","./src/app/core/setup/globals/global-listeners.ts","./src/app/core/main-menu/main-menu-navigation.service.ts","./src/stimulus/controllers/dynamic/menus/main.controller.ts","./src/stimulus/controllers/dynamic/projects/zen-mode.controller.ts","./src/stimulus/controllers/dynamic/work-packages/date-picker/preview.controller.ts","./src/stimulus/controllers/dynamic/work-packages/dialog/preview.controller.ts","./src/stimulus/controllers/form-preview.controller.ts","./src/stimulus/controllers/op-application.controller.ts","./src/stimulus/controllers/disable-when-checked.controller.ts","./src/stimulus/controllers/print.controller.ts","./src/stimulus/controllers/refresh-on-form-changes.controller.ts","./src/stimulus/controllers/async-dialog.controller.ts","./src/stimulus/controllers/poll-for-changes.controller.ts","./src/stimulus/controllers/table-highlighting.controller.ts","./src/stimulus/controllers/show-when-checked.controller.ts","./src/stimulus/controllers/show-when-value-selected.controller.ts","./src/stimulus/controllers/flash.controller.ts","./src/stimulus/controllers/password-confirmation-dialog.controller.ts","./src/stimulus/controllers/keep-scroll-position.controller.ts","./src/stimulus/controllers/pattern-input.controller.ts","./src/stimulus/controllers/hover-card-trigger.controller.ts","./src/stimulus/setup.ts","./src/turbo/helpers.ts","./src/app/core/setup/globals/onboarding/onboarding_tour_trigger.ts","./src/app/core/setup/globals/global-listeners/toggable-fieldset.ts","./src/turbo/constants.ts","./src/turbo/setup.ts","./src/turbo/turbo-event-listeners.ts","./src/turbo/turbo-global-listeners.ts","./src/app/core/setup/globals/global-listeners/top-menu-scroll.ts","./src/app/core/setup/globals/global-listeners/settings.ts","./src/app/core/setup/globals/global-listeners/color-preview.ts","./src/app/core/setup/globals/global-listeners/danger-zone-validation.ts","./src/app/core/setup/globals/global-listeners/fix-fragment-anchors.ts","./src/turbo/dialog-stream-action.ts","./src/turbo/flash-stream-action.ts","./src/turbo/input-caption-stream-action.ts","./src/turbo/turbo-navigation-patch.ts","./src/app/shared/helpers/chronic_duration.js","./node_modules/codemirror/mode/ lazy ^\\.\\/.*\\/.*\\.js$ namespace object","./node_modules/dragula/dist/ sync","./node_modules/moment/locale/ sync ^\\.\\/.*$","./src/locales/ lazy ^\\.\\/.*\\.json$ namespace object","./src/stimulus/controllers/dynamic/ lazy ^\\.\\/.*\\.controller$ namespace object","./src/vendor/ckeditor/translations/ lazy ^\\.\\/.*\\.js$ namespace object"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\n\n@Injectable({ providedIn: 'root' })\nexport class ActiveWindowService {\n private activeState$ = new BehaviorSubject(true);\n\n constructor(@Inject(DOCUMENT) document:Document) {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState) {\n debugLog(`Browser window has visibility state changed to ${document.visibilityState}`);\n this.activeState$.next(document.visibilityState === 'visible');\n }\n });\n }\n\n /**\n * Returns whether the browser window/tab is active\n */\n public get isActive():boolean {\n return this.activeState$.value;\n }\n\n /**\n * Observable for notifying when visibility changes\n */\n public get active$():Observable {\n return this.activeState$.asObservable();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { GridResource } from 'core-app/features/hal/resources/grid-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { Observable } from 'rxjs';\nimport { ApiV3GridForm } from 'core-app/core/apiv3/endpoints/grids/apiv3-grid-form';\n\nexport class ApiV3GridPaths extends ApiV3GettableResource {\n // Static paths\n readonly form = this.subResource('form', ApiV3GridForm);\n\n /**\n * Update a grid resource or payload\n * @param resource\n * @param schema\n */\n public patch(resource:GridResource|Object, schema:SchemaResource|null = null):Observable {\n const payload = this.form.extractPayload(resource, schema);\n\n return this\n .halResourceService\n .patch(this.path, payload);\n }\n\n /**\n * Delete a grid resource\n */\n public delete():Observable {\n return this\n .halResourceService\n .delete(this.path);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3GridPaths } from 'core-app/core/apiv3/endpoints/grids/apiv3-grid-paths';\nimport { GridResource } from 'core-app/features/hal/resources/grid-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { ApiV3GridForm } from 'core-app/core/apiv3/endpoints/grids/apiv3-grid-form';\nimport { Observable } from 'rxjs';\nimport {\n ApiV3ListParameters,\n ApiV3ListResourceInterface,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\nexport class ApiV3GridsPaths\n extends ApiV3ResourceCollection\n implements ApiV3ListResourceInterface {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'grids', ApiV3GridPaths);\n }\n\n readonly form = this.subResource('form', ApiV3GridForm);\n\n /**\n * Load a list of grids with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params));\n }\n\n /**\n * Create a new GridResource\n *\n * @param resource\n * @param schema\n */\n public post(resource:GridResource, schema:SchemaResource|null = null):Observable {\n return this\n .halResourceService\n .post(\n this.path,\n this.form.extractPayload(resource, schema),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { HasId, StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { concat, Observable, of } from 'rxjs';\nimport {\n mapTo, shareReplay, switchMap, take, tap,\n} from 'rxjs/operators';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport abstract class ApiV3Resource\n extends ApiV3GettableResource {\n @InjectField() states:States;\n\n @InjectField() schemaCache:SchemaCacheService;\n\n readonly cache = this.createCache();\n\n /**\n * Require the value to be loaded either when forced or the value is stale\n * according to the cache interval specified for this service.\n *\n * Returns an observable to the values stream of the state.\n *\n * @param force Load the value anyway.\n */\n public requireAndStream(force = false):Observable {\n const id = this.id.toString();\n\n // Refresh when stale or being forced\n if (this.cache.stale(id) || force) {\n const observable = this\n .load()\n .pipe(\n take(1),\n shareReplay(1),\n );\n\n this.cache.clearAndLoad(\n id,\n observable,\n );\n\n // Return concat of the loading observable\n // for error handling and the like,\n // but then continue with the streamed cache\n return concat(\n observable,\n this.cache.state(id).values$(),\n );\n }\n\n return this.cache.state(id).values$();\n }\n\n /**\n * Observe the values of this resource,\n * but do not request it actively.\n */\n public observe():Observable {\n return this\n .cache\n .observe(this.id.toString());\n }\n\n /**\n * Returns a (potentially cached) observable.\n *\n * Only observes one value.\n *\n * Accesses or modifies the global store for this resource.\n */\n get():Observable {\n return this\n .requireAndStream(false)\n .pipe(\n take(1),\n );\n }\n\n /**\n * Returns a freshly loaded value but ensuring the value\n * is also updated in the cache.\n *\n * Only observes one value.\n *\n * Accesses or modifies the global store for this resource.\n */\n refresh():Promise {\n return this\n .requireAndStream(true)\n .pipe(\n take(1),\n )\n // Use a promise to ensure this fires\n // even if caller isn't subscribing.\n .toPromise() as Promise;\n }\n\n /**\n * Perform a request to the HalResourceService with the current path\n */\n protected load():Observable {\n return this\n .halResourceService\n .get(this.path)\n .pipe(\n switchMap((resource) => {\n if (resource.$links.schema) {\n return this.schemaCache\n .requireAndStream(resource.$links.schema.href)\n .pipe(\n take(1),\n mapTo(resource),\n );\n }\n return of(resource);\n }),\n ) as any; // T does not extend HalResource for virtual endpoints such as board, thus we need to cast here\n }\n\n /**\n * Update a single resource\n */\n protected touch(resource:T):void {\n this.cache.updateFor(resource);\n }\n\n /**\n * Inserts a collection response to cache as an rxjs tap function\n */\n protected cacheResponse():(source:Observable) => Observable {\n return (source$:Observable) => source$.pipe(\n tap(\n (resource:T) => this.touch(resource),\n ),\n );\n }\n\n /**\n * Creates the cache state instance\n */\n protected abstract createCache():StateCacheService;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { ApiV3TimeEntriesPaths } from 'core-app/core/apiv3/endpoints/time-entries/apiv3-time-entries-paths';\nimport { HalPayloadHelper } from 'core-app/features/hal/schemas/hal-payload.helper';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class ApiV3TimeEntryPaths extends ApiV3Resource {\n // Static paths\n readonly form = this.subResource('form', ApiV3FormResource);\n\n /**\n * Update the time entry with the given payload.\n *\n * In case of updating from the hal resource, a schema resource is needed\n * to identify the writable attributes.\n * @param payload\n * @param schema\n */\n public patch(payload:Object, schema:SchemaResource|null = null):Observable {\n return this\n .halResourceService\n .patch(this.path, this.extractPayload(payload, schema))\n .pipe(\n tap((resource) => this.touch(resource)),\n );\n }\n\n /**\n * Delete the time entry under the current path\n */\n public delete():Observable {\n return this\n .halResourceService\n .delete(this.path)\n .pipe(\n tap(() => this.cache.clearSome(this.id.toString())),\n );\n }\n\n protected createCache():StateCacheService {\n return (this.parent as ApiV3TimeEntriesPaths).cache;\n }\n\n /**\n * Extract payload from the given request with schema.\n * This will ensure we will only write writable attributes and so on.\n *\n * @param resource\n * @param schema\n */\n protected extractPayload(resource:HalResource|Object|null, schema:SchemaResource|null = null) {\n if (resource instanceof HalResource && schema) {\n return HalPayloadHelper.extractPayloadFromSchema(resource, schema);\n } if (!(resource instanceof HalResource)) {\n return resource;\n }\n return {};\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource, ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { HasId, StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { Observable } from 'rxjs';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { tap } from 'rxjs/operators';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport abstract class ApiV3Collection<\n T extends HasId = HalResource,\n V extends ApiV3GettableResource = ApiV3GettableResource,\n X extends StateCacheService = StateCacheService,\n >\n extends ApiV3ResourceCollection {\n @InjectField() states:States;\n\n readonly cache:X = this.createCache();\n\n /**\n * Observe all value changes of the cache\n */\n public observeAll():Observable {\n return this.cache.observeAll();\n }\n\n /**\n * Inserts a collection or single response to cache as an rxjs tap function\n */\n protected cacheResponse():(source:Observable) => Observable {\n return (source$) => source$.pipe(\n tap(\n (response:R) => {\n if (response instanceof CollectionResource) {\n response.elements?.forEach(this.touch.bind(this));\n } else if (response instanceof HalResource) {\n this.touch(response as any);\n }\n },\n ),\n );\n }\n\n /**\n * Update a single resource\n */\n protected touch(resource:T):void {\n this.cache.updateFor(resource);\n }\n\n /**\n * Creates the cache state instance\n */\n protected abstract createCache():X;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { Injector } from '@angular/core';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { MultiInputState } from '@openproject/reactivestates';\n\nexport class TimeEntryCacheService extends StateCacheService {\n @InjectField() readonly states:States;\n\n @InjectField() readonly schemaCache:SchemaCacheService;\n\n constructor(readonly injector:Injector, state:MultiInputState) {\n super(state);\n }\n\n updateValue(id:string, val:TimeEntryResource):Promise {\n return this.schemaCache\n .ensureLoaded(val)\n .then(() => {\n this.putValue(id, val);\n return val;\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3TimeEntryPaths } from 'core-app/core/apiv3/endpoints/time-entries/apiv3-time-entry-paths';\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\nimport { Observable } from 'rxjs';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { ApiV3Collection } from 'core-app/core/apiv3/cache/cachable-apiv3-collection';\nimport {\n ApiV3ListParameters,\n ApiV3ListResourceInterface,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { TimeEntryCacheService } from 'core-app/core/apiv3/endpoints/time-entries/time-entry-cache.service';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\n\nexport class ApiV3TimeEntriesPaths\n extends ApiV3Collection\n implements ApiV3ListResourceInterface {\n constructor(\n protected apiRoot:ApiV3Service,\n protected basePath:string,\n ) {\n super(apiRoot, basePath, 'time_entries', ApiV3TimeEntryPaths);\n }\n\n // Static paths\n public readonly form = this.subResource('form', ApiV3FormResource);\n\n // /api/v3/time_entries/schema\n readonly schema = this.subResource>('schema');\n\n /**\n * Load a list of time entries with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params))\n .pipe(\n this.cacheResponse(),\n );\n }\n\n /**\n * Create a time entry resource from the given payload\n * @param payload\n */\n public post(payload:Object):Observable {\n return this\n .halResourceService\n .post(this.path, payload)\n .pipe(\n this.cacheResponse(),\n );\n }\n\n protected createCache():StateCacheService {\n return new TimeEntryCacheService(this.injector, this.states.timeEntries);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ICapability } from 'core-app/core/state/capabilities/capability.model';\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\n\nexport class ApiV3CapabilityPaths extends ApiV3GettableResource {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3CapabilityPaths } from 'core-app/core/apiv3/endpoints/capabilities/apiv3-capability-paths';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ICapability } from 'core-app/core/state/capabilities/capability.model';\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\n\nexport class ApiV3CapabilitiesPaths\n extends ApiV3ResourceCollection {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'capabilities', ApiV3CapabilityPaths);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport {\n ApiV3ListParameters,\n ApiV3ListResourceInterface,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { ApiV3Filter } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\n\nexport class ApiV3AvailableProjectsPaths\n extends ApiV3GettableResource>\n implements ApiV3ListResourceInterface {\n /**\n * Load a list of available projects with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params));\n }\n\n /**\n * Performs a request against the available_projects endpoint\n * to see whether this is contained\n *\n * Returns whether the given id exists in the set\n * of available projects\n *\n * @param projectId\n */\n public exists(projectId:string):Observable {\n return this\n .halResourceService\n .get>(\n this.path,\n { filters: ApiV3Filter('id', '=', [projectId]).toJson() },\n )\n .pipe(\n map((collection) => collection.count > 0),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\nimport { MembershipResourceEmbedded } from 'core-app/features/hal/resources/membership-resource';\n\nexport class ApiV3MembershipsForm extends ApiV3FormResource {\n /**\n * We need to override the grid widget extraction\n * to pass the correct payload to the API.\n *\n * @param resource\n * @param schema\n */\n public static extractPayload(resource:MembershipResourceEmbedded):Object {\n return {\n _links: {\n project: { href: resource.project.href },\n principal: { href: resource.principal.href },\n roles: resource.roles.map((role) => ({ href: role.href })),\n },\n _meta: {\n notificationMessage: {\n raw: resource.notificationMessage.raw,\n },\n },\n };\n }\n\n /**\n * Extract payload for the form from the request and optional schema.\n *\n * @param request\n * @param schema\n */\n public extractPayload(request:MembershipResourceEmbedded) {\n return ApiV3MembershipsForm.extractPayload(request);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource, ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3AvailableProjectsPaths } from 'core-app/core/apiv3/endpoints/projects/apiv3-available-projects-paths';\nimport {\n ApiV3ListParameters,\n ApiV3ListResourceInterface,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { Observable } from 'rxjs';\nimport { ApiV3MembershipsForm } from 'core-app/core/apiv3/endpoints/memberships/apiv3-memberships-form';\nimport { MembershipResource, MembershipResourceEmbedded } from 'core-app/features/hal/resources/membership-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\nexport class ApiV3MembershipsPaths\n extends ApiV3ResourceCollection>\n implements ApiV3ListResourceInterface {\n // Static paths\n readonly form = this.subResource('form', ApiV3MembershipsForm);\n\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'memberships');\n }\n\n /**\n * Load a list of membership entries with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params));\n }\n\n // /api/v3/memberships/available_projects\n readonly available_projects = this.subResource('available_projects', ApiV3AvailableProjectsPaths);\n\n /**\n * Create a new MembershipResource\n *\n * @param resource\n */\n public post(resource:MembershipResourceEmbedded):Observable {\n const payload = this.form.extractPayload(resource);\n return this\n .halResourceService\n .post(\n this.path,\n payload,\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ResourcePath } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { Observable } from 'rxjs';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { HttpClient } from '@angular/common/http';\nimport { IUserPreference } from 'core-app/features/user-preferences/state/user-preferences.model';\n\nexport class ApiV3UserPreferencesPaths extends ApiV3ResourcePath {\n @InjectField() http:HttpClient;\n\n /**\n * Perform a request to the backend to load preferences\n */\n public get():Observable {\n return this\n .http\n .get(\n this.path,\n );\n }\n\n /**\n * Perform a request to update preferences\n */\n public patch(payload:Partial):Observable {\n return this\n .http\n .patch(\n this.path,\n payload,\n { withCredentials: true, responseType: 'json' },\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { ApiV3UserPreferencesPaths } from 'core-app/core/apiv3/endpoints/users/apiv3-user-preferences-paths';\n\nexport class ApiV3UserPaths extends ApiV3Resource {\n readonly avatar = this.subResource('avatar');\n\n readonly preferences = this.subResource('preferences', ApiV3UserPreferencesPaths);\n\n protected createCache():StateCacheService {\n return new StateCacheService(this.states.users);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3UserPaths } from 'core-app/core/apiv3/endpoints/users/apiv3-user-paths';\nimport { Observable } from 'rxjs';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\n\nexport class ApiV3UsersPaths extends ApiV3ResourceCollection {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'users', ApiV3UserPaths);\n }\n\n // Static paths\n\n // /api/v3/users/me\n public readonly me = this.subResource('me', ApiV3UserPaths);\n\n // /api/v3/users/form\n public readonly form = this.subResource('form', ApiV3FormResource);\n\n /**\n * Create a new UserResource\n *\n * @param resource\n */\n public post(resource:{\n // TODO: The typing here could be a lot better\n login?:string,\n firstName?:string,\n lastName?:string,\n email?:string,\n admin?:boolean,\n language?:string,\n password?:string,\n auth_source?:string,\n identity_url?:string,\n status:'invited'|'active',\n }):Observable {\n return this\n .halResourceService\n .post(\n this.path,\n resource,\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { TypeResource } from 'core-app/features/hal/resources/type-resource';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { ApiV3TypesPaths } from 'core-app/core/apiv3/endpoints/types/apiv3-types-paths';\n\nexport class ApiV3TypePaths extends ApiV3Resource {\n protected createCache():StateCacheService {\n return (this.parent as ApiV3TypesPaths).cache;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { TypeResource } from 'core-app/features/hal/resources/type-resource';\nimport { ApiV3TypePaths } from 'core-app/core/apiv3/endpoints/types/apiv3-type-paths';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3Collection } from 'core-app/core/apiv3/cache/cachable-apiv3-collection';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\n\nexport class ApiV3TypesPaths extends ApiV3Collection {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'types', ApiV3TypePaths);\n }\n\n protected createCache():StateCacheService {\n return new StateCacheService(this.states.types);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injector } from '@angular/core';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { HttpClient } from '@angular/common/http';\nimport { SimpleResource } from 'core-app/core/apiv3/paths/path-resources';\n\nexport type QueryOrder = { [wpId:string]:number };\n\nexport class ApiV3QueryOrder extends SimpleResource {\n @InjectField() http:HttpClient;\n\n constructor(readonly injector:Injector,\n readonly basePath:string,\n readonly id:string|number) {\n super(basePath, id);\n }\n\n public get():Promise {\n return this.http\n .get(\n this.path,\n )\n .toPromise()\n .then((result) => result || {});\n }\n\n public update(delta:QueryOrder):Promise {\n return this.http\n .patch(\n this.path,\n { delta },\n { withCredentials: true },\n )\n .toPromise()\n .then((response:{ t:string }) => response.t);\n }\n\n public delete(id:string, ...wpIds:string[]) {\n const delta:QueryOrder = {};\n wpIds.forEach((id) => delta[id] = -1);\n\n return this.update(delta);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { Observable } from 'rxjs';\nimport * as URI from 'urijs';\nimport { map, tap } from 'rxjs/operators';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { QueryFiltersService } from 'core-app/features/work-packages/components/wp-query/query-filters.service';\n\nexport class ApiV3QueryForm extends ApiV3FormResource {\n @InjectField() private queryFilters:QueryFiltersService;\n\n /**\n * Load the query form for the given existing (or new) query resource\n * @param query\n */\n public load(query:QueryResource):Observable<[QueryFormResource, QueryResource]> {\n // We need a valid payload so that we\n // can check whether form saving is possible.\n // The query needs a name to be valid.\n const payload:any = {\n name: query.name || '!!!__O__o__O__!!!',\n };\n\n if (query.project) {\n payload._links = {\n project: {\n href: query.project.href,\n },\n };\n }\n\n const { path } = this.apiRoot.queries.withOptionalId(query.id).form;\n return this.halResourceService\n .post(path, payload)\n .pipe(\n tap((form) => this.queryFilters.setSchemas(form.$embedded.schema.$embedded.filtersSchemas)),\n map((form) => [form, this.buildQueryResource(form)]),\n );\n }\n\n /**\n * Load the query form only with the given query props.\n *\n * @param params\n * @param queryId\n * @param projectIdentifier\n * @param payload\n */\n public loadWithParams(params:{ [key:string]:unknown }, queryId:string|null|undefined, projectIdentifier:string|undefined|null, payload:any = {}):Observable<[QueryFormResource, QueryResource]> {\n // We need a valid payload so that we\n // can check whether form saving is possible.\n // The query needs a name to be valid.\n if (!queryId && !payload.name) {\n payload.name = '!!!__O__o__O__!!!';\n }\n\n if (projectIdentifier) {\n payload._links = payload._links || {};\n payload._links.project = {\n href: this.apiRoot.projects.id(projectIdentifier).toString(),\n };\n }\n\n const { path } = this.apiRoot.queries.withOptionalId(queryId).form;\n const href = URI(path).search(params).toString();\n return this.halResourceService\n .post(href, payload)\n .pipe(\n tap((form) => this.queryFilters.setSchemas(form.$embedded.schema.$embedded.filtersSchemas)),\n map((form) => [form, this.buildQueryResource(form)]),\n );\n }\n\n protected buildQueryResource(form:QueryFormResource):QueryResource {\n return this.halResourceService.createHalResourceOfType('Query', form.payload);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { ApiV3QueryOrder } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-order';\nimport { ApiV3QueryForm } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-form';\nimport { Observable } from 'rxjs';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { QueryFiltersService } from 'core-app/features/work-packages/components/wp-query/query-filters.service';\nimport { HalPayloadHelper } from 'core-app/features/hal/schemas/hal-payload.helper';\nimport { PaginationObject } from 'core-app/shared/components/table-pagination/pagination-service';\n\nexport class ApiV3QueryPaths extends ApiV3GettableResource {\n @InjectField() private queryFilters:QueryFiltersService;\n\n // Static paths\n readonly form = this.subResource('form', ApiV3QueryForm);\n\n // Order path\n readonly order = new ApiV3QueryOrder(this.injector, this.path, 'order');\n\n /**\n * Stream the response for the given query request\n * @param queryData\n */\n public parameterised(params:Object):Observable {\n return this.halResourceService\n .get(this.path, params);\n }\n\n /**\n * Update the given query\n * @param query\n * @param form\n */\n public patch(payload:QueryResource|Object, form?:QueryFormResource):Observable {\n if (payload instanceof QueryResource && form) {\n // Extracting requires having the filter schemas loaded as the dependencies\n this.queryFilters.mapSchemasIntoFilters(payload, form);\n payload = HalPayloadHelper.extractPayloadFromSchema(payload, form.schema);\n }\n\n return this\n .halResourceService\n .patch(this.path, payload);\n }\n\n /**\n * Delete the query\n */\n public delete() {\n return this\n .halResourceService\n .delete(this.path);\n }\n\n /**\n * Reload with a given pagination\n * @param pagination\n */\n public paginated(pagination:PaginationObject):Observable {\n return this.parameterised(pagination);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource, ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3QueryPaths } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-paths';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3QueryForm } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-form';\nimport { Observable } from 'rxjs';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { ApiV3ListParameters, listParamsString } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { QueryFiltersService } from 'core-app/features/work-packages/components/wp-query/query-filters.service';\nimport { HalPayloadHelper } from 'core-app/features/hal/schemas/hal-payload.helper';\n\nexport class ApiV3QueriesPaths extends ApiV3ResourceCollection {\n @InjectField() private queryFilters:QueryFiltersService;\n\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'queries', ApiV3QueryPaths);\n }\n\n // Static paths\n // /api/v3/queries/form\n readonly form = this.subResource('form', ApiV3QueryForm);\n\n // /api/v3/queries/default\n readonly default = this.subResource>('default');\n\n // /api/v3/queries/filter_instance_schemas/:id\n readonly filter_instance_schemas = new ApiV3ResourceCollection(this.apiRoot, this.path, 'filter_instance_schemas');\n\n /**\n * Load a list of queries with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params));\n }\n\n /**\n * Locate a query for the response for the given query request.\n * This might be the default query or an existing query identified by its ID.\n * @param queryData\n * @param queryId\n * @param projectIdentifier\n */\n public find(\n queryData:object,\n queryId?:string|null,\n projectIdentifier?:string|null|undefined,\n ):Observable {\n let path:string;\n\n if (queryId) {\n path = this.apiRoot.queries.id(queryId).toString();\n } else {\n path = this.apiRoot.withOptionalProject(projectIdentifier).queries.default.toString();\n }\n\n return this\n .halResourceService\n .get(path, queryData);\n }\n\n /**\n * Stream the response for the given query request\n *\n * @param params\n */\n public parameterised(params:Object):Observable {\n return this.halResourceService\n .get(\n this.default.path,\n params,\n );\n }\n\n /**\n * Create a new query resource\n *\n * @param payload Payload object or query HAL resource\n * @param form Form resource, needed when QueryResource is passed\n */\n public post(payload:QueryResource|Object, form?:QueryFormResource):Observable {\n if (payload instanceof QueryResource && form) {\n // Extracting requires having the filter schemas loaded as the dependencies\n this.queryFilters.mapSchemasIntoFilters(payload, form);\n payload = HalPayloadHelper.extractPayloadFromSchema(payload, form.schema);\n }\n\n return this\n .halResourceService\n .post(this.apiRoot.queries.path, payload);\n }\n\n /**\n * Invert the starred state of the given query\n *\n * @param query\n */\n public toggleStarred(query:QueryResource):Promise {\n if (query.starred) {\n return query.unstar();\n }\n return query.star();\n }\n\n /**\n * Get the ical url of the given query for the requesting user with the ical token\n *\n * @param query\n * @param tokenName\n */\n public getIcalUrl(query:QueryResource, tokenName:string):Promise {\n return query.icalUrl({ token_name: tokenName });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource, ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { forkJoin, from, Observable } from 'rxjs';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { map } from 'rxjs/operators';\nimport { ApiV3Filter } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\n\nexport const MAGIC_RELATION_SIZE = 100;\n\nexport class ApiV3RelationsPaths extends ApiV3ResourceCollection> {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'relations');\n }\n\n /**\n * Get all versions\n */\n public get():Observable> {\n return this\n .halResourceService\n .get>(this.path);\n }\n\n public loadInvolved(workPackageIds:string[]):Observable {\n if (workPackageIds.length > MAGIC_RELATION_SIZE) {\n const chunks = _.chunk(workPackageIds, MAGIC_RELATION_SIZE);\n return forkJoin(chunks.map((chunk) => this.loadInvolved(chunk)))\n .pipe(\n map((results) => _.flatten(results)),\n );\n }\n\n const validIds = _.filter(workPackageIds, (id) => /\\d+/.test(id));\n\n if (validIds.length === 0) {\n return from([]);\n }\n\n return this\n .filtered(\n ApiV3Filter('involved', '=', validIds),\n )\n .getPaginatedResults();\n }\n}\n","import { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\nimport { FormResource } from 'core-app/features/hal/resources/form-resource';\nimport { Observable } from 'rxjs';\nimport { HalSource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class ApiV3WorkPackageForm extends ApiV3FormResource {\n /**\n * Returns a promise to post `/api/v3/work_packages/form` with only the type part of the\n * provided payload being sent to the backend.\n *\n * @param payload: The payload to be sent to the backend\n * @returns A work package form resource prefilled with the provided payload.\n */\n public forTypePayload(payload:HalSource):Observable {\n const typePayload = payload._links.type ? { _links: { type: payload._links.type } } : { _links: {} };\n\n return this.post(payload);\n }\n\n /**\n * Returns a promise to post `/api/v3/work_packages/form` where the\n * payload sent to the backend has been provided.\n *\n * @param payload: The payload to be sent to the backend\n * @returns A work package form resource prefilled with the provided payload.\n */\n public forPayload(payload:Partial):Observable {\n return this.post(payload);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { ApiV3RelationsPaths } from 'core-app/core/apiv3/endpoints/relations/apiv3-relations-paths';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { ApiV3WorkPackagesPaths } from 'core-app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { ApiV3WorkPackageForm } from 'core-app/core/apiv3/endpoints/work_packages/apiv3-work-package-form';\n\nexport class ApiV3WorkPackagePaths extends ApiV3Resource {\n // /api/v3/(?:projectPath)/work_packages/(:workPackageId)/relations\n public readonly relations = this.subResource('relations', ApiV3RelationsPaths);\n\n // /api/v3/(?:projectPath)/work_packages/(:workPackageId)/revisions\n public readonly revisions = this.subResource('revisions');\n\n // /api/v3/(?:projectPath)/work_packages/(:workPackageId)/activities\n public readonly activities = this.subResource('activities');\n\n // /api/v3/(?:projectPath)/work_packages/(:workPackageId)/available_watchers\n public readonly available_watchers = this.subResource('available_watchers');\n\n // /api/v3/(?:projectPath)/work_packages/(:workPackageId)/reminders\n public readonly reminders = this.subResource('reminders');\n\n // /api/v3/(?:projectPath)/work_packages/(:workPackageId)/available_projects\n public readonly available_projects = this.subResource('available_projects');\n\n // /api/v3/(?:projectPath)/work_packages/(:workPackageId)/github_pull_requests\n public readonly github_pull_requests = this.subResource('github_pull_requests');\n\n // /api/v3/(projects/:projectIdentifier)/work_packages/(:workPackageId)/form\n public readonly form:ApiV3WorkPackageForm = this.subResource('form', ApiV3WorkPackageForm);\n\n protected createCache():StateCacheService {\n return (this.parent as ApiV3WorkPackagesPaths).cache;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { MultiInputState } from '@openproject/reactivestates';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { Injectable, Injector } from '@angular/core';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\n\n@Injectable()\nexport class WorkPackageCache extends StateCacheService {\n @InjectField() private schemaCacheService:SchemaCacheService;\n\n constructor(readonly injector:Injector,\n state:MultiInputState) {\n super(state);\n }\n\n updateValue(id:string, val:WorkPackageResource):Promise {\n return this.schemaCacheService.ensureLoaded(val).then(() => {\n this.putValue(id, val);\n return val;\n });\n }\n\n updateWorkPackage(wp:WorkPackageResource, immediate = false):Promise {\n if (immediate || isNewResource(wp)) {\n return super.updateValue(wp.id!, wp);\n }\n return this.updateValue(wp.id!, wp);\n }\n\n updateWorkPackageList(list:WorkPackageResource[], skipOnIdentical = true) {\n list.forEach((i) => {\n const wp = i;\n const workPackageId = wp.id!;\n const state = this.multiState.get(workPackageId);\n\n // If the work package is new, ignore the schema\n if (isNewResource(wp)) {\n state.putValue(wp);\n return;\n }\n\n // Ensure the schema is loaded\n // so that no consumer needs to call schema#$load manually\n this.schemaCacheService.ensureLoaded(wp).then(() => {\n // Check if the work package has changed\n if (skipOnIdentical && state.hasValue() && _.isEqual(state.value!.$source, wp.$source)) {\n debugLog('Skipping identical work package from updating');\n return;\n }\n\n state.putValue(wp);\n });\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { Observable } from 'rxjs';\nimport { ApiV3WorkPackagesPaths } from 'core-app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths';\nimport { take, tap } from 'rxjs/operators';\nimport { WorkPackageCache } from 'core-app/core/apiv3/endpoints/work_packages/work-package.cache';\nimport { States } from 'core-app/core/states/states.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\n\nexport class ApiV3WorkPackageCachedSubresource extends ApiV3GettableResource {\n @InjectField() private states:States;\n\n public get():Observable {\n return this\n .halResourceService\n .get(this.path)\n .pipe(\n tap((collection) => collection.schemas && this.updateSchemas(collection.schemas)),\n tap((collection) => this.cache.updateWorkPackageList(collection.elements)),\n take(1),\n );\n }\n\n protected get cache():WorkPackageCache {\n return (this.parent as unknown as ApiV3WorkPackagesPaths).cache;\n }\n\n private updateSchemas(schemas:CollectionResource) {\n schemas.elements.forEach((schema) => {\n this.states.schemas.get(schema.href as string).putValue(schema);\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Observable } from 'rxjs';\nimport { ApiV3WorkPackagePaths } from 'core-app/core/apiv3/endpoints/work_packages/api-v3-work-package-paths';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { ApiV3WorkPackageForm } from 'core-app/core/apiv3/endpoints/work_packages/apiv3-work-package-form';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3Collection } from 'core-app/core/apiv3/cache/cachable-apiv3-collection';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { WorkPackageCache } from 'core-app/core/apiv3/endpoints/work_packages/work-package.cache';\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3WorkPackageCachedSubresource } from 'core-app/core/apiv3/endpoints/work_packages/api-v3-work-package-cached-subresource';\nimport {\n ApiV3FilterBuilder,\n ApiV3FilterValueType,\n ApiV3Filter,\n} from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\n\nexport class ApiV3WorkPackagesPaths extends ApiV3Collection {\n // Base path\n public readonly path:string;\n\n constructor(readonly apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'work_packages', ApiV3WorkPackagePaths);\n }\n\n // Static paths\n\n // /api/v3/(projects/:projectIdentifier)/work_packages/form\n public readonly form:ApiV3WorkPackageForm = this.subResource('form', ApiV3WorkPackageForm);\n\n /**\n *\n * Load a collection of work packages and put them all into cache\n *\n * @param ids\n */\n public requireAll(ids:string[]):Promise {\n if (ids.length === 0) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n this\n .loadCollectionsFor(_.uniq(ids))\n .then((pagedResults:WorkPackageCollectionResource[]) => {\n _.each(pagedResults, (results) => {\n if (results.schemas) {\n _.each(results.schemas.elements, (schema:SchemaResource) => {\n this.states.schemas.get(schema.href as string).putValue(schema);\n });\n }\n\n if (results.elements) {\n this.cache.updateWorkPackageList(results.elements);\n }\n });\n\n resolve(undefined);\n }, reject);\n });\n }\n\n /**\n * Create a work package from a form payload\n *\n * @param payload\n * @return {Promise}\n */\n public post(payload:object):Observable {\n return this\n .halResourceService\n .post(this.path, payload)\n .pipe(\n this.cacheResponse(),\n );\n }\n\n filtered>(filters:ApiV3FilterBuilder, params:{ [p:string]:string } = {}):R {\n return super.filtered(filters, params, ApiV3WorkPackageCachedSubresource) as any;\n }\n\n /**\n * Shortcut to filter work packages by subject or ID\n * @param term\n * @param idOnly\n * @param additionalParams Additional set of params to the API\n */\n public filterByTypeaheadOrId(term:string, idOnly = false, additionalParams:{ [key:string]:string } = {}):ApiV3WorkPackageCachedSubresource {\n const filters:ApiV3FilterBuilder = new ApiV3FilterBuilder();\n\n if (idOnly) {\n filters.add('id', '=', [term]);\n } else {\n filters.add('typeahead', '**', [term]);\n }\n\n const params = {\n sortBy: '[[\"updatedAt\",\"desc\"]]',\n offset: '1',\n pageSize: '10',\n ...additionalParams,\n };\n\n return this.filtered(filters, params);\n }\n\n /**\n * Returns work packages within the ids array to be updated since \n * @param ids work package IDs to filter for\n * @param timestamp The timestamp to clip at\n */\n public filterUpdatedSince(ids:(string|null)[], timestamp:ApiV3FilterValueType):ApiV3WorkPackageCachedSubresource {\n const filters = new ApiV3FilterBuilder()\n .add('id', '=', (ids.filter((n) => n) as string[]))\n .add('updatedAt', '<>d', [timestamp, '']);\n\n const params = {\n offset: '1',\n pageSize: '10',\n };\n\n return this.filtered(filters, params);\n }\n\n /**\n * Loads the work packages collection for the given work package IDs.\n * Returns a WP Collection with schemas and results embedded.\n *\n * @param ids\n * @return {WorkPackageCollectionResource[]}\n */\n protected loadCollectionsFor(ids:string[]):Promise {\n return this\n .halResourceService\n .getAllPaginated(\n this.path,\n {\n filters: ApiV3Filter('id', '=', ids).toJson(),\n valid_subset: true,\n },\n )\n .toPromise() as Promise;\n }\n\n protected createCache():WorkPackageCache {\n return new WorkPackageCache(this.injector, this.states.workPackages);\n }\n\n // /api/v3/(?:projectPath)/work_packages/(:workPackageId)/available_projects\n public readonly available_projects = this.subResource('available_projects');\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { VersionResource } from 'core-app/features/hal/resources/version-resource';\nimport { Observable } from 'rxjs';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { tap } from 'rxjs/operators';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\n\nexport class ApiV3VersionPaths extends ApiV3Resource {\n /**\n * Update a version resource with the given payload\n *\n * @param resource\n * @param payload\n */\n public patch(payload:Object):Observable {\n return this\n .halResourceService\n .patch(\n this.path,\n payload,\n )\n .pipe(\n tap((version) => this.touch(version)),\n );\n }\n\n protected createCache():StateCacheService {\n return new StateCacheService(this.states.versions);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { VersionResource } from 'core-app/features/hal/resources/version-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\nimport { Observable } from 'rxjs';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { ApiV3AvailableProjectsPaths } from 'core-app/core/apiv3/endpoints/projects/apiv3-available-projects-paths';\nimport { ApiV3VersionPaths } from 'core-app/core/apiv3/endpoints/versions/apiv3-version-paths';\n\nexport class ApiV3VersionsPaths extends ApiV3ResourceCollection {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'versions', ApiV3VersionPaths);\n }\n\n // /api/v3/versions/form\n public readonly form = this.subResource('form', ApiV3FormResource);\n\n public readonly available_projects = this.subResource('available_projects', ApiV3AvailableProjectsPaths);\n\n /**\n * Get all versions\n */\n public get():Observable> {\n return this\n .halResourceService\n .get>(this.path);\n }\n\n /**\n * Create a version from the given payload\n *\n * @param payload\n * @return {Promise}\n */\n public post(payload:Object):Observable {\n return this\n .halResourceService\n .post(this.path, payload);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { SimpleResource } from 'core-app/core/apiv3/paths/path-resources';\n\nexport class ApiV3ProjectCopyPaths extends SimpleResource {\n constructor(protected apiRoot:ApiV3Service,\n public basePath:string) {\n super(basePath, 'copy');\n }\n\n // /api/v3/projects/:project_id/copy/form\n public readonly form = new ApiV3FormResource(this.apiRoot, this.path, 'form');\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3QueriesPaths } from 'core-app/core/apiv3/endpoints/queries/apiv3-queries-paths';\nimport { ApiV3TypesPaths } from 'core-app/core/apiv3/endpoints/types/apiv3-types-paths';\nimport { ApiV3WorkPackagesPaths } from 'core-app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { ApiV3VersionsPaths } from 'core-app/core/apiv3/endpoints/versions/apiv3-versions-paths';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { ApiV3ProjectsPaths } from 'core-app/core/apiv3/endpoints/projects/apiv3-projects-paths';\nimport { ApiV3ProjectCopyPaths } from 'core-app/core/apiv3/endpoints/projects/apiv3-project-copy-paths';\n\nexport class ApiV3ProjectPaths extends ApiV3Resource {\n // /api/v3/projects/:project_id/available_assignees\n public readonly available_assignees = this.subResource('available_assignees');\n\n // /api/v3/projects/:project_id/queries\n public readonly queries = new ApiV3QueriesPaths(this.apiRoot, this.path);\n\n // /api/v3/projects/:project_id/types\n public readonly types = new ApiV3TypesPaths(this.apiRoot, this.path);\n\n // /api/v3/projects/:project_id/work_packages\n public readonly work_packages = new ApiV3WorkPackagesPaths(this.apiRoot, this.path);\n\n // /api/v3/projects/:project_id/versions\n public readonly versions = new ApiV3VersionsPaths(this.apiRoot, this.path);\n\n // /api/v3/projects/:project_id/copy\n public readonly copy = new ApiV3ProjectCopyPaths(this.apiRoot, this.path);\n\n protected createCache():StateCacheService {\n return (this.parent as ApiV3ProjectsPaths).cache;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { MultiInputState } from '@openproject/reactivestates';\nimport { Injectable, Injector } from '@angular/core';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\n\n@Injectable()\nexport class ProjectCache extends StateCacheService {\n @InjectField() private schemaCacheService:SchemaCacheService;\n\n constructor(readonly injector:Injector,\n state:MultiInputState) {\n super(state);\n }\n\n updateValue(id:string, val:ProjectResource):Promise {\n return this.schemaCacheService.ensureLoaded(val).then(() => {\n this.putValue(id, val);\n return val;\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ProjectPaths } from 'core-app/core/apiv3/endpoints/projects/apiv3-project-paths';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport {\n ApiV3ListParameters,\n ApiV3ListResourceInterface,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { Observable } from 'rxjs';\nimport { ApiV3Collection } from 'core-app/core/apiv3/cache/cachable-apiv3-collection';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { ProjectCache } from 'core-app/core/apiv3/endpoints/projects/project.cache';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\nexport class ApiV3ProjectsPaths\n extends ApiV3Collection\n implements ApiV3ListResourceInterface {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'projects', ApiV3ProjectPaths);\n }\n\n // /api/v3/projects/schema\n public readonly schema = this.subResource('schema');\n\n /**\n * Load a list of project with a given list parameter filter\n *\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params))\n .pipe(\n this.cacheResponse(),\n );\n }\n\n protected createCache():StateCacheService {\n return new ProjectCache(this.injector, this.states.projects);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { StatusResource } from 'core-app/features/hal/resources/status-resource';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\n\nexport class ApiV3StatusPaths extends ApiV3Resource {\n protected createCache():StateCacheService {\n return new StateCacheService(this.states.statuses);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { StatusResource } from 'core-app/features/hal/resources/status-resource';\nimport { ApiV3StatusPaths } from 'core-app/core/apiv3/endpoints/statuses/apiv3-status-paths';\nimport { Observable } from 'rxjs';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { tap } from 'rxjs/operators';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\nexport class ApiV3StatusesPaths extends ApiV3ResourceCollection {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'statuses', ApiV3StatusPaths);\n }\n\n /**\n * Perform a request to the HalResourceService with the current path\n */\n public get():Observable> {\n return this\n .halResourceService\n .get>(this.path)\n .pipe(\n tap((collection) => {\n collection.elements.forEach((resource, id) => {\n this.id(resource.id!).cache.updateValue(resource.id!, resource);\n });\n }),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { RoleResource } from 'core-app/features/hal/resources/role-resource';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\n\nexport class ApiV3RolePaths extends ApiV3Resource {\n protected createCache():StateCacheService {\n return new StateCacheService(this.states.roles);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { RoleResource } from 'core-app/features/hal/resources/role-resource';\nimport { ApiV3RolePaths } from 'core-app/core/apiv3/endpoints/roles/apiv3-role-paths';\nimport { Observable } from 'rxjs';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { tap } from 'rxjs/operators';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\nexport class ApiV3RolesPaths extends ApiV3ResourceCollection {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'roles', ApiV3RolePaths);\n }\n\n /**\n * Perform a request to the HalResourceService with the current path\n */\n public get():Observable> {\n return this\n .halResourceService\n .get>(this.path)\n .pipe(\n tap((collection) => {\n collection.elements.forEach((resource, id) => {\n this.id(resource.id!).cache.updateValue(resource.id!, resource);\n });\n }),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource, ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { Observable } from 'rxjs';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport {\n ApiV3ListParameters,\n ApiV3ListResourceInterface,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { NewsResource } from 'core-app/features/hal/resources/news-resource';\n\nexport class ApiV3NewsPaths\n extends ApiV3ResourceCollection>\n implements ApiV3ListResourceInterface {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'news');\n }\n\n /**\n * Load a list of time entries with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource, ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { Observable } from 'rxjs';\nimport { HelpTextResource } from 'core-app/features/hal/resources/help-text-resource';\n\nexport class ApiV3HelpTextsPaths\n extends ApiV3ResourceCollection> {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'help_texts');\n }\n\n /**\n * Load a list of membership entries with a given list parameter filter\n * @param params\n */\n public get():Observable> {\n return this\n .halResourceService\n .get>(this.path);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ConfigurationResource } from 'core-app/features/hal/resources/configuration-resource';\nimport { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\nexport class ApiV3ConfigurationPath extends ApiV3GettableResource {\n private $configuration:Observable;\n\n constructor(protected apiRoot:ApiV3Service,\n readonly basePath:string) {\n super(apiRoot, basePath, 'configuration');\n }\n\n public get():Observable {\n if (this.$configuration) {\n return this.$configuration;\n }\n\n return this.$configuration = this.halResourceService\n .get(this.path)\n .pipe(\n shareReplay(),\n );\n }\n}\n","import { GridWidgetResource } from 'core-app/features/hal/resources/grid-widget-resource';\nimport { GridResource } from 'core-app/features/hal/resources/grid-resource';\nimport { CardHighlightingMode } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting-mode.const';\nimport { ApiV3Filter } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\n\nexport type BoardType = 'free'|'action';\n\nexport interface BoardWidgetOption {\n queryId:string;\n filters:ApiV3Filter[];\n}\n\nexport class Board {\n constructor(public grid:GridResource) {\n }\n\n public get id() {\n return this.grid.id;\n }\n\n public get name() {\n return this.grid.name;\n }\n\n public get editable() {\n return !!this.grid.updateImmediately;\n }\n\n public get isFree() {\n return !this.isAction;\n }\n\n public get isAction() {\n return this.grid.options.type === 'action';\n }\n\n public get actionAttribute():string|undefined {\n if (this.isFree) {\n return undefined;\n }\n\n return this.grid.options.attribute as string;\n }\n\n public set highlightingMode(val:CardHighlightingMode) {\n this.grid.options.highlightingMode = val;\n }\n\n public get highlightingMode():CardHighlightingMode {\n return (this.grid.options.highlightingMode || 'none') as CardHighlightingMode;\n }\n\n public set name(name:string) {\n this.grid.name = name;\n }\n\n public addQuery(widget:GridWidgetResource) {\n widget.isNewWidget = true;\n this.grid.widgets.push(widget);\n }\n\n public removeQuery(widget:GridWidgetResource) {\n this.grid.widgets = this.grid.widgets.filter((el) => el.options.queryId !== widget.options.queryId);\n }\n\n public get queries():GridWidgetResource[] {\n return this.grid.widgets;\n }\n\n public get createdAt() {\n return this.grid.createdAt;\n }\n\n public get filters():ApiV3Filter[] {\n return (this.grid.options.filters || []) as ApiV3Filter[];\n }\n\n public set filters(filters:ApiV3Filter[]) {\n this.grid.options.filters = filters;\n }\n\n public sortWidgets() {\n this.grid.widgets = this.grid.widgets.sort((a, b) => a.startColumn - b.startColumn);\n }\n\n public showStatusButton() {\n return this.actionAttribute !== 'status';\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Board } from 'core-app/features/boards/board/board';\nimport { Observable } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { ApiV3BoardsPaths } from 'core-app/core/apiv3/virtual/apiv3-boards-paths';\n\nexport class ApiV3BoardPath extends ApiV3Resource {\n /**\n * Perform a request to the HalResourceService with the current path\n */\n protected load():Observable {\n return this\n .apiRoot\n .grids\n .id(this.id)\n .get()\n .pipe(\n map((grid) => {\n const newBoard = new Board(grid);\n\n newBoard.sortWidgets();\n\n return newBoard;\n }),\n );\n }\n\n /**\n * Save the changes to the board\n */\n public save(board:Board):Observable {\n return this\n .fetchSchema(board)\n .pipe(\n switchMap((schema:SchemaResource) => this\n .apiRoot\n .grids\n .id(board.grid)\n .patch(board.grid, schema)),\n map((grid) => {\n board.grid = grid;\n board.sortWidgets();\n return board;\n }),\n this.cacheResponse(),\n );\n }\n\n public delete():Observable {\n return this\n .apiRoot\n .grids\n .id(this.id)\n .delete()\n .pipe(\n tap(() => this.cache.clearSome(this.id.toString())),\n );\n }\n\n private fetchSchema(board:Board):Observable {\n return this\n .apiRoot\n .grids\n .id(board.grid)\n .form\n .post({})\n .pipe(\n map((form) => form.schema),\n );\n }\n\n protected createCache():StateCacheService {\n return (this.parent as ApiV3BoardsPaths).cache;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { GridResource } from 'core-app/features/hal/resources/grid-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { Observable } from 'rxjs';\nimport { ApiV3ListParameters, listParamsString } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { Board, BoardType } from 'core-app/features/boards/board/board';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport { ApiV3Collection } from 'core-app/core/apiv3/cache/cachable-apiv3-collection';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ApiV3BoardPath } from 'core-app/core/apiv3/virtual/apiv3-board-path';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { MAGIC_PAGE_NUMBER } from 'core-app/core/apiv3/helpers/get-paginated-results';\n\nexport class ApiV3BoardsPaths extends ApiV3Collection {\n @InjectField() private authorisationService:AuthorisationService;\n\n @InjectField() private PathHelper:PathHelperService;\n\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'grids', ApiV3BoardPath);\n }\n\n /**\n * Load a list of grids with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params))\n .pipe(\n tap((collection) => this.authorisationService.initModelAuth('boards', collection.$links)),\n map((collection) => collection.elements.map((grid) => {\n const board = new Board(grid);\n board.sortWidgets();\n this.touch(board);\n\n return board;\n })),\n );\n }\n\n /**\n * Return all boards in the current scope of the project\n *\n * @param projectIdentifier\n */\n public allInScope(projectIdentifier:string):Observable {\n const path = this.boardPath(projectIdentifier);\n return this.list({ filters: [['scope', '=', [path]]], pageSize: MAGIC_PAGE_NUMBER });\n }\n\n /**\n * Create a new board\n * @param type\n * @param name\n * @param projectIdentifier\n */\n public create(type:BoardType, name:string, projectIdentifier:string, actionAttribute?:string):Observable {\n const scope = this.boardPath(projectIdentifier);\n return this\n .createGrid(type, name, scope, actionAttribute)\n .pipe(\n map((grid) => new Board(grid)),\n );\n }\n\n /**\n * Retrieve the board path identifier for looking up grids.\n *\n * @param projectIdentifier The current project identifier\n */\n public boardPath(projectIdentifier:string) {\n return this.PathHelper.boardsPath(projectIdentifier);\n }\n\n protected createCache():StateCacheService {\n const state = this.states.forType('boards');\n return new StateCacheService(state);\n }\n\n private createGrid(type:BoardType, name:string, scope:string, actionAttribute?:string):Observable {\n const payload:any = _.set({ name }, '_links.scope.href', scope);\n payload.options = {\n type,\n };\n\n if (actionAttribute) {\n payload.options.attribute = actionAttribute;\n }\n\n return this\n .apiRoot\n .grids\n .form\n .post(payload)\n .pipe(\n switchMap((form) => this\n .apiRoot\n .grids\n .post(form.payload.$source)),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { PlaceholderUserResource } from 'core-app/features/hal/resources/placeholder-user-resource';\nimport { Observable } from 'rxjs';\n\nexport class ApiV3PlaceholderUserPaths extends ApiV3GettableResource {\n /**\n * Update a placeholder user resource or payload\n * @param resource\n */\n public patch(resource:PlaceholderUserResource|{ name:string }):Observable {\n return this\n .halResourceService\n .patch(this.path, {\n name: resource.name,\n });\n }\n\n /**\n * Delete a placeholder user resource\n */\n public delete():Observable {\n return this\n .halResourceService\n .delete(this.path);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3PlaceholderUserPaths } from 'core-app/core/apiv3/endpoints/placeholder-users/apiv3-placeholder-user-paths';\nimport { PlaceholderUserResource } from 'core-app/features/hal/resources/placeholder-user-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { Observable } from 'rxjs';\nimport {\n ApiV3ListParameters,\n ApiV3ListResourceInterface,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\nexport class ApiV3PlaceholderUsersPaths\n extends ApiV3ResourceCollection\n implements ApiV3ListResourceInterface {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'placeholder_users', ApiV3PlaceholderUserPaths);\n }\n\n /**\n * Load a list of placeholder users with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params));\n }\n\n /**\n * Create a new PlaceholderUserResource\n *\n * @param resource\n */\n public post(resource:{ name:string }):Observable {\n return this\n .halResourceService\n .post(\n this.path,\n resource,\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { GroupResource } from 'core-app/features/hal/resources/group-resource';\nimport { Observable } from 'rxjs';\n\nexport class ApiV3GroupPaths extends ApiV3GettableResource {\n /**\n * Update a placeholder user resource or payload\n * @param resource\n */\n public patch(resource:GroupResource|{ name:string }):Observable {\n return this\n .halResourceService\n .patch(this.path, {\n name: resource.name,\n });\n }\n\n /**\n * Delete a placeholder user resource\n */\n public delete():Observable {\n return this\n .halResourceService\n .delete(this.path);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3GroupPaths } from 'core-app/core/apiv3/endpoints/groups/apiv3-group-paths';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { Observable } from 'rxjs';\nimport {\n ApiV3ListParameters,\n ApiV3ListResourceInterface,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { GroupResource } from 'core-app/features/hal/resources/group-resource';\n\nexport class ApiV3GroupsPaths\n extends ApiV3ResourceCollection\n implements ApiV3ListResourceInterface {\n constructor(protected apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'groups', ApiV3GroupPaths);\n }\n\n /**\n * Load a list of placeholder users with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .halResourceService\n .get>(this.path + listParamsString(params));\n }\n\n /**\n * Create a new GroupResource\n *\n * @param resource\n */\n public post(resource:{ name:string }):Observable {\n return this\n .halResourceService\n .post(\n this.path,\n resource,\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { INotification } from 'core-app/core/state/in-app-notifications/in-app-notification.model';\n\nexport class ApiV3NotificationPaths extends ApiV3GettableResource {\n @InjectField() http:HttpClient;\n\n public markRead():Observable {\n return this\n .http\n .post(\n `${this.path}/read_ian`,\n {},\n {\n withCredentials: true,\n responseType: 'json',\n },\n );\n }\n\n public markUnread():Observable {\n return this\n .http\n .post(\n `${this.path}/unread_ian`,\n {},\n {\n withCredentials: true,\n responseType: 'json',\n },\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { ID } from '@datorama/akita';\n\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport {\n ApiV3ListFilter,\n ApiV3ListParameters,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { ApiV3NotificationPaths } from 'core-app/core/apiv3/endpoints/notifications/apiv3-notification-paths';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { INotification } from 'core-app/core/state/in-app-notifications/in-app-notification.model';\n\nexport class ApiV3NotificationsPaths\n extends ApiV3ResourceCollection {\n @InjectField() http:HttpClient;\n\n constructor(\n protected apiRoot:ApiV3Service,\n protected basePath:string,\n ) {\n super(apiRoot, basePath, 'notifications', ApiV3NotificationPaths);\n }\n\n public facet(facet:string, params?:ApiV3ListParameters):Observable> {\n if (facet === 'unread') {\n return this.unread(params);\n }\n return this.list(params);\n }\n\n /**\n * Load a list of events with a given list parameter filter\n * @param params\n */\n public list(params?:ApiV3ListParameters):Observable> {\n return this\n .http\n .get>(this.path + listParamsString(params));\n }\n\n public listPath(params?:ApiV3ListParameters):string {\n return this.path + listParamsString(params);\n }\n\n /**\n * Load unread events\n */\n public unread(additional?:ApiV3ListParameters):Observable> {\n const unreadFilter:ApiV3ListFilter = ['readIAN', '=', false];\n const filters = [\n ...(additional?.filters ? additional.filters : []),\n unreadFilter,\n ];\n const params:ApiV3ListParameters = {\n ...additional,\n filters,\n };\n\n return this.list(params);\n }\n\n /**\n * Mark all notifications as read\n * @param ids\n */\n public markAsReadByIds(ids:Array):Observable {\n return this\n .http\n .post(\n `${this.path}/read_ian${listParamsString({ filters: [['id', '=', ids.map((id) => id.toString())]] })}`,\n {},\n {\n withCredentials: true,\n responseType: 'json',\n },\n );\n }\n\n public markAsReadByFilter(filters:ApiV3ListFilter[]):Observable {\n return this.http.post(\n `${this.path}/read_ian${(listParamsString({ filters: filters.map((f) => [f[0], f[1], f[2]]) }))}`,\n {},\n {\n withCredentials: true,\n responseType: 'json',\n },\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Observable } from 'rxjs';\nimport { IView, IViewCreatePayload } from 'core-app/core/state/views/view.model';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { HttpClient } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\nimport {\n ApiV3GettableResource,\n ApiV3ResourceCollection,\n} from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\nexport class ApiV3ViewsPaths extends ApiV3ResourceCollection> {\n @InjectField() http:HttpClient;\n\n constructor(\n protected apiRoot:ApiV3Service,\n protected basePath:string,\n ) {\n super(apiRoot, basePath, 'views');\n }\n\n /**\n * Create a new view\n *\n * @param resource\n * @param type The query's view type\n */\n post(resource:IViewCreatePayload, type:string):Observable {\n return this\n .http\n .post(\n `${this.path}/${type}`,\n resource,\n {\n withCredentials: true,\n responseType: 'json',\n },\n ).pipe(\n map((view:IView) => view),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ConfigurationResource } from 'core-app/features/hal/resources/configuration-resource';\nimport { Observable } from 'rxjs';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\n\nexport class Apiv3BackupsPath extends ApiV3GettableResource {\n constructor(protected apiRoot:ApiV3Service,\n readonly basePath:string) {\n super(apiRoot, basePath, 'backups');\n }\n\n public post(backupToken:string, includeAttachments:boolean):Observable {\n return this\n .halResourceService\n .post(\n this.path,\n { backupToken, attachments: includeAttachments },\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3GettableResource } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { IDay } from 'core-app/core/state/days/day.model';\n\nexport class ApiV3DayPaths extends ApiV3GettableResource {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3DayPaths } from 'core-app/core/apiv3/endpoints/days/api-v3-day-paths';\nimport { IDay } from 'core-app/core/state/days/day.model';\nimport {\n ApiV3GettableResource,\n ApiV3ResourceCollection,\n} from 'core-app/core/apiv3/paths/apiv3-resource';\n\nexport class ApiV3DaysPaths extends ApiV3ResourceCollection {\n // Base path\n public readonly path:string;\n\n constructor(readonly apiRoot:ApiV3Service,\n protected basePath:string) {\n super(apiRoot, basePath, 'days', ApiV3DayPaths);\n }\n\n // Static paths\n\n // /api/v3/days/week\n public readonly week = new ApiV3ResourceCollection(this.apiRoot, this.path, 'week');\n\n // /api/v3/days/nonWorkingDays\n public readonly nonWorkingDays = new ApiV3ResourceCollection(this.apiRoot, this.path, 'non_working');\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ApiV3GettableResource,\n ApiV3ResourceCollection,\n} from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { IStorage } from 'core-app/core/state/storages/storage.model';\n\nexport class ApiV3StoragesPaths\n extends ApiV3ResourceCollection> {\n // /api/v3/storages/files\n public readonly files = this.subResource('files');\n\n constructor(\n protected apiRoot:ApiV3Service,\n protected basePath:string,\n ) {\n super(apiRoot, basePath, 'storages');\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ApiV3GettableResource,\n ApiV3ResourceCollection,\n} from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { IProjectStorage } from 'core-app/core/state/project-storages/project-storage.model';\n\nexport class ApiV3ProjectStoragesPaths\n extends ApiV3ResourceCollection> {\n constructor(\n protected apiRoot:ApiV3Service,\n protected basePath:string,\n ) {\n super(apiRoot, basePath, 'project_storages');\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { ApiV3GettableResource, ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { Constructor } from '@angular/cdk/table';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ApiV3GridsPaths } from 'core-app/core/apiv3/endpoints/grids/apiv3-grids-paths';\nimport { ApiV3TimeEntriesPaths } from 'core-app/core/apiv3/endpoints/time-entries/apiv3-time-entries-paths';\nimport { ApiV3CapabilitiesPaths } from 'core-app/core/apiv3/endpoints/capabilities/apiv3-capabilities-paths';\nimport { ApiV3MembershipsPaths } from 'core-app/core/apiv3/endpoints/memberships/apiv3-memberships-paths';\nimport { ApiV3UsersPaths } from 'core-app/core/apiv3/endpoints/users/apiv3-users-paths';\nimport { ApiV3TypesPaths } from 'core-app/core/apiv3/endpoints/types/apiv3-types-paths';\nimport { ApiV3QueriesPaths } from 'core-app/core/apiv3/endpoints/queries/apiv3-queries-paths';\nimport { ApiV3WorkPackagesPaths } from 'core-app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths';\nimport { ApiV3ProjectPaths } from 'core-app/core/apiv3/endpoints/projects/apiv3-project-paths';\nimport { ApiV3ProjectsPaths } from 'core-app/core/apiv3/endpoints/projects/apiv3-projects-paths';\nimport { ApiV3StatusesPaths } from 'core-app/core/apiv3/endpoints/statuses/apiv3-statuses-paths';\nimport { ApiV3RolesPaths } from 'core-app/core/apiv3/endpoints/roles/apiv3-roles-paths';\nimport { ApiV3VersionsPaths } from 'core-app/core/apiv3/endpoints/versions/apiv3-versions-paths';\nimport { ApiV3RelationsPaths } from 'core-app/core/apiv3/endpoints/relations/apiv3-relations-paths';\nimport { ApiV3NewsPaths } from 'core-app/core/apiv3/endpoints/news/apiv3-news-paths';\nimport { ApiV3HelpTextsPaths } from 'core-app/core/apiv3/endpoints/help_texts/apiv3-help-texts-paths';\nimport { ApiV3ConfigurationPath } from 'core-app/core/apiv3/endpoints/configuration/apiv3-configuration-path';\nimport { ApiV3BoardsPaths } from 'core-app/core/apiv3/virtual/apiv3-boards-paths';\nimport { RootResource } from 'core-app/features/hal/resources/root-resource';\nimport {\n ApiV3PlaceholderUsersPaths,\n} from 'core-app/core/apiv3/endpoints/placeholder-users/apiv3-placeholder-users-paths';\nimport { ApiV3GroupsPaths } from 'core-app/core/apiv3/endpoints/groups/apiv3-groups-paths';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ApiV3NotificationsPaths } from 'core-app/core/apiv3/endpoints/notifications/apiv3-notifications-paths';\nimport { ApiV3ViewsPaths } from 'core-app/core/apiv3/endpoints/views/apiv3-views-paths';\nimport { Apiv3BackupsPath } from 'core-app/core/apiv3/endpoints/backups/apiv3-backups-path';\nimport { ApiV3DaysPaths } from 'core-app/core/apiv3/endpoints/days/api-v3-days-paths';\nimport { ApiV3StoragesPaths } from 'core-app/core/apiv3/endpoints/storages/api-v3-storages-paths';\nimport {\n ApiV3ProjectStoragesPaths,\n} from 'core-app/core/apiv3/endpoints/project-storages/api-v3-project-storages-paths';\n\n@Injectable({ providedIn: 'root' })\nexport class ApiV3Service {\n // /api/v3/attachments\n public readonly attachments = this.apiV3CollectionEndpoint('attachments');\n\n // /api/v3/backups\n public readonly backups = this.apiV3CustomEndpoint(Apiv3BackupsPath);\n\n // /api/v3/configuration\n public readonly configuration = this.apiV3CustomEndpoint(ApiV3ConfigurationPath);\n\n // /api/v3/days\n public readonly days = this.apiV3CustomEndpoint(ApiV3DaysPaths);\n\n // /api/v3/documents\n public readonly documents = this.apiV3CollectionEndpoint('documents');\n\n // /api/v3/file_links\n public readonly file_links = this.apiV3CollectionEndpoint('file_links');\n\n // /api/v3/notifications\n public readonly notifications = this.apiV3CustomEndpoint(ApiV3NotificationsPaths);\n\n // /api/v3/github_pull_requests\n public readonly github_pull_requests = this.apiV3CollectionEndpoint('github_pull_requests');\n\n // /api/v3/grids\n public readonly grids = this.apiV3CustomEndpoint(ApiV3GridsPaths);\n\n // /api/v3/principals\n public readonly principals = this.apiV3CollectionEndpoint('principals');\n\n // /api/v3/root\n public readonly root = this.apiV3SingularEndpoint('');\n\n // /api/v3/shares\n public readonly shares = this.apiV3CollectionEndpoint('shares');\n\n // /api/v3/statuses\n public readonly statuses = this.apiV3CustomEndpoint(ApiV3StatusesPaths);\n\n // /api/v3/relations\n public readonly relations = this.apiV3CustomEndpoint(ApiV3RelationsPaths);\n\n // /api/v3/priorities\n public readonly priorities = this.apiV3CollectionEndpoint('priorities');\n\n // /api/v3/time_entries\n public readonly time_entries = this.apiV3CustomEndpoint(ApiV3TimeEntriesPaths);\n\n // /api/v3/actions\n public readonly actions = this.apiV3CollectionEndpoint('actions');\n\n // /api/v3/capabilities\n public readonly capabilities = this.apiV3CustomEndpoint(ApiV3CapabilitiesPaths);\n\n // /api/v3/meetings\n public readonly meetings = this.apiV3CollectionEndpoint('meetings');\n\n // /api/v3/memberships\n public readonly memberships = this.apiV3CustomEndpoint(ApiV3MembershipsPaths);\n\n // /api/v3/news\n public readonly news = this.apiV3CustomEndpoint(ApiV3NewsPaths);\n\n // /api/v3/storages\n public readonly storages = this.apiV3CustomEndpoint(ApiV3StoragesPaths);\n\n // /api/v3/project_storages\n public readonly projectStorages = this.apiV3CustomEndpoint(ApiV3ProjectStoragesPaths);\n\n // /api/v3/types\n public readonly types = this.apiV3CustomEndpoint(ApiV3TypesPaths);\n\n // /api/v3/versions\n public readonly versions = this.apiV3CustomEndpoint(ApiV3VersionsPaths);\n\n // /api/v3/work_packages\n public readonly work_packages = this.apiV3CustomEndpoint(ApiV3WorkPackagesPaths);\n\n // /api/v3/queries\n public readonly queries = this.apiV3CustomEndpoint(ApiV3QueriesPaths);\n\n // /api/v3/projects\n public readonly projects = this.apiV3CustomEndpoint(ApiV3ProjectsPaths);\n\n // /api/v3/users\n public readonly users = this.apiV3CustomEndpoint(ApiV3UsersPaths);\n\n // /api/v3/placeholder_users\n public readonly placeholder_users = this.apiV3CustomEndpoint(ApiV3PlaceholderUsersPaths);\n\n // /api/v3/groups\n public readonly groups = this.apiV3CustomEndpoint(ApiV3GroupsPaths);\n\n // /api/v3/roles\n public readonly roles = this.apiV3CustomEndpoint(ApiV3RolesPaths);\n\n // /api/v3/help_texts\n public readonly help_texts = this.apiV3CustomEndpoint(ApiV3HelpTextsPaths);\n\n // /api/v3/job_statuses\n public readonly job_statuses = this.apiV3CollectionEndpoint('job_statuses');\n\n // /api/v3/views\n public readonly views = this.apiV3CustomEndpoint(ApiV3ViewsPaths);\n\n // VIRTUAL boards are /api/v3/grids + a scope filter\n public readonly boards = this.apiV3CustomEndpoint(ApiV3BoardsPaths);\n\n constructor(\n readonly injector:Injector,\n readonly pathHelper:PathHelperService,\n ) { }\n\n /**\n * Returns the part of the API that exists both\n * - WITHIN a project scope /api/v3/projects/*\n * - GLOBALLY /api/v3/*\n *\n * The available API endpoints are being restricted automatically by typescript.\n *\n * @param projectIdentifier\n */\n public withOptionalProject(projectIdentifier:string|number|null|undefined):ApiV3ProjectPaths|this {\n if (_.isNil(projectIdentifier)) {\n return this;\n }\n return this.projects.id(projectIdentifier);\n }\n\n public collectionFromString(fullPath:string) {\n const path = fullPath.replace(`${this.pathHelper.api.v3.apiV3Base}/`, '');\n\n return this.apiV3CollectionEndpoint(path);\n }\n\n private apiV3CollectionEndpoint>(segment:string, resource?:Constructor) {\n return new ApiV3ResourceCollection(this, this.pathHelper.api.v3.apiV3Base, segment, resource);\n }\n\n private apiV3CustomEndpoint(cls:Constructor):T {\n // eslint-disable-next-line new-cap\n return new cls(this, this.pathHelper.api.v3.apiV3Base);\n }\n\n private apiV3SingularEndpoint(segment:string):ApiV3GettableResource {\n return new ApiV3GettableResource(this, this.pathHelper.api.v3.apiV3Base, segment);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n MultiInputState,\n State,\n} from '@openproject/reactivestates';\nimport {\n combineLatest,\n firstValueFrom,\n forkJoin,\n Observable,\n} from 'rxjs';\nimport {\n auditTime,\n map,\n share,\n startWith,\n take,\n} from 'rxjs/operators';\n\nexport interface HasId {\n id:string|null;\n}\n\nexport class StateCacheService {\n protected cacheDurationInMs:number;\n\n protected multiState:MultiInputState;\n\n constructor(state:MultiInputState, holdValuesForSeconds = 3600) {\n this.multiState = state;\n this.cacheDurationInMs = holdValuesForSeconds * 1000;\n }\n\n public state(id:string):State {\n return this.multiState.get(id);\n }\n\n /**\n * Touch the current state to fire subscribers.\n */\n public touch(id:string):void {\n const state = this.multiState.get(id);\n state.putValue(state.value, 'Touching the state');\n }\n\n /**\n * Get the current value\n */\n public current(id:string, fallback?:T):T|undefined {\n return this.state(id).getValueOr(fallback);\n }\n\n /**\n * Sets a promise to the state\n */\n public clearAndLoad(id:string, loader:Observable):Observable {\n const observable = loader\n .pipe(\n take(1),\n share(),\n );\n\n this\n .multiState.get(id)\n .clearAndPutFromPromise(firstValueFrom(observable));\n\n return observable;\n }\n\n /**\n * Update the value due to application changes.\n *\n * @param id The value's identifier.\n * @param val The value.\n *\n * @return a promise of the value when it was inserted into cache\n */\n public updateValue(id:string, val:T):Promise {\n this.putValue(id, val);\n return Promise.resolve(val);\n }\n\n /**\n * Update the value due to application changes.\n *\n * @param resource The value.\n */\n public updateFor(resource:HasId):Promise {\n return this.updateValue(resource.id!, resource as any);\n }\n\n /**\n * Observe the value of the given id\n */\n public observe(id:string):Observable {\n return this.state(id).values$();\n }\n\n /**\n * Observe the changes of the given id\n */\n public changes$(id:string):Observable {\n return this.state(id).changes$();\n }\n\n /**\n * Observe the entire set of loaded results\n */\n public observeAll():Observable {\n return this.multiState\n .observeChange()\n .pipe(\n startWith([]),\n auditTime(250),\n map(() => {\n const mapped:T[] = [];\n _.each(this.multiState.getValueOr({}), (state:State) => {\n if (state.value) {\n mapped.push(state.value);\n }\n });\n\n return mapped;\n }),\n );\n }\n\n observeSome(ids:string[]):Observable {\n return combineLatest(\n ids.map(\n (id) => this.observe(id).pipe(startWith(null)),\n ),\n ).pipe(\n map((values) => values.filter((value) => !!value)),\n ) as Observable;\n }\n\n /**\n * Clear a set of cached states.\n * @param ids\n */\n public clearSome(...ids:string[]) {\n ids.forEach((id) => this.multiState.get(id).clear());\n }\n\n /**\n * Returns whether the state\n * @param id ID of the state\n * @return {boolean}\n */\n public stale(id:string):boolean {\n const state = this.multiState.get(id);\n\n // If there is an active request that is still pending\n if (state.hasActivePromiseRequest()) {\n return false;\n }\n\n return state.isPristine() || state.isValueOlderThan(this.cacheDurationInMs);\n }\n\n /**\n * Actually insert the value in the state right now.\n *\n * @param id\n * @param val\n */\n protected putValue(id:string, val:T) {\n this.multiState.get(id).putValue(val);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ApiV3FormResource } from 'core-app/core/apiv3/forms/apiv3-form-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { HalPayloadHelper } from 'core-app/features/hal/schemas/hal-payload.helper';\nimport { GridWidgetResource } from 'core-app/features/hal/resources/grid-widget-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class ApiV3GridForm extends ApiV3FormResource {\n /**\n * We need to override the grid widget extraction\n * to pass the correct payload to the API.\n *\n * @param resource\n * @param schema\n */\n public static extractPayload(resource:HalResource|Object, schema:SchemaResource|null = null):Object {\n if (resource instanceof HalResource && schema) {\n const grid = resource;\n const payload = HalPayloadHelper.extractPayloadFromSchema(grid, schema);\n\n // The widget only states the type of the widget resource but does not explain\n // the widget itself. We therefore have to do that by hand.\n if (payload.widgets) {\n payload.widgets = grid.widgets.map((widget:GridWidgetResource) => ({\n id: widget.id,\n startRow: widget.startRow,\n endRow: widget.endRow,\n startColumn: widget.startColumn,\n endColumn: widget.endColumn,\n identifier: widget.identifier,\n options: widget.options,\n }));\n }\n\n return payload;\n }\n\n return resource || {};\n }\n\n /**\n * Extract payload for the form from the request and optional schema.\n *\n * @param request\n * @param schema\n */\n public extractPayload(request:HalResource|Object, schema:SchemaResource|null = null) {\n return ApiV3GridForm.extractPayload(request, schema);\n }\n}\n","import { ApiV3ResourcePath } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { FormResource } from 'core-app/features/hal/resources/form-resource';\nimport { Observable } from 'rxjs';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { HalPayloadHelper } from 'core-app/features/hal/schemas/hal-payload.helper';\n\nexport class ApiV3FormResource extends ApiV3ResourcePath {\n /**\n * POST to the form resource identified by this path\n * @param request The request payload\n */\n public post(request:Object = {}, schema:SchemaResource|null = null):Observable {\n return this\n .halResourceService\n .post(\n this.path,\n this.extractPayload(request, schema),\n );\n }\n\n /**\n * Extract payload for the form from the request and optional schema.\n *\n * @param request\n * @param schema\n */\n public extractPayload(request:T|Object, schema:SchemaResource|null = null) {\n return HalPayloadHelper.extractPayload(request, schema);\n }\n}\n","import {\n ApiV3Filter,\n ApiV3FilterBuilder,\n} from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\n\n/**\n * Add or append filters to a given base URL.\n * If the URL already had filters, it is appending them, overriding existing filters with the same key.\n *\n * @param basePath The base path to add filters to.\n * @param filters An ApiV3FilterBuilder object containing the filters to add.\n * @param params Additional query parameters to add, if any.\n */\nexport function addFiltersToPath(\n basePath:string,\n filters:ApiV3FilterBuilder,\n params:{ [key:string]:string } = {},\n):URL {\n const url = new URL(basePath, window.location.origin);\n\n if (url.searchParams.has('filters')) {\n const existingFilters = JSON.parse(url.searchParams.get('filters') as string) as ApiV3Filter[];\n url.searchParams.set('filters', JSON.stringify(existingFilters.concat(filters.filters)));\n } else {\n url.searchParams.set('filters', filters.toJson());\n }\n\n Object\n .keys(params)\n .forEach((key) => {\n url.searchParams.set(key, params[key]);\n });\n\n return url;\n}\n","import {\n map,\n mergeMap,\n} from 'rxjs/operators';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport {\n forkJoin,\n Observable,\n of,\n} from 'rxjs';\nimport { ApiV3PaginationParameters } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\n/**\n * The API will resolve pageSize=-1 to the maximum value\n * we can request in one call. This is configurable under administration.\n */\nexport const MAGIC_PAGE_NUMBER = -1;\n\nexport const MAGIC_FILTER_AUTOCOMPLETE_PAGE_SIZE = 100;\n\n/**\n * Right now, we still support HAL-class based collections as well as interface-based responses.\n */\ntype ApiV3CollectionType = CollectionResource|IHALCollection;\n\n/**\n * Extract the elements of either a HAL class or an interface\n */\nfunction extractCollectionElements(collection:ApiV3CollectionType):T[] {\n // Some API endpoints return an undefined _embedded.elements\n // so we ensure we return an array at all times.\n if (collection instanceof HalResource) {\n return collection.elements || [];\n }\n\n return collection._embedded?.elements || [];\n}\n\n/**\n * Get ALL pages of a potentially paginated APIv3 request, returning an array of collections\n *\n * @param request The requesting callback to request specific pages\n * @param pageSize The pageSize parameter to request, defaults to -1 (the maximum magic page number)\n * @return an array of HAL collections\n */\nexport function getPaginatedCollections>(\n request:(params:ApiV3PaginationParameters) => Observable,\n pageSize = MAGIC_PAGE_NUMBER,\n):Observable[]> {\n return request({ pageSize, offset: 1 })\n .pipe(\n mergeMap((collection:C) => {\n const resolvedSize = collection.pageSize;\n\n if (collection.total > collection.count) {\n const remaining = collection.total - collection.count;\n const pagesRemaining = Math.ceil(remaining / resolvedSize);\n const calls = new Array(pagesRemaining)\n .fill(null)\n .map((_, i) => request({ pageSize: resolvedSize, offset: i + 2 }));\n\n // Branch out and fetch all remaining pages in parallel.\n // Afterwards, merge the resulting list\n return forkJoin(...calls)\n .pipe(\n map((results:C[]) => [collection, ...results]),\n );\n }\n\n // The current page is the only page, return the results.\n return of([collection]);\n }),\n );\n}\n\n/**\n * Get ALL pages of a potentially paginated APIv3 request, returning all concatenated elements.\n *\n * @param request The requesting callback to request specific pages\n * @param pageSize The pageSize parameter to request, defaults to -1 (the maximum magic page number)\n * @return an array of plain HAL resources\n */\nexport function getPaginatedResults(\n request:(params:ApiV3PaginationParameters) => Observable>,\n pageSize = MAGIC_PAGE_NUMBER,\n):Observable {\n return getPaginatedCollections(request, pageSize)\n .pipe(\n map(\n (results:ApiV3CollectionType[]) => results.reduce(\n (acc, next) => acc.concat(extractCollectionElements(next)),\n [] as T[],\n ),\n ),\n );\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { Observable } from 'rxjs';\nimport { ApiV3FilterBuilder, FilterOperator } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\n\nexport type ApiV3ListFilter = [string, FilterOperator, boolean|string[]];\n\nexport interface ApiV3PaginationParameters {\n pageSize:number;\n offset:number;\n}\n\nexport interface ApiV3ListParameters extends Partial {\n filters?:ApiV3ListFilter[];\n sortBy?:[string, string][];\n groupBy?:string;\n select?:string[];\n}\n\nexport interface ApiV3ListResourceInterface {\n list(params:ApiV3ListParameters):Observable>;\n}\n\nexport function listParamsString(params?:ApiV3ListParameters):string {\n const queryProps = [];\n\n if (params && params.sortBy) {\n queryProps.push(`sortBy=${JSON.stringify(params.sortBy)}`);\n }\n\n if (params && params.groupBy) {\n queryProps.push(`groupBy=${params.groupBy}`);\n }\n\n // 0 should not be treated as false\n if (params && params.pageSize !== undefined) {\n queryProps.push(`pageSize=${params.pageSize}`);\n }\n\n // 0 should not be treated as false\n if (params && params.offset !== undefined) {\n queryProps.push(`offset=${params.offset}`);\n }\n\n if (params && params.select !== undefined) {\n queryProps.push(`select=${params.select.join(',')}`);\n }\n\n if (params && params.filters) {\n const filters = new ApiV3FilterBuilder();\n\n params.filters.forEach((filterParam) => {\n filters.add(...filterParam);\n });\n\n queryProps.push(filters.toParams());\n }\n\n let queryPropsString = '';\n\n if (queryProps.length) {\n queryPropsString = `?${queryProps.join('&')}`;\n }\n\n return queryPropsString;\n}\n","/* eslint-disable max-classes-per-file */\n\nimport { Constructor } from '@angular/cdk/table';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\n\nimport {\n SimpleResource,\n SimpleResourceCollection,\n} from 'core-app/core/apiv3/paths/path-resources';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { getPaginatedResults } from 'core-app/core/apiv3/helpers/get-paginated-results';\nimport { addFiltersToPath } from 'core-app/core/apiv3/helpers/add-filters-to-path';\n\nexport class ApiV3ResourcePath extends SimpleResource {\n readonly injector = this.apiRoot.injector;\n\n @InjectField() halResourceService:HalResourceService;\n\n constructor(\n protected apiRoot:ApiV3Service,\n readonly basePath:string,\n readonly id:string|number,\n protected parent?:ApiV3ResourcePath|ApiV3ResourceCollection>,\n ) {\n super(basePath, id);\n }\n\n /**\n * Build a singular resource from the current segment\n *\n * @param segment Additional segment to add to the current path\n * @param cls Class to use as return type\n */\n protected subResource(\n segment:string,\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n cls:Constructor = ApiV3GettableResource as unknown as Constructor,\n ):R {\n // eslint-disable-next-line new-cap\n return new cls(this.apiRoot, this.path, segment, this);\n }\n}\n\nexport class ApiV3GettableResource extends ApiV3ResourcePath {\n /**\n * Perform a request to the HalResourceService with the current path\n */\n public get():Observable {\n return this\n .halResourceService\n .get(this.path) as unknown as Observable;\n }\n}\n\nexport class ApiV3GettableResourceCollection> extends ApiV3GettableResource {\n /**\n * Perform a request to the HalResourceService with the current path,\n * loading all pages into a single array\n */\n public getPaginatedResults():Observable {\n return getPaginatedResults(\n (pageParams) => this.halResourceService.request>('get', this.path, pageParams),\n -1,\n );\n }\n}\n\nexport class ApiV3ResourceCollection> extends SimpleResourceCollection {\n readonly injector = this.apiRoot.injector;\n\n @InjectField() http:HttpClient;\n\n @InjectField() halResourceService:HalResourceService;\n\n constructor(\n protected apiRoot:ApiV3Service,\n protected basePath:string,\n segment:string,\n protected resource?:Constructor,\n ) {\n super(basePath, segment, resource);\n }\n\n /**\n * Returns an instance of T for the given singular resource ID.\n *\n * @param input Identifier of the resource, may be a string or number, or a HalResource with id property.\n */\n public id(input:string|number|{ id:string|null }):T {\n let id:string;\n if (typeof input === 'string' || typeof input === 'number') {\n id = input.toString();\n } else {\n id = input.id as string;\n }\n\n return new (this.resource || ApiV3GettableResource)(this.apiRoot, this.path, id, this) as T;\n }\n\n public withOptionalId(id?:string|number|null):this|T {\n if (_.isNil(id)) {\n return this;\n }\n return this.id(id);\n }\n\n /**\n * Returns the path string to the requested endpoint.\n */\n public toString():string {\n return this.path;\n }\n\n /**\n * Returns the path string to the requested endpoint.\n */\n public toPath():string {\n return this.path;\n }\n\n /**\n * Returns a new resource with the path extended with a URL query\n * to match the filters.\n *\n * @param filters filter object to filter with\n * @param params additional URL params to append\n * @param resourceClass The APIV3 resource class to instantiate\n */\n public filtered>(\n filters:ApiV3FilterBuilder,\n params:{ [key:string]:string } = {},\n resourceClass?:Constructor,\n ):R {\n const url = addFiltersToPath(this.path, filters, params);\n const cls = resourceClass || ApiV3GettableResourceCollection;\n // eslint-disable-next-line new-cap\n return new cls(this.apiRoot, url.pathname, url.search, this) as R;\n }\n\n /**\n * Signal the endpoint with a given set of filters and select params.\n * Returns an observable response.\n *\n * @param filters filter object to filter with\n * @param select The signalling parameters to request\n * @param params additional URL params to append\n */\n public signalled(filters:ApiV3FilterBuilder, select:string[], params:{ [key:string]:string } = {}):Observable {\n const url = addFiltersToPath(this.path, filters, { ...params, select: select.join(',') });\n\n return this\n .http\n .get(url.toString());\n }\n\n /**\n * Build a singular resource from the current segment\n *\n * @param segment Additional segment to add to the current path\n * @param cls Class to use as return type\n */\n protected subResource(\n segment:string,\n cls:Constructor = ApiV3GettableResource as unknown as Constructor,\n ):R {\n // eslint-disable-next-line new-cap\n return new cls(this.apiRoot, this.path, segment, this);\n }\n}\n","import { Constructor } from '@angular/cdk/table';\n\n/**\n * Simple resource collection to construct paths for RESTful resources.\n * Base class for APIV3 and BCF API helpers\n */\nexport class SimpleResourceCollection {\n // Base path\n public readonly path:string;\n\n constructor(protected basePath:string, readonly segment:string, protected resource?:Constructor) {\n this.path = `${this.basePath}/${segment}`;\n }\n\n public id(id:string|number):T {\n return new (this.resource || SimpleResource)(this.path, id) as T;\n }\n\n /**\n * Returns either the collection itself, or the resource\n * located by the ID when present.\n *\n * TypeScript will reduce available endpoints to anything available\n * in this collection AND the resource.\n *\n * @param id\n */\n public withOptionalId(id?:string|number):this|T {\n if (_.isNil(id)) {\n return this;\n }\n return this.id(id);\n }\n\n public toString():string {\n return this.path;\n }\n\n public toPath():string {\n return this.path;\n }\n}\n\n/**\n * Singular RESTful resource object identified by a base path and ID\n */\nexport class SimpleResource {\n public readonly path:string;\n\n constructor(readonly basePath:string, readonly segment:string|number) {\n const separator = segment.toString().startsWith('?') ? '' : '/';\n this.path = `${this.basePath}${separator}${segment}`;\n }\n\n public toString() {\n return this.path;\n }\n\n public toPath():string {\n return this.path;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class BrowserDetector {\n constructor(@Inject(DOCUMENT) private documentElement:Document) {\n }\n\n /**\n * Detect mobile browser based on the Rails determined UA\n * and resulting body class.\n */\n public get isMobile() {\n return this.hasBodyClass('-browser-mobile');\n }\n\n /**\n * ToDo: Remove all occurrences once Edge on Chromium is released\n */\n public get isEdge() {\n return this.hasBodyClass('-browser-edge');\n }\n\n private hasBodyClass(name:string):boolean {\n return this.documentElement.body.classList.contains(name);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceService {\n public mobileWidthThreshold = 544;\n public smallDesktopWidthThreshold = 1012;\n\n public get isMobile():boolean {\n return (window.innerWidth < this.mobileWidthThreshold);\n }\n\n public get isSmallDesktop():boolean {\n return (window.innerWidth < this.smallDesktopWidthThreshold);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport * as moment from 'moment';\n\nimport { ConfigurationResource } from 'core-app/features/hal/resources/configuration-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService {\n // fetches configuration from the ApiV3 endpoint\n // TODO: this currently saves the request between page reloads,\n // but could easily be stored in localStorage\n private configuration:ConfigurationResource;\n\n public constructor(\n private readonly apiV3Service:ApiV3Service,\n ) { }\n\n public initialize():Promise {\n return this.loadConfiguration();\n }\n\n public commentsSortedInDescendingOrder():boolean {\n return this.userPreference('commentSortDescending');\n }\n\n public warnOnLeavingUnsaved():boolean {\n return this.userPreference('warnOnLeavingUnsaved');\n }\n\n public autoHidePopups():boolean {\n return this.userPreference('autoHidePopups');\n }\n\n public isTimezoneSet():boolean {\n return !!this.timezone();\n }\n\n public isDefaultTimezoneSet():boolean {\n return !!this.defaultTimezone();\n }\n\n public timezone():string {\n return this.userPreference('timeZone');\n }\n\n public isDirectUploads():boolean {\n return !!this.prepareAttachmentURL;\n }\n\n public get prepareAttachmentURL():string {\n return _.get(this.configuration, ['prepareAttachment', 'href']) as string;\n }\n\n public get maximumAttachmentFileSize():number {\n return this.systemPreference('maximumAttachmentFileSize');\n }\n\n public get perPageOptions():number[] {\n return this.systemPreference('perPageOptions');\n }\n\n public dateFormatPresent():boolean {\n return !!this.systemPreference('dateFormat');\n }\n\n public dateFormat():string {\n return this.systemPreference('dateFormat');\n }\n\n public durationFormat():string {\n return this.systemPreference('durationFormat');\n }\n\n public hoursPerDay():number {\n return this.systemPreference('hoursPerDay');\n }\n\n public hoursPerWeek():number {\n return this.systemPreference('hoursPerWeek');\n }\n\n public daysPerMonth():number {\n return this.systemPreference('daysPerMonth');\n }\n\n public timeFormatPresent():boolean {\n return !!this.systemPreference('timeFormat');\n }\n\n public timeFormat():string {\n return this.systemPreference('timeFormat');\n }\n\n public defaultTimezone():string {\n return this.systemPreference('userDefaultTimezone');\n }\n\n public startOfWeekPresent():boolean {\n return !!this.systemPreference('startOfWeek');\n }\n\n public startOfWeek():number {\n if (this.startOfWeekPresent()) {\n return this.systemPreference('startOfWeek');\n }\n return moment.localeData(I18n.locale).firstDayOfWeek();\n }\n\n public get hostName():string {\n return this.systemPreference('hostName');\n }\n\n public get activeFeatureFlags():string[] {\n return this.systemPreference('activeFeatureFlags');\n }\n\n private loadConfiguration() {\n return this\n .apiV3Service\n .configuration\n .get()\n .toPromise()\n .then((configuration:ConfigurationResource) => {\n this.configuration = configuration;\n });\n }\n\n private userPreference(pref:string):T {\n return _.get(this.configuration, ['userPreferences', pref]) as T;\n }\n\n private systemPreference(pref:string):T {\n return _.get(this.configuration, pref) as T;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\n@Injectable({ providedIn: 'root' })\nexport class CurrentProjectService {\n private currentId:string|null = null;\n private currentName:string|null = null;\n private currentIdentifier:string|null = null;\n\n constructor(\n private PathHelper:PathHelperService,\n private apiV3Service:ApiV3Service,\n ) {\n this.detect();\n }\n\n public get inProjectContext():boolean {\n return this.currentId !== null;\n }\n\n public get path():string|null {\n if (this.currentIdentifier) {\n return this.PathHelper.projectPath(this.currentIdentifier);\n }\n\n return null;\n }\n\n public get apiv3Path():string|null {\n if (this.currentId) {\n return this.apiV3Service.projects.id(this.currentId).toString();\n }\n\n return null;\n }\n\n public get id():string|null {\n return this.currentId;\n }\n\n public get name():string|null {\n return this.currentName;\n }\n\n public get identifier():string|null {\n return this.currentIdentifier;\n }\n\n /**\n * Detect the current project from its meta tag.\n */\n public detect() {\n const element:HTMLMetaElement|null = document.querySelector('meta[name=current_project]');\n if (element) {\n this.currentId = element.dataset.projectId as string;\n this.currentName = element.dataset.projectName as string;\n this.currentIdentifier = element.dataset.projectIdentifier as string;\n } else {\n this.currentId = null;\n this.currentName = null;\n this.currentIdentifier = null;\n }\n }\n}\n","import { Injector, NgModule } from '@angular/core';\n\nimport { CurrentUserService } from './current-user.service';\nimport { CurrentUserStore } from './current-user.store';\nimport { CurrentUserQuery } from './current-user.query';\nimport { firstValueFrom } from 'rxjs';\n\nfunction loadUserMetadata(currentUserService:CurrentUserService) {\n const userMeta = document.querySelectorAll('meta[name=current_user]')[0] as HTMLElement|undefined;\n currentUserService.setUser({\n id: userMeta?.dataset.id || null,\n name: userMeta?.dataset.name || null,\n loggedIn: userMeta?.dataset.loggedIn === 'true',\n });\n}\n\nexport function bootstrapModule(injector:Injector):void {\n const currentUserService = injector.get(CurrentUserService);\n\n window.ErrorReporter\n .addHook(\n () => firstValueFrom(currentUserService.user$)\n .then(({ id }) => ({ user: id || 'anon' })),\n );\n\n loadUserMetadata(currentUserService);\n document.addEventListener('turbo:load', () => loadUserMetadata(currentUserService));\n}\n\n@NgModule({\n providers: [\n CurrentUserService,\n CurrentUserStore,\n CurrentUserQuery,\n ],\n})\nexport class CurrentUserModule {\n constructor(injector:Injector) {\n bootstrapModule(injector);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Query } from '@datorama/akita';\nimport { CurrentUserState, CurrentUserStore } from './current-user.store';\n\n@Injectable()\nexport class CurrentUserQuery extends Query {\n constructor(protected store:CurrentUserStore) {\n super(store);\n }\n\n isLoggedIn$ = this.select((state) => !!state.loggedIn);\n\n user$ = this.select((user) => user);\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3ListFilter } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { CapabilitiesResourceService } from 'core-app/core/state/capabilities/capabilities.service';\nimport { ICapability } from 'core-app/core/state/capabilities/capability.model';\nimport { Observable, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, take } from 'rxjs/operators';\nimport { CurrentUserQuery } from './current-user.query';\nimport { CurrentUser, CurrentUserStore } from './current-user.store';\n\n@Injectable({ providedIn: 'root' })\nexport class CurrentUserService {\n constructor(\n private apiV3Service:ApiV3Service,\n private currentUserStore:CurrentUserStore,\n private currentUserQuery:CurrentUserQuery,\n private capabilitiesService:CapabilitiesResourceService,\n ) {\n this.setupLegacyDataListeners();\n }\n\n public isLoggedIn$ = this.currentUserQuery.isLoggedIn$;\n\n public user$ = this.currentUserQuery.user$;\n\n /**\n * Set the current user object\n *\n * This refetches the global and current project capabilities\n */\n public setUser(user:CurrentUser):void {\n this.currentUserStore.update((state) => ({\n ...state,\n ...user,\n }));\n }\n\n public isLoggedInAndHasCapabalities$(action:string|string[], projectContext:string|null):Observable {\n return combineLatest([\n this.isLoggedIn$,\n this.hasCapabilities$(action, projectContext),\n ]).pipe(\n map(([isLoggedIn, hasCapabilities]) => isLoggedIn && hasCapabilities),\n );\n }\n\n /**\n * Returns the set of capabilities for the given context and/or actions\n */\n public capabilities$(actions:string[] = [], projectContext:string|null):Observable {\n return this\n .principalFilter$()\n .pipe(\n map((userFilter) => {\n const filters:ApiV3ListFilter[] = _.compact([userFilter]);\n\n if (projectContext) {\n filters.push(['context', '=', [projectContext === 'global' || projectContext === 'projects' ? 'g' : `p${projectContext}`]]);\n }\n\n if (actions.length > 0) {\n filters.push(['action', '=', actions]);\n }\n\n return { filters, pageSize: -1 };\n }),\n switchMap((params) => this.capabilitiesService.requireCollection(params)),\n );\n }\n\n /**\n * Returns an Observable indicating whether the current user has the required capabilities\n * in the provided context.\n */\n public hasCapabilities$(action:string|string[], projectContext:string|null):Observable {\n const actions = _.castArray(action);\n return this\n .capabilities$(actions, projectContext)\n .pipe(\n map((capabilities) => actions.reduce(\n (acc, contextAction) => acc && !!capabilities.find((cap) => cap._links.action.href.endsWith(`/api/v3/actions/${contextAction}`)),\n capabilities.length > 0,\n )),\n distinctUntilChanged(),\n );\n }\n\n /**\n * Returns an Observable indicating whether the current user\n * has any of the required capabilities in the provided context.\n */\n public hasAnyCapabilityOf$(actions:string|string[], projectContext:string|null):Observable {\n const actionsToFilter = _.castArray(actions);\n return this\n .capabilities$(actionsToFilter, projectContext)\n .pipe(\n map((capabilities) => capabilities.reduce(\n (acc, cap) => acc || !!actionsToFilter.find((action) => cap._links.action.href.endsWith(`/api/v3/actions/${action}`)),\n false,\n )),\n distinctUntilChanged(),\n );\n }\n\n /**\n * Returns a principal filter for the current user.\n */\n private principalFilter$():Observable {\n return this\n .user$\n .pipe(\n take(1),\n map((user) => {\n if (user.id === null) {\n return null;\n }\n\n return ['principal', '=', [user.id]];\n }),\n );\n }\n\n // Everything below this is deprecated legacy interfacing and should not be used\n\n private setupLegacyDataListeners() {\n this.currentUserQuery.user$.subscribe((user) => (this._user = user));\n this.currentUserQuery.isLoggedIn$.subscribe((isLoggedIn) => (this._isLoggedIn = isLoggedIn));\n }\n\n private _isLoggedIn = false;\n\n /** @deprecated Use the store mechanism `currentUserQuery.isLoggedIn$` */\n public get isLoggedIn():boolean {\n return this._isLoggedIn;\n }\n\n private _user:CurrentUser = {\n id: null,\n name: null,\n loggedIn: false,\n };\n\n /** @deprecated Use the store mechanism `currentUserQuery.user$` */\n public get userId():string {\n return this._user.id || '';\n }\n\n /** @deprecated Use the store mechanism `currentUserQuery.user$` */\n public get name():string {\n return this._user.name || '';\n }\n\n /** @deprecated Use the store mechanism `currentUserQuery.user$` */\n public get href():string {\n return `/api/v3/users/${this.userId}`;\n }\n\n /** @deprecated Use `I18nService.locale` instead */\n public get language():string {\n return I18n.locale || 'en';\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { Store, StoreConfig } from '@datorama/akita';\n\nexport interface CurrentUser {\n id:string|null;\n name:string|null;\n loggedIn:boolean|null;\n}\n\nexport interface CurrentUserState extends CurrentUser {\n}\n\nexport function createInitialState():CurrentUserState {\n return {\n id: null,\n name: null,\n loggedIn: null,\n };\n}\n\n@Injectable()\n@StoreConfig({ name: 'current-user' })\nexport class CurrentUserStore extends Store {\n constructor() {\n super(createInitialState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport * as moment from 'moment-timezone';\nimport { Moment } from 'moment';\nimport { outputChronicDuration } from '../../shared/helpers/chronic_duration';\n\n@Injectable({ providedIn: 'root' })\nexport class TimezoneService {\n constructor(\n readonly configurationService:ConfigurationService,\n readonly I18n:I18nService,\n ) { }\n\n /**\n * Returns the user's configured timezone or guesses it through moment\n */\n public userTimezone():string {\n return this.configurationService.isTimezoneSet() ? this.configurationService.timezone() : moment.tz.guess();\n }\n\n /**\n * Takes a utc date time string and turns it into\n * a local date time moment object.\n */\n public parseDatetime(datetime:string, format?:string):Moment {\n return moment\n .utc(datetime, format)\n .tz(this.userTimezone());\n }\n\n public parseDate(date:Date|string, format?:string):Moment {\n return moment(date, format);\n }\n\n /**\n * Parses the specified datetime and applies the user's configured timezone, if any.\n *\n * This will effectfully transform the [server] provided datetime object to the user's configured local timezone.\n *\n * @param {String} datetime in 'YYYY-MM-DDTHH:mm:ssZ' format\n * @returns {Moment}\n */\n public parseISODatetime(datetime:string):Moment {\n return this.parseDatetime(datetime, 'YYYY-MM-DDTHH:mm:ssZ');\n }\n\n public parseISODate(date:string):Moment {\n return this.parseDate(date, 'YYYY-MM-DD');\n }\n\n public formattedDate(date:string, format = this.getDateFormat()):string {\n const d = this.parseDate(date);\n return d.format(format);\n }\n\n /**\n * Returns the number of days from today the given dateString is apart.\n * Negative means the date lies in the past.\n * @param dateString\n */\n public daysFromToday(dateString:string):number {\n const date = this.parseDate(dateString);\n const today = moment().startOf('day');\n\n return date.diff(today, 'days');\n }\n\n public formattedTime(datetimeString:string, format?:string):string {\n return this.parseDatetime(datetimeString).format(format || this.getTimeFormat());\n }\n\n public formattedDatetime(datetimeString:string):string {\n const c = this.formattedDatetimeComponents(datetimeString);\n return `${c[0]} ${c[1]}`;\n }\n\n public formattedRelativeDateTime(datetimeString:string):string {\n const d = this.parseDatetime(datetimeString);\n return d.fromNow();\n }\n\n public formattedDatetimeComponents(datetimeString:string):string[] {\n const d = this.parseDatetime(datetimeString);\n return [\n d.format(this.getDateFormat()),\n d.format(this.getTimeFormat()),\n ];\n }\n\n public toSeconds(durationString:string):number {\n return Number(moment.duration(durationString).asSeconds().toFixed(2));\n }\n\n public toHours(durationString:string):number {\n return Number(moment.duration(durationString).asHours().toFixed(2));\n }\n\n public toDays(durationString:string):number {\n return Number(moment.duration(durationString).asDays().toFixed(2));\n }\n\n public toISODuration(input:string|number, unit:'hours'|'days'):string {\n return moment.duration(input, unit).toISOString();\n }\n\n public utcDateToISODateString(date:Date):string {\n return moment.utc(date).format('YYYY-MM-DD');\n }\n\n public utcDatesToISODateStrings(dates:Date[]):string[] {\n return dates.map((date) => this.utcDateToISODateString(date));\n }\n\n public formattedDuration(durationString:string, unit:'hour'|'days' = 'hour'):string {\n switch (unit) {\n case 'hour':\n return this.I18n.t('js.units.hour', {\n count: this.toHours(durationString),\n });\n case 'days':\n return this.I18n.t('js.units.day', {\n count: this.toDays(durationString),\n });\n default:\n // Case fallthrough for eslint\n return '';\n }\n }\n\n public formattedChronicDuration(durationString:string, opts = {\n format: this.configurationService.durationFormat(),\n hoursPerDay: this.configurationService.hoursPerDay(),\n daysPerMonth: this.configurationService.daysPerMonth(),\n }):string {\n // Keep in sync with app/services/duration_converter#output\n const seconds = this.toSeconds(durationString);\n\n return outputChronicDuration(seconds, opts) || '0h';\n }\n\n public formattedISODate(date:any):string {\n return this.parseDate(date).format('YYYY-MM-DD');\n }\n\n public formattedISODateTime(datetime:any):string {\n return datetime.format();\n }\n\n public isValidISODate(date:any):boolean {\n return this.isValid(date, 'YYYY-MM-DD');\n }\n\n public isValidISODateTime(dateTime:string):boolean {\n return this.isValid(dateTime, 'YYYY-MM-DDTHH:mm:ssZ');\n }\n\n public isValid(date:string, dateFormat:string):boolean {\n const format = dateFormat || this.getDateFormat();\n return moment(date, [format], true).isValid();\n }\n\n public getDateFormat():string {\n return this.configurationService.dateFormatPresent() ? this.configurationService.dateFormat() : 'L';\n }\n\n public getTimeFormat():string {\n return this.configurationService.timeFormatPresent() ? this.configurationService.timeFormat() : 'LT';\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Injectable,\n Injector,\n} from '@angular/core';\nimport * as moment from 'moment';\nimport {\n take,\n tap,\n} from 'rxjs/operators';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WeekdayResourceService } from 'core-app/core/state/days/weekday.service';\nimport { IWeekday } from 'core-app/core/state/days/weekday.model';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport { Moment } from 'moment';\n\n@Injectable({ providedIn: 'root' })\nexport class WeekdayService {\n @InjectField() weekdaysService:WeekdayResourceService;\n\n private weekdays:IWeekday[];\n\n constructor(\n readonly injector:Injector,\n ) {}\n\n /**\n * @param date The iso day number (1-7) or a date instance\n * @return {boolean} whether the given iso day is working or not\n */\n public isNonWorkingDay(date:Moment|Date|number):boolean {\n const isoDayOfWeek = (typeof date === 'number') ? date : moment(date).isoWeekday();\n return !!(this.weekdays || []).find((wd) => wd.day === isoDayOfWeek && !wd.working);\n }\n\n public get nonWorkingDays():IWeekday[] {\n return this.weekdays.filter((day) => !day.working);\n }\n\n loadWeekdays():Observable {\n if (this.weekdays) {\n return of(this.weekdays);\n }\n\n return this\n .weekdaysService\n .requireCollection()\n .pipe(\n take(1),\n tap((weekdays) => {\n this.weekdays = weekdays;\n }),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { enterpriseEditionUrl } from 'core-app/core/setup/globals/constants.const';\n\n@Injectable({ providedIn: 'root' })\nexport class BannersService {\n private readonly _banners:boolean = true;\n\n constructor(@Inject(DOCUMENT) protected documentElement:Document) {\n this._banners = documentElement.body.classList.contains('ee-banners-visible');\n }\n\n public get eeShowBanners():boolean {\n return this._banners;\n }\n\n public getEnterPriseEditionUrl({ referrer, hash }:{ referrer?:string, hash?:string } = {}) {\n const url = new URL(enterpriseEditionUrl);\n if (referrer) {\n url.searchParams.set('op_referrer', referrer);\n }\n\n if (hash) {\n url.hash = hash;\n }\n\n return url.toString();\n }\n\n public conditional(bannersVisible?:() => void, bannersNotVisible?:() => void) {\n this._banners ? this.callMaybe(bannersVisible) : this.callMaybe(bannersNotVisible);\n }\n\n private callMaybe(func?:Function) {\n func && func();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { IFCGonDefinition } from '../../features/bim/ifc_models/pages/viewer/ifc-models-data.service';\n\ndeclare global {\n interface Window {\n gon:GonType;\n }\n}\n\nexport interface GonType {\n [key:string]:unknown;\n ifc_models:IFCGonDefinition;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GonService {\n get(...path:string[]):unknown|null {\n return _.get(window.gon, path, null);\n }\n\n /**\n * Get the gon object\n */\n get gon():GonType {\n return window.gon;\n }\n}\n","import { Title } from '@angular/platform-browser';\nimport { Injectable } from '@angular/core';\n\nconst titlePartsSeparator = ' | ';\n\n@Injectable({ providedIn: 'root' })\nexport class OpTitleService {\n constructor(private titleService:Title) {\n }\n\n public get current():string {\n return this.titleService.getTitle();\n }\n\n public get base():string {\n const appTitle = document.querySelector('meta[name=app_title]') as HTMLMetaElement;\n return appTitle.content;\n }\n\n public get titleParts():string[] {\n return this.current.split(titlePartsSeparator);\n }\n\n public setFirstPart(value:string) {\n if (this.current.includes(this.base) && this.current.includes(titlePartsSeparator)) {\n const parts = this.titleParts;\n parts[0] = value;\n this.titleService.setTitle(parts.join(titlePartsSeparator));\n } else {\n const newTitle = [value, this.base].join(titlePartsSeparator);\n this.titleService.setTitle(newTitle);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NgSelectConfig } from '@ng-select/ng-select';\nimport { I18n } from 'i18n-js';\nimport { FormatNumberOptions, TranslateOptions } from 'i18n-js/src/typing';\n\n@Injectable({ providedIn: 'root' })\nexport class I18nService {\n private i18n:I18n = window.I18n;\n private instanceLocale:string;\n\n constructor(\n private config:NgSelectConfig,\n ) {\n const meta = document.querySelector('meta[name=openproject_initializer]');\n this.instanceLocale = meta?.dataset.instancelocale || 'en';\n\n this.config.addTagText = this.t('js.autocomplete_ng_select.add_tag');\n this.config.clearAllText = this.t('js.autocomplete_ng_select.clear_all');\n this.config.loadingText = this.t('js.autocomplete_ng_select.loading');\n this.config.notFoundText = this.t('js.autocomplete_ng_select.not_found');\n this.config.typeToSearchText = this.t('js.autocomplete_ng_select.type_to_search');\n }\n\n public get locale():string {\n return this.i18n.locale;\n }\n\n public t(input:string, options:Partial = {}) {\n return this.i18n.t(input, options);\n }\n\n public instance_locale_translate(input:string, options:Partial = {}) {\n const locale = this.i18n.locale;\n try {\n this.i18n.locale = this.instanceLocale;\n return this.t(input, options);\n } finally {\n this.i18n.locale = locale;\n }\n }\n\n public toTime = this.i18n.toTime.bind(this.i18n);\n\n public toNumber(val:string|number, options:Partial):string {\n return this.i18n.localize('number', val, options);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nexport const indicatorLocationSelector = '.loading-indicator--location';\nexport const indicatorBackgroundSelector = '.loading-indicator--background';\n\nexport function withLoadingIndicator(indicator:LoadingIndicator, delayStopTime?:number):(source:Observable) => Observable {\n return (source$:Observable) => {\n indicator.start();\n\n return source$.pipe(\n tap({\n next: () => indicator.delayedStop(delayStopTime),\n error: () => indicator.stop(),\n complete: () => indicator.stop(),\n }),\n );\n };\n}\n\nexport function withDelayedLoadingIndicator(indicator:() => LoadingIndicator):(source:Observable) => Observable {\n return (source$:Observable) => {\n setTimeout(() => indicator().start());\n\n return source$.pipe(\n tap({\n next: () => undefined,\n error: () => indicator().stop(),\n complete: () => indicator().stop(),\n }),\n );\n };\n}\n\nexport class LoadingIndicator {\n private indicatorTemplate =\n `
\n
\n
\n
\n
\n `;\n\n constructor(public indicator:JQuery) {\n }\n\n public set promise(promise:Promise) {\n this.start();\n\n // Keep bound method around\n const stopper = () => this.delayedStop();\n\n promise\n .then(stopper)\n .catch(stopper);\n }\n\n public start() {\n // If we're currently having an active indicator, remove that one\n this.stop();\n this.indicator.prepend(this.indicatorTemplate);\n }\n\n public delayedStop(time = 25) {\n setTimeout(() => this.stop(), time);\n }\n\n public stop() {\n this.indicator.find('.loading-indicator--background').remove();\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LoadingIndicatorService {\n // Provide shortcut to the primarily used indicators\n public get table() {\n return this.indicator('table');\n }\n\n public get wpDetails() {\n return this.indicator('wpDetails');\n }\n\n public get modal() {\n return this.indicator('modal');\n }\n\n // Returns a getter function to an indicator\n // in case the indicator is shown conditionally\n public getter(name:string):() => LoadingIndicator {\n return this.indicator.bind(this, name);\n }\n\n // Return an indicator by name or element\n public indicator(indicator:string|JQuery):LoadingIndicator {\n if (typeof indicator === 'string') {\n indicator = this.getIndicatorAt(indicator);\n }\n\n return new LoadingIndicator(indicator);\n }\n\n private getIndicatorAt(name:string):JQuery {\n return jQuery(indicatorLocationSelector).filter(`[data-indicator-name=\"${name}\"]`);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { DeviceService } from 'core-app/core/browser/device.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\n@Injectable({ providedIn: 'root' })\nexport class MainMenuToggleService {\n public toggleTitle:string;\n\n private elementWidth:number;\n\n private elementMinWidth = 11;\n\n private readonly defaultWidth:number = 230;\n\n private readonly localStorageKey:string = 'openProject-mainMenuWidth';\n\n private readonly localStorageStateKey:string = 'openProject-mainMenuCollapsed';\n\n @InjectField() currentProject:CurrentProjectService;\n\n private global = (window as any);\n\n private htmlNode = document.getElementsByTagName('html')[0];\n\n private mainMenu = jQuery('#main-menu')[0]; // main menu, containing sidebar and resizer\n\n // Title needs to be sync in main-menu-toggle.component.ts and main-menu-resizer.component.ts\n private titleData = new BehaviorSubject('');\n\n public titleData$ = this.titleData.asObservable();\n\n // Notes all changes of the menu size (currently needed in wp-resizer.component.ts)\n private changeData = new BehaviorSubject({});\n\n public changeData$ = this.changeData.asObservable();\n private wasHiddenDueToResize = false;\n\n private wasCollapsedByUser = false;\n\n constructor(\n protected I18n:I18nService,\n public injector:Injector,\n readonly deviceService:DeviceService,\n ) {\n this.initializeMenu();\n // Add resize event listener\n window.addEventListener('resize', this.onWindowResize.bind(this));\n }\n\n public initializeMenu():void {\n if (!this.mainMenu) {\n return;\n }\n\n this.elementWidth = parseInt(window.OpenProject.guardedLocalStorage(this.localStorageKey) as string);\n const menuCollapsed = window.OpenProject.guardedLocalStorage(this.localStorageStateKey) === 'true';\n\n // Set the initial value of the collapse tracking flag\n this.wasCollapsedByUser = menuCollapsed;\n\n if (!this.elementWidth) {\n this.saveWidth(this.mainMenu.offsetWidth);\n } else if (menuCollapsed) {\n this.closeMenu();\n } else {\n this.setWidth();\n }\n\n this.adjustMenuVisibility();\n }\n\n private onWindowResize():void {\n this.adjustMenuVisibility();\n }\n\n private adjustMenuVisibility():void {\n if (window.innerWidth >= 1012) {\n // On larger screens, reopen the menu if it was hidden only due to screen resizing\n if (this.wasHiddenDueToResize && !this.wasCollapsedByUser) {\n this.setWidth(this.defaultWidth);\n this.wasHiddenDueToResize = false; // Reset the flag since the menu is now shown\n }\n } else if (this.showNavigation) {\n this.closeMenu();\n this.wasHiddenDueToResize = true; // Indicate that the menu was hidden due to resize\n }\n }\n\n public toggleNavigation(event?:JQuery.TriggeredEvent|Event):void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n // Update the user collapse flag and clear `wasHiddenDueToResize`\n this.wasCollapsedByUser = this.showNavigation;\n this.wasHiddenDueToResize = false; // Reset because a manual toggle overrides any resize behavior\n\n if (this.showNavigation) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n\n // Save the collapsed state in localStorage\n window.OpenProject.guardedLocalStorage(this.localStorageStateKey, String(!this.showNavigation));\n // Set focus on first visible main menu item.\n // This needs to be called after AngularJS has rendered the menu, which happens some when after(!) we leave this\n // method here. So we need to set the focus after a timeout.\n setTimeout(() => {\n jQuery('#main-menu [class*=\"-menu-item\"]:visible').first().focus();\n }, 500);\n }\n\n public closeMenu():void {\n this.setWidth(0);\n jQuery('.searchable-menu--search-input').blur();\n }\n\n public openMenu():void {\n this.setWidth(this.defaultWidth);\n }\n\n public setWidth(width?:number):void {\n if (width !== undefined) {\n this.elementWidth = width;\n }\n\n // Apply the width directly to the main menu\n this.mainMenu.style.width = `${this.elementWidth}px`;\n\n // Apply to root CSS variable for any related layout adjustments\n this.htmlNode.style.setProperty('--main-menu-width', `${this.elementWidth}px`);\n\n // Check if menu is open or closed and apply CSS class if needed\n this.toggleClassHidden();\n this.snapBack();\n this.setToggleTitle();\n\n // Save the width if it's open\n if (this.elementWidth > 0) {\n window.OpenProject.guardedLocalStorage(this.localStorageKey, String(this.elementWidth));\n }\n }\n\n public saveWidth(width?:number):void {\n this.setWidth(width);\n window.OpenProject.guardedLocalStorage(this.localStorageKey, String(this.elementWidth));\n window.OpenProject.guardedLocalStorage(this.localStorageStateKey, String(this.elementWidth === 0));\n }\n\n public get showNavigation():boolean {\n return this.elementWidth >= this.elementMinWidth;\n }\n\n private snapBack():void {\n if (this.elementWidth < this.elementMinWidth) {\n this.elementWidth = 0;\n }\n }\n\n private setToggleTitle():void {\n if (this.showNavigation) {\n this.toggleTitle = this.I18n.t('js.label_hide_project_menu');\n } else {\n this.toggleTitle = this.I18n.t('js.label_expand_project_menu');\n }\n this.titleData.next(this.toggleTitle);\n }\n\n private toggleClassHidden():void {\n const isHidden = this.elementWidth < this.elementMinWidth;\n const hideElements = jQuery('.can-hide-navigation');\n hideElements.toggleClass('hidden-navigation', isHidden);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TurboElement } from 'core-typings/turbo';\nimport { StateService } from '@uirouter/core';\n\n@Injectable({ providedIn: 'root' })\nexport class SubmenuService {\n constructor(protected $state:StateService) {}\n\n reloadSubmenu(selectedQueryId:string|null):void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment\n const menuIdentifier:string|undefined = this.$state.current.data.sideMenuOptions?.sidemenuId;\n\n if (menuIdentifier) {\n const menu = (document.getElementById(menuIdentifier) as HTMLElement&TurboElement);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const sideMenuOptions = this.$state.$current.data?.sideMenuOptions as { hardReloadOnBaseRoute?:boolean, defaultQuery?:string };\n const currentSrc = menu.getAttribute('src');\n\n if (currentSrc && menu) {\n const frameUrl = new URL(currentSrc);\n const defaultQuery = sideMenuOptions.defaultQuery;\n\n if (selectedQueryId) {\n // If there is a default query passed in the route definition, it means that id passed as argument and not as parameter,\n // e.g. calendars/:id, team_planner/:id, ...\n // Otherwise, we will just replace the params\n if (defaultQuery) {\n frameUrl.search = `?id=${selectedQueryId}`;\n } else {\n frameUrl.search = `?query_id=${selectedQueryId}`;\n }\n }\n\n // Override the frame src to enforce a reload\n menu.setAttribute('src', frameUrl.href);\n }\n }\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { input } from '@openproject/reactivestates';\nimport { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport type ModelLinks = { [action:string]:any };\nexport type ModelLinksHash = { [model:string]:ModelLinks };\n\n@Injectable({ providedIn: 'root' })\nexport class AuthorisationService {\n private links = input({});\n\n public initModelAuth(modelName:string, modelLinks:ModelLinks) {\n this.links.doModify((value:ModelLinksHash) => {\n const links = { ...value };\n links[modelName] = modelLinks;\n return links;\n });\n }\n\n public observeUntil(unsubscribe:Observable) {\n return this.links.values$().pipe(takeUntil(unsubscribe));\n }\n\n public can(modelName:string, action:string) {\n const links:ModelLinksHash = this.links.getValueOr({});\n return links[modelName] && (action in links[modelName]);\n }\n\n public cannot(modelName:string, action:string) {\n return !this.can(modelName, action);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\n/// \n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n private _currentURL = document.location.href;\n\n private _urlChanged$:Subject = new Subject();\n\n public urlChanged$ = this._urlChanged$.asObservable();\n\n constructor() {\n if ('navigation' in window) {\n window.navigation.addEventListener('navigate', (event:NavigateEvent) => {\n this.handleURLChange(event.destination.url);\n });\n } else {\n // Browser does not support navigation API, use a slower setInterval\n setInterval(() => this.handleURLChange(document.location.href), 250);\n }\n }\n\n private handleURLChange(url:string):void {\n if (url !== this._currentURL) {\n this._urlChanged$.next(url);\n this._currentURL = url;\n }\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay, startWith } from 'rxjs/operators';\nimport { NavigationService } from 'core-app/core/navigation/navigation.service';\n\n@Injectable({ providedIn: 'root' })\nexport class UrlParamsService {\n constructor(private navigation:NavigationService) {\n }\n\n public get(key:string):string|null {\n return this.searchParams.get(key);\n }\n\n public pathMatching(key:RegExp, url = window.location.pathname):string|null {\n return url.match(key)?.[1] || null;\n }\n\n public pathMatching$(key:RegExp):Observable {\n return this\n .navigation\n .urlChanged$\n .pipe(\n startWith(document.location.href),\n map((url) => this.pathMatching(key, url)),\n shareReplay(1),\n );\n }\n\n public has(key:string):boolean {\n return this.searchParams.has(key);\n }\n\n private get searchParams():URLSearchParams {\n return new URLSearchParams(window.location.search);\n }\n}\n","import { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class ApiV3Paths {\n readonly apiV3Base:string;\n\n constructor(basePath:string) {\n this.apiV3Base = `${basePath}/api/v3`;\n }\n\n public get openApiSpecPath():string {\n return `${this.apiV3Base}/spec.json`;\n }\n\n /**\n * Preview markup path\n *\n * Primarily used from ckeditor-augmented-textarea\n * https://github.com/opf/commonmark-ckeditor-build/\n *\n * @param context\n */\n public previewMarkup(context:string) {\n const base = `${this.apiV3Base}/render/markdown`;\n\n if (context) {\n return `${base}?context=${context}`;\n }\n return base;\n }\n\n /**\n * Principals autocompleter path\n *\n * Primarily used from ckeditor-augmented-textarea\n * https://github.com/opf/commonmark-ckeditor-build/\n *\n */\n public principals(workPackage:WorkPackageResource, term:string|null) {\n const filters:ApiV3FilterBuilder = new ApiV3FilterBuilder();\n // Only real and activated users:\n filters.add('status', '!', ['3']);\n\n if (!workPackage.id || workPackage.id === 'new') {\n // that are members of that project:\n filters.add('member', '=', [(workPackage.project as HalResource).id as string]);\n } else {\n // that are mentionable on the work package\n filters.add('mentionable_on_work_package', '=', [workPackage.id.toString()]);\n }\n // That are users:\n filters.add('type', '=', ['User', 'Group']);\n\n if (term && term.length > 0) {\n // Containing the that substring:\n filters.add('name', '~', [term]);\n }\n\n return `${this.apiV3Base\n }/principals?${\n filters.toParams({ sortBy: '[[\"name\",\"asc\"]]', offset: '1', pageSize: '10' })}`;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { ApiV3Paths } from './apiv3-paths';\n\n@Injectable({ providedIn: 'root' })\nexport class PathHelperService {\n public readonly appBasePath = window.appBasePath || '';\n\n public readonly api = {\n v3: new ApiV3Paths(this.appBasePath),\n };\n\n public get staticBase() {\n return this.appBasePath;\n }\n\n public attachmentDownloadPath(attachmentIdentifier:string, slug:string|undefined) {\n const path = `${this.staticBase}/attachments/${attachmentIdentifier}`;\n\n if (slug) {\n return `${path}/${slug}`;\n }\n return path;\n }\n\n public attachmentContentPath(attachmentIdentifier:number|string) {\n return `${this.staticBase}/attachments/${attachmentIdentifier}/content`;\n }\n\n public fileLinksPath():string {\n return `${this.api.v3.apiV3Base}/file_links`;\n }\n\n public ifcModelsPath(projectIdentifier:string) {\n return `${this.staticBase}/projects/${projectIdentifier}/ifc_models`;\n }\n\n public ifcModelsNewPath(projectIdentifier:string) {\n return `${this.ifcModelsPath(projectIdentifier)}/new`;\n }\n\n public ifcModelsEditPath(projectIdentifier:string, modelId:number|string) {\n return `${this.ifcModelsPath(projectIdentifier)}/${modelId}/edit`;\n }\n\n public ifcModelsDeletePath(projectIdentifier:string, modelId:number|string) {\n return `${this.ifcModelsPath(projectIdentifier)}/${modelId}`;\n }\n\n public bimDetailsPath(projectIdentifier:string, workPackageId:string, viewpoint:number|string|null = null) {\n let path = `${this.projectPath(projectIdentifier)}/bcf/details/${workPackageId}`;\n\n if (viewpoint !== null) {\n path += `?query_props=%7B\"t\"%3A\"id%3Adesc\"%2C\"dr\"%3A\"splitCards\"%7D&viewpoint=${viewpoint}`;\n }\n\n return path;\n }\n\n public highlightingCssPath() {\n return `${this.staticBase}/highlighting/styles`;\n }\n\n public forumPath(projectIdentifier:string, forumIdentifier:string) {\n return `${this.projectForumPath(projectIdentifier)}/${forumIdentifier}`;\n }\n\n public keyboardShortcutsHelpPath() {\n return `${this.staticBase}/help/keyboard_shortcuts`;\n }\n\n public messagePath(messageIdentifier:string) {\n return `${this.staticBase}/topics/${messageIdentifier}`;\n }\n\n public meetingPath(id:string):string {\n return `${this.staticBase}/meetings/${id}`;\n }\n\n public myPagePath() {\n return `${this.staticBase}/my/page`;\n }\n\n public myNotificationsSettingsPath() {\n return `${this.staticBase}/my/notifications`;\n }\n\n public newsPath(newsId:string) {\n return `${this.staticBase}/news/${newsId}`;\n }\n\n public notificationsPath():string {\n return `${this.staticBase}/notifications`;\n }\n\n public notificationsDetailsPath(workPackageId:string, tab?:string):string {\n return `${this.notificationsPath()}/details/${workPackageId}${tab ? `/${tab}` : ''}`;\n }\n\n public loginPath() {\n return `${this.staticBase}/login`;\n }\n\n public projectsPath() {\n return `${this.staticBase}/projects`;\n }\n\n public projectsNewPath():string {\n return `${this.staticBase}/projects/new`;\n }\n\n public projectPath(projectIdentifier:string) {\n return `${this.projectsPath()}/${projectIdentifier}`;\n }\n\n public projectActivityPath(projectIdentifier:string) {\n return `${this.projectPath(projectIdentifier)}/activity`;\n }\n\n public projectForumPath(projectIdentifier:string) {\n return `${this.projectPath(projectIdentifier)}/forums`;\n }\n\n public projectCalendarPath(projectId:string) {\n return `${this.projectPath(projectId)}/calendars`;\n }\n\n public projectMembershipsPath(projectId:string) {\n return `${this.projectPath(projectId)}/members`;\n }\n\n public projectNewsPath(projectId:string) {\n return `${this.projectPath(projectId)}/news`;\n }\n\n public projectTimeEntriesPath(projectIdentifier:string) {\n return `${this.projectPath(projectIdentifier)}/cost_reports`;\n }\n\n public projectWikiPath(projectId:string) {\n return `${this.projectPath(projectId)}/wiki`;\n }\n\n public projectWorkPackagePath(projectId:string, wpId:string|number) {\n return `${this.projectWorkPackagesPath(projectId)}/${wpId}`;\n }\n\n public projectWorkPackagesPath(projectId:string) {\n return `${this.projectPath(projectId)}/work_packages`;\n }\n\n public projectWorkPackageNewPath(projectId:string) {\n return `${this.projectWorkPackagesPath(projectId)}/new`;\n }\n\n public boardsPath(projectIdentifier:string|null) {\n if (projectIdentifier) {\n return `${this.projectPath(projectIdentifier)}/boards`;\n }\n return `${this.staticBase}/boards`;\n }\n\n public newBoardsPath(projectIdentifier:string|null) {\n return `${this.boardsPath(projectIdentifier)}/new`;\n }\n\n public projectDashboardsPath(projectIdentifier:string) {\n return `${this.projectPath(projectIdentifier)}/dashboards`;\n }\n\n public timeEntriesPath(workPackageId:string|number) {\n const suffix = '/time_entries';\n\n if (workPackageId) {\n return this.workPackagePath(workPackageId) + suffix;\n }\n return this.staticBase + suffix; // time entries root path\n }\n\n public usersPath() {\n return `${this.staticBase}/users`;\n }\n\n public groupsPath() {\n return `${this.staticBase}/groups`;\n }\n\n public placeholderUsersPath() {\n return `${this.staticBase}/placeholder_users`;\n }\n\n public userPath(id:string|number) {\n return `${this.usersPath()}/${id}`;\n }\n\n public userHoverCardPath(id:string|number) {\n return `${this.usersPath()}/${id}/hover_card`;\n }\n\n public placeholderUserPath(id:string|number) {\n return `${this.placeholderUsersPath()}/${id}`;\n }\n\n public groupPath(id:string|number) {\n return `${this.groupsPath()}/${id}`;\n }\n\n public rolesPath() {\n return `${this.staticBase}/roles`;\n }\n\n public rolePath(id:string|number) {\n return `${this.rolesPath()}/${id}`;\n }\n\n public versionsPath() {\n return `${this.staticBase}/versions`;\n }\n\n public versionEditPath(id:string|number) {\n return `${this.staticBase}/versions/${id}/edit`;\n }\n\n public versionShowPath(id:string|number) {\n return `${this.staticBase}/versions/${id}`;\n }\n\n public workPackagesPath() {\n return `${this.staticBase}/work_packages`;\n }\n\n public workPackagePath(id:string|number) {\n return `${this.staticBase}/work_packages/${id}`;\n }\n\n public workPackageShortPath(id:string|number) {\n return `${this.staticBase}/wp/${id}`;\n }\n\n public workPackageCopyPath(workPackageId:string|number) {\n return `${this.workPackagePath(workPackageId)}/copy`;\n }\n\n public workPackageDetailsPath(projectIdentifier:string, workPackageId:string|number, tab?:string) {\n if (tab) {\n return `${this.projectWorkPackagePath(projectIdentifier, workPackageId)}/details/${tab}`;\n }\n\n return `${this.projectWorkPackagesPath(projectIdentifier)}/details/${workPackageId}`;\n }\n\n public workPackageDetailsCopyPath(projectIdentifier:string, workPackageId:string|number) {\n return this.workPackageDetailsPath(projectIdentifier, workPackageId, 'copy');\n }\n\n public workPackageReminderModalBodyPath(workPackageId:string|number) {\n return `${this.workPackagePath(workPackageId)}/reminders/modal_body`;\n }\n\n public workPackageSharePath(workPackageId:string|number) {\n return `${this.workPackagePath(workPackageId)}/shares`;\n }\n\n public workPackageHoverCardPath(workPackageId:string|number) {\n return `${this.workPackagePath(workPackageId)}/hover_card`;\n }\n\n public workPackageProgressModalPath(workPackageId:string|number) {\n if (workPackageId === 'new') {\n return `${this.workPackagePath(workPackageId)}/progress/new`;\n }\n\n return `${this.workPackagePath(workPackageId)}/progress/edit`;\n }\n\n public workPackageUpdateCounterPath(workPackageId:string|number, counter:string) {\n return `${this.workPackagePath(workPackageId)}/split_view/update_counter?counter=${counter}`;\n }\n\n public workPackageGetRelationsCounterPath(workPackageId:string|number) {\n return `${this.workPackagePath(workPackageId)}/split_view/get_relations_counter`;\n }\n\n public workPackageDatepickerDialogContentPath(workPackageId:string|number):string {\n if (workPackageId === 'new') {\n return `${this.workPackagePath(workPackageId)}/datepicker_dialog_content/new`;\n }\n\n return `${this.workPackagePath(workPackageId)}/datepicker_dialog_content`;\n }\n\n // Work Package Bulk paths\n\n public workPackagesBulkEditPath() {\n return `${this.workPackagesPath()}/bulk/edit`;\n }\n\n public workPackagesBulkMovePath() {\n return `${this.workPackagesPath()}/move/new`;\n }\n\n public workPackagesBulkCopyPath() {\n return `${this.workPackagesBulkMovePath()}?copy=true`;\n }\n\n public workPackagesBulkDeletePath() {\n return `${this.workPackagesPath()}/bulk`;\n }\n\n public textFormattingHelp() {\n return `${this.staticBase}/help/text_formatting`;\n }\n\n public jobStatusModalPath(jobId:string) {\n return `${this.staticBase}/job_statuses/${jobId}/dialog`;\n }\n\n public timeEntriesUserTimezoneCaption(userId:string) {\n return `${this.staticBase}/time_entries/users/${userId}/tz_caption`;\n }\n\n public timeEntriesWorkPackageActivity(workPackageId:string) {\n return `${this.staticBase}/time_entries/work_packages/${workPackageId}/time_entry_activities`;\n }\n\n public timeEntryDialog() {\n return `${this.staticBase}/time_entries/dialog`;\n }\n\n public timeEntryEditDialog(timeEntryId:string) {\n return `${this.staticBase}/time_entries/${timeEntryId}/dialog`;\n }\n\n public timeEntryWorkPackageDialog(workPackageId:string) {\n return `${this.workPackagePath(workPackageId)}/time_entries/dialog`;\n }\n\n public timeEntryProjectDialog(projectId:string) {\n return `${this.projectPath(projectId)}/time_entries/dialog`;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class RecentItemsService {\n recentItems$ = new BehaviorSubject(this.getAll());\n\n add(id:string):void {\n let wps = this.getAll().filter((entry:string) => entry !== id);\n wps.unshift(id);\n if (wps.length > 5) {\n wps = wps.slice(0, 5);\n }\n window.localStorage.setItem('recent', JSON.stringify(wps));\n this.recentItems$.next(wps);\n }\n\n getAll():string[] {\n return JSON.parse(window.OpenProject.guardedLocalStorage('recent') || '[]') as string[];\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class FirstRouteService {\n public name:string;\n\n public params:any;\n\n constructor() {}\n\n public get isEmpty() {\n return !this.name;\n }\n\n public setIfFirst(stateName:string|undefined, params:any) {\n if (!this.isEmpty || !stateName) {\n return;\n }\n\n this.name = stateName;\n this.params = params;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport { State } from '@openproject/reactivestates';\nimport { Injectable } from '@angular/core';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { firstValueFrom, Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { States } from 'core-app/core/states/states.service';\nimport { ISchemaProxy, SchemaProxy } from 'core-app/features/hal/schemas/schema-proxy';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { WorkPackageSchemaProxy } from 'core-app/features/hal/schemas/work-package-schema-proxy';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\n\nexport const fallbackSchemaId = '__fallback';\n\n@Injectable()\nexport class SchemaCacheService extends StateCacheService {\n fallbackSchema = this.halResourceService.createHalResourceOfClass(SchemaResource, {}, true);\n\n constructor(\n readonly states:States,\n readonly halResourceService:HalResourceService,\n ) {\n super(states.schemas);\n this.putValue(fallbackSchemaId, this.fallbackSchema);\n }\n\n public state(id:string|HalResource):State {\n return super.state(this.stateKey(id));\n }\n\n /**\n * Returns the schema of the provided resource.\n * This method assumes the schema is loaded and will fail if it is not.\n * @deprecated Assuming the schema to be loaded is deprecated. Rely on the states instead.\n * @param resource The HalResource for which the schema is to be returned\n * @return The schema for the HalResource\n */\n of(resource:HalResource):ISchemaProxy {\n const schema = this.state(resource).value as SchemaResource;\n\n return this.proxied(resource, schema);\n }\n\n proxied(resource:HalResource, schema:SchemaResource):ISchemaProxy {\n if (resource._type === 'WorkPackage') {\n return WorkPackageSchemaProxy.create(schema, resource);\n }\n\n return SchemaProxy.create(schema, resource);\n }\n\n public getSchemaHref(resource:HalResource):string|undefined {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return resource.$links.schema?.href as string|undefined;\n }\n\n /**\n * Ensure the given schema identified by its href is currently loaded.\n * @param resource The resource with a schema property or a string to the schema href.\n * @return A promise with the loaded schema.\n */\n ensureLoaded(resource:HalResource|string):Promise {\n const href = resource instanceof HalResource ? this.getSchemaHref(resource) : resource;\n return firstValueFrom(this.requireAndStream(href || fallbackSchemaId));\n }\n\n /**\n * Require the value to be loaded either when forced or the value is stale\n * according to the cache interval specified for this service.\n *\n * Returns an observable to the values stream of the state.\n *\n * @param id The state to require\n * @param force Load the value anyway.\n */\n public requireAndStream(href:string, force = false):Observable {\n // Refresh when stale or being forced\n if (this.stale(href) || force) {\n this.clearAndLoad(\n href,\n this.load(href),\n );\n }\n\n return this.state(href).values$();\n }\n\n /**\n * Load the associated schema for the given work package, if needed.\n */\n protected load(href:string):Observable {\n return this\n .halResourceService\n .get(href)\n .pipe(\n take(1),\n );\n }\n\n protected loadAll(hrefs:string[]):Promise {\n return Promise.all(hrefs.map((href) => this.load(href)));\n }\n\n /**\n * Places the schema in the schema state of the resource.\n * @param resource The resource for which the schema is to be updated\n * @param schema\n */\n update(resource:HalResource, schema:SchemaResource) {\n this.multiState.get(this.stateKey(resource)).putValue(schema);\n }\n\n private stateKey(id:string|HalResource):string {\n if (id instanceof HalResource) {\n return this.getSchemaHref(id) || fallbackSchemaId;\n }\n\n return id;\n }\n}\n","export const enterpriseEditionUrl = 'https://www.openproject.org/enterprise-edition/?op_edition=community-edition';\n\nexport const contactUrl:{ [locale:string]:string } = {\n en: 'https://www.openproject.org/contact/',\n de: 'https://www.openproject.org/de/kontakt/',\n};\n\nexport const pricingUrl = 'https://www.openproject.org/pricing';\n\nexport const enterpriseDocsUrl:{ [key:string]:string } = {\n website: 'https://www.openproject.org/enterprise-edition/',\n boards: 'https://www.openproject.org/docs/user-guide/agile-boards/#action-boards-enterprise-add-on',\n tableHighlighting: 'https://www.openproject.org/docs/user-guide/work-packages/work-package-table-configuration/#attribute-highlighting-enterprise-add-on',\n graphWidgets: 'https://www.openproject.org/docs/user-guide/project-overview/#work-package-graph-widgets-enterprise-add-on',\n};\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\n/**\n * A set of global helpers that were used in the app/assets/javascript namespace\n * but exposed globally.\n *\n * It is used in some `link_to_function` helpers in Rails templates\n */\nexport class GlobalHelpers {\n public checkAll(selector:string, checked:boolean) {\n document\n .querySelectorAll(`#${selector} input[type=\"checkbox\"]:not([disabled])`)\n .forEach((el) => { el.checked = checked; });\n }\n\n public toggleCheckboxesBySelector(selector:string) {\n const checkboxes = Array.from(document.querySelectorAll(selector));\n const allChecked = checkboxes.every((el) => el.checked);\n checkboxes.forEach((el) => { el.checked = !allChecked; });\n }\n}\n\nexport function getMetaElement(name:string):HTMLMetaElement|null {\n return document.querySelector(`meta[name=${name}]`);\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport { ANIMATION_RATE_MS } from 'core-app/core/top-menu/top-menu.service';\nimport ClickEvent = JQuery.ClickEvent;\n\n/*\n The action menu is a menu that usually belongs to an OpenProject entity (like an Issue, WikiPage, Meeting, ..).\n Most likely it looks like this:\n \n The following code is responsible to open and close the \"more functions\" submenu.\n*/\nfunction closeMenu(event:any) {\n const menu = jQuery(event.data.menu);\n // do not close the menu, if the user accidentally clicked next to a menu item (but still within the menu)\n if (event.target !== menu.find(' > li.drop-down.open > ul').get(0)) {\n menu.find(' > li.drop-down.open').removeClass('open').find('> ul').slideUp(ANIMATION_RATE_MS);\n // no need to watch for clicks, when the menu is already closed\n jQuery('html').off('click', closeMenu);\n }\n}\n\nfunction openMenu(menu:JQuery) {\n const dropDown = menu.find(' > li.drop-down');\n // do not open a menu, which is already open\n if (!dropDown.hasClass('open')) {\n dropDown.find('> ul').slideDown(ANIMATION_RATE_MS, () => {\n dropDown.find('li > a:first').focus();\n // when clicking on something, which is not the menu, close the menu\n jQuery('html').on('click', { menu: menu.get(0) }, closeMenu);\n });\n dropDown.addClass('open');\n }\n}\n\n// open the given submenu when clicking on it\nexport function installMenuLogic(menu:JQuery) {\n menu.find(' > li.drop-down').on('click', (event:ClickEvent) => {\n openMenu(menu);\n // and prevent default action (href) for that element\n // but not for the menu items.\n const target = jQuery(event.target);\n if (target.is('.drop-down') || target.closest('li, ul').is('.drop-down')) {\n event.preventDefault();\n }\n });\n}\n","// Legacy code ported from app/assets/javascripts/application.js.erb\n// Do not add stuff here, but ideally remove into components whenever changes are necessary\nexport function setupServerResponse() {\n jQuery(document).ajaxComplete(activateFlashNotice);\n jQuery(document).ajaxComplete(activateFlashError);\n\n /*\n * 1 - registers a callback which copies the csrf token into the\n * X-CSRF-Token header with each ajax request. Necessary to\n * work with rails applications which have fixed\n * CVE-2011-0447\n * 2 - shows and hides ajax indicator\n */\n jQuery(document).ajaxSend((event, request) => {\n if (jQuery(event.target.activeElement!).closest('[ajax-indicated]').length\n && jQuery('ajax-indicator')) {\n jQuery('#ajax-indicator').show();\n }\n\n const csrf_meta_tag = jQuery('meta[name=csrf-token]');\n\n if (csrf_meta_tag) {\n const header = 'X-CSRF-Token';\n const token = csrf_meta_tag.attr('content');\n\n request.setRequestHeader(header, token!);\n }\n\n request.setRequestHeader('X-Authentication-Scheme', 'Session');\n });\n\n // ajaxStop gets called when ALL Requests finish, so we won't need a counter as in PT\n jQuery(document).ajaxStop(() => {\n if (jQuery('#ajax-indicator')) {\n jQuery('#ajax-indicator').hide();\n }\n addClickEventToAllErrorMessages();\n });\n\n // show/hide the files table\n jQuery('.attachments h4').click(function () {\n jQuery(this).toggleClass('closed').next().slideToggle(100);\n });\n\n let resizeTo:any = null;\n jQuery(window).on('resize', () => {\n // wait 200 milliseconds for no further resize event\n // then readjust breadcrumb\n\n if (resizeTo) {\n clearTimeout(resizeTo);\n }\n resizeTo = setTimeout(() => {\n jQuery(window).trigger('resizeEnd');\n }, 200);\n });\n\n // Do not close the login window when using it\n jQuery('#nav-login-content').click((event) => {\n event.stopPropagation();\n });\n\n // Set focus on first error message\n const error_focus = jQuery('a.afocus').first();\n const input_focus = jQuery('.autofocus').first();\n if (error_focus !== undefined) {\n error_focus.focus();\n } else if (input_focus !== undefined) {\n input_focus.focus();\n if (input_focus[0].tagName === 'INPUT') {\n input_focus.select();\n }\n }\n // Focus on field with error\n addClickEventToAllErrorMessages();\n\n // Click handler for formatting help\n jQuery(document.body).on('click', '.formatting-help-link-button', () => {\n window.open(`${window.appBasePath}/help/wiki_syntax`,\n '',\n 'resizable=yes, location=no, width=600, height=640, menubar=no, status=no, scrollbars=yes');\n return false;\n });\n}\n\nfunction addClickEventToAllErrorMessages() {\n jQuery('a.afocus').each(function () {\n const target = jQuery(this);\n target.click((evt) => {\n let field = jQuery(`#${target.attr('href')!.substr(1)}`);\n if (field === null) {\n // Cut off '_id' (necessary for select boxes)\n field = jQuery(`#${target.attr('href')!.substr(1).concat('_id')}`);\n }\n target.unbind(evt);\n return false;\n });\n });\n}\n\nexport function initMainMenuExpandStatus() {\n const wrapper = jQuery('#wrapper');\n const upToggle = jQuery('ul.menu_root.closed li.open a.arrow-left-to-project');\n\n if (upToggle.length === 1 && wrapper.hasClass('hidden-navigation')) {\n upToggle.trigger('click');\n }\n}\n\nfunction activateFlash(selector:any) {\n const flashMessages = jQuery(selector);\n\n flashMessages.each((ix, e) => {\n const flashMessage = jQuery(e);\n flashMessage.show();\n });\n}\n\nexport function activateFlashNotice() {\n activateFlash('.op-toast[role=\"alert\"]');\n}\n\nexport function activateFlashError() {\n activateFlash('.errorExplanation[role=\"alert\"]');\n}\n\nexport function focusFirstErroneousField() {\n const firstErrorSpan = jQuery('span.errorSpan').first();\n const erroneousInput = firstErrorSpan.find('*').filter(':input');\n\n erroneousInput.trigger('focus');\n}\n","export const onboardingTourStorageKey = 'openProject-onboardingTour';\nexport type OnboardingTourNames = 'homescreen'|'workPackages'|'gantt'|'final'|'boards'|'teamPlanner';\n\nfunction matchingFilter(list:NodeListOf, filterFunction:(match:HTMLElement) => boolean):HTMLElement|null {\n for (let i = 0; i < list.length; i++) {\n if (filterFunction(list[i])) {\n return list[i];\n }\n }\n\n return null;\n}\n\nexport function waitForElement(\n selector:string,\n containerSelector:string,\n execFunction:(match:HTMLElement) => void,\n filterFunction:(match:HTMLElement) => boolean = () => true,\n):void {\n const container = document.querySelector(containerSelector) as HTMLElement;\n // If the element is ready immediately\n const initial = matchingFilter(container.querySelectorAll(selector), filterFunction);\n if (initial) {\n execFunction(initial);\n return;\n }\n\n // Wait for the element to be ready\n const observer = new MutationObserver((mutations, observerInstance) => {\n const matches = matchingFilter(container.querySelectorAll(selector), filterFunction);\n if (matches) {\n execFunction(matches);\n observerInstance.disconnect();\n }\n });\n\n observer.observe(container, {\n childList: true,\n subtree: true,\n });\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { OpenProjectPluginContext } from 'core-app/features/plugins/plugin-context';\nimport { input, InputState } from '@openproject/reactivestates';\nimport { getMetaElement, GlobalHelpers } from 'core-app/core/setup/globals/global-helpers';\nimport { firstValueFrom } from 'rxjs';\n\n/**\n * OpenProject instance methods\n */\nexport class OpenProject {\n public pluginContext:InputState = input();\n\n public helpers = new GlobalHelpers();\n\n /** Globally setable variable whether the page was edited */\n public pageWasEdited = false;\n\n /** Globally setable variable whether the page form is submitted.\n * Necessary to avoid a data loss warning on beforeunload */\n public pageIsSubmitted = false;\n\n /** Globally setable variable whether any of the EditFormComponent\n * contain changes.\n * Necessary to show a data loss warning on beforeunload when clicking\n * on a link out of the Angular app (ie: main side menu)\n * */\n public editFormsContainModelChanges:boolean;\n\n public getPluginContext():Promise {\n return firstValueFrom(this.pluginContext.values$());\n }\n\n public get urlRoot():string {\n return getMetaElement('app_base_path')?.content || '';\n }\n\n public get environment():string {\n return getMetaElement('openproject_initializer')?.dataset.environment || '';\n }\n\n public get edition():string {\n return getMetaElement('openproject_initializer')?.dataset.edition || '';\n }\n\n public get isStandardEdition():boolean {\n return this.edition === 'standard';\n }\n\n public get isBimEdition():boolean {\n return this.edition === 'bim';\n }\n\n /**\n * Guard access to reads and writes to the localstorage due to corrupted local databases\n * in Firefox happening in one larger client.\n *\n * NS_ERROR_FILE_CORRUPTED\n *\n * @param {string} key\n * @param {string} newValue\n * @returns {string | undefined}\n */\n public guardedLocalStorage(key:string, newValue?:string):string | void {\n try {\n if (newValue !== undefined) {\n window.localStorage.setItem(key, newValue);\n } else {\n const value = window.localStorage.getItem(key);\n return value === null ? undefined : value;\n }\n } catch (e) {\n console.error('Failed to access your browsers local storage. Is your local database corrupted?');\n }\n }\n}\n\nwindow.OpenProject = new OpenProject();\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\n// 'Global' dependencies\n//\n// dependencies required by classic (Rails) and Angular application.\n\n// Lodash\nrequire('expose-loader?_!lodash');\n\n// jQuery\nrequire('expose-loader?jQuery!jquery');\nrequire('jquery-ujs');\n\nrequire('expose-loader?mousetrap!mousetrap/mousetrap.js');\n\n// Angular dependencies\nrequire('expose-loader?dragula!dragula/dist/dragula.min.js');\nrequire('@uirouter/angular');\n\n// Jquery UI\nrequire('jquery-ui/ui/core');\nrequire('jquery-ui/ui/position');\nrequire('jquery-ui/ui/disable-selection');\nrequire('jquery-ui/ui/widgets/sortable');\nrequire('jquery-ui/ui/widgets/dialog');\nrequire('jquery-ui/ui/widgets/tooltip');\n\nrequire('expose-loader?moment!moment');\nrequire('moment/locale/de');\nrequire('moment/locale/en-gb');\n\nrequire('jquery.caret');\n// Text highlight for autocompleter\nrequire('mark.js/dist/jquery.mark.min');\n\nrequire('moment-timezone/builds/moment-timezone-with-data.min');\n// eslint-disable-next-line import/extensions,import/no-extraneous-dependencies\nrequire('@openproject/primer-view-components/app/assets/javascripts/primer_view_components.js');\n\nrequire('expose-loader?URI!urijs');\nrequire('urijs/src/URITemplate');\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ActionCreator } from 'ts-action/action';\nimport { ActionType } from 'ts-action';\nimport { ofType } from 'ts-action-operators';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\n\nexport interface Action {\n type:string;\n\n [key:string]:unknown;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ActionsService {\n private actions = new Subject();\n\n /** Entire event stream */\n public actions$ = this.actions.asObservable();\n\n /**\n * Observe one or more event type\n * @param action The set of action creators to listen for\n * */\n ofType(action:C):Observable> {\n return this\n .actions$\n .pipe(\n ofType(action),\n );\n }\n\n dispatch(action:Action):void {\n debugLog('Dispatching action: %O', action.type);\n this.actions.next(action);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { EntityStore, StoreConfig } from '@datorama/akita';\nimport { IAttachment } from 'core-app/core/state/attachments/attachment.model';\nimport { ResourceState, createInitialResourceState } from 'core-app/core/state/resource-store';\n\nexport interface AttachmentsState extends ResourceState {}\n\n@StoreConfig({ name: 'attachments' })\nexport class AttachmentsStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHeaders,\n} from '@angular/common/http';\nimport { applyTransaction } from '@datorama/akita';\nimport { Observable } from 'rxjs';\nimport {\n catchError,\n map,\n tap,\n} from 'rxjs/operators';\n\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalLink } from 'core-app/features/hal/hal-link/hal-link';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { AttachmentsStore } from 'core-app/core/state/attachments/attachments.store';\nimport { IAttachment } from 'core-app/core/state/attachments/attachment.model';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport {\n IUploadFile,\n OpUploadService,\n} from 'core-app/core/upload/upload.service';\nimport { removeEntityFromCollectionAndState } from 'core-app/core/state/resource-store';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport isNewResource, { HAL_NEW_RESOURCE_ID } from 'core-app/features/hal/helpers/is-new-resource';\nimport waitForUploadsFinished from 'core-app/core/upload/wait-for-uploads-finished';\nimport isNotNull from 'core-app/core/state/is-not-null';\n\n@Injectable()\nexport class AttachmentsResourceService extends ResourceStoreService {\n @InjectField() I18n:I18nService;\n\n @InjectField() uploadService:OpUploadService;\n\n @InjectField() configurationService:ConfigurationService;\n\n @InjectField() toastService:ToastService;\n\n /**\n * Sends deletion request and updates the store collection of attachments.\n *\n * @param collectionKey The identifier of the current attachment collection.\n * @param attachment The attachment to be deleted.\n */\n removeAttachment(collectionKey:string, attachment:IAttachment):Observable {\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n\n return this.http\n .delete(attachment._links.delete.href, { withCredentials: true, headers })\n .pipe(\n tap(() => removeEntityFromCollectionAndState(this.store, attachment.id, collectionKey)),\n catchError((error:HttpErrorResponse) => {\n this.toastService.addError(error);\n throw new Error(error.message);\n }),\n );\n }\n\n /**\n * Sends an upload request and updates the store collection of attachments.\n *\n * @param resource The HAL resource to attach the files to\n * @param files The upload files to be attached.\n */\n attachFiles(resource:HalResource, files:File[]):Observable {\n const identifier = AttachmentsResourceService.getAttachmentsSelfLink(resource) || HAL_NEW_RESOURCE_ID;\n const href = this.getUploadTarget(resource);\n const uploadFiles = files.map((file) => ({ file }));\n\n return this\n .addAttachments(\n identifier,\n href,\n uploadFiles,\n );\n }\n\n /**\n * Sends an upload request and updates the store collection of attachments.\n *\n * @param collectionKey The identifier of the current attachment collection.\n * @param uploadHref The API target to perform the call against.\n * @param files The upload files to be attached.\n */\n addAttachments(\n collectionKey:string,\n uploadHref:string,\n files:IUploadFile[],\n ):Observable {\n return this\n .uploadAttachments(uploadHref, files)\n .pipe(\n tap((attachments) => {\n applyTransaction(() => {\n this.store.add(attachments);\n this.store.update(({ collections }) => (\n {\n collections: {\n ...collections,\n [collectionKey]: {\n ...collections[collectionKey],\n ids: (collections[collectionKey]?.ids || []).concat(attachments.map((a) => a.id)),\n },\n },\n }\n ));\n });\n }),\n );\n }\n\n private uploadAttachments(href:string, files:IUploadFile[]):Observable {\n const observables = this.uploadService.upload(href, files);\n const uploads = files.map((f, i):[File, Observable>] => [f.file, observables[i]]);\n\n this.toastService.addUpload(this.I18n.t('js.label_upload_notification'), uploads);\n\n return waitForUploadsFinished(observables)\n .pipe(\n map((responses) =>\n responses\n .map((response) => response.body)\n .filter(isNotNull)),\n );\n }\n\n /**\n * Get the upload target for a HAL resource, depending on its\n * persisted state and available links.\n *\n * This will be one of the following:\n * - The direct upload PREPARE URL endpoint for the resource (if direct upload active + resource persisted)\n * - The generic prepare URL endpoint (if direct upload active)\n * - The resource's own upload HAL link (if persisted)\n * - The generic APIv3 attachments endpoint (new resource, no direct upload)\n *\n * @param resource The resource we're uploading attachments for.\n * @returns {string} The API target URL to perform the upload against.\n * @private\n */\n private getUploadTarget(resource:HalResource):string {\n return this.getDirectUploadLink(resource)\n || AttachmentsResourceService.getAddAttachmentsLink(resource)\n || this.apiV3Service.attachments.path;\n }\n\n private getDirectUploadLink(resource:HalResource):string|null {\n const links = resource.$links as { prepareAttachment:HalLink };\n\n if (links.prepareAttachment) {\n return links.prepareAttachment.href as string;\n }\n\n if (isNewResource(resource)) {\n return this.configurationService.prepareAttachmentURL as string|null;\n }\n\n return null;\n }\n\n private static getAttachmentsSelfLink(resource:HalResource):string|null {\n if (isNewResource(resource)) {\n return null;\n }\n\n const attachments = resource.attachments as { href?:string };\n return attachments?.href || null;\n }\n\n private static getAddAttachmentsLink(resource:HalResource):string|null {\n if (isNewResource(resource)) {\n return null;\n }\n\n const link = resource.addAttachment as { href?:string };\n return link?.href || null;\n }\n\n protected createStore():ResourceStore {\n return new AttachmentsStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.attachments.path;\n }\n}\n","import { EntityStore, StoreConfig } from '@datorama/akita';\nimport { ResourceState, createInitialResourceState } from 'core-app/core/state/resource-store';\nimport { ICapability } from 'core-app/core/state/capabilities/capability.model';\n\nexport interface CapabilitiesState extends ResourceState {\n}\n\n@StoreConfig({ name: 'capabilities' })\nexport class CapabilitiesStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n catchError,\n map,\n} from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { ApiV3ListParameters } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { ICapability } from 'core-app/core/state/capabilities/capability.model';\nimport { CapabilitiesStore } from 'core-app/core/state/capabilities/capabilities.store';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\n@Injectable()\nexport class CapabilitiesResourceService extends ResourceStoreService {\n @InjectField() toastService:ToastService;\n\n /**\n * Returns the loaded capabilities for a context\n */\n public loadedCapabilities$(contextId:string):Observable {\n return this\n .query\n .selectAll()\n .pipe(\n map((capabilities) => capabilities.filter((cap) => cap._links.context.href.endsWith(`/${contextId}`))),\n );\n }\n\n public fetchCapabilities(params:ApiV3ListParameters):Observable> {\n return this\n .fetchCollection(params)\n .pipe(\n catchError((error) => {\n this.toastService.addError(error);\n throw error;\n }),\n );\n }\n\n protected createStore():ResourceStore {\n return new CapabilitiesStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.capabilities.path;\n }\n}\n","import {\n EntityStore,\n StoreConfig,\n} from '@datorama/akita';\nimport {\n ResourceState,\n createInitialResourceState,\n} from 'core-app/core/state/resource-store';\nimport { IDay } from 'core-app/core/state/days/day.model';\n\nexport interface DayState extends ResourceState {\n}\n\n@StoreConfig({ name: 'days' })\nexport class DayStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { firstValueFrom, Observable } from 'rxjs';\n\nimport { ApiV3ListFilter } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { DayStore } from 'core-app/core/state/days/day.store';\nimport { IDay } from 'core-app/core/state/days/day.model';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\nimport * as moment from 'moment-timezone';\n\n@Injectable()\nexport class DayResourceService extends ResourceStoreService {\n protected basePath():string {\n return this\n .apiV3Service\n .days\n .nonWorkingDays\n .path;\n }\n\n isNonWorkingDay$(input:Date):Promise {\n const date = moment(input).format('YYYY-MM-DD');\n\n return firstValueFrom(\n this\n .requireNonWorkingYear$(input)\n .pipe(\n map((days) => days.findIndex((day:IDay) => day.date === date) !== -1),\n ),\n );\n }\n\n requireNonWorkingYear$(date:Date|string):Observable {\n const from = moment(date).startOf('year').format('YYYY-MM-DD');\n const to = moment(date).endOf('year').format('YYYY-MM-DD');\n\n const filters:ApiV3ListFilter[] = [\n ['date', '<>d', [from, to]],\n ];\n\n return this.requireCollection({ filters });\n }\n\n requireNonWorkingYears$(start:Date|string, end:Date|string):Observable {\n const from = moment(start).startOf('year').format('YYYY-MM-DD');\n const to = moment(end).endOf('year').format('YYYY-MM-DD');\n\n const filters:ApiV3ListFilter[] = [\n ['date', '<>d', [from, to]],\n ];\n\n return this.requireCollection({ filters });\n }\n\n protected createStore():ResourceStore {\n return new DayStore();\n }\n}\n","import {\n EntityStore,\n StoreConfig,\n} from '@datorama/akita';\nimport {\n ResourceState,\n createInitialResourceState,\n} from 'core-app/core/state/resource-store';\nimport { IWeekday } from 'core-app/core/state/days/weekday.model';\n\nexport interface WeekdayState extends ResourceState {\n}\n\n@StoreConfig({ name: 'weekdays' })\nexport class WeekdayStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n map,\n switchMap,\n tap,\n} from 'rxjs/operators';\nimport {\n EMPTY,\n Observable,\n} from 'rxjs';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport {\n extendCollectionElementsWithId,\n insertCollectionIntoState,\n} from 'core-app/core/state/resource-store';\nimport { WeekdayStore } from 'core-app/core/state/days/weekday.store';\nimport { IWeekday } from 'core-app/core/state/days/weekday.model';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\n\n@Injectable()\nexport class WeekdayResourceService extends ResourceStoreService {\n requireCollection():Observable {\n return this\n .query\n .selectHasCache()\n .pipe(\n switchMap((hasCache) => (hasCache ? EMPTY : this.fetchWeekdays())),\n switchMap(() => this.query.selectAll()),\n );\n }\n\n protected fetchWeekdays():Observable> {\n const collectionURL = 'all'; // We load all weekdays\n\n return this\n .http\n .get>(this.basePath())\n .pipe(\n map((collection) => extendCollectionElementsWithId(collection)),\n tap((collection) => insertCollectionIntoState(this.store, collection, collectionURL)),\n );\n }\n\n protected createStore():ResourceStore {\n return new WeekdayStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.days.week.path;\n }\n}\n","import 'reflect-metadata';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { ActionCreator } from 'ts-action/action';\nimport { Action } from 'ts-action';\nimport { takeWhile } from 'rxjs/operators';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { Observable } from 'rxjs';\n\n/**\n * This interface specifies a constraint on the classes that can\n * be used as an @EffectHandler.\n *\n * As we depend on the ActionsService, we need that as a public property.\n */\nexport interface EffectClass {\n actions$:ActionsService;\n ngOnDestroy?():void;\n}\n\n\nconst EffectHandlers = Symbol('EffectHandlers');\n\ntype EffectHandlerItem = { callback:(action:Action) => void, action:ActionCreator };\n\ninterface DecoratedEffectClass {\n [EffectHandlers]:Map\n}\n\nexport function registerEffectCallbacks(instance:EffectClass, untilDestroyed:(source:Observable) => Observable):void {\n // Access the handlers registered in the @EffectCallback method decorator\n // We're accessing a separate symbol on the base class that is not present\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const handlers = (instance as unknown as DecoratedEffectClass)[EffectHandlers];\n if (handlers) {\n handlers.forEach((item:EffectHandlerItem, key:string) => {\n debugLog(`[${instance.constructor.name}] Subscribing to effect ${key}`);\n\n // Subscribe to the specified action for the duration of this service's life.\n instance.actions$\n .ofType(item.action)\n .pipe(\n untilDestroyed,\n )\n .subscribe((action) => {\n // Wrap callback in a try-catch to avoid completing the subscription.\n try {\n item.callback.call(instance, action);\n } catch (e) {\n console.error(`Error thrown in effect callback ${key}: ${e as string}`);\n }\n });\n });\n }\n}\n\n/**\n * The EffectHandler decorates a class to be used for effects callbacks\n * To use, add it to a store service like so\n *\n * ```\n * @Injectable()\n * @EffectHandler\n * export class FooStoreService {\n * @EffectCallback(someActionName)\n * private actionCallback(action:ReturnType) {\n * // Effect callback for the given action\n * }\n * }\n */\n/* The class decorator requires any[] args to it to function */\n\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nexport function EffectHandler(constructor:T):any {\n return class extends constructor {\n private serviceDestroyed = false;\n\n /* The class decorator requires any[] args to it to function */\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n constructor(...args:any[]) {\n super(...args);\n\n registerEffectCallbacks(this, takeWhile(() => !this.serviceDestroyed));\n }\n\n ngOnDestroy():void {\n this.serviceDestroyed = true;\n if (super.ngOnDestroy) {\n super.ngOnDestroy();\n }\n }\n };\n}\n\n/**\n * The EffectCallback decorates a method of a `@EffectHandler` decorated class\n * to be used for effects callbacks.\n *\n * The decorator subscribes to the actionService for the given service for\n * the lifetime of the service.\n *\n * Example:\n *\n * ```\n * @Injectable()\n * @EffectHandler\n * export class FooStoreService {\n * @EffectCallback(someActionName)\n * private actionCallback(action:ReturnType) {\n * // Effect callback for the given action\n * }\n * }\n */\nexport function EffectCallback(action:ActionCreator) {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n return (service:unknown, property:string, descriptor:PropertyDescriptor):void => {\n const target = service as { [EffectHandlers]:Map };\n if (!target[EffectHandlers]) {\n // We're assigning the symbol property in the base class\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,no-param-reassign\n target[EffectHandlers] = new Map();\n }\n\n // Here we just add some information that class decorator will use\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n target[EffectHandlers].set(property, { action, callback: descriptor.value as (action:Action) => void });\n };\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ResourceState, createInitialResourceState } from 'core-app/core/state/resource-store';\nimport { EntityStore, StoreConfig } from '@datorama/akita';\nimport { IFileLink } from 'core-app/core/state/file-links/file-link.model';\n\nexport interface FileLinksState extends ResourceState {}\n\n@StoreConfig({ name: 'file_links' })\nexport class FileLinksStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { applyTransaction } from '@datorama/akita';\nimport { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport {\n from,\n Observable,\n of,\n} from 'rxjs';\nimport {\n groupBy,\n mergeMap,\n reduce,\n switchMap,\n tap,\n} from 'rxjs/operators';\n\nimport {\n IFileLink,\n IFileLinkOriginData,\n} from 'core-app/core/state/file-links/file-link.model';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { FileLinksStore } from 'core-app/core/state/file-links/file-links.store';\nimport {\n insertCollectionIntoState,\n removeEntityFromCollectionAndState,\n} from 'core-app/core/state/resource-store';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\nimport { IHalResourceLink } from 'core-app/core/state/hal-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\n@Injectable()\nexport class FileLinksResourceService extends ResourceStoreService {\n protected createStore():ResourceStore {\n return new FileLinksStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.file_links.path;\n }\n\n updateCollectionsForWorkPackage(fileLinksSelfLink:string):Observable {\n return this.http\n .get>(fileLinksSelfLink)\n .pipe(\n tap((collection) => insertCollectionIntoState(this.store, collection, fileLinksSelfLink)),\n switchMap((collection) => from(collection._embedded.elements)),\n groupBy(\n (fileLink) => fileLink._links.storage.href,\n { element: (fileLink) => fileLink },\n ),\n mergeMap((group$) => {\n const seed = { storage: group$.key, fileLinks: [] as IFileLink[] };\n return group$.pipe(reduce((acc, fileLink) => {\n acc.fileLinks = [...acc.fileLinks, fileLink];\n return acc;\n }, seed));\n }),\n tap((fileLinkCollections) => {\n const storageId = idFromLink(fileLinkCollections.storage);\n const collectionKey = `${fileLinksSelfLink}?pageSize=-1&filters=[{\"storage\":{\"operator\":\"=\",\"values\":[\"${storageId}\"]}}]`;\n const collection = { _embedded: { elements: fileLinkCollections.fileLinks } } as IHALCollection;\n insertCollectionIntoState(this.store, collection, collectionKey);\n }),\n reduce((acc, group) => acc.concat(group.fileLinks), [] as IFileLink[]),\n );\n }\n\n updateCollection(href:string):Observable> {\n return this.http\n .get>(href)\n .pipe(\n tap((collection) => insertCollectionIntoState(this.store, collection, href)),\n );\n }\n\n remove(collectionKey:string, fileLink:IFileLink):Observable {\n if (!fileLink._links.delete) {\n return of();\n }\n\n const headers = new HttpHeaders({ 'Content-Type': 'application/json' });\n return this.http\n .delete(fileLink._links.delete.href, { withCredentials: true, headers })\n .pipe(\n tap(() => removeEntityFromCollectionAndState(this.store, fileLink.id, collectionKey)),\n );\n }\n\n addFileLinks(\n collectionKey:string,\n addFileLinksHref:string,\n storage:IHalResourceLink,\n filesToLink:IFileLinkOriginData[],\n ):Observable> {\n const elements = filesToLink.map((file) => ({\n originData: { ...file },\n _links: { storage },\n }));\n\n return this.http\n .post>(addFileLinksHref, { _type: 'Collection', _embedded: { elements } })\n .pipe(\n tap((collection) => {\n applyTransaction(() => {\n const newFileLinks = collection._embedded.elements;\n this.store.add(newFileLinks);\n this.store.update(\n ({ collections }) => (\n {\n collections: {\n ...collections,\n [collectionKey]: {\n ...collections[collectionKey],\n ids: (collections[collectionKey]?.ids || []).concat(newFileLinks.map((link) => link.id)),\n },\n },\n }\n ),\n );\n });\n }),\n );\n }\n}\n","import { ID } from '@datorama/akita';\nimport {\n IHalResourceLink,\n IHalResourceLinks,\n} from 'core-app/core/state/hal-resource';\n\nexport const NOTIFICATIONS_MAX_SIZE = 100;\n\nexport interface IInAppNotificationHalResourceLinks extends IHalResourceLinks {\n actor:IHalResourceLink;\n project:IHalResourceLink;\n resource:IHalResourceLink;\n activity:IHalResourceLink;\n}\n\nexport type IInAppNotificationDetailsAttribute = 'startDate'|'dueDate'|'date'|'note';\n\nexport interface IInAppNotificationDetailsResource {\n property:IInAppNotificationDetailsAttribute;\n value:string|null;\n\n _links:{\n self:IHalResourceLink;\n schema:IHalResourceLink;\n };\n}\n\nexport interface IInAppNotificationHalResourceEmbedded {\n details:IInAppNotificationDetailsResource[];\n}\n\nexport interface INotification {\n id:ID;\n subject:string;\n createdAt:string;\n updatedAt:string;\n reason:string;\n readIAN:boolean|null;\n readEmail:boolean|null;\n\n // Mark a notification to be kept in the center even though it was saved as \"read\".\n keep?:boolean;\n // Show message of a notification?\n expanded:boolean;\n\n _links:IInAppNotificationHalResourceLinks;\n _embedded:IInAppNotificationHalResourceEmbedded;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ID } from '@datorama/akita';\nimport {\n action,\n props,\n} from 'ts-action';\n\nimport { ApiV3ListFilter } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\n\nexport const markNotificationsAsRead = action(\n '[IAN] Mark notifications as read',\n props<{ origin:string, notifications:ID[] }>(),\n);\n\nexport const markNotificationsAsReadByFilters = action(\n '[IAN] Mark notifications as read by filter',\n props<{ origin:string, filters:ApiV3ListFilter[] }>(),\n);\n\nexport const notificationsMarkedRead = action(\n '[IAN] Notifications were marked as read',\n props<{ origin:string, notifications:ID[], all:boolean }>(),\n);\n\nexport const notificationCountIncreased = action(\n '[IAN] The backend sent a notification count that was higher than the last known',\n props<{ origin:string, count:number }>(),\n);\n\nexport const notificationCountChanged = action(\n '[IAN] The backend sent a notification count that was different to the last known',\n props<{ origin:string, count:number }>(),\n);\n\nexport const centerUpdatedInPlace = action(\n '[IAN] The notification center updated the notification list without a full page refresh',\n props<{ origin:string }>(),\n);\n","import { EntityStore, StoreConfig } from '@datorama/akita';\nimport { INotification } from './in-app-notification.model';\nimport { ResourceState, createInitialResourceState } from 'core-app/core/state/resource-store';\n\nexport interface InAppNotificationsState extends ResourceState {\n}\n\n@StoreConfig({ name: 'in-app-notifications' })\nexport class InAppNotificationsStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { tap } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { ID } from '@datorama/akita';\n\nimport {\n markNotificationsAsRead,\n markNotificationsAsReadByFilters,\n notificationsMarkedRead,\n} from 'core-app/core/state/in-app-notifications/in-app-notifications.actions';\nimport {\n EffectCallback,\n EffectHandler,\n} from 'core-app/core/state/effects/effect-handler.decorator';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { INotification } from 'core-app/core/state/in-app-notifications/in-app-notification.model';\nimport { InAppNotificationsStore } from 'core-app/core/state/in-app-notifications/in-app-notifications.store';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\n@EffectHandler\n@Injectable()\nexport class InAppNotificationsResourceService extends ResourceStoreService {\n @InjectField() actions$:ActionsService;\n\n update(id:ID, inAppNotification:Partial):void {\n this.store.update(id, inAppNotification);\n }\n\n markAsRead(notifications:ID[]):Observable {\n return this\n .apiV3Service\n .notifications\n .markAsReadByIds(notifications)\n .pipe(\n tap(() => {\n this.store.update(notifications, { readIAN: true });\n }),\n );\n }\n\n /**\n * Mark the given notification IDs as read through the API.\n */\n @EffectCallback(markNotificationsAsRead)\n private markNotificationsAsRead(action:ReturnType) {\n this\n .markAsRead(action.notifications)\n .subscribe(() => (\n this.actions$.dispatch(notificationsMarkedRead({ ...action, all: false }))\n ));\n }\n\n @EffectCallback(markNotificationsAsReadByFilters)\n private markNotificationsAsReadByFilters(action:ReturnType) {\n return this\n .apiV3Service\n .notifications\n .markAsReadByFilter(action.filters)\n .subscribe(() => {\n this.actions$.dispatch(notificationsMarkedRead({ origin: action.origin, notifications: [], all: true }));\n });\n }\n\n protected createStore():ResourceStore {\n return new InAppNotificationsStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.notifications.path;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nexport default function isDefinedEntity(entity:T|undefined):entity is T {\n return entity !== undefined;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nexport default function isNotNull(entity:T|null):entity is T {\n return entity !== null;\n}\n","import { EntityStore, StoreConfig } from '@datorama/akita';\nimport { IPrincipal } from './principal.model';\nimport { ResourceState, createInitialResourceState } from 'core-app/core/state/resource-store';\n\nexport interface PrincipalsState extends ResourceState {\n}\n\n@StoreConfig({ name: 'principals' })\nexport class PrincipalsStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { EffectHandler } from 'core-app/core/state/effects/effect-handler.decorator';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { PrincipalsStore } from './principals.store';\nimport { IPrincipal } from './principal.model';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\n@EffectHandler\n@Injectable()\nexport class PrincipalsResourceService extends ResourceStoreService {\n @InjectField() actions$:ActionsService;\n\n @InjectField() toastService:ToastService;\n\n protected createStore():ResourceStore {\n return new PrincipalsStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.principals.path;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { EntityStore, StoreConfig } from '@datorama/akita';\n\nimport { IProjectStorage } from 'core-app/core/state/project-storages/project-storage.model';\nimport { createInitialResourceState, ResourceState } from 'core-app/core/state/resource-store';\n\nexport interface ProjectStoragesState extends ResourceState {}\n\n@StoreConfig({ name: 'project-storages' })\nexport class ProjectStoragesStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\n\nimport { IProjectStorage } from 'core-app/core/state/project-storages/project-storage.model';\nimport { ProjectStoragesStore } from 'core-app/core/state/project-storages/project-storages.store';\nimport { ResourceStore, ResourceStoreService } from 'core-app/core/state/resource-store.service';\n\n@Injectable()\nexport class ProjectStoragesResourceService extends ResourceStoreService {\n protected createStore():ResourceStore {\n return new ProjectStoragesStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.projectStorages.path;\n }\n}\n","import { EntityStore, StoreConfig } from '@datorama/akita';\nimport { ResourceState, createInitialResourceState } from 'core-app/core/state/resource-store';\nimport { IProject } from './project.model';\n\nexport interface ProjectsState extends ResourceState {\n}\n\n@StoreConfig({ name: 'projects' })\nexport class ProjectsStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { IProject } from './project.model';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\nimport { ProjectsStore } from 'core-app/core/state/projects/projects.store';\n\n@Injectable()\nexport class ProjectsResourceService extends ResourceStoreService {\n protected createStore():ResourceStore {\n return new ProjectsStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.projects.path;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n EntityStore,\n ID,\n QueryEntity,\n} from '@datorama/akita';\nimport { Observable } from 'rxjs';\nimport {\n catchError,\n filter,\n finalize,\n map,\n shareReplay,\n switchMap,\n tap,\n} from 'rxjs/operators';\nimport {\n CollectionResponse,\n insertCollectionIntoState,\n removeResourceLoading,\n ResourceState,\n setResourceLoading,\n} from 'core-app/core/state/resource-store';\nimport { omit } from 'lodash';\nimport isDefinedEntity from 'core-app/core/state/is-defined-entity';\nimport {\n ApiV3ListParameters,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport {\n HttpClient,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport {\n Injectable,\n Injector,\n} from '@angular/core';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\nexport type ResourceStore = EntityStore>;\n\nexport interface ResourceStoreLoadOptions {\n handleErrors:boolean;\n}\n\nexport type ResourceKeyInput = ApiV3ListParameters|string;\n\n@Injectable()\nexport abstract class ResourceStoreService {\n protected store:ResourceStore = this.createStore();\n\n protected query = new QueryEntity(this.store);\n\n constructor(\n readonly injector:Injector,\n readonly http:HttpClient,\n readonly apiV3Service:ApiV3Service,\n readonly toastService:ToastService,\n ) {\n }\n\n /**\n * Require the results for the given filter params\n * Returns a cached set if it was loaded already.\n *\n * @param input List params to require, or href of the resource\n * @private\n */\n public requireCollection(input:ResourceKeyInput):Observable {\n const href = this.buildResourceLink(input);\n if (this.collectionExists(href) || this.resourceLoading(href)) {\n return this.loadedCollection(href);\n }\n\n return this\n .fetchCollection(href)\n .pipe(\n switchMap(() => this.loadedCollection(href)),\n );\n }\n\n /**\n * Require a single entity to be loaded.\n * Returnes the cached entity if it was loaded already\n *\n * @param href {string}\n */\n public requireEntity(href:string):Observable {\n const id = idFromLink(href);\n if (this.query.hasEntity(id) || this.resourceLoading(href)) {\n return this.lookup(id);\n }\n\n return this.fetchEntity(href);\n }\n\n /**\n * Retrieve a collection from the store\n *\n * @param input List params to require, or href of the resource\n */\n collection(input:ResourceKeyInput):Observable {\n const href = this.buildResourceLink(input);\n\n return this\n .collectionState(href)\n .pipe(\n switchMap((collection) => this.query.selectMany(collection?.ids || [])),\n );\n }\n\n /**\n * Return a collection observable that triggers only when the collection is loaded.\n * @param input List params to require, or href of the resource\n */\n loadedCollection(input:ResourceKeyInput):Observable {\n const href = this.buildResourceLink(input);\n\n return this\n .collectionState(href)\n .pipe(\n filter(isDefinedEntity),\n switchMap((collection:CollectionResponse) => this.query.selectMany(collection.ids)),\n );\n }\n\n /**\n * Return a collection observable that triggers only when the collection is loaded.\n * @param input List params to require, or href of the resource\n */\n collectionState(input:ResourceKeyInput):Observable {\n const href = this.buildResourceLink(input);\n\n return this\n .query\n .select()\n .pipe(\n map((state) => state.collections[href]),\n );\n }\n\n /**\n * Lookup a single entity from the store\n * @param id\n */\n lookup(id:ID):Observable {\n return this\n .query\n .selectEntity(id)\n .pipe(filter(isDefinedEntity));\n }\n\n /**\n * Lookup multiple entities from the store\n */\n lookupMany(ids:ID[]):Observable {\n return this\n .query\n .selectMany(ids);\n }\n\n /**\n * Checks, if the store already has a resource loaded by id.\n * @param id\n */\n exists(id:ID):boolean {\n return this.query.hasEntity(id);\n }\n\n /**\n * Checks, if the store already has a collection given the key\n *\n * @param input List params to require, or href of the resource\n */\n collectionExists(input:ResourceKeyInput):boolean {\n const href = this.buildResourceLink(input);\n\n return !!this\n .query\n .getValue()\n .collections[href];\n }\n\n /**\n * Checks, if the store already has a collection given the key\n *\n * @param input List params to require, or href of the resource\n */\n resourceLoading(input:ResourceKeyInput):boolean {\n const href = this.buildResourceLink(input);\n\n return this\n .query\n .getValue()\n .loadingResources[href] === true;\n }\n\n /**\n * Clear a collection key\n * @param input List params to require, or href of the resource\n */\n clear(input:ResourceKeyInput):void {\n const href = this.buildResourceLink(input);\n\n this\n .store\n .update(\n ({ collections }) => ({\n collections: omit(collections, href),\n }),\n );\n }\n\n /**\n * Update a single entity in the store\n *\n * @param id The id to update\n * @param entity A section of the entity to update\n */\n update(id:ID, entity:Partial):void {\n this.store.update(id, entity);\n }\n\n /**\n * Fetch a given collection, returning only its results\n */\n fetchResults(params:ResourceKeyInput):Observable {\n return this\n .fetchCollection(params)\n .pipe(\n map((collection) => collection._embedded.elements),\n );\n }\n\n /**\n * Fetch a given collection, ensuring it is being flagged as loaded\n *\n * @param params {ResourceKeyInput} collection key or list params to build collection key from\n * @param options {ResourceStoreLoadOptions} Handle collection loading errors within the resource service\n */\n fetchCollection(\n params:ResourceKeyInput,\n options:ResourceStoreLoadOptions = { handleErrors: true },\n ):Observable> {\n const href = this.buildResourceLink(params);\n\n setResourceLoading(this.store, href);\n\n return this\n .http\n .get>(href)\n .pipe(\n tap((collection) => insertCollectionIntoState(this.store, collection, href)),\n finalize(() => removeResourceLoading(this.store, href)),\n catchError((error:unknown) => {\n if (options.handleErrors) {\n this.handleResourceLoadingError(error as HttpErrorResponse, href);\n }\n\n throw error;\n }),\n shareReplay(1),\n );\n }\n\n /**\n * Fetch a single entity, ensuring it is being flagged as loaded\n *\n * @param href {string} of the resource to load\n * @param options {ResourceStoreLoadOptions} Handle loading errors within the resource service\n */\n fetchEntity(\n href:string,\n options:ResourceStoreLoadOptions = { handleErrors: true },\n ):Observable {\n setResourceLoading(this.store, href);\n\n return this\n .http\n .get(href)\n .pipe(\n tap((entity) => this.store.add(entity)),\n finalize(() => removeResourceLoading(this.store, href)),\n catchError((error:unknown) => {\n if (options.handleErrors) {\n this.handleResourceLoadingError(error as HttpErrorResponse, href);\n }\n\n throw error;\n }),\n shareReplay(1),\n );\n }\n\n protected buildResourceLink(input:ResourceKeyInput):string {\n if (typeof input === 'string') {\n return input;\n }\n\n return this.basePath() + listParamsString(input);\n }\n\n /**\n * Create a new instance of this resource service's underlying store.\n * @protected\n */\n protected abstract createStore():ResourceStore;\n\n /**\n * Base path for this collection\n * @protected\n */\n protected abstract basePath():string;\n\n /**\n * By default, add a toast error in case of loading errors\n * @param error\n * @param _path\n * @protected\n */\n protected handleResourceLoadingError(error:HttpErrorResponse, _path:string):void {\n this.toastService.addError(error);\n }\n}\n","import {\n applyTransaction,\n EntityState,\n EntityStore,\n ID,\n} from '@datorama/akita';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { IHalResourceLinks } from 'core-app/core/state/hal-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { filter } from 'lodash';\n\nexport interface CollectionResponse {\n ids:ID[];\n}\n\nexport interface ResourceState extends EntityState {\n /** Loaded notification collections */\n collections:Record;\n\n /** Loading resources, collections or singular entities */\n loadingResources:Record;\n}\n\nexport interface CollectionItem {\n id:ID;\n}\n\nexport function mapHALCollectionToIDCollection(collection:IHALCollection):CollectionResponse {\n return {\n ids: collection._embedded.elements.map((el) => el.id),\n };\n}\n\n/**\n * Initialize the resource part of the entity store\n */\nexport function createInitialResourceState():ResourceState {\n return {\n collections: {},\n loadingResources: {},\n };\n}\n\n/**\n * Mark a resource path as being loaded\n *\n * @param store An entity store for the collection\n * @param url The resource path to mark as loading\n */\nexport function setResourceLoading(\n store:EntityStore>,\n url:string,\n):void {\n store.update(({ loadingResources }) => (\n {\n loadingResources: {\n ...loadingResources,\n [url]: true,\n },\n }\n ));\n}\n\n/**\n * Mark a resource path as no longer loading\n *\n * @param store An entity store for the collection\n * @param url The resource path to unmark as loading\n */\nexport function removeResourceLoading(\n store:EntityStore>,\n url:string,\n):void {\n store.update(({ loadingResources }) => (\n {\n loadingResources: filter(loadingResources, (_, key) => key !== url),\n }\n ));\n}\n\n/**\n * Insert a collection into the given entity store\n *\n * @param store An entity store for the collection\n * @param collection A loaded collection\n * @param collectionUrl The key to insert the collection at\n */\nexport function insertCollectionIntoState(\n store:EntityStore>,\n collection:IHALCollection,\n collectionUrl:string,\n):void {\n const { elements } = collection._embedded as { elements:undefined|T[] };\n\n // Some JSON endpoints return no elements result if there are no elements\n const ids = elements?.map((el) => el.id) || [];\n\n applyTransaction(() => {\n // Avoid inserting when elements is not defined\n if (elements && elements.length > 0) {\n store.upsertMany(elements);\n }\n\n store.update(({ collections }) => (\n {\n collections: {\n ...collections,\n [collectionUrl]: {\n ids,\n },\n },\n }\n ));\n });\n}\n\nexport function removeEntityFromCollectionAndState(\n store:EntityStore>,\n entityId:ID,\n collectionUrl:string,\n):void {\n applyTransaction(() => {\n store.remove(entityId);\n store.update(({ collections }) => (\n {\n collections: {\n ...collections,\n [collectionUrl]: {\n ...collections[collectionUrl],\n ids: (collections[collectionUrl]?.ids || []).filter((id) => id !== entityId),\n },\n },\n }\n ));\n });\n}\n\nexport function collectionFrom(elements:T[]):IHALCollection {\n const count = elements.length;\n\n return {\n _type: 'Collection',\n count,\n total: count,\n pageSize: count,\n offset: 1,\n _embedded: {\n elements,\n },\n };\n}\n\n/**\n * Takes a collection of elements that do not have an ID, and extract the ID from self link.\n * @param collection a IHALCollection with elements that have a self link\n * @returns the same collection with elements extended with an ID derived from the self link.\n */\nexport function extendCollectionElementsWithId(\n collection:IHALCollection,\n):IHALCollection {\n const elements = collection._embedded.elements.map((element) => ({\n ...element,\n id: idFromLink(element._links.self.href),\n }));\n\n return {\n ...collection,\n _embedded: {\n ...collection._embedded,\n elements,\n },\n };\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n EntityState, EntityStore, ID, StoreConfig,\n} from '@datorama/akita';\nimport { IStorageFile } from 'core-app/core/state/storage-files/storage-file.model';\n\nexport interface IStorageFilesResponse {\n files:ID[];\n ancestors:ID[];\n parent:ID;\n}\n\nexport interface IStorageFilesState extends EntityState {\n files:Record;\n}\n\n@StoreConfig({\n name: 'storage-files',\n resettable: true,\n})\nexport class StorageFilesStore extends EntityStore {\n constructor() {\n super({ files: {} });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport {\n filter, map, take, tap,\n} from 'rxjs/operators';\n\nimport { IHalResourceLink } from 'core-app/core/state/hal-resource';\nimport { StorageFilesStore } from 'core-app/core/state/storage-files/storage-files.store';\nimport { IUploadLink } from 'core-app/core/state/storage-files/upload-link.model';\nimport { IPrepareUploadLink } from 'core-app/core/state/storages/storage.model';\nimport { IStorageFiles } from 'core-app/core/state/storage-files/storage-files.model';\nimport { HttpClient } from '@angular/common/http';\nimport { ID, QueryEntity } from '@datorama/akita';\nimport { IStorageFile } from 'core-app/core/state/storage-files/storage-file.model';\nimport isDefinedEntity from 'core-app/core/state/is-defined-entity';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\n@Injectable()\nexport class StorageFilesResourceService {\n private readonly store:StorageFilesStore = new StorageFilesStore();\n\n private readonly query = new QueryEntity(this.store);\n\n constructor(\n private readonly httpClient:HttpClient,\n private readonly apiV3Service:ApiV3Service,\n ) {}\n\n files(link:IHalResourceLink):Observable {\n const value = this.store.getValue().files[link.href];\n if (value !== undefined) {\n return combineLatest([this.lookupMany(value.files), this.lookup(value.parent), this.lookupMany(value.ancestors)])\n .pipe(\n map(([files, parent, ancestors]):IStorageFiles => ({\n files, parent, ancestors, _type: 'StorageFiles', _links: { self: link },\n })),\n take(1),\n );\n }\n\n return this.httpClient\n .get(link.href)\n .pipe(tap((storageFiles) => this.insert(storageFiles, link.href)));\n }\n\n file(href:string):Observable {\n return this.httpClient.get(href);\n }\n\n uploadLink(link:IPrepareUploadLink):Observable {\n return this.httpClient.request(link.method, link.href, { body: link.payload });\n }\n\n createFolder(href:string, body:{ name:string, parent_id:ID }):Observable {\n return this.httpClient.post(href, body);\n }\n\n reset():void {\n this.store.reset();\n }\n\n removeCollection(link:IHalResourceLink):void {\n delete this.store.getValue().files[link.href];\n }\n\n private lookup(id:ID):Observable {\n return this\n .query\n .selectEntity(id)\n .pipe(filter(isDefinedEntity));\n }\n\n private lookupMany(ids:ID[]):Observable {\n return this.query.selectMany(ids);\n }\n\n private insert(storageFiles:IStorageFiles, link:string):void {\n this.store.upsertMany([...storageFiles.files, storageFiles.parent, ...storageFiles.ancestors]);\n\n const fileIds = storageFiles.files.map((file) => file.id);\n const parentId = storageFiles.parent.id;\n const ancestorIds = storageFiles.ancestors.map((file) => file.id);\n\n this.store.update(({ files }) => ({\n files: {\n ...files,\n [link]: {\n files: fileIds,\n parent: parentId,\n ancestors: ancestorIds,\n },\n },\n }));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { EntityStore, StoreConfig } from '@datorama/akita';\nimport { ResourceState, createInitialResourceState } from 'core-app/core/state/resource-store';\nimport { IStorage } from 'core-app/core/state/storages/storage.model';\n\nexport interface StoragesState extends ResourceState {}\n\n@StoreConfig({ name: 'storages' })\nexport class StoragesStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { tap } from 'rxjs/operators';\nimport {\n forkJoin,\n Observable,\n} from 'rxjs';\nimport { IStorage } from 'core-app/core/state/storages/storage.model';\nimport { StoragesStore } from 'core-app/core/state/storages/storages.store';\nimport { insertCollectionIntoState } from 'core-app/core/state/resource-store';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { IHalResourceLink } from 'core-app/core/state/hal-resource';\nimport {\n ResourceStore,\n ResourceStoreService,\n} from 'core-app/core/state/resource-store.service';\n\n@Injectable()\nexport class StoragesResourceService extends ResourceStoreService {\n updateCollection(key:string, storageLinks:IHalResourceLink[]):Observable {\n return forkJoin(storageLinks.map((link) => this.http.get(link.href)))\n .pipe(\n tap((storages) => {\n const storageCollection = { _embedded: { elements: storages } } as IHALCollection;\n insertCollectionIntoState(this.store, storageCollection, key);\n }),\n );\n }\n\n protected createStore():ResourceStore {\n return new StoragesStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.storages.path;\n }\n}\n","import {\n InputState,\n multiInput,\n MultiInputState,\n StatesGroup,\n} from '@openproject/reactivestates';\nimport { Subject } from 'rxjs';\nimport { TypeResource } from 'core-app/features/hal/resources/type-resource';\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { VersionResource } from 'core-app/features/hal/resources/version-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { StatusResource } from 'core-app/features/hal/resources/status-resource';\nimport { PlaceholderUserResource } from 'core-app/features/hal/resources/placeholder-user-resource';\nimport { RoleResource } from 'core-app/features/hal/resources/role-resource';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { PostResource } from 'core-app/features/hal/resources/post-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\n\nexport class States extends StatesGroup {\n name = 'MainStore';\n\n /* /api/v3/projects */\n projects:MultiInputState = multiInput();\n\n /* /api/v3/work_packages */\n workPackages = multiInput();\n\n /* /api/v3/wiki_pages */\n posts = multiInput();\n\n /* /api/v3/schemas */\n schemas = multiInput();\n\n /* /api/v3/types */\n types = multiInput();\n\n /* /api/v3/statuses */\n statuses = multiInput();\n\n /* /api/v3/time_entries */\n timeEntries = multiInput();\n\n /* /api/v3/versions */\n versions = multiInput();\n\n /* /api/v3/users */\n users = multiInput();\n\n /* /api/v3/placeholder_users */\n placeholderUsers = multiInput();\n\n /* /api/v3/roles */\n roles = multiInput();\n\n // Global events to isolated changes\n changes = {\n // Global subject on changes to the given query ID\n queries: new Subject(),\n };\n\n // Additional state map that can be dynamically registered.\n additional:{ [id:string]:MultiInputState } = {};\n\n forType(stateName:string):MultiInputState {\n let state = (this as any)[stateName] || this.additional[stateName];\n\n if (!state) {\n state = this.additional[stateName] = multiInput();\n }\n\n return state;\n }\n\n forResource(resource:T):InputState|undefined {\n const stateName = `${_.camelCase(resource._type)}s`;\n const state = this.forType(stateName);\n\n return state && state.get(resource.id!);\n }\n\n public add(name:string, state:MultiInputState) {\n this.additional[name] = state;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport { findAllFocusableElementsWithin } from 'core-app/shared/helpers/focus-helpers';\nimport { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport const ANIMATION_RATE_MS = 100;\n\n@Injectable({ providedIn: 'root' })\nexport class TopMenuService {\n private hover = false;\n\n private menuIsOpen = false;\n\n private menuContainer:HTMLElement;\n\n private active$ = new BehaviorSubject(null);\n\n constructor(@Inject(DOCUMENT) private document:Document) {\n }\n\n register():void {\n this.menuContainer = this.document.querySelector('.op-app-header') as HTMLElement;\n this.setupDropdownClick();\n this.closeOnBodyClick();\n this.accessibility();\n this.skipContentClickListener();\n }\n\n public activeDropdown$():Observable {\n return this.active$.asObservable();\n }\n\n // the entire menu gets closed, no hover possible afterwards\n public close():void {\n this.stopHover();\n this.closeAllItems();\n this.menuIsOpen = false;\n this.active$.next(null);\n }\n\n private skipContentClickListener():void {\n // Skip menu on content\n const skipLink = this.document.querySelector('#skip-navigation--content') as HTMLElement;\n skipLink?.addEventListener('click', () => {\n // Skip to the breadcrumb or the first link in the toolbar or the first link in the content (homescreen)\n const selectors = '.first-breadcrumb-element a, .toolbar-container a:first-of-type, #content a:first-of-type';\n const visibleLink = jQuery(selectors)\n .not(':hidden')\n .first();\n\n if (visibleLink.length) {\n visibleLink.trigger('focus');\n }\n });\n }\n\n private accessibility():void {\n this\n .document\n .querySelectorAll('.op-app-menu--dropdown')\n .forEach((el) => el.setAttribute('aria-expanded', 'false'));\n }\n\n private toggleClick(dropdown:HTMLElement):void {\n if (this.menuIsOpen) {\n if (this.isOpen(dropdown)) {\n this.close();\n } else {\n this.openDropdown(dropdown);\n }\n } else {\n this.opening();\n this.openDropdown(dropdown);\n }\n }\n\n // somebody opens the menu via click, hover possible afterwards\n private opening():void {\n this.startHover();\n this.menuIsOpen = true;\n }\n\n private stopHover():void {\n this.hover = false;\n this.menuContainer?.classList.remove('hover');\n }\n\n private startHover():void {\n this.hover = true;\n this.menuContainer?.classList.add('hover');\n }\n\n private closeAllItems():void {\n this\n .openDropdowns()\n .forEach((item) => this.closeDropdown(item));\n }\n\n private closeOnBodyClick():void {\n const wrapper = document.getElementById('wrapper');\n if (!wrapper) {\n return;\n }\n\n wrapper.addEventListener('click', (evt) => {\n if (this.menuIsOpen && !this.openDropdowns()[0]?.contains(evt.target as HTMLElement)) {\n this.close();\n }\n }, true);\n }\n\n private openDropdowns():HTMLElement[] {\n const elements = this.menuContainer?.querySelectorAll('.op-app-menu--item_dropdown-open');\n return elements ? Array.from(elements) : [];\n }\n\n private dropdowns():HTMLElement[] {\n const elements = this.menuContainer?.querySelectorAll('.op-app-menu--item_has-dropdown');\n return elements ? Array.from(elements) : [];\n }\n\n private setupDropdownClick():void {\n this.dropdowns().forEach((el) => {\n const action = el.querySelector('.op-app-menu--item-action');\n action?.addEventListener('click', (evt) => {\n this.toggleClick(el);\n evt.preventDefault();\n });\n });\n }\n\n private isOpen(dropdown:HTMLElement):boolean {\n return dropdown.classList.contains('.op-app-menu--item_dropdown-open');\n }\n\n private isClosed(dropdown:HTMLElement):boolean {\n return !this.isOpen(dropdown);\n }\n\n private openDropdown(dropdown:HTMLElement):void {\n this.closeOtherItems(dropdown);\n this.slideAndFocus(dropdown, () => {\n this.active$.next(dropdown);\n });\n }\n\n private closeDropdown(dropdown:HTMLElement, immediate?:boolean):void {\n this.slideUp(dropdown, !!immediate);\n this.active$.next(null);\n }\n\n private closeOtherItems(dropdown:HTMLElement):void {\n this\n .openDropdowns()\n .forEach((other) => {\n if (other !== dropdown) {\n this.closeDropdown(other, true);\n }\n });\n }\n\n private slideAndFocus(dropdown:HTMLElement, callback:() => void):void {\n this.slideDown(dropdown, callback);\n setTimeout(() => this.focusFirstInputOrLink(dropdown), ANIMATION_RATE_MS);\n }\n\n private slideDown(dropdown:HTMLElement, callback:() => void):void {\n const toDrop = this.getDropdownContainer(dropdown);\n toDrop.setAttribute('aria-expanded', 'true');\n dropdown.classList.add('op-app-menu--item_dropdown-open');\n\n jQuery(toDrop)\n .slideDown(ANIMATION_RATE_MS, callback)\n .attr('aria-expanded', 'true');\n }\n\n private slideUp(dropdown:HTMLElement, immediate:boolean):void {\n const toDrop = this.getDropdownContainer(dropdown);\n toDrop.removeAttribute('aria-expanded');\n dropdown.classList.remove('op-app-menu--item_dropdown-open');\n\n if (immediate) {\n toDrop.style.display = 'none';\n } else {\n jQuery(toDrop).slideUp(ANIMATION_RATE_MS);\n }\n }\n\n // If there is ANY input, it will have precedence over links,\n // i.e. links will only get focused, if there is NO input whatsoever\n private focusFirstInputOrLink(dropdown:HTMLElement):void {\n const toDrop = this.getDropdownContainer(dropdown);\n const focusable = findAllFocusableElementsWithin(toDrop);\n const toFocus = focusable[0] as HTMLElement;\n if (!toFocus) {\n return;\n }\n // actually a simple focus should be enough.\n // The rest is only there to work around a rendering bug in webkit (as of Oct 2011),\n // occurring mostly inside the login/signup dropdown.\n toFocus.blur();\n setTimeout(() => {\n toFocus.focus();\n }, 10);\n }\n\n private getDropdownContainer(dropdown:HTMLElement):HTMLElement {\n return dropdown.querySelector('.op-app-menu--dropdown') as HTMLElement;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { renderStreamMessage } from '@hotwired/turbo';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TurboRequestsService {\n constructor(\n private toast:ToastService,\n ) {\n\n }\n\n public request(url:string, init:RequestInit = {}, suppressErrorToast = false):Promise<{\n html:string,\n headers:Headers\n }> {\n return fetch(url, init)\n .then((response) => {\n return response.text().then((html) => ({\n html,\n headers: response.headers,\n response,\n }));\n })\n .then((result) => {\n // the result may contain a primer error banner if any server side error appeared\n // thus we need to render the html even for non-ok responses\n renderStreamMessage(result.html);\n // after rendering the html, check if the response and throw an error if it's not ok\n if (!result.response.ok) {\n throw new Error(result.response.statusText);\n } else {\n // enable further processing of the html and headers in the calling function\n return { html: result.html, headers: result.headers };\n }\n })\n .catch((error) => {\n // this should only catch errors happening in the client side parsing in the above .then() calls\n if (!suppressErrorToast) {\n this.toast.addError(error as string);\n } else {\n console.error(error);\n }\n throw error;\n });\n }\n\n public submitForm(\n form:HTMLFormElement,\n params:URLSearchParams|null = null,\n url = form.action,\n ):Promise<{ html:string, headers:Headers }> {\n const formData = new FormData(form);\n const requestParams = params ? `?${params.toString()}` : '';\n return this.request(\n `${url}${requestParams}`,\n {\n method: form.method,\n body: formData,\n headers: {\n 'X-CSRF-Token': (document.querySelector('meta[name=\"csrf-token\"]') as HTMLMetaElement).content,\n },\n },\n true,\n );\n }\n\n public requestStream(url:string):Promise<{ html:string, headers:Headers }> {\n return this.request(url, {\n method: 'GET',\n headers: { Accept: 'text/vnd.turbo-stream.html' },\n credentials: 'same-origin',\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HttpEvent, HttpEventType, HttpResponse } from '@angular/common/http';\n\nexport default function isHttpResponse(event:HttpEvent):event is HttpResponse {\n return event.type === HttpEventType.Response;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Observable } from 'rxjs';\nimport { HttpEvent } from '@angular/common/http';\n\nexport interface IUploadFile {\n file:File;\n overwrite?:boolean;\n}\n\nexport abstract class OpUploadService {\n public abstract upload(href:string, uploadFiles:IUploadFile[]):Observable>[];\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { forkJoin, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { HttpEvent, HttpResponse } from '@angular/common/http';\n\nimport isHttpResponse from 'core-app/core/upload/is-http-response';\n\nexport default function waitForUploadsFinished(uploads:Observable>[]):Observable[]> {\n return forkJoin(\n uploads.map((o) => o.pipe(filter(isHttpResponse))),\n );\n}\n","import { Injector } from '@angular/core';\nimport { Constructor } from '@angular/cdk/table';\nimport { SimpleResource, SimpleResourceCollection } from 'core-app/core/apiv3/paths/path-resources';\n\nexport class BcfResourcePath extends SimpleResource {\n constructor(readonly injector:Injector,\n basePath:string,\n readonly id:string|number) {\n super(basePath, id);\n }\n}\n\nexport class BcfResourceCollectionPath extends SimpleResourceCollection {\n constructor(readonly injector:Injector,\n protected basePath:string,\n segment:string,\n protected resource?:Constructor) {\n super(basePath, segment, resource);\n }\n\n public id(id:string|number):T {\n return new (this.resource || BcfResourcePath)(this.injector, this.path, id) as T;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { Injector } from '@angular/core';\nimport { TypedJSON } from 'typedjson';\nimport { Constructor } from '@angular/cdk/table';\nimport { Observable, throwError } from 'rxjs';\nimport {\n HTTPClientHeaders,\n HTTPClientOptions,\n HTTPClientParamMap,\n HTTPSupportedMethods,\n} from 'core-app/features/hal/http/http.interfaces';\nimport { catchError, map } from 'rxjs/operators';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { URLParamsEncoder } from 'core-app/features/hal/services/url-params-encoder';\n\nexport class BcfApiRequestService {\n @InjectField() http:HttpClient;\n\n /**\n * Create a BCF api request service.\n * Optionally pass a resource map to map the resulting data to with TypedJson.\n *\n * @param injector Injector\n * @param resourceClass Optional mapped resource class with TypedJson annotations\n */\n constructor(readonly injector:Injector,\n readonly resourceClass?:Constructor) {\n }\n\n /**\n * Request GET from the given BCF API 2.1 resource and map it to +resourceClass+.\n *\n * @param path API path to request\n * @param params Request query params\n * @param headers optional headers map\n */\n get(path:string, params:HTTPClientParamMap, headers:HTTPClientHeaders = {}):Observable {\n const config:HTTPClientOptions = {\n headers,\n params: new HttpParams({ encoder: new URLParamsEncoder(), fromObject: params }),\n withCredentials: true,\n responseType: 'json',\n };\n\n return this._request('get', path, config);\n }\n\n /**\n * Request the given BCF API 2.1 resource and map it to +resourceClass+.\n *\n * @param method request method\n * @param path API path to request\n * @param data Request payload (URL params for get, JSON payload otherwise)\n * @param headers Request headers\n */\n public request(method:HTTPSupportedMethods, path:string, data:HTTPClientParamMap = {}, headers:HTTPClientHeaders = {}):Observable {\n // HttpClient requires us to create HttpParams instead of passing data for get\n // so forward to that method instead.\n if (method === 'get') {\n return this.get(path, data, headers);\n }\n\n const config:HTTPClientOptions = {\n body: data || {},\n headers,\n withCredentials: true,\n responseType: 'json',\n };\n\n return this._request(method, path, config);\n }\n\n /**\n * Perform the request with httpClient and deserialize the result\n *\n * @param method Request method\n * @param path Request path\n * @param config HTTP client configuration\n *\n * @private\n */\n private _request(method:HTTPSupportedMethods, path:string, config:HTTPClientOptions):Observable {\n return this\n .http\n .request(method, path, config)\n .pipe(\n map((response:any) => this.deserialize(response)),\n catchError((error:HttpErrorResponse) => {\n console.error(`Failed to ${method} ${path}: ${error.name}`);\n return throwError(error);\n }),\n );\n }\n\n /**\n * Deserialize the JSON data into the mapped resource class, if given.\n * @param data JSON API response.\n */\n protected deserialize(data:any):T {\n if (this.resourceClass) {\n const serializer = new TypedJSON(this.resourceClass);\n return serializer.parse(data)!;\n }\n return data;\n }\n}\n","import { jsonMember, jsonObject } from 'typedjson';\n\n@jsonObject\nexport class BcfProjectResource {\n @jsonMember\n project_id:number;\n\n @jsonMember\n name:string;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { jsonArrayMember, jsonMember, jsonObject } from 'typedjson';\nimport * as moment from 'moment';\nimport { Moment } from 'moment';\n\n@jsonObject\nexport class BcfTopicAuthorizationMap {\n @jsonArrayMember(String)\n topic_actions:string[];\n\n @jsonArrayMember(String)\n topic_status:string[];\n}\n\n@jsonObject\nexport class BcfTopicResource {\n @jsonMember\n guid:string;\n\n @jsonMember\n topic_type:string;\n\n @jsonMember\n topic_status:string;\n\n @jsonMember\n priority:string;\n\n @jsonArrayMember(String)\n reference_links:string[];\n\n @jsonMember\n title:string;\n\n @jsonMember({ preserveNull: true })\n index:number|null;\n\n @jsonArrayMember(String)\n labels:string[];\n\n @jsonMember({ deserializer: (value) => moment(value), serializer: (timestamp:Moment) => timestamp.toISOString() })\n creation_date:Moment;\n\n @jsonMember\n creation_author:string;\n\n @jsonMember({ deserializer: (value) => moment(value), serializer: (timestamp:Moment) => timestamp.toISOString() })\n modified_date:Moment;\n\n @jsonMember({ preserveNull: true })\n modified_author:string|null;\n\n @jsonMember\n assigned_to:string;\n\n @jsonMember({ preserveNull: true })\n stage:string|null;\n\n @jsonMember\n description:string;\n\n @jsonMember({\n deserializer: (value) => moment(value),\n serializer: (timestamp:Moment) => timestamp.format('YYYY-MM-DD'),\n })\n due_date:Moment;\n\n @jsonMember\n authorization:BcfTopicAuthorizationMap;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { BcfResourcePath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfApiRequestService } from 'core-app/features/bim/bcf/api/bcf-api-request.service';\nimport { HTTPClientHeaders, HTTPClientParamMap } from 'core-app/features/hal/http/http.interfaces';\nimport { Observable } from 'rxjs';\nimport { BcfViewpointSelection } from 'core-app/features/bim/bcf/api/bcf-api.model';\n\nexport class BcfViewpointSelectionPath extends BcfResourcePath {\n readonly bcfViewpointsService = new BcfApiRequestService(this.injector);\n\n get(params:HTTPClientParamMap = {}, headers:HTTPClientHeaders = {}):Observable {\n return this.bcfViewpointsService.get(this.toPath(), params, headers);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { BcfResourcePath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfApiRequestService } from 'core-app/features/bim/bcf/api/bcf-api-request.service';\nimport { HTTPClientHeaders, HTTPClientParamMap } from 'core-app/features/hal/http/http.interfaces';\nimport { Observable } from 'rxjs';\nimport { BcfViewpointVisibility } from 'core-app/features/bim/bcf/api/bcf-api.model';\n\nexport class BcfViewpointVisibilityPaths extends BcfResourcePath {\n readonly bcfViewpointsService = new BcfApiRequestService(this.injector);\n\n get(params:HTTPClientParamMap = {}, headers:HTTPClientHeaders = {}):Observable {\n return this.bcfViewpointsService.get(this.toPath(), params, headers);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HTTPClientHeaders, HTTPClientParamMap } from 'core-app/features/hal/http/http.interfaces';\nimport { BcfResourcePath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfApiRequestService } from 'core-app/features/bim/bcf/api/bcf-api-request.service';\nimport { BcfViewpointSelectionPath } from 'core-app/features/bim/bcf/api/viewpoints/bcf-viewpoint-selection.paths';\nimport { Observable } from 'rxjs';\nimport { BcfViewpointVisibilityPaths } from 'core-app/features/bim/bcf/api/viewpoints/bcf-viewpoint-visibility.paths';\nimport { BcfViewpoint } from 'core-app/features/bim/bcf/api/bcf-api.model';\nimport { map } from 'rxjs/operators';\n\nexport class BcfViewpointPaths extends BcfResourcePath {\n readonly bcfViewpointsService = new BcfApiRequestService(this.injector);\n\n public readonly selection = new BcfViewpointSelectionPath(this.injector, this.path, 'selection');\n\n public readonly visibility = new BcfViewpointVisibilityPaths(this.injector, this.path, 'visibility');\n\n get(params:HTTPClientParamMap = {}, headers:HTTPClientHeaders = {}):Observable {\n return this.bcfViewpointsService.get(this.toPath(), params, headers);\n }\n\n delete(headers:HTTPClientHeaders = {}):Observable {\n return this.bcfViewpointsService\n .request('delete', this.toPath(), {}, headers)\n .pipe(\n map(() => { }),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { BcfResourceCollectionPath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfApiRequestService } from 'core-app/features/bim/bcf/api/bcf-api-request.service';\nimport { Observable } from 'rxjs';\nimport { BcfViewpointPaths } from 'core-app/features/bim/bcf/api/viewpoints/bcf-viewpoint.paths';\nimport { CreateBcfViewpointData } from 'core-app/features/bim/bcf/api/bcf-api.model';\n\nexport class BcfViewpointCollectionPath extends BcfResourceCollectionPath {\n readonly bcfViewpointService = new BcfApiRequestService(this.injector);\n\n post(viewpoint:CreateBcfViewpointData):Observable {\n return this\n .bcfViewpointService\n .request(\n 'post',\n this.toPath(),\n viewpoint,\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { BcfResourceCollectionPath, BcfResourcePath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfTopicResource } from 'core-app/features/bim/bcf/api/topics/bcf-topic.resource';\nimport { BcfApiRequestService } from 'core-app/features/bim/bcf/api/bcf-api-request.service';\nimport { BcfViewpointPaths } from 'core-app/features/bim/bcf/api/viewpoints/bcf-viewpoint.paths';\nimport { BcfViewpointCollectionPath } from 'core-app/features/bim/bcf/api/viewpoints/bcf-viewpoint-collection.paths';\nimport { HTTPClientHeaders, HTTPClientParamMap } from 'core-app/features/hal/http/http.interfaces';\nimport { Observable } from 'rxjs';\n\nexport class BcfTopicPaths extends BcfResourcePath {\n readonly bcfTopicService = new BcfApiRequestService(this.injector, BcfTopicResource);\n\n /** /comments */\n public readonly comments = new BcfResourceCollectionPath(this.injector, this.path, 'comments');\n\n /** /viewpoints */\n public readonly viewpoints = new BcfViewpointCollectionPath(this.injector, this.path, 'viewpoints', BcfViewpointPaths);\n\n get(params:HTTPClientParamMap = {}, headers:HTTPClientHeaders = {}):Observable {\n return this.bcfTopicService.get(this.toPath(), params, headers);\n }\n}\n","import { BcfResourceCollectionPath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfApiRequestService } from 'core-app/features/bim/bcf/api/bcf-api-request.service';\nimport { HTTPClientHeaders, HTTPClientParamMap } from 'core-app/features/hal/http/http.interfaces';\nimport { Observable } from 'rxjs';\nimport { BcfTopicPaths } from 'core-app/features/bim/bcf/api/topics/bcf-topic.paths';\nimport { Injector } from '@angular/core';\nimport { BcfTopicResource } from 'core-app/features/bim/bcf/api/topics/bcf-topic.resource';\n\nexport class BcfTopicCollectionPath extends BcfResourceCollectionPath {\n readonly bcfTopicService = new BcfApiRequestService(this.injector, BcfTopicResource);\n\n constructor(readonly injector:Injector,\n protected basePath:string,\n segment:string) {\n super(injector, basePath, segment, BcfTopicPaths);\n }\n\n get(params:HTTPClientParamMap = {}, headers:HTTPClientHeaders = {}) {\n throw new Error('Not implemented');\n }\n\n /**\n * Create a topic from its to-be-associated work package\n */\n post(payload:any):Observable {\n return this\n .bcfTopicService\n .request(\n 'post',\n this.toPath(),\n payload,\n );\n }\n}\n","import { jsonArrayMember, jsonObject } from 'typedjson';\n\n@jsonObject\nexport class BcfExtensionResource {\n @jsonArrayMember(String)\n topic_actions:string[];\n\n @jsonArrayMember(String)\n project_actions:string[];\n\n @jsonArrayMember(String)\n comment_actions:string[];\n}\n","import { BcfResourcePath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfApiRequestService } from 'core-app/features/bim/bcf/api/bcf-api-request.service';\nimport { HTTPClientHeaders, HTTPClientParamMap } from 'core-app/features/hal/http/http.interfaces';\nimport { BcfExtensionResource } from 'core-app/features/bim/bcf/api/extensions/bcf-extension.resource';\n\nexport class BcfExtensionPaths extends BcfResourcePath {\n readonly bcfExtensionService = new BcfApiRequestService(this.injector, BcfExtensionResource);\n\n get(params:HTTPClientParamMap = {}, headers:HTTPClientHeaders = {}) {\n return this.bcfExtensionService.get(this.toPath(), params, headers);\n }\n}\n","import { BcfResourcePath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfApiRequestService } from 'core-app/features/bim/bcf/api/bcf-api-request.service';\nimport { BcfProjectResource } from 'core-app/features/bim/bcf/api/projects/bcf-project.resource';\nimport { HTTPClientHeaders, HTTPClientParamMap } from 'core-app/features/hal/http/http.interfaces';\nimport { BcfTopicCollectionPath } from 'core-app/features/bim/bcf/api/topics/bcf-viewpoint-collection.paths';\nimport { BcfExtensionPaths } from 'core-app/features/bim/bcf/api/extensions/bcf-extension.paths';\n\nexport class BcfProjectPaths extends BcfResourcePath {\n readonly bcfProjectService = new BcfApiRequestService(this.injector, BcfProjectResource);\n\n /** /topics */\n public readonly topics = new BcfTopicCollectionPath(this.injector, this.path, 'topics');\n\n public readonly extensions = new BcfExtensionPaths(this.injector, this.path, 'extensions');\n\n get(params:HTTPClientParamMap = {}, headers:HTTPClientHeaders = {}) {\n return this.bcfProjectService.get(this.toPath(), params, headers);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { BcfResourceCollectionPath } from 'core-app/features/bim/bcf/api/bcf-path-resources';\nimport { BcfProjectPaths } from 'core-app/features/bim/bcf/api/projects/bcf-project.paths';\n\n@Injectable({ providedIn: 'root' })\nexport class BcfApiService {\n public readonly bcfApiVersion = '2.1';\n\n public readonly appBasePath = window.appBasePath || '';\n\n public readonly bcfApiBase = `${this.appBasePath}/api/bcf/${this.bcfApiVersion}`;\n\n // /api/bcf/:version/projects\n public readonly projects = new BcfResourceCollectionPath(this.injector, this.bcfApiBase, 'projects', BcfProjectPaths);\n\n constructor(readonly injector:Injector) {\n }\n\n /**\n * Parse the given string into a BCF resource path\n *\n * @param href\n */\n parse(href:string):T {\n if (!href.startsWith(this.bcfApiBase)) {\n throw new Error(`Cannot parse ${href} into BCF resource.`);\n }\n\n const parts = href\n .replace(`${this.bcfApiBase}/`, '')\n .split('/');\n\n // Try to find a target collection or resource\n let current:any = this;\n\n for (let i = 0; i < parts.length; i++) {\n const pathOrId:string = parts[i];\n if (pathOrId in current) {\n // Current has a member named like this URL part\n // descend into it\n current = current[pathOrId];\n } else if (current instanceof BcfResourceCollectionPath) {\n // Otherwise, assume we're looking for an ID\n current = current.id(pathOrId);\n } else {\n // Otherwise, return the current\n break;\n }\n }\n\n return current === this ? undefined : current;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { StateService } from '@uirouter/core';\nimport { CreateBcfViewpointData } from 'core-app/features/bim/bcf/api/bcf-api.model';\n\n@Injectable()\nexport abstract class ViewerBridgeService {\n @InjectField() state:StateService;\n\n /**\n * Determine whether a viewer should be shown\n */\n abstract shouldShowViewer:boolean;\n\n protected constructor(readonly injector:Injector) {}\n\n /**\n * Get a viewpoint from the viewer\n */\n abstract getViewpoint$():Observable;\n\n /**\n * Show the given viewpoint JSON in the viewer\n */\n abstract showViewpoint(workPackage:WorkPackageResource, index:number):void;\n\n /**\n * Determine whether a viewer is present to ensure we can show viewpoints\n */\n abstract viewerVisible():boolean;\n\n /**\n * Fires when viewer becomes visible.\n */\n abstract viewerVisible$:Observable;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { HalLink } from 'core-app/features/hal/hal-link/hal-link';\n\n@Injectable()\nexport class BcfPathHelperService {\n constructor(readonly pathHelper:PathHelperService) {\n }\n\n public projectImportIssuePath(projectIdentifier:string) {\n return `${this.pathHelper.projectPath(projectIdentifier)}/issues/upload`;\n }\n\n public projectExportIssuesPath(projectIdentifier:string, filters:string|null) {\n if (filters) {\n return `${this.pathHelper.projectPath(projectIdentifier)}/work_packages.bcf?filters=${filters}`;\n }\n return `${this.pathHelper.projectPath(projectIdentifier)}/work_packages.bcf`;\n }\n\n public snapshotPath(viewpoint:HalLink) {\n return `${viewpoint.href}/snapshot`;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { BcfApiService } from 'core-app/features/bim/bcf/api/bcf-api.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { BcfViewpointPaths } from 'core-app/features/bim/bcf/api/viewpoints/bcf-viewpoint.paths';\nimport { ViewerBridgeService } from 'core-app/features/bim/bcf/bcf-viewer-bridge/viewer-bridge.service';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { BcfTopicResource } from 'core-app/features/bim/bcf/api/topics/bcf-topic.resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { BcfViewpointData, CreateBcfViewpointData } from 'core-app/features/bim/bcf/api/bcf-api.model';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\n@Injectable()\nexport class ViewpointsService {\n topicUUID:string|number|null = null;\n\n @InjectField() bcfApi:BcfApiService;\n\n @InjectField() viewerBridge:ViewerBridgeService;\n\n @InjectField() apiV3Service:ApiV3Service;\n\n constructor(readonly injector:Injector) { }\n\n public getViewPointResource(workPackage:WorkPackageResource, index:number):BcfViewpointPaths {\n const viewpointHref = (workPackage.bcfViewpoints as HalResource[])[index].href as string;\n\n return this.bcfApi.parse(viewpointHref);\n }\n\n public getViewPoint$(workPackage:WorkPackageResource, index:number):Observable {\n const viewpointResource = this.getViewPointResource(workPackage, index);\n\n return forkJoin({\n viewpoint: viewpointResource.get(),\n selection: viewpointResource.selection.get(),\n visibility: viewpointResource.visibility.get(),\n })\n .pipe(\n map(({ viewpoint, selection, visibility }) => {\n const data = viewpoint as BcfViewpointData;\n data.components = {\n coloring: [],\n selection: selection.selection,\n visibility: visibility.visibility,\n };\n return data;\n }),\n );\n }\n\n public deleteViewPoint$(workPackage:WorkPackageResource, index:number):Observable {\n const viewpointResource = this.getViewPointResource(workPackage, index);\n\n return viewpointResource\n .delete()\n .pipe(\n // Update the work package to reload the viewpoints\n tap(() => this.apiV3Service.work_packages.id(workPackage).requireAndStream(true)),\n );\n }\n\n public saveViewpoint$(workPackage:WorkPackageResource, viewpoint?:CreateBcfViewpointData):Observable {\n const projectLink = (workPackage.project as HalResource).href;\n const wpProjectId = idFromLink(projectLink);\n const topicUUID$ = this.setBcfTopic$(workPackage);\n // Default to the current viewer's viewpoint\n const viewpoint$ = viewpoint\n ? of(viewpoint)\n : this.viewerBridge.getViewpoint$();\n\n return forkJoin({\n topicUUID: topicUUID$,\n viewpoint: viewpoint$,\n })\n .pipe(\n switchMap((results) => this.bcfApi\n .projects.id(wpProjectId)\n .topics.id(results.topicUUID)\n .viewpoints\n .post(results.viewpoint)),\n // Update the work package to reload the viewpoints\n tap(() => this.apiV3Service.work_packages.id(workPackage).requireAndStream(true)),\n );\n }\n\n public resetBcfTopic():void {\n this.topicUUID = null;\n }\n\n public setBcfTopic$(workPackage:WorkPackageResource):Observable {\n if (this.topicUUID !== null) {\n return of(this.topicUUID);\n }\n const topicHref = (workPackage.bcfTopic as HalResource)?.href;\n const topicUUID$ = topicHref\n ? of(this.bcfApi.parse(topicHref).id)\n : this.createBcfTopic$(workPackage);\n\n return topicUUID$.pipe(\n map((topicUUID) => {\n this.topicUUID = topicUUID;\n return this.topicUUID;\n }),\n );\n }\n\n private createBcfTopic$(workPackage:WorkPackageResource):Observable {\n const wpProjectId = idFromLink(workPackage.project.href);\n const wpPayload = workPackage.convertBCF.payload;\n\n return this.bcfApi\n .projects.id(wpProjectId)\n .topics\n .post(wpPayload)\n .pipe(\n map((resource:BcfTopicResource) => {\n this.topicUUID = resource.guid;\n return this.topicUUID;\n }),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { DisplayField } from 'core-app/shared/components/fields/display/display-field.module';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { BcfPathHelperService } from 'core-app/features/bim/bcf/helper/bcf-path-helper.service';\n\nexport class BcfThumbnailDisplayField extends DisplayField {\n @InjectField() bcfPathHelper:BcfPathHelperService;\n\n public render(element:HTMLElement, displayText:string):void {\n const viewpoints = this.resource.bcfViewpoints;\n if (viewpoints && viewpoints.length > 0) {\n const viewpoint = viewpoints[0];\n element.innerHTML = `\n \n `;\n } else {\n element.innerHTML = '';\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable()\nexport class BcfDetectorService {\n constructor(@Inject(DOCUMENT) private documentElement:Document) {\n }\n\n /**\n * Detect whether the BCF module was activated,\n * resulting in a body class.\n */\n public get isBcfActivated() {\n return this.hasBodyClass('bcf-activated');\n }\n\n private hasBodyClass(name:string):boolean {\n return this.documentElement.body.classList.contains(name);\n }\n}\n","import { multiInput } from '@openproject/reactivestates';\nimport { BcfExtensionResource } from 'core-app/features/bim/bcf/api/extensions/bcf-extension.resource';\nimport { BcfApiService } from 'core-app/features/bim/bcf/api/bcf-api.service';\nimport {\n firstValueFrom,\n Observable,\n} from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\n\nexport type AllowedExtensionKey = keyof BcfExtensionResource;\n\n@Injectable({ providedIn: 'root' })\nexport class BcfAuthorizationService {\n // Poor mans caching to avoid repeatedly fetching from the backend.\n protected authorizationMap = multiInput();\n\n constructor(readonly bcfApi:BcfApiService) {\n }\n\n /**\n * Returns an observable boolean whether the given action\n * is authorized in the project by using the project extensions.\n *\n * Ensures the extension is loaded only once per project\n *\n * @param projectIdentifier Project identifier to check permission in\n * @param extension The extension key to check for\n * @param action The desired action\n */\n public authorized$(projectIdentifier:string, extension:AllowedExtensionKey, action:string):Observable {\n const state = this.authorizationMap.get(projectIdentifier);\n\n state.putFromPromiseIfPristine(() => firstValueFrom(\n this.bcfApi\n .projects.id(projectIdentifier)\n .extensions\n .get(),\n ));\n\n return state\n .values$()\n .pipe(\n map(\n (resource) => resource[extension] && resource[extension].includes(action),\n ),\n );\n }\n\n /**\n * One-time check to determine current allowed state.\n *\n * @param projectIdentifier Project identifier to check permission in\n * @param extension The extension key to check for\n * @param action The desired action\n */\n public isAllowedTo(projectIdentifier:string, extension:AllowedExtensionKey, action:string):Promise {\n return firstValueFrom(this.authorized$(projectIdentifier, extension, action))\n .catch(() => false);\n }\n}\n","\n
\n
\n
\n

\n
\n
\n\n
0\">\n \n \n
\n\n \n \n {{text.viewpoint}} \n \n
\n
","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n} from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { NgxGalleryComponent, NgxGalleryOptions } from '@kolkov/ngx-gallery';\nimport { HalLink } from 'core-app/features/hal/hal-link/hal-link';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ViewerBridgeService } from 'core-app/features/bim/bcf/bcf-viewer-bridge/viewer-bridge.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { WorkPackageCreateService } from 'core-app/features/work-packages/components/wp-new/wp-create.service';\nimport { BcfAuthorizationService } from 'core-app/features/bim/bcf/api/bcf-authorization.service';\nimport { ViewpointsService } from 'core-app/features/bim/bcf/helper/viewpoints.service';\nimport { BcfViewpointItem } from 'core-app/features/bim/bcf/api/viewpoints/bcf-viewpoint-item.interface';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { BcfViewService } from 'core-app/features/bim/ifc_models/pages/viewer/bcf-view.service';\nimport { filter, take } from 'rxjs/operators';\n\n@Component({\n templateUrl: './bcf-wp-attribute-group.component.html',\n styleUrls: ['./bcf-wp-attribute-group.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ViewpointsService],\n})\nexport class BcfWpAttributeGroupComponent extends UntilDestroyedMixin implements AfterViewInit, OnDestroy, OnInit {\n @Input() workPackage:WorkPackageResource;\n\n @ViewChild(NgxGalleryComponent) gallery:NgxGalleryComponent;\n\n text = {\n bcf: this.I18n.t('js.bcf.label_bcf'),\n viewpoint: this.I18n.t('js.bcf.viewpoint'),\n add_viewpoint: this.I18n.t('js.bcf.add_viewpoint'),\n show_viewpoint: this.I18n.t('js.bcf.show_viewpoint'),\n delete_viewpoint: this.I18n.t('js.bcf.delete_viewpoint'),\n text_are_you_sure: this.I18n.t('js.text_are_you_sure'),\n notice_successful_create: this.I18n.t('js.notice_successful_create'),\n notice_successful_delete: this.I18n.t('js.notice_successful_delete'),\n };\n\n galleryOptions:NgxGalleryOptions[] = [\n {\n width: '100%',\n height: '400px',\n\n // Show first thumbnail by default\n startIndex: 0,\n\n // Show only one image (\"thumbnail\")\n // and disable the large image slideshow\n image: false,\n thumbnailsColumns: 1,\n // Ensure thumbnails are ALWAYS shown\n thumbnailsAutoHide: false,\n // For BCFs all information shall be visible\n thumbnailSize: 'contain',\n imageAnimation: '',\n previewAnimation: false,\n previewCloseOnEsc: true,\n previewKeyboardNavigation: true,\n imageSize: 'contain',\n imageArrowsAutoHide: true,\n // thumbnailsArrowsAutoHide: true,\n thumbnailsMargin: 5,\n thumbnailMargin: 5,\n previewDownload: true,\n previewCloseOnClick: true,\n arrowPrevIcon: 'icon-arrow-left2',\n arrowNextIcon: 'icon-arrow-right2',\n closeIcon: 'icon-close',\n downloadIcon: 'icon-download',\n thumbnailActions: this.actions(),\n actions: this.actions(),\n },\n // max-width 800\n {\n breakpoint: 800,\n width: '100%',\n height: '400px',\n imagePercent: 80,\n thumbnailsPercent: 20,\n thumbnailsMargin: 5,\n thumbnailMargin: 5,\n },\n // max-width 680\n {\n breakpoint: 680,\n height: '200px',\n thumbnailsColumns: 3,\n thumbnailsMargin: 5,\n thumbnailMargin: 5,\n },\n ];\n\n viewpoints:BcfViewpointItem[] = [];\n\n galleryImages:any[] = [];\n\n // Store whether viewing is allowed\n viewAllowed = false;\n\n // Store whether viewpoint creation is allowed\n createAllowed = false;\n\n // Currently, this is static. Need observable if this changes over time\n viewerVisible = false;\n\n projectId:string;\n\n constructor(readonly state:StateService,\n readonly bcfAuthorization:BcfAuthorizationService,\n readonly viewerBridge:ViewerBridgeService,\n readonly apiV3Service:ApiV3Service,\n readonly wpCreate:WorkPackageCreateService,\n readonly toastService:ToastService,\n @Optional() readonly bcfViewer:BcfViewService,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n readonly viewpointsService:ViewpointsService) {\n super();\n }\n\n ngAfterViewInit():void {\n // Observe changes on the work package to update the viewpoints\n this.observeChanges();\n }\n\n ngOnInit():void {\n this.viewerBridge.viewerVisible$.subscribe((visible:boolean) => {\n if (visible) {\n this.viewerVisible = true;\n } else {\n this.viewerVisible = false;\n }\n this.cdRef.detectChanges();\n });\n }\n\n protected observeChanges() {\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .requireAndStream()\n .pipe(this.untilDestroyed())\n .subscribe(async (wp) => {\n this.workPackage = wp;\n\n if (!this.projectId) {\n await this.initialize(this.workPackage);\n }\n\n if (wp.bcfViewpoints) {\n this.refreshViewpoints(wp.bcfViewpoints);\n }\n });\n }\n\n async initialize(workPackage:WorkPackageResource) {\n this.projectId = idFromLink(workPackage.project.href);\n this.viewAllowed = await this.bcfAuthorization.isAllowedTo(this.projectId, 'project_actions', 'viewTopic');\n this.createAllowed = await this.bcfAuthorization.isAllowedTo(this.projectId, 'topic_actions', 'createViewpoint');\n\n this.loadViewpointFromRoute(workPackage);\n this.cdRef.detectChanges();\n }\n\n refreshViewpoints(viewpoints:HalLink[]):void {\n this.viewpoints = viewpoints.map((el:HalLink) => ({ href: el.href, snapshotURL: `${el.href}/snapshot` }));\n\n this.setViewpointsOnGallery(this.viewpoints);\n }\n\n protected showViewpoint(workPackage:WorkPackageResource, index:number):void {\n if (this.bcfViewer && this.viewerBridge.shouldShowViewer) {\n // FIXME: This component shouldn't know about the state of the BCF module. bcfViewer is null, when outside of\n // BCF module. Inside BCF module, we try to avoid hard transition, with sending an update to the bcf view\n // state before showing a viewpoint.\n switch (this.bcfViewer.currentViewerState()) {\n case 'table':\n this.bcfViewer.update('splitTable');\n break;\n case 'cards':\n this.bcfViewer.update('splitCards');\n break;\n default:\n }\n\n // wait until viewer is visible after view state update before showing viewpoint\n this.viewerBridge.viewerVisible$\n .pipe(\n filter((visible) => visible),\n take(1),\n )\n .subscribe(() => this.viewerBridge.showViewpoint(workPackage, index));\n } else {\n this.viewerBridge.showViewpoint(workPackage, index);\n }\n }\n\n protected deleteViewpoint(workPackage:WorkPackageResource, index:number):void {\n if (!window.confirm(this.text.text_are_you_sure)) {\n return;\n }\n\n this.viewpointsService\n .deleteViewPoint$(workPackage, index)\n .subscribe(() => {\n this.toastService.addSuccess(this.text.notice_successful_delete);\n this.gallery.preview.close();\n });\n }\n\n public saveViewpoint(workPackage:WorkPackageResource) {\n this.viewpointsService\n .saveViewpoint$(workPackage)\n .subscribe(() => {\n this.toastService.addSuccess(this.text.notice_successful_create);\n this.showIndex = this.viewpoints.length;\n });\n }\n\n protected loadViewpointFromRoute(workPackage:WorkPackageResource) {\n if (typeof (this.state.params.viewpoint) === 'number') {\n const index = this.state.params.viewpoint;\n this.showViewpoint(workPackage, index);\n this.showIndex = index;\n this.selectViewpointInGallery();\n void this.state.go('.', { ...this.state.params, viewpoint: undefined }, { reload: false });\n }\n }\n\n public shouldShowGroup() {\n return this.viewAllowed\n && (this.viewpoints.length > 0\n || (this.createAllowed && this.viewerVisible));\n }\n\n // Gallery functionality\n protected actions() {\n return [\n {\n icon: 'icon-view-model',\n onClick: (evt:any, index:number) => {\n this.showViewpoint(this.workPackage, index);\n this.gallery.preview.close();\n },\n titleText: this.text.show_viewpoint,\n },\n {\n icon: 'icon-delete',\n onClick: (evt:any, index:number) => this.deleteViewpoint(this.workPackage, index),\n titleText: this.text.delete_viewpoint,\n },\n ];\n }\n\n // eslint-disable-next-line class-methods-use-this\n public galleryPreviewOpen():void {\n jQuery('.op-app-header').addClass('-no-z-index');\n }\n\n // eslint-disable-next-line class-methods-use-this\n public galleryPreviewClose():void {\n jQuery('.op-app-header').removeClass('-no-z-index');\n }\n\n public selectViewpointInGallery() {\n setTimeout(() => this.gallery?.show(this.showIndex), 250);\n }\n\n public onGalleryChanged(event:{ index:number }) {\n this.showIndex = event.index;\n }\n\n protected set showIndex(value:number) {\n const options = [...this.galleryOptions];\n options[0].startIndex = value;\n this.galleryOptions = options;\n }\n\n protected get showIndex():number {\n return this.galleryOptions[0].startIndex!;\n }\n\n protected setViewpointsOnGallery(viewpoints:BcfViewpointItem[]) {\n const { length } = viewpoints;\n\n this.setThumbnailProperties(length);\n\n if (this.showIndex < 0 || length < 1) {\n this.showIndex = 0;\n } else if (this.showIndex >= length) {\n this.showIndex = length - 1;\n }\n\n this.galleryImages = viewpoints.map((viewpoint) => ({\n small: viewpoint.snapshotURL,\n medium: viewpoint.snapshotURL,\n big: viewpoint.snapshotURL,\n }));\n this.cdRef.detectChanges();\n }\n\n protected setThumbnailProperties(viewpointCount:number) {\n const options = [...this.galleryOptions];\n\n options[0].thumbnailsColumns = viewpointCount < 5 ? viewpointCount : 4;\n options[1].thumbnailsColumns = viewpointCount < 5 ? viewpointCount : 4;\n options[2].thumbnailsColumns = viewpointCount < 4 ? viewpointCount : 3;\n\n options[0].height = `${this.dynamicThumbnailHeight(viewpointCount)}px`;\n options[1].height = `${this.dynamicThumbnailHeight(viewpointCount)}px`;\n options[2].height = `${this.dynamicThumbnailHeight(viewpointCount)}px`;\n\n this.galleryOptions = options;\n }\n\n protected dynamicThumbnailHeight(viewpointCount:number):number {\n return Math.max(Math.round(300 / viewpointCount), 120);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { AfterViewInit, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { BcfWpAttributeGroupComponent } from 'core-app/features/bim/bcf/bcf-wp-attribute-group/bcf-wp-attribute-group.component';\nimport { switchMap, take } from 'rxjs/operators';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { forkJoin } from 'rxjs';\nimport { BcfViewpointItem } from 'core-app/features/bim/bcf/api/viewpoints/bcf-viewpoint-item.interface';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\n\n@Component({\n templateUrl: './bcf-wp-attribute-group.component.html',\n styleUrls: ['./bcf-wp-attribute-group.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BcfNewWpAttributeGroupComponent extends BcfWpAttributeGroupComponent implements AfterViewInit {\n galleryViewpoints:BcfViewpointItem[] = [];\n\n ngAfterViewInit():void {\n if (this.viewerVisible) {\n super.ngAfterViewInit();\n\n // Save any leftover viewpoints when saving the work package\n if (isNewResource(this.workPackage)) {\n this.observeCreation();\n }\n }\n }\n\n // Because this is a new WorkPackage, in order to save the\n // viewpoints on it we need to:\n // - Wait until the WorkPackage is created\n // - Create the BCFTopic on it to save the viewpoints\n private observeCreation() {\n this.wpCreate\n .onNewWorkPackage()\n .pipe(\n this.untilDestroyed(),\n take(1),\n switchMap((wp:WorkPackageResource) => this.viewpointsService.setBcfTopic$(wp), (wp) => wp),\n switchMap((wp:WorkPackageResource) => {\n this.workPackage = wp;\n const observables = this.galleryViewpoints\n .filter((viewPointItem) => !viewPointItem.href && viewPointItem.viewpoint)\n .map((viewPointItem) => this.viewpointsService.saveViewpoint$(this.workPackage, viewPointItem.viewpoint));\n\n return forkJoin(observables);\n }),\n )\n .subscribe(() => {\n this.viewpointsService.resetBcfTopic();\n this.showIndex = this.galleryViewpoints.length - 1;\n });\n }\n\n // Disable show viewpoint functionality\n showViewpoint(_workPackage:WorkPackageResource, _index:number):void {\n\n }\n\n deleteViewpoint(workPackage:WorkPackageResource, index:number):void {\n this.galleryViewpoints = this.galleryViewpoints.filter((_, i) => i !== index);\n\n this.setViewpointsOnGallery(this.galleryViewpoints);\n }\n\n saveViewpoint():void {\n this.viewerBridge\n .getViewpoint$()\n .subscribe((viewpoint) => {\n const newViewpoint = {\n snapshotURL: viewpoint.snapshot.snapshot_data,\n viewpoint,\n };\n\n this.galleryViewpoints = [\n ...this.galleryViewpoints,\n newViewpoint,\n ];\n\n this.setViewpointsOnGallery(this.galleryViewpoints);\n\n // Select the last created viewpoint and show it\n this.showIndex = this.galleryViewpoints.length - 1;\n this.selectViewpointInGallery();\n });\n }\n\n shouldShowGroup():boolean {\n return this.createAllowed && this.viewerVisible;\n }\n\n protected actions():{ icon:string, onClick:(evt:unknown, index:number) => void, titleText:string }[] {\n // Show only delete button\n return super\n .actions()\n .filter((el) => el.icon === 'icon-delete');\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport {\n distinctUntilChanged, filter, first, map,\n} from 'rxjs/operators';\nimport { ViewerBridgeService } from 'core-app/features/bim/bcf/bcf-viewer-bridge/viewer-bridge.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { ViewpointsService } from 'core-app/features/bim/bcf/helper/viewpoints.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { BcfViewpointData, CreateBcfViewpointData } from 'core-app/features/bim/bcf/api/bcf-api.model';\n\ndeclare global {\n interface Window {\n RevitBridge:{\n sendMessageToRevit:(messageType:string, trackingId:string, payload:string) => void,\n sendMessageToOpenProject:(message:string) => void\n };\n }\n}\n\ntype RevitBridgeMessage = {\n messageType:string,\n trackingId:string,\n messagePayload:CreateBcfViewpointData\n};\n\n@Injectable()\nexport class RevitBridgeService extends ViewerBridgeService {\n public shouldShowViewer = false;\n\n public viewerVisible$ = new BehaviorSubject(false);\n\n private revitMessageReceivedSource = new Subject();\n\n private trackingIdNumber = 0;\n\n @InjectField() viewpointsService:ViewpointsService;\n\n revitMessageReceived$ = this.revitMessageReceivedSource.asObservable();\n\n constructor(readonly injector:Injector) {\n super(injector);\n\n if (window.RevitBridge) {\n this.hookUpRevitListener();\n } else {\n window.addEventListener('revit.plugin.ready', () => {\n this.hookUpRevitListener();\n }, { once: true });\n }\n }\n\n public viewerVisible():boolean {\n return this.viewerVisible$.getValue();\n }\n\n public getViewpoint$():Observable {\n const trackingId = this.newTrackingId();\n\n this.sendMessageToRevit('ViewpointGenerationRequest', trackingId, '');\n\n return this.revitMessageReceived$\n .pipe(\n distinctUntilChanged(),\n filter((message) => message.messageType === 'ViewpointData' && message.trackingId === trackingId),\n first(),\n map((message) => {\n // FIXME: Deprecated code\n // the handling of the message payload is only needed to be compatible to the revit add-in <= 2.3.2. In\n // newer versions the message payload is sent correctly and needs no special treatment\n const viewpointJson = message.messagePayload;\n\n if (viewpointJson.snapshot.hasOwnProperty('snapshot_type') // eslint-disable-line no-prototype-builtins\n && viewpointJson.snapshot.hasOwnProperty('snapshot_data')) { // eslint-disable-line no-prototype-builtins\n // already correctly formatted payload\n return viewpointJson;\n }\n\n // at this point snapshot data should be sent as a base64 string\n viewpointJson.snapshot = {\n snapshot_type: 'png',\n snapshot_data: viewpointJson.snapshot as unknown as string,\n };\n\n return viewpointJson;\n }),\n );\n }\n\n public showViewpoint(workPackage:WorkPackageResource, index:number):void {\n this.viewpointsService\n .getViewPoint$(workPackage, index)\n .subscribe((viewpoint:BcfViewpointData) => this.sendMessageToRevit(\n 'ShowViewpoint', this.newTrackingId(), JSON.stringify(viewpoint),\n ));\n }\n\n sendMessageToRevit(messageType:string, trackingId:string, messagePayload:string):void {\n if (!this.viewerVisible()) {\n return;\n }\n\n window.RevitBridge.sendMessageToRevit(messageType, trackingId, messagePayload);\n }\n\n private hookUpRevitListener() {\n window.RevitBridge.sendMessageToOpenProject = (messageString:string) => {\n const { messageType, trackingId, messagePayload } = JSON.parse(messageString) as {\n messageType:string,\n trackingId:string,\n messagePayload:string\n };\n\n this.revitMessageReceivedSource.next({\n messageType,\n trackingId,\n messagePayload: JSON.parse(messagePayload) as CreateBcfViewpointData,\n });\n };\n this.viewerVisible$.next(true);\n }\n\n newTrackingId():string {\n this.trackingIdNumber += 1;\n return String(this.trackingIdNumber);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Injector,\n NgModule,\n} from '@angular/core';\nimport { OpSharedModule } from 'core-app/shared/shared.module';\nimport { NgxGalleryModule } from '@kolkov/ngx-gallery';\nimport { DisplayFieldService } from 'core-app/shared/components/fields/display/display-field.service';\nimport { BcfThumbnailDisplayField } from 'core-app/features/bim/bcf/fields/display/bcf-thumbnail-field.module';\nimport { BcfDetectorService } from 'core-app/features/bim/bcf/helper/bcf-detector.service';\nimport { BcfPathHelperService } from 'core-app/features/bim/bcf/helper/bcf-path-helper.service';\nimport { ViewpointsService } from 'core-app/features/bim/bcf/helper/viewpoints.service';\nimport { BcfImportButtonComponent } from 'core-app/features/bim/ifc_models/toolbar/import-export-bcf/bcf-import-button.component';\nimport { BcfExportButtonComponent } from 'core-app/features/bim/ifc_models/toolbar/import-export-bcf/bcf-export-button.component';\nimport { IFCViewerService } from 'core-app/features/bim/ifc_models/ifc-viewer/ifc-viewer.service';\nimport { ViewerBridgeService } from 'core-app/features/bim/bcf/bcf-viewer-bridge/viewer-bridge.service';\nimport { HookService } from 'core-app/features/plugins/hook-service';\nimport { BcfWpAttributeGroupComponent } from 'core-app/features/bim/bcf/bcf-wp-attribute-group/bcf-wp-attribute-group.component';\nimport { BcfNewWpAttributeGroupComponent } from 'core-app/features/bim/bcf/bcf-wp-attribute-group/bcf-new-wp-attribute-group.component';\nimport { RevitBridgeService } from 'core-app/features/bim/revit_add_in/revit-bridge.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\nimport { RefreshButtonComponent } from 'core-app/features/bim/ifc_models/toolbar/import-export-bcf/refresh-button.component';\n\n/**\n * Determines based on the current user agent whether\n * we're running in Revit or not.\n *\n * Depending on that, we use the IFC viewer service for showing/saving viewpoints.\n */\nexport const viewerBridgeServiceFactory = (injector:Injector) => {\n if (window.navigator.userAgent.search('Revit') > -1) {\n return new RevitBridgeService(injector);\n }\n return injector.get(IFCViewerService, new IFCViewerService(injector));\n};\n\n@NgModule({\n imports: [\n OpSharedModule,\n NgxGalleryModule,\n ],\n providers: [\n {\n provide: ViewerBridgeService,\n useFactory: viewerBridgeServiceFactory,\n deps: [Injector],\n },\n BcfDetectorService,\n BcfPathHelperService,\n ViewpointsService,\n ],\n declarations: [\n BcfWpAttributeGroupComponent,\n BcfNewWpAttributeGroupComponent,\n BcfImportButtonComponent,\n BcfExportButtonComponent,\n RefreshButtonComponent,\n ],\n exports: [\n BcfImportButtonComponent,\n BcfExportButtonComponent,\n RefreshButtonComponent,\n ],\n})\nexport class OpenprojectBcfModule {\n static bootstrapCalled = false;\n\n constructor(injector:Injector) {\n OpenprojectBcfModule.bootstrap(injector);\n }\n\n // The static property prevents running the function\n // multiple times. This happens e.g. when the module is included\n // into a plugin's module.\n public static bootstrap(injector:Injector):void {\n if (this.bootstrapCalled) {\n return;\n }\n\n this.bootstrapCalled = true;\n\n const displayFieldService = injector.get(DisplayFieldService);\n displayFieldService\n .addFieldType(BcfThumbnailDisplayField, 'bcfThumbnail', [\n 'BCF Thumbnail',\n ]);\n\n const hookService = injector.get(HookService);\n hookService.register('prependedAttributeGroups', (workPackage:WorkPackageResource) => {\n if (!window.OpenProject.isBimEdition) {\n return;\n }\n\n if (isNewResource(workPackage)) {\n return BcfNewWpAttributeGroupComponent;\n }\n return BcfWpAttributeGroupComponent;\n });\n }\n}\n","// @ts-ignore\nimport { utils } from '@xeokit/xeokit-sdk/dist/xeokit-sdk.es';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { IFCGonDefinition } from '../pages/viewer/ifc-models-data.service';\n\n/**\n * Default server client which loads content via HTTP from the file system.\n */\nexport class XeokitServer {\n private ifcModels:IFCGonDefinition;\n\n /**\n *\n * @param config\n * @param.config.pathHelper instance of PathHelperService.\n */\n constructor(private pathHelper:PathHelperService) {\n this.ifcModels = window.gon.ifc_models;\n }\n\n /**\n * Gets the manifest of all projects.\n * @param done\n * @param error\n */\n getProjects(done:Function, _error:Function) {\n done({ projects: this.ifcModels.projects });\n }\n\n /**\n * Gets a manifest for a project.\n * @param projectId\n * @param done\n * @param _error\n */\n getProject(projectId:string, done:(json:unknown) => void, _error:() => void) {\n const projectDefinition = this.ifcModels.projects.find((p) => p.id === projectId);\n if (projectDefinition === undefined) {\n throw new Error(`unknown project id '${projectId}'`);\n }\n\n const manifestData = {\n id: projectDefinition.id,\n name: projectDefinition.name,\n models: this.ifcModels.models,\n viewerContent: {\n modelsLoaded: this.ifcModels.shown_models,\n },\n viewerConfigs: {},\n };\n\n done(manifestData);\n }\n\n /**\n * Gets geometry for a model within a project.\n * @param projectId\n * @param modelId\n * @param done\n * @param error\n */\n getGeometry(projectId:string, modelId:number, done:Function, error:Function) {\n const attachmentId = this.ifcModels.xkt_attachment_ids[modelId];\n console.log(`Loading model geometry for: ${attachmentId}`);\n utils.loadArraybuffer(this.pathHelper.attachmentContentPath(attachmentId), done, error);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { XeokitServer } from 'core-app/features/bim/ifc_models/xeokit/xeokit-server';\nimport { ViewerBridgeService } from 'core-app/features/bim/bcf/bcf-viewer-bridge/viewer-bridge.service';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { BcfApiService } from 'core-app/features/bim/bcf/api/bcf-api.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ViewpointsService } from 'core-app/features/bim/bcf/helper/viewpoints.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { HttpClient } from '@angular/common/http';\nimport { IfcProjectDefinition } from 'core-app/features/bim/ifc_models/pages/viewer/ifc-models-data.service';\nimport { BIMViewer } from '@xeokit/xeokit-bim-viewer/dist/xeokit-bim-viewer.es';\nimport { BcfViewpointData, CreateBcfViewpointData } from 'core-app/features/bim/bcf/api/bcf-api.model';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\nexport interface XeokitElements {\n canvasElement:HTMLElement;\n explorerElement:HTMLElement;\n toolbarElement:HTMLElement;\n inspectorElement:HTMLElement;\n navCubeCanvasElement:HTMLElement;\n busyModelBackdropElement:HTMLElement;\n enableEditModels?:boolean;\n keyboardEventsElement?:HTMLElement;\n enableMeasurements?:boolean;\n}\n\n/**\n * Options for saving current viewpoint in xeokit-bim-viewer.\n * See: https://xeokit.github.io/xeokit-bim-viewer/docs/class/src/BIMViewer.js~BIMViewer.html#instance-method-saveBCFViewpoint\n */\nexport interface BCFCreationOptions {\n spacesVisible?:boolean;\n spaceBoundariesVisible?:boolean;\n openingsVisible?:boolean;\n defaultInvisible?:boolean;\n reverseClippingPlanes?:boolean;\n}\n\n/**\n * Options for loading a viewpoint into xeokit-bim-viewer.\n * See: https://xeokit.github.io/xeokit-bim-viewer/docs/class/src/BIMViewer.js~BIMViewer.html#instance-method-loadBCFViewpoint\n */\nexport interface BCFLoadOptions {\n rayCast?:boolean;\n immediate?:boolean;\n duration?:number;\n updateCompositeObjects?:boolean;\n reverseClippingPlanes?:boolean;\n}\n\n/**\n * Wrapping type from xeokit module. Can be removed after we get a real type package.\n */\ntype Controller = {\n on:(event:string, callback:(event:unknown) => void) => string\n};\n\n/**\n * Wrapping type from xeokit module. Can be removed after we get a real type package.\n */\ntype XeokitBimViewer = Controller&{\n loadProject:(projectId:string) => void,\n saveBCFViewpoint:(options:BCFCreationOptions) => unknown,\n loadBCFViewpoint:(bcfViewpoint:BcfViewpointData, options:BCFLoadOptions) => void,\n setKeyboardEnabled:(enabled:boolean) => true,\n destroy:() => void\n};\n\n@Injectable()\nexport class IFCViewerService extends ViewerBridgeService {\n public shouldShowViewer = true;\n\n public viewerVisible$ = new BehaviorSubject(false);\n\n public inspectorVisible$ = new BehaviorSubject(false);\n\n private xeokitViewer:XeokitBimViewer|undefined;\n\n @InjectField() pathHelper:PathHelperService;\n\n @InjectField() bcfApi:BcfApiService;\n\n @InjectField() viewpointsService:ViewpointsService;\n\n @InjectField() currentProjectService:CurrentProjectService;\n\n @InjectField() httpClient:HttpClient;\n\n constructor(readonly injector:Injector) {\n super(injector);\n }\n\n public newViewer(elements:XeokitElements, projects:IfcProjectDefinition[]):void {\n const server = new XeokitServer(this.pathHelper);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const viewerUI = new BIMViewer(server, elements) as XeokitBimViewer;\n\n viewerUI.on('modelLoaded', () => this.viewerVisible$.next(true));\n\n viewerUI.loadProject(projects[0].id);\n\n viewerUI.on('addModel', () => { // \"Add\" selected in Models tab's context menu\n window.location.href = this.pathHelper.ifcModelsNewPath(this.currentProjectService.identifier as string);\n });\n\n viewerUI.on('openInspector', () => {\n this.inspectorVisible$.next(true);\n });\n\n viewerUI.on('editModel', (event:{ modelId:number|string }) => { // \"Edit\" selected in Models tab's context menu\n window.location.href = this.pathHelper.ifcModelsEditPath(this.currentProjectService.identifier as string, event.modelId);\n });\n\n viewerUI.on('deleteModel', (event:{ modelId:number|string }) => { // \"Delete\" selected in Models tab's context menu\n // We don't have an API for IFC models yet. We need to use the normal Rails form posts for deletion.\n const formData = new FormData();\n formData.append(\n 'authenticity_token',\n jQuery('meta[name=csrf-token]').attr('content') as string,\n );\n formData.append(\n '_method',\n 'delete',\n );\n\n this.httpClient.post(\n this.pathHelper.ifcModelsDeletePath(this.currentProjectService.identifier as string, event.modelId),\n formData,\n )\n .subscribe()\n .add(() => {\n // Ensure we reload after every request.\n // We need to reload to get a fresh CSRF token for a successive\n // model deletion placed as a META element into the HTML HEAD.\n window.location.reload();\n });\n });\n\n this.viewer = viewerUI;\n }\n\n public destroy():void {\n this.viewerVisible$.next(false);\n\n if (!this.viewer) {\n return;\n }\n\n this.viewer.destroy();\n this.viewer = undefined;\n }\n\n public get viewer():XeokitBimViewer|undefined {\n return this.xeokitViewer;\n }\n\n public set viewer(viewer:XeokitBimViewer|undefined) {\n this.xeokitViewer = viewer;\n }\n\n public setKeyboardEnabled(val:boolean):void {\n this.viewer?.setKeyboardEnabled(val);\n }\n\n public getViewpoint$():Observable {\n if (!this.viewer) {\n return of();\n }\n\n const opts:BCFCreationOptions = { spacesVisible: true, reverseClippingPlanes: true };\n const viewpoint = this.viewer.saveBCFViewpoint(opts) as CreateBcfViewpointData;\n\n // project output of viewer to ensured BCF viewpoint format\n const bcfViewpoint:CreateBcfViewpointData = {\n // The backend currently rejects viewpoints with bitmaps\n bitmaps: null,\n clipping_planes: viewpoint.clipping_planes,\n index: viewpoint.index,\n guid: viewpoint.guid,\n components: {\n selection: viewpoint.components.selection,\n coloring: viewpoint.components.coloring,\n visibility: {\n default_visibility: viewpoint.components.visibility.default_visibility,\n exceptions: viewpoint.components.visibility.exceptions,\n view_setup_hints: {\n openings_visible: viewpoint.components.visibility.view_setup_hints?.openings_visible || false,\n space_boundaries_visible: viewpoint.components.visibility.view_setup_hints?.space_boundaries_visible || false,\n spaces_visible: viewpoint.components.visibility.view_setup_hints?.spaces_visible || false,\n },\n },\n },\n lines: viewpoint.lines,\n orthogonal_camera: viewpoint.orthogonal_camera,\n perspective_camera: viewpoint.perspective_camera,\n snapshot: viewpoint.snapshot,\n };\n\n return of(bcfViewpoint);\n }\n\n public showViewpoint(workPackage:WorkPackageResource, index:number):void {\n if (this.viewerVisible()) {\n const opts:BCFLoadOptions = { updateCompositeObjects: true, reverseClippingPlanes: true };\n this.viewpointsService\n .getViewPoint$(workPackage, index)\n .subscribe((viewpoint) => {\n this.viewer?.loadBCFViewpoint(viewpoint, opts);\n });\n } else {\n // FIXME: When triggering showViewpoint from anywhere outside BCF module, there is no viewer shown and we have\n // no means of setting it from here. Hence we must make a hard transition to bcf details route of the\n // current work package.\n window.location.href = this.pathHelper.bimDetailsPath(\n idFromLink((workPackage.project as HalResource).href),\n workPackage.id || '',\n index,\n );\n }\n }\n\n public viewerVisible():boolean {\n return !!this.viewer;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageQueryStateService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-base.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { ViewerBridgeService } from 'core-app/features/bim/bcf/bcf-viewer-bridge/viewer-bridge.service';\n\nexport const bcfCardsViewIdentifier = 'cards';\nexport const bcfViewerViewIdentifier = 'viewer';\nexport const bcfSplitViewTableIdentifier = 'splitTable';\nexport const bcfSplitViewCardsIdentifier = 'splitCards';\nexport const bcfTableViewIdentifier = 'table';\n\nexport type BcfViewState = 'cards'|'viewer'|'splitTable'|'splitCards'|'table';\n\n@Injectable()\nexport class BcfViewService extends WorkPackageQueryStateService {\n public text:{ [key:string]:string } = {\n cards: this.I18n.t('js.views.card'),\n viewer: this.I18n.t('js.ifc_models.views.viewer'),\n splitTable: this.I18n.t('js.ifc_models.views.split'),\n splitCards: this.I18n.t('js.ifc_models.views.split_cards'),\n table: this.I18n.t('js.views.list'),\n };\n\n public icon:{ [key:string]:string } = {\n cards: 'icon-view-card',\n viewer: 'icon-view-model',\n splitTable: 'icon-view-split-viewer-table',\n splitCards: 'icon-view-split2',\n table: 'icon-view-list',\n };\n\n constructor(\n private readonly I18n:I18nService,\n private readonly viewerBridgeService:ViewerBridgeService,\n protected readonly querySpace:IsolatedQuerySpace,\n ) {\n super(querySpace);\n }\n\n hasChanged(query:QueryResource):boolean {\n return this.current !== query.displayRepresentation;\n }\n\n applyToQuery(query:QueryResource):boolean {\n // eslint-disable-next-line no-param-reassign\n query.displayRepresentation = this.current;\n return true;\n }\n\n public valueFromQuery(query:QueryResource):BcfViewState|undefined {\n const dr = query.displayRepresentation;\n\n switch (dr) {\n case 'splitCards':\n case 'splitTable':\n case 'cards':\n case 'table':\n case 'viewer':\n return dr;\n default:\n return this.viewerBridgeService.shouldShowViewer ? 'splitCards' : 'cards';\n }\n }\n\n public currentViewerState():BcfViewState|undefined {\n return this.current;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component, Injector, OnDestroy, OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { BcfPathHelperService } from 'core-app/features/bim/bcf/helper/bcf-path-helper.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { StateService } from '@uirouter/core';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { JobStatusModalService } from 'core-app/features/job-status/job-status-modal.service';\n\n@Component({\n template: `\n \n \n {{text.export}} \n \n `,\n selector: 'bcf-export-button',\n})\nexport class BcfExportButtonComponent extends UntilDestroyedMixin implements OnInit, OnDestroy {\n public text = {\n export: this.I18n.t('js.bcf.export'),\n export_hover: this.I18n.t('js.bcf.export_bcf_xml_file'),\n };\n\n public query:QueryResource;\n\n public exportLink:string;\n\n constructor(readonly I18n:I18nService,\n readonly currentProject:CurrentProjectService,\n readonly bcfPathHelper:BcfPathHelperService,\n readonly querySpace:IsolatedQuerySpace,\n readonly queryUrlParamsHelper:UrlParamsHelperService,\n readonly jobStatusModalService:JobStatusModalService,\n readonly httpClient:HttpClient,\n readonly injector:Injector,\n readonly toastService:ToastService,\n readonly state:StateService) {\n super();\n }\n\n ngOnInit() {\n this.querySpace.query\n .values$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((query) => {\n this.query = query;\n\n const projectIdentifier = this.currentProject.identifier;\n const filters = this.queryUrlParamsHelper.buildV3GetFilters(this.query.filters);\n this.exportLink = this.bcfPathHelper.projectExportIssuesPath(\n projectIdentifier!,\n JSON.stringify(filters),\n );\n });\n }\n\n public showDelayedExport(event:any) {\n this.requestExport(this.exportLink);\n\n event.preventDefault();\n }\n\n private requestExport(url:string):void {\n this\n .httpClient\n .get(url, { observe: 'body', responseType: 'json' })\n .subscribe(\n (json:{ job_id:string }) => this.jobStatusModalService.show(json.job_id),\n (error:HttpErrorResponse) => this.handleError(error),\n );\n }\n\n private handleError(error:HttpErrorResponse) {\n this.toastService.addError(error.message || this.I18n.t('js.error.internal'));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { BcfPathHelperService } from 'core-app/features/bim/bcf/helper/bcf-path-helper.service';\n\n@Component({\n template: `\n \n \n {{text.import}} \n \n `,\n selector: 'bcf-import-button',\n})\nexport class BcfImportButtonComponent {\n public text = {\n import: this.I18n.t('js.bcf.import'),\n import_hover: this.I18n.t('js.bcf.import_bcf_xml_file'),\n };\n\n constructor(readonly I18n:I18nService,\n readonly currentProject:CurrentProjectService,\n readonly bcfPathHelper:BcfPathHelperService) {\n }\n\n public handleClick() {\n const projectIdentifier = this.currentProject.identifier;\n if (projectIdentifier) {\n const url = this.bcfPathHelper.projectImportIssuePath(projectIdentifier);\n window.location.href = url;\n }\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { StateService } from '@uirouter/core';\n\n@Component({\n template: `\n \n \n \n `,\n selector: 'op-refresh-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class RefreshButtonComponent {\n public text = {\n refresh: this.I18n.t('js.bcf.refresh'),\n refresh_hover: this.I18n.t('js.bcf.refresh_work_package'),\n };\n\n constructor(readonly I18n:I18nService,\n readonly state:StateService) {\n }\n\n refresh() {\n void this.state.go('.', {}, { reload: true });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\n\n/**\n * The service is intended to store all the updates caused to a query by a user.\n * It is e.g. used to not update the board list when the current user moved a card within a list/query.\n */\n\n@Injectable()\nexport class CausedUpdatesService {\n /** contains all the updates to the query caused by modifications of the user */\n private causedUpdates:string[] = [];\n\n public includes(query:QueryResource) {\n return this.causedUpdates.includes(this.cacheValue(query));\n }\n\n public add(query:QueryResource) {\n if (this.causedUpdates.length > 100) {\n this.causedUpdates.splice(0, 90);\n }\n\n this.causedUpdates.push(this.cacheValue(query));\n }\n\n private cacheValue(query:QueryResource) {\n return query.updatedAt + query.href;\n }\n}\n","import { ID } from '@datorama/akita';\nimport {\n action,\n props,\n} from 'ts-action';\n\nexport const calendarRefreshRequest = action(\n '[Calendar] Refresh calendar page due to external param changes',\n props<{ showLoading:boolean }>(),\n);\n","import {\n ElementRef,\n Injectable,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport { DayResourceService } from 'core-app/core/state/days/day.service';\nimport { IDay } from 'core-app/core/state/days/day.model';\nimport * as moment from 'moment-timezone';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { DayHeaderContentArg } from '@fullcalendar/core';\n\n@Injectable()\nexport class OpCalendarService extends UntilDestroyedMixin {\n resize$ = new Subject();\n\n resizeObs:ResizeObserver;\n\n constructor(\n readonly weekdayService:WeekdayService,\n readonly dayService:DayResourceService,\n readonly configurationService:ConfigurationService,\n ) {\n super();\n }\n\n resizeObserver(v:ElementRef|undefined):void {\n if (!v) {\n return;\n }\n\n if (!this.resizeObs) {\n this.resizeObs = new ResizeObserver(() => this.resize$.next());\n }\n\n this.resizeObs.observe(v.nativeElement as Element);\n }\n\n applyNonWorkingDay({ date }:{ date?:Date }, nonWorkingDays:IDay[]):string[] {\n const utcDate = moment(date).utc();\n const formatted = utcDate.format('YYYY-MM-DD');\n if (date && (this.weekdayService.isNonWorkingDay(utcDate) || nonWorkingDays.find((el) => el.date === formatted))) {\n return ['fc-non-working-day'];\n }\n return [];\n }\n\n dayHeaderContent(event:DayHeaderContentArg):string {\n // When the user did not configure a custom date format, we can always return the default content for the\n // fullcalendar day header.\n if (!this.configurationService.dateFormatPresent()) {\n return event.text;\n }\n\n // Additionally, we must use the default in dayGridMonth view, as it displays the day of the week:\n if (event.view.type === 'dayGridMonth') {\n return event.text;\n }\n\n // We are not in month grid view and there is a date format configured => return a formatted date according to\n // the settings. Prefix the day of the week name for better readability.\n const configuredDateFormat = this.configurationService.dateFormat();\n const formatWithoutYear = this.stripYearFromDateFormat(configuredDateFormat);\n const utcDate = moment(event.date).utc();\n\n return utcDate.format(`ddd ${formatWithoutYear}`);\n }\n\n stripYearFromDateFormat(format:string):string {\n return format.replace(/(\\/|-|,?\\s?)Y{3,4}$/, '').replace(/^Y{4}-/, '');\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n CalendarOptions,\n DatesSetArg,\n DayCellContentArg,\n DayCellMountArg,\n DayHeaderContentArg,\n EventApi,\n EventDropArg,\n SlotLabelContentArg,\n SlotLaneContentArg,\n} from '@fullcalendar/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper';\nimport { StateService } from '@uirouter/angular';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { firstValueFrom, Observable } from 'rxjs';\nimport {\n WorkPackageViewFiltersService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { take } from 'rxjs/operators';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport {\n QueryPropsFilter,\n UrlParamsHelperService,\n} from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport {\n WorkPackagesListChecksumService,\n} from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service';\nimport { EventReceiveArg, EventResizeDoneArg } from '@fullcalendar/interaction';\nimport {\n HalResourceEditingService,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset';\nimport * as moment from 'moment';\nimport {\n WorkPackageViewSelectionService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/link-handling';\nimport {\n uiStateLinkClass,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport {\n WorkPackageViewContextMenu,\n} from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive';\nimport { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service';\nimport { OpCalendarService } from 'core-app/features/calendar/op-calendar.service';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport { IDay } from 'core-app/core/state/days/day.model';\nimport { DayResourceService } from 'core-app/core/state/days/day.service';\nimport allLocales from '@fullcalendar/core/locales-all';\n\nexport interface CalendarViewEvent {\n el:HTMLElement;\n event:EventApi;\n}\n\n// The CalenderOptions typings are missing daygrid hooks\ninterface CalendarOptionsWithDayGrid extends CalendarOptions {\n dayGridClassNames:(data:DayCellMountArg) => void;\n}\n\n@Injectable()\nexport class OpWorkPackagesCalendarService extends UntilDestroyedMixin {\n static MAX_DISPLAYED = 500;\n\n tooManyResultsText:string|null;\n\n public nonWorkingDays:IDay[] = [];\n\n currentWorkPackages$:Observable = this\n .querySpace\n .results\n .values$()\n .pipe(\n take(1),\n );\n\n constructor(\n private I18n:I18nService,\n private configuration:ConfigurationService,\n private sanitizer:DomSanitizer,\n private $state:StateService,\n readonly injector:Injector,\n readonly schemaCache:SchemaCacheService,\n readonly toastService:ToastService,\n readonly wpTableFilters:WorkPackageViewFiltersService,\n readonly wpListService:WorkPackagesListService,\n readonly wpListChecksumService:WorkPackagesListChecksumService,\n readonly urlParamsHelper:UrlParamsHelperService,\n readonly querySpace:IsolatedQuerySpace,\n readonly apiV3Service:ApiV3Service,\n readonly halResourceService:HalResourceService,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly timezoneService:TimezoneService,\n readonly halEditing:HalResourceEditingService,\n readonly wpTableSelection:WorkPackageViewSelectionService,\n readonly contextMenuService:OPContextMenuService,\n readonly calendarService:OpCalendarService,\n readonly weekdayService:WeekdayService,\n readonly dayService:DayResourceService,\n ) {\n super();\n }\n\n calendarOptions(additionalOptions:CalendarOptions):CalendarOptions {\n return { ...this.defaultOptions(), ...additionalOptions };\n }\n\n eventDate(workPackage:WorkPackageResource, type:'start'|'due'):string {\n if (this.isMilestone(workPackage)) {\n return workPackage.date;\n }\n return workPackage[`${type}Date`];\n }\n\n isMilestone(workPackage:WorkPackageResource):boolean {\n return this.schemaCache.of(workPackage).isMilestone as boolean;\n }\n\n warnOnTooManyResults(collection:WorkPackageCollectionResource, isStatic = false):void {\n if (collection.count < collection.total) {\n this.tooManyResultsText = this.I18n.t(\n 'js.calendar.too_many',\n {\n count: collection.total,\n max: OpWorkPackagesCalendarService.MAX_DISPLAYED,\n },\n );\n } else {\n this.tooManyResultsText = null;\n }\n\n if (this.tooManyResultsText && !isStatic) {\n this.toastService.addNotice(this.tooManyResultsText);\n }\n }\n\n async requireNonWorkingDays(start:Date|string, end:Date|string) {\n this.nonWorkingDays = await firstValueFrom(this.dayService.requireNonWorkingYears$(start, end));\n }\n\n isNonWorkingDay(date:Date|string):boolean {\n const formatted = moment(date).format('YYYY-MM-DD');\n return (this.nonWorkingDays.findIndex((el) => el.date === formatted) !== -1);\n }\n\n async updateTimeframe(\n fetchInfo:{ start:Date, end:Date, timeZone:string },\n projectIdentifier:string|undefined,\n ):Promise {\n await this.requireNonWorkingDays(fetchInfo.start, fetchInfo.end);\n\n if (this.areFiltersEmpty && this.querySpace.query.value) {\n // nothing to do\n return Promise.resolve();\n }\n\n const startDate = moment(fetchInfo.start).format('YYYY-MM-DD');\n const endDate = moment(fetchInfo.end).format('YYYY-MM-DD');\n\n let queryId:string|null = null;\n if (this.urlParams.query_id) {\n queryId = this.urlParams.query_id as string;\n }\n // We derive the necessary props in the following cases\n // 1. We load a queryId with no props\n // 2. We load visible query props or empty\n // 3. We are already loaded and are refetching data (for changed dates, e.g.)\n let queryProps:string|undefined;\n\n if (this.initializingWithQuery) {\n // This is the case on initially loading the calendar with a query_id present in the url params but no\n // query props to overwrite the query settings.\n // We want to always use the currently displayed time interval to be filtered for\n // so we need to adapt any eventually existing dateInterval filter to have that time interval. If no\n // such filter exists yet, we need to add it to the existing filter set.\n // In order to do both, we first need to fetch the query as we cannot signal\n // to the backend yet to only add this one filter but leave the rest unchanged.\n const initialQuery = await firstValueFrom(this.apiV3Service.queries.find({ pageSize: 0 }, queryId));\n\n queryProps = this.generateQueryProps(\n initialQuery,\n startDate,\n endDate,\n );\n } else if (this.initializingWithQueryProps) {\n // This is the case on initially loading the calendar with query_props present in the url params.\n // There might also be a query_id but the settings persisted in it are overwritten by the props.\n if (this.urlParams.query_props) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const oldQueryProps:{ [key:string]:unknown } = JSON.parse(this.urlParams.query_props as string);\n\n // Update the date period of the calendar in the filter\n const newQueryProps = {\n ...oldQueryProps,\n f: [\n ...(oldQueryProps.f as QueryPropsFilter[]).filter((filter:QueryPropsFilter) => filter.n !== 'datesInterval'),\n OpWorkPackagesCalendarService.dateFilter(startDate, endDate),\n ],\n pp: OpWorkPackagesCalendarService.MAX_DISPLAYED,\n pa: 1,\n };\n\n queryProps = JSON.stringify(newQueryProps);\n } else {\n queryProps = OpWorkPackagesCalendarService.defaultQueryProps(startDate, endDate);\n }\n } else {\n queryProps = this.generateQueryProps(\n this.querySpace.query.value as QueryResource,\n startDate,\n endDate,\n );\n\n // There are no query props, ensure that they are not being shown the next load\n this.wpListChecksumService.set(queryId, queryProps);\n }\n\n return Promise.all([this\n .wpListService\n .fromQueryParams({ query_id: queryId, query_props: queryProps }, projectIdentifier || undefined)\n .toPromise(),\n ]);\n }\n\n public generateQueryProps(\n query:QueryResource,\n startDate:string,\n endDate:string,\n ):string {\n return this.urlParamsHelper.encodeQueryJsonParams(\n query,\n (props) => ({\n ...props,\n pp: OpWorkPackagesCalendarService.MAX_DISPLAYED,\n pa: 1,\n f: [\n ...props.f.filter((filter) => filter.n !== 'datesInterval'),\n OpWorkPackagesCalendarService.dateFilter(startDate, endDate),\n ],\n }),\n );\n }\n\n public get initialView():string|undefined {\n return this.urlParams.cview as string|undefined;\n }\n\n dateEditable(wp:WorkPackageResource):boolean {\n const schema = this.schemaCache.of(wp);\n const schemaEditable = schema.isAttributeEditable('startDate') && schema.isAttributeEditable('dueDate');\n return (wp.isLeaf || wp.scheduleManually) && schemaEditable;\n }\n\n eventDurationEditable(wp:WorkPackageResource):boolean {\n return this.dateEditable(wp) && !this.isMilestone(wp);\n }\n\n /**\n * The end date from fullcalendar is open, which means it targets\n * the next day instead of current day 23:59:59.\n * @param end A string representation of the end date\n */\n public getEndDateFromTimestamp(end:string):string {\n return moment(end).subtract(1, 'd').format('YYYY-MM-DD');\n }\n\n public openSplitView(id:string, onlyWhenOpen = false):void {\n this.wpTableSelection.setSelection(id, -1);\n\n // Only open the split view if already open, otherwise only clicking the details opens\n if (onlyWhenOpen && !this.$state.includes('**.details.*')) {\n return;\n }\n\n void this.$state.go(\n `${splitViewRoute(this.$state)}.tabs`,\n { workPackageId: id, tabIdentifier: 'overview' },\n );\n }\n\n public openFullView(id:string):void {\n this.wpTableSelection.setSelection(id, -1);\n\n void this.$state.go(\n 'work-packages.show',\n { workPackageId: id },\n );\n }\n\n public onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void {\n if (isClickedWithModifier(event)) {\n return;\n }\n\n this.openSplitView(workPackageId, true);\n }\n\n public onCardDblClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void {\n if (isClickedWithModifier(event)) {\n return;\n }\n\n this.openFullView(workPackageId);\n }\n\n public showEventContextMenu({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void {\n if (isClickedWithModifier(event)) {\n return;\n }\n\n // We want to keep the original context menu on hrefs\n // (currently, this is only the id)\n if ((event.target as HTMLElement).closest(`.${uiStateLinkClass}`)) {\n debugLog('Allowing original context menu on state link');\n return;\n }\n\n // Set the selection to single\n this.wpTableSelection.setSelection(workPackageId, -1);\n\n event.preventDefault();\n\n const handler = new WorkPackageViewContextMenu(this.injector, workPackageId, jQuery(event.target as HTMLElement));\n this.contextMenuService.show(handler, event);\n }\n\n private defaultOptions():CalendarOptionsWithDayGrid {\n return {\n editable: false,\n locales: allLocales,\n locale: this.I18n.locale,\n fixedWeekCount: false,\n firstDay: this.configuration.startOfWeek(),\n timeZone: this.configuration.isTimezoneSet() ? this.configuration.timezone() : 'local',\n height: 'auto',\n headerToolbar: {\n left: 'prev,next today',\n center: 'title',\n right: '',\n },\n initialDate: this.initialDate,\n initialView: this.initialView,\n datesSet: (dates) => this.updateDateParam(dates),\n dayHeaderClassNames: (data:DayHeaderContentArg) => this.calendarService.applyNonWorkingDay(data, this.nonWorkingDays),\n dayCellClassNames: (data:DayCellContentArg) => this.calendarService.applyNonWorkingDay(data, this.nonWorkingDays),\n dayGridClassNames: (data:DayCellContentArg) => this.calendarService.applyNonWorkingDay(data, this.nonWorkingDays),\n slotLaneClassNames: (data:SlotLaneContentArg) => this.calendarService.applyNonWorkingDay(data, this.nonWorkingDays),\n slotLabelClassNames: (data:SlotLabelContentArg) => this.calendarService.applyNonWorkingDay(data, this.nonWorkingDays),\n dayHeaderContent: (data:DayHeaderContentArg) => this.calendarService.dayHeaderContent(data),\n };\n }\n\n private static defaultQueryProps(startDate:string, endDate:string) {\n const props = {\n c: ['id'],\n t:\n 'id:asc',\n f: [\n { n: 'status', o: '*', v: [] },\n this.dateFilter(startDate, endDate),\n ],\n dr: 'cards',\n hi: false,\n pp: OpWorkPackagesCalendarService.MAX_DISPLAYED,\n pa: 1,\n };\n\n return JSON.stringify(props);\n }\n\n private static dateFilter(startDate:string, endDate:string):QueryPropsFilter {\n return { n: 'datesInterval', o: '<>d', v: [startDate, endDate] };\n }\n\n private get initializingWithQueryProps():boolean {\n // Initialise with current query props\n // If the filters are empty, they still need to be initialised (with empty props)\n return (this.areFiltersEmpty || this.urlParams.query_props) as boolean;\n }\n\n private get initializingWithQuery():boolean {\n return this.areFiltersEmpty\n && !!this.urlParams.query_id\n && !this.urlParams.query_props;\n }\n\n public get urlParams() {\n return this.uiRouterGlobals.params;\n }\n\n private get areFiltersEmpty():boolean {\n return this.wpTableFilters.isEmpty;\n }\n\n private get initialDate():string|undefined {\n const date = this.urlParams.cdate as string|undefined;\n if (date) {\n return this.timezoneService.formattedISODate(date);\n }\n\n return undefined;\n }\n\n private updateDateParam(dates:DatesSetArg) {\n void this.$state.go(\n '.',\n {\n cdate: this.timezoneService.formattedISODate(dates.view.calendar.getDate()),\n // v6.beta3 fails to have type on the ViewAPI\n cview: (dates.view as unknown as { type:string }).type,\n },\n {\n custom: { notify: false },\n },\n );\n }\n\n updateDates(resizeInfo:EventResizeDoneArg|EventDropArg|EventReceiveArg, dragged?:boolean):ResourceChangeset {\n const workPackage = resizeInfo.event.extendedProps.workPackage as WorkPackageResource;\n const changeset = this.halEditing.edit(workPackage);\n if (!workPackage.ignoreNonWorkingDays && workPackage.duration && dragged) {\n changeset.setValue('duration', workPackage.duration);\n } else {\n const due = moment(resizeInfo.event.endStr)\n .subtract(1, 'day')\n .format('YYYY-MM-DD');\n changeset.setValue('dueDate', due);\n }\n changeset.setValue('startDate', resizeInfo.event.startStr);\n return changeset;\n }\n}\n","
\n
\n
\n \n \n\n \n \n\n
    \n \n
  • \n \n \n
  • \n
    \n
\n
\n
\n\n
\n \n \n
\n\n
\n \n
\n
\n\n \n
\n
\n
\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewChild,\n} from '@angular/core';\nimport { WorkPackagesCalendarComponent } from 'core-app/features/calendar/wp-calendar/wp-calendar.component';\nimport {\n DynamicComponentDefinition,\n PartitionedQuerySpacePageComponent,\n ToolbarButtonComponentDefinition,\n ViewPartitionState,\n} from 'core-app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component';\nimport { WorkPackageFilterContainerComponent } from 'core-app/features/work-packages/components/filters/filter-container/filter-container.directive';\nimport { WorkPackageFilterButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-filter-button/wp-filter-button.component';\nimport { ZenModeButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/zen-mode-toggle-button/zen-mode-toggle-button.component';\nimport { WorkPackageSettingsButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-settings-button/wp-settings-button.component';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { QueryParamListenerService } from 'core-app/features/work-packages/components/wp-query/query-param-listener.service';\nimport { OpProjectIncludeComponent } from 'core-app/shared/components/project-include/project-include.component';\nimport { calendarRefreshRequest } from 'core-app/features/calendar/calendar.actions';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\n@Component({\n templateUrl: '../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.html',\n styleUrls: [\n '../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.sass',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n QueryParamListenerService,\n ],\n})\nexport class WorkPackagesCalendarPageComponent extends PartitionedQuerySpacePageComponent {\n @InjectField(ActionsService) actions$:ActionsService;\n\n @ViewChild(WorkPackagesCalendarComponent, { static: true }) calendarElement:WorkPackagesCalendarComponent;\n\n text = {\n title: this.I18n.t('js.calendar.title'),\n unsaved_title: this.I18n.t('js.calendar.unsaved_title'),\n };\n\n /** Go back using back-button */\n backButtonCallback:() => void;\n\n /** Current query title to render */\n selectedTitle = this.text.unsaved_title;\n\n filterContainerDefinition:DynamicComponentDefinition = {\n component: WorkPackageFilterContainerComponent,\n };\n\n /** We need to pass the correct partition state to the view to manage the grid */\n currentPartition:ViewPartitionState = '-split';\n\n /** Show a toolbar */\n showToolbar = true;\n\n /** Toolbar is not editable */\n titleEditingEnabled = false;\n\n /** Saveable */\n showToolbarSaveButton = true;\n\n /** Toolbar is always enabled */\n toolbarDisabled = false;\n\n /** Define the buttons shown in the toolbar */\n toolbarButtonComponents:ToolbarButtonComponentDefinition[] = [\n {\n component: OpProjectIncludeComponent,\n },\n {\n component: WorkPackageFilterButtonComponent,\n },\n {\n component: ZenModeButtonComponent,\n },\n {\n component: WorkPackageSettingsButtonComponent,\n containerClasses: 'hidden-for-tablet',\n inputs: {\n hideTableOptions: true,\n showCalendarSharingOption: true,\n },\n },\n ];\n\n /**\n * We need to set the current partition to the grid to ensure\n * either side gets expanded to full width if we're not in '-split' mode.\n *\n * @param state The current or entering state\n */\n setPartition(state:{ data:{ partition?:ViewPartitionState } }):void {\n this.currentPartition = state.data?.partition || '-split';\n }\n\n protected staticQueryName(_query:QueryResource):string {\n return this.text.unsaved_title;\n }\n\n /**\n * @protected\n */\n protected loadInitialQuery():void {\n // We never load the initial query as the calendar service does all that.\n }\n\n /**\n * Instead of refreshing the query space diretly, send an effect so fullcalendar can reload individually\n */\n refresh(visibly = false, _firstPage = false):void {\n this.actions$.dispatch(calendarRefreshRequest({ showLoading: visibly }));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { makeSplitViewRoutes } from 'core-app/features/work-packages/routing/split-view-routes.template';\nimport { WorkPackageSplitViewComponent } from 'core-app/features/work-packages/routing/wp-split-view/wp-split-view.component';\nimport { WorkPackagesBaseComponent } from 'core-app/features/work-packages/routing/wp-base/wp--base.component';\nimport { WorkPackagesCalendarComponent } from 'core-app/features/calendar/wp-calendar/wp-calendar.component';\nimport { WorkPackagesCalendarPageComponent } from 'core-app/features/calendar/wp-calendar-page/wp-calendar-page.component';\n\nexport const sidemenuId = 'calendar_sidemenu';\nexport const sideMenuOptions = {\n sidemenuId,\n hardReloadOnBaseRoute: true,\n defaultQuery: 'new',\n};\n\nexport const CALENDAR_ROUTES:Ng2StateDeclaration[] = [\n {\n name: 'calendar',\n parent: 'optional_project',\n url: '/calendars/:query_id?&query_props&cdate&cview',\n redirectTo: 'calendar.page',\n views: {\n '!$default': { component: WorkPackagesBaseComponent },\n },\n params: {\n query_id: { type: 'opQueryId', dynamic: true },\n cdate: { type: 'string', dynamic: true },\n cview: { type: 'string', dynamic: true },\n // Use custom encoder/decoder that ensures validity of URL string\n query_props: { type: 'opQueryString' },\n },\n },\n {\n name: 'calendar.page',\n component: WorkPackagesCalendarPageComponent,\n redirectTo: 'calendar.page.show',\n data: {\n bodyClasses: 'router--calendar',\n sideMenuOptions,\n },\n },\n {\n name: 'calendar.page.show',\n data: {\n baseRoute: 'calendar.page.show',\n sideMenuOptions,\n },\n views: {\n 'content-left': { component: WorkPackagesCalendarComponent },\n },\n },\n ...makeSplitViewRoutes(\n 'calendar.page.show',\n undefined,\n WorkPackageSplitViewComponent,\n ),\n];\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { OpSharedModule } from 'core-app/shared/shared.module';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FullCalendarModule } from '@fullcalendar/angular';\nimport { WorkPackagesCalendarComponent } from 'core-app/features/calendar/wp-calendar/wp-calendar.component';\nimport { OpenprojectWorkPackagesModule } from 'core-app/features/work-packages/openproject-work-packages.module';\nimport { UIRouterModule } from '@uirouter/angular';\nimport { TimeEntryCalendarComponent } from 'core-app/features/calendar/te-calendar/te-calendar.component';\nimport { OpenprojectFieldsModule } from 'core-app/shared/components/fields/openproject-fields.module';\nimport { OpenprojectTimeEntriesModule } from 'core-app/shared/components/time_entries/openproject-time-entries.module';\nimport { WorkPackagesCalendarPageComponent } from 'core-app/features/calendar/wp-calendar-page/wp-calendar-page.component';\nimport { CALENDAR_ROUTES } from 'core-app/features/calendar/calendar.routes';\nimport { QueryGetIcalUrlModalComponent } from 'core-app/shared/components/modals/get-ical-url-modal/query-get-ical-url.modal';\n\n@NgModule({\n imports: [\n // Commons\n OpSharedModule,\n\n // Routes for /calendar\n UIRouterModule.forChild({ states: CALENDAR_ROUTES }),\n\n // Work Package module\n OpenprojectWorkPackagesModule,\n\n // Time entry module\n OpenprojectTimeEntriesModule,\n\n // Editable fields e.g. for modals\n OpenprojectFieldsModule,\n\n // Calendar component\n FullCalendarModule,\n\n // Angular reactive forms, required for QueryGetIcalUrlModalComponent\n ReactiveFormsModule,\n ],\n declarations: [\n // Work package calendars\n WorkPackagesCalendarPageComponent,\n WorkPackagesCalendarComponent,\n TimeEntryCalendarComponent,\n QueryGetIcalUrlModalComponent,\n ],\n exports: [\n WorkPackagesCalendarComponent,\n TimeEntryCalendarComponent,\n ],\n})\nexport class OpenprojectCalendarModule {\n}\n","\n\n \n \n \n \n \n \n \n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n Output,\n SecurityContext,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FullCalendarComponent } from '@fullcalendar/angular';\nimport { States } from 'core-app/core/states/states.service';\nimport * as moment from 'moment';\nimport { Moment } from 'moment';\nimport { StateService } from '@uirouter/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport timeGrid from '@fullcalendar/timegrid';\nimport {\n CalendarOptions,\n DayCellContentArg,\n DayCellMountArg,\n DayHeaderContentArg,\n Duration,\n EventApi,\n EventInput,\n EventSourceFuncArg,\n SlotLabelContentArg,\n SlotLaneContentArg,\n} from '@fullcalendar/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport interactionPlugin from '@fullcalendar/interaction';\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { ColorsService } from 'core-app/shared/components/colors/colors.service';\nimport { BrowserDetector } from 'core-app/core/browser/browser-detector.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { FilterOperator } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { OpCalendarService } from 'core-app/features/calendar/op-calendar.service';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { IFieldSchema } from 'core-app/shared/components/fields/field.base';\nimport { VerboseFormattingArg } from '@fullcalendar/common';\nimport { firstValueFrom, Subject } from 'rxjs';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport { IDay } from 'core-app/core/state/days/day.model';\nimport { DayResourceService } from 'core-app/core/state/days/day.service';\nimport allLocales from '@fullcalendar/core/locales-all';\nimport { TurboRequestsService } from 'core-app/core/turbo/turbo-requests.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\n\ninterface TimeEntrySchema extends SchemaResource {\n activity:IFieldSchema;\n workPackage:IFieldSchema;\n project:IFieldSchema;\n hours:IFieldSchema;\n user:IFieldSchema;\n comment:IFieldSchema;\n}\n\ninterface CalendarViewEvent {\n el:HTMLElement;\n event:EventApi;\n}\n\ninterface CalendarMoveEvent {\n el:HTMLElement;\n event:EventApi;\n oldEvent:EventApi;\n delta:Duration;\n revert:() => void;\n}\ninterface CalendarOptionsWithDayGrid extends CalendarOptions {\n dayGridClassNames:(data:DayCellMountArg) => void;\n}\n// An array of all the days that are displayed. The zero index represents Monday.\nexport type DisplayedDays = [\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n];\n\nconst TIME_ENTRY_CLASS_NAME = 'te-calendar--time-entry';\nconst DAY_SUM_CLASS_NAME = 'te-calendar--day-sum';\nconst ADD_ENTRY_CLASS_NAME = 'te-calendar--add-entry';\nconst ADD_ICON_CLASS_NAME = 'te-calendar--add-icon';\nconst ADD_ENTRY_PROHIBITED_CLASS_NAME = '-prohibited';\n\n@Component({\n templateUrl: './te-calendar.template.html',\n styleUrls: ['./te-calendar.component.sass'],\n selector: 'op-time-entries-calendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n OpCalendarService,\n HalResourceEditingService,\n TurboRequestsService,\n PathHelperService,\n ],\n})\nexport class TimeEntryCalendarComponent implements AfterViewInit, OnDestroy {\n @ViewChild(FullCalendarComponent) ucCalendar:FullCalendarComponent;\n\n @Input() projectIdentifier:string;\n\n @Input() static = false;\n\n @Input() set displayedDays(days:DisplayedDays) {\n this.initializeCalendar(days);\n }\n\n @Output() entries = new EventEmitter>();\n\n // Not used by the calendar but rather is the maximum/minimum of the graph.\n public minHour = 1;\n\n public maxHour = 12;\n\n public labelIntervalHours = 2;\n\n public scaleRatio = 1;\n\n protected memoizedTimeEntries:{ start:Moment; end:Moment; entries:Promise>; };\n\n public memoizedCreateAllowed = false;\n\n public text = {\n logTime: this.i18n.t('js.button_log_time'),\n today: this.i18n.t('js.team_planner.today'),\n };\n\n calendarOptions$ = new Subject();\n\n public nonWorkingDays:IDay[] = [];\n\n private closeDialogHandler:EventListener = this.handleDialogClose.bind(this);\n\n public additionalOptions:CalendarOptionsWithDayGrid = {\n editable: false,\n locales: allLocales,\n locale: this.i18n.locale,\n fixedWeekCount: false,\n headerToolbar: {\n right: '',\n center: 'title',\n left: 'prev,next today',\n },\n buttonText: { today: this.text.today },\n initialView: 'timeGridWeek',\n firstDay: this.configuration.startOfWeek(),\n timeZone: this.configuration.isTimezoneSet() ? this.configuration.timezone() : 'local',\n hiddenDays: [],\n // This is a magic number that is derived by trial and error\n contentHeight: 550,\n slotEventOverlap: false,\n slotLabelInterval: `${this.labelIntervalHours}:00:00`,\n slotLabelFormat: (info:VerboseFormattingArg) => ((this.maxHour - info.date.hour) / this.scaleRatio).toString(),\n allDaySlot: false,\n displayEventTime: false,\n slotMinTime: `${this.minHour - 1}:00:00`,\n slotMaxTime: `${this.maxHour}:00:00`,\n events: this.calendarEventsFunction.bind(this),\n eventOverlap: (stillEvent:EventApi) => !stillEvent.classNames.includes(TIME_ENTRY_CLASS_NAME),\n plugins: [timeGrid, interactionPlugin],\n eventDidMount: this.alterEventEntry.bind(this),\n eventWillUnmount: this.beforeEventRemove.bind(this),\n eventClick: this.dispatchEventClick.bind(this),\n eventDrop: this.moveEvent.bind(this),\n dayHeaderClassNames: (data:DayHeaderContentArg) => this.calendar.applyNonWorkingDay(data, this.nonWorkingDays),\n dayCellClassNames: (data:DayCellContentArg) => this.calendar.applyNonWorkingDay(data, this.nonWorkingDays),\n dayGridClassNames: (data:DayCellContentArg) => this.calendar.applyNonWorkingDay(data, this.nonWorkingDays),\n slotLaneClassNames: (data:SlotLaneContentArg) => this.calendar.applyNonWorkingDay(data, this.nonWorkingDays),\n slotLabelClassNames: (data:SlotLabelContentArg) => this.calendar.applyNonWorkingDay(data, this.nonWorkingDays),\n dayHeaderContent: (data:DayHeaderContentArg) => this.calendar.dayHeaderContent(data),\n };\n\n private initializeCalendar(displayedDayss:DisplayedDays) {\n void this.weekdayService.loadWeekdays()\n .toPromise()\n .then(async () => {\n const startOfWeek = moment().startOf('week').format('YYYY-MM-DD');\n const endOfWeek = moment().endOf('week').format('YYYY-MM-DD');\n await this.requireNonWorkingDays(startOfWeek, endOfWeek);\n this.additionalOptions.hiddenDays = this.setHiddenDays(displayedDayss);\n this.calendarOptions$.next(this.additionalOptions);\n });\n }\n\n constructor(\n readonly states:States,\n readonly apiV3Service:ApiV3Service,\n readonly $state:StateService,\n private element:ElementRef,\n readonly i18n:I18nService,\n readonly injector:Injector,\n readonly notifications:HalResourceNotificationService,\n private sanitizer:DomSanitizer,\n private configuration:ConfigurationService,\n private timezone:TimezoneService,\n private schemaCache:SchemaCacheService,\n private colors:ColorsService,\n private browserDetector:BrowserDetector,\n private calendar:OpCalendarService,\n readonly weekdayService:WeekdayService,\n readonly dayService:DayResourceService,\n readonly turboRequests:TurboRequestsService,\n readonly pathHelper:PathHelperService,\n ) { }\n\n ngAfterViewInit():void {\n document.addEventListener('dialog:close', this.closeDialogHandler);\n }\n\n ngOnDestroy():void {\n document.removeEventListener('dialog:close', this.closeDialogHandler);\n }\n\n async requireNonWorkingDays(start:Date | string, end:Date | string) {\n this.nonWorkingDays = await firstValueFrom(\n this.dayService.requireNonWorkingYears$(start, end),\n );\n }\n\n public calendarEventsFunction(\n fetchInfo:EventSourceFuncArg,\n successCallback:(events:EventInput[]) => void,\n failureCallback:(error:Error) => void,\n ):void|PromiseLike {\n const start = moment(fetchInfo.startStr);\n const end = moment(fetchInfo.endStr);\n void this.fetchTimeEntries(start, end)\n .then(async (collection) => {\n this.entries.emit(collection);\n\n successCallback(await this.buildEntries(collection.elements, fetchInfo));\n })\n .catch(failureCallback);\n }\n\n protected fetchTimeEntries(start:Moment, end:Moment):Promise> {\n if (!this.memoizedTimeEntries\n || this.memoizedTimeEntries.start.valueOf() !== start.valueOf()\n || this.memoizedTimeEntries.end.valueOf() !== end.valueOf()) {\n const promise = firstValueFrom(\n this\n .apiV3Service\n .time_entries\n .list({ filters: this.dmFilters(start, end), pageSize: 500 }),\n ).then((collection) => {\n this.memoizedCreateAllowed = !!collection.createTimeEntry;\n\n return collection;\n });\n\n this.memoizedTimeEntries = { start, end, entries: promise };\n }\n\n return this.memoizedTimeEntries.entries;\n }\n\n private async buildEntries(entries:TimeEntryResource[], fetchInfo:{ start:Date; end:Date }):Promise {\n this.setRatio(entries);\n await this.requireNonWorkingDays(fetchInfo.start, fetchInfo.end);\n return this.buildTimeEntryEntries(entries)\n .concat(this.buildAuxEntries(entries, fetchInfo));\n }\n\n private setRatio(entries:TimeEntryResource[]):void {\n const dateSums = this.calculateDateSums(entries);\n\n const maxHours = Math.max(...Object.values(dateSums), 0);\n\n const oldRatio = this.scaleRatio;\n\n if (maxHours > this.maxHour - this.minHour) {\n this.scaleRatio = this.smallerSuitableRatio((this.maxHour - this.minHour) / maxHours);\n } else {\n this.scaleRatio = 1;\n }\n\n if (oldRatio !== this.scaleRatio) {\n // This is a hack.\n // We already set the same function (different object) via angular.\n // But it will trigger repainting the calendar.\n // Weirdly, this.ucCalendar.getApi().rerender() does not.\n this.ucCalendar.getApi().setOption('slotLabelFormat', (info:VerboseFormattingArg) => {\n const val = (this.maxHour - info.date.hour) / this.scaleRatio;\n return val.toString();\n });\n }\n }\n\n private buildTimeEntryEntries(entries:TimeEntryResource[]):EventInput[] {\n const hoursDistribution:{ [key:string]:Moment } = {};\n\n return entries.map((entry) => {\n let start:Moment;\n let end:Moment;\n const hours = this.timezone.toHours(entry.hours as string) * this.scaleRatio;\n const spentOn = entry.spentOn;\n\n if (hoursDistribution[spentOn]) {\n start = hoursDistribution[spentOn].clone().subtract(hours, 'h');\n end = hoursDistribution[spentOn].clone();\n } else {\n start = moment(spentOn).add(this.maxHour - hours, 'h');\n end = moment(spentOn).add(this.maxHour, 'h');\n }\n\n hoursDistribution[spentOn] = start;\n\n return this.timeEntry(entry, hours, start, end);\n });\n }\n\n private buildAuxEntries(entries:TimeEntryResource[], fetchInfo:{ start:Date; end:Date }):EventInput[] {\n const dateSums = this.calculateDateSums(entries);\n\n const calendarEntries:EventInput[] = [];\n\n for (let m = moment(this.timezone.formattedISODate(fetchInfo.start)); m.diff(fetchInfo.end, 'days') <= 0; m.add(1, 'days')) {\n const duration = dateSums[m.format('YYYY-MM-DD')] || 0;\n\n calendarEntries.push(this.sumEntry(m, duration));\n\n if (this.memoizedCreateAllowed) {\n calendarEntries.push(this.addEntry(m, duration));\n }\n }\n\n return calendarEntries;\n }\n\n private calculateDateSums(entries:TimeEntryResource[]):{ [p:string]:number; } {\n const dateSums:{ [key:string]:number } = {};\n\n entries.forEach((entry) => {\n const hours = this.timezone.toHours(entry.hours as string);\n const spentOn = entry.spentOn;\n\n if (dateSums[spentOn]) {\n dateSums[spentOn] += hours;\n } else {\n dateSums[spentOn] = hours;\n }\n });\n\n return dateSums;\n }\n\n protected timeEntry(entry:TimeEntryResource, hours:number, start:Moment, end:Moment):EventInput {\n const color = this.colors.toHsl(this.entryName(entry));\n\n const classNames = [TIME_ENTRY_CLASS_NAME];\n\n const span = end.diff(start, 'm');\n\n if (span < 40) {\n classNames.push('-no-fadeout');\n }\n\n return {\n title: span < 20 ? '' : this.entryName(entry),\n startEditable: !!entry.update,\n start: start.format(),\n end: end.format(),\n backgroundColor: color,\n borderColor: color,\n classNames,\n entry,\n };\n }\n\n protected sumEntry(date:Moment, duration:number):EventInput {\n return {\n start: date.clone().add(this.maxHour - Math.min(duration * this.scaleRatio, this.maxHour - 0.5) - 0.5, 'h').format(),\n end: date.clone().add(this.maxHour - Math.min((duration + 0.05) * this.scaleRatio, this.maxHour - 0.5), 'h').format(),\n classNames: DAY_SUM_CLASS_NAME,\n rendering: 'background' as const,\n startEditable: false,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n sum: this.i18n.t('js.units.hour', { count: duration }),\n };\n }\n\n protected addEntry(date:Moment, duration:number):EventInput {\n const classNames = [ADD_ENTRY_CLASS_NAME];\n\n if (duration >= 24) {\n classNames.push(ADD_ENTRY_PROHIBITED_CLASS_NAME);\n }\n\n return {\n start: date.clone().format(),\n end: date.clone().add(this.maxHour - Math.min(duration * this.scaleRatio, this.maxHour - 1) - 0.5, 'h').format(),\n rendering: 'background' as const,\n classNames,\n };\n }\n\n protected dmFilters(start:Moment, end:Moment):Array<[string, FilterOperator, string[]]> {\n const startDate = start.format('YYYY-MM-DD');\n const endDate = end.subtract(1, 'd').format('YYYY-MM-DD');\n return [\n ['spentOn', '<>d', [startDate, endDate]] as [ string, FilterOperator, string[] ],\n ['user_id', '=', ['me']] as [string, FilterOperator, [string]],\n ];\n }\n\n private dispatchEventClick(event:CalendarViewEvent):void {\n if (event.event.extendedProps.entry) {\n this.editEvent(event.event.extendedProps.entry as TimeEntryResource);\n } else if (event.el.classList.contains(ADD_ENTRY_CLASS_NAME) && !event.el.classList.contains(ADD_ENTRY_PROHIBITED_CLASS_NAME)) {\n this.addEvent(moment(event.event.startStr));\n }\n }\n\n private editEvent(entry:TimeEntryResource):void {\n void this.turboRequests.request(\n `${this.pathHelper.timeEntryEditDialog(entry.id as string)}?onlyMe=true`,\n { method: 'GET' },\n );\n }\n\n private moveEvent(event:CalendarMoveEvent):void {\n const entry = event.event.extendedProps.entry as TimeEntryResource;\n\n // Use end instead of start as when dragging, the event might be too long and would thus be start\n // on the day before by fullcalendar.\n entry.spentOn = moment(event.event.endStr).format('YYYY-MM-DD');\n\n void this.schemaCache.ensureLoaded(entry).then((schema) => {\n this.apiV3Service.time_entries\n .id(entry)\n .patch(entry, schema)\n .subscribe(\n (updated) => this.updateEventSet(updated, 'update'),\n (e) => {\n this.notifications.handleRawError(e);\n event.revert();\n },\n );\n });\n }\n\n public addEventToday():void {\n this.addEvent(moment(new Date()));\n }\n\n private addEvent(date:Moment):void {\n if (!this.memoizedCreateAllowed) {\n return;\n }\n\n void this.turboRequests.request(\n `${this.pathHelper.timeEntryDialog()}?date=${date.format('YYYY-MM-DD')}&onlyMe=true`,\n { method: 'GET' },\n );\n }\n\n private updateEventSet(event:TimeEntryResource, action:'update' | 'destroy' | 'create' | 'unchanged'):void {\n void this.memoizedTimeEntries.entries.then((collection) => {\n const foundIndex = collection.elements.findIndex((x) => x.id === event.id);\n\n switch (action) {\n case 'update':\n case 'unchanged':\n collection.elements[foundIndex] = event;\n break;\n case 'destroy':\n collection.elements.splice(foundIndex, 1);\n break;\n case 'create':\n void this.apiV3Service.time_entries.cache.updateFor(event);\n\n collection.elements.push(event);\n break;\n default:\n throw new Error('Invalid action');\n }\n\n this.ucCalendar.getApi().refetchEvents();\n });\n }\n\n private alterEventEntry(event:CalendarViewEvent):void {\n this.appendAddIcon(event);\n this.appendSum(event);\n\n if (!event.event.extendedProps.entry) {\n return;\n }\n\n void this.addTooltip(event);\n this.prependDuration(event);\n this.appendFadeout(event);\n }\n\n private appendAddIcon(event:CalendarViewEvent):void {\n if (!event.el.classList.contains(ADD_ENTRY_CLASS_NAME)) {\n return;\n }\n\n const addIcon = document.createElement('div');\n addIcon.classList.add(ADD_ICON_CLASS_NAME);\n addIcon.innerText = '+';\n event.el.append(addIcon);\n }\n\n private appendSum(event:CalendarViewEvent):void {\n if (event.event.extendedProps.sum) {\n event.el.innerHTML = event.event.extendedProps.sum as string;\n }\n }\n\n private async addTooltip(event:CalendarViewEvent):Promise {\n if (this.browserDetector.isMobile) {\n return;\n }\n\n const { entry } = event.event.extendedProps;\n\n const schema = (await this.schemaCache.ensureLoaded(entry as TimeEntryResource)) as TimeEntrySchema;\n\n jQuery(event.el).tooltip({\n content: this.tooltipContentString(event.event.extendedProps.entry as TimeEntryResource, schema),\n items: '.fc-event',\n close() {\n jQuery('.ui-helper-hidden-accessible').remove();\n },\n track: true,\n });\n }\n\n private removeTooltip(event:CalendarViewEvent):void {\n const target = jQuery(event.el);\n\n if (target.tooltip('instance')) {\n jQuery(event.el).tooltip('disable');\n }\n }\n\n private prependDuration(event:CalendarViewEvent):void {\n const timeEntry = event.event.extendedProps.entry as TimeEntryResource;\n\n if (this.timezone.toHours(timeEntry.hours as string) < 0.5) {\n return;\n }\n\n const formattedDuration = this.timezone.formattedDuration(timeEntry.hours as string);\n\n jQuery(event.el)\n .find('.fc-event-title')\n .prepend(`
${formattedDuration}
`);\n }\n\n /* Fade out event text to the bottom to avoid it being cut of weirdly.\n * Multiline ellipsis with an unknown height is not possible, hence we blur the text.\n * The gradient needs to take the background color of the element into account (hashed over the event\n * title) which is why the style is set in code.\n *\n * We do not print anything on short entries (< 0.5 hours),\n * which leads to the fc-short class not being applied by full calendar. For other short events, the css rules\n * need to deactivate the fc-fadeout.\n */\n private appendFadeout(event:CalendarViewEvent):void {\n const timeEntry = event.event.extendedProps.entry as TimeEntryResource;\n\n if (this.timezone.toHours(timeEntry.hours as string) < 0.5) {\n return;\n }\n\n const $element = jQuery(event.el);\n const fadeout = jQuery('
');\n\n const hslaStart = this.colors.toHsla(this.entryName(timeEntry), 0);\n const hslaEnd = this.colors.toHsla(this.entryName(timeEntry), 100);\n\n fadeout.css('background', `-webkit-linear-gradient(${hslaStart} 0%, ${hslaEnd} 100%`);\n\n ['-moz-linear-gradient', '-o-linear-gradient', 'linear-gradient', '-ms-linear-gradient'].forEach((style) => {\n fadeout.css('background-image', `${style}(${hslaStart} 0%, ${hslaEnd} 100%`);\n });\n\n $element.append(fadeout);\n }\n\n private beforeEventRemove(event:CalendarViewEvent):void {\n if (!event.event.extendedProps.entry) {\n return;\n }\n\n this.removeTooltip(event);\n }\n\n private entryName(entry:TimeEntryResource):string {\n let { name } = entry.project;\n if (entry.workPackage) {\n name += ` - ${this.workPackageName(entry)}`;\n }\n\n return name || '-';\n }\n\n private workPackageName(entry:TimeEntryResource):string {\n const workPackage = entry.workPackage;\n return `#${idFromLink(workPackage.href)}: ${workPackage.name}`;\n }\n\n private tooltipContentString(entry:TimeEntryResource, schema:TimeEntrySchema):string {\n return `\n
    \n
  • \n ${schema.project.name}:\n ${this.sanitizedValue(entry.project.name)}\n
  • \n
  • \n ${schema.workPackage.name}:\n ${entry.workPackage ? this.sanitizedValue(this.workPackageName(entry)) : this.i18n.t('js.placeholders.default')}\n
  • \n
  • \n ${schema.activity.name}:\n ${this.sanitizedValue(entry.activity?.name || '')}\n
  • \n
  • \n ${schema.hours.name}:\n ${this.timezone.formattedDuration(entry.hours as string)}\n
  • \n
  • \n ${schema.comment.name}:\n ${this.sanitizedValue(entry.comment.raw || this.i18n.t('js.placeholders.default'))}\n
  • \n `;\n }\n\n private sanitizedValue(value:string):string {\n return this.sanitizer.sanitize(SecurityContext.HTML, value) || '';\n }\n\n protected formatNumber(value:number):string {\n return this.i18n.toNumber(value, { precision: 2 });\n }\n\n private smallerSuitableRatio(value:number):number {\n for (let divisor = this.labelIntervalHours + 1; divisor < 100; divisor++) {\n const candidate = this.labelIntervalHours / divisor;\n\n if (value >= candidate) {\n return candidate;\n }\n }\n\n return 1;\n }\n\n protected setHiddenDays(displayedDays:DisplayedDays) {\n return Array\n .from(displayedDays, (value, index) => {\n if (!value) {\n return (index + 1) % 7;\n }\n return null;\n })\n .filter((value) => value !== null) as number[];\n }\n\n private handleDialogClose(event:CustomEvent):void {\n const {\n detail: { dialog, submitted },\n } = event as { detail:{ dialog:HTMLDialogElement; submitted:boolean } };\n if (dialog.id === 'time-entry-dialog' && submitted) {\n void this.fetchTimeEntries(\n this.memoizedTimeEntries.start,\n this.memoizedTimeEntries.end,\n ).then(async (collection) => {\n this.entries.emit(collection);\n this.ucCalendar.getApi().refetchEvents();\n });\n }\n }\n}\n","
    \n \n \n \n
    \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CalendarOptions,\n DateSelectArg,\n EventClickArg,\n EventDropArg,\n EventInput,\n ToolbarInput,\n} from '@fullcalendar/core';\nimport { FullCalendarComponent } from '@fullcalendar/angular';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport * as moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { States } from 'core-app/core/states/states.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport {\n WorkPackageViewFiltersService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\nimport { StateService } from '@uirouter/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport interactionPlugin, { EventDragStartArg, EventDragStopArg, EventResizeDoneArg } from '@fullcalendar/interaction';\nimport {\n HalResourceEditingService,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper';\nimport {\n CalendarViewEvent,\n OpWorkPackagesCalendarService,\n} from 'core-app/features/calendar/op-work-packages-calendar.service';\nimport { OpCalendarService } from 'core-app/features/calendar/op-calendar.service';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport { DayResourceService } from 'core-app/core/state/days/day.service';\nimport { EffectCallback, registerEffectCallbacks } from 'core-app/core/state/effects/effect-handler.decorator';\nimport { calendarRefreshRequest } from 'core-app/features/calendar/calendar.actions';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport {\n addBackgroundEvents,\n removeBackgroundEvents,\n} from 'core-app/features/team-planner/team-planner/planner/background-events';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport allLocales from '@fullcalendar/core/locales-all';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { MeetingResource } from 'core-app/features/hal/resources/meeting-resource';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\n\n@Component({\n templateUrl: './wp-calendar.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./wp-calendar.sass'],\n selector: 'op-wp-calendar',\n providers: [\n OpWorkPackagesCalendarService,\n OpCalendarService,\n ],\n})\nexport class WorkPackagesCalendarComponent extends UntilDestroyedMixin implements OnInit {\n @ViewChild(FullCalendarComponent) ucCalendar:FullCalendarComponent;\n\n @ViewChild('ucCalendar', { read: ElementRef })\n set ucCalendarElement(v:ElementRef|undefined) {\n this.calendar.resizeObserver(v);\n }\n\n @Input() static = false;\n\n @Input() showMeetings = false;\n\n calendarOptions$ = new Subject();\n\n private alreadyLoaded = false;\n\n text = {\n cannot_drag_to_non_working_day: this.I18n.t('js.team_planner.cannot_drag_to_non_working_day'),\n today: this.I18n.t('js.team_planner.today'),\n };\n\n constructor(\n readonly actions$:ActionsService,\n readonly states:States,\n readonly $state:StateService,\n readonly wpTableFilters:WorkPackageViewFiltersService,\n readonly wpListService:WorkPackagesListService,\n readonly querySpace:IsolatedQuerySpace,\n readonly schemaCache:SchemaCacheService,\n private element:ElementRef,\n readonly i18n:I18nService,\n readonly toastService:ToastService,\n private sanitizer:DomSanitizer,\n private I18n:I18nService,\n private configuration:ConfigurationService,\n readonly calendar:OpCalendarService,\n readonly workPackagesCalendar:OpWorkPackagesCalendarService,\n readonly currentProject:CurrentProjectService,\n readonly halEditing:HalResourceEditingService,\n readonly halNotification:HalResourceNotificationService,\n readonly weekdayService:WeekdayService,\n readonly dayService:DayResourceService,\n readonly apiV3Service:ApiV3Service,\n readonly pathHelper:PathHelperService,\n readonly timezoneService:TimezoneService,\n ) {\n super();\n }\n\n ngOnInit():void {\n registerEffectCallbacks(this, this.untilDestroyed());\n\n this.wpTableFilters.hidden.push(\n 'project',\n );\n this.calendar.resize$\n .pipe(\n this.untilDestroyed(),\n debounceTime(50),\n )\n .subscribe(() => {\n this.ucCalendar.getApi().updateSize();\n });\n\n // Clear any old subscribers\n this.querySpace.stopAllSubscriptions.next();\n\n this.initializeCalendar();\n }\n\n public async calendarEventsFunction(\n fetchInfo:{ start:Date, end:Date, timeZone:string },\n successCallback:(events:EventInput[]) => void,\n ):Promise {\n await this.workPackagesCalendar.updateTimeframe(fetchInfo, this.currentProject.identifier || undefined);\n\n if (this.alreadyLoaded) {\n this.alreadyLoaded = false;\n const events = this.updateResults(this.querySpace.results.value!);\n successCallback(events);\n } else {\n this\n .workPackagesCalendar\n .currentWorkPackages$\n .subscribe((collection:WorkPackageCollectionResource) => {\n const events = this.updateResults((collection));\n successCallback(events);\n });\n }\n }\n\n public calendarMeetingsFunction(\n fetchInfo:{ start:Date, end:Date, timeZone:string },\n successCallback:(events:EventInput[]) => void,\n ):void {\n if (!this.showMeetings) {\n successCallback([]);\n return;\n }\n\n const startDate = moment(fetchInfo.start).format('YYYY-MM-DD');\n const endDate = moment(fetchInfo.end).format('YYYY-MM-DD');\n\n const filters = new ApiV3FilterBuilder();\n filters.add('datesInterval', '<>d', [startDate, endDate]);\n\n if (this.currentProject.id) {\n filters.add('project', '=', [this.currentProject.id]);\n }\n\n this\n .apiV3Service\n .meetings\n .filtered(filters, { pageSize: '-1' })\n .get()\n .subscribe((meetings) => {\n const events:EventInput[] = meetings.elements.map((meeting:MeetingResource) => {\n const sameProject = this.currentProject.id === meeting.project.id;\n const title:string = sameProject ? meeting.title : `${meeting.project.name}: ${meeting.title}`;\n return {\n title,\n start: this.timezoneService.parseDatetime(meeting.startTime as string).format(),\n end: this.timezoneService.parseDatetime(meeting.endTime as string).format(),\n editable: false,\n durationEditable: false,\n allDay: false,\n className: 'fc-event-clickable op-wp-calendar--meeting-resource',\n meeting,\n } as EventInput;\n });\n\n successCallback(events);\n });\n }\n\n // eslint-disable-next-line @angular-eslint/use-lifecycle-interface\n ngOnDestroy():void {\n super.ngOnDestroy();\n this.calendar.resizeObs?.disconnect();\n }\n\n private initializeCalendar() {\n const additionalOptions:{ [key:string]:unknown } = {\n locales: allLocales,\n locale: this.I18n.locale,\n height: '100%',\n headerToolbar: this.buildHeader(),\n eventSources: [\n {\n id: 'work_packages',\n events: this.calendarEventsFunction.bind(this) as unknown,\n },\n {\n id: 'meetings',\n events: this.calendarMeetingsFunction.bind(this) as unknown,\n eventDisplay: 'block',\n },\n {\n events: [],\n id: 'background',\n color: 'red',\n background: 'red',\n textColor: 'white',\n display: 'background',\n editable: false,\n },\n ],\n plugins: [\n dayGridPlugin,\n interactionPlugin,\n ],\n // DnD configuration\n selectable: true,\n select: this.handleDateClicked.bind(this) as unknown,\n eventResizableFromStart: true,\n editable: true,\n displayEventTime: true,\n displayEventEnd: true,\n eventTimeFormat: {\n hour: 'numeric',\n minute: '2-digit',\n meridiem: 'short',\n },\n eventDidMount: (evt:CalendarViewEvent) => {\n const { el, event } = evt;\n if (event.source?.id !== 'work_packages') {\n return;\n }\n const workPackage = event.extendedProps.workPackage as WorkPackageResource;\n el.dataset.workPackageId = workPackage.id as string;\n },\n eventResize: (resizeInfo:EventResizeDoneArg) => {\n const due = moment(resizeInfo.event.endStr).subtract(1, 'day').toDate();\n const start = moment(resizeInfo.event.startStr).toDate();\n const wp = resizeInfo.event.extendedProps.workPackage as WorkPackageResource;\n if (!wp.ignoreNonWorkingDays && (this.weekdayService.isNonWorkingDay(start) || this.weekdayService.isNonWorkingDay(due)\n || this.workPackagesCalendar.isNonWorkingDay(start) || this.workPackagesCalendar.isNonWorkingDay(due))) {\n this.toastService.addError(this.text.cannot_drag_to_non_working_day);\n resizeInfo?.revert();\n return;\n }\n void this.updateEvent(resizeInfo, false);\n },\n eventDrop: (dropInfo:EventDropArg) => {\n const start = moment(dropInfo.event.startStr).toDate();\n const wp = dropInfo.event.extendedProps.workPackage as WorkPackageResource;\n if (!wp.ignoreNonWorkingDays && (this.weekdayService.isNonWorkingDay(start) || this.workPackagesCalendar.isNonWorkingDay(start))) {\n this.toastService.addError(this.text.cannot_drag_to_non_working_day);\n dropInfo?.revert();\n return;\n }\n void this.updateEvent(dropInfo, true);\n },\n eventResizeStart: (resizeInfo:EventResizeDoneArg) => {\n const wp = resizeInfo.event.extendedProps.workPackage as WorkPackageResource;\n if (!wp.ignoreNonWorkingDays) {\n this.addBackgroundEventsForNonWorkingDays();\n }\n },\n eventResizeStop: () => removeBackgroundEvents(this.ucCalendar.getApi()),\n eventDragStart: (dragInfo:EventDragStartArg) => {\n const wp = dragInfo.event.extendedProps.workPackage as WorkPackageResource;\n if (!wp.ignoreNonWorkingDays) {\n this.addBackgroundEventsForNonWorkingDays();\n }\n },\n eventDragStop: (dragInfo:EventDragStopArg) => {\n const { el } = dragInfo;\n el.style.removeProperty('pointer-events');\n removeBackgroundEvents(this.ucCalendar.getApi());\n },\n eventClick: (evt:EventClickArg) => {\n if (evt.event.extendedProps.meeting) {\n const meeting = evt.event.extendedProps.meeting as MeetingResource;\n window.location.href = this.pathHelper.meetingPath(meeting.id as string);\n }\n\n if (evt.event.extendedProps.workPackage) {\n const workPackageId = (evt.event.extendedProps.workPackage as WorkPackageResource).id as string;\n // Currently the calendar widget is shown on multiple pages,\n // but only the calendar module itself is a partitioned query space which can deal with a split screen request\n if (this.$state.includes('calendar')) {\n this.workPackagesCalendar.openSplitView(workPackageId);\n } else {\n void this.$state.go(\n 'work-packages.show',\n { workPackageId },\n );\n }\n }\n },\n };\n\n if (this.static) {\n additionalOptions.initialView = 'dayGridWeek';\n }\n\n void this.weekdayService.loadWeekdays()\n .toPromise()\n .then(() => {\n this.calendarOptions$.next(\n this.workPackagesCalendar.calendarOptions(additionalOptions),\n );\n });\n }\n\n public buildHeader():false|ToolbarInput|undefined {\n if (this.static) {\n return false;\n }\n return {\n right: 'dayGridMonth,dayGridWeek',\n center: 'title',\n left: 'prev,next today',\n };\n }\n\n public openContextMenu(event:MouseEvent):void {\n const eventContainer = (event.target as HTMLElement).closest('.fc-event') as HTMLElement|undefined;\n if (!eventContainer) {\n return;\n }\n\n const workPackageId = eventContainer.dataset.workPackageId as string;\n this.workPackagesCalendar.showEventContextMenu({ workPackageId, event });\n }\n\n private updateResults(collection:WorkPackageCollectionResource) {\n this.workPackagesCalendar.warnOnTooManyResults(collection, this.static);\n return this.mapToCalendarEvents(collection.elements);\n }\n\n private mapToCalendarEvents(workPackages:WorkPackageResource[]) {\n return workPackages.map((workPackage:WorkPackageResource) => {\n const startDate = this.workPackagesCalendar.eventDate(workPackage, 'start');\n const endDate = this.workPackagesCalendar.eventDate(workPackage, 'due');\n\n const exclusiveEnd = moment(endDate).add(1, 'days').format('YYYY-MM-DD');\n\n return {\n title: workPackage.subject,\n start: startDate,\n editable: this.workPackagesCalendar.dateEditable(workPackage),\n durationEditable: this.workPackagesCalendar.eventDurationEditable(workPackage),\n end: exclusiveEnd,\n allDay: true,\n className: `fc-event-clickable __hl_background_type_${workPackage.type.id || ''}`,\n workPackage,\n };\n });\n }\n\n private async updateEvent(info:EventResizeDoneArg|EventDropArg, dragged:boolean):Promise {\n const changeset = this.workPackagesCalendar.updateDates(info, dragged);\n\n try {\n const result = await this.halEditing.save(changeset);\n this.halNotification.showSave(result.resource, result.wasNew);\n this.reloadOnRefreshRequest();\n } catch (e) {\n this.halNotification.handleRawError(e, changeset.projectedResource);\n info.revert();\n }\n }\n\n private handleDateClicked(info:DateSelectArg) {\n const due = moment(info.endStr).subtract(1, 'day').toDate();\n const nonWorkingDays = this.weekdayService.isNonWorkingDay(info.start) || this.weekdayService.isNonWorkingDay(due)\n || this.workPackagesCalendar.isNonWorkingDay(info.start) || this.workPackagesCalendar.isNonWorkingDay(due);\n\n const defaults = {\n startDate: info.startStr,\n dueDate: this.workPackagesCalendar.getEndDateFromTimestamp(info.endStr),\n ignoreNonWorkingDays: nonWorkingDays,\n };\n\n void this.$state.go(\n splitViewRoute(this.$state, 'new'),\n {\n defaults,\n tabIdentifier: 'overview',\n },\n );\n }\n\n @EffectCallback(calendarRefreshRequest)\n reloadOnRefreshRequest():void {\n this.ucCalendar.getApi().refetchEvents();\n }\n\n private addBackgroundEventsForNonWorkingDays() {\n addBackgroundEvents(\n this.ucCalendar.getApi(),\n (date) => this.weekdayService.isNonWorkingDay(date) || this.workPackagesCalendar.isNonWorkingDay(date),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\nexport class EEActiveTrialBase extends UntilDestroyedMixin {\n public text = {\n label_email: this.I18n.t('js.label_email'),\n label_expires_at: this.I18n.t('js.admin.enterprise.trial.form.label_expires_at'),\n label_maximum_users: this.I18n.t('js.admin.enterprise.trial.form.label_maximum_users'),\n label_company: this.I18n.t('js.admin.enterprise.trial.form.label_company'),\n label_domain: this.I18n.t('js.admin.enterprise.trial.form.label_domain'),\n label_starts_at: this.I18n.t('js.admin.enterprise.trial.form.label_starts_at'),\n label_subscriber: this.I18n.t('js.admin.enterprise.trial.form.label_subscriber'),\n label_plan: this.I18n.t('js.admin.enterprise.trial.form.label_plan'),\n label_additional_features: this.I18n.t('js.admin.enterprise.trial.form.label_additional_features'),\n text_expired: this.I18n.t('js.admin.enterprise.text_expired'),\n text_reprieve_days_left: (days:number) => this.I18n.t('js.admin.enterprise.text_reprieve_days_left', { days }),\n };\n\n constructor(readonly I18n:I18nService) {\n super();\n }\n}\n","
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { EnterpriseTrialService } from 'core-app/features/enterprise/enterprise-trial.service';\nimport {\n HttpClient,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport { EEActiveTrialBase } from 'core-app/features/enterprise/enterprise-active-trial/ee-active-trial.base';\nimport { GonService } from 'core-app/core/gon/gon.service';\nimport { EXTERNAL_REQUEST_HEADER } from 'core-app/features/hal/http/openproject-header-interceptor';\nimport { IEnterpriseData } from 'core-app/features/enterprise/enterprise-trial.model';\n\n@Component({\n selector: 'enterprise-active-trial',\n templateUrl: './ee-active-trial.component.html',\n styleUrls: ['./ee-active-trial.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EEActiveTrialComponent extends EEActiveTrialBase implements OnInit {\n public subscriber:string;\n\n public email:string;\n\n public company:string;\n\n public domain:string;\n\n public userCount:string;\n\n public startsAt:string;\n\n public expiresAt:string;\n\n public plan:string;\n\n public additionalFeatures:string;\n\n constructor(\n readonly elementRef:ElementRef,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n readonly http:HttpClient,\n readonly Gon:GonService,\n public eeTrialService:EnterpriseTrialService,\n ) {\n super(I18n);\n }\n\n ngOnInit() {\n if (!this.subscriber) {\n void this.eeTrialService.userData$\n .pipe(\n distinctUntilChanged(),\n this.untilDestroyed(),\n )\n .subscribe((data:IEnterpriseData) => {\n this.formatUserData(data);\n this.cdRef.detectChanges();\n });\n\n this.initialize();\n }\n }\n\n private initialize():void {\n const eeTrialKey = this.Gon.get('ee_trial_key') as { value:string } | undefined;\n const { data } = this.eeTrialService.current;\n\n if (eeTrialKey && !data) {\n // after reload: get data from Augur using the trial key saved in gon\n const trialLink = `${this.eeTrialService.baseUrlAugur}/public/v1/trials/${eeTrialKey.value}`;\n this.eeTrialService.store.update({ trialLink });\n this.getUserDataFromAugur(trialLink);\n }\n }\n\n // use the trial key saved in the db\n // to get the user data from Augur\n private getUserDataFromAugur(trialLink:string) {\n this\n .http\n .get(\n `${trialLink}/details`,\n {\n headers: {\n [EXTERNAL_REQUEST_HEADER]: 'true',\n },\n },\n )\n .toPromise()\n .then((data:IEnterpriseData) => {\n this.eeTrialService.store.update({ data });\n this.eeTrialService.retryConfirmation();\n })\n .catch(() => {\n // Check whether the mail has been confirmed by now\n this.eeTrialService.getToken();\n });\n }\n\n private formatUserData(userForm:IEnterpriseData) {\n this.subscriber = `${userForm.first_name} ${userForm.last_name}`;\n this.email = userForm.email;\n this.company = userForm.company;\n this.domain = userForm.domain;\n }\n}\n","export interface LocalizedLinkMap {\n [key:string]:string;\n\n en:string;\n}\n\n/**\n * Return the matching link for the current locale\n *\n * @param map A hash of locale => URL to use\n */\nexport function localizeLink(map:LocalizedLinkMap) {\n const { locale } = I18n;\n\n return map[locale] || map.en;\n}\n","
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n

    \n

    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n} from '@angular/core';\nimport {\n UntypedFormBuilder,\n Validators,\n} from '@angular/forms';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { EnterpriseTrialService } from 'core-app/features/enterprise/enterprise-trial.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { localizeLink } from 'core-app/shared/helpers/i18n/localized-link';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { IEnterpriseData } from 'core-app/features/enterprise/enterprise-trial.model';\n\nconst newsletterURL = 'https://www.openproject.org/newsletter/';\n\n@Component({\n selector: 'enterprise-trial-form',\n templateUrl: './ee-trial-form.component.html',\n styleUrls: ['./ee-trial-form.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EETrialFormComponent {\n // Retain used values\n userData:Partial = this.eeTrialService.current.data || {};\n\n // The current request host\n requestHost = window.location.host;\n\n // The configured host name\n configuredHost = this.configurationService.hostName;\n\n trialForm = this.formBuilder.group({\n company: [this.userData.company, Validators.required],\n first_name: [this.userData.first_name, Validators.required],\n last_name: [this.userData.last_name, Validators.required],\n email: ['', [Validators.required, Validators.email]],\n domain: [this.userData.domain || this.configuredHost, Validators.required],\n general_consent: [null, Validators.required],\n newsletter_consent: null,\n language: this.currentUserService.language,\n });\n\n public text = {\n general_consent: this.I18n.t('js.admin.enterprise.trial.form.general_consent', {\n link_terms: localizeLink({\n en: 'https://www.openproject.org/terms-of-service/',\n de: 'https://www.openproject.org/de/nutzungsbedingungen/',\n }),\n link_privacy: localizeLink({\n en: 'https://www.openproject.org/data-privacy-and-security/',\n de: 'https://www.openproject.org/de/datenschutz/',\n }),\n }),\n label_test_ee: this.I18n.t('js.admin.enterprise.trial.form.test_ee'),\n label_company: this.I18n.t('js.admin.enterprise.trial.form.label_company'),\n label_first_name: this.I18n.t('js.admin.enterprise.trial.form.label_first_name'),\n label_last_name: this.I18n.t('js.admin.enterprise.trial.form.label_last_name'),\n label_email: this.I18n.t('js.label_email'),\n label_domain: this.I18n.t('js.admin.enterprise.trial.form.label_domain'),\n domain_mismatch: this.I18n.t('js.admin.enterprise.trial.form.domain_mismatch'),\n privacy_policy: this.I18n.t('js.admin.enterprise.trial.form.privacy_policy'),\n receive_newsletter: this.I18n.t('js.admin.enterprise.trial.form.receive_newsletter', { link: newsletterURL }),\n terms_of_service: this.I18n.t('js.admin.enterprise.trial.form.terms_of_service'),\n };\n\n constructor(\n readonly elementRef:ElementRef,\n readonly I18n:I18nService,\n readonly formBuilder:UntypedFormBuilder,\n readonly currentUserService:CurrentUserService,\n readonly configurationService:ConfigurationService,\n readonly eeTrialService:EnterpriseTrialService,\n ) {\n }\n\n // checks if mail is valid after input field was edited by the user\n // displays message for user\n public checkMailField():void {\n const data = this.trialForm.value as IEnterpriseData;\n if (data.email !== '' && this.trialForm.controls.email.errors) {\n this.eeTrialService.store.update({ emailInvalid: true });\n } else {\n this.eeTrialService.store.update({ emailInvalid: false, error: undefined });\n }\n }\n}\n","
    \n
    \n\n
    \n\n
    \n \n
    \n \n
    \n \n
    \n \n
    \n \n
    \n
    \n
    \n {{ text.quick_overview }}\n
    \n
    \n \n
    \n
    \n
    \n
    \n\n \n
    \n
    \n \n \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { OpModalComponent } from 'core-app/shared/components/modal/modal.component';\nimport { OpModalLocalsToken } from 'core-app/shared/components/modal/modal.service';\nimport { OpModalLocalsMap } from 'core-app/shared/components/modal/modal.types';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { EETrialFormComponent } from 'core-app/features/enterprise/enterprise-modal/enterprise-trial-form/ee-trial-form.component';\nimport { EnterpriseTrialService } from 'core-app/features/enterprise/enterprise-trial.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport const eeOnboardingVideoURL = 'https://www.youtube.com/embed/zLMSydhFSkw?autoplay=1';\n\n@Component({\n selector: 'enterprise-trial-modal',\n templateUrl: './enterprise-trial.modal.html',\n styleUrls: ['./enterprise-trial.modal.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnterpriseTrialModalComponent extends OpModalComponent implements AfterViewInit {\n @ViewChild(EETrialFormComponent, { static: false }) formComponent:EETrialFormComponent;\n\n @Input() public opReferrer:string;\n\n public trialForm:UntypedFormGroup;\n\n public trustedEEVideoURL:SafeResourceUrl;\n\n public text = {\n button_submit: this.I18n.t('js.modals.button_submit'),\n button_cancel: this.I18n.t('js.modals.button_cancel'),\n button_continue: this.I18n.t('js.button_continue'),\n close_popup: this.I18n.t('js.close_popup_title'),\n heading_confirmation: this.I18n.t('js.admin.enterprise.trial.confirmation'),\n heading_next_steps: this.I18n.t('js.admin.enterprise.trial.next_steps'),\n heading_test_ee: this.I18n.t('js.admin.enterprise.trial.test_ee'),\n quick_overview: this.I18n.t('js.admin.enterprise.trial.quick_overview'),\n };\n\n headerText$:Observable = this\n .eeTrialService\n .observe$\n .pipe(\n map(({ status }) => {\n if (status === 'mailSubmitted') {\n return this.text.heading_confirmation;\n }\n\n if (status === 'startTrial') {\n return this.text.heading_next_steps;\n }\n\n return this.text.heading_test_ee;\n }),\n );\n\n showState$ = this\n .eeTrialService\n .observe$\n .pipe(\n map(({ status, cancelled }) => {\n if (!status || cancelled) {\n return 'trial-form';\n }\n if (status === 'mailSubmitted' && !cancelled) {\n return 'trial-waiting';\n }\n\n return 'overview';\n }),\n );\n\n constructor(readonly elementRef:ElementRef,\n @Inject(OpModalLocalsToken) public locals:OpModalLocalsMap,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n readonly domSanitizer:DomSanitizer,\n public eeTrialService:EnterpriseTrialService) {\n super(locals, cdRef, elementRef);\n this.trustedEEVideoURL = this.trustedURL(eeOnboardingVideoURL);\n }\n\n ngAfterViewInit():void {\n this.trialForm = this.formComponent.trialForm;\n }\n\n // checks if form is valid and submits it\n public onSubmit():void {\n if (this.trialForm.valid) {\n this.trialForm.addControl('_type', new UntypedFormControl('enterprise-trial'));\n void this.eeTrialService.sendForm(this.trialForm);\n }\n }\n\n public startEnterpriseTrial():void {\n // open onboarding modal screen\n this.eeTrialService.setStartTrialStatus();\n }\n\n public closeModal(event:Event):void {\n this.closeMe(event);\n\n const { status, confirmed } = this.eeTrialService.current;\n // refresh page to show enterprise trial\n if (status === 'startTrial' || confirmed) {\n window.location.reload();\n } else if (status === 'mailSubmitted') {\n window.location.reload();\n return;\n }\n\n this.eeTrialService.store.update({ modalOpen: false });\n }\n\n public trustedURL(url:string):SafeResourceUrl {\n return this.domSanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n","\n \n\n

    {{ text.confirmation_info(created, email) }}

    \n

    \n {{ text.status_label }} \n \n {{ text.status_waiting }}\n\n \n \n {{ text.resend }}\n \n {{ text.session_timeout }}\n\n \n {{ text.status_confirmed }}\n \n \n

    \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { EnterpriseTrialService } from 'core-app/features/enterprise/enterprise-trial.service';\nimport { HttpClient } from '@angular/common/http';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { EXTERNAL_REQUEST_HEADER } from 'core-app/features/hal/http/openproject-header-interceptor';\nimport { IEnterpriseData } from 'core-app/features/enterprise/enterprise-trial.model';\n\n@Component({\n selector: 'enterprise-trial-waiting',\n templateUrl: './ee-trial-waiting.component.html',\n styleUrls: ['./ee-trial-waiting.component.sass'],\n})\nexport class EETrialWaitingComponent implements OnInit {\n created = this.timezoneService.formattedDate(new Date().toString());\n\n email = '';\n\n public text = {\n confirmation_info: (date:string, email:string) => this.I18n.t('js.admin.enterprise.trial.confirmation_info', {\n date,\n email,\n }),\n resend: this.I18n.t('js.admin.enterprise.trial.resend_link'),\n resend_success: this.I18n.t('js.admin.enterprise.trial.resend_success'),\n resend_warning: this.I18n.t('js.admin.enterprise.trial.resend_warning'),\n session_timeout: this.I18n.t('js.admin.enterprise.trial.session_timeout'),\n status_confirmed: this.I18n.t('js.admin.enterprise.trial.status_confirmed'),\n status_label: this.I18n.t('js.admin.enterprise.trial.status_label'),\n status_waiting: this.I18n.t('js.admin.enterprise.trial.status_waiting'),\n };\n\n constructor(readonly elementRef:ElementRef,\n readonly I18n:I18nService,\n protected http:HttpClient,\n protected toastService:ToastService,\n public eeTrialService:EnterpriseTrialService,\n readonly timezoneService:TimezoneService) {\n }\n\n ngOnInit():void {\n const eeTrialKey = window.gon.ee_trial_key as { created:string }|undefined;\n if (eeTrialKey) {\n const savedDateStr = eeTrialKey.created.split(' ')[0];\n this.created = this.timezoneService.formattedDate(savedDateStr);\n }\n\n this.eeTrialService\n .userData$\n .pipe(\n distinctUntilChanged(),\n )\n .subscribe((data:IEnterpriseData) => {\n this.email = data.email;\n });\n }\n\n // resend mail if resend link has been clicked\n public resendMail():void {\n const { resendLink } = this.eeTrialService.store.getValue();\n\n if (!resendLink) {\n return;\n }\n\n this.eeTrialService.store.update({ cancelled: false });\n this.http.post(\n resendLink,\n {},\n {\n headers: {\n [EXTERNAL_REQUEST_HEADER]: 'true',\n },\n },\n )\n .toPromise()\n .then(() => {\n this.toastService.addSuccess(this.text.resend_success);\n this.eeTrialService.retryConfirmation();\n })\n .catch(() => {\n const { trialLink } = this.eeTrialService.store.getValue();\n if (trialLink) {\n // Check whether the mail has been confirmed by now\n this.eeTrialService.getToken();\n } else {\n this.toastService.addError(this.text.resend_warning);\n }\n });\n }\n}\n","import {\n Store,\n StoreConfig,\n} from '@datorama/akita';\nimport { IEnterpriseTrial } from 'core-app/features/enterprise/enterprise-trial.model';\n\nexport function createInitialState():IEnterpriseTrial {\n return {\n modalOpen: false,\n confirmed: false,\n cancelled: false,\n emailInvalid: false,\n };\n}\n\n@StoreConfig({ name: 'enterprise-trial' })\nexport class EnterpriseTrialStore extends Store {\n constructor() {\n super(createInitialState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Query } from '@datorama/akita';\nimport { filter, map, shareReplay } from 'rxjs/operators';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { EXTERNAL_REQUEST_HEADER } from 'core-app/features/hal/http/openproject-header-interceptor';\nimport { EnterpriseTrialStore } from 'core-app/features/enterprise/enterprise-trial.store';\nimport { GonService } from 'core-app/core/gon/gon.service';\nimport { EnterpriseTrialErrorHalResource, EnterpriseTrialHalResource, IEnterpriseData, IEnterpriseTrial } from 'core-app/features/enterprise/enterprise-trial.model';\nimport isDefinedEntity from 'core-app/core/state/is-defined-entity';\n\n@Injectable()\nexport class EnterpriseTrialService {\n readonly store = new EnterpriseTrialStore();\n\n private query = new Query(this.store);\n\n confirmed$ = this.query.select('confirmed');\n\n cancelled$ = this.query.select('cancelled');\n\n status$ = this.query.select('status');\n\n observe$ = this.query.select();\n\n userData$ = this.query\n .select('data')\n .pipe(filter(isDefinedEntity));\n\n emailError$ = this\n .query\n .select()\n .pipe(\n map(({ error, emailInvalid }) => {\n if (emailInvalid) {\n return this.text.invalid_email;\n }\n\n const errorResponse = error?.error as { identifier?:string };\n if (error && errorResponse.identifier === 'user_already_created_trial') {\n return this.text.taken_email;\n }\n return null;\n }),\n shareReplay(1),\n );\n\n domainTaken$ = this\n .query\n .select()\n .pipe(\n map(({ error }) => {\n const errorResponse = error?.error as { identifier?:string };\n if (error && errorResponse.identifier === 'domain_taken') {\n return this.text.taken_domain;\n }\n return null;\n }),\n shareReplay(1),\n );\n\n public readonly baseUrlAugur:string;\n\n public readonly tokenVersion:string;\n\n public text = {\n invalid_email: this.I18n.t('js.admin.enterprise.trial.form.invalid_email'),\n taken_email: this.I18n.t('js.admin.enterprise.trial.form.taken_email'),\n taken_domain: this.I18n.t('js.admin.enterprise.trial.form.taken_domain'),\n };\n\n constructor(\n readonly I18n:I18nService,\n protected http:HttpClient,\n readonly pathHelper:PathHelperService,\n protected toastService:ToastService,\n readonly Gon:GonService,\n ) {\n this.baseUrlAugur = this.Gon.get('augur_url') as string;\n this.tokenVersion = this.Gon.get('token_version') as string;\n\n if (this.Gon.get('ee_trial_key')) {\n this.setMailSubmittedStatus();\n }\n }\n\n // send POST request with form object\n // receive an enterprise trial link to access a token\n public sendForm(form:UntypedFormGroup):Promise {\n const request:unknown = { ...form.value, token_version: this.tokenVersion };\n return this.http\n .post(\n `${this.baseUrlAugur}/public/v1/trials`,\n request,\n {\n headers: {\n [EXTERNAL_REQUEST_HEADER]: 'true',\n },\n },\n )\n .toPromise()\n .then((enterpriseTrial:EnterpriseTrialHalResource) => {\n const trialLink = enterpriseTrial._links.self.href;\n const data = form.value as IEnterpriseData;\n\n this.store.update({\n trialLink,\n data,\n cancelled: false,\n });\n\n void this.saveTrialKey(trialLink);\n this.retryConfirmation();\n })\n .catch((error:HttpErrorResponse) => {\n // mail is invalid or user already created a trial\n if (error.status === 422 || error.status === 400) {\n this.store.update({ error });\n } else {\n const description = (error.error as { description?:string }).description;\n this.toastService.addWarning(description || I18n.t('js.error.internal'));\n }\n });\n }\n\n // get a token from the trial link if user confirmed mail\n public getToken():void {\n // 2) GET /public/v1/trials/:id\n this.http.get(\n this.store.getValue().trialLink as string,\n {\n headers: {\n [EXTERNAL_REQUEST_HEADER]: 'true',\n },\n },\n )\n .toPromise()\n .then(async (res:{ token_retrieved?:boolean, token:string }) => {\n // show confirmed status and enable continue btn\n this.store.update({ confirmed: true });\n\n // returns token if mail was confirmed\n // -> if token is new (token_retrieved: false) save token in backend\n if (!res.token_retrieved) {\n await this.saveToken(res.token);\n }\n })\n .catch((error:HttpErrorResponse) => {\n const errorResponse = error.error as EnterpriseTrialErrorHalResource;\n // returns error 422 while waiting of confirmation\n if (error.status === 422 && errorResponse.identifier === 'waiting_for_email_verification') {\n // get resend button link\n const resendLink = errorResponse._links.resend.href;\n this.store.update({ resendLink });\n\n const { status, cancelled } = this.store.getValue();\n\n // save a key for the requested trial\n if (!status || cancelled) { // only do it once\n void this.saveTrialKey(resendLink);\n }\n // open next modal window -> status waiting\n this.setMailSubmittedStatus();\n this.store.update({ confirmed: false });\n } else if (errorResponse?.message) {\n this.toastService.addError(errorResponse.message);\n } else {\n this.toastService.addError(error.error || I18n.t('js.error.internal'));\n }\n });\n }\n\n // save a part of the resend link in db\n // which allows to remember if a user has already requested a trial token\n // and to ask for the corresponding user data saved in Augur\n private saveTrialKey(resendlink:string):Promise {\n // extract token from resend link\n const trialKey = resendlink.split('/')[6];\n return this.http.post(\n `${this.pathHelper.appBasePath}/admin/enterprise/save_trial_key`,\n { trial_key: trialKey },\n { withCredentials: true },\n )\n .toPromise()\n .catch((e:HttpErrorResponse) => {\n const errorResponse = e.error as EnterpriseTrialErrorHalResource;\n this.toastService.addError(errorResponse.message || e.message || e);\n });\n }\n\n // save received token in controller\n private saveToken(token:string) {\n return this.http.post(\n `${this.pathHelper.appBasePath}/admin/enterprise`,\n { enterprise_token: { encoded_token: token } },\n { withCredentials: true },\n )\n .toPromise()\n .then(() => {\n const { modalOpen } = this.store.getValue();\n // load page if mail was confirmed and modal window is not open\n if (!modalOpen) {\n setTimeout(() => { // display confirmed status before reloading\n window.location.reload();\n }, 500);\n }\n })\n .catch((error:HttpErrorResponse) => {\n // Delete the trial key as the token could not be saved and thus something is wrong with the token.\n // Without this deletion, we run into an endless loop of an confirmed mail, but no saved token.\n void this.http\n .delete(\n `${this.pathHelper.api.v3.apiV3Base}/admin/enterprise/delete_trial_key`,\n { withCredentials: true },\n )\n .toPromise();\n\n const errorResponse = error.error as EnterpriseTrialErrorHalResource;\n this.toastService.addError(errorResponse.description || I18n.t('js.error.internal'));\n });\n }\n\n // retry request while waiting for mail confirmation\n public retryConfirmation(delay = 5000, retries = 60):void {\n const { cancelled, confirmed } = this.store.getValue();\n\n if (cancelled || confirmed) {\n // no need to retry\n return;\n }\n\n if (retries === 0) {\n this.store.update({ cancelled: true });\n } else {\n this.getToken();\n setTimeout(() => {\n this.retryConfirmation(delay, retries - 1);\n }, delay);\n }\n }\n\n public setStartTrialStatus():void {\n this.store.update({ status: 'startTrial' });\n }\n\n public setMailSubmittedStatus():void {\n this.store.update({ status: 'mailSubmitted' });\n }\n\n public get current():IEnterpriseTrial {\n return this.store.getValue();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, OnInit } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { EnterpriseTrialModalComponent } from 'core-app/features/enterprise/enterprise-modal/enterprise-trial.modal';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { EnterpriseTrialService } from 'core-app/features/enterprise/enterprise-trial.service';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { GonService } from 'core-app/core/gon/gon.service';\nimport { IEnterpriseData } from 'core-app/features/enterprise/enterprise-trial.model';\n\nexport interface EETrialKey {\n created:string;\n value:string;\n}\n\n@Component({\n selector: 'opce-free-trial-button',\n templateUrl: './free-trial-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FreeTrialButtonComponent implements OnInit {\n created = this.timezoneService.formattedDate(new Date().toString());\n\n email = '';\n\n public text = {\n button_trial: this.I18n.t('js.admin.enterprise.upsale.button_start_trial'),\n confirmation_info: (date:string, email:string):string => this.I18n.t('js.admin.enterprise.trial.confirmation_info', {\n date,\n email,\n }),\n };\n\n constructor(\n protected I18n:I18nService,\n protected opModalService:OpModalService,\n readonly injector:Injector,\n readonly http:HttpClient,\n readonly cdRef:ChangeDetectorRef,\n readonly Gon:GonService,\n public eeTrialService:EnterpriseTrialService,\n readonly timezoneService:TimezoneService,\n ) {\n }\n\n ngOnInit():void {\n this.eeTrialService\n .userData$\n .pipe(\n distinctUntilChanged(),\n )\n .subscribe((userForm:IEnterpriseData) => {\n this.email = userForm.email;\n this.cdRef.detectChanges();\n });\n\n this.initialize();\n }\n\n private initialize():void {\n const eeTrialKey = this.Gon.get('ee_trial_key') as EETrialKey;\n if (eeTrialKey) {\n const savedDateStr = eeTrialKey.created.split(' ')[0];\n this.created = this.timezoneService.formattedDate(savedDateStr);\n\n const { data } = this.eeTrialService.store.getValue();\n if (data) {\n // after reload: get data from Augur using the trial key saved in gon\n const trialLink = `${this.eeTrialService.baseUrlAugur}/public/v1/trials/${eeTrialKey.value}`;\n this.eeTrialService.store.update({ trialLink });\n this.getUserDataFromAugur(trialLink);\n }\n }\n }\n\n private getUserDataFromAugur(trialLink:string):void {\n this.http\n .get(`${trialLink}/details`)\n .toPromise()\n .then((data:IEnterpriseData) => {\n this.eeTrialService.store.update({ data });\n this.eeTrialService.retryConfirmation();\n })\n .catch(() => {\n // Check whether the mail has been confirmed by now\n this.eeTrialService.getToken();\n });\n }\n\n public openTrialModal():void {\n // cancel request and open first modal window\n this.eeTrialService.store.update({ cancelled: true, modalOpen: true });\n this.opModalService.show(EnterpriseTrialModalComponent, this.injector);\n }\n\n public get trialRequested():boolean {\n const eeTrialKey = this.Gon.get('ee_trial_key') as EETrialKey|undefined;\n return !!eeTrialKey;\n }\n}\n","\n \n {{ text.button_trial }}\n \n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { videoPath } from 'core-app/shared/helpers/videos/path-helper';\n\n@Component({\n selector: 'op-share-upsale',\n templateUrl: './share-upsale.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShareUpsaleComponent {\n video = videoPath('sharing/share-work-package.mp4');\n\n text = {\n title: this.I18n.t('js.work_packages.sharing.title'),\n description: this.I18n.t('js.work_packages.sharing.upsale.description'),\n };\n\n constructor(\n readonly I18n:I18nService,\n ) { }\n}\n","\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport {\n HTTPClientHeaders,\n HTTPSupportedMethods,\n} from 'core-app/features/hal/http/http.interfaces';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface HalLinkInterface {\n href:string|null;\n method:HTTPSupportedMethods;\n title?:string;\n templated?:boolean;\n payload?:any;\n type?:string;\n identifier?:string;\n}\n\nexport interface HalLinkSource {\n href:string|null;\n title:string;\n}\n\nexport interface CallableHalLink extends HalLinkInterface {\n $link:this;\n data?:Promise;\n}\n\nexport class HalLink implements HalLinkInterface {\n constructor(public requestMethod:(method:HTTPSupportedMethods, href:string, data:any, headers:any) => Promise,\n public href:string|null = null,\n public title:string = '',\n public method:HTTPSupportedMethods = 'get',\n public templated:boolean = false,\n public payload?:any,\n public type:string = 'application/json',\n public identifier?:string) {\n }\n\n /**\n * Create the HalLink from an object with the HalLinkInterface.\n */\n public static fromObject(halResourceService:HalResourceService, link:HalLinkInterface):HalLink {\n return new HalLink(\n (method:HTTPSupportedMethods, href:string, data:object, headers:HTTPClientHeaders) => firstValueFrom(halResourceService.request(method, href, data, headers)),\n link.href,\n link.title,\n link.method,\n link.templated,\n link.payload,\n link.type,\n link.identifier,\n );\n }\n\n /**\n * Fetch the resource.\n */\n public $fetch(...params:any[]):Promise {\n const [data, headers] = params;\n return this.requestMethod(this.method, this.href as string, data, headers);\n }\n\n /**\n * Prepare the templated link and return a CallableHalLink with the templated parameters set\n *\n * @returns {CallableHalLink}\n */\n public $prepare(templateValues:{ [templateKey:string]:string }) {\n if (!this.templated) {\n throw new Error(`The link ${this.href} is not templated.`);\n }\n\n let href = _.clone(this.href) || '';\n _.each(templateValues, (value:string, key:string) => {\n const regexp = new RegExp(`{${key}}`);\n href = href.replace(regexp, value);\n });\n\n return new HalLink(\n this.requestMethod,\n href,\n this.title,\n this.method,\n false,\n this.payload,\n this.type,\n this.identifier,\n ).$callable();\n }\n\n /**\n * Return a function that fetches the resource.\n *\n * @returns {CallableHalLink}\n */\n public $callable():CallableHalLink {\n const linkFunc:any = (...params:any[]) => this.$fetch(...params);\n\n _.extend(linkFunc, {\n $link: this,\n href: this.href,\n title: this.title,\n method: this.method,\n templated: this.templated,\n payload: this.payload,\n type: this.type,\n identifier: this.identifier,\n });\n\n return linkFunc;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport namespace OpenprojectHalModuleHelpers {\n export function lazy(obj:HalResource,\n property:string,\n getter:{ ():any },\n setter?:{ (value:any):void }):void {\n if (_.isObject(obj)) {\n let done = false;\n let value:any;\n const config:any = {\n get() {\n if (!done) {\n value = getter();\n done = true;\n }\n return value;\n },\n set: ():void => undefined,\n\n configurable: true,\n enumerable: true,\n };\n\n if (setter) {\n config.set = (val:any) => {\n value = setter(val);\n done = true;\n };\n }\n\n Object.defineProperty(obj, property, config);\n }\n }\n}\n","import * as ObservableArray from 'observable-array';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { HalLink } from 'core-app/features/hal/hal-link/hal-link';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { OpenprojectHalModuleHelpers } from 'core-app/features/hal/helpers/lazy-accessor';\n\ninterface HalSource {\n _links:any;\n _embedded:any;\n _type?:string;\n type?:any;\n}\n\nexport function cloneHalResourceCollection(values:T[]|undefined):T[] {\n if (_.isNil(values)) {\n return [];\n }\n return values.map((v) => v.$copy());\n}\n\nexport function cloneHalResource(value:T|undefined):T|undefined {\n if (_.isNil(value)) {\n return value;\n }\n return value.$copy();\n}\n\nexport function initializeHalProperties(halResourceService:HalResourceService, halResource:T) {\n setSource();\n setupLinks();\n setupEmbedded();\n proxyProperties();\n setLinksAsProperties();\n setEmbeddedAsProperties();\n\n function setSource() {\n if (!halResource.$source._links) {\n halResource.$source._links = {};\n }\n\n if (!halResource.$source._links.self) {\n halResource.$source._links.self = { href: null };\n }\n }\n\n function asHalResource(value?:HalSource, loaded = true):HalResource|HalSource|undefined|null {\n if (_.isNil(value)) {\n return value;\n }\n\n if (value._links || value._embedded || value._type) {\n return halResourceService.createHalResource(value, loaded);\n }\n\n return value;\n }\n\n function proxyProperties() {\n halResource.$embeddableKeys().forEach((property:any) => {\n Object.defineProperty(halResource, property, {\n get() {\n const value = halResource.$source[property];\n return asHalResource(value, true);\n },\n\n set(value) {\n halResource.$source[property] = value;\n },\n\n enumerable: true,\n configurable: true,\n });\n });\n }\n\n function setLinksAsProperties() {\n halResource.$linkableKeys().forEach((linkName:string) => {\n OpenprojectHalModuleHelpers.lazy(halResource, linkName,\n () => {\n const link:any = halResource.$links[linkName].$link || halResource.$links[linkName];\n\n if (Array.isArray(link)) {\n const items = link.map((item) => halResourceService.createLinkedResource(halResource,\n linkName,\n item.$link));\n var property:HalResource[] = new ObservableArray(...items).on('change', () => {\n property.forEach((item) => {\n if (!item.$link) {\n property.splice(property.indexOf(item), 1);\n }\n });\n\n halResource.$source._links[linkName] = property.map((item) => item.$link);\n });\n\n return property;\n }\n\n if (link.href) {\n if (link.method !== 'get') {\n return HalLink.fromObject(halResourceService, link).$callable();\n }\n\n return halResourceService.createLinkedResource(halResource, linkName, link);\n }\n\n return null;\n },\n (val:any) => setter(val, linkName));\n });\n }\n\n function setEmbeddedAsProperties() {\n if (!halResource.$source._embedded) {\n return;\n }\n\n Object.keys(halResource.$source._embedded).forEach((name) => {\n OpenprojectHalModuleHelpers.lazy(halResource,\n name,\n () => halResource.$embedded[name],\n (val:any) => setter(val, name));\n });\n }\n\n function setupProperty(name:string, callback:(element:any) => any) {\n const instanceName = `$${name}`;\n const sourceName = `_${name}`;\n const sourceObj:any = halResource.$source[sourceName];\n\n if (_.isObject(sourceObj)) {\n Object.keys(sourceObj).forEach((propName) => {\n OpenprojectHalModuleHelpers.lazy((halResource)[instanceName],\n propName,\n () => callback((sourceObj as any)[propName]));\n });\n }\n }\n\n function setupLinks() {\n setupProperty('links',\n (link) => {\n if (Array.isArray(link)) {\n return link.map((l) => HalLink.fromObject(halResourceService, l).$callable());\n }\n return HalLink.fromObject(halResourceService, link).$callable();\n });\n }\n\n function setupEmbedded() {\n setupProperty('embedded', (element:any) => {\n if (Array.isArray(element)) {\n return element.map((source) => asHalResource(source, true));\n }\n\n if (_.isObject(element)) {\n _.each(element, (child:any, name:string) => {\n if (child && (child._embedded || child._links)) {\n OpenprojectHalModuleHelpers.lazy(element as any,\n name,\n () => asHalResource(child, true));\n }\n });\n }\n\n return asHalResource(element, true);\n });\n }\n\n function setter(val:HalResource[]|HalResource|{ href?:string }, linkName:string) {\n const isArray = Array.isArray(val);\n\n if (!val) {\n halResource.$source._links[linkName] = { href: null };\n } else if (isArray) {\n halResource.$source._links[linkName] = (val as HalResource[]).map((el:any) => ({ href: el.href }));\n } else if (val.hasOwnProperty('$link')) {\n const link = (val as HalResource).$link;\n\n if (link.href) {\n halResource.$source._links[linkName] = link;\n }\n } else if ('href' in val) {\n halResource.$source._links[linkName] = { href: val.href };\n }\n\n if (halResource.$embedded && halResource.$embedded[linkName]) {\n halResource.$embedded[linkName] = val;\n\n if (isArray) {\n halResource.$source._embedded[linkName] = (val as HalResource[]).map((el) => el.$source);\n } else {\n halResource.$source._embedded[linkName] = _.get(val, '$source', val);\n }\n }\n\n return val;\n }\n}\n","export default function idFromLink(href:string|null):string {\n const idPart = (href || '').split('/').pop()!.split('?')[0];\n return decodeURIComponent(idPart);\n}\n","export const HAL_NEW_RESOURCE_ID = 'new';\n\nexport default function isNewResource(resource:{ id:string|null }):boolean {\n return !resource.id || resource.id === HAL_NEW_RESOURCE_ID;\n}\n","export default function isPersistedResource(resource:{ id:string|null }):boolean {\n return !!(resource.id && resource.id !== 'new');\n}\n","import {\n HttpEvent, HttpHandler, HttpInterceptor, HttpRequest,\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\nexport const EXTERNAL_REQUEST_HEADER = 'X-External-Request';\n\n@Injectable()\nexport class OpenProjectHeaderInterceptor implements HttpInterceptor {\n intercept(req:HttpRequest, next:HttpHandler):Observable> {\n const withCredentials = req.headers.get(EXTERNAL_REQUEST_HEADER) !== 'true';\n\n if (withCredentials) {\n return this.handleAuthenticatedRequest(req, next);\n } else {\n return this.handleExternalRequest(req, next);\n }\n }\n\n private handleExternalRequest(req:HttpRequest, next:HttpHandler):Observable> {\n // Clone the request to add the new header\n const clonedRequest = req.clone({\n withCredentials: false,\n headers: req.headers.delete(EXTERNAL_REQUEST_HEADER),\n });\n\n return next.handle(clonedRequest);\n }\n\n private handleAuthenticatedRequest(req:HttpRequest, next:HttpHandler):Observable> {\n const csrf_token:string|undefined = jQuery('meta[name=csrf-token]').attr('content');\n\n let newHeaders = req.headers\n .set('X-Authentication-Scheme', 'Session')\n .set('X-Requested-With', 'XMLHttpRequest');\n\n if (csrf_token) {\n newHeaders = newHeaders.set('X-CSRF-TOKEN', csrf_token);\n }\n\n // Clone the request to add the new header\n const clonedRequest = req.clone({\n withCredentials: true,\n headers: newHeaders,\n });\n\n // Pass the cloned request instead of the original request to the next handle\n return next.handle(clonedRequest);\n }\n}\n","import {\n ErrorHandler,\n Injectable,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ErrorResource } from 'core-app/features/hal/resources/error-resource';\nimport { HalError } from 'core-app/features/hal/services/hal-error';\nimport { HttpErrorResponse } from '@angular/common/http';\n\ninterface RejectedPromise {\n rejection:unknown;\n}\n\n@Injectable()\nexport class HalAwareErrorHandler extends ErrorHandler {\n private text = {\n internal_error: this.I18n.t('js.error.internal'),\n };\n\n constructor(private readonly I18n:I18nService) {\n super();\n }\n\n public handleError(error:unknown):void {\n let message:string = this.text.internal_error;\n\n // Angular wraps our errors into uncaught promises if\n // no one catches the error explicitly. Unwrap the error in that case\n if ((error as RejectedPromise)?.rejection instanceof HalError) {\n this.handleError((error as RejectedPromise).rejection);\n return;\n }\n\n if (error instanceof HalError) {\n console.error('Returned HTTP HAL error resource %O', error.message);\n message = error.httpError?.status >= 500 ? `${message} ${error.message}` : error.message;\n HalAwareErrorHandler.captureError(error.httpError);\n } else if (error instanceof ErrorResource) {\n console.error('Returned error resource %O', error);\n message += ` ${error.errorMessages.join('\\n')}`;\n } else if (error instanceof HalResource) {\n console.error('Returned hal resource %O', error);\n message += `Resource returned ${error.name}`;\n } else if (error instanceof Error) {\n window.ErrorReporter.captureException(error);\n } else if (error instanceof HttpErrorResponse) {\n HalAwareErrorHandler.captureError(error);\n message = error.message;\n } else if (typeof error === 'string') {\n window.ErrorReporter.captureMessage(error);\n message = error;\n }\n\n super.handleError(message);\n }\n\n /**\n * Report any errors to APM tool, if configured.\n *\n * The Application Performance Monitoring tool will filter according to their\n * error status.\n *\n * @param error\n * @private\n */\n private static captureError(error:Error|HttpErrorResponse):void {\n window.ErrorReporter.captureException(error);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { Attachable } from 'core-app/features/hal/resources/mixins/attachable-mixin';\n\nexport interface WikiPageResourceLinks {\n addAttachment(attachment:HalResource):Promise;\n}\n\nclass WikiPageBaseResource extends HalResource {\n public $links:WikiPageResourceLinks;\n}\n\nexport const WikiPageResource = Attachable(WikiPageBaseResource);\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { Attachable } from 'core-app/features/hal/resources/mixins/attachable-mixin';\n\nexport interface MeetingContentResourceLinks {\n addAttachment(attachment:HalResource):Promise;\n}\n\nclass MeetingContentBaseResource extends HalResource {\n public $links:MeetingContentResourceLinks;\n\n private attachmentsBackend = false;\n}\n\nexport const MeetingContentResource = Attachable(MeetingContentBaseResource);\n\nexport type MeetingContentResource = HalResource;\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { Attachable } from 'core-app/features/hal/resources/mixins/attachable-mixin';\n\nexport interface PostResourceLinks {\n addAttachment(attachment:HalResource):Promise;\n}\n\nclass PostBaseResource extends HalResource {\n public $links:PostResourceLinks;\n\n private attachmentsBackend = false;\n}\n\nexport const PostResource = Attachable(PostBaseResource);\n\nexport type PostResource = PostResourceLinks;\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { InputState } from '@openproject/reactivestates';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport Formattable = api.v3.Formattable;\n\nexport class TimeEntryResource extends HalResource {\n project:ProjectResource;\n\n activity:HalResource|null;\n\n comment:Formattable;\n\n workPackage:WorkPackageResource;\n\n spentOn:string;\n\n ongoing:boolean;\n\n public get state():InputState {\n return this.states.timeEntries.get(this.id as string) as unknown as InputState;\n }\n\n /**\n * Exclude the schema _link from the linkable Resources.\n */\n public $linkableKeys():string[] {\n return _.without(super.$linkableKeys(), 'schema');\n }\n}\n\nexport interface TimeEntryResource {\n delete():Promise;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class NewsResource extends HalResource {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { RoleResource } from 'core-app/features/hal/resources/role-resource';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport Formattable = api.v3.Formattable;\n\nexport interface MembershipResourceLinks {\n update(payload:unknown):Promise;\n updateImmediately(payload:unknown):Promise;\n delete():Promise;\n}\n\nexport interface MembershipResourceEmbedded {\n principal:HalResource;\n roles:RoleResource[];\n project:ProjectResource;\n notificationMessage:Formattable;\n}\n\nexport class MembershipResource extends HalResource {\n}\n\nexport interface MembershipResource extends MembershipResourceLinks, MembershipResourceEmbedded {}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class GroupResource extends HalResource {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\n\nexport class RootResource extends HalResource {\n public user:UserResource;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { InputState } from '@openproject/reactivestates';\n\nexport class TypeResource extends HalResource {\n public color:string;\n\n public get state():InputState {\n return this.states.types.get(this.href as string) as any;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\nexport class QueryOperatorResource extends HalResource {\n public get id():string {\n return this.$source.id || idFromLink(this.href);\n }\n\n public set id(val:string) {\n this.$source.id = val;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ErrorResource, v3ErrorIdentifierMultipleErrors } from 'core-app/features/hal/resources/error-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\n\nexport interface FormResourceLinks {\n commit(payload:any):Promise;\n}\n\nexport interface FormResourceEmbedded {\n schema:SchemaResource;\n validationErrors:{ [attribute:string]:ErrorResource };\n}\n\nexport class FormResource extends HalResource {\n public schema:SchemaResource;\n\n public validationErrors:{ [attribute:string]:ErrorResource };\n\n public getErrors():ErrorResource|null {\n const errors = _.values(this.validationErrors);\n const count = errors.length;\n\n if (count === 0) {\n return null;\n }\n\n let resource;\n if (count === 1) {\n resource = new ErrorResource(this.injector, errors[0], true, this.halInitializer, 'Error');\n } else {\n resource = new ErrorResource(this.injector, {}, true, this.halInitializer, 'Error');\n resource.errorIdentifier = v3ErrorIdentifierMultipleErrors;\n resource.errors = errors;\n }\n resource.isValidationError = true;\n return resource;\n }\n}\n\nexport interface FormResource extends FormResourceEmbedded, FormResourceLinks {}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { Attachable } from 'core-app/features/hal/resources/mixins/attachable-mixin';\nimport { CallableHalLink } from 'core-app/features/hal/hal-link/hal-link';\n\nexport class HelpTextBaseResource extends HalResource {\n public attribute:string;\n\n public attributeCaption:string;\n\n public scope:string;\n\n public helpText:api.v3.Formattable;\n}\n\nexport const HelpTextResource = Attachable(HelpTextBaseResource);\n\nexport interface HelpTextResource extends HelpTextBaseResource {\n editText?:CallableHalLink;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class SchemaDependencyResource extends HalResource {\n public dependencies:any;\n\n public forValue(value:string):any {\n return this.dependencies[value];\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { HalLink } from 'core-app/features/hal/hal-link/hal-link';\nimport { QueryOperatorResource } from 'core-app/features/hal/resources/query-operator-resource';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\nimport { SchemaDependencyResource } from 'core-app/features/hal/resources/schema-dependency-resource';\nimport { SchemaAttributeObject } from 'core-app/features/hal/resources/schema-attribute-object';\n\nexport interface QueryFilterInstanceSchemaResourceLinks {\n self:HalLink;\n filter:QueryFilterResource;\n}\n\nexport class QueryFilterInstanceSchemaResource extends SchemaResource {\n public $links:QueryFilterInstanceSchemaResourceLinks;\n\n public operator:SchemaAttributeObject;\n\n public filter:SchemaAttributeObject;\n\n public dependency:SchemaDependencyResource;\n\n public values:SchemaAttributeObject|null;\n\n public type = 'QueryFilterInstanceSchema';\n\n public get availableOperators():HalResource[] | CollectionResource {\n return this.operator.allowedValues;\n }\n\n public get allowedFilterValue():QueryFilterResource {\n if (this.filter.allowedValues instanceof CollectionResource) {\n return this.filter.allowedValues.elements[0];\n }\n\n return this.filter.allowedValues[0];\n }\n\n public $initialize(source:any) {\n super.$initialize(source);\n\n if (source._dependencies) {\n this.dependency = new SchemaDependencyResource(this.injector, source._dependencies[0], true, this.halInitializer, 'SchemaDependency');\n }\n }\n\n public getFilter():QueryFilterInstanceResource {\n const operator = (this.operator.allowedValues as HalResource[])[0];\n const filter = (this.filter.allowedValues as HalResource[])[0];\n const source:any = {\n name: filter.name,\n _links: {\n filter: filter.$source._links.self,\n schema: this.$source._links.self,\n operator: operator.$source._links.self,\n },\n };\n\n if (this.definesAllowedValues()) {\n source._links.values = [];\n } else {\n source.values = [];\n }\n\n return new QueryFilterInstanceResource(this.injector, source, true, this.halInitializer, 'QueryFilterInstance');\n }\n\n public isValueRequired():boolean {\n return !!(this.values);\n }\n\n public isResourceValue():boolean {\n return !!(this.values && this.values.allowedValues);\n }\n\n public loadedAllowedValues():boolean {\n return Array.isArray(this.values?.allowedValues);\n }\n\n public resultingSchema(operator:QueryOperatorResource):QueryFilterInstanceSchemaResource {\n const staticSchema = this.$source;\n const dependentSchema = this.dependency.forValue(operator.href!.toString());\n const resultingSchema = {};\n\n _.merge(resultingSchema, staticSchema, dependentSchema);\n\n return new QueryFilterInstanceSchemaResource(this.injector, resultingSchema, true, this.halInitializer, 'QueryFilterInstanceSchema');\n }\n\n private definesAllowedValues() {\n return _.some(this._dependencies[0].dependencies,\n (dependency:any) => dependency.values && dependency.values._links && dependency.values._links.allowedValues);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\n\nexport interface WorkPackageCollectionResourceEmbedded {\n elements:WorkPackageResource[];\n groups:GroupObject[];\n}\n\nexport class WorkPackageCollectionResource extends CollectionResource {\n public schemas:CollectionResource;\n\n public createWorkPackage:any;\n\n public elements:WorkPackageResource[];\n\n public groups:GroupObject[];\n\n public totalSums?:{ [key:string]:number };\n\n public sumsSchema?:SchemaResource;\n\n public representations:Array;\n}\n\nexport interface WorkPackageCollectionResource extends WorkPackageCollectionResourceEmbedded {}\n\n/**\n * A reference to a group object as returned from the API.\n * Augmented with state information such as collapsed state.\n */\nexport interface GroupObject {\n value:any;\n count:number;\n collapsed?:boolean;\n index:number;\n identifier:string;\n sums:{ [attribute:string]:number|null };\n href:{ href:string }[];\n _links:{\n valueLink:{ href:string }[];\n groupBy:{ href:string };\n };\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { Attachable } from 'core-app/features/hal/resources/mixins/attachable-mixin';\n\ninterface MeetingResourceLinks {\n addAttachment(attachment:HalResource):Promise;\n}\n\nclass MeetingBaseResource extends HalResource {\n title:string;\n project:HalResource;\n public $links:MeetingResourceLinks;\n}\n\nexport const MeetingResource = Attachable(MeetingBaseResource);\n\nexport interface MeetingResource extends MeetingBaseResource, MeetingResourceLinks {}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { CustomActionResource } from 'core-app/features/hal/resources/custom-action-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { WikiPageResource } from 'core-app/features/hal/resources/wiki-page-resource';\nimport { MeetingContentResource } from 'core-app/features/hal/resources/meeting-content-resource';\nimport { PostResource } from 'core-app/features/hal/resources/post-resource';\nimport { StatusResource } from 'core-app/features/hal/resources/status-resource';\nimport { AttachmentCollectionResource } from 'core-app/features/hal/resources/attachment-collection-resource';\nimport { GridWidgetResource } from 'core-app/features/hal/resources/grid-widget-resource';\nimport { GridResource } from 'core-app/features/hal/resources/grid-resource';\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { NewsResource } from 'core-app/features/hal/resources/news-resource';\nimport { VersionResource } from 'core-app/features/hal/resources/version-resource';\nimport { MembershipResource } from 'core-app/features/hal/resources/membership-resource';\nimport { RoleResource } from 'core-app/features/hal/resources/role-resource';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { GroupResource } from 'core-app/features/hal/resources/group-resource';\nimport { RootResource } from 'core-app/features/hal/resources/root-resource';\nimport { TypeResource } from 'core-app/features/hal/resources/type-resource';\nimport { QueryOperatorResource } from 'core-app/features/hal/resources/query-operator-resource';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { FormResource } from 'core-app/features/hal/resources/form-resource';\nimport { HelpTextResource } from 'core-app/features/hal/resources/help-text-resource';\nimport {\n HalResourceFactoryConfigInterface,\n HalResourceService,\n} from 'core-app/features/hal/services/hal-resource.service';\nimport {\n QueryFilterInstanceSchemaResource,\n} from 'core-app/features/hal/resources/query-filter-instance-schema-resource';\nimport { ErrorResource } from 'core-app/features/hal/resources/error-resource';\nimport { SchemaDependencyResource } from 'core-app/features/hal/resources/schema-dependency-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { MeetingResource } from 'core-app/features/hal/resources/meeting-resource';\n\nconst halResourceDefaultConfig:{ [typeName:string]:HalResourceFactoryConfigInterface } = {\n WorkPackage: {\n cls: WorkPackageResource,\n attrTypes: {\n parent: 'WorkPackage',\n ancestors: 'WorkPackage',\n children: 'WorkPackage',\n relations: 'Relation',\n schema: 'Schema',\n status: 'Status',\n type: 'Type',\n },\n },\n Activity: {\n cls: HalResource,\n attrTypes: {\n user: 'User',\n },\n },\n 'Activity::Comment': {\n cls: HalResource,\n attrTypes: {\n user: 'User',\n },\n },\n 'Activity::Revision': {\n cls: HalResource,\n attrTypes: {\n user: 'User',\n },\n },\n Relation: {\n cls: RelationResource,\n attrTypes: {\n from: 'WorkPackage',\n to: 'WorkPackage',\n },\n },\n Schema: {\n cls: SchemaResource,\n },\n Type: {\n cls: TypeResource,\n },\n Status: {\n cls: StatusResource,\n },\n SchemaDependency: {\n cls: SchemaDependencyResource,\n },\n Error: {\n cls: ErrorResource,\n },\n User: {\n cls: UserResource,\n },\n Group: {\n cls: GroupResource,\n },\n Collection: {\n cls: CollectionResource,\n },\n WorkPackageCollection: {\n cls: WorkPackageCollectionResource,\n },\n AttachmentCollection: {\n cls: AttachmentCollectionResource,\n },\n Query: {\n cls: QueryResource,\n attrTypes: {\n filters: 'QueryFilterInstance',\n },\n },\n Form: {\n cls: FormResource,\n attrTypes: {\n payload: 'FormPayload',\n },\n },\n FormPayload: {\n cls: HalResource,\n attrTypes: {\n attachments: 'AttachmentsCollection',\n },\n },\n QueryFilterInstance: {\n cls: QueryFilterInstanceResource,\n attrTypes: {\n schema: 'QueryFilterInstanceSchema',\n filter: 'QueryFilter',\n operator: 'QueryOperator',\n },\n },\n QueryFilterInstanceSchema: {\n cls: QueryFilterInstanceSchemaResource,\n },\n QueryFilter: {\n cls: QueryFilterResource,\n },\n Root: {\n cls: RootResource,\n },\n QueryOperator: {\n cls: QueryOperatorResource,\n },\n HelpText: {\n cls: HelpTextResource,\n },\n CustomAction: {\n cls: CustomActionResource,\n },\n WikiPage: {\n cls: WikiPageResource,\n },\n Meeting: {\n cls: MeetingResource,\n },\n MeetingContent: {\n cls: MeetingContentResource,\n },\n Post: {\n cls: PostResource,\n },\n Project: {\n cls: ProjectResource,\n },\n Role: {\n cls: RoleResource,\n },\n Grid: {\n cls: GridResource,\n },\n GridWidget: {\n cls: GridWidgetResource,\n },\n TimeEntry: {\n cls: TimeEntryResource,\n },\n Membership: {\n cls: MembershipResource,\n },\n News: {\n cls: NewsResource,\n },\n Version: {\n cls: VersionResource,\n },\n};\n\nexport function initializeHalResourceConfig(halResourceService:HalResourceService) {\n return () => {\n _.each(halResourceDefaultConfig, (value, key) => halResourceService.registerResource(key, value));\n };\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n APP_INITIALIZER,\n ErrorHandler,\n NgModule,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HalAwareErrorHandler } from 'core-app/features/hal/services/hal-aware-error-handler';\nimport { initializeHalResourceConfig } from 'core-app/features/hal/services/hal-resource.config';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n providers: [\n { provide: ErrorHandler, useClass: HalAwareErrorHandler },\n {\n provide: APP_INITIALIZER, useFactory: initializeHalResourceConfig, deps: [HalResourceService], multi: true,\n },\n HalResourceNotificationService,\n ],\n})\nexport class OpenprojectHalModule { }\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\nexport class AttachmentCollectionResource extends CollectionResource {\n public $initialize(source:any) {\n super.$initialize(source);\n\n this.elements = this.elements || [];\n }\n}\n\nexport interface AttachmentCollectionResource {\n elements:HalResource[];\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class CollectionResource extends HalResource {\n public elements:T[];\n\n public count:number;\n\n public total:number;\n\n public pageSize:number;\n\n public offset:number;\n\n /**\n * Update the collection's elements and return them in a promise.\n * This is useful, as angular does not recognize update made by $load.\n */\n public updateElements():Promise {\n if (this.href) {\n return this.$load().then((collection:this) => this.elements = collection.elements);\n }\n return Promise.resolve();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport interface CustomActionResourceLinks {\n self():Promise;\n executeImmediately(payload:any):Promise;\n}\n\nexport interface CustomActionResourceEmbedded {\n description:string;\n}\n\nexport class CustomActionResource extends HalResource {\n}\n\nexport interface CustomActionResource extends CustomActionResourceLinks, CustomActionResourceEmbedded {}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nexport const v3ErrorIdentifierQueryInvalid = 'urn:openproject-org:api:v3:errors:InvalidQuery';\nexport const v3ErrorIdentifierMultipleErrors = 'urn:openproject-org:api:v3:errors:MultipleErrors';\nexport const v3ErrorIdentifierOutboundRequestForbidden = 'urn:openproject-org:api:v3:errors:OutboundRequest:Forbidden';\nexport const v3ErrorIdentifierMissingEnterpriseToken = 'urn:openproject-org:api:v3:errors:MissingEnterpriseToken';\n\nexport interface IHalErrorBase {\n _type:string;\n message:string;\n errorIdentifier:string;\n}\n\nexport function isHalError(err:unknown):err is IHalErrorBase {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n const hasOwn = (key:string):boolean => Object.prototype.hasOwnProperty.call(err, key);\n return !!err && hasOwn('_type') && hasOwn('message') && hasOwn('errorIdentifier');\n}\n\nexport interface IHalSingleError extends IHalErrorBase {\n _embedded:{\n details:{\n attribute:string;\n }\n }\n}\n\nexport interface IHalMultipleError extends IHalErrorBase {\n _embedded:{\n errors:IHalSingleError[];\n }\n}\n\nexport class ErrorResource extends HalResource {\n public errors:any[];\n\n public message:string;\n\n public details:any;\n\n public errorIdentifier:string;\n\n /** We may get a reference to the underlying http error */\n public httpError?:HttpErrorResponse;\n\n public isValidationError = false;\n\n /**\n * Override toString to ensure the resource can\n * be printed nicely on console and in errors\n */\n public toString():string {\n return `[ErrorResource ${this.message}]`;\n }\n\n public get errorMessages():string[] {\n if (this.isMultiErrorMessage()) {\n return this.errors.map((error) => error.message);\n }\n\n return [this.message];\n }\n\n public isMultiErrorMessage():boolean {\n return this.errorIdentifier === v3ErrorIdentifierMultipleErrors;\n }\n\n public getInvolvedAttributes():string[] {\n let columns = [];\n\n if (this.details) {\n columns = [{ details: this.details }];\n } else if (this.errors) {\n columns = this.errors;\n }\n\n return _.flatten(columns.map((resource:ErrorResource) => {\n if (resource.errorIdentifier === v3ErrorIdentifierMultipleErrors) {\n return this.extractMultiError(resource)[0];\n }\n return resource.details.attribute;\n }));\n }\n\n public getMessagesPerAttribute():{ [attribute:string]:string[] } {\n const perAttribute:any = {};\n\n if (this.details) {\n perAttribute[this.details.attribute] = [this.message];\n } else {\n _.forEach(this.errors, (error:any) => {\n if (error.errorIdentifier === v3ErrorIdentifierMultipleErrors) {\n const [attribute, messages] = this.extractMultiError(error);\n const current = perAttribute[attribute] || [];\n perAttribute[attribute] = current.concat(messages);\n } else if (perAttribute[error.details.attribute]) {\n perAttribute[error.details.attribute].push(error.message);\n } else {\n perAttribute[error.details.attribute] = [error.message];\n }\n });\n }\n\n return perAttribute;\n }\n\n protected extractMultiError(resource:ErrorResource):[string, string[]] {\n const { attribute } = resource.errors[0].details;\n const messages = resource.errors.map((el:ErrorResource) => el.message);\n\n return [attribute, messages];\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { GridWidgetResource } from 'core-app/features/hal/resources/grid-widget-resource';\nimport { Attachable } from 'core-app/features/hal/resources/mixins/attachable-mixin';\n\nexport interface GridResourceLinks {\n update(payload:unknown):Promise;\n updateImmediately(payload:unknown):Promise;\n delete():Promise;\n}\n\nexport class GridBaseResource extends HalResource {\n public widgets:GridWidgetResource[];\n\n public options:{ [key:string]:unknown };\n\n public rowCount:number;\n\n public columnCount:number;\n\n public $initialize(source:any) {\n super.$initialize(source);\n\n this.widgets = this\n .widgets\n .map((widget:Object) => {\n const widgetResource = new GridWidgetResource(this.injector,\n widget,\n true,\n this.halInitializer,\n 'GridWidget');\n\n widgetResource.grid = this;\n\n return widgetResource;\n });\n }\n\n readonly attachmentsBackend = true;\n\n public async updateAttachments():Promise {\n return this.attachments.$update().then(() => {\n this.states.forResource(this)!.putValue(this);\n return this.attachments;\n });\n }\n}\n\nexport const GridResource = Attachable(GridBaseResource);\n\nexport interface GridResource extends Partial, GridBaseResource {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { GridResource } from 'core-app/features/hal/resources/grid-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\n\nexport class GridWidgetResource extends HalResource {\n @InjectField() protected halResource:HalResourceService;\n\n public identifier:string;\n\n public startRow:number;\n\n public endRow:number;\n\n public startColumn:number;\n\n public endColumn:number;\n\n public options:{ [key:string]:unknown };\n\n public get height() {\n return this.endRow - this.startRow;\n }\n\n public get width() {\n return this.endColumn - this.startColumn;\n }\n\n public grid:GridResource;\n\n public get schema():SchemaResource {\n return this.halResource.createHalResource({ _type: 'Schema' }, true);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { InputState } from '@openproject/reactivestates';\nimport { Injector } from '@angular/core';\nimport { States } from 'core-app/core/states/states.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { HalLinkInterface } from 'core-app/features/hal/hal-link/hal-link';\nimport { ICKEditorContext } from 'core-app/shared/components/editor/components/ckeditor/ckeditor.types';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\n\nexport interface HalResourceClass {\n new(injector:Injector,\n source:any,\n $loaded:boolean,\n halInitializer:(halResource:T) => void,\n $halType:string):T;\n}\n\nexport type HalSourceLink = { href:string|null, title?:string };\n\nexport type HalSourceLinks = {\n [key:string]:HalSourceLink\n};\n\nexport type HalSource = {\n [key:string]:string|number|boolean|null|HalSourceLinks,\n _links:HalSourceLinks\n};\n\nexport class HalResource {\n // TODO this is the source of many issues in the frontend\n // because it no longer properly type checks stuff\n // Since 2019-10-21 I'm documenting what bugs this caused:\n // https://community.openproject.com/wp/31462\n [attribute:string]:any;\n\n // The API type reported from API\n public _type:string;\n\n // Internal initialization time for objects\n // created in the frontend\n public __initialized_at:number;\n\n // The HalResource that this type maps to\n // This will almost always be equal to _type, however may be different for dynamic types\n // e.g., { _type: 'StatusFilterInstance', $halType: 'QueryFilterInstance' }.\n //\n // This is required for attributes to be correctly mapped according to their configuration.\n public $halType:string;\n\n @InjectField() states:States;\n\n @InjectField() I18n!:I18nService;\n\n /**\n * Constructs and initializes the HalResource. For this, the halResoureFactory is required.\n *\n * However, We can't inject the HalResourceFactory here because it itself depends on this class.\n * So if you need to initialize a HalResource, use +HalResourceFactory.createHalResource+ instead.\n *\n * @param {Injector} injector\n * @param $halType The HalResource type that this instance maps to\n * @param $source\n * @param {boolean} $loaded\n * @param {Function} initializer The initializer callback to HAL-transform all linked and embedded resources.\n *\n */\n public constructor(\n public injector:Injector,\n public $source:any,\n public $loaded:boolean,\n public halInitializer:(halResource:any) => void,\n $halType:string,\n ) {\n this.$halType = $halType;\n this.$initialize($source);\n }\n\n public static getEmptyResource(self:{ href:string|null } = { href: null }):any {\n return { _links: { self } };\n }\n\n public $links:any = {};\n\n public $embedded:any = {};\n\n public $self:Promise;\n\n public _name:string;\n\n public static matchFromLink(href:string, expectedResource:string):string|null {\n const match = new RegExp(`/api/v3/${expectedResource}/(\\\\d+)`).exec(href);\n return match && match[1];\n }\n\n public $initialize(source:any) {\n this.$source = source.$source || source;\n this.halInitializer(this);\n }\n\n /**\n * Override toString to ensure the resource can\n * be printed nicely on console and in errors\n */\n public toString() {\n if (this.href) {\n return `[HalResource href=${this.href}]`;\n }\n return `[HalResource id=${this.id}]`;\n }\n\n /**\n * Returns the ID and ensures it's a string, null.\n * Returns a string when:\n * - The embedded ID is actually set\n * - The self link is terminated by a number.\n */\n public get id():string|null {\n if (this.$source.id) {\n return this.$source.id.toString();\n }\n\n const id = idFromLink(this.href);\n if (/^\\d+$/.exec(id)) {\n return id;\n }\n\n return null;\n }\n\n public set id(val:string|null) {\n this.$source.id = val;\n }\n\n /**\n * Retain the internal tracking identifier from the given other work package.\n * This is due to us needing to identify a work package beyond its actual ID,\n * because that changes upon saving.\n *\n * @param other\n */\n public retainFrom(other:HalResource) {\n this.__initialized_at = other.__initialized_at;\n }\n\n /**\n * Create a HalResource from the copied source of the given, other HalResource.\n *\n * @param {HalResource} other\n * @returns A HalResource with the identitical copied source of other.\n */\n public $copy(source:Object = {}):T {\n const clone:HalResourceClass = this.constructor as any;\n\n return new clone(this.injector, _.merge(this.$plain(), source), this.$loaded, this.halInitializer, this.$halType);\n }\n\n public $plain():any {\n return _.cloneDeep(this.$source);\n }\n\n public get $isHal():boolean {\n return true;\n }\n\n public get $link():HalLinkInterface {\n return this.$links.self.$link;\n }\n\n public get name():string {\n return this._name || this.$link.title || '';\n }\n\n public set name(name:string) {\n this._name = name;\n }\n\n public get href():string|null {\n return this.$link.href;\n }\n\n /**\n * Return the associated state to this HAL resource, if any.\n */\n public get state():InputState|null {\n return null;\n }\n\n /**\n * Update the state\n */\n public push(newValue:this):Promise {\n if (this.state) {\n this.state.putValue(newValue);\n }\n\n return Promise.resolve();\n }\n\n public previewPath():string|undefined {\n if (isNewResource(this) && this.project) {\n return this.project.href;\n }\n\n return undefined;\n }\n\n public getEditorContext(fieldName:string):ICKEditorContext {\n return { type: 'constrained' };\n }\n\n public $load(force = false):Promise {\n if (!this.state) {\n return this.$loadResource(force);\n }\n\n const { state } = this;\n\n if (force) {\n state.clear();\n }\n\n // If nobody has asked yet for the resource to be $loaded, do it ourselves.\n // Otherwise, we risk returning a promise, that will never be resolved.\n state.putFromPromiseIfPristine(() => this.$loadResource(force));\n\n return >state.valuesPromise().then((source:any) => {\n this.$initialize(source);\n this.$loaded = true;\n return this;\n });\n }\n\n protected $loadResource(force = false):Promise {\n if (!force) {\n if (this.$loaded) {\n return Promise.resolve(this);\n }\n\n if (!this.$loaded && this.$self) {\n return this.$self;\n }\n }\n\n // Reset and load this resource\n this.$loaded = false;\n this.$self = this.$links.self({}).then((source:any) => {\n this.$loaded = true;\n this.$initialize(source.$source);\n return this;\n });\n\n return this.$self;\n }\n\n /**\n * Update the resource ignoring the cache.\n */\n public $update() {\n return this.$load(true);\n }\n\n /**\n * Specify this resource's embedded keys that should be transformed with resources.\n * Use this to restrict, e.g., links that should not be made properties if you have a custom get/setter.\n */\n public $embeddableKeys():string[] {\n const properties = Object.keys(this.$source);\n return _.without(properties, '_links', '_embedded', 'id');\n }\n\n /**\n * Specify this resource's keys that should not be transformed with resources.\n * Use this to restrict, e.g., links that should not be made properties if you have a custom get/setter.\n */\n public $linkableKeys():string[] {\n const properties = Object.keys(this.$links);\n return _.without(properties, 'self');\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { AttachmentCollectionResource } from 'core-app/features/hal/resources/attachment-collection-resource';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\nimport { HalLink } from 'core-app/features/hal/hal-link/hal-link';\n\n// eslint-disable-next-line\ntype Constructor = new (...args:any[]) => T;\n\nexport function Attachable>(Base:TBase) {\n return class extends Base {\n public attachments:AttachmentCollectionResource;\n\n /**\n * Return whether the user is able to upload an attachment.\n *\n * If either the `addAttachment` link is provided or the resource is being created,\n * adding attachments is allowed.\n */\n public get canAddAttachments():boolean {\n return !!((this as HalResource).$links as unknown&{ addAttachment?:HalLink }).addAttachment || isNewResource(this);\n }\n\n /**\n * Try to find an existing file's download URL given its filename\n * @param file\n */\n public lookupDownloadLocationByName(file:string):string|null {\n if (!(this.attachments && this.attachments.elements)) {\n return null;\n }\n\n const match = this.attachments.elements.find((res:HalResource) => res.name === file);\n return !match ? null : (match.staticDownloadLocation as HalLink)?.href;\n }\n\n public $initialize(source:unknown) {\n super.$initialize(source);\n\n const attachments = this.attachments || { $source: {}, elements: [] };\n this.attachments = new AttachmentCollectionResource(\n this.injector,\n attachments,\n false,\n this.halInitializer,\n 'HalResource',\n );\n }\n };\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ICKEditorContext } from 'core-app/shared/components/editor/components/ckeditor/ckeditor.types';\n\nexport class ProjectResource extends HalResource {\n public get state() {\n return this.states.projects.get(this.id!) as any;\n }\n\n public getEditorContext(fieldName:string):ICKEditorContext {\n if (['statusExplanation', 'description'].indexOf(fieldName) !== -1) {\n return { type: 'full', macros: 'resource' };\n }\n\n return { type: 'constrained' };\n }\n\n /**\n * Exclude the schema _link from the linkable Resources.\n */\n public $linkableKeys():string[] {\n return _.without(super.$linkableKeys(), 'schema');\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { QueryOperatorResource } from 'core-app/features/hal/resources/query-operator-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { QueryFilterInstanceSchemaResource } from 'core-app/features/hal/resources/query-filter-instance-schema-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\n\nexport class QueryFilterInstanceResource extends HalResource {\n public filter:QueryFilterResource;\n\n public operator:QueryOperatorResource;\n\n public values:HalResource[]|string[];\n\n private memoizedCurrentSchemas:{ [key:string]:QueryFilterInstanceSchemaResource } = {};\n\n @InjectField(SchemaCacheService) schemaCache:SchemaCacheService;\n\n @InjectField(PathHelperService) pathHelper:PathHelperService;\n\n public $initialize(source:any) {\n super.$initialize(source);\n\n this.$links.schema = {\n href: `${this.pathHelper.api.v3.apiV3Base}/queries/filter_instance_schemas/${idFromLink(this.filter.href)}`,\n };\n }\n\n public get id():string {\n return this.filter.id;\n }\n\n public get name():string {\n return this.filter.name;\n }\n\n /**\n * Get the complete current schema.\n *\n * The filter instance's schema is made up of a static and a variable part.\n * The variable part depends on the currently selected operator.\n * Therefore, the schema differs based on the selected operator.\n */\n public get currentSchema():QueryFilterInstanceSchemaResource|null {\n if (!this.operator) {\n return null;\n }\n\n const key = this.operator.href!.toString();\n\n if (this.memoizedCurrentSchemas[key] === undefined) {\n try {\n this.memoizedCurrentSchemas[key] = this.schemaCache.of(this).resultingSchema(this.operator);\n } catch (e) {\n console.error(`Failed to access filter schema${e}`);\n }\n }\n\n return this.memoizedCurrentSchemas[key];\n }\n\n public isCompletelyDefined() {\n return this.values.length || (this.currentSchema && !this.currentSchema.isValueRequired());\n }\n\n public findOperator(operatorSymbol:string):QueryOperatorResource|undefined {\n return _.find(this.schemaCache.of(this).availableOperators, (operator:QueryOperatorResource) => operator.id === operatorSymbol) as QueryOperatorResource|undefined;\n }\n\n public isTemplated() {\n let flag = false;\n (this.values as any[]).find((value:any) => {\n const href:string = value?.href || value.toString() || '';\n flag = href.includes('{id}');\n });\n return flag;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { QueryFilterInstanceSchemaResource } from 'core-app/features/hal/resources/query-filter-instance-schema-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\nexport interface QueryFilterResourceEmbedded {\n schema:QueryFilterInstanceSchemaResource;\n}\n\nexport class QueryFilterResource extends HalResource {\n public $embedded:QueryFilterResourceEmbedded;\n\n public values:any[];\n\n public get id():string {\n return this.$source.id || idFromLink(this.href);\n }\n\n public set id(newId:string) {\n this.$source.id = newId;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { HighlightingMode } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting-mode.const';\nimport { QueryOrder } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-order';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { QuerySortByResource } from 'core-app/features/hal/resources/query-sort-by-resource';\nimport { QueryGroupByResource } from 'core-app/features/hal/resources/query-group-by-resource';\n\nexport interface QueryResourceEmbedded {\n results:WorkPackageCollectionResource;\n columns:QueryColumn[];\n groupBy:QueryGroupByResource|undefined;\n project:ProjectResource;\n user:UserResource;\n sortBy:QuerySortByResource[];\n filters:QueryFilterInstanceResource[];\n}\n\nexport type TimelineZoomLevel = 'days'|'weeks'|'months'|'quarters'|'years'|'auto';\n\nexport interface TimelineLabels {\n left:string|null;\n right:string|null;\n farRight:string|null;\n}\n\nexport class QueryResource extends HalResource {\n public $embedded:QueryResourceEmbedded;\n\n public results:WorkPackageCollectionResource;\n\n public columns:QueryColumn[];\n\n public groupBy:QueryGroupByResource|undefined;\n\n public sortBy:QuerySortByResource[];\n\n public setSortBy(newSortBy:QuerySortByResource[]):void {\n this.sortBy = newSortBy;\n }\n\n public filters:QueryFilterInstanceResource[];\n\n public starred:boolean;\n\n public sums:boolean;\n\n public hasError:boolean;\n\n public timelineVisible:boolean;\n\n public timelineZoomLevel:TimelineZoomLevel;\n\n public highlightingMode:HighlightingMode;\n\n public highlightedAttributes:HalResource[]|undefined;\n\n public displayRepresentation:string|undefined;\n\n public timelineLabels:TimelineLabels;\n\n public timestamps:string[];\n\n public showHierarchies:boolean;\n\n public public:boolean;\n\n public hidden:boolean;\n\n public user:UserResource;\n\n public project:ProjectResource;\n\n public includeSubprojects:boolean;\n\n public ordered_work_packages:QueryOrder;\n\n public $initialize(source:any) {\n super.$initialize(source);\n\n this.filters = this\n .filters\n .map((filter:unknown) => new QueryFilterInstanceResource(\n this.injector,\n filter,\n true,\n this.halInitializer,\n 'QueryFilterInstance',\n ));\n }\n}\n\nexport interface QueryResourceLinks {\n updateImmediately?(attributes:any):Promise;\n icalUrl(payload:unknown):Promise<{ icalUrl:{ href:string } }>;\n}\n\nexport interface QueryResource extends QueryResourceLinks {}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport const QUERY_SORT_BY_ASC = 'urn:openproject-org:api:v3:queries:directions:asc';\nexport const QUERY_SORT_BY_DESC = 'urn:openproject-org:api:v3:queries:directions:desc';\n\nexport interface QuerySortByResourceEmbedded {\n column:QueryColumn;\n direction:QuerySortByDirection;\n}\n\nexport class QuerySortByResource extends HalResource {\n public $embedded:QuerySortByResourceEmbedded;\n\n public column:QueryColumn;\n\n public direction:QuerySortByDirection;\n}\n\n/**\n * A direction for sorting\n */\nexport class QuerySortByDirection extends HalResource {\n public get id():string {\n return this.href!.split('/').pop()!;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\nexport interface RelationResourceLinks {\n delete():Promise;\n\n updateImmediately(payload:any):Promise;\n}\n\nexport class RelationResource extends HalResource {\n static RELATION_TYPES(includeParentChild = true):string[] {\n const types = [\n 'relates',\n 'duplicates',\n 'duplicated',\n 'blocks',\n 'blocked',\n 'precedes',\n 'follows',\n 'includes',\n 'partof',\n 'requires',\n 'required',\n ];\n\n if (includeParentChild) {\n types.push('parent', 'children');\n }\n\n return types;\n }\n\n static LOCALIZED_RELATION_TYPES(includeParentchild = true) {\n const relationTypes = RelationResource.RELATION_TYPES(includeParentchild);\n\n return relationTypes.map((key:string) => ({ name: key, label: I18n.t(`js.relation_labels.${key}`) }));\n }\n\n static DEFAULT() {\n return 'relates';\n }\n\n // Properties\n public description:string|null;\n\n public type:any;\n\n public reverseType:string;\n\n // Links\n public $links:RelationResourceLinks;\n\n public to:WorkPackageResource;\n\n public from:WorkPackageResource;\n\n public normalizedType(workPackage:WorkPackageResource) {\n return this.denormalized(workPackage).relationType;\n }\n\n /**\n * Return the denormalized relation data, seeing the relation.from to be `workPackage`.\n *\n * @param workPackage\n * @return {{id, href, relationType: string, workPackageType}}\n */\n public denormalized(workPackage:WorkPackageResource):DenormalizedRelationData {\n const target = (this.to.href === workPackage.href) ? 'from' : 'to';\n\n return {\n target: this[target],\n targetId: this[target].id!,\n relationType: target === 'from' ? this.reverseType : this.type,\n reverseRelationType: target === 'from' ? this.type : this.reverseType,\n };\n }\n\n /**\n * Return whether the given work package id is involved in this relation.\n * @param wpId\n * @return {boolean}\n */\n public isInvolved(wpId:string) {\n return _.values(this.ids).indexOf(wpId.toString()) >= 0;\n }\n\n /**\n * Get the involved IDs, returning an object to the ids.\n */\n public get ids() {\n return {\n from: idFromLink(this.from.href!),\n to: idFromLink(this.to.href!),\n };\n }\n\n public updateDescription(description:string) {\n return this.$links.updateImmediately({ description });\n }\n\n public updateType(type:any) {\n return this.$links.updateImmediately({ type });\n }\n}\n\nexport interface RelationResource extends RelationResourceLinks {}\n\nexport interface DenormalizedRelationData {\n target:WorkPackageResource;\n targetId:string;\n relationType:string;\n reverseRelationType:string;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class RoleResource extends HalResource {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { InputState } from '@openproject/reactivestates';\n\nexport class SchemaResource extends HalResource {\n public get state():InputState {\n return this.states.schemas.get(this.href as string) as any;\n }\n\n public get availableAttributes():string[] {\n return _.keys(this.$source).filter((name) => name.indexOf('_') !== 0);\n }\n\n // Find the attribute name with a matching (localized) name;\n public attributeFromLocalizedName(name:string):string|null {\n let match:string|null = null;\n\n for (const attribute of this.availableAttributes) {\n const fieldSchema = this[attribute];\n if (fieldSchema?.name === name) {\n match = attribute;\n break;\n }\n }\n\n return match;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { InputState } from '@openproject/reactivestates';\n\nexport class StatusResource extends HalResource {\n isClosed:boolean;\n\n isDefault:boolean;\n\n isReadonly:boolean;\n\n excludedFromTotals:boolean;\n\n public get state():InputState {\n return this.states.statuses.get(this.href as string) as any;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { InputState } from '@openproject/reactivestates';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class UserResource extends HalResource {\n // Properties\n public login:string;\n\n public firstName:string;\n\n public lastName:string;\n\n public email:string;\n\n public avatar:string;\n\n public status:string;\n\n // Links\n public lock:HalResource;\n\n public unlock:HalResource;\n\n public delete:HalResource;\n\n public showUser:HalResource;\n\n public static get active_user_statuses() {\n return ['active', 'registered'];\n }\n\n public get state():InputState {\n return this.states.users.get(this.href as string) as any;\n }\n\n public get showUserPath() {\n return this.showUser ? this.showUser.$link.href : null;\n }\n\n public get isActive() {\n return UserResource.active_user_statuses.indexOf(this.status) >= 0;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport class VersionResource extends HalResource {\n status:string;\n\n public definingProject:HalResource;\n\n public isLocked() {\n return this.status === 'locked';\n }\n\n public isOpen() {\n return this.status === 'open';\n }\n\n public isClosed() {\n return this.status === 'closed';\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { InputState } from '@openproject/reactivestates';\nimport {\n WorkPackagesActivityService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { AttachmentCollectionResource } from 'core-app/features/hal/resources/attachment-collection-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { TypeResource } from 'core-app/features/hal/resources/type-resource';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { StatusResource } from 'core-app/features/hal/resources/status-resource';\nimport { FormResource } from 'core-app/features/hal/resources/form-resource';\nimport { Attachable } from 'core-app/features/hal/resources/mixins/attachable-mixin';\nimport { ICKEditorContext } from 'core-app/shared/components/editor/components/ckeditor/ckeditor.types';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\nimport { IWorkPackageTimestamp } from 'core-app/features/hal/resources/work-package-timestamp-resource';\n\nexport interface WorkPackageResourceEmbedded {\n activities:CollectionResource;\n assignee:HalResource|any;\n attachments:AttachmentCollectionResource;\n fileLinks?:CollectionResource;\n author:HalResource|any;\n availableWatchers:HalResource|any;\n category:HalResource|any;\n // eslint-disable-next-line no-use-before-define\n children:WorkPackageResource[];\n // eslint-disable-next-line no-use-before-define\n parent:WorkPackageResource|null;\n priority:HalResource|any;\n project:HalResource|any;\n relations:CollectionResource;\n responsible:HalResource|any;\n revisions:CollectionResource|any;\n status:StatusResource|any;\n timeEntries:HalResource[]|any[];\n type:TypeResource;\n version:HalResource|any;\n watchers:CollectionResource;\n // For regular work packages\n startDate:string;\n dueDate:string;\n // Only for milestones\n date:string;\n relatedBy:RelationResource|null;\n scheduleManually:boolean;\n}\n\nexport interface WorkPackageResourceLinks extends WorkPackageResourceEmbedded {\n addAttachment(attachment:HalResource):Promise;\n\n addChild(child:HalResource):Promise;\n\n addComment(comment:unknown, headers?:any):Promise;\n\n addRelation(relation:any):Promise|undefined;\n\n addWatcher(watcher:HalResource):Promise;\n\n changeParent(params:any):Promise;\n\n copy():Promise;\n\n delete():Promise;\n\n logTime():Promise;\n\n startTimer():Promise;\n\n move():Promise;\n\n removeWatcher():Promise;\n\n self():Promise;\n\n update(payload:any):Promise>;\n\n updateImmediately(payload:any):Promise;\n\n watch():Promise;\n}\n\nexport interface WorkPackageLinksObject extends WorkPackageResourceLinks {\n schema:HalResource;\n}\n\nexport class WorkPackageBaseResource extends HalResource {\n public $embedded:WorkPackageResourceEmbedded;\n\n public $links:WorkPackageLinksObject;\n\n public subject:string;\n\n public updatedAt:Date;\n\n public lockVersion:number;\n\n public description:any;\n\n public activities:CollectionResource;\n\n public attachments:AttachmentCollectionResource;\n\n // eslint-disable-next-line no-use-before-define\n private ancestors?:this[];\n\n public attributesByTimestamp?:IWorkPackageTimestamp[];\n\n @InjectField() I18n!:I18nService;\n\n @InjectField() states:States;\n\n @InjectField() wpActivity:WorkPackagesActivityService;\n\n @InjectField() apiV3Service:ApiV3Service;\n\n @InjectField() ToastService:ToastService;\n\n @InjectField() workPackageNotificationService:WorkPackageNotificationService;\n\n @InjectField() pathHelper:PathHelperService;\n\n readonly attachmentsBackend = true;\n\n /**\n * Returns the list of ancestors, if any\n */\n public getAncestors():this[] {\n return this.ancestors || [];\n }\n\n /**\n * Return the ids of all its ancestors, if any\n */\n public get ancestorIds():string[] {\n return this.getAncestors().map((el:HalResource) => (el.id as string|number).toString());\n }\n\n /**\n * Return \": (#)\" if type and id are known.\n */\n public subjectWithType(truncateSubject = 40):string {\n const type = this.type ? `${this.type.name}: ` : '';\n const subject = this.subjectWithId(truncateSubject);\n\n return `${type}${subject}`;\n }\n\n /**\n * Return \" (#)\" if the id is known.\n */\n public subjectWithId(truncateSubject = 40):string {\n const id = isNewResource(this) ? '' : ` (#${this.id || ''})`;\n const subject = truncateSubject <= 0 ? this.subject : _.truncate(this.subject, { length: truncateSubject });\n\n return `${subject}${id}`;\n }\n\n public get isLeaf():boolean {\n const { children } = this.$links;\n return !(children && children.length > 0);\n }\n\n public previewPath() {\n if (!isNewResource(this)) {\n return this.apiV3Service.work_packages.id(this.id!).path;\n }\n return super.previewPath();\n }\n\n public getEditorContext(fieldName:string):ICKEditorContext {\n return {\n type: fieldName === 'description' ? 'full' : 'constrained',\n macros: false,\n ...(fieldName.startsWith('customField') && { disabledMentions: ['user'] }),\n };\n }\n\n public isParentOf(otherWorkPackage:WorkPackageResource) {\n return otherWorkPackage.parent?.$links.self.$link.href === this.$links.self.$link.href;\n }\n\n /**\n * Invalidate a set of linked resources of this work package.\n * And inform the cache service about the work package update.\n *\n * Return a promise that returns the linked resources as properties.\n * Return a rejected promise, if the resource is not a property of the work package.\n */\n public updateLinkedResources(...resourceNames:string[]):Promise {\n const resources:{ [id:string]:Promise } = {};\n\n resourceNames.forEach((name) => {\n const linked = this[name];\n resources[name] = linked ? linked.$update() : Promise.reject(undefined);\n });\n\n const promise = Promise.all(_.values(resources));\n promise.then(() => {\n this.wpCacheService.touch(this.id!);\n });\n\n return promise;\n }\n\n public $initialize(source:any) {\n super.$initialize(source);\n\n const attachments:any = this.attachments || { $source: {}, elements: [] };\n this.attachments = new AttachmentCollectionResource(\n this.injector,\n // Attachments MAY be an array if we're building from a form\n _.get(attachments, '$source', attachments),\n false,\n this.halInitializer,\n 'HalResource',\n );\n }\n\n /**\n * Exclude the schema _link from the linkable Resources.\n */\n public $linkableKeys():string[] {\n return _.without(super.$linkableKeys(), 'schema');\n }\n\n /**\n * Return the associated state to this HAL resource, if any.\n */\n public get state():InputState {\n return this.states.workPackages.get(this.id!) as any;\n }\n\n /**\n * Update the state\n */\n public push(newValue:this):Promise {\n this.wpActivity.clear(newValue.id);\n\n // If there is a parent, its view has to be updated as well\n if (newValue.parent) {\n this.apiV3Service.work_packages.id(newValue.parent).refresh();\n }\n\n return this.apiV3Service.work_packages.cache.updateWorkPackage(newValue as any);\n }\n}\n\nexport const WorkPackageResource = Attachable(WorkPackageBaseResource);\n\nexport interface WorkPackageResource extends WorkPackageBaseResource, WorkPackageResourceLinks, WorkPackageResourceEmbedded {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\n\nexport class HalPayloadHelper {\n /**\n * Extract payload from the given request with schema.\n * This will ensure we will only write writable attributes and so on.\n *\n * @param resource\n * @param schema\n */\n static extractPayload(resource:T|Object|null, schema:SchemaResource|null = null):Object {\n if (resource instanceof HalResource && schema) {\n return this.extractPayloadFromSchema(resource, schema);\n } if (resource && !(resource instanceof HalResource)) {\n return resource;\n }\n return {};\n }\n\n /**\n * Extract writable payload from a HAL resource class to be used for API calls.\n *\n * The schema contains writable information about attributes, which is what this method\n * iterates in order to build the HAL-compatible object.\n *\n * @param resource A HalResource to extract payload from\n * @param schema The associated schema to determine writable state of attributes\n */\n static extractPayloadFromSchema(resource:T, schema:SchemaResource) {\n const payload:any = {\n _links: {},\n };\n\n const nonLinkProperties = [];\n\n for (const key in schema) {\n if (schema.hasOwnProperty(key) && schema[key] && schema[key].writable) {\n if (resource.$links[key]) {\n if (Array.isArray(resource[key])) {\n payload._links[key] = _.map(resource[key], (element) => ({ href: (element as HalResource).href }));\n } else {\n payload._links[key] = {\n href: (resource[key] && resource[key].href),\n };\n }\n } else {\n nonLinkProperties.push(key);\n }\n }\n }\n\n _.each(nonLinkProperties, (property) => {\n if (resource.hasOwnProperty(property) || resource[property]) {\n if (Array.isArray(resource[property])) {\n payload[property] = _.map(resource[property], (element:any) => {\n if (element instanceof HalResource) {\n return this.extractPayloadFromSchema(element, element.currentSchema || element.schema);\n }\n return element;\n });\n } else {\n payload[property] = resource[property];\n }\n }\n });\n\n return payload;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { IFieldSchema } from 'core-app/shared/components/fields/field.base';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\n\nexport interface ISchemaProxy extends SchemaResource {\n ofProperty(property:string):IFieldSchema;\n isAttributeEditable(property:string):boolean;\n mappedName(property:string):string;\n isEditable:boolean;\n}\n\nexport class SchemaProxy implements ProxyHandler {\n constructor(protected schema:SchemaResource,\n protected resource:HalResource) {\n }\n\n static create(schema:SchemaResource, resource:HalResource) {\n return new Proxy(\n schema,\n new this(schema, resource),\n ) as ISchemaProxy;\n }\n\n get(schema:SchemaResource, property:PropertyKey, receiver:any):any {\n switch (property) {\n case 'ofProperty': {\n return this.proxyMethod(this.ofProperty);\n }\n case 'isAttributeEditable': {\n return this.proxyMethod(this.isAttributeEditable);\n }\n case 'mappedName': {\n return this.proxyMethod(this.mappedName);\n }\n case 'isEditable': {\n return this.isEditable;\n }\n default: {\n return Reflect.get(schema, property, receiver);\n }\n }\n }\n\n /**\n * Returns the part of the schema relevant for the provided property.\n *\n * We use it to support the virtual attribute 'combinedDate' which is the combination of the three\n * attributes 'startDate', 'dueDate' and 'scheduleManually'. That combination exists only in the front end\n * and not on the native schema. As a property needs to be writable for us to allow the user editing,\n * we need to mark the writability positively if any of the combined properties are writable.\n *\n * @param property the schema part is desired for\n */\n public ofProperty(property:string):IFieldSchema|null {\n const propertySchema = this.schema[this.mappedName(property)];\n\n if (propertySchema) {\n return { ...propertySchema, writable: this.isEditable && propertySchema && propertySchema.writable };\n }\n return null;\n }\n\n /**\n * Return whether the resource is editable with the user's permission\n * on the given resource package attribute.\n * In order to be editable, there needs to be an update link on the resource and the schema for\n * the attribute needs to indicate the writability.\n *\n * @param property\n */\n public isAttributeEditable(property:string):boolean {\n const propertySchema = this.ofProperty(property);\n\n return !!propertySchema && propertySchema.writable;\n }\n\n /**\n * Return whether the user in general has permission to edit the resource.\n * This check is required, but not sufficient to check all attribute restrictions.\n *\n * Use +isAttributeEditable(property)+ for this case.\n */\n public get isEditable() {\n return isNewResource(this.resource) || !!this.resource.$links.update;\n }\n\n public mappedName(property:string):string {\n return property;\n }\n\n private proxyMethod(method:Function) {\n const self = this;\n\n // Returning a Proxy here so that the call is bound\n // to the SchemaProxy instance.\n return new Proxy(method, {\n apply(_, __, argumentsList) {\n return method.apply(self, [argumentsList[0]]);\n },\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { SchemaProxy } from 'core-app/features/hal/schemas/schema-proxy';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { StatusResource } from 'core-app/features/hal/resources/status-resource';\n\nexport class WorkPackageSchemaProxy extends SchemaProxy {\n get(schema:SchemaResource, property:PropertyKey, receiver:any):any {\n switch (property) {\n case 'isMilestone': {\n return this.isMilestone;\n }\n case 'isReadonly': {\n return this.isReadonly;\n }\n default: {\n return super.get(schema, property, receiver);\n }\n }\n }\n\n /**\n * Returns the part of the schema relevant for the provided property.\n *\n * We use it to support the virtual attribute 'combinedDate' which is the combination of the three\n * attributes 'startDate', 'dueDate' and 'scheduleManually'. That combination exists only in the front end\n * and not on the native schema. As a property needs to be writable for us to allow the user editing,\n * we need to mark the writability positively if any of the combined properties are writable.\n *\n * @param property the schema part is desired for\n */\n public ofProperty(property:string) {\n if (property === 'combinedDate') {\n const propertySchema = super.ofProperty('startDate');\n\n if (!propertySchema) {\n return null;\n }\n\n propertySchema.writable = propertySchema.writable\n || this.isAttributeEditable('dueDate')\n || this.isAttributeEditable('scheduleManually');\n\n return propertySchema;\n }\n return super.ofProperty(property);\n }\n\n public get isReadonly():boolean {\n return (this.resource.readonly as boolean) || !!(this.resource.status as StatusResource|null)?.isReadonly;\n }\n\n /**\n * Return whether the work package is editable with the user's permission\n * on the given work package attribute.\n *\n * @param property\n */\n public isAttributeEditable(property:string):boolean {\n if (this.isReadonly && property !== 'status') {\n return false;\n } if (['startDate', 'dueDate', 'date'].includes(property)\n && this.resource.scheduleManually) {\n // This is a blatant shortcut but should be adequate.\n return super.isAttributeEditable('scheduleManually');\n }\n return super.isAttributeEditable(property);\n }\n\n public get isMilestone():boolean {\n return this.schema.hasOwnProperty('date');\n }\n\n public mappedName(property:string):string {\n if (this.isMilestone && (property === 'startDate' || property === 'dueDate')) {\n return 'date';\n }\n return property;\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ErrorResource } from 'core-app/features/hal/resources/error-resource';\n\nexport class HalError extends Error {\n readonly name = 'HALError';\n\n get message():string {\n return this.resource?.message || this.httpError?.message || 'Unknown error';\n }\n\n get errorIdentifier():string {\n return this.resource?.errorIdentifier || 'unknown';\n }\n\n constructor(\n readonly httpError:HttpErrorResponse,\n readonly resource:ErrorResource|null,\n ) {\n super();\n Object.setPrototypeOf(this, HalError.prototype);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { buffer, debounceTime, filter } from 'rxjs/operators';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ResourceChangesetCommit } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\n\nexport interface HalEvent {\n id:string;\n eventType:string;\n resourceType:string;\n commit?:ResourceChangesetCommit;\n}\n\nexport interface HalCreatedEvent extends HalEvent {\n eventType:'created';\n}\n\nexport interface HalUpdatedEvent extends HalEvent {\n eventType:'updated';\n}\n\nexport interface RelatedWorkPackageEvent extends HalEvent {\n eventType:'association';\n relatedWorkPackage:string|null;\n relationType:string;\n}\n\nexport interface HalDeletedEvent extends HalEvent {\n eventType:'deleted';\n}\n\nexport type HalEventTypes =\n HalCreatedEvent|HalUpdatedEvent|RelatedWorkPackageEvent|HalDeletedEvent;\n\n@Injectable({ providedIn: 'root' })\nexport class HalEventsService {\n private _events = new Subject();\n\n /** Entire event stream */\n public events$ = this._events.asObservable();\n\n /** Aggregated events */\n public aggregated$(resourceType:string, debounceTimeInMs = 500):Observable {\n return this\n .events$\n .pipe(\n filter((event:HalEvent) => event.resourceType === resourceType),\n buffer(this.events$.pipe(debounceTime(debounceTimeInMs))),\n );\n }\n\n public push(resourceReference:HalResource|{ id:string, _type:string }, event:Partial) {\n event.id = resourceReference.id!;\n event.resourceType = resourceReference._type!;\n\n this._events.next(event as HalEvent);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { StateService } from '@uirouter/core';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { Injectable, Injector } from '@angular/core';\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { ErrorResource } from 'core-app/features/hal/resources/error-resource';\nimport { HalError } from 'core-app/features/hal/services/hal-error';\n\n@Injectable()\nexport class HalResourceNotificationService {\n @InjectField() protected I18n:I18nService;\n\n @InjectField() protected $state:StateService;\n\n @InjectField() protected halResourceService:HalResourceService;\n\n @InjectField() protected ToastService:ToastService;\n\n @InjectField() protected loadingIndicator:LoadingIndicatorService;\n\n @InjectField() protected schemaCache:SchemaCacheService;\n\n constructor(public injector:Injector) {\n }\n\n public showSave(resource:HalResource, isCreate = false) {\n const message:any = {\n message: this.I18n.t(`js.notice_successful_${isCreate ? 'create' : 'update'}`),\n };\n\n this.ToastService.addSuccess(message);\n }\n\n /**\n * Handle any kind of error response:\n * - HAL ErrorResources\n * - Angular HttpErrorResponses\n * - Older .data error responses\n * - String error messages\n *\n * @param response\n * @param resource\n */\n public handleRawError(response:unknown, resource?:HalResource) {\n console.error('Handling error message %O for work package %O', response, resource);\n\n // Some transformation may already have returned the error as a HAL resource,\n // which we will forward to handleErrorResponse\n if (response instanceof HalError && resource) {\n return this.handleErrorResponse(response.resource, resource);\n }\n\n const errorBody = this.retrieveError(response);\n\n if (errorBody instanceof HalResource) {\n return this.handleErrorResponse(errorBody, resource);\n }\n\n if (typeof (response) === 'string') {\n this.ToastService.addError(response);\n return;\n }\n\n if (response instanceof Error) {\n this.ToastService.addError(response.message);\n return;\n }\n\n this.showGeneralError(errorBody || response);\n }\n\n /**\n * Retrieve an error message string from the given unknown response.\n * @param response\n */\n public retrieveErrorMessage(response:unknown):string {\n const error = this.retrieveError(response);\n\n if (error instanceof ErrorResource || error instanceof HalError) {\n return error.message;\n }\n\n if (typeof (error) === 'string') {\n return error;\n }\n\n return this.I18n.t('js.error.internal');\n }\n\n public retrieveError(response:unknown):ErrorResource|unknown {\n // we try to detect what we got, this may either be an HttpErrorResponse,\n // some older XHR response object or a string\n let errorBody:any = response;\n\n // Angular http response have an error body attribute\n if (response instanceof HttpErrorResponse) {\n errorBody = response.message || response.error;\n }\n\n // Some older response may have a data attribute\n if (_.get(response, 'data._type') === 'Error') {\n errorBody = (response as any).data;\n }\n\n if (errorBody && errorBody._type === 'Error') {\n return this.halResourceService.createHalResourceOfClass(ErrorResource, errorBody);\n }\n\n return errorBody;\n }\n\n protected handleErrorResponse(errorResource:any, resource?:HalResource) {\n if (errorResource instanceof HalError && resource) {\n return this.showError(errorResource.resource, resource);\n }\n\n if (!(errorResource instanceof ErrorResource)) {\n return this.showGeneralError(errorResource);\n }\n\n if (resource) {\n return this.showError(errorResource, resource);\n }\n\n return this.showApiErrorMessages(errorResource);\n }\n\n public showError(errorResource:any, resource:HalResource) {\n this.showCustomError(errorResource, resource) || this.showApiErrorMessages(errorResource);\n }\n\n public showGeneralError(message?:unknown) {\n let error = this.I18n.t('js.error.internal');\n\n if (typeof (message) === 'string' || _.has(message, 'toString')) {\n error += ` ${(message as any).toString()}`;\n }\n\n this.ToastService.addError(error);\n }\n\n public showEditingBlockedError(attribute:string) {\n this.ToastService.addError(this.I18n.t(\n 'js.hal.error.edit_prohibited',\n { attribute },\n ));\n }\n\n protected showCustomError(errorResource:any, resource:HalResource) {\n if (errorResource.errorIdentifier === 'urn:openproject-org:api:v3:errors:PropertyFormatError') {\n const schema = this.schemaCache.of(resource).ofProperty(errorResource.details.attribute);\n const attributeName = schema.name;\n const attributeType = schema.type.toLowerCase();\n const i18nString = `js.hal.error.format.${attributeType}`;\n\n if (this.I18n.t(i18nString, { default: '[not found]' }) === '[not found]') {\n return false;\n }\n\n this.ToastService.addError(this.I18n.t(i18nString,\n { attribute: attributeName }));\n\n return true;\n }\n return false;\n }\n\n protected showApiErrorMessages(errorResource:any) {\n const messages = errorResource.errorMessages;\n\n if (messages.length > 1) {\n this.ToastService.addError('', messages);\n } else {\n this.ToastService.addError(messages[0]);\n }\n\n return true;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\n@Injectable({ providedIn: 'root' })\nexport class HalResourceSortingService {\n /**\n * List of sortable properties by HAL type\n */\n private config:{ [typeName:string]:string } = {\n user: 'name',\n project: 'name',\n };\n\n constructor() {\n }\n\n /**\n * Sort the given HalResource based on its type.\n * If the type is not given, guess from the first element.\n *\n * @param {T[]} elements A collection of HalResources of type T\n * @param {string} type The HAL type of the collection\n * @returns {T[]} The sorted collection of HalResources\n */\n public sort(elements:T[], type?:string) {\n if (elements.length === 0) {\n return elements;\n }\n\n const halType = type || elements[0]._type;\n if (!halType) {\n return elements;\n }\n\n const property = this.sortingProperty(halType);\n if (property) {\n return _.sortBy(elements, (v) => v[property].toLowerCase());\n }\n return elements;\n }\n\n /**\n * Transform the HAL type into the sorting property map.\n *\n * - Removes the leading multi identifier [] (e.g., from []User)\n * - Transforms to lowercase\n *\n * @param {string} type\n * @returns {string | undefined}\n */\n public sortingProperty(type:string):string | undefined {\n // Remove multi identifier and map to lowercase\n type = type\n .toLowerCase()\n .replace(/^\\[\\]/, '');\n\n return this.config[type];\n }\n\n public hasSortingProperty(type:string) {\n return this.sortingProperty(type) !== undefined;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { catchError, map } from 'rxjs/operators';\nimport { Observable, throwError } from 'rxjs';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { ErrorResource } from 'core-app/features/hal/resources/error-resource';\nimport * as Pako from 'pako';\nimport * as base64 from 'byte-base64';\nimport { whenDebugging } from 'core-app/shared/helpers/debug_output';\nimport {\n HTTPClientHeaders,\n HTTPClientOptions,\n HTTPClientParamMap,\n HTTPSupportedMethods,\n} from 'core-app/features/hal/http/http.interfaces';\nimport { HalLink, HalLinkInterface } from 'core-app/features/hal/hal-link/hal-link';\nimport { URLParamsEncoder } from 'core-app/features/hal/services/url-params-encoder';\nimport { HalResource, HalResourceClass } from 'core-app/features/hal/resources/hal-resource';\nimport { initializeHalProperties } from '../helpers/hal-resource-builder';\nimport { HalError } from 'core-app/features/hal/services/hal-error';\nimport { getPaginatedCollections } from 'core-app/core/apiv3/helpers/get-paginated-results';\n\nexport interface HalResourceFactoryConfigInterface {\n cls?:any;\n attrTypes?:{ [attrName:string]:string };\n}\n\ninterface ErrorWithType {\n _type?:string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class HalResourceService {\n /**\n * List of all known hal resources, extendable.\n */\n private config:{ [typeName:string]:HalResourceFactoryConfigInterface } = {};\n\n constructor(\n readonly injector:Injector,\n readonly http:HttpClient,\n ) {\n }\n\n /**\n * Perform a HTTP request and return a HalResource promise.\n */\n public request(method:HTTPSupportedMethods, href:string, data?:unknown, headers:HTTPClientHeaders = {}):Observable {\n // HttpClient requires us to create HttpParams instead of passing data for get\n // so forward to that method instead.\n if (method === 'get') {\n return this.get(href, data as HTTPClientParamMap|undefined, headers);\n }\n\n const config:HTTPClientOptions = {\n body: data || {},\n headers,\n withCredentials: true,\n responseType: 'json',\n };\n\n return this.performRequest(method, href, config);\n }\n\n private performRequest(method:HTTPSupportedMethods, href:string, config:HTTPClientOptions):Observable {\n return this.http.request(method, href, config)\n .pipe(\n map((response:unknown) => this.createHalResource(response)),\n catchError((error:HttpErrorResponse) => {\n whenDebugging(() => console.error(`Failed to ${method} ${href}: ${error.name}`));\n return this.createErrorObservable(error);\n }),\n );\n }\n\n /**\n * Perform a GET request and return a resource promise.\n *\n * @param href\n * @param params\n * @param headers\n * @returns {Promise}\n */\n public get(href:string, params?:HTTPClientParamMap, headers?:HTTPClientHeaders):Observable {\n const config:HTTPClientOptions = {\n headers,\n params: new HttpParams({ encoder: new URLParamsEncoder(), fromObject: params }),\n withCredentials: true,\n responseType: 'json',\n };\n\n return this.performRequest('get', href, config);\n }\n\n /**\n * Return all potential pages to the request, when the elements returned from API is smaller\n * than the expected.\n *\n * @param href The URL to request\n * @param params Parameters to pass to each paged request\n * @param headers Headers to pass to each paged request\n * @return {Observable}\n */\n public getAllPaginated(\n href:string,\n params:Record = {},\n headers:HTTPClientHeaders = {},\n ):Observable {\n return getPaginatedCollections(\n (pageParams) => {\n const requestParams = { ...params, ...pageParams };\n return this.request>('get', href, this.toEprops(requestParams), headers);\n },\n (params.pageSize as number|undefined) || -1,\n ) as Observable;\n }\n\n /**\n * Perform a PUT request and return a resource promise.\n * @param href\n * @param data\n * @param headers\n * @returns {Promise}\n */\n public put(href:string, data?:any, headers?:HTTPClientHeaders):Observable {\n return this.request('put', href, data, headers);\n }\n\n /**\n * Perform a POST request and return a resource promise.\n *\n * @param href\n * @param data\n * @param headers\n * @returns {Promise}\n */\n public post(href:string, data?:any, headers?:HTTPClientHeaders):Observable {\n return this.request('post', href, data, headers);\n }\n\n /**\n * Perform a PATCH request and return a resource promise.\n *\n * @param href\n * @param data\n * @param headers\n * @returns {Promise}\n */\n public patch(href:string, data?:any, headers?:HTTPClientHeaders):Observable {\n return this.request('patch', href, data, headers);\n }\n\n /**\n * Perform a DELETE request and return a resource promise\n *\n * @param href\n * @param data\n * @param headers\n * @returns {Promise}\n */\n public delete(href:string, data?:any, headers?:HTTPClientHeaders):Observable {\n return this.request('delete', href, data, headers);\n }\n\n /**\n * Register a HalResource for use with the API.\n * @param {HalResourceStatic} resource\n */\n public registerResource(key:string, entry:HalResourceFactoryConfigInterface) {\n this.config[key] = entry;\n }\n\n /**\n * Get the default class.\n * Initially, it's HalResource.\n *\n * @returns {HalResource}\n */\n public get defaultClass():HalResourceClass {\n const defaultCls:HalResourceClass = HalResource;\n return defaultCls;\n }\n\n /**\n * Create a HalResource from a source object.\n * If the APIv3 _type attribute is defined and the type is configured,\n * the respective class will be used for instantiation.\n *\n *\n * @param source\n * @returns {HalResource}\n */\n public createHalResource(source:any, loaded = true):T {\n if (_.isNil(source)) {\n source = HalResource.getEmptyResource();\n }\n\n const type = source._type || 'HalResource';\n return this.createHalResourceOfType(type, source, loaded);\n }\n\n public createHalResourceOfType(type:string, source:any, loaded = false) {\n const resourceClass:HalResourceClass = this.getResourceClassOfType(type);\n const initializer = (halResource:T) => initializeHalProperties(this, halResource);\n const resource = new resourceClass(this.injector, source, loaded, initializer, type);\n\n return resource;\n }\n\n /**\n * Create a resource class of the given class\n * @param resourceClass\n * @param source\n * @param loaded\n */\n public createHalResourceOfClass(resourceClass:HalResourceClass, source:any, loaded = false) {\n const initializer = (halResource:T) => initializeHalProperties(this, halResource);\n const type = source._type || 'HalResource';\n const resource = new resourceClass(this.injector, source, loaded, initializer, type);\n\n return resource;\n }\n\n /**\n * Create a linked HalResource from the given link.\n *\n * @param {HalLinkInterface} link\n * @returns {HalResource}\n */\n public fromLink(link:HalLinkInterface) {\n const resource = HalResource.getEmptyResource(HalLink.fromObject(this, link));\n return this.createHalResource(resource, false);\n }\n\n /**\n * Create an empty HAL resource with only the self link set.\n * @param href Self link of the HAL resource\n */\n public fromSelfLink(href:string|null) {\n const source = { _links: { self: { href } } };\n return this.createHalResource(source);\n }\n\n /**\n *\n * Get a linked resource from its HalLink with the correct type.\n */\n public createLinkedResource(halResource:T, linkName:string, link:HalLinkInterface) {\n const source = HalResource.getEmptyResource();\n const fromType = halResource.$halType;\n const toType = this.getResourceClassOfAttribute(fromType, linkName) || 'HalResource';\n\n source._links.self = link;\n\n return this.createHalResourceOfType(toType, source, false);\n }\n\n /**\n * Get the configured resource class of a type.\n *\n * @param type\n * @returns {HalResource}\n */\n protected getResourceClassOfType(type:string):HalResourceClass {\n const config = this.config[type];\n return (config && config.cls) ? config.cls : this.defaultClass;\n }\n\n /**\n * Get the hal type for an attribute\n *\n * @param type\n * @param attribute\n * @returns {any}\n */\n protected getResourceClassOfAttribute(type:string, attribute:string):string|null {\n const typeConfig = this.config[type];\n const types = (typeConfig && typeConfig.attrTypes) || {};\n return types[attribute];\n }\n\n protected toEprops(params:unknown):{ eprops:string } {\n const deflatedArray = Pako.deflate(JSON.stringify(params));\n\n const compressed = base64.bytesToBase64(deflatedArray);\n\n return { eprops: compressed };\n }\n\n private createErrorObservable(error:HttpErrorResponse):Observable {\n let resource:ErrorResource|null = null;\n\n const body = error.error as string|ErrorWithType|unknown;\n // eslint-disable-next-line no-underscore-dangle\n if (typeof body === 'object' && (body as ErrorWithType)?._type) {\n resource = this.createHalResource(error.error);\n }\n\n return throwError(new HalError(error, resource));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HttpParameterCodec } from '@angular/common/http';\n\nexport class URLParamsEncoder implements HttpParameterCodec {\n encodeKey(key:string):string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value:string):string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key:string):string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value:string):string {\n return decodeURIComponent(value);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { BcfRestApi } from 'core-app/features/bim/bcf/bcf-constants.const';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { imagePath } from 'core-app/shared/helpers/images/path-helper';\n\n// The key used in the I18n files to distinguish between versions.\nconst OpVersionI18n = '15_4';\n\nconst OpReleaseURL = 'https://www.openproject.org/docs/release-notes';\n\n/** Update the teaser image to the next version */\nconst featureTeaserImage = `${OpVersionI18n}_features.svg`;\n\n@Component({\n template: `\n
    \n

    \n {{ text.descriptionNewFeatures }}\n

    \n
    \n

    \n \n
    \n\n {{ text.learnAbout }}\n
    \n `,\n selector: 'opce-homescreen-new-features-block',\n styleUrls: ['./new-features.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\n/**\n * Component for the homescreen block to promote new features.\n * When updating this for the next release, be sure to cleanup stuff is not needed any more:\n * Locals (js-en.yml), Styles (new-features.component.sass), HTML (above), TS (below)\n */\nexport class HomescreenNewFeaturesBlockComponent {\n public isStandardEdition:boolean;\n\n /** Set to true if BIM has its own changes */\n hasBimChanges = false;\n\n /** Update the feature image appropriately */\n new_features_image = imagePath(featureTeaserImage);\n\n public text = {\n newFeatures: this.i18n.t('js.label_new_features'),\n descriptionNewFeatures: this.i18n.t('js.homescreen.blocks.new_features.text_new_features'),\n learnAbout: this.i18n.t('js.homescreen.blocks.new_features.learn_about'),\n };\n\n constructor(\n readonly i18n:I18nService,\n readonly domSanitizer:DomSanitizer,\n ) {\n this.isStandardEdition = window.OpenProject.isStandardEdition;\n }\n\n public get teaserWebsiteUrl() {\n return this.domSanitizer.bypassSecurityTrustResourceUrl(OpReleaseURL);\n }\n\n public get currentNewFeatureHtml():string {\n return this.translated('new_features_html');\n }\n\n private get translatedEdition():string {\n if (this.hasBimChanges && !this.isStandardEdition) {\n return 'bim';\n }\n\n return 'standard';\n }\n\n private translated(key:string):string {\n return this.i18n.t(\n `js.homescreen.blocks.new_features.${OpVersionI18n}.${this.translatedEdition}.${key}`,\n { list_styling_class: 'widget-box--arrow-links', bcf_api_link: BcfRestApi },\n );\n }\n}\n","export const BcfRestApi = 'https://github.com/opf/openproject/blob/dev/docs/api/bcf/bcf-rest-api.md';\n","import { pairwise, filter, map } from 'rxjs/operators';\nimport { Query } from '@datorama/akita';\nimport {\n IanBellState,\n IanBellStore,\n} from 'core-app/features/in-app-notifications/bell/state/ian-bell.store';\n\nexport class IanBellQuery extends Query {\n unread$ = this.select('totalUnread');\n\n unreadCountChanged$ = this.unread$.pipe(\n pairwise(),\n filter(([last, curr]) => curr !== last),\n map(([, curr]) => curr),\n );\n\n unreadCountIncreased$ = this.unread$.pipe(\n pairwise(),\n filter(([last, curr]) => curr > last),\n map(([, curr]) => curr),\n );\n\n constructor(protected store:IanBellStore) {\n super(store);\n }\n}\n","import {\n Store,\n StoreConfig,\n} from '@datorama/akita';\n\nexport interface IanBellState {\n totalUnread:number;\n}\n\nexport function createInitialState():IanBellState {\n return {\n totalUnread: 0,\n };\n}\n\n@StoreConfig({ name: 'ian-bell' })\nexport class IanBellStore extends Store {\n constructor() {\n super(createInitialState());\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport {\n catchError,\n map,\n skip,\n tap,\n} from 'rxjs/operators';\nimport { EMPTY, Observable } from 'rxjs';\n\nimport {\n InAppNotificationsResourceService,\n} from 'core-app/core/state/in-app-notifications/in-app-notifications.service';\nimport { IAN_FACET_FILTERS } from 'core-app/features/in-app-notifications/center/state/ian-center.store';\nimport { IanBellQuery } from 'core-app/features/in-app-notifications/bell/state/ian-bell.query';\nimport { EffectCallback, EffectHandler } from 'core-app/core/state/effects/effect-handler.decorator';\nimport {\n notificationCountIncreased,\n notificationCountChanged,\n notificationsMarkedRead,\n} from 'core-app/core/state/in-app-notifications/in-app-notifications.actions';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { IanBellStore } from 'core-app/features/in-app-notifications/bell/state/ian-bell.store';\n\n/**\n * The BellService is injected into root here (and the store is thus made global),\n * because we are dependent in many places on the information about how many notifications there are in total.\n * Instead of repeating these requests, we prefer to use the global store for now.\n */\n@Injectable({ providedIn: 'root' })\n@EffectHandler\nexport class IanBellService {\n readonly id = 'ian-bell';\n\n readonly store = new IanBellStore();\n\n readonly query = new IanBellQuery(this.store);\n\n unread$ = this.query.unread$;\n\n constructor(\n readonly actions$:ActionsService,\n readonly resourceService:InAppNotificationsResourceService,\n ) {\n this.query.unreadCountChanged$.subscribe((count) => {\n this.actions$.dispatch(notificationCountChanged({ origin: this.id, count }));\n });\n this.query.unreadCountIncreased$.pipe(skip(1)).subscribe((count) => {\n this.actions$.dispatch(notificationCountIncreased({ origin: this.id, count }));\n });\n }\n\n fetchUnread():Observable {\n return this\n .resourceService\n .fetchCollection(\n { filters: IAN_FACET_FILTERS.unread, pageSize: 0 },\n { handleErrors: false },\n )\n .pipe(\n map((result) => result.total),\n tap({\n next: (count) => {\n this.store.update({ totalUnread: count });\n },\n error: (error) => {\n console.error('Failed to load notifications: %O', error);\n this.store.update({ totalUnread: -1 });\n },\n }),\n catchError(() => EMPTY),\n );\n }\n\n @EffectCallback(notificationsMarkedRead)\n private reloadOnNotificationRead(action:ReturnType) {\n if (action.all) {\n this.fetchUnread().subscribe();\n } else {\n this.store.update(({ totalUnread }) => ({ totalUnread: totalUnread - action.notifications.length }));\n }\n }\n}\n","import { Store, StoreConfig } from '@datorama/akita';\nimport { CollectionResponse } from 'core-app/core/state/resource-store';\nimport { ApiV3ListFilter } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { NOTIFICATIONS_MAX_SIZE } from 'core-app/core/state/in-app-notifications/in-app-notification.model';\nimport {\n INotificationPageQueryParameters,\n} from 'core-app/features/in-app-notifications/center/state/ian-center.service';\n\nexport type InAppNotificationFacet = 'unread'|'all';\n\nexport interface IanCenterState {\n params:{\n page:number;\n pageSize:number;\n };\n activeFacet:InAppNotificationFacet;\n filters:INotificationPageQueryParameters;\n\n activeCollection:CollectionResponse;\n\n /** Number of elements not showing after max values loaded */\n notLoaded:number;\n}\n\nexport const IAN_FACET_FILTERS:Record = {\n unread: [['readIAN', '=', false]],\n all: [],\n};\n\nexport function createInitialState():IanCenterState {\n return {\n params: {\n pageSize: NOTIFICATIONS_MAX_SIZE,\n page: 1,\n },\n filters: {},\n activeCollection: { ids: [] },\n activeFacet: 'unread',\n notLoaded: 0,\n };\n}\n\n@StoreConfig({ name: 'ian-center' })\nexport class IanCenterStore extends Store {\n constructor() {\n super(createInitialState());\n }\n}\n","\n \n \n {{text.button}}\n \n\n\n","import {\n Component,\n Input,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { OpInviteUserModalService } from 'core-app/features/invite-user-modal/invite-user-modal.service';\nimport { OpAutocompleterComponent } from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\n\n@Component({\n selector: 'op-invite-user-button',\n templateUrl: './invite-user-button.component.html',\n styleUrls: ['./invite-user-button.component.sass'],\n})\nexport class InviteUserButtonComponent {\n @Input() projectId:string|null;\n\n /** This component does not provide an output, because both primary usecases were in places where the button was\n * destroyed before the modal closed, causing the data from the modal to never arrive at the parent.\n * If you want to do something with the output from the modal that is opened, use the OpInviteUserModalService\n * and subscribe to the `close` event there.\n */\n text = {\n button: this.I18n.t('js.invite_user_modal.invite'),\n };\n\n canInviteUsersToProject$:Observable;\n\n constructor(\n readonly I18n:I18nService,\n readonly opInviteUserModalService:OpInviteUserModalService,\n readonly currentProjectService:CurrentProjectService,\n readonly currentUserService:CurrentUserService,\n readonly autocompleter:OpAutocompleterComponent,\n ) {\n }\n\n public ngOnInit():void {\n this.projectId = this.projectId || this.currentProjectService.id;\n this.canInviteUsersToProject$ = this\n .currentUserService\n .hasCapabilities$(\n 'memberships/create',\n this.projectId || null,\n );\n }\n\n public onAddNewClick($event:Event):void {\n $event.stopPropagation();\n this.opInviteUserModalService.open(this.projectId);\n this.autocompleter.closeSelect();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InviteUserButtonComponent } from 'core-app/features/invite-user-modal/button/invite-user-button.component';\nimport { IconModule } from 'core-app/shared/components/icon/icon.module';\n\n@NgModule({\n declarations: [\n InviteUserButtonComponent,\n ],\n imports: [\n CommonModule,\n IconModule,\n ],\n exports: [\n InviteUserButtonComponent,\n ],\n})\nexport class InviteUserButtonModule { }\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, EventEmitter } from '@angular/core';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { InviteUserModalComponent } from './invite-user.component';\n\n/**\n * This service triggers user-invite modals to clicks on elements\n * with the attribute [invite-user-modal-augment] set.\n */\n@Injectable()\nexport class OpInviteUserModalService {\n public close = new EventEmitter();\n\n constructor(\n protected opModalService:OpModalService,\n protected currentProjectService:CurrentProjectService,\n ) {\n }\n\n public open(projectId:string|null = this.currentProjectService.id) {\n this.opModalService.show(\n InviteUserModalComponent,\n 'global',\n { projectId },\n ).subscribe((modal) => modal\n .closingEvent\n .subscribe((modal:InviteUserModalComponent) => {\n this.close.emit(modal.data);\n }));\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { OpModalLocalsMap } from 'core-app/shared/components/modal/modal.types';\nimport { OpModalComponent } from 'core-app/shared/components/modal/modal.component';\nimport { OpModalLocalsToken } from 'core-app/shared/components/modal/modal.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { PrincipalData } from 'core-app/shared/components/principal/principal-types';\nimport { RoleResource } from 'core-app/features/hal/resources/role-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\n\nenum Steps {\n ProjectSelection,\n Principal,\n Summary,\n Success,\n}\n\nexport enum PrincipalType {\n User = 'User',\n Placeholder = 'PlaceholderUser',\n Group = 'Group',\n}\n\n@Component({\n templateUrl: './invite-user.component.html',\n styleUrls: ['./invite-user.component.sass'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InviteUserModalComponent extends OpModalComponent implements OnInit {\n public Steps = Steps;\n\n public step = Steps.ProjectSelection;\n\n /* Data that is returned from the modal on close */\n public data:any = null;\n\n public type:PrincipalType|null = null;\n\n public project:ProjectResource|null = null;\n\n public principalData:PrincipalData = {\n principal: null,\n customFields: {},\n };\n\n public role:RoleResource|null = null;\n\n public message = '';\n\n public createdNewPrincipal = false;\n\n public get loading():boolean {\n return this.locals.projectId && !this.project;\n }\n\n constructor(\n @Inject(OpModalLocalsToken) public locals:OpModalLocalsMap,\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n readonly apiV3Service:ApiV3Service,\n ) {\n super(locals, cdRef, elementRef);\n }\n\n ngOnInit():void {\n super.ngOnInit();\n\n if (this.locals.projectId) {\n this.apiV3Service.projects.id(this.locals.projectId).get().subscribe(\n (data) => {\n this.project = data;\n this.cdRef.markForCheck();\n },\n () => {\n this.locals.projectId = null;\n this.cdRef.markForCheck();\n },\n );\n }\n }\n\n onProjectSelectionSave({ type, project }:{ type:PrincipalType, project:ProjectResource|null }):void {\n this.type = type;\n this.project = project;\n this.goTo(Steps.Principal);\n }\n\n onPrincipalSave({\n principalData, isAlreadyMember, role, message,\n }:{ principalData:PrincipalData, isAlreadyMember:boolean, role:RoleResource, message:string }):void {\n this.principalData = principalData;\n this.role = role;\n this.message = message;\n if (isAlreadyMember) {\n return this.closeWithPrincipal();\n }\n\n return this.goTo(Steps.Summary);\n }\n\n onSuccessfulSubmission($event:{ principal:HalResource }):void {\n if (this.principalData.principal !== $event.principal && this.type === PrincipalType.User) {\n this.createdNewPrincipal = true;\n }\n this.principalData.principal = $event.principal;\n this.goTo(Steps.Success);\n }\n\n goTo(step:Steps):void {\n this.step = step;\n }\n\n closeWithPrincipal():void {\n this.data = this.principalData.principal;\n this.closeMe();\n }\n}\n","\n\n\n\n\n\n\n\n","import { Injectable } from '@angular/core';\nimport { TurboRequestsService } from 'core-app/core/turbo/turbo-requests.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\n\n@Injectable({ providedIn: 'root' })\nexport class JobStatusModalService {\n constructor(\n protected pathHelper:PathHelperService,\n protected turboRequests:TurboRequestsService,\n ) {}\n\n public show(jobId:string):void {\n void this.turboRequests.requestStream(this.jobModalUrl(jobId));\n }\n\n private jobModalUrl(jobId:string):string {\n return this.pathHelper.jobStatusModalPath(jobId);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HookService {\n private hooks:{ [hook:string]:Function[] } = {};\n\n public register(id:string, callback:Function) {\n if (!callback) {\n return;\n }\n\n if (!this.hooks[id]) {\n this.hooks[id] = [];\n }\n\n this.hooks[id].push(callback);\n }\n\n public call(id:string, ...params:any[]):any[] {\n const results = [];\n\n if (this.hooks[id]) {\n for (let x = 0; x < this.hooks[id].length; x++) {\n const result = this.hooks[id][x](...params);\n\n if (result) {\n results.push(result);\n }\n }\n }\n\n return results;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n IDynamicFieldGroupConfig,\n IOPFormlyFieldSettings,\n IOPFormlyTemplateOptions,\n} from 'core-app/shared/components/dynamic-forms/typings';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { JobStatusModalService } from 'core-app/features/job-status/job-status-modal.service';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './copy-project.component.html',\n})\nexport class CopyProjectComponent extends UntilDestroyedMixin implements OnInit {\n dynamicFieldsSettingsPipe = this.fieldSettingsPipe.bind(this);\n\n fieldGroups:IDynamicFieldGroupConfig[];\n\n formUrl:string;\n\n hiddenFields:string[] = [\n 'createdAt',\n 'identifier',\n 'active',\n ];\n\n text = {\n advancedSettingsLabel: this.I18n.t('js.forms.advanced_settings'),\n copySettingsLabel: this.I18n.t('js.project.copy.copy_options'),\n };\n\n constructor(\n private apiV3Service:ApiV3Service,\n private currentProjectService:CurrentProjectService,\n private pathHelperService:PathHelperService,\n private jobStatusModalService:JobStatusModalService,\n private I18n:I18nService,\n ) {\n super();\n }\n\n ngOnInit():void {\n this.formUrl = this.apiV3Service.projects.id(this.currentProjectService.id!).copy.form.path;\n this.fieldGroups = [\n {\n name: this.text.advancedSettingsLabel,\n fieldsFilter: (field:IOPFormlyFieldSettings) => !this.isMeta(field.templateOptions?.property) && !this.isPrimaryAttribute(field.templateOptions),\n },\n {\n name: this.text.copySettingsLabel,\n fieldsFilter: (field:IOPFormlyFieldSettings) => this.isMeta(field.templateOptions?.property),\n },\n ];\n }\n\n onSubmitted(response:HalSource) {\n this.jobStatusModalService.show(response.jobId as string);\n }\n\n private isHiddenField(key:string|undefined):boolean {\n return !!key && this.hiddenFields.includes(key);\n }\n\n private fieldSettingsPipe(dynamicFieldsSettings:IOPFormlyFieldSettings[]):IOPFormlyFieldSettings[] {\n return this.sortedCopyFields(dynamicFieldsSettings)\n .map((field) => ({ ...field, hide: this.isHiddenField(field.key) }));\n }\n\n private isPrimaryAttribute(templateOptions?:IOPFormlyTemplateOptions):boolean {\n if (!templateOptions) {\n return false;\n }\n\n const nameOrParent = ['name', 'parent'].includes(templateOptions.property!);\n const noPayload = templateOptions.payloadValue == null\n || templateOptions.payloadValue?.href == null;\n\n return (templateOptions.required && !templateOptions.hasDefault && noPayload) || nameOrParent;\n }\n\n private isMeta(property:string|undefined):boolean {\n return !!property && (property.startsWith('copy') || property === 'sendNotifications');\n }\n\n // Sorts the copy options by their label.\n // The order of the rest of the fields is left unchanged but all copy options are returned first.\n private sortedCopyFields(dynamicFieldsSettings:IOPFormlyFieldSettings[]):IOPFormlyFieldSettings[] {\n const sortedCopyFields = dynamicFieldsSettings\n .filter((field) => field.key && field.key.startsWith('_meta.copy'))\n .sort((fieldA, fieldB) => {\n if (!fieldA.templateOptions\n || !fieldA.templateOptions.label\n || !fieldB.templateOptions\n || !fieldB.templateOptions.label) {\n return 0;\n }\n\n return fieldA.templateOptions.label.localeCompare(fieldB.templateOptions.label);\n });\n\n const nonCopyFields = dynamicFieldsSettings\n .filter((field) => !field.key || !field.key.startsWith('_meta.copy'));\n\n // Now all copy fields are before the non Copy fields.\n // That way, the \"Sent notifications\" is after the copy fields.\n // For the rest, it does not make a difference since the _meta\n // fields are rendered in a separate group.\n return sortedCopyFields.concat(nonCopyFields);\n }\n}\n","","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport {\n IDynamicFieldGroupConfig,\n IOPFormlyFieldSettings,\n IOPFormlyTemplateOptions,\n} from 'core-app/shared/components/dynamic-forms/typings';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport {\n DynamicFormComponent,\n} from 'core-app/shared/components/dynamic-forms/components/dynamic-form/dynamic-form.component';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { JobStatusModalService } from 'core-app/features/job-status/job-status-modal.service';\n\nexport interface ProjectTemplateOption {\n href:string|null;\n name:string;\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './new-project.component.html',\n styleUrls: ['./new-project.component.sass'],\n})\nexport class NewProjectComponent extends UntilDestroyedMixin implements OnInit {\n formUrl:string|null;\n\n resourcePath:string;\n\n dynamicFieldsSettingsPipe = this.fieldSettingsPipe.bind(this);\n\n fieldGroups:IDynamicFieldGroupConfig[];\n\n initialPayload:Record = {};\n\n text = {\n use_template: this.I18n.t('js.project.use_template'),\n no_template_selected: this.I18n.t('js.project.no_template_selected'),\n advancedSettingsLabel: this.I18n.t('js.forms.advanced_settings'),\n copySettingsLabel: this.I18n.t('js.project.copy.copy_options'),\n };\n\n hiddenFields:string[] = [\n 'identifier',\n 'active',\n 'createdAt',\n ];\n\n copyableTemplateFilter = new ApiV3FilterBuilder()\n .add('user_action', '=', ['projects/copy']) // no null values\n .add('templated', '=', true);\n\n templateOptions$:Observable = this\n .apiV3Service\n .projects\n .filtered(\n this.copyableTemplateFilter,\n {\n pageSize: '-1',\n select: 'elements/id, elements/name, elements/identifier, elements/self, elements/ancestors, total, count, pageSize',\n },\n )\n .get()\n .pipe(\n map((response) => response.elements.map((el:HalResource) => ({ href: el.href, name: el.name }))),\n );\n\n templateForm = new UntypedFormGroup({\n template: new UntypedFormControl(),\n });\n\n get templateControl() {\n return this.templateForm.get('template');\n }\n\n @ViewChild(DynamicFormComponent) dynamicForm:DynamicFormComponent;\n\n constructor(\n private apiV3Service:ApiV3Service,\n private pathHelperService:PathHelperService,\n private jobStatusModalService:JobStatusModalService,\n private I18n:I18nService,\n ) {\n super();\n }\n\n ngOnInit():void {\n this.resourcePath = this.apiV3Service.projects.path;\n this.fieldGroups = [{\n name: this.text.advancedSettingsLabel,\n fieldsFilter: (field) => !this.isMeta(field.templateOptions?.property)\n && !this.isPrimaryAttribute(field.templateOptions),\n },\n {\n name: this.text.copySettingsLabel,\n fieldsFilter: (field:IOPFormlyFieldSettings) => this.isMeta(field.templateOptions?.property),\n }];\n\n const urlParams = new URLSearchParams(window.location.search);\n\n if (urlParams.has('parent_id')) {\n this.setParentAsPayload(urlParams.get('parent_id') as string);\n }\n }\n\n onSubmitted(response:HalSource) {\n if (response._type === 'JobStatus') {\n this.jobStatusModalService.show(response.jobId as string);\n } else {\n window.location.href = this.pathHelperService.projectPath(response.identifier as string);\n }\n }\n\n onTemplateSelected(selected:{ href:string|null }) {\n this.initialPayload = {\n ...this.initialPayload,\n name: this.dynamicForm.model.name,\n _meta: {\n ...(this.initialPayload?._meta as Record),\n sendNotifications: false,\n },\n };\n this.formUrl = selected?.href ? `${selected.href}/copy` : null;\n }\n\n private isHiddenField(key:string|undefined):boolean {\n // We explicitly want to show the sendNotifications param\n if (key === '_meta.sendNotifications') {\n return false;\n }\n\n return !!key && (this.hiddenFields.includes(key) || this.isMeta(key));\n }\n\n private isMeta(property:string|undefined):boolean {\n return !!property && (property.startsWith('copy') || property === 'sendNotifications');\n }\n\n private isPrimaryAttribute(templateOptions?:IOPFormlyTemplateOptions):boolean {\n if (!templateOptions) {\n return false;\n }\n\n const nameOrParent = ['name', 'parent'].includes(templateOptions.property!);\n const noPayload = templateOptions.payloadValue == null\n || templateOptions.payloadValue?.href == null;\n\n return (templateOptions.required && !templateOptions.hasDefault && noPayload) || nameOrParent;\n }\n\n private setParentAsPayload(parentId:string) {\n const href = this.apiV3Service.projects.id(parentId).path;\n\n this.initialPayload = {\n _links: {\n parent: {\n href,\n },\n },\n };\n }\n\n private fieldSettingsPipe(dynamicFieldsSettings:IOPFormlyFieldSettings[]):IOPFormlyFieldSettings[] {\n return dynamicFieldsSettings.map((field) => ({ ...field, hide: this.isHiddenField(field.key) }));\n }\n}\n","\n
    \n \n \n \n \n
    \n\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport { IOPFormlyFieldSettings } from 'core-app/shared/components/dynamic-forms/typings';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\n\n@Component({\n templateUrl: './projects.component.html',\n styleUrls: ['./projects.component.scss'],\n})\nexport class ProjectsComponent extends UntilDestroyedMixin implements OnInit {\n projectsPath:string;\n\n formMethod = 'patch';\n\n text:{ [key:string]:string };\n\n dynamicFieldsSettingsPipe:(dynamicFieldsSettings:IOPFormlyFieldSettings[]) => IOPFormlyFieldSettings[];\n\n hiddenFields = ['identifier', 'active'];\n\n constructor(\n private _pathHelperService:PathHelperService,\n private _$state:StateService,\n private _currentProjectService:CurrentProjectService,\n ) {\n super();\n }\n\n ngOnInit():void {\n this.projectsPath = this._currentProjectService.apiv3Path!;\n this.dynamicFieldsSettingsPipe = (dynamicFieldsSettings) => dynamicFieldsSettings\n .reduce((formattedDynamicFieldsSettings:IOPFormlyFieldSettings[], dynamicFormField) => {\n if (this.isFieldHidden(dynamicFormField.key)) {\n dynamicFormField = {\n ...dynamicFormField,\n hide: true,\n };\n }\n\n return [...formattedDynamicFieldsSettings, dynamicFormField];\n }, []);\n }\n\n private isFieldHidden(name:string|undefined) {\n return this.hiddenFields.includes(name || '');\n }\n}\n","","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { NgModule } from '@angular/core';\nimport { OpenprojectHalModule } from 'core-app/features/hal/openproject-hal.module';\nimport { OpenprojectFieldsModule } from 'core-app/shared/components/fields/openproject-fields.module';\nimport { DynamicFormsModule } from 'core-app/shared/components/dynamic-forms/dynamic-forms.module';\nimport { NewProjectComponent } from 'core-app/features/projects/components/new-project/new-project.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { OpSharedModule } from 'core-app/shared/shared.module';\nimport { CopyProjectComponent } from 'core-app/features/projects/components/copy-project/copy-project.component';\nimport { ProjectsComponent } from './components/projects/projects.component';\nimport { NgSelectModule } from '@ng-select/ng-select';\n\n@NgModule({\n imports: [\n // Commons\n OpSharedModule,\n ReactiveFormsModule,\n\n NgSelectModule,\n OpenprojectHalModule,\n OpenprojectFieldsModule,\n DynamicFormsModule,\n ],\n declarations: [\n ProjectsComponent,\n NewProjectComponent,\n CopyProjectComponent,\n ],\n})\nexport class OpenprojectProjectsModule {\n}\n","import { Calendar } from '@fullcalendar/core';\nimport * as moment from 'moment/moment';\n\nexport const backgroundEvents = {\n events: [],\n id: 'background',\n color: 'red',\n textColor: 'white',\n display: 'background',\n editable: false,\n};\n\nexport function addBackgroundEvents(\n calendar:Calendar,\n nonWorkingDay:(date:Date) => boolean,\n) {\n let currentStartDate = calendar.view.activeStart;\n const currentEndDate = calendar.view.activeEnd.getTime();\n const nonWorkingDays = new Array<{ start:Date|string, end:Date|string }>();\n\n while (currentStartDate.getTime() < currentEndDate) {\n if (nonWorkingDay(currentStartDate)) {\n nonWorkingDays.push({\n start: moment(currentStartDate).format('YYYY-MM-DD'),\n end: moment(currentStartDate).add('1', 'day').format('YYYY-MM-DD'),\n });\n }\n currentStartDate = moment(currentStartDate).add('1', 'day').toDate();\n }\n nonWorkingDays.forEach((day) => {\n calendar.addEvent({ ...day }, 'background');\n });\n}\n\nexport function removeBackgroundEvents(calendar:Calendar) {\n calendar\n .getEvents()\n .filter((el) => el.source?.id === 'background')\n .forEach((el) => el.remove());\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BackRoutingService } from 'core-app/features/work-packages/components/back-routing/back-routing.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\n@Component({\n templateUrl: './back-button.component.html',\n styleUrls: ['./back-button.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'op-back-button',\n})\nexport class BackButtonComponent {\n @Input() public linkClass:string;\n\n @Input() public customBackMethod:() => unknown;\n\n public text = {\n goBack: this.I18n.t('js.button_back'),\n };\n\n constructor(readonly backRoutingService:BackRoutingService,\n readonly I18n:I18nService) {\n }\n\n public goBack():void {\n if (this.customBackMethod) {\n this.customBackMethod();\n } else {\n this.backRoutingService.goBack();\n }\n }\n}\n","\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { StateService, Transition } from '@uirouter/core';\nimport { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport interface BackRouteOptions {\n name:string;\n params:{};\n parent:string;\n baseRoute:string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class BackRoutingService {\n @InjectField() private $state:StateService;\n\n @InjectField() private keepTab:KeepTabService;\n\n private _backRoute:BackRouteOptions;\n\n constructor(readonly injector:Injector) {\n }\n\n private goToOtherState(route:string, params:Record):Promise {\n return this.$state.go(route, params);\n }\n\n private goBackToDetailsState(preferListOverSplit:boolean, baseRoute:string):void {\n if (preferListOverSplit) {\n this.goToOtherState(baseRoute, this.backRoute.params);\n } else {\n const state = `${baseRoute}.details.tabs`;\n const params = { ...this.backRoute.params, tabIdentifier: this.keepTab.currentDetailsTab };\n this.goToOtherState(state, params);\n }\n }\n\n private goBackNotToDetailsState():void {\n if (this.backRoute.parent) {\n this.goToOtherState(this.backRoute.name, this.backRoute.params).then(() => {\n this.$state.reload();\n });\n } else {\n this.goToOtherState(this.backRoute.name, this.backRoute.params);\n }\n }\n\n private goBackToPreviousState(preferListOverSplit:boolean, baseRoute:string):void {\n if (this.keepTab.isDetailsState(this.backRoute.parent)) {\n this.goBackToDetailsState(preferListOverSplit, baseRoute);\n } else {\n this.goBackNotToDetailsState();\n }\n }\n\n public goBack(preferListOverSplit = false) {\n // Default: back to list\n // When coming from a deep link or a create form\n const baseRoute = this.backRoute?.baseRoute || this.$state.current.data.baseRoute || 'work-packages.partitioned.list';\n // if we are in the first state\n if (!this.backRoute && baseRoute.includes('show')) {\n this.$state.reload();\n } else if (!this.backRoute || this.backRoute.name.includes('new')) {\n this.$state.go(baseRoute, this.$state.params);\n } else {\n this.goBackToPreviousState(preferListOverSplit, baseRoute);\n }\n }\n\n public goToBaseState() {\n const baseRoute = this.$state.current.data.baseRoute || 'work-packages.partitioned.list';\n this.$state.go(baseRoute, this.$state.params);\n }\n\n public sync(transition:Transition) {\n const fromState = transition.from();\n const toState = transition.to();\n\n // Set backRoute to know where we came from\n if (fromState.name\n && fromState.data\n && toState.data\n && fromState.data.parent !== toState.data.parent) {\n const paramsFromCopy = { ...transition.params('from') };\n this.backRoute = {\n name: fromState.name,\n params: paramsFromCopy,\n parent: fromState.data.parent,\n baseRoute: fromState.data.baseRoute,\n };\n }\n }\n\n public set backRoute(route:BackRouteOptions) {\n this._backRoute = route;\n }\n\n public get backRoute():BackRouteOptions {\n return this._backRoute;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Output,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { EditFormComponent } from 'core-app/shared/components/fields/edit/edit-form/edit-form.component';\n\n@Component({\n templateUrl: './wp-edit-actions-bar.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'wp-edit-actions-bar',\n})\nexport class WorkPackageEditActionsBarComponent {\n @Output('onSave') public onSave = new EventEmitter();\n\n @Output('onCancel') public onCancel = new EventEmitter();\n\n public _saving = false;\n\n public text = {\n save: this.I18n.t('js.button_save'),\n cancel: this.I18n.t('js.button_cancel'),\n };\n\n constructor(private I18n:I18nService,\n private editForm:EditFormComponent,\n private cdRef:ChangeDetectorRef) {\n }\n\n public set saving(active:boolean) {\n this._saving = active;\n this.cdRef.detectChanges();\n }\n\n public get saving() {\n return this._saving;\n }\n\n public save():void {\n if (this.saving) {\n return;\n }\n\n this.saving = true;\n this.editForm\n .submit()\n .then(() => {\n this.saving = false;\n this.onSave.emit();\n })\n .catch(() => {\n this.saving = false;\n });\n }\n\n public cancel():void {\n this.editForm.cancel();\n this.onCancel.emit();\n }\n}\n","
    \n \n \n \n \n \n \n \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Moment } from 'moment';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { OnInit, Directive } from '@angular/core';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\n\n@Directive()\nexport abstract class AbstractDateTimeValueController extends UntilDestroyedMixin implements OnInit {\n public filter:QueryFilterInstanceResource;\n\n constructor(\n protected I18n:I18nService,\n protected timezoneService:TimezoneService,\n ) {\n super();\n }\n\n ngOnInit() {\n _.remove(this.filter.values as string[], (value) => !(value === '' || this.timezoneService.isValidISODateTime(value)));\n }\n\n public abstract get lowerBoundary():Moment|null;\n\n public abstract get upperBoundary():Moment|null;\n\n public isoDateParser(data:any) {\n if (!this.timezoneService.isValidISODate(data)) {\n return '';\n }\n const d = this.timezoneService.parseISODatetime(data);\n return this.timezoneService.formattedISODateTime(d);\n }\n\n public isoDateFormatter(data:any) {\n if (!this.timezoneService.isValidISODateTime(data)) {\n return '';\n }\n const d = this.timezoneService.parseISODatetime(data);\n return this.timezoneService.formattedISODate(d);\n }\n\n public get isTimeZoneDifferent() {\n const value = this.lowerBoundary || this.upperBoundary;\n\n if (!value) {\n return false;\n }\n return value.hours() !== 0 || value.minutes() !== 0;\n }\n\n public get timeZoneText() {\n if (this.lowerBoundary && this.upperBoundary) {\n return this.I18n.t('js.filter.time_zone_converted.two_values',\n {\n from: this.lowerBoundary.format('YYYY-MM-DD HH:mm'),\n to: this.upperBoundary.format('YYYY-MM-DD HH:mm'),\n });\n } if (this.upperBoundary) {\n return this.I18n.t('js.filter.time_zone_converted.only_end',\n { to: this.upperBoundary.format('YYYY-MM-DD HH:mm') });\n } if (this.lowerBoundary) {\n return this.I18n.t('js.filter.time_zone_converted.only_start',\n { from: this.lowerBoundary.format('YYYY-MM-DD HH:mm') });\n }\n\n return '';\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\n\n@Component({\n selector: 'op-filter-boolean-value',\n templateUrl: './filter-boolean-value.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterBooleanValueComponent {\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new EventEmitter();\n\n constructor(readonly I18n:I18nService) {\n }\n\n public get value():HalResource | string {\n // Boolean fields should be initialized as true by default\n if (this.filter.values.length === 0) {\n this.filter.values[0] = 't';\n this.filterChanged.emit(this.filter);\n }\n return this.filter.values[0];\n }\n\n public onFilterUpdated(val:string | HalResource) {\n this.filter.values[0] = val;\n this.filterChanged.emit(this.filter);\n }\n}\n","\n","\n \n \n\n\n\n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n WorkPackageViewFiltersService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { from, merge, Observable } from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport {\n WorkPackageFiltersService,\n} from 'core-app/features/work-packages/components/filters/wp-filters/wp-filters.service';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\n\n@Component({\n templateUrl: './filter-container.directive.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'op-filter-container',\n})\nexport class WorkPackageFilterContainerComponent extends UntilDestroyedMixin implements OnInit, OnDestroy {\n @Input('showFilterButton') showFilterButton = false;\n\n @Input('filterButtonText') filterButtonText:string = I18n.t('js.button_filter');\n\n @Output() public filtersChanged = new DebouncedEventEmitter(componentDestroyed(this));\n\n public visible$:Observable;\n\n public filters = this.wpTableFilters.current;\n\n public loaded = false;\n\n constructor(\n readonly wpTableFilters:WorkPackageViewFiltersService,\n readonly cdRef:ChangeDetectorRef,\n readonly wpFiltersService:WorkPackageFiltersService,\n readonly wpListService:WorkPackagesListService,\n ) {\n super();\n this.visible$ = this.wpFiltersService.observeUntil(componentDestroyed(this));\n }\n\n ngOnInit():void {\n merge(\n this.wpTableFilters.pristine$(),\n from(this.wpListService.conditionallyLoadForm()),\n )\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.filters = this.wpTableFilters.current;\n this.loaded = true;\n this.cdRef.detectChanges();\n });\n }\n\n public replaceIfComplete(filters:QueryFilterInstanceResource[]) {\n const available = filters.filter((el) => this.wpTableFilters.isAvailable(el));\n this.wpTableFilters.replaceIfComplete(available);\n this.filtersChanged.emit(available);\n }\n}\n","\n\n\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component,\n Input,\n HostBinding,\n OnInit,\n Output,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport { Moment } from 'moment';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { AbstractDateTimeValueController } from '../abstract-filter-date-time-value/abstract-filter-date-time-value.controller';\n\n@Component({\n selector: 'op-filter-date-time-value',\n templateUrl: './filter-date-time-value.component.html',\n})\nexport class FilterDateTimeValueComponent extends AbstractDateTimeValueController implements OnInit {\n @HostBinding('id') get id() {\n return `div-values-${this.filter.id}`;\n }\n\n @HostBinding('class.inline-label') className = true;\n\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new DebouncedEventEmitter(componentDestroyed(this));\n\n constructor(readonly I18n:I18nService,\n readonly timezoneService:TimezoneService) {\n super(I18n, timezoneService);\n }\n\n public get value():HalResource|string {\n return this.filter.values[0];\n }\n\n public get valueString() {\n return this.filter.values[0].toString();\n }\n\n public set value(val) {\n this.filter.values = [val as string];\n this.filterChanged.emit(this.filter);\n }\n\n public get lowerBoundary():Moment|null {\n if (this.value && this.timezoneService.isValidISODateTime(this.valueString)) {\n return this.timezoneService.parseDatetime(this.valueString);\n }\n\n return null;\n }\n\n public get upperBoundary():Moment|null {\n if (this.value && this.timezoneService.isValidISODateTime(this.valueString)) {\n return this.timezoneService.parseDatetime(this.valueString).add(24, 'hours');\n }\n\n return null;\n }\n}\n","\n\n\n\n\n\n\n\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Moment } from 'moment';\nimport {\n Component,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { AbstractDateTimeValueController } from '../abstract-filter-date-time-value/abstract-filter-date-time-value.controller';\nimport { validDate } from 'core-app/shared/components/datepicker/helpers/date-modal.helpers';\n\n@Component({\n selector: 'op-filter-date-times-value',\n templateUrl: './filter-date-times-value.component.html',\n})\nexport class FilterDateTimesValueComponent extends AbstractDateTimeValueController implements OnInit {\n @HostBinding('id') get id() {\n return `div-values-${this.filter.id}`;\n }\n\n @HostBinding('class.inline-label') className = true;\n\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new DebouncedEventEmitter(componentDestroyed(this));\n\n readonly text = {\n spacer: this.I18n.t('js.filter.value_spacer'),\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly timezoneService:TimezoneService,\n ) {\n super(I18n, timezoneService);\n }\n\n public get begin():string {\n return (this.filter.values[0] || '') as string;\n }\n\n public set begin(val:string) {\n this.filter.values[0] = val || '';\n this.filterChanged.emit(this.filter);\n }\n\n public get end():string {\n return (this.filter.values[1] || '') as string;\n }\n\n public set end(val:string) {\n this.filter.values = [this.begin, val || ''] as string[];\n this.filterChanged.emit(this.filter);\n }\n\n public get lowerBoundary():Moment|null {\n if (this.begin && this.timezoneService.isValidISODateTime(this.begin.toString())) {\n return this.timezoneService.parseDatetime(this.begin.toString());\n }\n return null;\n }\n\n public get upperBoundary():Moment|null {\n if (this.end && this.timezoneService.isValidISODateTime(this.end.toString())) {\n return this.timezoneService.parseDatetime(this.end.toString());\n }\n return null;\n }\n\n public parseBegin(date:string|null) {\n if (date === null || !validDate(date)) {\n return;\n }\n\n if (date === '') {\n this.begin = date;\n } else {\n const parsed = this\n .timezoneService\n .parseISODatetime(date)\n .startOf('day')\n .utc();\n\n this.begin = this.timezoneService.formattedISODateTime(parsed);\n }\n }\n\n public parseEnd(date:string|null) {\n if (date === null || !validDate(date)) {\n return;\n }\n\n if (date === '') {\n this.end = date;\n } else {\n const parsed = this\n .timezoneService\n .parseISODatetime(date)\n .endOf('day')\n .utc();\n\n this.end = this.timezoneService.formattedISODateTime(parsed);\n }\n }\n\n public formatter(data:string[]):string[] {\n return data.map((date) => this.isoDateFormatter(date));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport * as moment from 'moment-timezone';\n\n@Component({\n selector: 'op-filter-date-value',\n templateUrl: './filter-date-value.component.html',\n})\nexport class FilterDateValueComponent extends UntilDestroyedMixin {\n @HostBinding('id') get id() {\n return `div-values-${this.filter.id}`;\n }\n\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new DebouncedEventEmitter(componentDestroyed(this));\n\n constructor(readonly timezoneService:TimezoneService,\n readonly I18n:I18nService) {\n super();\n }\n\n public get value():string {\n return this.filter.values[0] as string;\n }\n\n public set value(val) {\n this.filter.values = [val];\n this.filterChanged.emit(this.filter);\n }\n\n valueChanged(val:string) {\n const parsed = this.parser(val);\n if (parsed) {\n this.value = val;\n }\n }\n\n public parser(data:string) {\n if (moment(data, 'YYYY-MM-DD', true).isValid()) {\n return data;\n }\n return null;\n }\n\n public formatter(data:string) {\n if (moment(data, 'YYYY-MM-DD', true).isValid()) {\n const d = this.timezoneService.parseDate(data);\n return this.timezoneService.formattedISODate(d);\n }\n return null;\n }\n}\n","\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport * as moment from 'moment';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\n\n@Component({\n selector: 'op-filter-dates-value',\n templateUrl: './filter-dates-value.component.html',\n})\nexport class FilterDatesValueComponent extends UntilDestroyedMixin {\n @HostBinding('id') get id() {\n return `div-values-${this.filter.id}`;\n }\n\n @HostBinding('class.inline-label') className = true;\n\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new DebouncedEventEmitter(componentDestroyed(this));\n\n readonly text = {\n spacer: this.I18n.t('js.filter.value_spacer'),\n };\n\n constructor(\n readonly timezoneService:TimezoneService,\n readonly I18n:I18nService,\n ) {\n super();\n }\n\n public get value():string[] {\n return (this.filter.values || []) as string[];\n }\n\n public set value(val:string[]) {\n this.filter.values = val;\n this.filterChanged.emit(this.filter);\n }\n\n public get begin():string {\n return (this.filter.values[0] || '') as string;\n }\n\n public get end():string {\n return (this.filter.values[1] || '') as string;\n }\n\n public parser(data:string):string|null {\n if (moment(data, 'YYYY-MM-DD', true).isValid()) {\n return data;\n }\n return null;\n }\n\n public formatter(data:string):string|null {\n if (moment(data, 'YYYY-MM-DD', true).isValid()) {\n const d = this.timezoneService.parseDate(data);\n return this.timezoneService.formattedISODate(d);\n }\n return null;\n }\n}\n","\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, Input, Output } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\n\n@Component({\n selector: 'op-filter-integer-value',\n templateUrl: './filter-integer-value.component.html',\n})\nexport class FilterIntegerValueComponent extends UntilDestroyedMixin {\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new DebouncedEventEmitter(componentDestroyed(this));\n\n constructor(readonly I18n:I18nService,\n readonly schemaCache:SchemaCacheService) {\n super();\n }\n\n public get value() {\n return parseInt(this.filter.values[0] as string);\n }\n\n public set value(val) {\n if (typeof (val) === 'number') {\n this.filter.values = [val.toString()];\n } else {\n this.filter.values = [];\n }\n\n this.filterChanged.emit(this.filter);\n }\n\n public get unit() {\n switch ((this.schema.filter.allowedValues as QueryFilterResource[])[0].id) {\n case 'startDate':\n case 'dueDate':\n case 'updatedAt':\n case 'createdAt':\n return this.I18n.t('js.work_packages.time_relative.days');\n default:\n return '';\n }\n }\n\n private get schema() {\n return this.schemaCache.of(this.filter);\n }\n}\n","
    \n \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, Input, OnInit, Output } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport {\n IProjectAutocompleteItem,\n} from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocomplete-item';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { firstValueFrom } from 'rxjs';\nimport { IAPIFilter } from 'core-app/shared/components/autocompleter/op-autocompleter/typings';\n\n@Component({\n selector: 'op-filter-project',\n templateUrl: './filter-project.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterProjectComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new DebouncedEventEmitter(componentDestroyed(this), 0);\n\n additionalProjectApiFilters:IAPIFilter[] = [];\n\n constructor(\n readonly I18n:I18nService,\n readonly apiV3Service:ApiV3Service,\n readonly currentProjectService:CurrentProjectService,\n ) {\n super();\n }\n\n ngOnInit():void {\n const projectID = this.currentProjectService.id;\n\n this.additionalProjectApiFilters.push({ name: 'active', operator: '=', values: ['t'] });\n\n if (projectID && (this.filter.id === 'subprojectId' || this.filter.id === 'onlySubproject')) {\n this.additionalProjectApiFilters.push({ name: 'ancestor', operator: '=', values: [projectID] });\n }\n }\n\n async onChange(val:HalResource[]|IProjectAutocompleteItem[]):Promise {\n if (val === this.filter.values || val === undefined) {\n return;\n }\n\n if (!val || (val && val.length === 0)) {\n this.filter.values.length = 0;\n this.filterChanged.emit(this.filter);\n return;\n }\n\n // The project autocompleter does not return HalResources, but most filters want them.\n // Here we change from one to the other\n const projects = await firstValueFrom(\n this.apiV3Service.projects.list({\n filters: [\n ['id', '=', val.map((p:HalResource|IProjectAutocompleteItem) => String(p.id) || '')],\n ],\n }),\n );\n\n this.filter.values = projects.elements;\n this.filterChanged.emit(this.filter);\n }\n}\n","\n \n\n","import { NgSelectComponent } from '@ng-select/ng-select';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport {\n map,\n shareReplay,\n switchMap,\n withLatestFrom,\n} from 'rxjs/operators';\nimport { take } from 'rxjs/internal/operators/take';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Resource } from 'core-app/core/apiv3/cache/cachable-apiv3-resource';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { compareByHref } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { MAGIC_FILTER_AUTOCOMPLETE_PAGE_SIZE } from 'core-app/core/apiv3/helpers/get-paginated-results';\n\n@Component({\n selector: 'op-filter-searchable-multiselect-value',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './filter-searchable-multiselect-value.component.html',\n})\nexport class FilterSearchableMultiselectValueComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public filter:QueryFilterInstanceResource;\n\n @Input() public shouldFocus = false;\n\n @Output() public filterChanged = new EventEmitter();\n\n private meValue = this.halResourceService.createHalResource({\n _links: {\n self: {\n href: this.apiV3Service.users.me.path,\n title: this.I18n.t('js.label_me'),\n },\n },\n }, true);\n\n autocompleterFn = (searchTerm:string):Observable => this.autocomplete(searchTerm);\n\n initialRequest$:Observable;\n\n itemTracker = (item:HalResource):string => item.href || item.id || item.name;\n\n groupByFn = (item:HalResource):string|null => {\n if (!this.isVersionResource) return null;\n const project = item.definingProject as HalResource | undefined;\n return project?.name || this.I18n.t('js.project.not_available');\n };\n\n compareByHref = compareByHref;\n\n resourceType:string|null = null;\n\n readonly text = {\n placeholder: this.I18n.t('js.placeholders.selection'),\n };\n\n public get value():string[]|HalResource[] {\n return this.filter.values;\n }\n\n @ViewChild('ngSelectInstance', { static: true }) ngSelectInstance:NgSelectComponent;\n\n constructor(\n readonly halResourceService:HalResourceService,\n readonly apiV3Service:ApiV3Service,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n protected currentProject:CurrentProjectService,\n protected currentUser:CurrentUserService,\n readonly halNotification:HalResourceNotificationService,\n ) {\n super();\n }\n\n ngOnInit():void {\n if (this.filter.id === 'id') {\n this.resourceType = 'work_packages';\n }\n\n this.initialRequest$ = this\n .loadCollection('')\n .pipe(\n shareReplay(1),\n );\n }\n\n private autocomplete(matching:string):Observable {\n return this\n .initialRequest$\n .pipe(\n switchMap((initialLoad) => {\n // If we already loaded all values, just compare in the frontend\n if (initialLoad.count === initialLoad.total) {\n return this.matchingItems(this.filterEmptyElements(initialLoad.elements), matching);\n }\n\n // Otherwise, request the matching API call\n return this\n .loadCollection(matching)\n .pipe(\n switchMap(\n (collection) =>\n this.withMeValue(\n matching,\n this.filterEmptyElements(collection.elements),\n ),\n ),\n );\n }),\n );\n }\n\n private filterEmptyElements(elements:HalResource[]):HalResource[] {\n return elements.filter((element) => element.name.trim().length !== 0);\n }\n\n matchingItems(elements:HalResource[], matching:string):Observable {\n let filtered:HalResource[];\n\n if (matching === '' || !matching) {\n filtered = elements;\n } else {\n const lowered = matching.toLowerCase();\n filtered = elements.filter((el) => (el.id as string).includes(lowered) || el.name.toLowerCase().includes(lowered));\n }\n\n return this.withMeValue(matching, filtered);\n }\n\n private loadCollection(matching:string):Observable {\n const filters:ApiV3FilterBuilder = this.createFilters(matching);\n\n return (this.apiV3Service.collectionFromString(this.allowedValuesLink) as\n ApiV3ResourceCollection)\n .filtered(filters, { pageSize: `${MAGIC_FILTER_AUTOCOMPLETE_PAGE_SIZE}` })\n .get();\n }\n\n private createFilters(matching:string):ApiV3FilterBuilder {\n const filters = new ApiV3FilterBuilder();\n\n if (matching) {\n filters.add('typeahead', '**', [matching]);\n }\n\n return filters;\n }\n\n public setValues(val:string|HalResource|HalResource[]) {\n let values:string[]|HalResource[];\n\n if (typeof val === 'string') {\n values = val.length > 0 ? [val] : [];\n } else {\n values = Array.isArray(val) ? val : [val];\n }\n\n this.filter.values = values;\n this.filterChanged.emit(this.filter);\n this.cdRef.detectChanges();\n }\n\n private get allowedValuesLink():string {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n const { href } = this.filter.currentSchema!.values!.allowedValues as { href:string };\n\n return href;\n }\n\n private withMeValue(matching:string, elements:HalResource[]):Observable {\n if (!this.isUserResource || (!!matching && matching !== 'me')) {\n return of(elements);\n }\n\n return this\n .currentUser\n .isLoggedIn$\n .pipe(\n take(1),\n withLatestFrom(this.currentUser.user$),\n map(([logged, user]) => {\n if (logged && user) {\n return [this.meValue].concat(elements);\n }\n\n return elements;\n }),\n );\n }\n\n private get isUserResource() {\n const type = _.get(this.filter.currentSchema, 'values.type', null) as string;\n return type && type.indexOf('User') > 0;\n }\n\n private get isVersionResource() {\n const type = _.get(this.filter.currentSchema, 'values.type', null) as string;\n return type && type.indexOf('Version') > 0;\n }\n}\n","
    \n\n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, Input, Output } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\n\n@Component({\n selector: 'op-filter-string-value',\n templateUrl: './filter-string-value.component.html',\n})\nexport class FilterStringValueComponent extends UntilDestroyedMixin {\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new DebouncedEventEmitter(componentDestroyed(this));\n\n readonly text = {\n enter_text: this.I18n.t('js.work_packages.description_enter_text'),\n };\n\n constructor(readonly I18n:I18nService) {\n super();\n }\n\n public get value():HalResource|string {\n return this.filter.values[0];\n }\n\n public set value(val) {\n if (val.length) {\n this.filter.values[0] = val;\n } else {\n this.filter.values.length = 0;\n }\n this.filterChanged.emit(this.filter);\n }\n}\n","
    \n \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResourceSortingService } from 'core-app/features/hal/services/hal-resource-sorting.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { compareByHref } from 'core-app/shared/helpers/angular/tracking-functions';\n\n@Component({\n selector: 'op-filter-toggled-multiselect-value',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './filter-toggled-multiselect-value.component.html',\n})\nexport class FilterToggledMultiselectValueComponent implements OnInit, AfterViewInit {\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new EventEmitter();\n\n @ViewChild('ngSelectInstance', { static: true }) ngSelectInstance:NgSelectComponent;\n\n public availableOptions:HalResource[] = [];\n\n itemTracker = (item:HalResource):string => item.href || item.id || item.name;\n\n compareByHref = compareByHref;\n\n readonly text = {\n placeholder: this.I18n.t('js.placeholders.selection'),\n };\n\n constructor(\n readonly halResourceService:HalResourceService,\n readonly halSorting:HalResourceSortingService,\n readonly PathHelper:PathHelperService,\n readonly apiV3Service:ApiV3Service,\n readonly currentUser:CurrentUserService,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n ) {\n }\n\n ngOnInit():void {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n const values = (this.filter.currentSchema!.values!.allowedValues as HalResource[]);\n this.availableOptions = this.halSorting.sort(values);\n }\n\n ngAfterViewInit():void {\n if (this.ngSelectInstance && this.shouldFocus) {\n this.ngSelectInstance.focus();\n }\n }\n\n public get value():unknown[] {\n return this.filter.values;\n }\n\n public setValues(val:HalResource[]|string[]|string|HalResource):void {\n this.filter.values = _.castArray(val) as HalResource[]|string[];\n this.filterChanged.emit(this.filter);\n this.cdRef.detectChanges();\n }\n}\n","\n \n\n","\n \n \n \n \n \n\n \n
    \n\n \n {{ filter.name }}\n {{ text.open_filter }}\n \n\n \n \n \n \n\n \n
    \n \n \n
    \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n \n
    \n
    \n\n \n\n
    \n \n \n \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n compareByHref,\n halHref,\n} from 'core-app/shared/helpers/angular/tracking-functions';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\n\n@Component({\n selector: '[query-filter]',\n styleUrls: ['./query-filter.component.sass'],\n templateUrl: './query-filter.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class QueryFilterComponent implements OnInit {\n @HostBinding('class.op-query-filter') className = true;\n\n @Input() public shouldFocus = false;\n\n @Input() public filter:QueryFilterInstanceResource;\n\n @Output() public filterChanged = new EventEmitter();\n\n @Output() public deactivateFilter = new EventEmitter();\n\n public availableOperators:any;\n\n public showValuesInput = false;\n\n public eeShowBanners = false;\n\n public baselineIncompatibleFilter = false;\n\n public trackByHref = halHref;\n\n public compareByHref = compareByHref;\n\n public text = {\n open_filter: this.I18n.t('js.filter.description.text_open_filter'),\n close_filter: this.I18n.t('js.filter.description.text_close_filter'),\n label_filter_add: this.I18n.t('js.work_packages.label_filter_add'),\n upsale_for_more: this.I18n.t('js.filter.upsale_for_more'),\n upsale_link: this.I18n.t('js.filter.upsale_link'),\n button_delete: this.I18n.t('js.button_delete'),\n incompatible_filter: this.I18n.t('js.work_packages.filters.baseline_incompatible'),\n };\n\n constructor(\n readonly wpTableFilters:WorkPackageViewFiltersService,\n readonly wpTableBaseline:WorkPackageViewBaselineService,\n readonly schemaCache:SchemaCacheService,\n readonly I18n:I18nService,\n readonly currentProject:CurrentProjectService,\n readonly bannerService:BannersService,\n ) {\n }\n\n public onFilterUpdated(filter:QueryFilterInstanceResource) {\n this.filter = filter;\n this.showValuesInput = this.showValues();\n this.filterChanged.emit();\n }\n\n public removeThisFilter() {\n this.deactivateFilter.emit(this.filter);\n }\n\n public get valueType():string|undefined {\n if (this.filter.currentSchema && this.filter.currentSchema.values) {\n return this.filter.currentSchema.values.type;\n }\n\n return undefined;\n }\n\n ngOnInit() {\n this.eeShowBanners = this.bannerService.eeShowBanners;\n this.availableOperators = this.schemaCache.of(this.filter).availableOperators;\n this.showValuesInput = this.showValues();\n this.baselineIncompatibleFilter = this.wpTableBaseline.isActive() && this.wpTableBaseline.isIncompatibleFilter(this.filter.id);\n }\n\n private showValues() {\n return this.filter.currentSchema!.isValueRequired() && this.filter.currentSchema!.values!.type !== '[1]Boolean';\n }\n}\n","
    \n \n\n \n \n\n
      \n
    • \n \n\n
      \n \n \n
      \n
    • \n\n
    • \n\n \n
    • \n
    • \n
      \n\n
    • \n\n
    • \n \n \n \n\n
      \n \n \n
      \n
    • \n
    \n\n 0\"\n class=\"op-toast -warning\">\n
    \n

    \n

    \n
    \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { DebouncedEventEmitter } from 'core-app/shared/helpers/rxjs/debounced-event-emitter';\nimport { trackByName } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { WorkPackageFiltersService } from 'core-app/features/work-packages/components/filters/wp-filters/wp-filters.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport { combineLatestWith } from 'rxjs';\nimport { repositionDropdownBugfix } from 'core-app/shared/components/autocompleter/op-autocompleter/autocompleter.helper';\nimport { AlternativeSearchService } from 'core-app/shared/components/work-packages/alternative-search.service';\n\nconst ADD_FILTER_SELECT_INDEX = -1;\n\n@Component({\n selector: 'op-query-filters',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './query-filters.component.html',\n})\nexport class QueryFiltersComponent extends UntilDestroyedMixin implements OnInit, OnChanges {\n @ViewChild(NgSelectComponent) public ngSelectComponent:NgSelectComponent;\n\n @Input() public filters:QueryFilterInstanceResource[];\n\n @Input() public showCloseFilter = false;\n\n @Output() public filtersChanged = new DebouncedEventEmitter(\n componentDestroyed(this),\n 500,\n );\n\n public remainingFilters:any[] = [];\n\n public focusElementIndex = 0;\n\n public baselineIncompatibleFilters:string[] = [];\n\n public trackByName = trackByName;\n\n public text = {\n open_filter: this.I18n.t('js.filter.description.text_open_filter'),\n label_filter_add: this.I18n.t('js.work_packages.label_filter_add'),\n close_filter: this.I18n.t('js.filter.description.text_close_filter'),\n close_form: this.I18n.t('js.close_form_title'),\n selected_filter_list: this.I18n.t('js.label_selected_filter_list'),\n button_delete: this.I18n.t('js.button_delete'),\n please_select: this.I18n.t('js.placeholders.selection'),\n filter_by_text: this.I18n.t('js.work_packages.label_filter_by_text'),\n baseline_warning: this.I18n.t('js.work_packages.filters.baseline_warning'),\n };\n\n constructor(\n readonly wpTableFilters:WorkPackageViewFiltersService,\n readonly wpTableBaseline:WorkPackageViewBaselineService,\n readonly wpFiltersService:WorkPackageFiltersService,\n readonly I18n:I18nService,\n readonly alternativeSearchService:AlternativeSearchService,\n readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit():void {\n this.wpTableFilters.live$()\n .pipe(\n combineLatestWith(this.wpTableBaseline.live$()),\n this.untilDestroyed(),\n )\n .subscribe(([filters]) => {\n if (this.wpTableBaseline.isActive()) {\n this.baselineIncompatibleFilters = this.wpTableBaseline.detectIncompatibleFilters(filters);\n } else {\n this.baselineIncompatibleFilters = [];\n }\n this.cdRef.detectChanges();\n });\n }\n\n ngOnChanges() {\n this.updateRemainingFilters();\n }\n\n public onFilterAdded(filterToBeAdded:QueryFilterResource) {\n if (filterToBeAdded) {\n const newFilter = this.wpTableFilters.instantiate(filterToBeAdded);\n this.filters.push(newFilter);\n\n const index = this.currentFilterLength();\n this.updateFilterFocus(index);\n this.updateRemainingFilters();\n\n this.filtersChanged.emit(this.filters);\n this.ngSelectComponent.clearItem(filterToBeAdded);\n }\n }\n\n public closeFilter() {\n this.wpFiltersService.toggleVisibility();\n }\n\n public deactivateFilter(removedFilter:QueryFilterInstanceResource) {\n const index = this.filters.indexOf(removedFilter);\n _.remove(this.filters, (f) => f.id === removedFilter.id);\n\n this.filtersChanged.emit(this.filters);\n\n this.updateFilterFocus(index);\n this.updateRemainingFilters();\n }\n\n public get isSecondSpacerVisible():boolean {\n const hasSearch = !!_.find(this.filters, (f) => f.id === 'search');\n const hasAvailableFilter = !!this.filters.find((f) => f.id !== 'search' && this.isFilterAvailable(f));\n\n return hasSearch && hasAvailableFilter;\n }\n\n private updateRemainingFilters() {\n this.remainingFilters = _.sortBy(this.wpTableFilters.remainingVisibleFilters(this.filters), 'name');\n }\n\n private updateFilterFocus(index:number) {\n const activeFilterCount = this.currentFilterLength();\n\n if (activeFilterCount === 0) {\n this.focusElementIndex = ADD_FILTER_SELECT_INDEX;\n } else {\n const filterIndex = (index < activeFilterCount) ? index : activeFilterCount - 1;\n const filter = this.currentFilterAt(filterIndex);\n this.focusElementIndex = this.filters.indexOf(filter);\n }\n }\n\n public currentFilterLength() {\n return this.filters.length;\n }\n\n public currentFilterAt(index:number) {\n return this.filters[index];\n }\n\n public isFilterAvailable(filter:QueryFilterResource):boolean {\n return (this.wpTableFilters.availableFilters.some((availableFilter) => availableFilter.id === filter.id)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n && !(this.wpTableFilters.hidden.includes(filter.id) || filter.isTemplated()));\n }\n\n public onOpen() {\n repositionDropdownBugfix(this.ngSelectComponent);\n }\n\n searchFunction = (term:string, currentItem:QueryFilterResource):boolean => {\n return this.alternativeSearchService.searchFunction(term, currentItem);\n };\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, EventEmitter, Output } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { Subject } from 'rxjs';\nimport {\n debounceTime, distinctUntilChanged, map, tap,\n} from 'rxjs/operators';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { input } from '@openproject/reactivestates';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\n\n@Component({\n selector: 'wp-filter-by-text-input',\n templateUrl: './quick-filter-by-text-input.html',\n})\n\nexport class WorkPackageFilterByTextInputComponent extends UntilDestroyedMixin {\n @Output() public deactivateFilter = new EventEmitter();\n\n public text = {\n createWithDropdown: this.I18n.t('js.work_packages.create.button'),\n createButton: this.I18n.t('js.label_work_package'),\n explanation: this.I18n.t('js.label_create_work_package'),\n placeholder: this.I18n.t('js.work_packages.placeholder_filter_by_text'),\n };\n\n /** Observable to the current search filter term */\n public searchTerm = input('');\n\n /** Input for search requests */\n public searchTermChanged:Subject = new Subject();\n\n constructor(readonly I18n:I18nService,\n readonly querySpace:IsolatedQuerySpace,\n readonly wpTableFilters:WorkPackageViewFiltersService) {\n super();\n\n this.wpTableFilters\n .pristine$()\n .pipe(\n this.untilDestroyed(),\n map(() => {\n const currentSearchFilter = this.wpTableFilters.find('search');\n return currentSearchFilter ? (currentSearchFilter.values[0] as string) : '';\n }),\n )\n .subscribe((upstreamTerm:string) => {\n if (!this.searchTerm.value || this.searchTerm.isValueOlderThan(500)) {\n this.searchTerm.putValue(upstreamTerm);\n }\n });\n\n this.searchTermChanged\n .pipe(\n this.untilDestroyed(),\n distinctUntilChanged(),\n tap((val) => this.searchTerm.putValue(val)),\n debounceTime(500),\n )\n .subscribe((term) => {\n if (term.length > 0) {\n this.wpTableFilters.replace('search', (filter) => {\n filter.operator = filter.findOperator('**')!;\n filter.values = [term];\n });\n } else {\n const filter = this.wpTableFilters.find('search');\n\n this.wpTableFilters.remove(filter!);\n\n this.deactivateFilter.emit(filter);\n }\n });\n }\n}\n","\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { input } from '@openproject/reactivestates';\nimport { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Injectable()\nexport class WorkPackageFiltersService {\n private readonly state = input(false);\n\n public get visible() {\n return this.state.getValueOr(false);\n }\n\n public set visible(val:boolean) {\n this.state.putValue(val);\n }\n\n public observeUntil(unsubscribe:Observable) {\n return this.state.values$().pipe(takeUntil(unsubscribe));\n }\n\n public toggleVisibility() {\n this.state.doModify((current) => !current);\n }\n}\n","import { IWorkPackageTimestamp } from 'core-app/features/hal/resources/work-package-timestamp-resource';\nimport { ISchemaProxy } from 'core-app/features/hal/schemas/schema-proxy';\nimport { DEFAULT_TIMESTAMP } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport * as moment from 'moment-timezone';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\n\nexport type BaselineOption = 'oneDayAgo'|'lastWorkingDay'|'oneWeekAgo'|'oneMonthAgo'|'aSpecificDate'|'betweenTwoSpecificDates';\n\nexport interface BaselineTimestamp {\n date:string;\n time:string;\n offset:string;\n}\n\nconst BASELINE_OPTIONS = ['oneDayAgo', 'lastWorkingDay', 'oneWeekAgo', 'oneMonthAgo', 'aSpecificDate', 'betweenTwoSpecificDates'];\n\nexport function baselineFilterFromValue(selectedDates:string[]):BaselineOption|null {\n if (selectedDates.length < 2) {\n return null;\n }\n\n const first = selectedDates[0].split('@')[0];\n if (BASELINE_OPTIONS.includes(first)) {\n return first as BaselineOption;\n }\n\n if (selectedDates[1] === DEFAULT_TIMESTAMP) {\n return 'aSpecificDate';\n }\n\n return 'betweenTwoSpecificDates';\n}\n\nexport function getPartsFromTimestamp(value:string):BaselineTimestamp|null {\n if (value.includes('@')) {\n const [date, timeWithZone] = value.split(/[@]/);\n const [time, offset] = timeWithZone.split(/(?=[+-])/);\n return { date, time, offset };\n }\n\n if (value !== 'PT0S') {\n const dateObj = moment.parseZone(value);\n const date = dateObj.format('YYYY-MM-DD');\n const time = dateObj.format('HH:mm');\n const offset = dateObj.format('Z');\n\n return { date, time, offset };\n }\n\n return null;\n}\n\nexport function attributeChanged(base:IWorkPackageTimestamp, schema:ISchemaProxy):boolean {\n return !!schema\n .availableAttributes\n .find((attribute) => {\n const name = schema.mappedName(attribute);\n return Object.prototype.hasOwnProperty.call(base, name) || Object.prototype.hasOwnProperty.call(base.$links, name);\n });\n}\n\nexport function getBaselineState(workPackage:WorkPackageResource, schemaService:SchemaCacheService):string {\n let state = '';\n const schema = schemaService.of(workPackage);\n const timestamps = workPackage.attributesByTimestamp || [];\n if (timestamps.length > 1) {\n const base = timestamps[0];\n const compare = timestamps[1];\n if ((!base._meta.exists && compare._meta.exists) || (!base._meta.matchesFilters && compare._meta.matchesFilters)) {\n state = 'added';\n } else if ((base._meta.exists && !compare._meta.exists) || (base._meta.matchesFilters && !compare._meta.matchesFilters)) {\n state = 'removed';\n } else if (attributeChanged(base, schema)) {\n state = 'updated';\n }\n } else {\n state = '';\n }\n return state;\n}\n\nexport function offsetToUtcString(offset:string) {\n const mappedOffset = offset\n .replace(/^([+-])0/, '$1')\n .replace(':00', '')\n .replace(':30', '.5');\n\n return `UTC${mappedOffset}`;\n}\n","\n \n &ngsp;\n \n\n
    \n \n {{text.now_meets_filter_criteria}}\n \n {{text.no_longer_meets_filter_criteria}}\n \n {{text.maintained_with_changes}}\n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport {\n baselineFilterFromValue,\n getPartsFromTimestamp,\n getBaselineState,\n offsetToUtcString,\n} from 'core-app/features/work-packages/components/wp-baseline/baseline-helpers';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport * as moment from 'moment-timezone';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { Moment } from 'moment';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n templateUrl: './baseline-legends.component.html',\n styleUrls: ['./baseline-legends.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'op-baseline-legends',\n encapsulation: ViewEncapsulation.None,\n})\nexport class OpBaselineLegendsComponent extends UntilDestroyedMixin implements OnInit {\n @HostBinding('class.op-baseline-legends') className = true;\n\n public numAdded = 0;\n\n public numRemoved = 0;\n\n public numUpdated = 0;\n\n public offset:string|null;\n\n public userOffset:string;\n\n public userTimezone:string;\n\n public localDate:string;\n\n public legendDescription:string;\n\n public text = {\n now_meets_filter_criteria: this.I18n.t('js.baseline.legends.now_meets_filter_criteria'),\n no_longer_meets_filter_criteria: this.I18n.t('js.baseline.legends.no_longer_meets_filter_criteria'),\n maintained_with_changes: this.I18n.t('js.baseline.legends.maintained_with_changes'),\n in_your_timezone: this.I18n.t('js.baseline.legends.in_your_timezone'),\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly wpTableBaseline:WorkPackageViewBaselineService,\n readonly querySpace:IsolatedQuerySpace,\n readonly schemaCache:SchemaCacheService,\n readonly timezoneService:TimezoneService,\n readonly configuration:ConfigurationService,\n readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this\n .wpTableBaseline\n .live$()\n .pipe(\n this.untilDestroyed(),\n filter(() => this.wpTableBaseline.isActive()),\n )\n .subscribe((timestamps) => {\n this.userTimezone = this.timezoneService.userTimezone();\n this.userOffset = moment.tz(this.userTimezone).format('Z');\n\n const parts = getPartsFromTimestamp(timestamps[0]);\n if (parts) {\n this.offset = parts.offset;\n }\n\n this.getBaselineDetails();\n this.getFilterName(timestamps);\n this.cdRef.detectChanges();\n });\n }\n\n public getFilterName(timestamps:string[]) {\n const datesAndTimes = timestamps.map((el) => el.split(/[@T]/));\n const baselineValue = baselineFilterFromValue(this.wpTableBaseline.current);\n const changesSinceOrBetween = this.deriveChangesSinceOrBetween(baselineValue);\n let description = '';\n let upstreamDate = '';\n let localDate = '';\n\n switch (baselineValue) {\n case 'oneDayAgo':\n [upstreamDate, localDate] = this.deriveSingleDate(this.wpTableBaseline.yesterdayDate(), datesAndTimes[0][1]);\n description = this.I18n.t('js.baseline.drop_down.yesterday');\n description += ` (${upstreamDate})`;\n break;\n case 'lastWorkingDay':\n [upstreamDate, localDate] = this.deriveSingleDate(this.wpTableBaseline.lastWorkingDate(), datesAndTimes[0][1]);\n description = this.I18n.t('js.baseline.drop_down.last_working_day');\n description += ` (${upstreamDate})`;\n break;\n case 'oneWeekAgo':\n [upstreamDate, localDate] = this.deriveSingleDate(this.wpTableBaseline.lastweekDate(), datesAndTimes[0][1]);\n description = this.I18n.t('js.baseline.drop_down.last_week');\n description += ` (${upstreamDate})`;\n break;\n case 'oneMonthAgo':\n [upstreamDate, localDate] = this.deriveSingleDate(this.wpTableBaseline.lastMonthDate(), datesAndTimes[0][1]);\n description = this.I18n.t('js.baseline.drop_down.last_month');\n description += ` (${upstreamDate})`;\n break;\n case 'aSpecificDate':\n [upstreamDate, localDate] = this.formatUpstreamAndLocal(moment.parseZone(timestamps[0]));\n description += upstreamDate;\n break;\n case 'betweenTwoSpecificDates':\n [upstreamDate, localDate] = this.deriveDateRange(moment.parseZone(timestamps[0]), moment.parseZone(timestamps[1]));\n description += upstreamDate;\n break;\n default:\n break;\n }\n description = `${changesSinceOrBetween} ${description}`;\n this.legendDescription = description;\n this.localDate = localDate;\n return description;\n }\n\n private deriveChangesSinceOrBetween(baselineValue:string|null) {\n if (baselineValue === 'betweenTwoSpecificDates') {\n return this.I18n.t('js.baseline.legends.changes_between');\n }\n\n return this.I18n.t('js.baseline.legends.changes_since');\n }\n\n private deriveSingleDate(date:string, timestamp:string):[string, string] {\n const parsedDate:Moment = moment.parseZone(`${date}T${timestamp}`);\n return this.formatUpstreamAndLocal(parsedDate);\n }\n\n private deriveDateRange(start:Moment, end:Moment):[string, string] {\n const startRange = this.formatUpstreamAndLocal(start);\n const endRange = this.formatUpstreamAndLocal(end);\n\n return [\n `${startRange[0]} ${this.I18n.t('js.label_and')} ${endRange[0]}`,\n `${startRange[1]} - ${endRange[1]}`,\n ];\n }\n\n private formatUpstreamAndLocal(date:Moment):[string, string] {\n return [\n this.formatDate(date),\n this.formatDate(date.tz(this.userTimezone)),\n ];\n }\n\n public getBaselineDetails() {\n this.numAdded = 0;\n this.numRemoved = 0;\n this.numUpdated = 0;\n let state = '';\n const baselineIsActive= this.wpTableBaseline.isActive();\n const results = this.querySpace.results.value;\n if (baselineIsActive && results && results.elements.length > 0) {\n results.elements.forEach((workPackage:WorkPackageResource) => {\n state = getBaselineState(workPackage, this.schemaCache);\n if (state === 'added') {\n this.numAdded += 1;\n } else if (state === 'removed') {\n this.numRemoved += 1;\n } else if (state === 'updated') {\n this.numUpdated += 1;\n }\n });\n this.text.maintained_with_changes = `${this.I18n.t('js.baseline.legends.maintained_with_changes')} (${this.numUpdated})`;\n this.text.no_longer_meets_filter_criteria = `${this.I18n.t('js.baseline.legends.no_longer_meets_filter_criteria')} (${this.numRemoved})`;\n this.text.now_meets_filter_criteria = `${this.I18n.t('js.baseline.legends.now_meets_filter_criteria')} (${this.numAdded})`;\n }\n }\n\n private formatDate(date:Moment):string {\n const formattedDate = date.format(this.timezoneService.getDateFormat());\n const formattedTime = date.format(this.timezoneService.getTimeFormat());\n const offset = offsetToUtcString(date.format('Z'));\n\n return `${formattedDate} ${formattedTime} ${offset}`;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n templateUrl: './baseline-loading.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'op-baseline-loading',\n encapsulation: ViewEncapsulation.None,\n})\nexport class OpBaselineLoadingComponent { }\n","\n \n\n \n\n \n\n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\n@Component({\n selector: 'op-baseline-modal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './baseline-modal.component.html',\n})\nexport class OpBaselineModalComponent {\n @HostBinding('class.op-baseline-modal') className = true;\n\n public opened = false;\n\n public text = {\n toggle_title: this.I18n.t('js.baseline.toggle_title'),\n header_description: this.I18n.t('js.baseline.header_description'),\n clear: this.I18n.t('js.baseline.clear'),\n apply: this.I18n.t('js.baseline.apply'),\n\n };\n\n constructor(\n readonly I18n:I18nService,\n ) {}\n\n public toggleOpen():void {\n this.opened = !this.opened;\n }\n}\n","\n \n \n {{ text.toggle_title }}\n \n \n \n \n\n","
    \n \n {{ text.baseline_comparison }}\n \n
    \n {{ eeShowBanners ? text.enterprise_header_description : text.header_description }}\n \n {{ text.more_info_text }}\n \n \n\n\n\n\n \n\n
    \n \n \n \n {{availableValue.title}}\n \n \n\n
    \n {{ mappedSelectedDate }} \n \n\n \n\n \n \n\n \n\n \n\n \n\n \n \n\n \n\n \n\n \n \n \n \n\n \n\n \n \n \n \n\n \n\n \n\n \n \n {{ text.help_description }}\n \n\n\n \n \n\n \n\n \n\n \n \n {{ text.help_description }}\n \n\n\n \n \n \n\n \n \n\n
    \n\n
    \n \n {{ text.clear }}\n \n \n {{ text.apply }}\n \n
    \n
    \n\n\n\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport SpotDropAlignmentOption from 'core-app/spot/drop-alignment-options';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport { DayResourceService } from 'core-app/core/state/days/day.service';\nimport { IDay } from 'core-app/core/state/days/day.model';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { Observable } from 'rxjs';\nimport {\n DEFAULT_TIMESTAMP,\n WorkPackageViewBaselineService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport { validDate } from 'core-app/shared/components/datepicker/helpers/date-modal.helpers';\nimport {\n baselineFilterFromValue,\n getPartsFromTimestamp,\n offsetToUtcString,\n} from 'core-app/features/work-packages/components/wp-baseline/baseline-helpers';\nimport * as moment from 'moment-timezone';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\nimport { enterpriseDocsUrl } from 'core-app/core/setup/globals/constants.const';\nimport { DayElement } from 'flatpickr/dist/types/instance';\n\nconst DEFAULT_SELECTED_TIME = '08:00';\n\n@Component({\n selector: 'op-baseline',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './baseline.component.html',\n styleUrls: ['./baseline.component.sass'],\n})\nexport class OpBaselineComponent extends UntilDestroyedMixin implements OnInit {\n @HostBinding('class.op-baseline') className = true;\n\n @Output() submitted = new EventEmitter();\n\n @Input() showActionBar? = false;\n\n @Input() visible = true;\n\n public mappedSelectedDate:string|null;\n\n public nonWorkingDays$:Observable = this.wpTableBaseline.nonWorkingDays$;\n\n public selectedDates:string[];\n\n public selectedTimes:string[];\n\n public selectedOffsets:string[];\n\n public userTimezone:string;\n\n public userOffset:string;\n\n public selectedFilter:string|null;\n\n public selectedTimezoneFormattedTime:string[];\n\n public tooltipPosition = SpotDropAlignmentOption.TopRight;\n\n eeShowBanners = this.Banner.eeShowBanners;\n\n public text = {\n toggle_title: this.I18n.t('js.baseline.toggle_title'),\n drop_down_none_option: this.I18n.t('js.baseline.drop_down.none'),\n header_description: this.I18n.t('js.baseline.header_description'),\n enterprise_header_description: this.I18n.t('js.baseline.enterprise_header_description'),\n clear: this.I18n.t('js.baseline.clear'),\n apply: this.I18n.t('js.baseline.apply'),\n show_changes_since: this.I18n.t('js.baseline.show_changes_since'),\n from: this.I18n.t('js.baseline.from'),\n to: this.I18n.t('js.baseline.to'),\n date: this.I18n.t('js.label_date'),\n time: this.I18n.t('js.baseline.time'),\n today: this.I18n.t('js.label_today'),\n moreInfoLink: enterpriseDocsUrl.website,\n more_info_text: this.I18n.t('js.admin.enterprise.upsale.more_info'),\n help_description: this.I18n.t('js.baseline.help_description'),\n baseline_comparison: this.I18n.t('js.baseline.baseline_comparison'),\n time_description: (i:number) => {\n const date = this.selectedDates[i];\n const time = this.selectedTimes[i];\n const offset = this.selectedOffsets[i];\n\n if (!date || !time) {\n return '';\n }\n\n const formatted = moment(`${date}T${time}${offset}`)\n .tz(this.userTimezone);\n\n const formattedDate = formatted.format(this.timezoneService.getDateFormat());\n const formattedTime = formatted.format(this.timezoneService.getTimeFormat());\n return this.I18n.t('js.baseline.time_description', {\n datetime: `${formattedDate} ${formattedTime}`,\n });\n },\n };\n\n public baselineAvailableValues = [\n {\n value: 'oneDayAgo',\n title: this.I18n.t('js.baseline.drop_down.yesterday'),\n },\n {\n value: 'lastWorkingDay',\n title: this.I18n.t('js.baseline.drop_down.last_working_day'),\n },\n {\n value: 'oneWeekAgo',\n title: this.I18n.t('js.baseline.drop_down.last_week'),\n },\n {\n value: 'oneMonthAgo',\n title: this.I18n.t('js.baseline.drop_down.last_month'),\n },\n {\n value: 'aSpecificDate',\n title: this.I18n.t('js.baseline.drop_down.a_specific_date'),\n },\n {\n value: 'betweenTwoSpecificDates',\n title: this.I18n.t('js.baseline.drop_down.between_two_specific_dates'),\n },\n ];\n\n constructor(\n readonly I18n:I18nService,\n readonly wpTableBaseline:WorkPackageViewBaselineService,\n readonly halResourceService:HalResourceService,\n readonly weekdaysService:WeekdayService,\n readonly daysService:DayResourceService,\n readonly timezoneService:TimezoneService,\n readonly configuration:ConfigurationService,\n readonly Banner:BannersService,\n ) {\n super();\n }\n\n public ngOnInit():void {\n this.userTimezone = this.timezoneService.userTimezone();\n this.userOffset = moment().tz(this.userTimezone).format('Z');\n this.resetSelection();\n\n if (this.wpTableBaseline.isActive()) {\n this.filterChange(baselineFilterFromValue(this.wpTableBaseline.current));\n this.wpTableBaseline.current.forEach((value, i) => {\n const parts = getPartsFromTimestamp(value);\n if (parts) {\n this.selectedDates[i] = this.selectedDates[i] ? this.selectedDates[i] : parts.date;\n this.selectedTimes[i] = parts.time;\n this.selectedOffsets[i] = parts.offset;\n }\n });\n }\n\n this.wpTableBaseline\n .pristine$()\n .subscribe((timestamps) => {\n if (_.isEqual(timestamps, [DEFAULT_TIMESTAMP])) {\n this.resetSelection();\n this.wpTableBaseline.disable();\n }\n });\n }\n\n public resetSelection():void {\n this.selectedTimes = [DEFAULT_SELECTED_TIME, DEFAULT_SELECTED_TIME];\n this.selectedDates = ['', ''];\n this.selectedFilter = null;\n this.mappedSelectedDate = null;\n this.selectedOffsets = [this.userOffset, this.userOffset];\n }\n\n public setToday(key:string):void {\n const today = moment().format('YYYY-MM-DD');\n const from = key === 'from' ? today : this.selectedDates[0];\n // When setting the \"from\" date to today, the \"to\" date must also be set to today,\n // because we do not allow future dates, meaning \"to\" cannot be anything else but today.\n const to = today;\n this.dateChange([from, to]);\n }\n\n public onSubmit(e:Event):void {\n e.preventDefault();\n this.onSave();\n }\n\n public onSave() {\n this.wpTableBaseline.update(this.buildBaselineFilter());\n this.submitted.emit();\n }\n\n public mappedOffset(offset:string) {\n return offsetToUtcString(offset);\n }\n\n public timesChange(value:string[]):void {\n this.selectedTimes = value;\n }\n\n public dateChange(values:string[]):void {\n if (_.every(values, validDate)) {\n this.selectedDates = values;\n }\n }\n\n public filterChange(value:string|null):void {\n this.resetSelection();\n this.selectedFilter = value;\n switch (value) {\n case 'oneDayAgo':\n this.updateDateValues(this.wpTableBaseline.yesterdayDate());\n break;\n case 'lastWorkingDay':\n this.updateDateValues(this.wpTableBaseline.lastWorkingDate());\n break;\n case 'oneWeekAgo':\n this.updateDateValues(this.wpTableBaseline.lastweekDate());\n break;\n case 'oneMonthAgo':\n this.updateDateValues(this.wpTableBaseline.lastMonthDate());\n break;\n default:\n this.mappedSelectedDate = null;\n break;\n }\n }\n\n public futureDateComparer():(dayElem:DayElement) => boolean {\n const now = moment();\n return (dayElem:DayElement) => moment(dayElem.dateObj).isAfter(now, 'days');\n }\n\n private updateDateValues(date:string) {\n this.mappedSelectedDate = this.timezoneService.formattedDate(date);\n this.dateChange([date]);\n }\n\n private buildBaselineFilter():string[] {\n switch (this.selectedFilter) {\n case 'oneDayAgo':\n case 'oneWeekAgo':\n case 'oneMonthAgo':\n case 'lastWorkingDay':\n return [this.buildFilterString(0), DEFAULT_TIMESTAMP];\n case 'aSpecificDate':\n return [this.buildISOString(0), DEFAULT_TIMESTAMP];\n case 'betweenTwoSpecificDates':\n return [\n this.buildISOString(0),\n this.buildISOString(1),\n ];\n default:\n return [DEFAULT_TIMESTAMP];\n }\n }\n\n private buildISOString(i:number):string {\n return `${this.selectedDates[i]}T${this.selectedTimes[i]}${this.selectedOffsets[i]}`;\n }\n\n private buildFilterString(i:number):string {\n const timeWithOffset = `${this.selectedTimes[i]}${this.selectedOffsets[i]}`;\n return `${this.selectedFilter as string}@${timeWithOffset}`;\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component, Input, EventEmitter, Output,\n} from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageRelationsHierarchyService } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\n\n@Component({\n templateUrl: './wp-breadcrumb-parent.html',\n selector: 'wp-breadcrumb-parent',\n})\nexport class WorkPackageBreadcrumbParentComponent {\n @Input('workPackage') workPackage:WorkPackageResource;\n\n @Output('onSwitch') onSwitch = new EventEmitter();\n\n public isSaving = false;\n\n public text = {\n edit_parent: this.I18n.t('js.relation_buttons.change_parent'),\n set_or_remove_parent: this.I18n.t('js.relations_autocomplete.parent_placeholder'),\n remove_parent: this.I18n.t('js.relation_buttons.remove_parent'),\n set_parent: this.I18n.t('js.relation_buttons.set_parent'),\n };\n\n private editing:boolean;\n\n public constructor(\n protected readonly I18n:I18nService,\n protected readonly wpRelationsHierarchy:WorkPackageRelationsHierarchyService,\n protected readonly notificationService:WorkPackageNotificationService,\n ) {\n }\n\n public canModifyParent():boolean {\n return !!this.workPackage.changeParent;\n }\n\n public get parent() {\n return this.workPackage && this.workPackage.parent;\n }\n\n public get active():boolean {\n return this.editing;\n }\n\n public close():void {\n this.toggle(false);\n }\n\n public open():void {\n this.toggle(true);\n }\n\n public updateParent(newParent:WorkPackageResource|null) {\n this.close();\n const newParentId = newParent ? newParent.id : null;\n if (_.get(this.parent, 'id', null) === newParentId) {\n return;\n }\n\n this.isSaving = true;\n this.wpRelationsHierarchy.changeParent(this.workPackage, newParentId)\n .catch((error:any) => {\n this.notificationService.handleRawError(error, this.workPackage);\n })\n .then(() => this.isSaving = false); // Behaves as .finally()\n }\n\n private toggle(state:boolean) {\n if (this.editing !== state) {\n this.editing = state;\n this.onSwitch.emit(this.editing);\n }\n }\n}\n","
    \n
      \n 0\">\n
    • \n {{ hierarchyLabel }}: \n
    • \n \n \n \n \n \n
      \n 1 }\">\n \n \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, Input } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\n\n@Component({\n templateUrl: './wp-breadcrumb.html',\n styleUrls: ['./wp-breadcrumb.sass'],\n selector: 'wp-breadcrumb',\n})\nexport class WorkPackageBreadcrumbComponent {\n @Input('workPackage') workPackage:WorkPackageResource;\n\n public text = {\n parent: this.I18n.t('js.relations_hierarchy.parent_headline'),\n hierarchy: this.I18n.t('js.relations_hierarchy.hierarchy_headline'),\n };\n\n constructor(private I18n:I18nService) {\n }\n\n public inputActive = false;\n\n public get hierarchyCount() {\n return this.workPackage.getAncestors().length;\n }\n\n public get hierarchyLabel() {\n return (this.hierarchyCount === 1) ? this.text.parent : this.text.hierarchy;\n }\n\n public updateActiveInput(val:boolean) {\n this.inputActive = val;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\n\nexport interface ButtonControllerText {\n activate:string;\n deactivate:string;\n label:string;\n buttonText:string;\n}\n\nexport abstract class AbstractWorkPackageButtonComponent extends UntilDestroyedMixin {\n public disabled:boolean;\n\n public buttonId:string;\n\n public iconClass:string;\n\n public accessKey:number;\n\n public isActive = false;\n\n protected text:ButtonControllerText;\n\n constructor(public I18n:I18nService) {\n super();\n\n this.text = {\n activate: this.I18n.t('js.label_activate'),\n deactivate: this.I18n.t('js.label_deactivate'),\n label: this.labelKey ? this.I18n.t(this.labelKey) : '',\n buttonText: this.textKey ? this.I18n.t(this.textKey) : '',\n };\n }\n\n public get label():string {\n return this.text.label;\n }\n\n public get buttonText():string {\n return this.text.buttonText;\n }\n\n public get labelKey():string {\n return '';\n }\n\n public get textKey():string {\n return '';\n }\n\n protected get activationPrefix():string {\n return !this.isActive ? `${this.text.activate} ` : '';\n }\n\n protected get deactivationPrefix():string {\n return this.isActive ? `${this.text.deactivate} ` : '';\n }\n\n protected get prefix():string {\n return this.activationPrefix || this.deactivationPrefix;\n }\n\n public isToggle():boolean {\n return false;\n }\n\n public abstract performAction(event:Event):void;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { StateService, TransitionService } from '@uirouter/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport { Observable } from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { take } from 'rxjs/operators';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\n\n@Component({\n selector: 'wp-create-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './wp-create-button.html',\n})\nexport class WorkPackageCreateButtonComponent extends UntilDestroyedMixin implements OnInit, OnDestroy {\n @Input('allowed') allowedWhen:string[];\n\n @Input('stateName$') stateName$:Observable;\n\n allowed:boolean;\n\n disabled:boolean;\n\n projectIdentifier:string|null;\n\n types:any;\n\n transitionUnregisterFn:Function;\n\n text = {\n title: this.I18n.t('js.work_packages.create.title'),\n createWithDropdown: this.I18n.t('js.work_packages.create.button'),\n createButton: this.I18n.t('js.label_work_package'),\n explanation: this.I18n.t('js.label_create_work_package'),\n };\n\n constructor(\n readonly $state:StateService,\n readonly currentUser:CurrentUserService,\n readonly currentProject:CurrentProjectService,\n readonly authorisationService:AuthorisationService,\n readonly transition:TransitionService,\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this.projectIdentifier = this.currentProject.identifier;\n\n // Find the first permission that is allowed\n this.currentUser\n .hasCapabilities$('work_packages/create', this.currentProject.id)\n .pipe(\n take(1),\n )\n .subscribe((allowed) => {\n this.allowed = allowed;\n this.updateDisabledState();\n });\n\n this.transitionUnregisterFn = this.transition.onSuccess({}, this.updateDisabledState.bind(this));\n }\n\n ngOnDestroy():void {\n super.ngOnDestroy();\n this.transitionUnregisterFn();\n }\n\n private updateDisabledState() {\n this.disabled = !this.allowed || this.$state.includes('**.new');\n this.cdRef.detectChanges();\n }\n}\n","
    \n \n \n \n \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { StateService, TransitionService } from '@uirouter/core';\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy,\n} from '@angular/core';\nimport { AbstractWorkPackageButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-buttons.module';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { KeepTabService } from '../../wp-single-view-tabs/keep-tab/keep-tab.service';\n\n@Component({\n templateUrl: '../wp-button.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'wp-details-view-button',\n})\nexport class WorkPackageDetailsViewButtonComponent extends AbstractWorkPackageButtonComponent implements OnDestroy {\n public projectIdentifier:string;\n\n public accessKey = 8;\n\n public activeState = 'work-packages.partitioned.list.details';\n\n public listState = 'work-packages.partitioned.list';\n\n public buttonId = 'work-packages-details-view-button';\n\n public buttonClass = 'toolbar-icon';\n\n public iconClass = 'icon-info2';\n\n public activateLabel:string;\n\n public deactivateLabel:string;\n\n private transitionListener:Function;\n\n constructor(\n readonly $state:StateService,\n readonly I18n:I18nService,\n readonly transitions:TransitionService,\n readonly cdRef:ChangeDetectorRef,\n public states:States,\n public wpTableFocus:WorkPackageViewFocusService,\n public keepTab:KeepTabService,\n ) {\n super(I18n);\n\n this.activateLabel = I18n.t('js.button_open_details');\n this.deactivateLabel = I18n.t('js.button_close_details');\n\n this.transitionListener = this.transitions.onSuccess({}, () => {\n this.isActive = this.$state.includes(this.activeState);\n this.cdRef.detectChanges();\n });\n }\n\n public ngOnDestroy() {\n super.ngOnDestroy();\n this.transitionListener();\n }\n\n public get label():string {\n if (this.isActive) {\n return this.deactivateLabel;\n }\n return this.activateLabel;\n }\n\n public isToggle():boolean {\n return true;\n }\n\n public performAction(event:Event) {\n if (this.isActive) {\n this.$state.go(this.listState);\n } else {\n this.openDetailsView();\n }\n }\n\n public openListView():void {\n }\n\n public openDetailsView():void {\n const params = {\n workPackageId: this.wpTableFocus.focusedWorkPackage,\n };\n\n this.keepTab.goCurrentDetailsState(params);\n }\n}\n","\n","\n \n \n {{ buttonText }}\n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { AbstractWorkPackageButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-buttons.module';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit,\n} from '@angular/core';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { WorkPackageFiltersService } from 'core-app/features/work-packages/components/filters/wp-filters/wp-filters.service';\n\n@Component({\n selector: 'wp-filter-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './wp-filter-button.html',\n})\nexport class WorkPackageFilterButtonComponent extends AbstractWorkPackageButtonComponent implements OnInit {\n public count:number;\n\n public initialized = false;\n\n public buttonId = 'work-packages-filter-toggle-button';\n\n public iconClass = 'icon-filter';\n\n public title = this.I18n.t('js.work_packages.filters.title');\n\n constructor(\n readonly I18n:I18nService,\n protected cdRef:ChangeDetectorRef,\n protected wpFiltersService:WorkPackageFiltersService,\n protected wpTableFilters:WorkPackageViewFiltersService,\n ) {\n super(I18n);\n }\n\n ngOnInit():void {\n this.setupObserver();\n }\n\n public get labelKey():string {\n return 'js.button_filter';\n }\n\n public get textKey():string {\n return 'js.toolbar.filter';\n }\n\n public get label():string {\n return this.prefix + this.text.label;\n }\n\n public get filterCount():number {\n return this.count;\n }\n\n public performAction(event:Event) {\n this.toggleVisibility();\n }\n\n public toggleVisibility() {\n this.wpFiltersService.toggleVisibility();\n }\n\n private setupObserver() {\n this.wpTableFilters\n .live$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.count = this.wpTableFilters.currentlyVisibleFilters.length;\n this.initialized = true;\n this.cdRef.detectChanges();\n });\n\n this.wpFiltersService\n .observeUntil(componentDestroyed(this))\n .subscribe(() => {\n this.isActive = this.wpFiltersService.visible;\n this.cdRef.detectChanges();\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'wp-fold-toggle-view-button',\n})\nexport class WorkPackageFoldToggleButtonComponent {\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WpSingleViewService } from 'core-app/features/work-packages/routing/wp-view-base/state/wp-single-view.service';\n\n@Component({\n selector: 'op-work-package-mark-notification-button',\n templateUrl: './work-package-mark-notification-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageMarkNotificationButtonComponent {\n @Input() public workPackage:WorkPackageResource;\n\n text = {\n mark_as_read: this.I18n.t('js.notifications.center.mark_as_read'),\n };\n\n constructor(\n private I18n:I18nService,\n private storeService:WpSingleViewService,\n ) {\n }\n\n markAllBelongingNotificationsAsRead():void {\n this.storeService.markAllAsRead();\n // emit custom event in order to inform the activity tab stimulus controller\n // will trigger an update of the activities list\n document.dispatchEvent(\n new CustomEvent('work-package-notifications-updated'),\n );\n }\n}\n","\n\n \n\n","\n \n \n \n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { notificationCountChanged } from 'core-app/core/state/in-app-notifications/in-app-notifications.actions';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { IanBellService } from 'core-app/features/in-app-notifications/bell/state/ian-bell.service';\nimport { reminderModalUpdated } from 'core-app/features/work-packages/components/wp-reminder-modal/reminder.actions';\nimport {\n WorkPackageReminderModalComponent,\n} from 'core-app/features/work-packages/components/wp-reminder-modal/wp-reminder.modal';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { merge, Observable } from 'rxjs';\nimport { filter, map, startWith, switchMap } from 'rxjs/operators';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'wp-reminder-button',\n templateUrl: './wp-reminder-button.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageReminderButtonComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n hasReminder$:Observable;\n\n public buttonTitle = this.I18n.t('js.work_packages.reminders.button_label');\n\n constructor(\n readonly I18n:I18nService,\n readonly opModalService:OpModalService,\n readonly cdRef:ChangeDetectorRef,\n readonly apiV3Service:ApiV3Service,\n readonly actions$:ActionsService,\n readonly storeService:IanBellService,\n ) {\n super();\n }\n\n ngOnInit() {\n const reminderModalUpdated$ = this\n .actions$\n .ofType(reminderModalUpdated)\n .pipe(\n map((action) => action.workPackageId),\n filter((id) => id === this.workPackage.id?.toString()),\n startWith(null),\n );\n const notificationCountChanged$ = this\n .actions$\n .ofType(notificationCountChanged)\n .pipe(\n map((action) => action.count),\n );\n\n this.hasReminder$ = merge(\n notificationCountChanged$,\n reminderModalUpdated$,\n ).pipe(\n switchMap(() => this.countReminders()),\n map((count) => count > 0),\n );\n }\n\n openModal():void {\n this.opModalService.show(WorkPackageReminderModalComponent, 'global', { workPackage: this.workPackage }, false, true);\n }\n\n private countReminders():Observable {\n return this\n .apiV3Service\n .work_packages\n .id(this.workPackage.id as string)\n .reminders\n .get()\n .pipe(\n map((collection:CollectionResource) => { return collection.total; }),\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\n@Component({\n templateUrl: './wp-settings-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageSettingsButtonComponent {\n @Input() hideTableOptions = false;\n\n @Input() showCalendarSharingOption = false;\n\n public text = {\n more_actions: this.I18n.t('js.button_more_actions'),\n };\n\n constructor(readonly I18n:I18nService) {\n }\n}\n","\n","\n \n \n \n \n\n \n\n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport {\n WorkPackageShareModalComponent,\n} from 'core-app/features/work-packages/components/wp-share-modal/wp-share.modal';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { filter, map, startWith, switchMap } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { shareModalUpdated } from 'core-app/features/work-packages/components/wp-share-modal/sharing.actions';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'wp-share-button',\n templateUrl: './wp-share-button.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageShareButtonComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n showEnterpriseIcon = this.bannersService.eeShowBanners;\n\n shareCount$:Observable;\n\n public text = {\n share: this.I18n.t('js.sharing.share'),\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly opModalService:OpModalService,\n readonly cdRef:ChangeDetectorRef,\n readonly bannersService:BannersService,\n readonly apiV3Service:ApiV3Service,\n readonly actions$:ActionsService,\n ) {\n super();\n }\n\n ngOnInit() {\n this.shareCount$ = this\n .actions$\n .ofType(shareModalUpdated)\n .pipe(\n map((action) => action.workPackageId),\n filter((id) => id === this.workPackage.id?.toString()),\n startWith(null),\n switchMap(() => this.countShares()),\n );\n }\n\n openModal():void {\n this.opModalService.show(WorkPackageShareModalComponent, 'global', { workPackage: this.workPackage }, false, true);\n }\n\n private countShares():Observable {\n const filters = new ApiV3FilterBuilder()\n .add('entityType', '=', ['WorkPackage'])\n .add('entityId', '=', [this.workPackage.id as string]);\n\n return this\n .apiV3Service\n .shares\n .filtered(filters, { pageSize: '0 ' })\n .get()\n .pipe(\n map((collection:CollectionResource) => collection.total),\n );\n }\n}\n","\n \n \n \n \n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport {\n ChangeDetectorRef, Component, Input, OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\n\n@Component({\n selector: 'wp-status-button',\n styleUrls: ['./wp-status-button.component.sass'],\n templateUrl: './wp-status-button.html',\n})\nexport class WorkPackageStatusButtonComponent extends UntilDestroyedMixin implements OnInit {\n @Input('workPackage') public workPackage:WorkPackageResource;\n\n @Input() public small = false;\n\n public text = {\n explanation: this.I18n.t('js.label_edit_status'),\n workPackageReadOnly: this.I18n.t('js.work_packages.message_work_package_read_only'),\n workPackageStatusBlocked: this.I18n.t('js.work_packages.message_work_package_status_blocked'),\n };\n\n constructor(readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n readonly schemaCache:SchemaCacheService,\n readonly halEditing:HalResourceEditingService) {\n super();\n }\n\n ngOnInit() {\n this.halEditing\n .temporaryEditResource(this.workPackage)\n .values$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp) => {\n this.workPackage = wp;\n\n if (this.workPackage.status) {\n this.workPackage.status.$load();\n }\n\n this.cdRef.detectChanges();\n });\n }\n\n public get buttonTitle() {\n if (this.schema.isReadonly) {\n return this.text.workPackageReadOnly;\n } if (this.schema.isEditable && !this.allowed) {\n return this.text.workPackageStatusBlocked;\n }\n return '';\n }\n\n public get statusHighlightClass() {\n const { status } = this;\n if (!status) {\n return;\n }\n return Highlighting.backgroundClass('status', status.id!);\n }\n\n public get status():HalResource {\n return this.workPackage.status;\n }\n\n public get isReadonly() {\n return this.schema.isReadonly;\n }\n\n public get allowed() {\n return this.schema.isAttributeEditable('status');\n }\n\n private get schema() {\n if (this.halEditing.typedState(this.workPackage).hasValue()) {\n return this.halEditing.typedState(this.workPackage).value!.schema;\n }\n return this.schemaCache.of(this.workPackage);\n }\n}\n","
      \n\n
    • \n \n
    • \n\n
    • \n \n
    • \n\n
    • \n \n
    • \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { TimelineZoomLevel } from 'core-app/features/hal/resources/query-resource';\nimport { AbstractWorkPackageButtonComponent, ButtonControllerText } from '../wp-buttons.module';\n\nexport interface TimelineButtonText extends ButtonControllerText {\n zoomOut:string;\n zoomIn:string;\n zoomAuto:string;\n}\n\n@Component({\n templateUrl: './wp-timeline-toggle-button.html',\n styleUrls: ['./wp-timeline-toggle-button.sass'],\n selector: 'wp-timeline-toggle-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageTimelineButtonComponent extends AbstractWorkPackageButtonComponent implements OnInit {\n public buttonId = 'work-packages-timeline-toggle-button';\n\n public iconClass = 'icon-view-timeline';\n\n private activateLabel:string;\n\n private deactivateLabel:string;\n\n public text:TimelineButtonText;\n\n public minZoomLevel:TimelineZoomLevel = 'days';\n\n public maxZoomLevel:TimelineZoomLevel = 'years';\n\n public isAutoZoom = false;\n\n public isMaxLevel = false;\n\n public isMinLevel = false;\n\n constructor(readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n public wpTableTimeline:WorkPackageViewTimelineService) {\n super(I18n);\n\n this.activateLabel = I18n.t('js.gantt_chart.button_activate');\n this.deactivateLabel = I18n.t('js.gantt_chart.button_deactivate');\n\n this.text.zoomIn = I18n.t('js.gantt_chart.zoom.in');\n this.text.zoomOut = I18n.t('js.gantt_chart.zoom.out');\n this.text.zoomAuto = I18n.t('js.gantt_chart.zoom.auto');\n }\n\n ngOnInit():void {\n this.wpTableTimeline\n .live$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.isAutoZoom = this.wpTableTimeline.isAutoZoom();\n this.isActive = this.wpTableTimeline.isVisible;\n this.cdRef.detectChanges();\n });\n\n this.wpTableTimeline\n .appliedZoomLevel$\n .values$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((current) => {\n this.isMaxLevel = current === this.maxZoomLevel;\n this.isMinLevel = current === this.minZoomLevel;\n this.cdRef.detectChanges();\n });\n }\n\n public get label():string {\n if (this.isActive) {\n return this.deactivateLabel;\n }\n return this.activateLabel;\n }\n\n public isToggle():boolean {\n return true;\n }\n\n public updateZoomWithDelta(delta:number) {\n this.wpTableTimeline.updateZoomWithDelta(delta);\n }\n\n public performAction(event:Event) {\n this.toggleTimeline();\n }\n\n public toggleTimeline() {\n this.wpTableTimeline.toggle();\n }\n\n public enableAutoZoom() {\n this.wpTableTimeline.enableAutozoom();\n }\n\n public getAutoZoomToggleClass():string {\n return this.isAutoZoom ? '-disabled' : '';\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\nimport * as sfimport from 'screenfull';\nimport { Screenfull } from 'screenfull';\nimport { AbstractWorkPackageButtonComponent } from '../wp-buttons.module';\n\nconst screenfull:Screenfull = sfimport as any;\n\n@Component({\n templateUrl: '../wp-button.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'opce-zen-mode-toggle-button',\n})\nexport class ZenModeButtonComponent extends AbstractWorkPackageButtonComponent {\n public buttonId = 'work-packages-zen-mode-toggle-button';\n\n public buttonClass = 'toolbar-icon';\n\n public iconClass = 'icon-zen-mode';\n\n static inZenMode = false;\n\n private activateLabel:string;\n\n private deactivateLabel:string;\n\n constructor(readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef) {\n super(I18n);\n\n this.activateLabel = I18n.t('js.zen_mode.button_activate');\n this.deactivateLabel = I18n.t('js.zen_mode.button_deactivate');\n const self = this;\n\n if (screenfull.enabled) {\n screenfull.onchange(() => {\n // This event might get triggered several times for once leaving\n // fullscreen mode.\n if (!screenfull.isFullscreen) {\n self.deactivateZenMode();\n }\n });\n }\n }\n\n public get label():string {\n if (this.isActive) {\n return this.deactivateLabel;\n }\n return this.activateLabel;\n }\n\n public isToggle():boolean {\n return true;\n }\n\n private deactivateZenMode():void {\n this.isActive = ZenModeButtonComponent.inZenMode = false;\n jQuery('body').removeClass('zen-mode');\n this.disabled = false;\n if (screenfull.enabled && screenfull.isFullscreen) {\n screenfull.exit();\n }\n this.cdRef.detectChanges();\n }\n\n private activateZenMode() {\n this.isActive = ZenModeButtonComponent.inZenMode = true;\n jQuery('body').addClass('zen-mode');\n if (screenfull.enabled) {\n screenfull.request();\n }\n this.cdRef.detectChanges();\n }\n\n public performAction(evt:Event):false {\n if (ZenModeButtonComponent.inZenMode) {\n this.deactivateZenMode();\n } else {\n this.activateZenMode();\n }\n\n evt.preventDefault();\n return false;\n }\n}\n","import { Injector } from '@angular/core';\nimport { CardEventHandler } from 'core-app/features/work-packages/components/wp-card-view/event-handler/card-view-handler-registry';\nimport { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { WorkPackageCardViewService } from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-view.service';\nimport { StateService } from '@uirouter/core';\nimport { DeviceService } from 'core-app/core/browser/device.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport class CardClickHandler implements CardEventHandler {\n // Injections\n @InjectField() deviceService:DeviceService;\n\n @InjectField() $state:StateService;\n\n @InjectField() wpTableSelection:WorkPackageViewSelectionService;\n\n @InjectField() wpTableFocus:WorkPackageViewFocusService;\n\n @InjectField() wpCardView:WorkPackageCardViewService;\n\n constructor(public readonly injector:Injector,\n card:WorkPackageCardViewComponent) {\n }\n\n public get EVENT() {\n return 'click.cardView.card';\n }\n\n public get SELECTOR() {\n return `[data-test-selector=\"op-wp-single-card\"]`;\n }\n\n public eventScope(card:WorkPackageCardViewComponent) {\n return jQuery(card.container.nativeElement);\n }\n\n public handleEvent(card:WorkPackageCardViewComponent, evt:JQuery.TriggeredEvent) {\n const target = jQuery(evt.target);\n\n // Ignore links\n if (target.is('a') || target.parent().is('a')) {\n return true;\n }\n\n // Locate the card from event\n const element = target.closest('wp-single-card');\n const wpId = element.data('workPackageId');\n\n if (!wpId) {\n return true;\n }\n\n this.handleWorkPackage(card, wpId, element, evt);\n\n return false;\n }\n\n protected handleWorkPackage(card:WorkPackageCardViewComponent, wpId:any, element:JQuery, evt:JQuery.TriggeredEvent) {\n this.setSelection(card, wpId, element, evt);\n\n card.itemClicked.emit({ workPackageId: wpId, double: false });\n }\n\n protected setSelection(card:WorkPackageCardViewComponent, wpId:string, element:JQuery, evt:JQuery.TriggeredEvent) {\n const classIdentifier = element.data('classIdentifier');\n const index = this.wpCardView.findRenderedCard(classIdentifier);\n\n // Update single selection if no modifier present\n if (!(evt.ctrlKey || evt.metaKey || evt.shiftKey)) {\n this.wpTableSelection.setSelection(wpId, index);\n }\n\n // Multiple selection if shift present\n if (evt.shiftKey) {\n this.wpTableSelection.setMultiSelectionFrom(this.wpCardView.renderedCards, wpId, index);\n }\n\n // Single selection expansion if ctrl / cmd(mac)\n if (evt.ctrlKey || evt.metaKey) {\n this.wpTableSelection.toggleRow(wpId);\n }\n\n card.selectionChanged.emit(this.wpTableSelection.getSelectedWorkPackageIds());\n\n // The current card is the last selected work package\n // not matter what other card are (de-)selected below.\n // Thus save that card for the details view button.\n this.wpTableFocus.updateFocus(wpId);\n }\n}\n","import { Injector } from '@angular/core';\nimport { CardEventHandler } from 'core-app/features/work-packages/components/wp-card-view/event-handler/card-view-handler-registry';\nimport { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { StateService } from '@uirouter/core';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport class CardDblClickHandler implements CardEventHandler {\n @InjectField() $state:StateService;\n\n @InjectField() wpTableSelection:WorkPackageViewSelectionService;\n\n constructor(public readonly injector:Injector,\n card:WorkPackageCardViewComponent) {\n }\n\n public get EVENT() {\n return 'dblclick.cardView.card';\n }\n\n public get SELECTOR() {\n return `[data-test-selector=\"op-wp-single-card\"]`;\n }\n\n public eventScope(card:WorkPackageCardViewComponent) {\n return jQuery(card.container.nativeElement);\n }\n\n public handleEvent(card:WorkPackageCardViewComponent, evt:JQuery.TriggeredEvent) {\n const target = jQuery(evt.target);\n\n // Ignore links\n if (target.is('a') || target.parent().is('a')) {\n return true;\n }\n\n // Locate the row from event\n const element = target.closest('wp-single-card');\n const wpId = element.data('workPackageId');\n\n if (!wpId) {\n return true;\n }\n\n card.itemClicked.emit({ workPackageId: wpId, double: true });\n return false;\n }\n}\n","import { Injector } from '@angular/core';\nimport { CardEventHandler } from 'core-app/features/work-packages/components/wp-card-view/event-handler/card-view-handler-registry';\nimport { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { uiStateLinkClass } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { WorkPackageCardViewService } from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-view.service';\nimport { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service';\nimport { WorkPackageViewContextMenu } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport class CardRightClickHandler implements CardEventHandler {\n // Injections\n @InjectField() wpTableSelection:WorkPackageViewSelectionService;\n\n @InjectField() wpCardView:WorkPackageCardViewService;\n\n @InjectField() opContextMenu:OPContextMenuService;\n\n constructor(public readonly injector:Injector,\n card:WorkPackageCardViewComponent) {\n }\n\n public get EVENT() {\n return 'contextmenu.cardView.rightclick';\n }\n\n public get SELECTOR() {\n return `[data-test-selector=\"op-wp-single-card\"]`;\n }\n\n public eventScope(card:WorkPackageCardViewComponent) {\n return jQuery(card.container.nativeElement);\n }\n\n public handleEvent(card:WorkPackageCardViewComponent, evt:JQuery.TriggeredEvent) {\n const target = jQuery(evt.target);\n\n // We want to keep the original context menu on hrefs\n // (currently, this is only the id)\n if (target.closest(`.${uiStateLinkClass}`).length) {\n debugLog('Allowing original context menu on state link');\n return true;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n\n // Locate the card from event\n const element = target.closest('wp-single-card');\n const wpId = element.data('workPackageId');\n\n if (!wpId) {\n return true;\n }\n const classIdentifier = element.data('classIdentifier');\n const index = this.wpCardView.findRenderedCard(classIdentifier);\n\n if (!this.wpTableSelection.isSelected(wpId)) {\n this.wpTableSelection.setSelection(wpId, index);\n }\n\n const handler = new WorkPackageViewContextMenu(this.injector, wpId, jQuery(evt.target) as JQuery, {}, card.showInfoButton);\n this.opContextMenu.show(handler, evt);\n\n return false;\n }\n}\n","import { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport { CardClickHandler } from 'core-app/features/work-packages/components/wp-card-view/event-handler/click-handler';\nimport { CardDblClickHandler } from 'core-app/features/work-packages/components/wp-card-view/event-handler/double-click-handler';\nimport { CardRightClickHandler } from 'core-app/features/work-packages/components/wp-card-view/event-handler/right-click-handler';\nimport {\n WorkPackageViewEventHandler,\n WorkPackageViewHandlerRegistry,\n} from 'core-app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry';\n\nexport type CardEventHandler = WorkPackageViewEventHandler;\n\nexport class CardViewHandlerRegistry extends WorkPackageViewHandlerRegistry {\n protected eventHandlers:((c:WorkPackageCardViewComponent) => CardEventHandler)[] = [\n // Clicking on the card (not within a cell)\n (c) => new CardClickHandler(this.injector, c),\n // Double Clicking on the row (not within a cell)\n (c) => new CardDblClickHandler(this.injector, c),\n // Right clicking on cards\n (t) => new CardRightClickHandler(this.injector, t),\n ];\n}\n","import { Injectable, Injector, Optional } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageViewOrderService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageCreateService } from 'core-app/features/work-packages/components/wp-new/wp-create.service';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { DragAndDropService } from 'core-app/shared/helpers/drag-and-drop/drag-and-drop.service';\nimport { findIndex } from 'core-app/shared/helpers/drag-and-drop/drag-and-drop.helpers';\nimport { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class WorkPackageCardDragAndDropService {\n private _workPackages:WorkPackageResource[];\n\n /** Whether the card view has an active inline created wp */\n public activeInlineCreateWp?:WorkPackageResource;\n\n /** A reference to the component in use, to have access to the current input variables */\n public cardView:WorkPackageCardViewComponent;\n\n public constructor(readonly states:States,\n readonly injector:Injector,\n readonly reorderService:WorkPackageViewOrderService,\n readonly wpCreate:WorkPackageCreateService,\n readonly notificationService:WorkPackageNotificationService,\n readonly apiV3Service:ApiV3Service,\n readonly currentProject:CurrentProjectService,\n @Optional() readonly dragService:DragAndDropService,\n readonly wpInlineCreate:WorkPackageInlineCreateService) {\n\n }\n\n public init(componentRef:WorkPackageCardViewComponent) {\n this.cardView = componentRef;\n }\n\n public destroy() {\n if (this.dragService !== null) {\n this.dragService.remove(this.cardView.container.nativeElement);\n }\n }\n\n public registerDragAndDrop() {\n // The DragService may not have been provided\n // in which case we do not provide drag and drop\n if (this.dragService === null) {\n return;\n }\n\n this.dragService.register({\n dragContainer: this.cardView.container.nativeElement,\n scrollContainers: [this.cardView.container.nativeElement],\n moves: (card:HTMLElement) => {\n const wpId:string = card.dataset.workPackageId!;\n const workPackage = this.states.workPackages.get(wpId).value;\n\n return !!workPackage && this.cardView.canDragOutOf(workPackage) && !card.dataset.isNew;\n },\n accepts: () => this.cardView.dragInto,\n onMoved: async (card:HTMLElement) => {\n const wpId:string = card.dataset.workPackageId!;\n const toIndex = findIndex(card);\n\n const newOrder = await this.reorderService.move(this.currentOrder, wpId, toIndex);\n this.updateOrder(newOrder);\n\n this.cardView.onMoved.emit();\n },\n onRemoved: (card:HTMLElement) => {\n const wpId:string = card.dataset.workPackageId!;\n\n const newOrder = this.reorderService.remove(this.currentOrder, wpId);\n this.updateOrder(newOrder);\n },\n onAdded: async (card:HTMLElement) => {\n const wpId:string = card.dataset.workPackageId!;\n const toIndex = findIndex(card);\n\n const workPackage = await firstValueFrom(this.apiV3Service.work_packages.id(wpId).get());\n const result = await this.addWorkPackageToQuery(workPackage, toIndex);\n\n if (card.parentElement) {\n card.parentElement.removeChild(card);\n }\n\n return result;\n },\n });\n }\n\n /**\n * Get the current work packages\n */\n public get workPackages():WorkPackageResource[] {\n return this._workPackages;\n }\n\n /**\n * Set work packages array,\n * remembering to keep the active inline-create\n */\n public set workPackages(workPackages:WorkPackageResource[]) {\n if (this.activeInlineCreateWp) {\n const existingNewWp = this._workPackages.find((o) => isNewResource(o));\n\n // If there is already a card for a new WP,\n // we have to replace this one by the new activeInlineCreateWp\n if (existingNewWp) {\n const index = this._workPackages.indexOf(existingNewWp);\n this._workPackages[index] = this.activeInlineCreateWp;\n } else {\n this._workPackages = [this.activeInlineCreateWp, ...workPackages];\n }\n } else {\n this._workPackages = [...workPackages];\n }\n }\n\n /**\n * Get current order\n */\n private get currentOrder():string[] {\n return this.workPackages\n .filter((wp) => wp && !isNewResource(wp))\n .map((el) => el.id!);\n }\n\n /**\n * Update current order\n */\n private updateOrder(newOrder:string[]) {\n newOrder = _.uniq(newOrder);\n\n Promise\n .all(newOrder.map((id) => this\n .apiV3Service\n .work_packages\n .id(id)\n .get()\n .toPromise()))\n .then((workPackages:WorkPackageResource[]) => {\n this.workPackages = workPackages;\n this.cardView.cdRef.detectChanges();\n });\n }\n\n /**\n * Inline create a new card\n */\n public addNewCard() {\n this.wpCreate\n .createOrContinueWorkPackage(this.currentProject.identifier)\n .then((changeset:WorkPackageChangeset) => {\n this.activeInlineCreateWp = changeset.projectedResource;\n this.workPackages = this.workPackages;\n this.cardView.cdRef.detectChanges();\n });\n }\n\n /**\n * Add the given work package to the query\n */\n async addWorkPackageToQuery(workPackage:WorkPackageResource, toIndex = -1):Promise {\n try {\n await this.cardView.workPackageAddedHandler(workPackage);\n const newOrder = await this.reorderService.add(this.currentOrder, workPackage.id!, toIndex);\n this.updateOrder(newOrder);\n return true;\n } catch (e) {\n this.notificationService.handleRawError(e, workPackage);\n }\n\n return false;\n }\n\n /**\n * Remove the new card\n */\n public removeReferenceWorkPackageForm() {\n if (this.activeInlineCreateWp) {\n this.removeCard(this.activeInlineCreateWp);\n }\n }\n\n removeCard(wp:WorkPackageResource) {\n const index = this.workPackages.indexOf(wp);\n this.workPackages.splice(index, 1);\n this.activeInlineCreateWp = undefined;\n\n if (!isNewResource(wp)) {\n const newOrder = this.reorderService.remove(this.currentOrder, wp.id!);\n this.updateOrder(newOrder);\n }\n }\n\n /**\n * On new card saved\n */\n async onCardSaved(wp:WorkPackageResource) {\n const index = this.workPackages.findIndex((el) => el.id === 'new');\n\n if (index !== -1) {\n this.activeInlineCreateWp = undefined;\n\n // Add this item to the results\n const newOrder = await this.reorderService.add(this.currentOrder, wp.id!, index);\n this.updateOrder(newOrder);\n\n // Notify inline create service\n this.wpInlineCreate.newInlineWorkPackageCreated.next(wp.id!);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\n\n@Injectable()\nexport class WorkPackageCardViewService {\n public constructor(readonly querySpace:IsolatedQuerySpace) {\n }\n\n public classIdentifier(wp:WorkPackageResource) {\n // The same class names are used for the proximity to the table representation.\n return `wp-row-${wp.id}`;\n }\n\n public get renderedCards() {\n return this.querySpace.tableRendered.getValueOr([]);\n }\n\n public findRenderedCard(classIdentifier:string):number {\n const index = _.findIndex(this.renderedCards, (card) => card.classIdentifier === classIdentifier);\n\n return index;\n }\n\n public updateRenderedCardsValues(workPackages:WorkPackageResource[]) {\n this.querySpace.tableRendered.putValue(\n workPackages.map((wp) => ({\n classIdentifier: this.classIdentifier(wp),\n workPackageId: wp.id,\n hidden: false,\n })),\n );\n }\n}\n","
    \n
    \n \n \n
    \n\n \n \n \n\n
    \n
    \n
    \n\n
    \n \n
    \n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { WorkPackageCreateService } from 'core-app/features/work-packages/components/wp-new/wp-create.service';\nimport { trackByHrefAndProperty } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { CardHighlightingMode } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting-mode.const';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport { StateService } from '@uirouter/core';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewOrderService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport {\n filter,\n map,\n withLatestFrom,\n} from 'rxjs/operators';\nimport { CausedUpdatesService } from 'core-app/features/boards/board/caused-updates/caused-updates.service';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { CardViewHandlerRegistry } from 'core-app/features/work-packages/components/wp-card-view/event-handler/card-view-handler-registry';\nimport { WorkPackageCardViewService } from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-view.service';\nimport { WorkPackageCardDragAndDropService } from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-drag-and-drop.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { DeviceService } from 'core-app/core/browser/device.service';\nimport {\n WorkPackageViewHandlerToken,\n WorkPackageViewOutputs,\n} from 'core-app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\n\nexport type CardViewOrientation = 'horizontal'|'vertical';\n\n@Component({\n selector: 'wp-card-view',\n styleUrls: ['./styles/wp-card-view.component.sass', './styles/wp-card-view-horizontal.sass', './styles/wp-card-view-vertical.sass'],\n templateUrl: './wp-card-view.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageCardViewComponent extends UntilDestroyedMixin implements OnInit, AfterViewInit, WorkPackageViewOutputs {\n @Input('dragOutOfHandler') public canDragOutOf:(wp:WorkPackageResource) => boolean;\n\n @Input() public dragInto:boolean;\n\n @Input() public highlightingMode:CardHighlightingMode;\n\n @Input() public workPackageAddedHandler:(wp:WorkPackageResource) => Promise;\n\n @Input() public showStatusButton = true;\n\n @Input() public showInfoButton = false;\n\n @Input() public orientation:CardViewOrientation = 'vertical';\n\n /** Whether cards are removable */\n @Input() public cardsRemovable = false;\n\n /** Whether a notification box shall be shown when there are no WP to display */\n @Input() public showEmptyResultsBox = false;\n\n /** Whether on special mobile version of the cards shall be shown */\n @Input() public shrinkOnMobile = false;\n\n /** Container reference */\n @ViewChild('container', { static: true }) public container:ElementRef;\n\n @Output() public onMoved = new EventEmitter();\n\n @Output() selectionChanged = new EventEmitter();\n\n @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>();\n\n @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>();\n\n public trackByHref = trackByHrefAndProperty('lockVersion');\n\n public query:QueryResource;\n\n public isResultEmpty = false;\n\n public columns:QueryColumn[];\n\n public text = {\n removeCard: this.I18n.t('js.card.remove_from_list'),\n addNewCard: this.I18n.t('js.card.add_new'),\n noResults: {\n title: this.I18n.t('js.work_packages.no_results.title'),\n description: this.I18n.t('js.work_packages.no_results.description'),\n },\n };\n\n public inReference = false;\n\n public referenceClass = this.wpInlineCreate.referenceComponentClass;\n\n // We need to mount a dynamic component into the view\n // but map the following output\n public referenceOutputs = {\n onCancel: () => this.setReferenceMode(false),\n onReferenced: (wp:WorkPackageResource) => this.cardDragDrop.addWorkPackageToQuery(wp, 0),\n };\n\n isNewResource = isNewResource;\n\n constructor(readonly querySpace:IsolatedQuerySpace,\n readonly states:States,\n readonly injector:Injector,\n readonly $state:StateService,\n readonly I18n:I18nService,\n readonly wpCreate:WorkPackageCreateService,\n readonly wpInlineCreate:WorkPackageInlineCreateService,\n readonly notificationService:WorkPackageNotificationService,\n readonly halEvents:HalEventsService,\n readonly authorisationService:AuthorisationService,\n readonly causedUpdates:CausedUpdatesService,\n readonly cdRef:ChangeDetectorRef,\n readonly pathHelper:PathHelperService,\n readonly wpTableSelection:WorkPackageViewSelectionService,\n readonly wpViewOrder:WorkPackageViewOrderService,\n readonly cardView:WorkPackageCardViewService,\n readonly cardDragDrop:WorkPackageCardDragAndDropService,\n readonly deviceService:DeviceService) {\n super();\n }\n\n ngOnInit() {\n this.registerCreationCallback();\n\n // Observe changes to the work packages in this view\n this.halEvents\n .aggregated$('WorkPackage')\n .pipe(\n map((events) => events.filter((event) => event.eventType === 'updated')),\n filter((events) => {\n const wpIds:string[] = this.workPackages.map((el) => el.id!.toString());\n return !!events.find((event) => wpIds.indexOf(event.id) !== -1);\n }),\n ).subscribe(() => {\n this.workPackages = this.workPackages.map((wp) => this.states.workPackages.get(wp.id!).getValueOr(wp));\n this.cdRef.detectChanges();\n });\n\n this.querySpace.results\n .values$()\n .pipe(\n withLatestFrom(this.querySpace.query.values$()),\n this.untilDestroyed(),\n ).subscribe(([results, query]) => {\n this.query = query;\n this.workPackages = this.wpViewOrder.orderedWorkPackages();\n this.cardView.updateRenderedCardsValues(this.workPackages);\n this.isResultEmpty = this.workPackages.length === 0;\n this.cdRef.detectChanges();\n });\n }\n\n ngAfterViewInit() {\n this.cardDragDrop.init(this);\n\n // Register Drag & Drop only on desktop\n if (!this.deviceService.isMobile) {\n this.cardDragDrop.registerDragAndDrop();\n }\n\n // Register event handlers for the cards\n const registry = this.injector.get(WorkPackageViewHandlerToken, CardViewHandlerRegistry);\n if (registry instanceof CardViewHandlerRegistry) {\n registry.attachTo(this);\n } else {\n new registry(this.injector).attachTo(this);\n }\n this.wpTableSelection.registerSelectAllListener(() => this.cardView.renderedCards);\n this.wpTableSelection.registerDeselectAllListener();\n }\n\n ngOnDestroy():void {\n super.ngOnDestroy();\n this.cardDragDrop.destroy();\n }\n\n public get workPackages():WorkPackageResource[] {\n return this.cardDragDrop.workPackages;\n }\n\n public set workPackages(workPackages:WorkPackageResource[]) {\n this.cardDragDrop.workPackages = workPackages;\n }\n\n public setReferenceMode(mode:boolean) {\n this.inReference = mode;\n this.cdRef.detectChanges();\n }\n\n public addNewCard() {\n this.cardDragDrop.addNewCard();\n }\n\n public removeCard(wp:WorkPackageResource) {\n this.cardDragDrop.removeCard(wp);\n }\n\n async onCardSaved(wp:WorkPackageResource) {\n await this.cardDragDrop.onCardSaved(wp);\n }\n\n public classes() {\n let classes = 'wp-cards-container ';\n classes += `-${this.orientation}`;\n classes += this.shrinkOnMobile ? ' -shrink' : '';\n\n return classes;\n }\n\n /**\n * Listen to newly created work packages to detect whether the WP is the one we created,\n * and properly reset inline create in this case\n */\n private registerCreationCallback() {\n this.wpCreate\n .onNewWorkPackage()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(async (wp:WorkPackageResource) => {\n this.onCardSaved(wp);\n });\n }\n}\n","\n\n
    \n
    \n\n
    \n
    \n \n \n \n\n \n \n \n\n 0\"\n [attr.data-tooltip]=\"disabledInfo.text\"\n class=\"-multiline op-wp-single-card--card-action op-wp-single-card--card-action_closed\"\n [ngClass]=\"'tooltip--' + disabledInfo.orientation\"\n icon-classes=\"icon-context icon-not-supported\">\n \n
    \n
    \n\n \n
    \n \n \n \n \n
    \n
    \n\n
    \n\n \n - {{wpProjectName(workPackage)}}\n \n \n #{{workPackage.id}}\n \n\n \n \n \n \n -\n \n\n \n\n \n\n \n -\n \n \n \n \n\n \n
    \n \n \n \n \n\n
    \n \n
    \n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n uiStateLinkClass,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport {\n Highlighting,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\nimport { StateService, UIRouterGlobals } from '@uirouter/core';\nimport {\n WorkPackageViewSelectionService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport {\n WorkPackageCardViewService,\n} from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-view.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n CardHighlightingMode,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting-mode.const';\nimport { CardViewOrientation } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport {\n WorkPackageViewFocusService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/link-handling';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { StatusResource } from 'core-app/features/hal/resources/status-resource';\nimport { combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport SpotDropAlignmentOption from 'core-app/spot/drop-alignment-options';\nimport { getBaselineState } from 'core-app/features/work-packages/components/wp-baseline/baseline-helpers';\nimport {\n CombinedDateDisplayField,\n} from 'core-app/shared/components/fields/display/field-types/combined-date-display.field';\n\n@Component({\n selector: 'wp-single-card',\n styleUrls: ['./wp-single-card.component.sass'],\n templateUrl: './wp-single-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageSingleCardComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public selectedWhenOpen = false;\n\n @Input() public showInfoButton = false;\n\n @Input() public showStatusButton = true;\n\n @Input() public showRemoveButton = false;\n\n @Input() public highlightingMode:CardHighlightingMode = 'inline';\n\n @Input() public draggable = false;\n\n @Input() public orientation:CardViewOrientation = 'vertical';\n\n @Input() public shrinkOnMobile = false;\n\n @Input() public disabledInfo?:{ text:string, orientation:'left'|'right' };\n\n @Input() public showAsInlineCard = false;\n\n @Input() public showStartDate = true;\n\n @Input() public showEndDate = true;\n\n @Input() public isClosed = false;\n\n @Input() public showAsGhost = false;\n\n @Output() onRemove = new EventEmitter();\n\n @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>();\n\n @Output() cardClicked = new EventEmitter<{ workPackageId:string, event:MouseEvent }>();\n\n @Output() cardDblClicked = new EventEmitter<{ workPackageId:string, event:MouseEvent }>();\n\n @Output() cardContextMenu = new EventEmitter<{ workPackageId:string, event:MouseEvent }>();\n\n public uiStateLinkClass:string = uiStateLinkClass;\n\n public selected = false;\n\n public baselineMode = ''||'added'||'updated'||'removed';\n\n public text = {\n removeCard: this.I18n.t('js.card.remove_from_list'),\n detailsView: this.I18n.t('js.button_open_details'),\n baseLineIconAdded: this.I18n.t('js.baseline.icon_tooltip.added'),\n baseLineIconChanged: this.I18n.t('js.baseline.icon_tooltip.changed'),\n baseLineIconRemoved: this.I18n.t('js.baseline.icon_tooltip.removed'),\n };\n\n public isNewResource = isNewResource;\n\n public tooltipPosition = SpotDropAlignmentOption.BottomLeft;\n\n combinedDateDisplayField = CombinedDateDisplayField;\n\n constructor(\n readonly pathHelper:PathHelperService,\n readonly I18n:I18nService,\n readonly $state:StateService,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly wpTableSelection:WorkPackageViewSelectionService,\n readonly wpTableFocus:WorkPackageViewFocusService,\n readonly cardView:WorkPackageCardViewService,\n readonly cdRef:ChangeDetectorRef,\n readonly timezoneService:TimezoneService,\n readonly schemaCache:SchemaCacheService,\n ) {\n super();\n }\n\n ngOnInit():void {\n // Update selection state\n combineLatest([\n this.wpTableSelection.live$(),\n this.uiRouterGlobals.params$,\n ])\n .pipe(\n this.untilDestroyed(),\n map(() => {\n if (this.selectedWhenOpen) {\n return this.uiRouterGlobals.params.workPackageId === this.workPackage.id;\n }\n\n return this.wpTableSelection.isSelected(this.workPackage.id as string);\n }),\n )\n .subscribe((selected) => {\n this.selected = selected;\n this.cdRef.detectChanges();\n });\n }\n\n public classIdentifier(wp:WorkPackageResource):string {\n return this.cardView.classIdentifier(wp);\n }\n\n public emitStateLinkClicked(event:MouseEvent, wp:WorkPackageResource, detail?:boolean):void {\n if (isClickedWithModifier(event)) {\n return;\n }\n\n const classIdentifier = this.classIdentifier(wp);\n const stateToEmit = detail ? 'split' : 'show';\n\n this.wpTableSelection.setSelection(wp.id!, this.cardView.findRenderedCard(classIdentifier));\n this.wpTableFocus.updateFocus(wp.id!);\n this.stateLinkClicked.emit({ workPackageId: wp.id!, requestedState: stateToEmit });\n event.preventDefault();\n }\n\n public cardClasses():{ [className:string]:boolean } {\n const base = 'op-wp-single-card';\n\n return {\n [`${base}_selected`]: this.selected,\n [`${base}_draggable`]: this.draggable,\n [`${base}_new`]: isNewResource(this.workPackage),\n [`${base}_shrink`]: this.shrinkOnMobile,\n [`${base}_inline`]: this.showAsInlineCard,\n [`${base}_closed`]: this.isClosed,\n [`${base}_ghosted`]: this.showAsGhost,\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n [`${base}-${this.workPackage.id}`]: !!this.workPackage.id,\n [`${base}_${this.orientation}`]: true,\n };\n }\n\n cardTitle():string {\n return `${this.workPackage.subject} (${(this.workPackage.status as StatusResource).name})`;\n }\n\n public baselineIcon(workPackage:WorkPackageResource) {\n this.baselineMode = getBaselineState(workPackage, this.schemaCache);\n return this.baselineMode;\n }\n\n // eslint-disable-next-line class-methods-use-this\n public wpTypeAttribute(wp:WorkPackageResource):string {\n return wp.type.name;\n }\n\n // eslint-disable-next-line class-methods-use-this\n public wpSubject(wp:WorkPackageResource):string {\n return wp.subject;\n }\n\n // eslint-disable-next-line class-methods-use-this\n public wpProjectName(wp:WorkPackageResource):string {\n return wp.project?.name;\n }\n\n public fullWorkPackageLink(wp:WorkPackageResource):string {\n return this.$state.href('work-packages.show', { workPackageId: wp.id });\n }\n\n public cardHighlightingClass(wp:WorkPackageResource):string {\n return this.cardHighlighting(wp);\n }\n\n public typeHighlightingClass(wp:WorkPackageResource):string {\n return this.attributeHighlighting('type', wp);\n }\n\n public onRemoved(wp:WorkPackageResource):void {\n this.onRemove.emit(wp);\n }\n\n public cardCoverImageShown(wp:WorkPackageResource):boolean {\n return this.bcfSnapshotPath(wp) !== null;\n }\n\n // eslint-disable-next-line class-methods-use-this\n public bcfSnapshotPath(wp:WorkPackageResource):string|null {\n return wp.bcfViewpoints && wp.bcfViewpoints.length > 0 ? `${wp.bcfViewpoints[0].href}/snapshot` : null;\n }\n\n private cardHighlighting(wp:WorkPackageResource):string {\n if (['status', 'priority', 'type'].includes(this.highlightingMode)) {\n return Highlighting.backgroundClass(this.highlightingMode, wp[this.highlightingMode].id);\n }\n return '';\n }\n\n // eslint-disable-next-line class-methods-use-this\n private attributeHighlighting(type:string, wp:WorkPackageResource):string {\n return Highlighting.inlineClass(type, wp.type.id!);\n }\n}\n","\n \n
    \n
    \n \n
    \n
      \n
    • \n \n
    • \n
    • \n \n
    • \n
    \n
    \n\n \n \n \n \n
    \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { WorkPackageCopyController } from 'core-app/features/work-packages/components/wp-copy/wp-copy.controller';\n\n@Component({\n selector: 'wp-copy-full-view',\n host: { class: 'work-packages-page--ui-view' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: '../wp-new/wp-new-full-view.html',\n})\nexport class WorkPackageCopyFullViewComponent extends WorkPackageCopyController {\n public successState = 'work-packages.show';\n}\n","\n \n
    \n
    \n \n
    \n \n \n \n
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n\n
    \n \n
    \n
    \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { WorkPackageCopyController } from 'core-app/features/work-packages/components/wp-copy/wp-copy.controller';\n\n@Component({\n selector: 'wp-copy-split-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: '../wp-new/wp-new-split-view.html',\n})\nexport class WorkPackageCopySplitViewComponent extends WorkPackageCopyController {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { take } from 'rxjs/operators';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageCreateComponent } from 'core-app/features/work-packages/components/wp-new/wp-create.component';\nimport { WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\n\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { Directive } from '@angular/core';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\n@Directive()\nexport class WorkPackageCopyController extends WorkPackageCreateComponent {\n private __initialized_at:number;\n\n private copiedWorkPackageId:string;\n\n /** Are we in the copying substates ? */\n public copying = true;\n\n @InjectField() wpRelations:WorkPackageRelationsService;\n\n @InjectField() halEditing:HalResourceEditingService;\n\n ngOnInit() {\n super.ngOnInit();\n\n this.wpCreate.onNewWorkPackage()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp:WorkPackageResource) => {\n if (wp.__initialized_at === this.__initialized_at) {\n this.wpRelations.addCommonRelation(wp.id!, 'relates', this.copiedWorkPackageId);\n }\n });\n }\n\n protected createdWorkPackage() {\n this.copiedWorkPackageId = this.stateParams.copiedFromWorkPackageId;\n return new Promise((resolve, reject) => {\n this\n .apiV3Service\n .work_packages\n .id(this.copiedWorkPackageId)\n .get()\n .pipe(\n take(1),\n )\n .subscribe((wp:WorkPackageResource) => {\n this.createCopyFrom(wp).then(resolve, reject);\n });\n });\n }\n\n protected setTitle() {\n this.titleService.setFirstPart(this.I18n.t('js.work_packages.copy.title'));\n }\n\n private createCopyFrom(wp:WorkPackageResource) {\n const sourceChangeset:WorkPackageChangeset = this.halEditing.changeFor(wp);\n\n return this.wpCreate\n .copyWorkPackage(sourceChangeset)\n .then((copyChangeset) => {\n this.__initialized_at = copyChangeset.pristineResource.__initialized_at;\n\n this\n .apiV3Service\n .work_packages\n .cache\n .updateWorkPackage(copyChangeset.pristineResource, true);\n\n this.halEditing.updateValue('new', copyChangeset);\n\n return copyChangeset;\n });\n }\n}\n","
    \n \n \n \n \n \n \n \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ApplicationRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\n@Component({\n selector: 'opce-custom-date-action-admin',\n templateUrl: './custom-date-action-admin.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomDateActionAdminComponent implements OnInit {\n public valueVisible = false;\n\n public fieldName:string = '';\n\n public fieldValue:string = '';\n\n public visibleValue:string = '';\n\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n public selectedOperator:any;\n\n private onKey = 'on';\n\n private currentKey = 'current';\n\n private currentFieldValue = '%CURRENT_DATE%';\n\n public operators = [\n { key: this.onKey, label: this.I18n.t('js.custom_actions.date.specific') },\n { key: this.currentKey, label: this.I18n.t('js.custom_actions.date.current_date') },\n ];\n\n constructor(\n private elementRef:ElementRef,\n private cdRef:ChangeDetectorRef,\n public appRef:ApplicationRef,\n private I18n:I18nService,\n ) {\n }\n\n // cannot use $onInit as it would be called before the operators gets filled\n public ngOnInit() {\n const element = this.elementRef.nativeElement as HTMLElement;\n this.fieldName = element.dataset.fieldName! || '';\n this.fieldValue = element.dataset.fieldValue! || '';\n\n if (this.fieldValue === this.currentFieldValue) {\n this.selectedOperator = this.operators[1];\n } else {\n this.selectedOperator = this.operators[0];\n this.visibleValue = this.fieldValue;\n }\n\n this.toggleValueVisibility();\n }\n\n public toggleValueVisibility() {\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n this.valueVisible = this.selectedOperator.key === this.onKey;\n if (this.fieldValue === this.currentFieldValue) {\n this.fieldValue = '';\n }\n\n this.updateDbValue();\n }\n\n private updateDbValue() {\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n if (this.selectedOperator.key === this.currentKey) {\n this.fieldValue = this.currentFieldValue;\n }\n }\n\n public get fieldId() {\n // replace all square brackets by underscore\n // to match the label's for value\n return this.fieldName\n .replace(/\\[|\\]/g, '_')\n .replace('__', '_')\n .replace(/_$/, '');\n }\n\n updateField(val:string) {\n this.fieldValue = val;\n this.cdRef.detectChanges();\n }\n}\n","\n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit,\n} from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { CustomActionResource } from 'core-app/features/hal/resources/custom-action-resource';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { trackByHref } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\n\n@Component({\n selector: 'wp-custom-actions',\n templateUrl: './wp-custom-actions.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WpCustomActionsComponent extends UntilDestroyedMixin implements OnInit {\n @Input() workPackage:WorkPackageResource;\n\n trackByHref = trackByHref;\n\n actions:CustomActionResource[] = [];\n\n constructor(\n readonly apiV3Service:ApiV3Service,\n readonly cdRef:ChangeDetectorRef,\n readonly bannersService:BannersService,\n ) {\n super();\n }\n\n ngOnInit() {\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage.id!)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp) => {\n this.actions = wp.customActions as CustomActionResource[];\n this.cdRef.detectChanges();\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Input, OnInit } from '@angular/core';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { CustomActionResource } from 'core-app/features/hal/resources/custom-action-resource';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport {\n HalResourceEditingService,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n WorkPackagesActivityService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\n\n@Component({\n selector: 'wp-custom-action',\n templateUrl: './wp-custom-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WpCustomActionComponent extends UntilDestroyedMixin implements OnInit {\n @Input() workPackage:WorkPackageResource;\n\n @Input() action:CustomActionResource;\n\n constructor(\n private halResourceService:HalResourceService,\n private apiV3Service:ApiV3Service,\n private wpActivity:WorkPackagesActivityService,\n private notificationService:WorkPackageNotificationService,\n private halEditing:HalResourceEditingService,\n private halEvents:HalEventsService,\n private cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this\n .halEvents\n .events$\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => this.cdRef.detectChanges());\n }\n\n private fetchAction() {\n if (this.action.href === null) return;\n\n void this.halResourceService\n .get(this.action.href)\n .subscribe((action) => {\n this.action = action;\n });\n }\n\n public get change():ResourceChangeset {\n return this.halEditing.changeFor(this.workPackage);\n }\n\n public update():void {\n if (this.action.href === null) return;\n\n const payload = {\n lockVersion: this.workPackage.lockVersion,\n _links: {\n workPackage: {\n href: this.workPackage.previewPath(),\n },\n },\n };\n\n // Mark changeset as in flight\n this.change.inFlight = true;\n\n this.halResourceService\n .post(`${this.action.href}/execute`, payload)\n .subscribe(\n (savedWp:WorkPackageResource) => {\n this.notificationService.showSave(savedWp, false);\n this.workPackage = savedWp;\n this.wpActivity.clear(this.workPackage.id);\n // Loading the schema might be necessary in cases where the button switches\n // project or type.\n void this.apiV3Service.work_packages.cache.updateWorkPackage(savedWp).then(() => {\n this.halEditing.stopEditing(savedWp);\n this.halEvents.push(savedWp, { eventType: 'updated' });\n this.change.inFlight = false;\n this.cdRef.detectChanges();\n });\n },\n (errorResource) => {\n this.notificationService.handleRawError(errorResource, this.workPackage);\n this.change.inFlight = false;\n this.cdRef.detectChanges();\n },\n );\n }\n\n @HostListener('mouseenter') onMouseEnter():void {\n this.fetchAction();\n }\n}\n","\n {{action.name}}\n\n","
    \n \n \n\n \n\n \n \n\n \n \n\n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n HalResourceEditingService,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { Observable, of } from 'rxjs';\n\n@Component({\n selector: 'wp-details-toolbar',\n templateUrl: './wp-details-toolbar.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageSplitViewToolbarComponent implements OnInit {\n @Input() workPackage:WorkPackageResource;\n\n @Input() displayNotificationsButton:boolean;\n\n public displayShareButton$:false|Observable = false;\n public displayReminderButton$:Observable = of(false);\n\n public text = {\n button_more: this.I18n.t('js.button_more'),\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly halEditing:HalResourceEditingService,\n readonly configurationService:ConfigurationService,\n readonly currentUserService:CurrentUserService,\n ) {\n }\n\n ngOnInit() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n this.displayShareButton$ = this.currentUserService.hasCapabilities$('work_package_shares/index', this.workPackage.project.id);\n this.displayReminderButton$ = this.currentUserService.isLoggedInAndHasCapabalities$(\n 'work_packages/read',\n (this.workPackage.project as ProjectResource).id,\n );\n }\n}\n","import { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { Injector } from '@angular/core';\nimport { compareByHrefOrString } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { FilterOperator } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\n\nexport class WorkPackageFilterValues {\n @InjectField() currentUser:CurrentUserService;\n\n @InjectField() halResourceService:HalResourceService;\n\n @InjectField() currentProject:CurrentProjectService;\n\n handlers:Partial void>> = {\n '=': this.applyFirstValue.bind(this),\n '!*': this.setToNull.bind(this),\n };\n\n constructor(\n public injector:Injector,\n private filters:QueryFilterInstanceResource[],\n private excluded:string[] = [],\n ) {}\n\n applyDefaultsFromFilters(change:WorkPackageChangeset|{ [id:string]:unknown }):void {\n _.each(this.filters, (filter) => {\n // Exclude filters specified in constructor\n if (this.excluded.indexOf(filter.id) !== -1) {\n return;\n }\n const operator = filter.operator.id as FilterOperator;\n\n // Special case due to the introduction of the project include dropdown\n // If we are in a project, we want the create wp to be part of that project.\n // Only for embedded tables, there might be different filter values necessary.\n if (filter.id === 'project') {\n if (operator !== '=') return;\n\n const projectFilter = _.find(filter.values, (resource:HalResource|string) => {\n return ((resource instanceof HalResource) ? resource.href : resource) === this.currentProject.apiv3Path;\n });\n this.setValue(change, 'project', projectFilter || filter.values[0]);\n\n return;\n }\n\n // ID filters should never be taken over\n if (filter.id === 'id') {\n return;\n }\n\n // Look for a handler with the filter's operator\n const handler = this.handlers[operator];\n\n // Apply the filter if there is any\n handler?.call(this, change, filter);\n });\n }\n\n /**\n * Apply a positive value from a '=' [value] filter\n *\n * @param filter A positive '=' filter with at least one value\n * @private\n */\n private applyFirstValue(change:WorkPackageChangeset|{ [id:string]:unknown }, filter:QueryFilterInstanceResource):void {\n // Avoid setting a value if current value is in filter list\n // and more than one value selected\n if (this.filterAlreadyApplied(change, filter)) {\n return;\n }\n\n // Select the first value\n const value = filter.values[0];\n\n // Avoid empty values\n if (value) {\n const attributeName = this.mapFilterToAttribute(filter);\n this.setValueFor(change, attributeName, value);\n }\n }\n\n /**\n * Set a value no null for a none type filter (!*)\n *\n * @param change changeset or resource\n * @param filter A none '!*' filter\n * @private\n */\n private setToNull(change:WorkPackageChangeset|{ [id:string]:unknown }, filter:QueryFilterInstanceResource):void {\n const attributeName = this.mapFilterToAttribute(filter);\n\n this.setValue(change, attributeName, { href: null });\n }\n\n private setValueFor(change:WorkPackageChangeset|{ [id:string]:unknown }, field:string, value:string|HalResource):void {\n const newValue = this.findSpecialValue(value, field) || value;\n\n if (newValue) {\n this.setValue(change, field, newValue);\n }\n }\n\n private setValue(change:WorkPackageChangeset|{ [id:string]:unknown }, field:string, value:unknown):void {\n if (change instanceof WorkPackageChangeset) {\n change.setValue(field, value);\n } else {\n change[field] = value;\n }\n }\n\n /**\n * Returns special values for which no allowed values exist (e.g., parent ID in embedded queries)\n * @param {string | HalResource} value\n * @param {string} field\n */\n private findSpecialValue(value:string|HalResource, field:string):string|HalResource|undefined {\n if (field === 'parent') {\n return value;\n }\n\n if (value instanceof HalResource && value.href === '/api/v3/users/me' && this.currentUser.isLoggedIn) {\n return this.halResourceService.fromSelfLink(`/api/v3/users/${this.currentUser.userId}`);\n }\n\n return undefined;\n }\n\n /**\n * Avoid applying filter values when changeset already matches one of the selected values\n * @param filter\n */\n private filterAlreadyApplied(change:WorkPackageChangeset|{ [id:string]:unknown }, filter:{ id:string, values:unknown[] }):boolean {\n const value:unknown = change instanceof WorkPackageChangeset ? change.projectedResource[filter.id] : change[filter.id];\n const current = _.castArray(value);\n\n for (let i = 0; i < filter.values.length; i++) {\n for (let j = 0; j < current.length; j++) {\n if (compareByHrefOrString(current[j], filter.values[i])) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Some filter ids need to be mapped to a different attribute name\n * in order to be processed correctly.\n *\n * @param filter The filter to map\n * @returns An attribute name string to set\n * @private\n */\n private mapFilterToAttribute(filter:any):string {\n if (filter.id === 'onlySubproject') {\n return 'project';\n }\n\n // Default to returning the filter id\n return filter.id;\n }\n}\n","import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { WorkPackageSchemaProxy } from 'core-app/features/hal/schemas/work-package-schema-proxy';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\n\nexport class WorkPackageChangeset extends ResourceChangeset {\n public setValue(key:string, val:any) {\n super.setValue(key, val);\n\n if (key === 'project' || key === 'type') {\n this.updateForm();\n }\n\n // Emit event to notify Stimulus controller in activities tab in order to update the activities list\n // TODO: emit event when change is persisted\n // currently the event might be fired too early as it only reflects the client side change\n document.dispatchEvent(\n new CustomEvent('work-package-updated'),\n );\n }\n\n protected applyChanges(payload:any):any {\n // Explicitly delete the description if it was not set by the user.\n // if it was set by the user, #applyChanges will set it again.\n // Otherwise, the backend will set it for us.\n delete payload.description;\n\n // Explicitly not send the subject, if the subject was not editable.\n // In this case a generated template is rendered in the subject and\n // must not get submitted.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!this.schema.isAttributeEditable('subject')) {\n delete (payload as { subject?:string }).subject;\n }\n\n return super.applyChanges(payload);\n }\n\n protected setNewDefaultFor(key:string, val:unknown) {\n // Special handling for taking over the description and\n // the subject to the pristine resource.\n if (key === 'description' && isNewResource(this.pristineResource)) {\n this.pristineResource.description = val;\n return;\n }\n\n if (key === 'subject' && isNewResource(this.pristineResource)) {\n this.pristineResource.subject = val as string;\n return;\n }\n\n super.setNewDefaultFor(key, val);\n }\n\n /**\n * Get the best schema currently available, either the default resource schema (must exist).\n * If loaded, return the form schema, which provides better information on writable status\n * and contains available values.\n */\n public get schema():SchemaResource {\n if (this.form$.hasValue()) {\n return WorkPackageSchemaProxy.create(super.schema, this.projectedResource);\n }\n return super.schema;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component, ElementRef, Input, OnInit,\n} from '@angular/core';\nimport { EditFormComponent } from 'core-app/shared/components/fields/edit/edit-form/edit-form.component';\n\n@Component({\n selector: 'wp-replacement-label',\n templateUrl: './wp-replacement-label.html',\n})\nexport class WorkPackageReplacementLabelComponent implements OnInit {\n @Input('fieldName') public fieldName:string;\n\n private $element:JQuery;\n\n constructor(protected wpeditForm:EditFormComponent,\n protected elementRef:ElementRef) {\n }\n\n ngOnInit() {\n this.$element = jQuery(this.elementRef.nativeElement);\n }\n\n public activate(evt:JQuery.TriggeredEvent) {\n // Skip clicks on help texts\n const target = jQuery(evt.target);\n if (target.closest('.help-text--entry').length) {\n return true;\n }\n\n const field = this.wpeditForm.fields[this.fieldName];\n field && field.handleUserActivate(null);\n\n return false;\n }\n}\n","\n \n\n","import {\n WorkPackageResource,\n} from 'core-app/features/hal/resources/work-package-resource';\nimport {\n DisplayFieldRenderer,\n editFieldContainerClass,\n} from 'core-app/shared/components/fields/display/display-field-renderer';\nimport { Injector } from '@angular/core';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { IWorkPackageTimestamp } from 'core-app/features/hal/resources/work-package-timestamp-resource';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\n\nexport const tdClassName = 'wp-table--cell-td';\nexport const editCellContainer = 'wp-table--cell-container';\n\nexport class CellBuilder {\n @InjectField(SchemaCacheService) schemaCache:SchemaCacheService;\n\n @InjectField(WorkPackageViewBaselineService) wpTableBaseline:WorkPackageViewBaselineService;\n\n public fieldRenderer = new DisplayFieldRenderer(this.injector, 'table');\n\n constructor(public injector:Injector) {\n }\n\n public build(workPackage:WorkPackageResource, column:QueryColumn) {\n const td = document.createElement('td');\n const attribute = column.id;\n td.classList.add(tdClassName, attribute);\n\n if (attribute === 'subject') {\n td.classList.add('-max');\n }\n\n if (['startDate', 'dueDate', 'duration'].includes(attribute)) {\n td.classList.add('-no-ellipsis');\n }\n\n if (['estimatedTime', 'remainingTime'].includes(attribute)) {\n td.classList.add('-min-200');\n }\n\n const schema = this.schemaCache.of(workPackage);\n const fieldSchema = schema.ofProperty(attribute);\n if (fieldSchema && fieldSchema.type === 'User') {\n td.classList.add('-contains-avatar');\n }\n\n const container = document.createElement('span');\n td.appendChild(container);\n this.render(container, workPackage, attribute);\n\n return td;\n }\n\n public refresh(container:HTMLElement, workPackage:WorkPackageResource, attribute:string) {\n container.innerHTML = '';\n this.render(container, workPackage, attribute);\n }\n\n private render(container:HTMLElement, workPackage:WorkPackageResource, attribute:string) {\n const schema = this.schemaCache.of(workPackage);\n const mappedName = schema.mappedName(attribute);\n const hasBaseline = attribute !== 'id' && this.wpTableBaseline.isChanged(workPackage, mappedName);\n container.classList.add(editCellContainer, editFieldContainerClass, attribute);\n\n const displayElement = this.fieldRenderer.render(workPackage, attribute, null);\n\n if (hasBaseline) {\n displayElement.classList.add('op-table-baseline--field', 'op-table-baseline--new-field');\n this.prependChanges(container, workPackage, mappedName);\n }\n\n container.appendChild(displayElement);\n }\n\n private prependChanges(\n container:HTMLElement,\n workPackage:WorkPackageResource,\n attribute:string,\n ):void {\n const base = (workPackage.attributesByTimestamp as IWorkPackageTimestamp[])[0];\n base.$links.schema = base.$links.schema || workPackage.$links.schema;\n const span = this.fieldRenderer.render(base, attribute, null);\n span.classList.add('op-table-baseline--field', 'op-table-baseline--old-field');\n container.classList.add('op-table-baseline--container');\n (container.parentElement as HTMLTableElement).classList.add('op-table-baseline--cell');\n container.classList.remove(editCellContainer);\n container.appendChild(span);\n }\n}\n","export namespace Highlighting {\n export function backgroundClass(property:string, id:string|number) {\n return `__hl_background_${property}_${id}`;\n }\n\n export function inlineClass(property:string, id:string|number) {\n return `__hl_inline_${property}_${id}`;\n }\n\n export function colorClass(highlightColorTextInline:boolean, id:string|number) {\n if (highlightColorTextInline) {\n return `__hl_inline_color_${id}_text`;\n }\n return `__hl_inline_color_${id}_dot`;\n }\n\n /**\n * Given the difference from today (negative = n days in the past),\n * output the fixed overdue classes\n * @param diff\n */\n export function overdueDate(diff:number):string {\n if (diff === 0) {\n return '__hl_date_due_today';\n }\n // At least one day\n if (diff <= -1) {\n return '__hl_date_overdue';\n }\n\n return '__hl_date_not_overdue';\n }\n}\n","import { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\n\nexport const internalSortColumn = {\n id: '__internal-sorthandle',\n} as QueryColumn;\n\nexport const internalContextMenuColumn = {\n id: '__internal-contextMenu',\n} as QueryColumn;\n\nexport const internalBaselineColumn = {\n id: '__internal-baseline',\n} as QueryColumn;\n\nexport const sharedUserColumn = {\n id: 'sharedWithUsers',\n} as QueryColumn;\n","import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SingleRowBuilder } from 'core-app/features/work-packages/components/wp-fast-table/builders/rows/single-row-builder';\nimport { IFieldSchema } from 'core-app/shared/components/fields/field.base';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { DisplayFieldService } from 'core-app/shared/components/fields/display/display-field.service';\nimport { groupedRowClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-rows-helpers';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { GroupObject } from 'core-app/features/hal/resources/wp-collection-resource';\n\nexport class GroupSumsBuilder extends SingleRowBuilder {\n @InjectField() readonly querySpace:IsolatedQuerySpace;\n\n @InjectField() readonly schemaCache:SchemaCacheService;\n\n @InjectField() readonly displayFieldService:DisplayFieldService;\n\n public text = {\n sum: this.I18n.t('js.label_sum'),\n };\n\n public buildSumsRow(group:GroupObject) {\n const tr:HTMLTableRowElement = document.createElement('tr');\n tr.classList.add('wp-table--sums-row', 'wp-table--row', groupedRowClassName(group.index));\n\n this.renderColumns(group.sums, tr);\n\n return tr;\n }\n\n public renderColumns(sums:{ [key:string]:any }, tr:HTMLTableRowElement) {\n this.augmentedColumns.forEach((column, i:number) => {\n const td = document.createElement('td');\n const div = this.renderContent(sums, column.id, this.sumsSchema[column.id]);\n\n if (i === 0) {\n this.appendFirstLabel(div);\n }\n\n td.appendChild(div);\n tr.append(td);\n });\n }\n\n private appendFirstLabel(div:HTMLElement) {\n const span = document.createElement('span');\n span.textContent = `${this.text.sum}`;\n span.title = `${this.text.sum}`;\n div.prepend(span);\n }\n\n private get sumsSchema():SchemaResource {\n // The schema is ensured to be loaded by wpViewAdditionalElementsService\n const results = this.querySpace.results.value!;\n const href = results.sumsSchema!.href!;\n\n return this.schemaCache.state(href).value!;\n }\n\n private renderContent(sums:any, name:string, fieldSchema:IFieldSchema) {\n const div = document.createElement('div');\n div.classList.add('wp-table--sum-container', name);\n\n // The field schema for this element may be undefined\n // because it is not summable.\n if (!fieldSchema) {\n return div;\n }\n\n const field = this.displayFieldService.getField(\n sums,\n name,\n fieldSchema,\n { injector: this.injector, container: 'table', options: {} },\n );\n\n if (!field.isEmpty()) {\n field.render(div, field.valueString);\n }\n\n return div;\n }\n}\n","// Separated from render passes to avoid cyclic dependencies\nexport const rowGroupClassName = 'wp-table--group-header';\nexport const collapsedRowClass = '-collapsed';\n","import { GroupObject } from 'core-app/features/hal/resources/wp-collection-resource';\n\nexport function groupIdentifier(group:GroupObject) {\n let value = group.value || 'nullValue';\n\n if (group.href) {\n try {\n value += group.href.map((el) => el.href).join('-');\n } catch (e) {\n console.error(`Failed to extract group identifier for ${group.value}`);\n }\n }\n\n value = value.toLowerCase().replace(/[^a-z0-9]+/g, '-');\n return `${groupByProperty(group)}-${value}`;\n}\n\nexport function groupName(group:GroupObject) {\n const { value } = group;\n if (value === null) {\n return '-';\n }\n return value;\n}\n\nexport function groupByProperty(group:GroupObject):string {\n return group._links.groupBy.href.split('/').pop()!;\n}\n\n/**\n * Get the row group class name for the given group id.\n */\nexport function groupedRowClassName(groupIndex:number) {\n return `__row-group-${groupIndex}`;\n}\n\n/**\n * Get the group type from its identifier.\n */\nexport function groupTypeFromIdentifier(groupIdentifier:string) {\n return groupIdentifier.split('-')[0];\n}\n\n/**\n * Get the group id from its identifier.\n */\nexport function groupIdFromIdentifier(groupIdentifier:string) {\n return groupIdentifier.split('-').pop();\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { SingleRowBuilder } from 'core-app/features/work-packages/components/wp-fast-table/builders/rows/single-row-builder';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { States } from 'core-app/core/states/states.service';\nimport {\n collapsedGroupClass,\n hierarchyGroupClass,\n hierarchyRootClass,\n} from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-hierarchy-helpers';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport const indicatorCollapsedClass = '-hierarchy-collapsed';\nexport const hierarchyCellClassName = 'wp-table--hierarchy-span';\nexport const additionalHierarchyRowClassName = 'wp-table--hierarchy-aditional-row';\nexport const hierarchyIndentation = 20;\nexport const hierarchyBaseIndentation = 25;\n\nexport class SingleHierarchyRowBuilder extends SingleRowBuilder {\n // Injected\n @InjectField() public wpTableHierarchies:WorkPackageViewHierarchiesService;\n\n @InjectField() public states:States;\n\n // Retain a map of hierarchy elements present in the table\n // with at least a visible child\n public parentsWithVisibleChildren:{ [id:string]:boolean };\n\n public text:{\n leaf:(level:number) => string;\n expanded:(level:number) => string;\n collapsed:(level:number) => string;\n };\n\n constructor(public readonly injector:Injector,\n protected workPackageTable:WorkPackageTable) {\n super(injector, workPackageTable);\n\n this.text = {\n leaf: (level:number) => this.I18n.t('js.work_packages.hierarchy.leaf', { level }),\n expanded: (level:number) => this.I18n.t('js.work_packages.hierarchy.children_expanded',\n { level }),\n collapsed: (level:number) => this.I18n.t('js.work_packages.hierarchy.children_collapsed',\n { level }),\n };\n }\n\n /**\n * Refresh a single row after structural changes.\n * Remembers and re-adds the hierarchy indicator if necessary.\n */\n public refreshRow(workPackage:WorkPackageResource, jRow:JQuery):JQuery {\n // Remove any old hierarchy\n const newRow = super.refreshRow(workPackage, jRow);\n newRow.find('.wp-table--hierarchy-span').remove();\n this.appendHierarchyIndicator(workPackage, newRow);\n\n return newRow;\n }\n\n /**\n * Build the columns on the given empty row\n */\n public buildEmpty(workPackage:WorkPackageResource):[HTMLTableRowElement, boolean] {\n const [element, _] = super.buildEmpty(workPackage);\n const [classes, hidden] = this.ancestorRowData(workPackage);\n element.classList.add(...classes);\n\n this.appendHierarchyIndicator(workPackage, jQuery(element));\n return [element, hidden];\n }\n\n /**\n * Returns a set of\n * @param workPackage\n */\n public ancestorRowData(workPackage:WorkPackageResource):[string[], boolean] {\n const state = this.wpTableHierarchies.current;\n const rowClasses:string[] = [];\n let hidden = false;\n\n if (this.parentsWithVisibleChildren[workPackage.id!]) {\n rowClasses.push(hierarchyRootClass(workPackage.id!));\n }\n\n const ancestors = workPackage.getAncestors();\n if (_.isArray(ancestors)) {\n ancestors.forEach((ancestor) => {\n rowClasses.push(hierarchyGroupClass(ancestor.id!));\n\n if (state.collapsed[ancestor.id!]) {\n hidden = true;\n rowClasses.push(collapsedGroupClass(ancestor.id!));\n }\n });\n }\n\n return [rowClasses, hidden];\n }\n\n /**\n * Append an additional ancestor row that is not yet loaded\n */\n public buildAncestorRow(ancestor:WorkPackageResource,\n ancestorGroups:string[],\n index:number):[HTMLTableRowElement, boolean] {\n const workPackage = this.states.workPackages.get(ancestor.id!).value!;\n const [tr, hidden] = this.buildEmpty(workPackage);\n tr.classList.add(additionalHierarchyRowClassName);\n return [tr, hidden];\n }\n\n /**\n * Append to the row of hierarchy level a hierarchy indicator.\n * @param workPackage\n * @param jRow jQuery row element\n * @param level Indentation level\n */\n private appendHierarchyIndicator(workPackage:WorkPackageResource, jRow:JQuery, level?:number):void {\n const ancestors = workPackage.getAncestors();\n const hierarchyLevel = level === undefined || null ? ancestors.length : level;\n const hierarchyElement = this.buildHierarchyIndicator(workPackage, jRow, hierarchyLevel);\n\n jRow.find('td.subject')\n .addClass('-with-hierarchy')\n .prepend(hierarchyElement);\n\n // Assure that the content is still visible when the hierarchy indentation is very large\n jRow.find('td.subject').css('minWidth', `${125 + (hierarchyIndentation * hierarchyLevel)}px`);\n jRow.find('td.subject .wp-table--cell-container')\n .css('width', `calc(100% - ${hierarchyBaseIndentation}px - ${hierarchyIndentation * hierarchyLevel}px)`);\n }\n\n /**\n * Build the hierarchy indicator at the given indentation level.\n */\n private buildHierarchyIndicator(workPackage:WorkPackageResource, jRow:JQuery|null, level:number):HTMLElement {\n const hierarchyIndicator = document.createElement('span');\n const collapsed = this.wpTableHierarchies.collapsed(workPackage.id!);\n const indicatorWidth = `${hierarchyBaseIndentation + (hierarchyIndentation * level)}px`;\n hierarchyIndicator.classList.add(hierarchyCellClassName);\n hierarchyIndicator.style.width = indicatorWidth;\n hierarchyIndicator.dataset.indentation = indicatorWidth;\n\n if (this.parentsWithVisibleChildren[workPackage.id!]) {\n const className = collapsed ? indicatorCollapsedClass : '';\n hierarchyIndicator.innerHTML = `\n \n \n ${this.text.expanded(\n level,\n )}\n ${this.text.collapsed(\n level,\n )}\n \n `;\n } else {\n hierarchyIndicator.innerHTML = `\n \n ${this.text.leaf(level)}\n \n `;\n }\n\n return hierarchyIndicator;\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageViewRelationColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { WorkPackageRelationsService } from '../../wp-relations/wp-relations.service';\nimport { QueryColumn } from '../../wp-query/query-column';\nimport { tdClassName } from './cell-builder';\n\nexport const relationCellTdClassName = 'wp-table--relation-cell-td';\nexport const relationCellIndicatorClassName = 'wp-table--relation-indicator';\n\nexport class RelationCellbuilder {\n @InjectField() states:States;\n\n @InjectField() wpRelations:WorkPackageRelationsService;\n\n @InjectField() wpTableRelationColumns:WorkPackageViewRelationColumnsService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public build(workPackage:WorkPackageResource, column:QueryColumn) {\n const td = document.createElement('td');\n td.classList.add(tdClassName, relationCellTdClassName, column.id);\n td.dataset.columnId = column.id;\n\n // Get current expansion and value state\n const expanded = this.wpTableRelationColumns.getExpandFor(workPackage.id!) === column.id;\n const relationState = this.wpRelations.state(workPackage.id!).value;\n const relations = this.wpTableRelationColumns.relationsForColumn(workPackage,\n relationState,\n column);\n\n const indicator = this.renderIndicator();\n const badge = this.renderBadge(relations);\n\n if (expanded) {\n td.classList.add('-expanded');\n }\n\n if (relations.length > 0) {\n td.appendChild(badge);\n td.appendChild(indicator);\n }\n\n return td;\n }\n\n private renderIndicator() {\n const indicator = document.createElement('span');\n indicator.classList.add(relationCellIndicatorClassName);\n indicator.setAttribute('aria-hidden', 'true');\n indicator.setAttribute('tabindex', '0');\n\n return indicator;\n }\n\n private renderBadge(relations:RelationResource[]) {\n const badge = document.createElement('span');\n badge.classList.add('wp-table--relation-count');\n\n badge.textContent = `${relations.length}`;\n badge.classList.add('badge', '-border-only');\n\n return badge;\n }\n}\n","import { Injector } from '@angular/core';\nimport { OpTableActionsService } from 'core-app/features/work-packages/components/wp-table/table-actions/table-actions.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { contextMenuSpanClassName, contextMenuTdClassName } from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport { internalContextMenuColumn } from 'core-app/features/work-packages/components/wp-fast-table/builders/internal-sort-columns';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { tdClassName } from './cell-builder';\n\nexport class TableActionRenderer {\n // Injections\n @InjectField() tableActionsService:OpTableActionsService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public build(workPackage:WorkPackageResource):HTMLElement {\n // Append details button\n const td = document.createElement('td');\n td.classList.add(tdClassName, contextMenuTdClassName, internalContextMenuColumn.id, 'hide-when-print');\n\n // Wrap any actions in a span\n const span = document.createElement('span');\n span.classList.add(contextMenuSpanClassName);\n\n this.tableActionsService\n .render(workPackage)\n .forEach((el:HTMLElement) => {\n span.appendChild(el);\n });\n\n td.appendChild(span);\n return td;\n }\n}\n","import { Injector } from '@angular/core';\nimport {\n WorkPackageResource,\n} from 'core-app/features/hal/resources/work-package-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport { tdClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/cell-builder';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { opIconElement } from 'core-app/shared/helpers/op-icon-builder';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { getBaselineState } from '../../../wp-baseline/baseline-helpers';\n\nexport const baselineCellName = 'op-table-baseline--column-cell';\n\nexport class BaselineColumnBuilder {\n @InjectField() states:States;\n\n @InjectField() wpTableBaseline:WorkPackageViewBaselineService;\n\n @InjectField() schemaCache:SchemaCacheService;\n\n @InjectField() I18n:I18nService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public build(workPackage:WorkPackageResource, column:QueryColumn) {\n const td = document.createElement('td');\n td.classList.add(tdClassName, baselineCellName, column.id);\n td.dataset.columnId = column.id;\n\n const timestamps = workPackage.attributesByTimestamp || [];\n\n // Nothing to render if we don't have a comparison\n if (timestamps.length <= 1) {\n return td;\n }\n\n // Check if added\n const icon = this.changeIcon(workPackage);\n if (icon) {\n td.appendChild(icon);\n }\n\n return td;\n }\n\n private changeIcon(\n workPackage:WorkPackageResource,\n ):HTMLElement|null {\n const state = getBaselineState(workPackage, this.schemaCache);\n if (state === 'added') {\n const icon = opIconElement('spot-icon', 'spot-icon_1', 'spot-icon_flex', 'spot-icon_arrow-in', 'op-table-baseline--icon-added');\n icon.title = this.I18n.t('js.work_packages.baseline.addition_label');\n return icon;\n }\n\n if (state === 'removed') {\n const icon = opIconElement('spot-icon', 'spot-icon_1', 'spot-icon_flex', 'spot-icon_arrow-out', 'op-table-baseline--icon-removed');\n icon.title = this.I18n.t('js.work_packages.baseline.removal_label');\n return icon;\n }\n\n if (state === 'updated') {\n const icon = opIconElement('spot-icon', 'spot-icon_1', 'spot-icon_flex', 'spot-icon_delta-triangle', 'op-table-baseline--icon-changed');\n icon.title = this.I18n.t('js.work_packages.baseline.modification_label');\n return icon;\n }\n\n return null;\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { QueryColumn } from '../../wp-query/query-column';\nimport { tdClassName } from './cell-builder';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { PrincipalRendererService } from 'core-app/shared/components/principal/principal-renderer.service';\nimport {\n WorkPackageShareModalComponent,\n} from 'core-app/features/work-packages/components/wp-share-modal/wp-share.modal';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\nexport class ShareCellbuilder {\n @InjectField(IsolatedQuerySpace) isolatedQuerySpace:IsolatedQuerySpace;\n\n @InjectField(PrincipalRendererService) principalRenderer:PrincipalRendererService;\n\n @InjectField(OpModalService) opModalService:OpModalService;\n\n @InjectField(I18nService) I18n:I18nService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public build(workPackage:WorkPackageResource, column:QueryColumn) {\n const td = document.createElement('td');\n td.classList.add(tdClassName, column.id);\n td.dataset.columnId = column.id;\n\n const relevantShares = this\n .isolatedQuerySpace\n .workPackageSharesCache\n .get(workPackage.id as string)\n .getValueOr([]);\n\n if (relevantShares.length === 0) {\n td.innerHTML = '-';\n } else {\n this\n .principalRenderer\n .renderAbbreviated(\n td,\n relevantShares.map((share) => share.principal),\n );\n\n td.setAttribute('title', this.I18n.t('js.work_packages.sharing.show_all_users'));\n }\n td.addEventListener('click', this.showShareModal.bind(this, workPackage));\n\n return td;\n }\n\n private showShareModal(workPackage:WorkPackageResource) {\n this.opModalService.show(WorkPackageShareModalComponent, 'global', { workPackage }, false, true);\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { locateTableRowByIdentifier } from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-row-helpers';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { TableActionRenderer } from 'core-app/features/work-packages/components/wp-fast-table/builders/table-action-renderer';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport {\n internalBaselineColumn,\n internalContextMenuColumn,\n internalSortColumn,\n sharedUserColumn,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/internal-sort-columns';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { checkedClassName } from '../ui-state-link-builder';\nimport { RelationCellbuilder } from '../relation-cell-builder';\nimport {\n CellBuilder,\n tdClassName,\n} from '../cell-builder';\nimport {\n isRelationColumn,\n QueryColumn,\n} from '../../../wp-query/query-column';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport { BaselineColumnBuilder } from 'core-app/features/work-packages/components/wp-fast-table/builders/baseline/baseline-column-builder';\nimport { ShareCellbuilder } from '../share-cell-builder';\n\n// Work package table row entries\nexport const tableRowClassName = 'wp-table--row';\n// Work package and timeline rows\nexport const commonRowClassName = 'wp--row';\n\nexport class SingleRowBuilder {\n // Injections\n @InjectField() wpTableSelection:WorkPackageViewSelectionService;\n\n @InjectField() wpTableColumns:WorkPackageViewColumnsService;\n\n @InjectField() wpTableBaseline:WorkPackageViewBaselineService;\n\n @InjectField() I18n!:I18nService;\n\n // Cell builder instance\n protected cellBuilder = new CellBuilder(this.injector);\n\n // Relation cell builder instance\n protected relationCellBuilder = new RelationCellbuilder(this.injector);\n\n // Share cell builder instance\n protected shareCellBuilder = new ShareCellbuilder(this.injector);\n\n // Details Link builder\n protected contextLinkBuilder = new TableActionRenderer(this.injector);\n\n // Baseline column builder\n protected baselineColumnBuilder = new BaselineColumnBuilder(this.injector);\n\n // Build the augmented columns set to render with\n protected readonly augmentedColumns:QueryColumn[] = this.buildAugmentedColumns();\n\n constructor(\n public readonly injector:Injector,\n protected workPackageTable:WorkPackageTable,\n ) {\n }\n\n /**\n * Returns the current set of columns\n */\n public get columns():QueryColumn[] {\n return this.wpTableColumns.getColumns();\n }\n\n /**\n * Returns the current set of columns, augmented by the internal columns\n * we add for buttons and timeline.\n */\n private buildAugmentedColumns():QueryColumn[] {\n const columns = [...this.columns, internalContextMenuColumn];\n\n if (this.wpTableBaseline.isActive()) {\n columns.unshift(internalBaselineColumn);\n }\n\n if (this.workPackageTable.configuration.dragAndDropEnabled) {\n columns.unshift(internalSortColumn);\n }\n\n return columns;\n }\n\n public buildCell(workPackage:WorkPackageResource, column:QueryColumn):HTMLElement|null {\n // handle relation types\n if (isRelationColumn(column)) {\n return this.relationCellBuilder.build(workPackage, column);\n }\n\n if (column.id === sharedUserColumn.id) {\n return this.shareCellBuilder.build(workPackage, column);\n }\n\n // Handle property types\n switch (column.id) {\n case internalContextMenuColumn.id:\n if (this.workPackageTable.configuration.actionsColumnEnabled) {\n return this.contextLinkBuilder.build(workPackage);\n }\n if (this.workPackageTable.configuration.columnMenuEnabled) {\n const td = document.createElement('td');\n td.classList.add('hide-when-print');\n return td;\n }\n return null;\n\n case internalBaselineColumn.id:\n return this.baselineColumnBuilder.build(workPackage, column);\n\n default:\n return this.cellBuilder.build(workPackage, column);\n }\n }\n\n /**\n * Build the columns on the given empty row\n */\n public buildEmpty(workPackage:WorkPackageResource):[HTMLTableRowElement, boolean] {\n const row = this.createEmptyRow(workPackage);\n return this.buildEmptyRow(workPackage, row);\n }\n\n /**\n * Create an empty unattached row element for the given work package\n * @param workPackage\n * @returns {any}\n */\n public createEmptyRow(workPackage:WorkPackageResource) {\n const identifier = this.classIdentifier(workPackage);\n const tr = document.createElement('tr');\n tr.setAttribute('tabindex', '0');\n tr.dataset.workPackageId = workPackage.id!;\n tr.dataset.classIdentifier = identifier;\n tr.classList.add(\n tableRowClassName,\n commonRowClassName,\n identifier,\n `${identifier}-table`,\n 'issue',\n );\n\n return tr;\n }\n\n /**\n * In case the table will end up empty, we insert a placeholder\n * row to provide some space within the tbody.\n */\n public get placeholderRow() {\n const tr:HTMLTableRowElement = document.createElement('tr');\n const td:HTMLTableCellElement = document.createElement('td');\n\n tr.classList.add('wp--placeholder-row');\n td.colSpan = this.augmentedColumns.length;\n tr.appendChild(td);\n\n return tr;\n }\n\n public classIdentifier(workPackage:WorkPackageResource) {\n return `wp-row-${workPackage.id}`;\n }\n\n /**\n * Refresh a row that is currently being edited, that is, some edit fields may be open\n */\n public refreshRow(workPackage:WorkPackageResource, jRow:JQuery):JQuery {\n // Detach all current edit cells\n const cells = jRow.find(`.${tdClassName}`).detach();\n\n // Remember the order of all new edit cells\n const newCells:HTMLElement[] = [];\n\n this.augmentedColumns.forEach((column:QueryColumn) => {\n const oldTd = cells.filter(`td.${column.id}`);\n\n // Treat internal columns specially\n // and skip the replacement of the column if this is being edited.\n // But only do that, if the column existed before. Sometimes, e.g. when lacking permissions\n // the column was not correctly created (with the intended classes). This code then\n // increases the robustness.\n if ((column.id.startsWith('__internal') || this.isColumnBeingEdited(workPackage, column)) && oldTd.length) {\n newCells.push(oldTd[0]);\n return;\n }\n\n // Otherwise, refresh that cell and append it\n const cell = this.buildCell(workPackage, column);\n\n if (cell) {\n newCells.push(cell);\n }\n });\n\n jRow.prepend(newCells);\n return jRow;\n }\n\n protected isColumnBeingEdited(workPackage:WorkPackageResource, column:QueryColumn) {\n const form = this.workPackageTable.editing.forms[workPackage.id!];\n\n return form && form.activeFields[column.id];\n }\n\n protected buildEmptyRow(workPackage:WorkPackageResource, row:HTMLTableRowElement):[HTMLTableRowElement, boolean] {\n const change = this.workPackageTable.editing.change(workPackage);\n const cells:{ [attribute:string]:JQuery } = {};\n\n if (change && !change.isEmpty()) {\n // Try to find an old instance of this row\n const oldRow = locateTableRowByIdentifier(this.classIdentifier(workPackage));\n\n change.changedAttributes.forEach((attribute:string) => {\n cells[attribute] = oldRow.find(`.${tdClassName}.${attribute}`);\n });\n }\n\n this.augmentedColumns.forEach((column:QueryColumn) => {\n let cell:Element|null;\n const oldCell:JQuery|undefined = cells[column.id];\n\n if (oldCell && oldCell.length) {\n debugLog(`Rendering previous open column ${column.id} on ${workPackage.id}`);\n jQuery(row).append(oldCell);\n } else {\n cell = this.buildCell(workPackage, column);\n\n if (cell) {\n row.appendChild(cell);\n }\n }\n });\n\n // Set the row selection state\n if (this.wpTableSelection.isSelected(workPackage.id!)) {\n row.classList.add(checkedClassName);\n }\n\n return [row, false];\n }\n}\n","import { Injector } from '@angular/core';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { commonRowClassName } from '../rows/single-row-builder';\nimport { WorkPackageTable } from '../../wp-fast-table';\n\nexport const timelineCellClassName = 'wp-timeline-cell';\n\nexport class TimelineRowBuilder {\n @InjectField() public states:States;\n\n @InjectField() public wpTableTimeline:WorkPackageViewTimelineService;\n\n constructor(public readonly injector:Injector,\n protected workPackageTable:WorkPackageTable) {\n }\n\n public build(workPackageId:string|null) {\n const cell = document.createElement('div');\n cell.classList.add(timelineCellClassName, commonRowClassName);\n\n if (workPackageId) {\n cell.dataset.workPackageId = workPackageId;\n }\n\n return cell;\n }\n\n /**\n * Build and insert a timeline row for the given work package using the additional classes.\n * @param workPackage\n * @param timelineBody\n * @param rowClasses\n */\n public insert(workPackageId:string|null,\n timelineBody:DocumentFragment|HTMLElement,\n rowClasses:string[] = []) {\n const cell = this.build(workPackageId);\n cell.classList.add(...rowClasses);\n\n timelineBody.appendChild(cell);\n }\n}\n","import { StateService } from '@uirouter/core';\nimport { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service';\n\nexport const uiStateLinkClass = '__ui-state-link';\nexport const checkedClassName = '-checked';\n\nexport class UiStateLinkBuilder {\n constructor(public readonly $state:StateService,\n public readonly keepTab:KeepTabService) {\n }\n\n public linkToDetails(workPackageId:string, title:string, content:string) {\n return this.build(workPackageId, 'split', title, content);\n }\n\n public linkToShow(workPackageId:string, title:string, content:string) {\n return this.build(workPackageId, 'show', title, content);\n }\n\n private build(workPackageId:string, state:'show'|'split', title:string, content:string) {\n const a = document.createElement('a');\n let tabState:string;\n let tabIdentifier:string;\n\n if (state === 'show') {\n tabState = 'work-packages.show.tabs';\n tabIdentifier = this.keepTab.currentShowTab;\n } else {\n tabState = 'work-packages.partitioned.list.details.tabs';\n tabIdentifier = this.keepTab.currentDetailsTab;\n }\n a.href = this.$state.href(\n tabState,\n {\n workPackageId,\n tabIdentifier,\n },\n );\n a.classList.add(uiStateLinkClass);\n a.dataset.workPackageId = workPackageId;\n a.dataset.wpState = state;\n\n a.setAttribute('title', title);\n a.textContent = content;\n\n return a;\n }\n}\n","import { KeyCodes } from 'core-app/shared/helpers/keyCodes.enum';\nimport { TableEventComponent } from 'core-app/features/work-packages/components/wp-fast-table/handlers/table-handler-registry';\nimport { WorkPackageTable } from '../wp-fast-table';\n\n/**\n * Execute the callback if the given JQuery Event is either an ENTER key or a click\n */\nexport function onClickOrEnter(evt:JQuery.TriggeredEvent, callback:() => void) {\n if (evt.type === 'click' || (evt.type === 'keydown' && evt.which === KeyCodes.ENTER)) {\n callback();\n }\n}\n\nexport abstract class ClickOrEnterHandler {\n public handleEvent(view:TableEventComponent, evt:JQuery.TriggeredEvent) {\n onClickOrEnter(evt, () => this.processEvent(view.workPackageTable, evt));\n }\n\n protected abstract processEvent(table:WorkPackageTable, evt:JQuery.TriggeredEvent):void;\n}\n","/**\n * Returns the collapsed group class for the given ancestor id\n */\nexport function collapsedGroupClass(ancestorId = ''):string {\n return `__collapsed-group-${ancestorId}`;\n}\n\nexport function hierarchyGroupClass(ancestorId:string):string {\n return `__hierarchy-group-${ancestorId}`;\n}\n\nexport function hierarchyRootClass(ancestorId:string):string {\n return `__hierarchy-root-${ancestorId}`;\n}\n\nexport function ancestorClassIdentifier(ancestorId:string) {\n return `wp-ancestor-row-${ancestorId}`;\n}\n","/**\n * Return the row html id attribute for the given work package ID.\n */\nimport { collapsedGroupClass } from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-hierarchy-helpers';\n\nexport function rowId(workPackageId:string):string {\n return `wp-row-${workPackageId}-table`;\n}\n\nexport function relationRowClass():string {\n return `wp-table--relations-aditional-row`;\n}\n\nexport function locateTableRow(workPackageId:string):JQuery {\n return jQuery(`.${rowId(workPackageId)}`);\n}\n\nexport function locateTableRowByIdentifier(identifier:string) {\n return jQuery(`.${identifier}-table`);\n}\n\nexport function isInsideCollapsedGroup(el?:Element | null) {\n if (!el) {\n return false;\n }\n\n return Array.from(el.classList).find((listClass) => listClass.includes(collapsedGroupClass())) != null;\n}\n\nexport function locatePredecessorBySelector(el:HTMLElement, selector:string):HTMLElement|null {\n let previous = el.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return previous as HTMLElement;\n }\n previous = previous.previousElementSibling;\n }\n\n return null;\n}\n\nexport function scrollTableRowIntoView(workPackageId:string):void {\n try {\n const element = locateTableRow(workPackageId);\n const container = element.scrollParent()!;\n const containerTop = container.scrollTop()!;\n const containerBottom = containerTop + container.height()!;\n\n const elemTop = element[0].offsetTop;\n const elemBottom = elemTop + element.height()!;\n\n if (elemTop < containerTop) {\n container[0].scrollTop = elemTop;\n } else if (elemBottom > containerBottom) {\n container[0].scrollTop = elemBottom - container.height()!;\n }\n } catch (e) {\n console.warn(`Can't scroll row element into view: ${e}`);\n }\n}\n","import { Injector } from '@angular/core';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageTable } from '../../wp-fast-table';\nimport { PrimaryRenderPass } from '../primary-render-pass';\n\nexport abstract class RowsBuilder {\n @InjectField() public states:States;\n\n constructor(public readonly injector:Injector, public workPackageTable:WorkPackageTable) {\n }\n\n /**\n * Build all rows of the table.\n */\n public abstract buildRows():PrimaryRenderPass;\n\n /**\n * Determine if this builder applies to the current view mode.\n */\n public isApplicable(table:WorkPackageTable) {\n return true;\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { rowGroupClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-classes.constants';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { GroupObject } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { groupName } from './grouped-rows-helpers';\n\nexport function groupClassNameFor(group:GroupObject) {\n return `group-${group.identifier}`;\n}\n\nexport class GroupHeaderBuilder {\n @InjectField() public I18n:I18nService;\n\n public text:{ collapse:string, expand:string };\n\n constructor(public readonly injector:Injector) {\n this.text = {\n collapse: this.I18n.t('js.label_collapse'),\n expand: this.I18n.t('js.label_expand'),\n };\n }\n\n public buildGroupRow(group:GroupObject, colspan:number) {\n const row = document.createElement('tr');\n let togglerIconClass; let\n text;\n\n if (group.collapsed) {\n text = this.text.expand;\n togglerIconClass = 'icon-plus';\n } else {\n text = this.text.collapse;\n togglerIconClass = 'icon-minus2';\n }\n\n row.classList.add(rowGroupClassName, groupClassNameFor(group));\n row.id = `wp-table-rowgroup-${group.index}`;\n row.dataset.groupIndex = (group.index).toString();\n row.dataset.groupIdentifier = group.identifier;\n row.innerHTML = `\n \n
    \n ${_.escape(text)}\n
    \n
    \n ${_.escape(groupName(group))}\n \n (${group.count})\n \n
    \n \n `;\n\n return row;\n }\n}\n","import { Injector } from '@angular/core';\nimport { PrimaryRenderPass, RowRenderInfo } from 'core-app/features/work-packages/components/wp-fast-table/builders/primary-render-pass';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageViewHighlightingService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport class HighlightingRenderPass {\n @InjectField() wpTableHighlighting:WorkPackageViewHighlightingService;\n\n @InjectField() querySpace:IsolatedQuerySpace;\n\n constructor(public readonly injector:Injector,\n private table:WorkPackageTable,\n private tablePass:PrimaryRenderPass) {\n\n }\n\n public render() {\n // If highlighting is done inline in attributes, skip\n if (!this.isApplicable) {\n return;\n }\n\n const highlightAttribute = this.wpTableHighlighting.current.mode;\n\n // Get the computed style to identify bright properties\n const styles = window.getComputedStyle(document.body);\n\n // Render for each original row, clone it since we're modifying the tablepass\n this.tablePass.renderedOrder.forEach((row:RowRenderInfo, position:number) => {\n // We only care for rows that are natural work packages\n if (!row.workPackage) {\n return;\n }\n\n // Get the loaded attribute of the WP\n const property = row.workPackage[highlightAttribute] as HalResource;\n\n // We only color rows that have an active attribute\n if (!property) {\n return;\n }\n\n const id = property.id!;\n const element:HTMLElement = this.tablePass.tableBody.children[position] as HTMLElement;\n element.classList.add(Highlighting.backgroundClass(highlightAttribute, id));\n });\n }\n\n private get isApplicable() {\n return !(this.wpTableHighlighting.isInline || this.wpTableHighlighting.isDisabled);\n }\n}\n","import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { tdClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/cell-builder';\nimport { Injector } from '@angular/core';\nimport { TableDragActionsRegistryService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-actions-registry.service';\nimport { TableDragActionService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-action.service';\nimport { internalSortColumn } from 'core-app/features/work-packages/components/wp-fast-table/builders/internal-sort-columns';\n\n/** Debug the render position */\nconst RENDER_DRAG_AND_DROP_POSITION = false;\n\nexport class DragDropHandleBuilder {\n // Injections\n private actionService:TableDragActionService;\n\n constructor(public readonly injector:Injector) {\n const dragActionRegistry = this.injector.get(TableDragActionsRegistryService);\n this.actionService = dragActionRegistry.get(injector);\n }\n\n /**\n * Renders an angular CDK drag component into the column\n */\n public build(workPackage:WorkPackageResource, position?:number):HTMLElement {\n // Append sort handle\n const td = document.createElement('td');\n\n td.classList.add(tdClassName, internalSortColumn.id);\n\n if (!this.actionService.canPickup(workPackage)) {\n return td;\n }\n\n td.classList.add('wp-table--sort-td', internalSortColumn.id, 'hide-when-print');\n\n // Wrap handle as span\n const span = document.createElement('span');\n span.classList.add('wp-table--drag-and-drop-handle', 'icon-drag-handle');\n td.appendChild(span);\n\n if (RENDER_DRAG_AND_DROP_POSITION) {\n const text = document.createElement('span');\n text.textContent = `${position}`;\n td.appendChild(text);\n }\n\n return td;\n }\n}\n","import { Injector } from '@angular/core';\nimport { DragDropHandleBuilder } from 'core-app/features/work-packages/components/wp-fast-table/builders/drag-and-drop/drag-drop-handle-builder';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageViewOrderService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { QueryOrder } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-order';\nimport { PrimaryRenderPass, RowRenderInfo } from '../primary-render-pass';\n\nexport class DragDropHandleRenderPass {\n @InjectField() public wpTableColumns:WorkPackageViewColumnsService;\n\n @InjectField() public wpTableOrder:WorkPackageViewOrderService;\n\n // Drag & Drop handle builder\n protected dragDropHandleBuilder = new DragDropHandleBuilder(this.injector);\n\n constructor(public readonly injector:Injector,\n private table:WorkPackageTable,\n private tablePass:PrimaryRenderPass) {\n }\n\n public render() {\n if (!this.table.configuration.dragAndDropEnabled) {\n return;\n }\n\n this.wpTableOrder.withLoadedPositions().then((positions:QueryOrder) => {\n this.tablePass.renderedOrder.forEach((row:RowRenderInfo, position:number) => {\n // We only care for rows that are natural work packages and are not relation sub-rows\n if (!row.workPackage || row.renderType === 'relations') {\n return;\n }\n\n const handle = this.dragDropHandleBuilder.build(row.workPackage, positions[row.workPackage.id!]);\n\n if (handle) {\n row.element.replaceChild(handle, row.element.firstElementChild!);\n }\n });\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { PrimaryRenderPass, RowRenderInfo } from '../primary-render-pass';\nimport { TimelineRowBuilder } from './timeline-row-builder';\nimport { WorkPackageTable } from '../../wp-fast-table';\n\nexport class TimelineRenderPass {\n /** Row builders */\n protected timelineBuilder:TimelineRowBuilder;\n\n /** Resulting timeline body */\n public timelineBody:DocumentFragment;\n\n constructor(public readonly injector:Injector,\n private table:WorkPackageTable,\n private tablePass:PrimaryRenderPass) {\n }\n\n public render() {\n // Prepare and reset the render pass\n this.timelineBody = document.createDocumentFragment();\n this.timelineBuilder = new TimelineRowBuilder(this.injector, this.table);\n\n // Render into timeline fragment\n this.tablePass.renderedOrder.forEach((row:RowRenderInfo) => {\n const wpId = row.workPackage ? row.workPackage.id : null;\n\n const secondary = this.timelineBuilder.build(wpId);\n secondary.classList.add(row.classIdentifier, `${row.classIdentifier}-timeline`, ...row.additionalClasses);\n this.timelineBody.appendChild(secondary);\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { RelationColumnType } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { commonRowClassName, SingleRowBuilder, tableRowClassName } from '../rows/single-row-builder';\nimport { tdClassName } from '../cell-builder';\nimport { WorkPackageTable } from '../../wp-fast-table';\nimport { isRelationColumn, QueryColumn } from '../../../wp-query/query-column';\n\nexport function relationGroupClass(workPackageId:string) {\n return `__relations-expanded-from-${workPackageId}`;\n}\n\nexport function relationIdentifier(targetId:string, workPackageId:string) {\n return `wp-relation-row-${workPackageId}-to-${targetId}`;\n}\n\nexport const relationCellClassName = 'wp-table--relation-cell-td';\n\nexport class RelationRowBuilder extends SingleRowBuilder {\n @InjectField() public states:States;\n\n @InjectField() public I18n:I18nService;\n\n constructor(public readonly injector:Injector,\n protected workPackageTable:WorkPackageTable) {\n super(injector, workPackageTable);\n }\n\n /**\n * For additional relation rows, we don't want to render an expandable relation cell,\n * but instead we render the relation label.\n * @param workPackage\n * @param column\n * @return {any}\n */\n public buildCell(workPackage:WorkPackageResource, column:QueryColumn):HTMLElement|null {\n // handle relation types\n if (isRelationColumn(column)) {\n return this.emptyRelationCell(column);\n }\n\n return super.buildCell(workPackage, column);\n }\n\n /**\n * Build the columns on the given empty row\n */\n public buildEmptyRelationRow(from:WorkPackageResource, relation:RelationResource, type:RelationColumnType):[HTMLElement, WorkPackageResource] {\n const denormalized = relation.denormalized(from);\n\n const to = this.states.workPackages.get(denormalized.targetId).value!;\n\n // Let the primary row builder build the row\n const row = this.createEmptyRelationRow(from, to);\n const [tr, _] = super.buildEmptyRow(to, row);\n\n return [tr, to];\n }\n\n /**\n * Create an empty unattached row element for the given work package\n * @param workPackage\n * @returns {any}\n */\n public createEmptyRelationRow(from:WorkPackageResource, to:WorkPackageResource) {\n const identifier = this.relationClassIdentifier(from, to);\n const tr = document.createElement('tr');\n tr.dataset.workPackageId = to.id!;\n tr.dataset.classIdentifier = identifier;\n\n tr.classList.add(\n commonRowClassName, tableRowClassName, 'issue',\n 'wp-table--relations-aditional-row',\n identifier,\n `${identifier}-table`,\n relationGroupClass(from.id!),\n );\n\n return tr;\n }\n\n public relationClassIdentifier(from:WorkPackageResource, to:WorkPackageResource) {\n return relationIdentifier(to.id!, from.id!);\n }\n\n /**\n *\n * @param from\n * @param denormalized\n * @param type\n */\n public appendRelationLabel(jRow:JQuery, from:WorkPackageResource, relation:RelationResource, columnId:string, type:RelationColumnType) {\n const denormalized = relation.denormalized(from);\n let typeLabel = '';\n\n // Add the relation label if this is a \"Relations for \" column\n if (type === 'toType') {\n typeLabel = this.I18n.t(`js.relation_labels.${denormalized.reverseRelationType}`);\n }\n // Add the WP type label if this is a \" Relations\" column\n if (type === 'ofType') {\n const wp = this.states.workPackages.get(denormalized.target.id!).value!;\n typeLabel = wp.type.name;\n }\n\n const relationLabel = document.createElement('span');\n relationLabel.classList.add('relation-row--type-label');\n relationLabel.textContent = typeLabel;\n\n const textNode = document.createTextNode(denormalized.target.name);\n\n jRow.find(`.${relationCellClassName}`).empty();\n jRow.find(`.${relationCellClassName}.${columnId}`).append(relationLabel);\n }\n\n protected emptyRelationCell(column:QueryColumn) {\n const cell = document.createElement('td');\n cell.classList.add(relationCellClassName, tdClassName, column.id);\n\n return cell;\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport {\n RelationColumnType,\n WorkPackageViewRelationColumnsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { relationGroupClass, RelationRowBuilder } from './relation-row-builder';\nimport { PrimaryRenderPass, RowRenderInfo } from '../primary-render-pass';\n\nexport interface RelationRenderInfo extends RowRenderInfo {\n data:{\n relation:RelationResource;\n columnId:string;\n relationType:RelationColumnType;\n };\n}\n\nexport class RelationsRenderPass {\n @InjectField() wpRelations:WorkPackageRelationsService;\n\n @InjectField() wpTableColumns:WorkPackageViewColumnsService;\n\n @InjectField() wpTableRelationColumns:WorkPackageViewRelationColumnsService;\n\n public relationRowBuilder:RelationRowBuilder;\n\n constructor(public readonly injector:Injector,\n private table:WorkPackageTable,\n private tablePass:PrimaryRenderPass) {\n this.relationRowBuilder = new RelationRowBuilder(injector, table);\n }\n\n public render() {\n // If no relation column active, skip this pass\n if (!this.isApplicable) {\n return;\n }\n\n // Render for each original row, clone it since we're modifying the tablepass\n const rendered = _.clone(this.tablePass.renderedOrder);\n rendered.forEach((row:RowRenderInfo, position:number) => {\n // We only care for rows that are natural work packages\n if (!row.workPackage) {\n return;\n }\n\n // If the work package has no relations, ignore\n const { workPackage } = row;\n const fromId = workPackage.id!;\n const state = this.wpRelations.state(fromId);\n if (!state.hasValue() || _.size(state.value) === 0) {\n return;\n }\n\n this.wpTableRelationColumns.relationsToExtendFor(workPackage,\n state.value,\n (relation:RelationResource, column:QueryColumn, type:any) => {\n // Build each relation row (currently sorted by order defined in API)\n const [relationRow, target] = this.relationRowBuilder.buildEmptyRelationRow(\n workPackage,\n relation,\n type,\n );\n\n // Augment any data for the belonging work package row to it\n relationRow.classList.add(...row.additionalClasses);\n this.relationRowBuilder.appendRelationLabel(jQuery(relationRow),\n workPackage,\n relation,\n column.id,\n type);\n\n // Insert next to the work package row\n // If no relations exist until here, directly under the row\n // otherwise as the last element of the relations\n // Insert into table\n this.tablePass.spliceRow(\n relationRow,\n `.${this.relationRowBuilder.classIdentifier(workPackage)},.${relationGroupClass(fromId)}`,\n {\n classIdentifier: this.relationRowBuilder.relationClassIdentifier(workPackage, target),\n additionalClasses: row.additionalClasses.concat(['wp-table--relations-aditional-row']),\n workPackage: target,\n belongsTo: workPackage,\n renderType: 'relations',\n hidden: row.hidden,\n data: {\n relation,\n columnId: column.id,\n relationType: type,\n },\n } as RelationRenderInfo,\n );\n });\n });\n }\n\n public refreshRelationRow(renderedRow:RelationRenderInfo,\n workPackage:WorkPackageResource,\n oldRow:JQuery) {\n const newRow = this.relationRowBuilder.refreshRow(workPackage, oldRow);\n this.relationRowBuilder.appendRelationLabel(newRow,\n renderedRow.belongsTo!,\n renderedRow.data.relation,\n renderedRow.data.columnId,\n renderedRow.data.relationType);\n\n return newRow;\n }\n\n private get isApplicable() {\n return this.wpTableColumns.hasRelationColumns();\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { HighlightingRenderPass } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/row-highlight-render-pass';\nimport { DragDropHandleRenderPass } from 'core-app/features/work-packages/components/wp-fast-table/builders/drag-and-drop/drag-drop-handle-render-pass';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { timeOutput } from 'core-app/shared/helpers/debug_output';\nimport { TimelineRenderPass } from './timeline/timeline-render-pass';\nimport { SingleRowBuilder } from './rows/single-row-builder';\nimport { RelationRenderInfo, RelationsRenderPass } from './relations/relations-render-pass';\nimport { WorkPackageTable } from '../wp-fast-table';\n\nexport type RenderedRowType = 'primary'|'relations';\n\nexport interface RowRenderInfo {\n // The rendered row\n element:HTMLTableRowElement;\n // Unique class name as an identifier to uniquely identify the row in both table and timeline\n classIdentifier:string;\n // Additional classes to be added by any secondary render passes\n additionalClasses:string[];\n // If this row is a work package, contains a reference to the rendered WP\n workPackage:WorkPackageResource|null;\n // If this is an additional row not present, this contains a reference to the WP\n // it originated from\n belongsTo?:WorkPackageResource;\n // The type of row this was rendered from\n renderType:RenderedRowType;\n // Marks if the row is currently hidden to the user\n hidden:boolean;\n // Additional data by the render passes\n data?:any;\n}\n\nexport abstract class PrimaryRenderPass {\n @InjectField() halEditing:HalResourceEditingService;\n\n @InjectField() states:States;\n\n @InjectField() I18n!:I18nService;\n\n /** The rendered order of rows of work package IDs or , if not a work package row */\n public renderedOrder:RowRenderInfo[];\n\n /** Resulting table body */\n public tableBody:DocumentFragment;\n\n /** Additional render pass that handles timeline rendering */\n public timeline:TimelineRenderPass;\n\n /** Additional render pass that handles table relation rendering */\n public relations:RelationsRenderPass;\n\n /** Additional render pass that handles drag'n'drop handle rendering */\n public dragDropHandle:DragDropHandleRenderPass;\n\n /** Additional render pass that handles highlighting of rows */\n public highlighting:HighlightingRenderPass;\n\n constructor(public readonly injector:Injector,\n public workPackageTable:WorkPackageTable,\n public rowBuilder:SingleRowBuilder) {\n }\n\n /**\n * Execute the entire render pass, executing this pass and all subsequent registered passes\n * for timeline and relations.\n * @return {PrimaryRenderPass}\n */\n public render():this {\n timeOutput('Primary render pass', () => {\n // Prepare and reset the render pass\n this.prepare();\n\n // Render into the table fragment\n this.doRender();\n\n // Post render\n this.postRender();\n });\n\n // Render subsequent passes\n // that may modify the structure of the table\n this.highlighting.render();\n\n timeOutput('Relations render pass', () => {\n this.relations.render();\n });\n\n timeOutput('Drag handle render pass', () => {\n this.dragDropHandle.render();\n });\n\n // Synchronize the rows to timeline\n timeOutput('Timelines render pass', () => {\n this.timeline.render();\n });\n\n return this;\n }\n\n /**\n * Refresh a single row using the render pass it was originally created from.\n * @param row\n */\n public refresh(row:RowRenderInfo, workPackage:WorkPackageResource, body:HTMLElement) {\n const oldRow = jQuery(body).find(`.${row.classIdentifier}`);\n let replacement:JQuery|null = null;\n\n switch (row.renderType) {\n case 'primary':\n replacement = this.rowBuilder.refreshRow(workPackage, oldRow);\n break;\n case 'relations':\n replacement = this.relations.refreshRelationRow(row as RelationRenderInfo, workPackage, oldRow);\n }\n\n if (replacement !== null && oldRow.length) {\n oldRow.replaceWith(replacement);\n }\n }\n\n public get result():RenderedWorkPackage[] {\n return this.renderedOrder.map((row) => ({\n classIdentifier: row.classIdentifier,\n workPackageId: row.workPackage ? row.workPackage.id : null,\n hidden: row.hidden,\n }));\n }\n\n /**\n * Splice a row into a specific location of the current render pass through the given selector.\n *\n * 1. Insert into the document fragment after the last match of the selector\n * 2. Splice into the renderedOrder array.\n */\n public spliceRow(row:HTMLElement, selector:string, renderedInfo:RowRenderInfo) {\n // Insert into table using the selector\n // If it matches multiple, select the last element\n const target = jQuery(this.tableBody)\n .find(selector)\n .last();\n\n target.after(row);\n\n // Splice the renderedOrder at this exact location\n const index = target.index();\n this.renderedOrder.splice(index + 1, 0, renderedInfo);\n }\n\n protected prepare() {\n this.timeline = new TimelineRenderPass(this.injector, this.workPackageTable, this);\n this.relations = new RelationsRenderPass(this.injector, this.workPackageTable, this);\n this.dragDropHandle = new DragDropHandleRenderPass(this.injector, this.workPackageTable, this);\n this.highlighting = new HighlightingRenderPass(this.injector, this.workPackageTable, this);\n this.tableBody = document.createDocumentFragment();\n this.renderedOrder = [];\n }\n\n /**\n * The actual render function of this renderer.\n */\n protected abstract doRender():void;\n\n /**\n * Post render shared among all sub passes\n */\n protected postRender():void {\n if (this.renderedOrder.length === 0 && this.workPackageTable.renderPlaceholderRow) {\n this.tableBody.appendChild(this.rowBuilder.placeholderRow);\n }\n }\n\n /**\n * Append a work package row to both containers\n * @param workPackage The work package, if the row belongs to one\n * @param row HTMLElement to append\n * @param rowClasses Additional classes to apply to the timeline row for mirroring purposes\n * @param hidden whether the row was rendered hidden\n */\n protected appendRow(workPackage:WorkPackageResource,\n row:HTMLTableRowElement,\n additionalClasses:string[] = [],\n hidden = false) {\n this.tableBody.appendChild(row);\n\n this.renderedOrder.push({\n classIdentifier: this.rowBuilder.classIdentifier(workPackage),\n additionalClasses,\n workPackage,\n renderType: 'primary',\n element: row,\n hidden,\n });\n }\n\n /**\n * Append a non-work package row to both containers\n * @param row HTMLElement to append\n * @param classIdentifer a unique identifier for the two rows (one each in table/timeline).\n * @param hidden whether the row was rendered hidden\n */\n protected appendNonWorkPackageRow(row:HTMLTableRowElement,\n classIdentifer:string,\n additionalClasses:string[] = [],\n hidden = false) {\n row.classList.add(classIdentifer);\n this.tableBody.appendChild(row);\n\n this.renderedOrder.push({\n element: row,\n classIdentifier: classIdentifer,\n additionalClasses,\n workPackage: null,\n renderType: 'primary',\n hidden,\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageTable } from '../../../wp-fast-table';\nimport { PrimaryRenderPass } from '../../primary-render-pass';\nimport { SingleRowBuilder } from '../../rows/single-row-builder';\n\nexport class PlainRenderPass extends PrimaryRenderPass {\n constructor(public readonly injector:Injector,\n public workPackageTable:WorkPackageTable,\n public rowBuilder:SingleRowBuilder) {\n super(injector, workPackageTable, rowBuilder);\n }\n\n /**\n * The actual render function of this renderer.\n */\n protected doRender():void {\n this.workPackageTable.originalRows.forEach((wpId:string) => {\n const row = this.workPackageTable.originalRowIndex[wpId];\n const [tr] = this.rowBuilder.buildEmpty(row.object);\n row.element = tr;\n this.appendRow(row.object, tr);\n this.tableBody.appendChild(tr);\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { collapsedRowClass } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-classes.constants';\nimport { GroupSumsBuilder } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/group-sums-builder';\nimport { GroupObject } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { WorkPackageTable } from '../../../wp-fast-table';\nimport { WorkPackageTableRow } from '../../../wp-table.interfaces';\nimport { SingleRowBuilder } from '../../rows/single-row-builder';\nimport { PlainRenderPass } from '../plain/plain-render-pass';\nimport {\n groupClassNameFor,\n GroupHeaderBuilder,\n} from './group-header-builder';\nimport {\n groupByProperty,\n groupedRowClassName,\n} from './grouped-rows-helpers';\n\nexport const groupRowClass = '-group-row';\n\nexport class GroupedRenderPass extends PlainRenderPass {\n private sumsBuilder = new GroupSumsBuilder(this.injector, this.workPackageTable);\n\n constructor(public readonly injector:Injector,\n public workPackageTable:WorkPackageTable,\n public groups:GroupObject[],\n public headerBuilder:GroupHeaderBuilder,\n public colspan:number,\n ) {\n super(injector, workPackageTable, new SingleRowBuilder(injector, workPackageTable));\n }\n\n /**\n * Rebuild the entire grouped tbody from the given table\n */\n protected doRender() {\n let currentGroup:GroupObject|null = null;\n const { length } = this.workPackageTable.originalRows;\n this.workPackageTable.originalRows.forEach((wpId:string, index:number) => {\n const row = this.workPackageTable.originalRowIndex[wpId];\n const nextGroup = this.matchingGroup(row.object);\n const groupsChanged = currentGroup !== nextGroup;\n\n // Render the sums row\n if (currentGroup && groupsChanged) {\n this.renderSumsRow(currentGroup);\n }\n\n // Render the next group row\n if (nextGroup && groupsChanged) {\n const groupClass = groupClassNameFor(nextGroup);\n const rowElement = this.headerBuilder.buildGroupRow(nextGroup, this.colspan);\n this.appendNonWorkPackageRow(rowElement, groupClass, [groupRowClass]);\n currentGroup = nextGroup;\n }\n\n row.group = currentGroup;\n this.buildSingleRow(row);\n });\n\n // Render the last sums row\n if (currentGroup) {\n this.renderSumsRow(currentGroup);\n }\n }\n\n /**\n * Find a matching group for the given work package.\n * The API sadly doesn't provide us with the information which group a WP belongs to.\n */\n private matchingGroup(workPackage:WorkPackageResource) {\n return _.find(this.groups, (group:GroupObject) => {\n let property = workPackage[groupByProperty(group)];\n // explicitly check for undefined as `false` (bool) is a valid value.\n if (property === undefined) {\n property = null;\n }\n\n // If the property is a multi-value\n // Compare the href's of all resources with the ones in valueLink\n if (_.isArray(property)) {\n return this.matchesMultiValue(property as HalResource[], group);\n }\n\n /// / If it's a linked resource, compare the href,\n /// / which is an array of links the resource offers\n if (property && property.href) {\n return !!_.find(group._links.valueLink, (l:any):any => property.href === l.href);\n }\n\n // Otherwise, fall back to simple value comparison.\n let value = group.value === '' ? null : group.value;\n\n if (value && typeof value === 'string') {\n // For matching we have to remove the % sign which is shown when grouping after progress\n value = value.replace('%', '');\n }\n\n // Values provided by the API are always string\n // so avoid triple equal here\n // tslint:disable-next-line\n return value == property;\n }) as GroupObject;\n }\n\n private matchesMultiValue(property:HalResource[], group:GroupObject) {\n if (property.length !== group.href.length) {\n return false;\n }\n\n const joinedOrderedHrefs = (objects:any[]) => _.map(objects, (object) => object.href).sort().join(', ');\n\n return _.isEqualWith(\n property,\n group.href,\n (a, b) => joinedOrderedHrefs(a) === joinedOrderedHrefs(b),\n );\n }\n\n /**\n * Enhance a row from the rowBuilder with group information.\n */\n private buildSingleRow(row:WorkPackageTableRow):void {\n const { group } = row;\n\n if (!group) {\n console.warn(\"All rows should have a group, but this one doesn't %O\", row);\n }\n\n let hidden = false;\n const additionalClasses:string[] = [];\n\n const [tr, _] = this.rowBuilder.buildEmpty(row.object);\n\n if (group) {\n additionalClasses.push(groupedRowClassName(group.index));\n hidden = !!group.collapsed;\n\n if (hidden) {\n additionalClasses.push(collapsedRowClass);\n }\n }\n\n row.element = tr;\n tr.classList.add(...additionalClasses);\n this.appendRow(row.object, tr, additionalClasses, hidden);\n }\n\n /**\n * Render the sums row for the current group\n */\n private renderSumsRow(group:GroupObject) {\n if (!group.sums) {\n return;\n }\n\n const groupClass = groupClassNameFor(group);\n const rowElement = this.sumsBuilder.buildSumsRow(group);\n this.appendNonWorkPackageRow(rowElement, groupClass);\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport {\n collapsedRowClass,\n rowGroupClassName,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-classes.constants';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { GroupObject } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { WorkPackageTable } from '../../../wp-fast-table';\nimport { tableRowClassName } from '../../rows/single-row-builder';\nimport { RowsBuilder } from '../rows-builder';\nimport { GroupHeaderBuilder } from './group-header-builder';\nimport { GroupedRenderPass } from './grouped-render-pass';\nimport { groupedRowClassName, groupIdentifier } from './grouped-rows-helpers';\n\nexport class GroupedRowsBuilder extends RowsBuilder {\n // Injections\n @InjectField() private readonly querySpace:IsolatedQuerySpace;\n\n @InjectField() public states:States;\n\n @InjectField() public wpTableColumns:WorkPackageViewColumnsService;\n\n @InjectField() public I18n:I18nService;\n\n constructor(public readonly injector:Injector, workPackageTable:WorkPackageTable) {\n super(injector, workPackageTable);\n }\n\n /**\n * The hierarchy builder is only applicable if the hierarchy mode is active\n */\n public isApplicable(table:WorkPackageTable) {\n return !_.isEmpty(this.groups);\n }\n\n /**\n * Returns the reference to the last table.groups state value\n */\n public get groups() {\n return this.querySpace.groups.value || [];\n }\n\n /**\n * Returns the reference to the last table.collapesedGroups state value\n */\n public get collapsedGroups() {\n return this.querySpace.collapsedGroups.value || {};\n }\n\n public buildRows() {\n const builder = new GroupHeaderBuilder(this.injector);\n return new GroupedRenderPass(\n this.injector,\n this.workPackageTable,\n this.getGroupData(),\n builder,\n this.workPackageTable.colspan,\n ).render();\n }\n\n /**\n * Refresh the group expansion state\n */\n public refreshExpansionState() {\n const groups = this.getGroupData();\n const rendered = this.querySpace.tableRendered.value!;\n const builder = new GroupHeaderBuilder(this.injector);\n\n jQuery(this.workPackageTable.tableAndTimelineContainer)\n .find(`.${rowGroupClassName}`)\n .each((i:number, oldRow:Element) => {\n const groupIndex = jQuery(oldRow).data('groupIndex');\n const group = groups[groupIndex];\n\n // Refresh the group header\n const newRow = builder.buildGroupRow(group, this.workPackageTable.colspan);\n\n if (oldRow.parentNode) {\n oldRow.parentNode.replaceChild(newRow, oldRow);\n }\n\n // Set expansion state of contained rows\n const affected = jQuery(this.workPackageTable.tableAndTimelineContainer)\n .find(`.${groupedRowClassName(groupIndex)}`);\n affected.toggleClass(collapsedRowClass, !!group.collapsed);\n\n // Update the hidden section of the rendered state\n affected.filter(`.${tableRowClassName}`).each((i, el) => {\n // Get the index of this row\n const index = jQuery(el).index();\n\n // Update the hidden state\n rendered[index].hidden = !!group.collapsed;\n });\n });\n\n this.querySpace.tableRendered.putValue(rendered, 'Updated hidden state of rows after group change.');\n }\n\n /**\n * Augment the given groups with the current collapsed state data.\n */\n private getGroupData() {\n return this.groups.map((group:GroupObject, index:number) => {\n group.index = index;\n if (group._links && group._links.valueLink) {\n group.href = group._links.valueLink;\n }\n group.identifier = groupIdentifier(group);\n group.collapsed = this.collapsedGroups[group.identifier];\n return group;\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PrimaryRenderPass, RowRenderInfo } from 'core-app/features/work-packages/components/wp-fast-table/builders/primary-render-pass';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageTableRow } from 'core-app/features/work-packages/components/wp-fast-table/wp-table.interfaces';\nimport {\n ancestorClassIdentifier,\n hierarchyGroupClass,\n} from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-hierarchy-helpers';\nimport { WorkPackageViewHierarchies } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-hierarchies';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { additionalHierarchyRowClassName, SingleHierarchyRowBuilder } from './single-hierarchy-row-builder';\n\nexport class HierarchyRenderPass extends PrimaryRenderPass {\n @InjectField() querySpace:IsolatedQuerySpace;\n\n @InjectField() states:States;\n\n @InjectField() apiV3Service:ApiV3Service;\n\n @InjectField() wpTableHierarchies:WorkPackageViewHierarchiesService;\n\n // Remember which rows were already rendered\n readonly rendered:{ [workPackageId:string]:boolean } = {};\n\n // Remember additional parents inserted that are not part of the results table\n private additionalParents:{ [workPackageId:string]:WorkPackageResource } = {};\n\n // Defer children to be rendered when their parent occurs later in the table\n private deferred:{ [parentId:string]:WorkPackageResource[] } = {};\n\n // Collapsed state\n private hierarchies:WorkPackageViewHierarchies;\n\n // Build a map of hierarchy elements present in the table\n // with at least a visible child\n public parentsWithVisibleChildren:{ [id:string]:boolean } = {};\n\n constructor(public readonly injector:Injector,\n public workPackageTable:WorkPackageTable,\n public rowBuilder:SingleHierarchyRowBuilder) {\n super(injector, workPackageTable, rowBuilder);\n }\n\n protected prepare() {\n super.prepare();\n\n this.hierarchies = this.wpTableHierarchies.current;\n\n _.each(this.workPackageTable.originalRowIndex, (row) => {\n row.object.getAncestors().forEach((ancestor:WorkPackageResource) => {\n this.parentsWithVisibleChildren[ancestor.id!] = true;\n });\n });\n\n this.rowBuilder.parentsWithVisibleChildren = this.parentsWithVisibleChildren;\n }\n\n /**\n * Render the hierarchy table into the document fragment\n */\n protected doRender() {\n this.workPackageTable.originalRows.forEach((wpId:string) => {\n const row:WorkPackageTableRow = this.workPackageTable.originalRowIndex[wpId];\n const workPackage:WorkPackageResource = row.object;\n\n // If we need to defer this row, skip it for now\n if (this.deferInsertion(workPackage)) {\n return;\n }\n\n if (workPackage.getAncestors().length) {\n // If we have ancestors, render it\n this.buildWithHierarchy(row);\n } else {\n // Render a work package root with no parents\n const [tr, hidden] = this.rowBuilder.buildEmpty(workPackage);\n row.element = tr;\n this.tableBody.appendChild(tr);\n this.markRendered(tr, workPackage, hidden);\n }\n\n // Render all potentially deferred rows\n this.renderAllDeferredChildren(workPackage);\n });\n }\n\n /**\n * If the given work package has a visible ancestor in the table, return true\n * and remember the work package until the ancestor is rendered.\n * @param workPackage\n * @returns {boolean}\n */\n public deferInsertion(workPackage:WorkPackageResource):boolean {\n const ancestors = workPackage.getAncestors();\n\n // Will only defer if at least one ancestor exists\n if (ancestors.length === 0) {\n return false;\n }\n\n // Cases for wp\n // 1. No wp.ancestors in table -> Render them immediately (defer=false)\n // 2. Parent in table -> defered[parent] = wp\n // 3. Parent not in table BUT a ancestor in table\n // -> deferred[a ancestor] = parent\n // -> deferred[parent] = wp\n // 4. Any ancestor already rendered -> Render normally (don't defer)\n const ancestorChain = ancestors.concat([workPackage]);\n for (let i = ancestorChain.length - 2; i >= 0; --i) {\n const parent = ancestorChain[i];\n\n const inTable = this.workPackageTable.originalRowIndex[parent.id!];\n const alreadyRendered = this.rendered[parent.id!];\n\n if (alreadyRendered) {\n // parent is already rendered.\n // Don't defer, but render all intermediate parents below it\n return false;\n }\n\n if (inTable) {\n // Get the current elements\n let elements = this.deferred[parent.id!] || [];\n // Append to them the child and all children below\n let newElements:WorkPackageResource[] = ancestorChain.slice(i + 1, ancestorChain.length);\n newElements = newElements.map((child) => this.apiV3Service.work_packages.cache.state(child.id!).value!);\n // Append all new elements\n elements = elements.concat(newElements);\n // Remove duplicates (Regression #29652)\n this.deferred[parent.id!] = _.uniqBy(elements, (el) => el.id!);\n return true;\n }\n // Otherwise, continue the chain upwards\n }\n\n return false;\n }\n\n /**\n * Render any deferred children of the given work package. If recursive children were\n * deferred, each of them will be passed through renderCallback.\n * @param workPackage\n */\n private renderAllDeferredChildren(workPackage:WorkPackageResource) {\n const wpId = workPackage.id!;\n const deferredChildren = this.deferred[wpId] || [];\n\n // If the work package has deferred children to render,\n // run them through the callback\n deferredChildren.forEach((child:WorkPackageResource) => {\n this.insertUnderParent(this.getOrBuildRow(child), child.parent || workPackage);\n\n // Descend into any children the child WP might have and callback\n this.renderAllDeferredChildren(child);\n });\n }\n\n private getOrBuildRow(workPackage:WorkPackageResource) {\n let row:WorkPackageTableRow = this.workPackageTable.originalRowIndex[workPackage.id!];\n\n if (!row) {\n row = { object: workPackage } as WorkPackageTableRow;\n }\n\n return row;\n }\n\n private buildWithHierarchy(row:WorkPackageTableRow) {\n // Ancestor data [root, med, thisrow]\n const ancestors = row.object.getAncestors();\n const ancestorGroups:string[] = [];\n\n // Iterate ancestors\n ancestors.forEach((el:WorkPackageResource, index:number) => {\n const ancestor = this.states.workPackages.get(el.id!).getValueOr(el);\n\n // If we see the parent the first time,\n // build it as an additional row and insert it into the ancestry\n if (!this.rendered[ancestor.id!]) {\n const [ancestorRow, hidden] = this.rowBuilder.buildAncestorRow(ancestor, ancestorGroups, index);\n // Insert the ancestor row, either right here if it's a root node\n // Or below the appropriate parent\n\n if (index === 0) {\n // Special case, first ancestor => root without parent\n this.tableBody.appendChild(ancestorRow);\n this.markRendered(ancestorRow, ancestor, hidden, true);\n } else {\n // This ancestor must be inserted in the last position of its root\n const parent = ancestors[index - 1];\n this.insertAtExistingHierarchy(ancestor, ancestorRow, parent, hidden, true);\n }\n\n // Remember we just added this extra ancestor row\n this.additionalParents[ancestor.id!] = ancestor;\n }\n\n // Push the correct ancestor groups for identifiying a hierarchy group\n ancestorGroups.push(hierarchyGroupClass(ancestor.id!));\n ancestors.slice(0, index).forEach((previousAncestor) => {\n ancestorGroups.push(hierarchyGroupClass(previousAncestor.id!));\n });\n });\n\n // Insert this row to parent\n const parent = _.last(ancestors);\n this.insertUnderParent(row, parent!);\n }\n\n /**\n * Insert the given node as a child of the parent\n * @param row\n * @param parent\n */\n private insertUnderParent(row:WorkPackageTableRow, parent:WorkPackageResource) {\n const [tr, hidden] = this.rowBuilder.buildEmpty(row.object);\n row.element = tr;\n this.insertAtExistingHierarchy(row.object, tr, parent, hidden, false);\n }\n\n /**\n * Mark the given work package as rendered\n * @param workPackage\n * @param hidden\n * @param isAncestor\n */\n private markRendered(row:HTMLTableRowElement, workPackage:WorkPackageResource, hidden = false, isAncestor = false) {\n this.rendered[workPackage.id!] = true;\n this.renderedOrder.push(this.buildRenderInfo(row, workPackage, hidden, isAncestor));\n }\n\n /**\n * Append a row to the given parent hierarchy group.\n */\n private insertAtExistingHierarchy(workPackage:WorkPackageResource,\n el:HTMLTableRowElement,\n parent:WorkPackageResource,\n hidden:boolean,\n isAncestor:boolean) {\n // Either append to the hierarchy group root (= the parentID row itself)\n const hierarchyRoot = `.__hierarchy-root-${parent.id}`;\n // Or, if it has descendants, append to the LATEST of that set\n const hierarchyGroup = `.__hierarchy-group-${parent.id}`;\n\n // Insert into table\n this.spliceRow(\n el,\n `${hierarchyRoot},${hierarchyGroup}`,\n this.buildRenderInfo(el, workPackage, hidden, isAncestor),\n );\n\n this.rendered[workPackage.id!] = true;\n }\n\n private buildRenderInfo(row:HTMLTableRowElement, workPackage:WorkPackageResource, hidden:boolean, isAncestor:boolean):RowRenderInfo {\n const info:RowRenderInfo = {\n element: row,\n classIdentifier: '',\n additionalClasses: [],\n workPackage,\n renderType: 'primary',\n hidden,\n };\n\n const [ancestorClasses, _] = this.rowBuilder.ancestorRowData(workPackage);\n\n if (isAncestor) {\n info.additionalClasses = [additionalHierarchyRowClassName].concat(ancestorClasses);\n info.classIdentifier = ancestorClassIdentifier(workPackage.id!);\n } else {\n info.additionalClasses = ancestorClasses;\n info.classIdentifier = this.rowBuilder.classIdentifier(workPackage);\n }\n\n return info;\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageTable } from '../../../wp-fast-table';\nimport { RowsBuilder } from '../rows-builder';\nimport { HierarchyRenderPass } from './hierarchy-render-pass';\nimport { SingleHierarchyRowBuilder } from './single-hierarchy-row-builder';\n\nexport class HierarchyRowsBuilder extends RowsBuilder {\n // Injections\n @InjectField() states:States;\n\n @InjectField() wpTableColumns:WorkPackageViewColumnsService;\n\n @InjectField() wpTableHierarchies:WorkPackageViewHierarchiesService;\n\n // The group expansion state\n constructor(public readonly injector:Injector, public workPackageTable:WorkPackageTable) {\n super(injector, workPackageTable);\n }\n\n /**\n * The hierarchy builder is only applicable if the hierarchy mode is active\n */\n public isApplicable(_table:WorkPackageTable) {\n return this.wpTableHierarchies.isEnabled;\n }\n\n /**\n * Rebuild the entire grouped tbody from the given table\n */\n public buildRows():HierarchyRenderPass {\n const builder = new SingleHierarchyRowBuilder(this.injector, this.workPackageTable);\n return new HierarchyRenderPass(this.injector, this.workPackageTable, builder).render();\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageTable } from '../../../wp-fast-table';\nimport { PrimaryRenderPass } from '../../primary-render-pass';\nimport { SingleRowBuilder } from '../../rows/single-row-builder';\nimport { RowsBuilder } from '../rows-builder';\nimport { PlainRenderPass } from './plain-render-pass';\n\nexport class PlainRowsBuilder extends RowsBuilder {\n // Injections\n @InjectField() public I18n:I18nService;\n\n // The group expansion state\n constructor(public readonly injector:Injector, workPackageTable:WorkPackageTable) {\n super(injector, workPackageTable);\n }\n\n /**\n * Rebuild the entire grouped tbody from the given table\n */\n public buildRows():PrimaryRenderPass {\n const builder = new SingleRowBuilder(this.injector, this.workPackageTable);\n return new PlainRenderPass(this.injector, this.workPackageTable, builder).render();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injector } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { States } from 'core-app/core/states/states.service';\nimport { IFieldSchema } from 'core-app/shared/components/fields/field.base';\n\nimport { EditFieldHandler } from 'core-app/shared/components/fields/edit/editing-portal/edit-field-handler';\nimport {\n WorkPackageViewColumnsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { FocusHelperService } from 'core-app/shared/directives/focus/focus-helper';\nimport { EditingPortalService } from 'core-app/shared/components/fields/edit/editing-portal/editing-portal-service';\nimport {\n CellBuilder,\n tdClassName,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/cell-builder';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { EditForm } from 'core-app/shared/components/fields/edit/edit-form/edit-form';\nimport { editModeClassName } from 'core-app/shared/components/fields/edit/edit-field.component';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { editFieldContainerClass } from 'core-app/shared/components/fields/display/display-field-renderer';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\n\nexport const activeFieldContainerClassName = 'inline-edit--active-field';\nexport const activeFieldClassName = 'inline-edit--field';\n\nexport class TableEditForm extends EditForm {\n @InjectField() public wpTableColumns:WorkPackageViewColumnsService;\n\n @InjectField() public apiV3Service!:ApiV3Service;\n\n @InjectField() public states:States;\n\n @InjectField() public FocusHelper:FocusHelperService;\n\n @InjectField() public editingPortalService:EditingPortalService;\n\n @InjectField() wpListService:WorkPackagesListService;\n\n // Use cell builder to reset edit fields\n private cellBuilder = new CellBuilder(this.injector);\n\n // Subscription\n private resourceSubscription:Subscription = this\n .apiV3Service\n .work_packages\n .id(this.workPackageId)\n .requireAndStream()\n .subscribe((wp) => this.resource = wp);\n\n constructor(\n public injector:Injector,\n public table:WorkPackageTable,\n public workPackageId:string,\n public classIdentifier:string,\n ) {\n super(injector);\n }\n\n destroy() {\n _.each(this.activeFields, (field) => {\n field.deactivate(false);\n });\n this.resourceSubscription.unsubscribe();\n }\n\n public findContainer(fieldName:string):JQuery {\n return this.rowContainer.find(`.${tdClassName}.${fieldName} .${editFieldContainerClass}`).first();\n }\n\n public findCell(fieldName:string) {\n return this.rowContainer.find(`.${tdClassName}.${fieldName}`).first();\n }\n\n public activateField(form:EditForm, schema:IFieldSchema, fieldName:string, errors:string[]):Promise {\n return this.waitForContainer(fieldName)\n .then((cell) => {\n // Forcibly set the width since the edit field may otherwise\n // be given more width. Thereby preserve a minimum width of 150.\n // To avoid flickering content, the padding is removed, too.\n const td = this.findCell(fieldName);\n td.addClass(editModeClassName);\n let width = parseInt(td.css('width'));\n width = width > 150 ? width - 10 : 150;\n td.css('max-width', `${width}px`);\n td.css('width', `${width}px`);\n\n return this.editingPortalService.create(\n cell,\n this.injector,\n form,\n schema,\n fieldName,\n errors,\n );\n });\n }\n\n public reset(fieldName:string, focus?:boolean) {\n const cell = this.findContainer(fieldName);\n const td = this.findCell(fieldName);\n\n if (cell.length) {\n this.findCell(fieldName).css('width', '');\n this.findCell(fieldName).css('max-width', '');\n this.cellBuilder.refresh(cell[0], this.resource, fieldName);\n td.removeClass(editModeClassName);\n\n if (focus) {\n this.FocusHelper.focus(cell[0]);\n }\n }\n }\n\n public requireVisible(fieldName:string):Promise {\n // Ensure the query form is loaded before trying to set fields\n // as we require new columns to be present\n return this.wpListService\n .conditionallyLoadForm()\n .then(() => {\n this.wpTableColumns.addColumn(fieldName);\n return this.waitForContainer(fieldName);\n });\n }\n\n protected focusOnFirstError():void {\n // Focus the first field that is erroneous\n jQuery(this.table.tableAndTimelineContainer)\n .find(`.${activeFieldContainerClassName}.-error .${activeFieldClassName}`)\n .first()\n .trigger('focus');\n }\n\n /**\n * Load the resource form to get the current field schema with all\n * values loaded.\n * @param fieldName\n */\n protected loadFieldSchema(fieldName:string, noWarnings = false):Promise {\n // We need to handle start/due date cases like they were combined dates\n if (['startDate', 'dueDate', 'date'].includes(fieldName)) {\n fieldName = 'combinedDate';\n }\n\n return super.loadFieldSchema(fieldName, noWarnings);\n }\n\n // Ensure the given field is visible.\n // We may want to look into MutationObserver if we need this in several places.\n private waitForContainer(fieldName:string):Promise {\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const container = this.findContainer(fieldName);\n\n if (container.length > 0) {\n clearInterval(interval);\n resolve(container[0]);\n }\n }, 100);\n });\n }\n\n private get rowContainer() {\n return jQuery(this.table.tableAndTimelineContainer).find(`.${this.classIdentifier}-table`);\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { EditForm } from 'core-app/shared/components/fields/edit/edit-form/edit-form';\nimport { TableEditForm } from 'core-app/features/work-packages/components/wp-edit-form/table-edit-form';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport class WorkPackageTableEditingContext {\n @InjectField() public halEditing:HalResourceEditingService;\n\n constructor(readonly table:WorkPackageTable,\n readonly injector:Injector) {\n }\n\n public forms:{ [wpId:string]:TableEditForm } = {};\n\n public reset() {\n _.each(this.forms, (form) => form.destroy());\n this.forms = {};\n }\n\n public change(workPackage:WorkPackageResource):WorkPackageChangeset|undefined {\n return this.halEditing.typedState(workPackage).value;\n }\n\n // TODO\n public stopEditing(workPackage:WorkPackageResource) {\n this.halEditing.stopEditing(workPackage);\n\n const existing = this.forms[workPackage.id!];\n if (existing) {\n existing.destroy();\n delete this.forms[workPackage.id!];\n }\n }\n\n public startEditing(workPackage:WorkPackageResource, classIdentifier:string):EditForm {\n const wpId = workPackage.id!;\n const existing = this.forms[wpId];\n if (existing) {\n return existing;\n }\n\n // Get any existing edit state for this work package\n return this.forms[wpId] = new TableEditForm(this.injector, this.table, wpId, classIdentifier);\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { WorkPackageViewCollapsedGroupsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-collapsed-groups.service';\nimport { WorkPackageTableConfiguration } from 'core-app/features/work-packages/components/wp-table/wp-table-configuration';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { WorkPackageTimelineTableController } from '../wp-table/timeline/container/wp-timeline-container.directive';\nimport { GroupedRowsBuilder } from './builders/modes/grouped/grouped-rows-builder';\nimport { HierarchyRowsBuilder } from './builders/modes/hierarchy/hierarchy-rows-builder';\nimport { PlainRowsBuilder } from './builders/modes/plain/plain-rows-builder';\nimport { RowsBuilder } from './builders/modes/rows-builder';\nimport { PrimaryRenderPass } from './builders/primary-render-pass';\nimport { WorkPackageTableEditingContext } from './wp-table-editing';\nimport { WorkPackageTableRow } from './wp-table.interfaces';\n\nexport class WorkPackageTable {\n @InjectField() querySpace:IsolatedQuerySpace;\n\n @InjectField() apiV3Service:ApiV3Service;\n\n @InjectField() states:States;\n\n @InjectField() I18n!:I18nService;\n\n @InjectField() workPackageViewCollapsedGroupsService:WorkPackageViewCollapsedGroupsService;\n\n public originalRows:string[] = [];\n\n public colspan:number;\n\n public originalRowIndex:{ [id:string]:WorkPackageTableRow } = {};\n\n private hierarchyRowsBuilder = new HierarchyRowsBuilder(this.injector, this);\n\n private groupedRowsBuilder = new GroupedRowsBuilder(this.injector, this);\n\n private plainRowsBuilder = new PlainRowsBuilder(this.injector, this);\n\n // WP rows builder\n // Ordered by priority\n private builders = [this.hierarchyRowsBuilder, this.groupedRowsBuilder, this.plainRowsBuilder];\n\n // Last render pass used for refreshing single rows\n public lastRenderPass:PrimaryRenderPass|null = null;\n\n // Work package editing context handler in the table, which handles open forms\n // and their contexts\n public editing:WorkPackageTableEditingContext = new WorkPackageTableEditingContext(this, this.injector);\n\n constructor(\n public readonly injector:Injector,\n public tableAndTimelineContainer:HTMLElement,\n public scrollContainer:HTMLElement,\n public tbody:HTMLElement,\n public timelineBody:HTMLElement,\n public timelineController:WorkPackageTimelineTableController,\n public configuration:WorkPackageTableConfiguration,\n ) {\n }\n\n public get renderedRows() {\n return this.querySpace.tableRendered.getValueOr([]);\n }\n\n public findRenderedRow(classIdentifier:string):[number, RenderedWorkPackage] {\n const index = _.findIndex(this.renderedRows, (row) => row.classIdentifier === classIdentifier);\n\n return [index, this.renderedRows[index]];\n }\n\n public get rowBuilder():RowsBuilder {\n return _.find(this.builders, (builder:RowsBuilder) => builder.isApplicable(this))!;\n }\n\n /**\n * Build the row index and positions from the given set of ordered work packages.\n * @param rows\n */\n private buildIndex(rows:WorkPackageResource[]) {\n this.originalRowIndex = {};\n this.originalRows = rows.map((wp:WorkPackageResource, i:number) => {\n const wpId = wp.id!;\n\n // Ensure we get the latest version\n wp = this.apiV3Service.work_packages.cache.current(wpId, wp)!;\n\n this.originalRowIndex[wpId] = { object: wp, workPackageId: wpId, position: i };\n return wpId;\n });\n }\n\n /**\n *\n * @param rows\n */\n public initialSetup(rows:WorkPackageResource[]) {\n // Build the row representation\n this.buildIndex(rows);\n\n // Draw work packages\n this.redrawTableAndTimeline();\n }\n\n /**\n * Removes the contents of this table's tbody and redraws\n * all elements.\n */\n public redrawTableAndTimeline() {\n const renderPass = this.performRenderPass(false);\n\n // Insert timeline body\n requestAnimationFrame(() => {\n this.tbody.replaceChildren();\n this.timelineBody.replaceChildren();\n this.tbody.appendChild(renderPass.tableBody);\n this.timelineBody.appendChild(renderPass.timeline.timelineBody);\n\n // Mark rendering event in a timeout to let DOM process\n setTimeout(() => this.querySpace.tableRendered.putValue(renderPass.result));\n });\n }\n\n /**\n * Redraw all elements in the table section only\n */\n public redrawTable() {\n const renderPass = this.performRenderPass();\n this.querySpace.tableRendered.putValue(renderPass.result);\n }\n\n /**\n * Redraw single rows for a given work package being updated.\n */\n public refreshRows(workPackage:WorkPackageResource) {\n const pass = this.lastRenderPass;\n if (!pass) {\n debugLog('Trying to refresh a singular row without a previous render pass.');\n return;\n }\n\n _.each(pass.renderedOrder, (row) => {\n if (row.workPackage && row.workPackage.id === workPackage.id!) {\n debugLog(`Refreshing rendered row ${row.classIdentifier}`);\n row.workPackage = workPackage;\n pass.refresh(row, workPackage, this.tbody);\n }\n });\n }\n\n /**\n * Determine whether we need an empty placeholder row.\n * When D&D is enabled, the table requires a drag target that is non-empty,\n * and the tbody cannot be resized appropriately.\n */\n public get renderPlaceholderRow() {\n return this.configuration.dragAndDropEnabled;\n }\n\n /**\n * Perform the render pass\n * @param insert whether to insert the result (set to false for timeline)\n */\n private performRenderPass(insert = true) {\n this.editing.reset();\n const renderPass = this.lastRenderPass = this.rowBuilder.buildRows();\n\n // Insert table body\n if (insert) {\n requestAnimationFrame(() => {\n this.tbody.innerHTML = '';\n this.tbody.appendChild(renderPass.tableBody);\n });\n }\n\n return renderPass;\n }\n\n setGroupsCollapseState(newState:{ [key:string]:boolean }) {\n this.querySpace.collapsedGroups.putValue(newState);\n\n const t0 = performance.now();\n this.groupedRowsBuilder.refreshExpansionState();\n const t1 = performance.now();\n\n debugLog(`Group redraw took ${t1 - t0} milliseconds.`);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output,\n} from '@angular/core';\nimport { WorkPackageViewHighlightingService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service';\nimport { CardViewOrientation } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { HighlightingMode } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting-mode.const';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { DragAndDropService } from 'core-app/shared/helpers/drag-and-drop/drag-and-drop.service';\nimport { WorkPackageCardDragAndDropService } from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-drag-and-drop.service';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\nimport { WorkPackageTableConfiguration } from 'core-app/features/work-packages/components/wp-table/wp-table-configuration';\nimport { WorkPackageViewOutputs } from 'core-app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry';\n\n@Component({\n selector: 'wp-grid',\n template: `\n \n \n\n
    \n \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DragAndDropService,\n WorkPackageCardDragAndDropService,\n ],\n})\nexport class WorkPackagesGridComponent implements WorkPackageViewOutputs {\n @Input() public configuration:WorkPackageTableConfiguration;\n\n @Input() public showResizer = false;\n\n @Input() public resizerClass = '';\n\n @Input() public resizerStorageKey = '';\n\n @Output() selectionChanged = new EventEmitter();\n\n @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>();\n\n @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>();\n\n public canDragOutOf:() => boolean;\n\n public dragInto:boolean;\n\n public gridOrientation:CardViewOrientation = 'horizontal';\n\n public highlightingMode:HighlightingMode = 'none';\n\n constructor(readonly wpTableHighlight:WorkPackageViewHighlightingService,\n readonly wpTableSortBy:WorkPackageViewSortByService,\n readonly wpList:WorkPackagesListService,\n readonly querySpace:IsolatedQuerySpace,\n readonly cdRef:ChangeDetectorRef) {\n }\n\n ngOnInit() {\n this.dragInto = this.configuration.dragAndDropEnabled;\n this.canDragOutOf = () => this.configuration.dragAndDropEnabled;\n\n this.wpTableHighlight.onReady().then(() => this.highlightingModeChanged());\n\n this.wpTableHighlight\n .updates$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n distinctUntilChanged(),\n )\n .subscribe(() => this.highlightingModeChanged());\n }\n\n public switchToManualSorting() {\n const query = this.querySpace.query.value;\n if (query && this.wpTableSortBy.switchToManualSorting(query)) {\n void this.wpList.createOrSave(query);\n }\n }\n\n private highlightingModeChanged():void {\n this.highlightingMode = this.wpTableHighlight.current.mode;\n this.cdRef.detectChanges();\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { tdClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/cell-builder';\nimport { internalContextMenuColumn } from 'core-app/features/work-packages/components/wp-fast-table/builders/internal-sort-columns';\nimport { EditForm } from 'core-app/shared/components/fields/edit/edit-form/edit-form';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageTable } from '../wp-fast-table/wp-fast-table';\nimport { rowId } from '../wp-fast-table/helpers/wp-table-row-helpers';\nimport {\n commonRowClassName,\n SingleRowBuilder,\n tableRowClassName,\n} from '../wp-fast-table/builders/rows/single-row-builder';\n\nexport const inlineCreateRowClassName = 'wp-inline-create-row';\nexport const inlineCreateCancelClassName = 'wp-table--cancel-create-link';\n\nexport class InlineCreateRowBuilder extends SingleRowBuilder {\n // Injections\n @InjectField() public states:States;\n\n @InjectField() public wpTableSelection:WorkPackageViewSelectionService;\n\n @InjectField() public wpTableColumns:WorkPackageViewColumnsService;\n\n @InjectField() public I18n:I18nService;\n\n protected text:{ cancelButton:string };\n\n constructor(public readonly injector:Injector,\n workPackageTable:WorkPackageTable) {\n super(injector, workPackageTable);\n\n this.text = {\n cancelButton: this.I18n.t('js.button_cancel'),\n };\n }\n\n public buildCell(workPackage:WorkPackageResource, column:QueryColumn):HTMLElement|null {\n switch (column.id) {\n case internalContextMenuColumn.id:\n return this.buildCancelButton();\n default:\n return super.buildCell(workPackage, column);\n }\n }\n\n public buildNew(workPackage:WorkPackageResource, form:EditForm):[HTMLElement, boolean] {\n // Get any existing edit state for this work package\n const [row, hidden] = this.buildEmpty(workPackage);\n\n return [row, hidden];\n }\n\n /**\n * Create an empty unattached row element for the given work package\n * @param workPackage\n * @returns {any}\n */\n public createEmptyRow(workPackage:WorkPackageResource) {\n const identifier = this.classIdentifier(workPackage);\n const tr = document.createElement('tr');\n tr.id = rowId(workPackage.id!);\n tr.dataset.workPackageId = workPackage.id!;\n tr.dataset.classIdentifier = identifier;\n tr.classList.add(\n inlineCreateRowClassName, commonRowClassName, tableRowClassName, 'issue',\n identifier,\n `${identifier}-table`,\n );\n\n return tr;\n }\n\n protected buildCancelButton() {\n const td = document.createElement('td');\n td.classList.add(tdClassName, 'wp-table--cancel-create-td');\n\n td.innerHTML = `\n \n \n `;\n\n return td;\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Injector,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport {\n WorkPackageViewFocusService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { filter } from 'rxjs/operators';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n WorkPackageInlineCreateService,\n} from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { combineLatest, Subscription } from 'rxjs';\nimport {\n WorkPackageViewColumnsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { EditForm } from 'core-app/shared/components/fields/edit/edit-form/edit-form';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport {\n inlineCreateCancelClassName,\n InlineCreateRowBuilder,\n inlineCreateRowClassName,\n} from './inline-create-row-builder';\nimport { WorkPackageCreateService } from '../wp-new/wp-create.service';\nimport { WorkPackageTable } from '../wp-fast-table/wp-fast-table';\nimport { onClickOrEnter } from '../wp-fast-table/handlers/click-or-enter-handler';\nimport {\n HalResourceEditingService,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\n\n@Component({\n selector: '[wpInlineCreate]',\n templateUrl: './wp-inline-create.component.html',\n})\nexport class WorkPackageInlineCreateComponent extends UntilDestroyedMixin implements OnInit, AfterViewInit {\n @Input() colspan:number;\n\n @Input() table:WorkPackageTable;\n\n @Input() projectIdentifier:string;\n\n @Output() showing = new EventEmitter();\n\n // inner state\n public canAdd = false;\n\n public canReference = false;\n\n // Inline create / reference row is active\n public mode:'inactive'|'create'|'reference' = 'inactive';\n\n public focus = false;\n\n public text = this.wpInlineCreate.buttonTexts;\n\n private currentWorkPackage:WorkPackageResource|null;\n\n private workPackageEditForm:EditForm|undefined;\n\n private editingSubscription:Subscription|undefined;\n\n private $element:JQuery;\n\n get isActive():boolean {\n return this.mode !== 'inactive';\n }\n\n constructor(public readonly injector:Injector,\n protected readonly elementRef:ElementRef,\n protected readonly schemaCache:SchemaCacheService,\n protected readonly I18n:I18nService,\n protected readonly querySpace:IsolatedQuerySpace,\n protected readonly cdRef:ChangeDetectorRef,\n protected readonly wpCreate:WorkPackageCreateService,\n protected readonly wpInlineCreate:WorkPackageInlineCreateService,\n protected readonly wpTableColumns:WorkPackageViewColumnsService,\n protected readonly wpTableFocus:WorkPackageViewFocusService,\n protected readonly halEditing:HalResourceEditingService,\n protected readonly authorisationService:AuthorisationService) {\n super();\n }\n\n ngOnInit() {\n this.$element = jQuery(this.elementRef.nativeElement);\n }\n\n ngAfterViewInit():void {\n combineLatest([\n this.wpInlineCreate.canAdd,\n this.wpInlineCreate.canReference,\n ])\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(([canAdd, canReference]) => {\n this.canAdd = canAdd;\n this.canReference = this.hasReferenceClass && canReference;\n this.cdRef.detectChanges();\n this.showing.emit(this.canAdd || this.canReference);\n });\n\n\n // Register callback on newly created work packages\n this.registerCreationCallback();\n\n // Watch on this scope when the columns change and refresh this row\n this.refreshOnColumnChanges();\n\n // Cancel edition of current new row\n this.registerCancelHandler();\n }\n\n /**\n * Reset the inline creation row on the cancel button,\n * which is dynamically inserted into the action row by the inline create renderer.\n */\n private registerCancelHandler() {\n this.$element.on('click keydown', `.${inlineCreateCancelClassName}`, (evt:JQuery.TriggeredEvent) => {\n onClickOrEnter(evt, () => {\n this.resetRow();\n });\n\n evt.stopImmediatePropagation();\n return false;\n });\n }\n\n /**\n * Since the table is refreshed imperatively whenever columns are changed,\n * we need to manually ensure the inline create row gets refreshed as well.\n */\n private refreshOnColumnChanges() {\n this.wpTableColumns\n .updates$()\n .pipe(\n filter(() => this.isActive), // Take only when row is inserted\n this.untilDestroyed(),\n )\n .subscribe(() => this.refreshRow());\n }\n\n /**\n * Listen to newly created work packages to detect whether the WP is the one we created,\n * and properly reset inline create in this case\n */\n private registerCreationCallback() {\n this.wpCreate\n .onNewWorkPackage()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp:WorkPackageResource) => {\n if (this.currentWorkPackage && this.currentWorkPackage.__initialized_at === wp.__initialized_at) {\n // Remove row and focus\n this.resetRow();\n\n // Split view on the last inserted id if any\n if (!this.table.configuration.isEmbedded) {\n this.wpTableFocus.updateFocus(wp.id!);\n }\n\n // Notify inline create service\n this.wpInlineCreate.newInlineWorkPackageCreated.next(wp.id!);\n } else {\n // Remove current row\n this.wpCreate.cancelCreation();\n this.removeWorkPackageRow();\n this.showRow();\n }\n\n this.cdRef.detectChanges();\n });\n }\n\n public handleAddRowClick() {\n this.addWorkPackageRow();\n return false;\n }\n\n public handleReferenceClick() {\n this.mode = 'reference';\n return false;\n }\n\n public get referenceClass() {\n return this.wpInlineCreate.referenceComponentClass;\n }\n\n public get hasReferenceClass() {\n return !!this.referenceClass;\n }\n\n public addWorkPackageRow() {\n this.wpCreate\n .createOrContinueWorkPackage(this.projectIdentifier)\n .then((change:WorkPackageChangeset) => {\n const wp = this.currentWorkPackage = change.projectedResource;\n\n change\n .state\n ?.values$()\n .pipe(\n filter(() => !!this.currentWorkPackage),\n ).subscribe((form) => {\n if (!this.isActive) {\n this.insertRow(wp);\n } else {\n this.schemaCache.update(this.currentWorkPackage!, form.schema);\n this.refreshRow();\n }\n });\n });\n }\n\n private insertRow(wp:WorkPackageResource) {\n // Actually render the row\n const form = this.workPackageEditForm = this.renderInlineCreateRow(wp);\n\n setTimeout(() => {\n // Activate any required fields\n form.activateMissingFields();\n\n // Hide the button row\n this.hideRow();\n });\n }\n\n private refreshRow() {\n const builder = new InlineCreateRowBuilder(this.injector, this.table);\n const rowElement = this.$element.find(`.${inlineCreateRowClassName}`);\n\n if (rowElement.length && this.currentWorkPackage) {\n builder.refreshRow(this.currentWorkPackage, rowElement);\n }\n }\n\n /**\n * Actually render the row manually\n * in the same fashion as all rows in the table are rendered.\n *\n * @param wp Work package to be rendered\n * @returns The work package form of the row\n */\n private renderInlineCreateRow(wp:WorkPackageResource):EditForm {\n const builder = new InlineCreateRowBuilder(this.injector, this.table);\n const form = this.table.editing.startEditing(wp, builder.classIdentifier(wp));\n\n const [row] = builder.buildNew(wp, form);\n this.$element.append(row);\n\n return form;\n }\n\n /**\n * Reset the new work package row and refocus on the button\n */\n @HostListener('keydown.escape')\n public resetRow() {\n this.focus = true;\n this.removeWorkPackageRow();\n // Manually cancelled, show the row again\n setTimeout(() => {\n this.showRow();\n this.cdRef.detectChanges();\n }, 50);\n }\n\n public removeWorkPackageRow() {\n this.wpCreate.cancelCreation();\n this.currentWorkPackage = null;\n this.$element.find('.wp-row-new').remove();\n if (this.editingSubscription) {\n this.editingSubscription.unsubscribe();\n }\n }\n\n public showRow() {\n this.mode = 'inactive';\n this.cdRef.detectChanges();\n }\n\n public hideRow() {\n this.mode = 'create';\n this.cdRef.detectChanges();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Injectable,\n Injector,\n OnDestroy,\n} from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n Observable,\n of,\n Subject,\n} from 'rxjs';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\n\n@Injectable()\nexport class WorkPackageInlineCreateService implements OnDestroy {\n @InjectField() I18n!:I18nService;\n\n @InjectField() protected readonly currentUser:CurrentUserService;\n\n @InjectField() protected readonly currentProject:CurrentProjectService;\n\n constructor(readonly injector:Injector) {\n }\n\n /**\n * A separate reference pane for the inline create component\n */\n public readonly referenceComponentClass:ComponentType|null = null;\n\n /**\n * A related work package for the inline create context\n */\n public referenceTarget:WorkPackageResource|null = null;\n\n /**\n * Reference button text\n */\n public readonly buttonTexts = {\n reference: '',\n create: this.I18n.t('js.label_create_work_package'),\n };\n\n public get canAdd():Observable {\n return this.canCreateWorkPackages();\n }\n\n public get canReference():Observable {\n return of(false);\n }\n\n /**\n * Observable capability check for work_packages/create and /edit.\n * Edit is included as inline create saves quickly, preventing further edits for users\n * that don't also have edit permisison.\n *\n * @protected\n */\n protected canCreateWorkPackages(projectId:string|null = this.currentProject.id):Observable {\n return this\n .currentUser\n .hasCapabilities$(\n ['work_packages/create', 'work_packages/update'],\n projectId || null,\n );\n }\n\n /** Allow callbacks to happen on newly created inline work packages */\n public newInlineWorkPackageCreated = new Subject();\n\n /** Allow callbacks to happen on newly created inline work packages */\n public newInlineWorkPackageReferenced = new Subject();\n\n /**\n * Ensure hierarchical injected versions of this service correctly unregister\n */\n ngOnDestroy():void {\n this.newInlineWorkPackageCreated.complete();\n this.newInlineWorkPackageReferenced.complete();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { StateService, TransitionPromise } from '@uirouter/core';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { Injectable } from '@angular/core';\nimport { WorkPackageViewPagination } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-pagination';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\n\n@Injectable()\nexport class WorkPackagesListChecksumService {\n constructor(protected UrlParamsHelper:UrlParamsHelperService,\n protected $state:StateService) {\n }\n\n public id:string|null;\n\n public checksum:string|null;\n\n public visibleChecksum:string|null;\n\n public updateIfDifferent(query:QueryResource,\n pagination:WorkPackageViewPagination):Promise {\n const newQueryChecksum = this.getNewChecksum(query, pagination);\n let routePromise:Promise = Promise.resolve();\n\n if (this.isUninitialized()) {\n // Do nothing\n } else if (this.isIdDifferent(query.id)) {\n routePromise = this.maintainUrlQueryState(query.id, null);\n\n this.clear();\n } else if (this.isChecksumDifferent(newQueryChecksum)) {\n routePromise = this.maintainUrlQueryState(query.id, newQueryChecksum);\n }\n\n this.set(query.id, newQueryChecksum);\n return routePromise;\n }\n\n public update(query:QueryResource, pagination:WorkPackageViewPagination) {\n const newQueryChecksum = this.getNewChecksum(query, pagination);\n\n this.set(query.id, newQueryChecksum);\n\n this.maintainUrlQueryState(query.id, newQueryChecksum);\n }\n\n public setToQuery(query:QueryResource, pagination:WorkPackageViewPagination) {\n const newQueryChecksum = this.getNewChecksum(query, pagination);\n\n this.set(query.id, newQueryChecksum);\n\n return this.maintainUrlQueryState(query.id, null);\n }\n\n public isQueryOutdated(query:QueryResource,\n pagination:WorkPackageViewPagination) {\n const newQueryChecksum = this.getNewChecksum(query, pagination);\n\n return this.isOutdated(query.id, newQueryChecksum);\n }\n\n public executeIfOutdated(newId:string,\n newChecksum:string|null,\n callback:Function) {\n if (this.isUninitialized() || this.isOutdated(newId, newChecksum)) {\n this.set(newId, newChecksum);\n\n callback();\n }\n }\n\n public set(id:string|null, checksum:string|null) {\n this.id = id;\n this.checksum = checksum;\n }\n\n public clear() {\n this.id = null;\n this.checksum = null;\n this.visibleChecksum = null;\n }\n\n public isUninitialized() {\n return !this.id && !this.checksum;\n }\n\n private isIdDifferent(otherId:string|null) {\n return this.id !== otherId;\n }\n\n private isChecksumDifferent(otherChecksum:string) {\n return this.checksum && otherChecksum !== this.checksum;\n }\n\n private isOutdated(otherId:string|null, otherChecksum:string|null) {\n const hasCurrentQueryID = !!this.id;\n const hasCurrentChecksum = !!this.checksum;\n const idChanged = (this.id !== otherId);\n\n const checksumChanged = (otherChecksum !== this.checksum);\n const visibleChecksumChanged = (this.checksum && !otherChecksum && this.visibleChecksum);\n\n return (\n // Can only be outdated if either ID or props set\n (hasCurrentQueryID || hasCurrentChecksum)\n && (\n // Query ID changed\n idChanged\n // Query ID same + query props changed\n || (!idChanged && checksumChanged && (otherChecksum || this.visibleChecksum))\n // No query ID set\n || (!hasCurrentQueryID && visibleChecksumChanged)\n )\n );\n }\n\n private getNewChecksum(query:QueryResource, pagination:WorkPackageViewPagination) {\n return this.UrlParamsHelper.encodeQueryJsonParams(\n query,\n {\n pp: pagination.perPage,\n pa: pagination.page,\n },\n );\n }\n\n private maintainUrlQueryState(id:string|null, checksum:string|null):TransitionPromise {\n this.visibleChecksum = checksum;\n\n return this.$state.go(\n '.',\n { query_props: checksum, query_id: id },\n { custom: { notify: false } },\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { Injectable } from '@angular/core';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { QueryFilterInstanceSchemaResource } from 'core-app/features/hal/resources/query-filter-instance-schema-resource';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { QuerySortByResource } from 'core-app/features/hal/resources/query-sort-by-resource';\nimport { QueryGroupByResource } from 'core-app/features/hal/resources/query-group-by-resource';\nimport { QueryColumn } from '../wp-query/query-column';\n\n@Injectable()\nexport class WorkPackagesListInvalidQueryService {\n constructor(protected halResourceService:HalResourceService) {\n }\n\n public restoreQuery(query:QueryResource, form:QueryFormResource) {\n this.restoreFilters(query, form.payload, form.schema);\n this.restoreColumns(query, form.payload, form.schema);\n this.restoreSortBy(query, form.payload, form.schema);\n this.restoreGroupBy(query, form.payload, form.schema);\n this.restoreOtherProperties(query, form.payload);\n }\n\n private restoreFilters(query:QueryResource, payload:QueryResource, querySchema:SchemaResource) {\n let filters = _.map((payload.filters), (filter) => {\n const filterInstanceSchema = _.find(querySchema.filtersSchemas.elements, (schema:QueryFilterInstanceSchemaResource) => (schema.filter.allowedValues as QueryFilterResource[])[0].href === filter.filter.href);\n\n if (!filterInstanceSchema) {\n return null;\n }\n\n const recreatedFilter = filterInstanceSchema.getFilter();\n\n const operator = _.find(filterInstanceSchema.operator.allowedValues, (operator) => operator.href === filter.operator.href);\n\n if (operator) {\n recreatedFilter.operator = operator;\n }\n\n recreatedFilter.values.length = 0;\n _.each(filter.values, (value) => recreatedFilter.values.push(value));\n\n return recreatedFilter;\n });\n\n filters = _.compact(filters);\n\n // clear filters while keeping reference\n query.filters.length = 0;\n _.each(filters, (filter) => query.filters.push(filter));\n }\n\n private restoreColumns(query:QueryResource, stubQuery:QueryResource, schema:SchemaResource) {\n let columns = _.map(stubQuery.columns, (column) => _.find((schema.columns.allowedValues as QueryColumn[]), (candidate) => candidate.href === column.href));\n\n columns = _.compact(columns);\n\n query.columns.length = 0;\n _.each(columns, (column) => query.columns.push(column!));\n }\n\n private restoreSortBy(query:QueryResource, stubQuery:QueryResource, schema:SchemaResource) {\n let sortBys = _.map((stubQuery.sortBy), (sortBy) => _.find((schema.sortBy.allowedValues as QuerySortByResource[]), (candidate) => candidate.href === sortBy.href)!);\n\n sortBys = _.compact(sortBys);\n\n query.sortBy.length = 0;\n _.each(sortBys, (sortBy) => query.sortBy.push(sortBy));\n }\n\n private restoreGroupBy(query:QueryResource, stubQuery:QueryResource, schema:SchemaResource) {\n const groupBy = _.find((schema.groupBy.allowedValues as QueryGroupByResource[]), (candidate) => stubQuery.groupBy && stubQuery.groupBy.href === candidate.href) as any;\n\n query.groupBy = groupBy;\n }\n\n private restoreOtherProperties(query:QueryResource, stubQuery:QueryResource) {\n _.without(Object.keys(stubQuery.$source), '_links', 'filters').forEach((property:any) => {\n query[property] = stubQuery[property];\n });\n\n _.without(Object.keys(stubQuery.$source._links), 'columns', 'groupBy', 'sortBy').forEach((property:any) => {\n query[property] = stubQuery[property];\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport { StateService } from '@uirouter/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable, Injector } from '@angular/core';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport isPersistedResource from 'core-app/features/hal/helpers/is-persisted-resource';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { firstValueFrom, from, Observable, of } from 'rxjs';\nimport { input } from '@openproject/reactivestates';\nimport { catchError, mapTo, mergeMap, share, switchMap, take } from 'rxjs/operators';\nimport {\n WorkPackageViewPaginationService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.service';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3QueriesPaths } from 'core-app/core/apiv3/endpoints/queries/apiv3-queries-paths';\nimport { ApiV3QueryPaths } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-paths';\nimport { PaginationService } from 'core-app/shared/components/table-pagination/pagination-service';\nimport { ErrorResource } from 'core-app/features/hal/resources/error-resource';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { WorkPackageStatesInitializationService } from './wp-states-initialization.service';\nimport { WorkPackagesListInvalidQueryService } from './wp-list-invalid-query.service';\nimport { WorkPackagesQueryViewService } from 'core-app/features/work-packages/components/wp-list/wp-query-view.service';\nimport { SubmenuService } from 'core-app/core/main-menu/submenu.service';\n\nexport interface QueryDefinition {\n queryParams:{ query_id?:string|null, query_props?:string|null };\n projectIdentifier?:string;\n}\n\n@Injectable()\nexport class WorkPackagesListService {\n @InjectField() protected readonly currentUser:CurrentUserService;\n\n // We remember the query requests coming in so we can ensure only the latest request is being tended to\n private queryRequests = input();\n\n // This mapped observable requests the latest query automatically.\n private queryLoading = this.queryRequests\n .values$()\n .pipe(\n // Stream the query request, switchMap will call previous requests to be cancelled\n switchMap((q:QueryDefinition) => this.streamQueryRequest(q.queryParams, q.projectIdentifier)),\n // Map the observable from the stream to a new one that completes when states are loaded\n mergeMap((query:QueryResource) => {\n // load the form if needed\n void this.conditionallyLoadForm(query);\n\n // Project the loaded query into the table states and confirm the query is fully loaded\n this.wpStatesInitialization.initialize(query, query.results);\n return of(query);\n }),\n // Share any consecutive requests to the same resource, this is due to switchMap\n // diverting observables to the LATEST emitted.\n share(),\n );\n\n constructor(\n readonly injector:Injector,\n protected toastService:ToastService,\n readonly I18n:I18nService,\n protected UrlParamsHelper:UrlParamsHelperService,\n protected authorisationService:AuthorisationService,\n protected $state:StateService,\n protected apiV3Service:ApiV3Service,\n protected states:States,\n protected querySpace:IsolatedQuerySpace,\n protected pagination:PaginationService,\n protected configuration:ConfigurationService,\n protected wpTablePagination:WorkPackageViewPaginationService,\n protected wpStatesInitialization:WorkPackageStatesInitializationService,\n protected wpListInvalidQueryService:WorkPackagesListInvalidQueryService,\n protected wpQueryView:WorkPackagesQueryViewService,\n protected submenuService:SubmenuService,\n ) { }\n\n /**\n * Stream a query request as a HTTP observable. Each request to this method will\n * result in a new HTTP request.\n *\n * @param queryParams\n * @param projectIdentifier\n */\n private streamQueryRequest(queryParams:{ query_id?:string|null, query_props?:string|null }, projectIdentifier?:string):Observable {\n const decodedProps = this.getCurrentQueryProps(queryParams);\n const queryData = this.UrlParamsHelper.buildV3GetQueryFromJsonParams(decodedProps);\n const stream = this\n .apiV3Service\n .queries\n .find(queryData, queryParams.query_id, projectIdentifier);\n\n return stream.pipe(\n catchError((error) => {\n // Load a default query\n const queryProps = this.UrlParamsHelper.buildV3GetQueryFromJsonParams(decodedProps);\n return from(this.handleQueryLoadingError(error, queryProps, queryParams.query_id, projectIdentifier));\n }),\n );\n }\n\n /**\n * Load a query.\n * The query is either a persisted query, identified by the query_id parameter, or the default query. Both will be modified by the parameters in the query_props parameter.\n */\n public fromQueryParams(queryParams:{ query_id?:string|null, query_props?:string }, projectIdentifier?:string):Observable {\n this.queryRequests.clear();\n this.queryRequests.putValue({ queryParams, projectIdentifier });\n\n return this\n .queryLoading\n .pipe(\n take(1),\n );\n }\n\n /**\n * Get the current decoded query props, if any\n */\n public getCurrentQueryProps(params:{ query_props?:string|null }):string|null {\n if (params.query_props) {\n return decodeURIComponent(params.query_props);\n }\n\n return null;\n }\n\n /**\n * Load the default query.\n */\n public loadDefaultQuery(projectIdentifier?:string):Promise {\n return firstValueFrom(this.fromQueryParams({}, projectIdentifier));\n }\n\n /**\n * Reloads the current query and set the pagination to the first page.\n */\n public reloadQuery(query:QueryResource, projectIdentifier?:string):Observable {\n const queryParams = this.extractParamsFromQuery(query, { pa: 1 });\n\n this.queryRequests.clear();\n this.queryRequests.putValue({\n queryParams: { query_id: query.id || undefined, query_props: queryParams },\n projectIdentifier,\n });\n\n return this\n .queryLoading\n .pipe(\n take(1),\n );\n }\n\n /**\n * Extract a set of query params from the current query resource\n * @param query The query to derive props from\n * @param additional Additional props to append\n */\n public extractParamsFromQuery(\n query:QueryResource,\n additional:Record = {},\n ):string {\n return this.UrlParamsHelper.encodeQueryJsonParams(\n query,\n {\n pa: this.wpTablePagination.current.page,\n pp: this.wpTablePagination.current.perPage,\n ...additional,\n },\n );\n }\n\n /**\n * Update the query from an existing (probably unsaved) query.\n *\n * Will choose the correct path:\n * - If the query is unsaved, use `/api/v3(/projects/:identifier)/queries/default`\n * - If the query is saved, use `/api/v3/queries/:id`\n *\n */\n public loadQueryFromExisting(query:QueryResource, additionalParams:Object, projectIdentifier?:string):Observable {\n const params = this.UrlParamsHelper.buildV3GetQueryFromQueryResource(query, additionalParams);\n\n let path:ApiV3QueriesPaths|ApiV3QueryPaths;\n\n if (query.id) {\n path = this.apiV3Service.queries.id(query.id);\n } else {\n path = this.apiV3Service.withOptionalProject(projectIdentifier).queries;\n }\n\n return path.parameterised(params);\n }\n\n /**\n * Load the query from the given state params\n */\n public loadCurrentQueryFromParams(projectIdentifier?:string):Promise {\n return firstValueFrom(this.fromQueryParams(this.$state.params as { query_id?:string|null, query_props?:string }, projectIdentifier));\n }\n\n public loadForm(query:QueryResource):Promise {\n return firstValueFrom(\n this\n .apiV3Service\n .queries\n .form\n .load(query),\n )\n .then(([form, _]) => {\n this.wpStatesInitialization.updateStatesFromForm(query, form);\n\n return form;\n });\n }\n\n /**\n * Persist the current query in the backend.\n * After the update, the new query is reloaded (e.g. for the work packages)\n */\n public create(query:QueryResource, name:string):Promise {\n const form = this.querySpace.queryForm.value!;\n\n query.name = name;\n\n const promise = firstValueFrom(this.createQueryAndView(query, form))\n .then((createdQuery) => {\n this.toastService.addSuccess(this.I18n.t('js.notice_successful_create'));\n\n // Reload the query, and then reload the menu\n this.reloadQuery(createdQuery).subscribe(() => {\n this.states.changes.queries.next(createdQuery.id);\n this.reloadSidemenu(createdQuery.id);\n });\n\n return createdQuery;\n });\n\n return promise;\n }\n\n /**\n * Destroy the current query.\n */\n public delete() {\n const query = this.currentQuery;\n\n const promise = this\n .apiV3Service\n .queries\n .id(query)\n .delete()\n .toPromise();\n\n void promise\n .then(() => {\n this.toastService.addSuccess(this.I18n.t('js.notice_successful_delete'));\n\n void this.navigateToDefaultQuery(query);\n });\n\n return promise;\n }\n\n public async save(givenQuery?:QueryResource):Promise {\n const query = givenQuery || this.currentQuery;\n\n const form = await this.querySpace.queryForm.valuesPromise();\n\n const promise = this\n .apiV3Service\n .queries\n .id(query)\n .patch(query, form)\n .toPromise();\n\n void promise\n .then(() => {\n this.toastService.addSuccess(this.I18n.t('js.notice_successful_update'));\n const queryAccessibleByUser = query.public || query.user.id === this.currentUser.userId;\n if (queryAccessibleByUser) {\n void this.$state.go('.', { query_id: query.id, query_props: null }, { reload: true });\n this.states.changes.queries.next(query.id);\n this.reloadSidemenu(query.id);\n } else {\n this.navigateToDefaultQuery(query);\n }\n })\n .catch((error:ErrorResource) => {\n this.toastService.addError(error.message);\n });\n\n return promise;\n }\n\n public async createOrSave(query:QueryResource):Promise {\n if (!isPersistedResource(query)) {\n return this.create(query, this.I18n.t('js.work_packages.default_queries.manually_sorted'));\n }\n return this.save(query);\n }\n\n public toggleStarred(query:QueryResource):Promise {\n const promise = this\n .apiV3Service\n .queries\n .toggleStarred(query);\n\n void promise.then((query:QueryResource) => {\n this.querySpace.query.putValue(query);\n\n this.toastService.addSuccess(this.I18n.t('js.notice_successful_update'));\n\n this.states.changes.queries.next(query.id!);\n this.reloadSidemenu(query.id);\n });\n\n return promise;\n }\n\n public getPaginationInfo() {\n return this.wpTablePagination.paginationObject;\n }\n\n public conditionallyLoadForm(query = this.currentQuery):Promise {\n const currentForm = this.querySpace.queryForm.value;\n\n if (!query) {\n return firstValueFrom(this.queryLoading)\n .then((loaded) => this.conditionallyLoadForm(loaded));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!currentForm || !query.$links.update || query.$links.update.href !== currentForm.href) {\n return this.loadForm(query);\n }\n\n return Promise.resolve(currentForm);\n }\n\n public get currentQuery() {\n return this.querySpace.query.value!;\n }\n\n private handleQueryLoadingError(\n error:ErrorResource,\n queryProps:{ [key:string]:unknown },\n queryId?:string|null,\n projectIdentifier?:string|null,\n ):Promise {\n this.toastService.addError(this.I18n.t('js.work_packages.faulty_query.description'), error.message);\n\n return new Promise((resolve, reject) => {\n firstValueFrom(\n this\n .apiV3Service\n .queries\n .form\n .loadWithParams(queryProps, queryId, projectIdentifier),\n )\n .then(([form, _]) => {\n this\n .apiV3Service\n .queries\n .find({ pageSize: 0 }, undefined, projectIdentifier)\n .toPromise()\n .then((query:QueryResource) => {\n this.wpListInvalidQueryService.restoreQuery(query, form);\n\n query.results.pageSize = queryProps.pageSize as number;\n query.results.total = 0;\n\n if (queryId) {\n query.id = queryId;\n }\n\n this.wpStatesInitialization.initialize(query, query.results);\n this.wpStatesInitialization.updateStatesFromForm(query, form);\n\n resolve(query);\n })\n .catch(reject);\n })\n .catch(reject);\n });\n }\n\n private createQueryAndView(query:QueryResource, form:QueryFormResource|undefined) {\n return this\n .apiV3Service\n .queries\n .post(query, form)\n .pipe(\n switchMap((createdQuery) => this\n .wpQueryView\n .create(createdQuery)\n .pipe(\n mapTo(createdQuery),\n )),\n );\n }\n\n private navigateToDefaultQuery(query:QueryResource):void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const sideMenuOptions = this.$state.$current.data?.sideMenuOptions as { hardReloadOnBaseRoute?:boolean, defaultQuery?:string };\n const hardReloadOnBaseRoute = sideMenuOptions?.hardReloadOnBaseRoute;\n\n if (hardReloadOnBaseRoute) {\n const url = new URL(window.location.href);\n const defaultQuery = sideMenuOptions.defaultQuery;\n\n // If there is a default query passed, we replace the hard coded ids with the default query\n // e.g. calendars/:id, team_planner/:id, ...\n // Otherwise, we will just delete the search params\n if (defaultQuery) {\n url.pathname = url.pathname.replace(/\\d+$/, defaultQuery);\n }\n\n url.search = '';\n window.location.href = url.href;\n } else {\n let projectId;\n if (query.project.href) {\n projectId = query.project.href.split('/').pop();\n }\n\n void this.loadDefaultQuery(projectId);\n\n this.states.changes.queries.next(query.id);\n this.reloadSidemenu(null);\n }\n }\n\n private reloadSidemenu(selectedQueryId:string|null):void {\n this.submenuService.reloadSubmenu(selectedQueryId);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { Observable } from 'rxjs';\nimport { IView } from 'core-app/core/state/views/view.model';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\n\n@Injectable()\nexport class WorkPackagesQueryViewService {\n constructor(\n protected $state:StateService,\n protected apiV3Service:ApiV3Service,\n ) { }\n\n create(query:QueryResource):Observable {\n if (!query.href) {\n throw new Error('Expected only queries that are created since an href is required');\n }\n\n return this\n .apiV3Service\n .views\n .post(\n {\n _links: {\n query: {\n href: query.href,\n },\n },\n },\n this.viewType,\n );\n }\n\n private get viewType() {\n if (this.$state.includes('work-packages')) {\n return 'work_packages_table';\n }\n if (this.$state.includes('team_planner')) {\n return 'team_planner';\n }\n if (this.$state.includes('bim')) {\n return 'bim';\n }\n if (this.$state.includes('calendar')) {\n return 'work_packages_calendar';\n }\n if (this.$state.includes('gantt')) {\n return 'gantt';\n }\n\n throw new Error('Not on a path defined for query views');\n }\n}\n","import { States } from 'core-app/core/states/states.service';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable } from '@angular/core';\nimport { WorkPackageViewHighlightingService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service';\nimport { take } from 'rxjs/operators';\nimport { WorkPackageViewOrderService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service';\nimport { WorkPackageViewDisplayRepresentationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service';\nimport { WorkPackageViewIncludeSubprojectsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-include-subprojects.service';\nimport { WorkPackageViewSumService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { WorkPackageViewAdditionalElementsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-additional-elements.service';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { WorkPackageViewPaginationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageViewGroupByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { WorkPackageViewRelationColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { WorkPackageViewCollapsedGroupsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-collapsed-groups.service';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { QuerySchemaResource } from 'core-app/features/hal/resources/query-schema-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { WorkPackagesListChecksumService } from './wp-list-checksum.service';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\n\n@Injectable()\nexport class WorkPackageStatesInitializationService {\n constructor(\n protected states:States,\n protected querySpace:IsolatedQuerySpace,\n protected wpTableColumns:WorkPackageViewColumnsService,\n protected wpTableGroupBy:WorkPackageViewGroupByService,\n protected wpTableGroupFold:WorkPackageViewCollapsedGroupsService,\n protected wpTableSortBy:WorkPackageViewSortByService,\n protected wpTableFilters:WorkPackageViewFiltersService,\n protected wpTableSum:WorkPackageViewSumService,\n protected wpTableTimeline:WorkPackageViewTimelineService,\n protected wpTableHierarchies:WorkPackageViewHierarchiesService,\n protected wpTableHighlighting:WorkPackageViewHighlightingService,\n protected wpTableRelationColumns:WorkPackageViewRelationColumnsService,\n protected wpTablePagination:WorkPackageViewPaginationService,\n protected wpTableOrder:WorkPackageViewOrderService,\n protected wpTableAdditionalElements:WorkPackageViewAdditionalElementsService,\n protected apiV3Service:ApiV3Service,\n protected wpListChecksumService:WorkPackagesListChecksumService,\n protected authorisationService:AuthorisationService,\n protected wpDisplayRepresentation:WorkPackageViewDisplayRepresentationService,\n protected wpIncludeSubprojects:WorkPackageViewIncludeSubprojectsService,\n protected wpTimestamps:WorkPackageViewBaselineService,\n ) { }\n\n /**\n * Initialize the query and table states from the given query and results.\n * They may or may not come from the same query source.\n *\n * @param query\n * @param results\n */\n public initialize(query:QueryResource, results:WorkPackageCollectionResource) {\n this.clearStates();\n\n // Update the (global) wp query states\n this.querySpace.query.putValue(query);\n this.initializeFromQuery(query, results);\n\n // If the form is loaded, update it with the query\n const form = this.querySpace.queryForm.value;\n if (form) {\n this.updateStatesFromForm(query, form);\n }\n\n // Update the (local) table states\n this.updateQuerySpace(query, results);\n\n // Ensure checksum for state is correct\n this.updateChecksum(query, results);\n }\n\n /**\n * Insert new information from the query from to the states.\n *\n * @param query\n * @param form\n */\n public updateStatesFromForm(query:QueryResource, form:QueryFormResource) {\n const schema:QuerySchemaResource = form.schema as any;\n\n _.each(schema.filtersSchemas.elements, (schema) => {\n this.states.schemas.get(schema.href as string).putValue(schema as any);\n });\n\n this.wpTableFilters.initializeFilters(query, schema);\n this.querySpace.queryForm.putValue(form);\n\n this.querySpace.available.columns.putValue(schema.columns.allowedValues);\n this.querySpace.available.sortBy.putValue(schema.sortBy.allowedValues);\n this.querySpace.available.groupBy.putValue(schema.groupBy.allowedValues);\n this.querySpace.available.displayRepresentation.putValue(schema.displayRepresentation.allowedValues);\n }\n\n public updateQuerySpace(query:QueryResource, results:WorkPackageCollectionResource) {\n // Clear table required data states\n this.querySpace.additionalRequiredWorkPackages.clear('Clearing additional WPs before updating rows');\n this.querySpace.tableRendered.clear('Clearing rendered data before upgrading query space');\n\n if (results.schemas) {\n _.each(results.schemas.elements, (schema:SchemaResource) => {\n this.states.schemas.get(schema.href as string).putValue(schema);\n });\n }\n\n this.querySpace.query.putValue(query);\n\n this.authorisationService.initModelAuth('work_packages', results.$links);\n\n results.elements.forEach((wp) => this.apiV3Service.work_packages.cache.updateWorkPackage(wp, true));\n\n this.querySpace.results.putValue(results);\n\n this.querySpace.groups.putValue(results.groups);\n\n this.wpTablePagination.initialize(query, results);\n\n this.wpTableRelationColumns.initialize(query, results);\n\n this.wpTableAdditionalElements.initialize(query, results);\n\n this.wpTableOrder.initialize(query, results);\n\n this.wpDisplayRepresentation.initialize(query, results);\n\n this.wpIncludeSubprojects.initialize(query, results);\n\n this.wpTimestamps.initialize(query, results);\n\n this.querySpace.additionalRequiredWorkPackages\n .values$()\n .pipe(take(1))\n .subscribe(() => this.querySpace.initialized.putValue(null));\n }\n\n public updateChecksum(query:QueryResource, results:WorkPackageCollectionResource) {\n this.wpListChecksumService.updateIfDifferent(this.querySpace.query.value!, this.wpTablePagination.current);\n this.authorisationService.initModelAuth('work_packages', results.$links);\n }\n\n public initializeFromQuery(query:QueryResource, results:WorkPackageCollectionResource) {\n this.querySpace.query.putValue(query);\n\n this.wpTableSum.initialize(query);\n this.wpTableColumns.initialize(query, results);\n this.wpTableSortBy.initialize(query, results);\n this.wpTableGroupBy.initialize(query, results);\n this.wpTableGroupFold.initialize(query, results);\n this.wpTableTimeline.initialize(query, results);\n this.wpTableHierarchies.initialize(query, results);\n this.wpTableHighlighting.initialize(query, results);\n this.wpDisplayRepresentation.initialize(query, results);\n this.wpIncludeSubprojects.initialize(query, results);\n\n this.authorisationService.initModelAuth('query', query.$links);\n this.authorisationService.initModelAuth('work_packages', results.$links);\n }\n\n public applyToQuery(query:QueryResource) {\n this.wpTableFilters.applyToQuery(query);\n this.wpTableSum.applyToQuery(query);\n this.wpTableColumns.applyToQuery(query);\n this.wpTableSortBy.applyToQuery(query);\n this.wpTableGroupBy.applyToQuery(query);\n this.wpTableGroupFold.applyToQuery(query);\n this.wpTableTimeline.applyToQuery(query);\n this.wpTableHighlighting.applyToQuery(query);\n this.wpTableHierarchies.applyToQuery(query);\n this.wpTableOrder.applyToQuery(query);\n this.wpDisplayRepresentation.applyToQuery(query);\n this.wpIncludeSubprojects.applyToQuery(query);\n }\n\n public clearStates() {\n const reason = 'Clearing states before re-initialization.';\n\n // Clear immediate input states\n this.querySpace.initialized.clear(reason);\n this.querySpace.query.clear(reason);\n this.querySpace.results.clear(reason);\n this.querySpace.groups.clear(reason);\n this.querySpace.additionalRequiredWorkPackages.clear(reason);\n\n this.wpTableFilters.clear(reason);\n this.wpTableColumns.clear(reason);\n this.wpTableSortBy.clear(reason);\n this.wpTableGroupBy.clear(reason);\n this.wpTableGroupFold.clear(reason);\n this.wpDisplayRepresentation.clear(reason);\n this.wpIncludeSubprojects.clear(reason);\n this.wpTableSum.clear(reason);\n\n // Clear rendered state\n this.querySpace.tableRendered.clear(reason);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectorRef,\n Directive,\n Injector,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {\n StateService,\n Transition,\n} from '@uirouter/core';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { RootResource } from 'core-app/features/hal/resources/root-resource';\nimport { takeWhile } from 'rxjs/operators';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { EditFormComponent } from 'core-app/shared/components/fields/edit/edit-form/edit-form.component';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport * as URI from 'urijs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { HalResource, HalSource } from 'core-app/features/hal/resources/hal-resource';\nimport { OpTitleService } from 'core-app/core/html/op-title.service';\nimport { WorkPackageCreateService } from './wp-create.service';\nimport { HalError } from 'core-app/features/hal/services/hal-error';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\n@Directive()\nexport class WorkPackageCreateComponent extends UntilDestroyedMixin implements OnInit {\n public successState:string = splitViewRoute(this.$state);\n\n public cancelState:string = this.$state.current.data.baseRoute;\n\n public newWorkPackage:WorkPackageResource;\n\n public parentWorkPackage:WorkPackageResource;\n\n public change:WorkPackageChangeset;\n\n /** Are we in the copying substates ? */\n public copying = false;\n\n public stateParams = this.$transition.params('to');\n\n public text = {\n button_settings: this.I18n.t('js.button_settings'),\n };\n\n @ViewChild(EditFormComponent, { static: false }) protected editForm:EditFormComponent;\n\n /** Explicitly remember destroy state in this abstract base */\n protected destroyed = false;\n\n constructor(\n public readonly injector:Injector,\n protected readonly $transition:Transition,\n protected readonly $state:StateService,\n protected readonly I18n:I18nService,\n protected readonly titleService:OpTitleService,\n protected readonly notificationService:WorkPackageNotificationService,\n protected readonly states:States,\n protected readonly wpCreate:WorkPackageCreateService,\n protected readonly wpViewFocus:WorkPackageViewFocusService,\n protected readonly wpTableFilters:WorkPackageViewFiltersService,\n protected readonly pathHelper:PathHelperService,\n protected readonly apiV3Service:ApiV3Service,\n protected readonly cdRef:ChangeDetectorRef) {\n super();\n }\n\n public ngOnInit() {\n this.closeEditFormWhenNewWorkPackageSaved();\n\n this.showForm();\n }\n\n public ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n public switchToFullscreen() {\n const type = idFromLink(this.change.value('type')?.href);\n void this.$state.go('work-packages.new', { ...this.$state.params, type });\n }\n\n public onSaved(params:{ savedResource:WorkPackageResource, isInitial:boolean }) {\n const { savedResource, isInitial } = params;\n\n this.editForm?.cancel(false);\n\n if (this.successState) {\n this.$state.go(this.successState, { workPackageId: savedResource.id })\n .then(() => {\n this.wpViewFocus.updateFocus(savedResource.id!);\n this.notificationService.showSave(savedResource, isInitial);\n });\n }\n }\n\n protected showForm() {\n this\n .createdWorkPackage()\n .then((changeset:WorkPackageChangeset) => {\n this.change = changeset;\n this.newWorkPackage = changeset.pristineResource;\n this.cdRef.detectChanges();\n\n this.setTitle();\n\n if (this.stateParams.parent_id) {\n changeset.setValue(\n 'parent',\n { href: this.apiV3Service.work_packages.id(this.stateParams.parent_id).path },\n );\n }\n\n // Load the parent simply to display the type name :-/\n if (this.stateParams.parent_id) {\n this\n .apiV3Service\n .work_packages\n .id(this.stateParams.parent_id)\n .get()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((parent) => {\n this.parentWorkPackage = parent;\n this.cdRef.detectChanges();\n });\n }\n })\n .catch((error:unknown) => {\n if (error instanceof HalError && error.errorIdentifier === 'urn:openproject-org:api:v3:errors:MissingPermission') {\n this.apiV3Service.root.get().subscribe((root:RootResource) => {\n if (!root.user) {\n // Not logged in\n const url = URI(this.pathHelper.loginPath());\n url.search({ back_url: url });\n window.location.href = url.toString();\n }\n });\n this.notificationService.handleRawError(error);\n }\n });\n }\n\n protected setTitle() {\n this.titleService.setFirstPart(this.I18n.t('js.work_packages.create.title'));\n }\n\n public cancelAndBackToList() {\n this.wpCreate.cancelCreation();\n this.$state.go(this.cancelState, this.$state.params);\n }\n\n protected createdWorkPackage() {\n const defaults:HalSource = (this.stateParams.defaults as HalSource) || {};\n defaults._links = defaults._links || {};\n\n const type = this.stateParams.type ? parseInt(this.stateParams.type) : undefined;\n const parent = this.stateParams.parent_id ? parseInt(this.stateParams.parent_id) : undefined;\n const project = this.stateParams.projectPath;\n\n if (type) {\n defaults._links.type = { href: this.apiV3Service.types.id(type).path };\n }\n if (parent) {\n defaults._links.parent = { href: this.apiV3Service.work_packages.id(parent).path };\n }\n\n return this.wpCreate.createOrContinueWorkPackage(project, type, defaults);\n }\n\n private closeEditFormWhenNewWorkPackageSaved() {\n this.wpCreate\n .onNewWorkPackage()\n .pipe(\n takeWhile(() => !this.componentDestroyed),\n )\n .subscribe((wp:WorkPackageResource) => {\n this.onSaved({ savedResource: wp, isInitial: true });\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Injectable,\n Injector,\n} from '@angular/core';\nimport {\n firstValueFrom,\n Observable,\n Subject,\n} from 'rxjs';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HookService } from 'core-app/features/plugins/hook-service';\nimport {\n WorkPackageFilterValues,\n} from 'core-app/features/work-packages/components/wp-edit-form/work-package-filter-values';\nimport {\n HalResourceEditingService,\n ResourceChangesetCommit,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { filter } from 'rxjs/operators';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { FormResource } from 'core-app/features/hal/resources/form-resource';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport {\n HalResource,\n HalSource,\n HalSourceLink,\n} from 'core-app/features/hal/resources/hal-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset';\nimport { AttachmentsResourceService } from 'core-app/core/state/attachments/attachments.service';\nimport { AttachmentCollectionResource } from 'core-app/features/hal/resources/attachment-collection-resource';\n\nexport const newWorkPackageHref = '/api/v3/work_packages/new';\n\n@Injectable()\nexport class WorkPackageCreateService extends UntilDestroyedMixin {\n protected form:Promise|undefined;\n\n // Allow callbacks to happen on newly created work packages\n protected newWorkPackageCreatedSubject = new Subject();\n\n constructor(\n protected injector:Injector,\n protected hooks:HookService,\n protected apiV3Service:ApiV3Service,\n protected halResourceService:HalResourceService,\n protected querySpace:IsolatedQuerySpace,\n protected authorisationService:AuthorisationService,\n protected halEditing:HalResourceEditingService,\n protected schemaCache:SchemaCacheService,\n protected halEvents:HalEventsService,\n protected attachmentsService:AttachmentsResourceService,\n ) {\n super();\n\n this.halEditing\n .committedChanges\n .pipe(\n this.untilDestroyed(),\n filter((commit) => commit.resource._type === 'WorkPackage' && commit.wasNew),\n )\n .subscribe((commit:ResourceChangesetCommit) => {\n this.newWorkPackageCreated(commit.resource);\n });\n\n this.halEditing\n .changes$(newWorkPackageHref)\n .pipe(\n this.untilDestroyed(),\n filter((changeset) => !changeset),\n )\n .subscribe(() => {\n this.reset();\n });\n }\n\n protected newWorkPackageCreated(wp:WorkPackageResource):void {\n this.reset();\n this.newWorkPackageCreatedSubject.next(wp);\n }\n\n public onNewWorkPackage():Observable {\n return this.newWorkPackageCreatedSubject.asObservable();\n }\n\n public createNewWorkPackage(projectIdentifier:string|undefined|null, payload:HalSource):Promise {\n return this\n .apiV3Service\n .withOptionalProject(projectIdentifier)\n .work_packages\n .form\n .forPayload(payload)\n .toPromise()\n .then((form:FormResource) => this.fromCreateForm(form));\n }\n\n public fromCreateForm(form:FormResource):WorkPackageChangeset {\n const wp = this.initializeNewResource(form);\n\n const change = this.halEditing.edit(wp, form);\n\n // Call work package initialization hook\n this.hooks.call('workPackageNewInitialization', change);\n\n return change;\n }\n\n public copyWorkPackage(copyFrom:WorkPackageChangeset):Promise {\n const request = copyFrom.pristineResource.$source;\n\n // Ideally we would make an empty request before to get the create schema (cannot use the update schema of the source changeset)\n // to get all the writable attributes and only send those.\n // But as this would require an additional request, we don't.\n return this\n .apiV3Service\n .work_packages\n .form\n .post(request)\n .toPromise()\n .then((form:FormResource) => {\n const changeset = this.fromCreateForm(form);\n\n return changeset;\n });\n }\n\n /**\n * Create a copy resource from other and the new work package form\n * @param form Work Package create form\n */\n private copyFrom(form:FormResource) {\n const wp = this.initializeNewResource(form);\n\n return this.halEditing.edit(wp, form);\n }\n\n public getEmptyForm(projectIdentifier:string|null|undefined):Promise {\n if (!this.form) {\n this.form = firstValueFrom(\n this\n .apiV3Service\n .withOptionalProject(projectIdentifier)\n .work_packages\n .form\n .post({}),\n );\n }\n\n return this.form;\n }\n\n public cancelCreation():void {\n this.halEditing.stopEditing({ href: newWorkPackageHref });\n this.reset();\n }\n\n public changesetUpdates$():Observable {\n return this\n .halEditing\n .state(newWorkPackageHref)\n .values$();\n }\n\n public createOrContinueWorkPackage(projectIdentifier:string|null|undefined, type?:number, defaults?:HalSource):Promise {\n let changePromise = this.continueExistingEdit(type);\n\n if (!changePromise) {\n changePromise = this.createNewWithDefaults(projectIdentifier, defaults);\n }\n\n return changePromise.then((change:WorkPackageChangeset) => {\n this.authorisationService.initModelAuth('work_package', change.pristineResource);\n this.halEditing.updateValue(newWorkPackageHref, change);\n this\n .apiV3Service\n .work_packages\n .cache\n .updateWorkPackage(change.pristineResource, true);\n\n return change;\n });\n }\n\n protected reset():void {\n this\n .apiV3Service\n .work_packages\n .cache\n .clearSome('new');\n\n this\n .attachmentsService\n .clear('new');\n\n this.form = undefined;\n }\n\n protected continueExistingEdit(type?:number):Promise|null {\n const change = this.halEditing.state(newWorkPackageHref).value as WorkPackageChangeset;\n if (change !== undefined) {\n const changeType = change.projectedResource.type;\n\n const hasChanges = !change.isEmpty();\n const typeEmpty = !changeType && !type;\n const typeMatches = type && changeType && idFromLink(changeType.href) === type.toString();\n\n if (hasChanges && (typeEmpty || typeMatches)) {\n return Promise.resolve(change);\n }\n }\n\n return null;\n }\n\n /**\n * Initializes a new work package. The work package is not yet persisted.\n * The properties of the work package are initialized from two sources:\n * * The default values provided\n * * The filter values that might exist in the query space\n *\n * The first can be employed to e.g. provide the type or the parent of the work package.\n * The later can be employed to create a work package that adheres to the filter values.\n *\n * @param projectIdentifier The project the work package is to be created in.\n * @param defaults Values the new work package should possess on creation.\n */\n protected createNewWithDefaults(projectIdentifier:string|null|undefined, defaults?:HalSource):Promise {\n return this\n .withFiltersPayload(projectIdentifier, defaults)\n .then((filterDefaults) => {\n const mergedPayload = _.merge({ _links: {} }, filterDefaults, defaults);\n\n return this.createNewWorkPackage(projectIdentifier, mergedPayload).then((change:WorkPackageChangeset) => {\n if (!change) {\n throw new Error('No new work package was created');\n }\n\n // We need to apply the defaults again (after them being applied in the form requests)\n // here as the initial form requests might have led to some default\n // values not being carried over. This can happen when custom fields not available in one type are filter values.\n // The defaults should be applied to the customFields only, hence we ignore the other filters.\n const ignoreFiltersFn = (id:string):boolean => /customField\\d+/.exec(id) === null;\n this.defaultsFromFilters(change, defaults, ignoreFiltersFn);\n\n return change;\n });\n });\n }\n\n /**\n * Fetches all values of filters applicable to work as default values (e.g. assignee = 123).\n * If defaults already contain the type, that filter is ignored.\n *\n * The ignoring functionality could be generalized.\n *\n * @param object\n * @param defaults\n */\n private defaultsFromFilters(\n object:HalSource|WorkPackageChangeset,\n defaults?:HalSource,\n ignoreFiltersFn?:(id:string) => boolean,\n ):void {\n // Not using WorkPackageViewFiltersService here as the embedded table does not load the form\n // which will result in that service having empty current filters.\n const query = this.querySpace.query.value;\n\n if (query) {\n let except = defaults?._links ? Object.keys(defaults._links) : [];\n\n if (ignoreFiltersFn !== undefined) {\n except = except.concat(query.filters.map((f) => f.id).filter(ignoreFiltersFn));\n }\n\n new WorkPackageFilterValues(this.injector, query.filters, except)\n .applyDefaultsFromFilters(object);\n }\n }\n\n /**\n * Returns valid payload based on the filters active in the query space validated by the backend via a form\n * request. In case no filters are active, the (empty) filters payload is just passed through.\n *\n * If there are filters applied, we need the additional form request to turn the defaults of the filters into\n * a valid payload in the sense that all properties are at their correct place and are in the right format. That means\n * HalResources are in the _links section and follow the { href: some_link } format while simple properties stay on the\n * top level.\n */\n private withFiltersPayload(projectIdentifier:string|null|undefined, defaults?:HalSource):Promise {\n const fromFilter = { _links: {} };\n this.defaultsFromFilters(fromFilter, defaults);\n\n const filtersApplied = Object.keys(fromFilter).length > 1 || Object.keys(fromFilter._links).length > 0;\n\n if (filtersApplied) {\n return this\n .apiV3Service\n .withOptionalProject(projectIdentifier)\n .work_packages\n .form\n .forTypePayload(defaults || { _links: {} })\n .toPromise()\n .then((form:FormResource) => {\n this.toApiPayload(fromFilter, form.schema);\n return fromFilter;\n });\n }\n return Promise.resolve(fromFilter);\n }\n\n private toApiPayload(payload:HalSource, schema:SchemaResource) {\n const links:string[] = [];\n\n Object.keys(schema.$source).forEach((attribute) => {\n if (!['Integer',\n 'Float',\n 'Date',\n 'DateTime',\n 'Duration',\n 'Formattable',\n 'Boolean',\n 'String',\n 'Text',\n undefined].includes(schema.$source[attribute].type)) {\n links.push(attribute);\n }\n });\n\n links.forEach((attribute) => {\n const value = payload[attribute];\n if (value === undefined) {\n // nothing\n } else if (value instanceof HalResource) {\n payload._links[attribute] = { href: value.$links.self.href };\n } else if (!value) {\n payload._links[attribute] = { href: null };\n } else {\n payload._links[attribute] = value as unknown as HalSourceLink;\n }\n delete payload[attribute];\n });\n }\n\n /**\n * Assign values from the form for a newly created work package resource.\n * @param form\n */\n private initializeNewResource(form:FormResource) {\n const payload = form.payload.$plain() as object&{ _links:{ schema:{ href:string } } };\n\n // maintain the reference to the schema\n payload._links.schema = { href: 'new' };\n\n const wp = this.halResourceService.createHalResourceOfType('WorkPackage', payload);\n\n wp.$source.id = 'new';\n\n // Ensure type is set to identify the resource\n wp._type = 'WorkPackage';\n\n // Since the ID will change upon saving, keep track of the WP\n // with the actual creation date\n wp.__initialized_at = Date.now();\n\n // Set update link to form\n wp.update = wp.$links.update = form.$links.self;\n // Use POST /work_packages for saving link\n wp.updateImmediately = (data:object) => firstValueFrom(this.apiV3Service.work_packages.post(data));\n wp.$links.updateImmediately = (data:object) => firstValueFrom(this.apiV3Service.work_packages.post(data));\n\n if (form.schema.$links.attachments) {\n wp.$links.attachments = { elements: [] } as unknown as AttachmentCollectionResource;\n }\n\n // We need to provide the schema to the cache so that it is available in the html form to e.g. determine\n // the editability.\n // It would be better if the edit field could simply rely on the changeset if it exists.\n this.schemaCache.update(wp, form.schema);\n\n return wp;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageCreateComponent } from 'core-app/features/work-packages/components/wp-new/wp-create.component';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'wp-new-full-view',\n host: { class: 'work-packages-page--ui-view' },\n templateUrl: './wp-new-full-view.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageNewFullViewComponent extends WorkPackageCreateComponent {\n public successState = this.$state.current.data.successState as string;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageCreateComponent } from 'core-app/features/work-packages/components/wp-new/wp-create.component';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'wp-new-split-view',\n templateUrl: './wp-new-split-view.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageNewSplitViewComponent extends WorkPackageCreateComponent {\n}\n","import { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\nexport const queryColumnTypes = {\n PROPERTY: 'QueryColumn::Property',\n RELATION_OF_TYPE: 'QueryColumn::RelationOfType',\n RELATION_TO_TYPE: 'QueryColumn::RelationToType',\n};\n\nexport function isRelationColumn(column:QueryColumn) {\n const relationTypes = [queryColumnTypes.RELATION_TO_TYPE, queryColumnTypes.RELATION_OF_TYPE];\n return relationTypes.indexOf(column._type) >= 0;\n}\n\n/**\n * A reference to a query column object as returned from the API.\n */\nexport interface QueryColumn extends HalResource {\n id:string;\n name:string;\n custom_field?:any;\n _links?:{\n self:{ href:string, title:string };\n };\n}\n\nexport interface TypeRelationQueryColumn extends QueryColumn {\n type:{ href:string, name:string },\n _links?:{\n self:{ href:string, title:string },\n type:{ href:string, title:string }\n }\n}\n\nexport interface RelationQueryColumn extends QueryColumn {\n relationType:string;\n}\n","import { Injectable } from '@angular/core';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport {\n QueryFilterInstanceSchemaResource,\n\n} from 'core-app/features/hal/resources/query-filter-instance-schema-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\n@Injectable()\nexport class QueryFiltersService {\n constructor(protected schemaCache:SchemaCacheService) {\n }\n\n /**\n * Get the matching schema of the filter resource\n * from the schema\n */\n private getFilterSchema(filter:QueryFilterInstanceResource, form:QueryFormResource):QueryFilterInstanceSchemaResource|undefined {\n const available = form.$embedded.schema.filtersSchemas.elements;\n return _.find(available, (schema) => schema.allowedFilterValue.href === filter.filter.href);\n }\n\n /**\n * Prepares the schemas of each filter to be readily placed to make alterations\n * to the filter based on the filter e.g. when sending an updated filter to the backend.\n * @param query\n * @param form\n */\n public mapSchemasIntoFilters(query:QueryResource, form:QueryFormResource) {\n query.filters.forEach((filter) => {\n const schema = this.getFilterSchema(filter, form)!;\n filter.$links.schema = schema.$links.self;\n this.schemaCache.update(filter, schema);\n });\n }\n\n public setSchemas(schemas:CollectionResource) {\n schemas.elements.forEach((schema) => {\n this.schemaCache.updateValue(schema.$links.self.href!, schema);\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { WorkPackagesListChecksumService } from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\nimport { TransitionService } from '@uirouter/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class QueryParamListenerService {\n readonly wpListChecksumService:WorkPackagesListChecksumService = this.injector.get(WorkPackagesListChecksumService);\n\n readonly wpListService:WorkPackagesListService = this.injector.get(WorkPackagesListService);\n\n readonly $transitions:TransitionService = this.injector.get(TransitionService);\n\n public observe$ = new Subject();\n\n public queryChangeListener:Function;\n\n constructor(readonly injector:Injector) {\n this.listenForQueryParamsChanged();\n }\n\n public listenForQueryParamsChanged():any {\n // Listen for param changes\n return this.queryChangeListener = this.$transitions.onSuccess({}, (transition):any => {\n const options = transition.options();\n const params = transition.params('to');\n\n const newChecksum = this.wpListService.getCurrentQueryProps(params);\n const newId:string = params.query_id ? params.query_id.toString() : null;\n\n // Avoid performing any changes when we're going to reload\n if (options.reload || (options.custom && options.custom.notify === false)) {\n return true;\n }\n\n return this.wpListChecksumService\n .executeIfOutdated(newId,\n newChecksum,\n () => {\n this.observe$.next(newChecksum);\n });\n });\n }\n\n public removeQueryChangeListener() {\n this.queryChangeListener();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { QuerySortByResource } from 'core-app/features/hal/resources/query-sort-by-resource';\nimport { HalLink } from 'core-app/features/hal/hal-link/hal-link';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport isPersistedResource from 'core-app/features/hal/helpers/is-persisted-resource';\nimport { Injectable } from '@angular/core';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { ApiV3Filter, ApiV3FilterBuilder, FilterOperator } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { PaginationService } from 'core-app/shared/components/table-pagination/pagination-service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\n\nexport interface QueryPropsFilter {\n n:string;\n o:string\n v:unknown[];\n}\n\nexport interface QueryProps {\n // Columns\n c:string[];\n // Sums enabled?\n s?:boolean;\n // Sort by criteria\n t?:string;\n // Group by criteria\n g:string|null;\n // Filters\n f:QueryPropsFilter[];\n // Hierarchies\n hi:boolean;\n // Highlighting mode\n hl?:string;\n // Highlighted attributes\n hla?:string[];\n // Display representation\n dr?:string;\n // Include subprojects\n is?:boolean;\n // Pagination\n pa?:string|number;\n pp?:string|number;\n\n // Timeline options\n tv?:boolean;\n tzl?:string;\n tll?:string;\n\n // Timestamps options\n ts?:string;\n}\n\nexport interface QueryRequestParams {\n page?:string|number;\n pageSize:string|number;\n offset:string|number;\n 'columns[]':string[];\n showSums:boolean;\n timelineVisible:boolean;\n timelineLabels:string;\n timelineZoomLevel:string;\n displayRepresentation:string;\n includeSubprojects:boolean;\n highlightingMode:string;\n 'highlightedAttributes[]':string[];\n showHierarchies:boolean;\n groupBy:string|null;\n filters:string;\n sortBy:string;\n query_id:string|null;\n timestamps:string;\n valid_subset?:boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UrlParamsHelperService {\n public constructor(public paginationService:PaginationService) {\n }\n\n // copied more or less from angular buildUrl\n public buildQueryString(params:any) {\n if (!params) {\n return undefined;\n }\n\n const parts:string[] = [];\n _.each(params, (value, key) => {\n if (!value) {\n return;\n }\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n _.each(value, (v) => {\n if (v !== null && typeof v === 'object') {\n v = JSON.stringify(v);\n }\n parts.push(`${encodeURIComponent(key)}=${\n encodeURIComponent(v)}`);\n });\n });\n\n return parts.join('&');\n }\n\n public encodeQueryJsonParams(\n query:QueryResource,\n extender?:Partial|((paramsData:QueryProps) => QueryProps),\n ):string {\n const paramsData:QueryProps = {\n c: query.columns.map((column) => column.id),\n hi: !!query.showHierarchies,\n g: _.get(query.groupBy, 'id', ''),\n dr: query.displayRepresentation,\n is: query.includeSubprojects,\n ...this.encodeSums(query),\n ...this.encodeTimelineVisible(query),\n ...this.encodeHighlightingMode(query),\n ...this.encodeHighlightedAttributes(query),\n ...this.encodeSortBy(query),\n ...this.encodeFilters(query.filters),\n ...this.encodeTimestamps(query),\n };\n\n if (typeof extender === 'function') {\n return JSON.stringify(extender(paramsData));\n }\n\n if (typeof extender === 'object') {\n return JSON.stringify(_.merge(paramsData, extender));\n }\n\n return JSON.stringify(paramsData);\n }\n\n private encodeSums(query:QueryResource):Partial {\n if (query.sums) {\n return { s: query.sums };\n }\n\n return {};\n }\n\n private encodeHighlightingMode(query:QueryResource):Partial {\n if (query.highlightingMode && (isPersistedResource(query) || query.highlightingMode !== 'inline')) {\n return { hl: query.highlightingMode };\n }\n\n return {};\n }\n\n private encodeHighlightedAttributes(query:QueryResource):Partial {\n if (query.highlightingMode === 'inline') {\n if (Array.isArray(query.highlightedAttributes) && query.highlightedAttributes.length > 0) {\n return { hla: query.highlightedAttributes.map((el) => idFromLink(el.href)) };\n }\n }\n\n return {};\n }\n\n private encodeSortBy(query:QueryResource):Partial {\n if (query.sortBy) {\n return {\n t: query\n .sortBy\n .map((sort:QuerySortByResource) => (sort.id as string).replace('-', ':'))\n .join(),\n };\n }\n\n return {};\n }\n\n private encodeTimestamps(query:QueryResource):Partial {\n if (query.timestamps) {\n return { ts: query.timestamps.join(',') };\n }\n\n return {};\n }\n\n public encodeFilters(filters:QueryFilterInstanceResource[]):Pick {\n if (filters && filters.length > 0) {\n const filterProps:QueryPropsFilter[] = filters.map((filter) => ({\n n: filter.id,\n o: filter.operator.id,\n v: filter.values.map((value:HalResource|string) => this.queryFilterValueToParam(value)),\n }));\n\n return { f: filterProps };\n }\n\n return { f: [] };\n }\n\n private encodeTimelineVisible(query:QueryResource):Partial {\n const paramsData:Partial = {};\n\n if (query.timelineVisible) {\n paramsData.tv = query.timelineVisible;\n\n if (!_.isEmpty(query.timelineLabels)) {\n paramsData.tll = JSON.stringify(query.timelineLabels);\n }\n\n paramsData.tzl = query.timelineZoomLevel;\n } else {\n paramsData.tv = false;\n }\n\n return paramsData;\n }\n\n public buildV3GetQueryFromJsonParams(updateJson:string|null) {\n const queryData:Partial = {\n pageSize: this.paginationService.getPerPage(),\n };\n\n if (!updateJson) {\n return queryData;\n }\n\n const properties = JSON.parse(updateJson) as QueryProps;\n\n if (properties.c) {\n queryData['columns[]'] = properties.c.map((column:any) => column);\n }\n if (properties.s) {\n queryData.showSums = properties.s;\n }\n\n queryData.timelineVisible = properties.tv;\n\n if (properties.tv) {\n if (properties.tll) {\n queryData.timelineLabels = properties.tll;\n }\n\n if (properties.tzl) {\n queryData.timelineZoomLevel = properties.tzl;\n }\n }\n\n if (properties.dr) {\n queryData.displayRepresentation = properties.dr;\n }\n\n if (properties.is !== undefined) {\n queryData.includeSubprojects = properties.is;\n }\n\n if (properties.hl) {\n queryData.highlightingMode = properties.hl;\n }\n\n if (properties.hla) {\n queryData['highlightedAttributes[]'] = properties.hla.map((column:any) => column);\n }\n\n if (properties.hi !== undefined) {\n queryData.showHierarchies = properties.hi;\n }\n\n queryData.groupBy = _.get(properties, 'g', '');\n\n // Filters\n if (properties.f) {\n const filters = properties.f.map((urlFilter:any) => {\n const attributes = {\n operator: decodeURIComponent(urlFilter.o),\n };\n if (urlFilter.v) {\n // the array check is only there for backwards compatibility reasons.\n // Nowadays, it will always be an array;\n const vs = Array.isArray(urlFilter.v) ? urlFilter.v : [urlFilter.v];\n _.extend(attributes, { values: vs });\n }\n const filterData:any = {};\n filterData[urlFilter.n] = attributes;\n\n return filterData;\n });\n\n queryData.filters = JSON.stringify(filters);\n }\n\n // Sortation\n if (properties.t) {\n queryData.sortBy = JSON.stringify(properties.t.split(',').map((sort:any) => sort.split(':')));\n }\n\n if (properties.ts) {\n queryData.timestamps = properties.ts;\n }\n\n // Pagination\n if (properties.pa) {\n queryData.offset = properties.pa;\n }\n if (properties.pp) {\n queryData.pageSize = properties.pp;\n }\n\n return queryData;\n }\n\n public buildV3GetQueryFromQueryResource(\n query:QueryResource,\n additionalParams:object = {},\n contextual:object = {},\n ):Partial {\n const queryData:Partial = {};\n\n queryData['columns[]'] = this.buildV3GetColumnsFromQueryResource(query);\n queryData.showSums = query.sums;\n queryData.timelineVisible = !!query.timelineVisible;\n\n if (query.timelineVisible) {\n queryData.timelineZoomLevel = query.timelineZoomLevel;\n queryData.timelineLabels = JSON.stringify(query.timelineLabels);\n }\n\n if (query.highlightingMode) {\n queryData.highlightingMode = query.highlightingMode;\n }\n\n if (query.highlightedAttributes && query.highlightingMode === 'inline') {\n queryData['highlightedAttributes[]'] = query.highlightedAttributes.map((el) => el.href as string);\n }\n\n if (query.displayRepresentation) {\n queryData.displayRepresentation = query.displayRepresentation;\n }\n\n queryData.includeSubprojects = !!query.includeSubprojects;\n queryData.showHierarchies = !!query.showHierarchies;\n queryData.groupBy = _.get(query.groupBy, 'id', '');\n\n // Filters\n queryData.filters = this.buildV3GetFiltersAsJson(query.filters, contextual);\n\n // Sortation\n queryData.sortBy = this.buildV3GetSortByFromQuery(query);\n queryData.timestamps = query.timestamps.join(',');\n\n return _.extend(additionalParams, queryData) as Partial;\n }\n\n public queryFilterValueToParam(value:HalResource|string|boolean):string {\n if (typeof (value) === 'boolean') {\n return value ? 't' : 'f';\n }\n\n if (!value) {\n return '';\n }\n\n const halValue = value as HalResource;\n if (halValue.id) {\n return halValue.id.toString();\n }\n if (halValue.href) {\n return halValue.href.split('/').pop() as string;\n }\n\n return value.toString();\n }\n\n private buildV3GetColumnsFromQueryResource(query:QueryResource):string[] {\n if (query.columns) {\n return query.columns.map((column:any) => column.id || idFromLink(column.href)) as string[];\n }\n if (query._links.columns) {\n return query._links.columns.map((column:HalLink) => idFromLink(column.href as string)) as string[];\n }\n\n return [];\n }\n\n public buildV3GetFilters(filters:QueryFilterInstanceResource[], replacements = {}):ApiV3Filter[] {\n const newFilters = filters.map((filter:QueryFilterInstanceResource) => {\n const id = this.buildV3GetFilterIdFromFilter(filter);\n const operator = this.buildV3GetOperatorIdFromFilter(filter);\n const values = this.buildV3GetValuesFromFilter(filter).map((value) => {\n _.each(replacements, (val:string, key:string) => {\n value = value.replace(`{${key}}`, val);\n });\n\n return value;\n });\n\n const filterHash:ApiV3Filter = {};\n filterHash[id] = { operator: operator as FilterOperator, values };\n\n return filterHash;\n });\n\n return newFilters;\n }\n\n public filterBuilderFrom(filters:QueryFilterInstanceResource[]) {\n const builder:ApiV3FilterBuilder = new ApiV3FilterBuilder();\n\n filters.forEach((filter:QueryFilterInstanceResource) => {\n const id = this.buildV3GetFilterIdFromFilter(filter);\n const operator = this.buildV3GetOperatorIdFromFilter(filter) as FilterOperator;\n const values = this.buildV3GetValuesFromFilter(filter);\n\n builder.add(id, operator, values);\n });\n\n return builder;\n }\n\n public buildV3GetFiltersAsJson(filter:QueryFilterInstanceResource[], contextual = {}) {\n return JSON.stringify(this.buildV3GetFilters(filter, contextual));\n }\n\n public buildV3GetFilterIdFromFilter(filter:QueryFilterInstanceResource) {\n const href = filter.filter ? filter.filter.href : filter._links.filter.href;\n\n return idFromLink(href as string);\n }\n\n public buildV3GetValuesFromFilter(filter:QueryFilterInstanceResource|QueryFilterResource) {\n if (filter.values) {\n return _.map(filter.values, (v:any) => this.queryFilterValueToParam(v));\n }\n return _.map(filter._links.values, (v:any) => idFromLink(v.href as string));\n }\n\n private buildV3GetOperatorIdFromFilter(filter:QueryFilterInstanceResource) {\n if (filter.operator) {\n return filter.operator.id || idFromLink(filter.operator.href);\n }\n const { href } = filter._links.operator;\n\n return idFromLink(href as string);\n }\n\n private buildV3GetSortByFromQuery(query:QueryResource) {\n const sortBys = query.sortBy ? query.sortBy : query._links.sortBy;\n const sortByIds = sortBys.map((sort:QuerySortByResource) => {\n if (sort.id) {\n return sort.id;\n }\n return idFromLink(sort.href);\n });\n\n return JSON.stringify(sortByIds.map((id:string) => id.split('-')));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageRelationsHierarchyService } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { WpRelationInlineCreateServiceInterface } from 'core-app/features/work-packages/components/wp-relations/embedded/wp-relation-inline-create.service.interface';\nimport { WpRelationInlineAddExistingComponent } from 'core-app/features/work-packages/components/wp-relations/embedded/inline/add-existing/wp-relation-inline-add-existing.component';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\n@Injectable()\nexport class WpChildrenInlineCreateService extends WorkPackageInlineCreateService implements WpRelationInlineCreateServiceInterface {\n constructor(readonly injector:Injector,\n protected readonly wpRelationsHierarchyService:WorkPackageRelationsHierarchyService,\n protected readonly schemaCache:SchemaCacheService) {\n super(injector);\n }\n\n /**\n * A separate reference pane for the inline create component\n */\n public readonly referenceComponentClass = WpRelationInlineAddExistingComponent;\n\n /**\n * Define the reference type\n */\n public relationType = 'children';\n\n /**\n * Add a new relation of the above type\n */\n public add(from:WorkPackageResource, toId:string):Promise {\n return this.wpRelationsHierarchyService.addExistingChildWp(from, toId);\n }\n\n /**\n * Remove a given relation\n */\n public remove(from:WorkPackageResource, to:WorkPackageResource):Promise {\n return this.wpRelationsHierarchyService.removeChild(to);\n }\n\n /**\n * A related work package for the inline create context\n */\n public referenceTarget:WorkPackageResource|null = null;\n\n public get canAdd():Observable {\n if (!(this.referenceTarget && this.canAddChild)) {\n return of(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return this.canCreateWorkPackages(idFromLink(this.referenceTarget.project.href));\n }\n\n public get canReference():Observable {\n return of(!!this.referenceTarget && this.canAddChild);\n }\n\n public get canAddChild():boolean {\n return !!(this.schema && !this.schema.isMilestone && this.referenceTarget?.changeParent);\n }\n\n /**\n * Reference button text\n */\n public readonly buttonTexts = {\n reference: this.I18n.t('js.relation_buttons.add_existing_child'),\n create: this.I18n.t('js.relation_buttons.add_new_child'),\n };\n\n private get schema() {\n return this.referenceTarget && this.schemaCache.of(this.referenceTarget);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, Inject } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n WorkPackageInlineCreateService,\n} from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport {\n WorkPackageInlineCreateComponent,\n} from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.component';\nimport {\n WorkPackageRelationsService,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport {\n WpRelationInlineCreateServiceInterface,\n} from 'core-app/features/work-packages/components/wp-relations/embedded/wp-relation-inline-create.service.interface';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { IAPIFilter } from 'core-app/shared/components/autocompleter/op-autocompleter/typings';\nimport { FilterOperator } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\n\n@Component({\n templateUrl: './wp-relation-inline-add-existing.component.html',\n})\nexport class WpRelationInlineAddExistingComponent {\n public selectedWpId:string;\n\n public isDisabled = false;\n\n public queryFilters:IAPIFilter[] = this.buildQueryFilters();\n\n public text = {\n abort: this.I18n.t('js.relation_buttons.abort'),\n };\n\n constructor(\n protected readonly parent:WorkPackageInlineCreateComponent,\n @Inject(WorkPackageInlineCreateService) protected readonly wpInlineCreate:WpRelationInlineCreateServiceInterface,\n protected apiV3Service:ApiV3Service,\n protected wpRelations:WorkPackageRelationsService,\n protected notificationService:WorkPackageNotificationService,\n protected halEvents:HalEventsService,\n protected urlParamsHelper:UrlParamsHelperService,\n protected querySpace:IsolatedQuerySpace,\n protected readonly I18n:I18nService,\n ) {}\n\n public addExisting() {\n if (_.isNil(this.selectedWpId)) {\n return;\n }\n\n const newRelationId = this.selectedWpId;\n this.isDisabled = true;\n\n this.wpInlineCreate.add(this.workPackage, newRelationId)\n .then(() => {\n void this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .refresh();\n\n this.halEvents.push(this.workPackage, {\n eventType: 'association',\n relatedWorkPackage: newRelationId,\n relationType: this.relationType,\n });\n\n this.isDisabled = false;\n this.wpInlineCreate.newInlineWorkPackageReferenced.next(newRelationId);\n this.cancel();\n })\n .catch((err:any) => {\n this.notificationService.handleRawError(err, this.workPackage);\n this.isDisabled = false;\n this.cancel();\n });\n }\n\n public onSelected(workPackage?:WorkPackageResource) {\n if (workPackage) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.selectedWpId = workPackage.id!;\n this.addExisting();\n }\n }\n\n public get relationType() {\n return this.wpInlineCreate.relationType;\n }\n\n public get workPackage() {\n return this.wpInlineCreate.referenceTarget!;\n }\n\n public cancel() {\n this.parent.resetRow();\n }\n\n private buildQueryFilters():IAPIFilter[] {\n const query = this.querySpace.query.value;\n\n if (!query) {\n return [];\n }\n\n const relationTypes = RelationResource.RELATION_TYPES(true);\n const filters = query.filters.filter((filter) => {\n const id = this.urlParamsHelper.buildV3GetFilterIdFromFilter(filter);\n return relationTypes.indexOf(id) === -1;\n });\n\n const iApiFilters:IAPIFilter[] = [];\n\n filters.forEach((filter) => {\n iApiFilters.push({\n name: filter.id,\n operator: filter.operator.id as FilterOperator,\n values: filter.values.map((f) => (typeof f === 'string' ? f : f.id as string)),\n });\n });\n\n return iApiFilters;\n }\n}\n","
    \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector, OnDestroy } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { WpRelationInlineAddExistingComponent } from 'core-app/features/work-packages/components/wp-relations/embedded/inline/add-existing/wp-relation-inline-add-existing.component';\nimport { WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport { WpRelationInlineCreateServiceInterface } from 'core-app/features/work-packages/components/wp-relations/embedded/wp-relation-inline-create.service.interface';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\n\n@Injectable()\nexport class WpRelationInlineCreateService extends WorkPackageInlineCreateService implements WpRelationInlineCreateServiceInterface, OnDestroy {\n @InjectField() wpRelations:WorkPackageRelationsService;\n\n @InjectField() halEvents:HalEventsService;\n\n constructor(public injector:Injector) {\n super(injector);\n }\n\n /**\n * A separate reference pane for the inline create component\n */\n public readonly referenceComponentClass = WpRelationInlineAddExistingComponent;\n\n /**\n * Defines the relation type for the relations inline create\n */\n public relationType = '';\n\n /**\n * Add a new relation of the above type\n */\n public add(from:WorkPackageResource, toId:string):Promise {\n return this.wpRelations.addCommonRelation(toId, this.relationType, from.id!);\n }\n\n /**\n * Remove a given relation\n */\n public remove(from:WorkPackageResource, to:WorkPackageResource):Promise {\n // Find the relation matching relationType and from->to which are unique together\n const relation = this.wpRelations.find(to, from, this.relationType);\n\n if (relation !== undefined) {\n return this.wpRelations.removeRelation(relation).then(() => {\n this.halEvents.push(from, {\n eventType: 'association',\n relatedWorkPackage: to.id,\n relationType: relation.normalizedType(from),\n });\n });\n }\n return Promise.reject();\n }\n\n /**\n * A related work package for the inline create context\n */\n public referenceTarget:WorkPackageResource|null = null;\n\n public get canAdd():Observable {\n if (!this.referenceTarget?.addRelation) {\n return of(false);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return this.canCreateWorkPackages(idFromLink(this.referenceTarget.project.href));\n }\n\n public get canReference():Observable {\n return this.canAdd;\n }\n\n /**\n * Reference button text\n */\n public readonly buttonTexts = {\n reference: this.I18n.t('js.relation_buttons.add_existing'),\n create: this.I18n.t('js.relation_buttons.create_new'),\n };\n}\n","
    \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n
    \n\n\n \n \n \n \n\n \n
    \n \n \n \n \n \n \n\n
    \n \n\n #{{ item.id }}\n\n \n
    \n
    \n
    \n\n \n \n {{ item.name }}\n {{ item.email }}\n \n\n \n {{ item.name }}\n \n {{ item.email }}\n \n
    \n\n\n \n ×\n \n {{ item.type?.name }} #{{ item.id }} {{ item.subject || item.name }}\n \n \n\n \n ×\n {{ item.name }}\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, HostListener, Input } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { from, Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport {\n OpAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ApiV3Filter, ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { TOpAutocompleterResource } from 'core-app/shared/components/autocompleter/op-autocompleter/typings';\n\nexport interface IWorkPackageAutocompleteItem extends WorkPackageResource {\n id:string,\n}\n\n@Component({\n selector: 'wp-relations-autocomplete',\n templateUrl: '../../../../../../shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html',\n styleUrls: ['../../../../../../shared/components/autocompleter/op-autocompleter/op-autocompleter.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageRelationsAutocompleteComponent extends OpAutocompleterComponent {\n @Input() workPackage:WorkPackageResource;\n\n @Input() selectedRelationType:string;\n\n @Input() filterCandidatesFor:string;\n\n @Input() hiddenOverflowContainer = 'body';\n\n @InjectField(WorkPackageNotificationService) notificationService:WorkPackageNotificationService;\n\n @InjectField(SchemaCacheService) schemaCacheService:SchemaCacheService;\n\n resource:TOpAutocompleterResource = 'work_packages';\n\n appendTo = 'body';\n\n placeholder = this.I18n.t('js.relations_autocomplete.placeholder');\n\n getOptionsFn = this.getAutocompleterData.bind(this);\n\n @HostListener('keydown.escape')\n public reset() {\n this.cancel.emit();\n }\n\n changed(workPackage:IWorkPackageAutocompleteItem|null) {\n if (workPackage) {\n void this.schemaCacheService\n .ensureLoaded(workPackage)\n .then(() => {\n this.change.emit(workPackage);\n this.ngSelectInstance.close();\n });\n }\n }\n\n opened() {\n // Force reposition as a workaround for BUG\n // https://github.com/ng-select/ng-select/issues/1259\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.ngSelectInstance.dropdownPanel.adjustPosition();\n jQuery(this.hiddenOverflowContainer).one('scroll', () => {\n this.ngSelectInstance.close();\n });\n }, 25);\n });\n }\n\n getAutocompleterData(query:string|null):Observable {\n // Return when the search string is empty\n if (query === null || query.length === 0) {\n return of([]);\n }\n\n return from(\n this.workPackage.availableRelationCandidates.$link.$fetch({\n query,\n filters: JSON.stringify(this.createFilters()),\n type: this.filterCandidatesFor || this.selectedRelationType,\n sortBy: JSON.stringify([['updatedAt', 'desc']]),\n }) as Promise,\n )\n .pipe(\n map((collection) => collection.elements),\n catchError((error:unknown) => {\n this.notificationService.handleRawError(error);\n return of([]);\n }),\n );\n }\n\n private createFilters():ApiV3Filter[] {\n const finalFilters = new ApiV3FilterBuilder();\n\n if (this.filters) {\n this.filters.forEach((filter) => {\n finalFilters.add(filter.name, filter.operator, filter.values);\n });\n }\n\n return finalFilters.filters;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { StateService } from '@uirouter/core';\nimport { Injectable } from '@angular/core';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\n\n@Injectable()\nexport class WorkPackageRelationsHierarchyService {\n constructor(protected $state:StateService,\n protected states:States,\n protected halEvents:HalEventsService,\n protected notificationService:WorkPackageNotificationService,\n protected pathHelper:PathHelperService,\n protected apiV3Service:ApiV3Service) {\n\n }\n\n public changeParent(workPackage:WorkPackageResource, parentId:string|null) {\n const payload:any = {\n lockVersion: workPackage.lockVersion,\n };\n\n if (parentId) {\n payload._links = {\n parent: {\n href: this.apiV3Service.work_packages.id(parentId).path,\n },\n };\n } else {\n payload._links = {\n parent: {\n href: null,\n },\n };\n }\n\n return workPackage\n .changeParent(payload)\n .then((wp:WorkPackageResource) => {\n this\n .apiV3Service\n .work_packages\n .cache\n .updateWorkPackage(wp);\n this.notificationService.showSave(wp);\n this.halEvents.push(workPackage, {\n eventType: 'association',\n relatedWorkPackage: parentId,\n relationType: 'parent',\n });\n\n return wp;\n })\n .catch((error) => {\n this.notificationService.handleRawError(error, workPackage);\n return Promise.reject(error);\n });\n }\n\n public removeParent(workPackage:WorkPackageResource) {\n return this.changeParent(workPackage, null);\n }\n\n public addExistingChildWp(workPackage:WorkPackageResource, childWpId:string):Promise {\n return this\n .apiV3Service\n .work_packages\n .id(childWpId)\n .get()\n .toPromise()\n .then((wpToBecomeChild:WorkPackageResource|undefined) => this.changeParent(wpToBecomeChild!, workPackage.id)\n .then((wp) => {\n // Reload work package\n this\n .apiV3Service\n .work_packages\n .id(workPackage)\n .refresh();\n\n this.halEvents.push(workPackage, {\n eventType: 'association',\n relatedWorkPackage: wpToBecomeChild!.id!,\n relationType: 'child',\n });\n\n return wp;\n }));\n }\n\n public addNewChildWp(baseRoute:string, workPackage:WorkPackageResource) {\n workPackage.project.$load()\n .then(() => {\n const args = [\n `${baseRoute}.new`,\n {\n parent_id: workPackage.id,\n },\n ];\n\n if (this.$state.includes('work-packages.show')) {\n args[0] = 'work-packages.new';\n }\n\n ( this.$state).go(...args);\n });\n }\n\n public removeChild(childWorkPackage:WorkPackageResource) {\n return childWorkPackage.$load().then(() => {\n const parentWorkPackage = childWorkPackage.parent;\n return childWorkPackage.changeParent({\n _links: {\n parent: {\n href: null,\n },\n },\n lockVersion: childWorkPackage.lockVersion,\n }).then((wp) => {\n if (parentWorkPackage) {\n this\n .apiV3Service\n .work_packages\n .id(parentWorkPackage)\n .refresh()\n .then((wp) => {\n this.halEvents.push(wp, {\n eventType: 'association',\n relatedWorkPackage: null,\n relationType: 'child',\n });\n });\n }\n\n this\n .apiV3Service\n .work_packages\n .cache\n .updateWorkPackage(wp);\n })\n .catch((error) => {\n this.notificationService.handleRawError(error, childWorkPackage);\n return Promise.reject(error);\n });\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n debounceTime,\n filter,\n} from 'rxjs/operators';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { WorkPackageRelationsService } from './wp-relations.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { TurboRequestsService } from 'core-app/core/turbo/turbo-requests.service';\nimport { renderStreamMessage } from '@hotwired/turbo';\nimport {\n HalEventsService,\n RelatedWorkPackageEvent,\n} from 'core-app/features/hal/services/hal-events.service';\n\n@Component({\n selector: 'wp-relations',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './wp-relations.template.html',\n})\nexport class WorkPackageRelationsComponent extends UntilDestroyedMixin implements OnInit, AfterViewInit, OnDestroy {\n @Input() public workPackage:WorkPackageResource;\n\n @ViewChild('frameElement') readonly relationTurboFrame:ElementRef;\n\n turboFrameSrc:string;\n\n private turboFrameListener:EventListener = this.updateFrontendData.bind(this);\n\n constructor(\n private wpRelations:WorkPackageRelationsService,\n private apiV3Service:ApiV3Service,\n private halEvents:HalEventsService,\n private PathHelper:PathHelperService,\n private turboRequests:TurboRequestsService,\n) {\n super();\n }\n\n ngOnInit() {\n this.turboFrameSrc = `${this.PathHelper.staticBase}/work_packages/${this.workPackage.id}/relations_tab`;\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n\n document.removeEventListener('turbo:submit-end', this.turboFrameListener);\n }\n\n ngAfterViewInit() {\n // Listen to any changes to the relations and update the frame\n this\n .halEvents\n .events$\n .pipe(\n filter((e:RelatedWorkPackageEvent) => {\n return e.eventType === 'association'\n && e.id.toString() === this.workPackage.id?.toString()\n && e.relationType !== 'parent';\n }),\n debounceTime(500),\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.updateRelationsTab();\n });\n\n /*\n We globally listen for turbo:submit-end events to know when a form submission ends.\n If the form action URL contains 'relation' or 'child', we know it is a relation or child creation/update.\n In this case, we reload the relations state and push an updated event to the Hal resource\n and the wpRelations service.\n\n The reason for this workaround is that the form submissions occur in top layer\n as they originate from dialog elements or turbo confirm elements. Because of this, we\n cannot listen to the submit end event on the relationTurboFrame element and have\n to rely on the form action URL.\n */\n document.addEventListener('turbo:submit-end', this.turboFrameListener);\n }\n\n public updateCounter() {\n const url = this.PathHelper.workPackageUpdateCounterPath(this.workPackage.id!, 'relations');\n void this.turboRequests.request(url);\n }\n\n private updateFrontendData(event:CustomEvent) {\n if (event) {\n const form = event.target as HTMLFormElement;\n const updateWorkPackage = !!form.dataset?.updateWorkPackage;\n\n if (updateWorkPackage) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.detail && event.detail.success) {\n // Update the work package\n void this.apiV3Service\n .work_packages\n .id(this.workPackage.id!)\n .refresh();\n this.halEvents.push(this.workPackage, { eventType: 'updated' });\n\n // Refetch relations\n void this.wpRelations.require(this.workPackage.id!, true);\n\n this.updateCounter();\n }\n }\n }\n }\n\n private updateRelationsTab() {\n void this.turboRequests.requestStream(this.turboFrameSrc)\n .then((result) => {\n renderStreamMessage(result.html);\n });\n\n this.updateCounter();\n }\n}\n","\n \n \n\n \n\n \n\n \n \n\n","import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { multiInput, MultiInputState, StatesGroup } from '@openproject/reactivestates';\nimport { Injectable } from '@angular/core';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service';\nimport { firstValueFrom, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { TurboRequestsService } from 'core-app/core/turbo/turbo-requests.service';\nimport { ApiV3Filter } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\n\nexport type RelationsStateValue = { [relationId:string]:RelationResource };\n\nexport class RelationStateGroup extends StatesGroup {\n name = 'WP-Relations';\n\n relations:MultiInputState = multiInput();\n\n constructor() {\n super();\n this.initializeMembers();\n }\n}\n\n@Injectable()\nexport class WorkPackageRelationsService extends StateCacheService {\n constructor(\n private PathHelper:PathHelperService,\n private apiV3Service:ApiV3Service,\n private halResource:HalResourceService,\n readonly turboRequests:TurboRequestsService,\n ) {\n super(new RelationStateGroup().relations);\n }\n\n /**\n * Require the value to be loaded either when forced or the value is stale\n * according to the cache interval specified for this service.\n *\n * Returns a single promise to one loaded value\n *\n * @param id The state to require\n * @param force Load the value anyway.\n */\n public require(id:string, force = false):Promise {\n return firstValueFrom(this.requireAndStream(id, force));\n }\n\n /**\n * Require the value to be loaded either when forced or the value is stale\n * according to the cache interval specified for this service.\n *\n * Returns an observable to the values stream of the state.\n *\n * @param id The state to require\n * @param force Load the value anyway.\n */\n public requireAndStream(id:string, force = false):Observable {\n // Refresh when stale or being forced\n if (this.stale(id) || force) {\n this.clearAndLoad(\n id,\n this.load(id),\n );\n }\n\n return this.state(id).values$();\n }\n\n /**\n * Load a set of work package ids into the states, regardless of them being loaded\n * @param workPackageIds\n */\n protected load(id:string):Observable {\n return this\n .apiV3Service\n .relations\n .filtered(\n ApiV3Filter('involved', '=', [id]),\n )\n .getPaginatedResults()\n .pipe(\n map((elements:RelationResource[]) => this.relationsStateValue(id, elements)),\n );\n }\n\n public requireAll(ids:string[]):Promise {\n return new Promise((resolve, reject) => {\n this\n .apiV3Service\n .relations\n .loadInvolved(ids)\n .toPromise()\n .then((elements:RelationResource[]) => {\n this.clearSome(...ids);\n this.accumulateRelationsFromInvolved(ids, elements);\n resolve(undefined);\n })\n .catch(reject);\n });\n }\n\n /**\n * Find a given relation by from, to and relation Type\n */\n public find(from:WorkPackageResource, to:WorkPackageResource, type:string):RelationResource|undefined {\n const relations:RelationsStateValue|undefined = this.state(from.id!).value;\n\n if (!relations) {\n return;\n }\n\n return _.find(relations, (relation:RelationResource) => {\n const denormalized = relation.denormalized(from);\n // Check that\n // 1. the denormalized relation points at \"to\"\n // 2. that the denormalized relation type matches.\n return denormalized.target.id === to.id\n && denormalized.relationType === type;\n });\n }\n\n /**\n * Remove the given relation.\n */\n public removeRelation(relation:RelationResource) {\n return relation.delete().then(() => {\n this.removeFromStates(relation);\n });\n }\n\n /**\n * Update the given relation type, setting new values for from and to\n */\n public updateRelationType(from:WorkPackageResource, to:WorkPackageResource, relation:RelationResource, type:string) {\n const params = {\n _links: {\n from: { href: from.href },\n to: { href: to.href },\n },\n type,\n };\n\n return this.updateRelation(relation, params);\n }\n\n public updateRelation(relation:RelationResource, params:{ [key:string]:any }) {\n return relation.updateImmediately(params)\n .then((savedRelation:RelationResource) => {\n this.insertIntoStates(savedRelation);\n return savedRelation;\n });\n }\n\n public addCommonRelation(fromId:string,\n relationType:string,\n relatedWpId:string) {\n const params = {\n _links: {\n from: { href: this.apiV3Service.work_packages.id(fromId).toString() },\n to: { href: this.apiV3Service.work_packages.id(relatedWpId).toString() },\n },\n type: relationType,\n };\n\n const path = this.apiV3Service.work_packages.id(fromId).relations.toString();\n return this.halResource\n .post(path, params)\n .toPromise()\n .then((relation:RelationResource) => {\n this.insertIntoStates(relation);\n return relation;\n });\n }\n\n public updateCounter(workPackage:WorkPackageResource) {\n if (workPackage.id) {\n const url = this.PathHelper.workPackageUpdateCounterPath(workPackage.id, 'relations');\n void this.turboRequests.request(url);\n }\n }\n\n /**\n * Merges a single relation\n * @param relation\n */\n private insertIntoStates(relation:RelationResource) {\n _.values(relation.ids).forEach((wpId) => {\n this.multiState.get(wpId).doModify((value:RelationsStateValue) => {\n value[relation.id!] = relation;\n return value;\n }, () => {\n const value:RelationsStateValue = {};\n value[relation.id!] = relation;\n return value;\n });\n });\n }\n\n /**\n * Remove the given relation from the from/to states\n * @param relation\n */\n private removeFromStates(relation:RelationResource) {\n _.values(relation.ids).forEach((wpId) => {\n this.multiState.get(wpId).doModify((value:RelationsStateValue) => {\n delete value[relation.id!];\n return value;\n }, () => ({}));\n });\n }\n\n /**\n * Given a set of complete relations for this work package,\n * returns the RelationsStateValue\n *\n * @param wpId The wpId the relations belong to\n * @param relations The relation resource array.\n */\n private relationsStateValue(wpId:string, relations:RelationResource[]):RelationsStateValue {\n return _.keyBy(relations, (r) => r.id!);\n }\n\n /**\n *\n * We don't know how many values we're getting for a single work package\n * when we use the involved filter.\n *\n * We need to group relevant relations for work packages based on their to/from filter.\n */\n private accumulateRelationsFromInvolved(involved:string[], relations:RelationResource[]) {\n involved.forEach((wpId) => {\n const relevant = relations.filter((r) => r.isInvolved(wpId));\n const value = this.relationsStateValue(wpId, relevant);\n\n this.updateValue(wpId, value);\n });\n }\n}\n","import { action, props } from 'ts-action';\n\nexport const reminderModalUpdated = action(\n '[Reminder] Reminder modal closed or updated',\n props<{ workPackageId:string }>(),\n);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnInit,\n ViewChild, AfterViewInit, OnDestroy,\n} from '@angular/core';\nimport { OpModalLocalsMap } from 'core-app/shared/components/modal/modal.types';\nimport { OpModalComponent } from 'core-app/shared/components/modal/modal.component';\nimport { OpModalLocalsToken } from 'core-app/shared/components/modal/modal.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { reminderModalUpdated } from 'core-app/features/work-packages/components/wp-reminder-modal/reminder.actions';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\n@Component({\n templateUrl: './wp-reminder.modal.html',\n styleUrls: ['./wp-reminder.modal.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageReminderModalComponent extends OpModalComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('frameElement') frameElement:ElementRef;\n\n // Hide close button so it's not duplicated in primer (WP#51699)\n showCloseButton = false;\n\n private workPackage:WorkPackageResource;\n public frameSrc:string;\n\n text = {\n new_title: this.I18n.t('js.work_packages.reminders.title.new'),\n edit_title: this.I18n.t('js.work_packages.reminders.title.edit'),\n subtitle: this.I18n.t('js.work_packages.reminders.subtitle'),\n button_close: this.I18n.t('js.button_close'),\n };\n\n public title$:Observable;\n\n private boundListener = this.turboSubmitEndListener.bind(this);\n\n constructor(\n @Inject(OpModalLocalsToken) public locals:OpModalLocalsMap,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n readonly elementRef:ElementRef,\n readonly pathHelper:PathHelperService,\n readonly actions$:ActionsService,\n readonly apiV3Service:ApiV3Service,\n ) {\n super(locals, cdRef, elementRef);\n\n this.workPackage = this.locals.workPackage as WorkPackageResource;\n this.title$ = this\n .isEditMode()\n .pipe(\n map((isEditMode) => (isEditMode ? this.text.edit_title : this.text.new_title)),\n );\n this.frameSrc = this.pathHelper.workPackageReminderModalBodyPath(this.workPackage.id as string);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngAfterViewInit() {\n // Use event delegation on a parent element that won't be re-rendered\n this.elementRef.nativeElement.addEventListener('turbo:submit-end', this.boundListener);\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n\n this.elementRef.nativeElement.removeEventListener('turbo:submit-end', this.boundListener);\n }\n\n onClose():boolean {\n this.actions$.dispatch(reminderModalUpdated({ workPackageId: this.workPackage.id as string }));\n\n return super.onClose();\n }\n\n private turboSubmitEndListener(event:CustomEvent) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { fetchResponse } = event.detail;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (fetchResponse.succeeded) {\n this.closeMe();\n this.onClose();\n }\n }\n\n /**\n * Check if there is already a reminder for the work package\n * so we can determine if we are in edit or new mode\n */\n private isEditMode():Observable {\n return this\n .apiV3Service\n .work_packages\n .id(this.workPackage.id as string)\n .reminders\n .get()\n .pipe(\n map((collection:CollectionResource) => { return collection.total > 0; }),\n );\n }\n}\n","\n \n \n \n\n \n \n \n \n \n

    \n\n
    \n \n \n \n \n\n \n \n\n \n \n\n \n \n \n \n
    \n\n","import { action, props } from 'ts-action';\n\nexport const shareModalUpdated = action(\n '[Sharing] Share modal closed or updated',\n props<{ workPackageId:string }>(),\n);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { OpModalLocalsMap } from 'core-app/shared/components/modal/modal.types';\nimport { OpModalComponent } from 'core-app/shared/components/modal/modal.component';\nimport { OpModalLocalsToken } from 'core-app/shared/components/modal/modal.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { shareModalUpdated } from 'core-app/features/work-packages/components/wp-share-modal/sharing.actions';\n\n@Component({\n templateUrl: './wp-share.modal.html',\n styleUrls: ['./wp-share.modal.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageShareModalComponent extends OpModalComponent implements OnInit {\n @ViewChild('frameElement') frameElement:ElementRef|undefined;\n\n // Hide close button so it's not duplicated in primer (WP#51699)\n showCloseButton = false;\n\n private workPackage:WorkPackageResource;\n public frameSrc:string;\n\n text = {\n title: this.I18n.t('js.work_packages.sharing.title'),\n button_close: this.I18n.t('js.button_close'),\n };\n\n constructor(\n @Inject(OpModalLocalsToken) public locals:OpModalLocalsMap,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n readonly elementRef:ElementRef,\n readonly pathHelper:PathHelperService,\n readonly actions$:ActionsService,\n ) {\n super(locals, cdRef, elementRef);\n\n this.workPackage = this.locals.workPackage as WorkPackageResource;\n this.frameSrc = this.pathHelper.workPackageSharePath(this.workPackage.id as string);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n onClose():boolean {\n this.actions$.dispatch(shareModalUpdated({ workPackageId: this.workPackage.id as string }));\n\n return super.onClose();\n }\n}\n","\n \n \n \n \n \n \n \n\n
    \n \n \n \n \n \n \n \n \n
    \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectorRef, Directive, OnInit } from '@angular/core';\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { WpSingleViewService } from 'core-app/features/work-packages/routing/wp-view-base/state/wp-single-view.service';\nimport { BrowserDetector } from 'core-app/core/browser/browser-detector.service';\nimport { DeviceService } from 'core-app/core/browser/device.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\n\n@Directive()\nexport class ActivityPanelBaseController extends UntilDestroyedMixin implements OnInit {\n public workPackage:WorkPackageResource;\n\n public workPackageId:string;\n\n public turboFrameSrc:string;\n\n constructor(\n readonly apiV3Service:ApiV3Service,\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly storeService:WpSingleViewService,\n readonly browserDetector:BrowserDetector,\n readonly deviceService:DeviceService,\n readonly pathHelper:PathHelperService,\n ) {\n super();\n }\n\n ngOnInit():void {\n this.turboFrameSrc = `${this.pathHelper.staticBase}/work_packages/${this.workPackageId}/activities`;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { trackByProperty } from 'core-app/shared/helpers/angular/tracking-functions';\nimport {\n ActivityPanelBaseController,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-base.controller';\n\n@Component({\n templateUrl: './activity-tab.html',\n selector: 'wp-activity-tab',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageActivityTabComponent extends ActivityPanelBaseController {\n @Input() public workPackage:WorkPackageResource;\n\n public tabName = this.I18n.t('js.work_packages.tabs.activity');\n\n public trackByIdentifier = trackByProperty('identifier');\n\n @ViewChild('activitiesTabContent', { static: true }) public activitiesTabContentElement!:ElementRef;\n\n ngOnInit() {\n const { workPackageId } = this.uiRouterGlobals.params as unknown as { workPackageId:string };\n this.workPackageId = (this.workPackage.id as string) || workPackageId;\n super.ngOnInit();\n if (window.location.hash) {\n this.activitiesTabContentElement.nativeElement.scrollIntoView();\n }\n }\n}\n","
    \n \n \n \n \n \n \n \n \n \n \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { WorkPackageLinkedResourceCache } from 'core-app/features/work-packages/components/wp-single-view-tabs/wp-linked-resource-cache.service';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\n\n@Injectable()\nexport class WorkPackagesActivityService extends WorkPackageLinkedResourceCache {\n constructor(public ConfigurationService:ConfigurationService,\n readonly timezoneService:TimezoneService) {\n super();\n }\n\n public get order() {\n return this.isReversed ? 'desc' : 'asc';\n }\n\n public get isReversed():boolean {\n return !!this.ConfigurationService.commentsSortedInDescendingOrder();\n }\n\n /**\n * Aggregate user and revision activities for the given work package resource.\n * Resolves both promises and returns a sorted list of activities\n * whose order depends on the 'commentsSortedInDescendingOrder' property.\n */\n protected load(workPackage:WorkPackageResource):Promise {\n const aggregated:any[] = []; const\n promises:Promise[] = [];\n\n const add = function (data:any) {\n aggregated.push(data.elements);\n };\n\n promises.push(workPackage.activities.$update().then(add));\n\n if (workPackage.revisions) {\n promises.push(workPackage.revisions.$update().then(add));\n }\n return Promise.all(promises).then(() => this.sortedActivityList(aggregated));\n }\n\n protected sortedActivityList(activities:HalResource[], attr = 'createdAt'):HalResource[] {\n const sorted = _.sortBy(_.flatten(activities), attr);\n\n if (this.isReversed) {\n return sorted.reverse();\n }\n return sorted;\n }\n}\n","\n \n \n \n \n \n\n \n \n\n \n \n \n\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ProjectStoragesResourceService } from 'core-app/core/state/project-storages/project-storages.service';\nimport { IProjectStorage } from 'core-app/core/state/project-storages/project-storage.model';\nimport { TurboRequestsService } from 'core-app/core/turbo/turbo-requests.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\n\n@Component({\n selector: 'op-files-tab',\n templateUrl: './op-files-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageFilesTabComponent implements OnInit {\n @Input() workPackage:WorkPackageResource;\n\n text = {\n attachments: {\n label: this.i18n.t('js.label_attachments'),\n },\n };\n\n showAttachmentHeader$:Observable;\n\n projectStorages:Observable;\n\n allowManageFileLinks$:Observable;\n\n showAttachments:boolean;\n\n constructor(\n private readonly i18n:I18nService,\n private readonly currentUserService:CurrentUserService,\n private readonly projectStoragesResourceService:ProjectStoragesResourceService,\n private readonly pathHelper:PathHelperService,\n private readonly turboRequests:TurboRequestsService,\n ) { }\n\n ngOnInit():void {\n const project = this.workPackage.project as HalResource;\n if (project.id === null) {\n return;\n }\n\n this.showAttachments = !!this.workPackage.$links.attachments;\n const canViewFileLinks = this.currentUserService.hasCapabilities$('file_links/view', project.id);\n\n this.projectStorages = this\n .projectStoragesResourceService\n .requireCollection({ filters: [['projectId', '=', [project.id]]] });\n\n this.allowManageFileLinks$ = this\n .currentUserService\n .hasCapabilities$('file_links/manage', project.id);\n\n this.showAttachmentHeader$ = combineLatest(\n [\n this.projectStorages,\n canViewFileLinks,\n ],\n ).pipe(\n map(([storages, viewPermission]) => storages.length > 0 && viewPermission),\n );\n }\n\n attachmentRemoved() {\n this.updateCounter();\n }\n\n attachmentAdded() {\n this.updateCounter();\n }\n\n private updateCounter() {\n if (this.workPackage.id) {\n const url = this.pathHelper.workPackageUpdateCounterPath(this.workPackage.id, 'files');\n void this.turboRequests.request(url);\n }\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n StateService, Transition, TransitionService, UIRouterGlobals,\n} from '@uirouter/core';\nimport { ReplaySubject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper';\n\n@Injectable({ providedIn: 'root' })\nexport class KeepTabService {\n protected currentTab = 'overview';\n\n protected subject = new ReplaySubject<{ [tab:string]:string; }>(1);\n\n constructor(protected $state:StateService,\n protected uiRouterGlobals:UIRouterGlobals,\n protected $transitions:TransitionService) {\n this.updateTabs();\n $transitions.onSuccess({}, (transition:Transition) => {\n this.updateTabs(transition.params('to').tabIdentifier);\n });\n }\n\n public get observable() {\n return this.subject;\n }\n\n /**\n * Return the last active tab.\n */\n public get lastActiveTab():string {\n if (this.isCurrentState('show')) {\n return this.currentShowTab;\n }\n\n return this.currentDetailsTab;\n }\n\n public goCurrentShowState(params:Record = {}):void {\n this.$state.go(\n 'work-packages.show.tabs',\n {\n ...this.uiRouterGlobals.params,\n ...params,\n tabIdentifier: this.currentShowTab,\n },\n );\n }\n\n public goCurrentDetailsState(params:Record = {}):void {\n const route = splitViewRoute(this.$state);\n\n this.$state.go(\n `${route}.tabs`,\n {\n ...this.uiRouterGlobals.params,\n ...params,\n tabIdentifier: this.currentDetailsTab,\n },\n );\n }\n\n public isDetailsState(stateName:string):boolean {\n return !!stateName && stateName.includes('.details');\n }\n\n public get currentShowTab():string {\n // Show view doesn't have overview\n // use activity instead\n if (this.currentTab === 'overview') {\n return 'activity';\n }\n\n return this.currentTab;\n }\n\n public get currentDetailsTab():string {\n return this.currentTab;\n }\n\n get currentTabIdentifier():string|undefined {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.uiRouterGlobals.params.tabIdentifier;\n }\n\n protected notify() {\n // Notify when updated\n this.subject.next({\n active: this.lastActiveTab,\n show: this.currentShowTab,\n details: this.currentDetailsTab,\n });\n }\n\n protected updateTab(stateName:string) {\n if (this.isCurrentState(stateName)) {\n this.currentTab = this.uiRouterGlobals.params.tabIdentifier;\n\n this.notify();\n }\n }\n\n protected isCurrentState(stateName:string):boolean {\n if (stateName === 'show') {\n return this.$state.includes('work-packages.show.*');\n }\n if (stateName === 'details') {\n return this.$state.includes('**.details.*');\n }\n\n return false;\n }\n\n public updateTabs(currentTab?:string) {\n // Ignore the switch from show#activity to details#activity\n // and show details#overview instead\n if (this.isCurrentState('show') && currentTab === 'activity') {\n this.currentTab = 'overview';\n return this.notify();\n }\n this.updateTab('show');\n this.updateTab('details');\n }\n}\n","","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\n@Component({\n templateUrl: './overview-tab.html',\n selector: 'wp-overview-tab',\n})\nexport class WorkPackageOverviewTabComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n public workPackageId:string;\n\n public tabName = this.I18n.t('js.label_latest_activity');\n\n public constructor(\n readonly I18n:I18nService,\n readonly $state:StateService,\n readonly apiV3Service:ApiV3Service,\n ) {\n super();\n }\n\n ngOnInit() {\n this.workPackageId = this.workPackage?.id || this.$state.params.workPackageId as string;\n\n this\n .apiV3Service\n .work_packages\n .id(this.workPackageId)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp) => this.workPackage = wp);\n }\n}\n","
    \n
    \n \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\n@Component({\n templateUrl: './relations-tab.html',\n selector: 'wp-relations-tab',\n})\nexport class WorkPackageRelationsTabComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackageId?:string;\n\n @Input() public workPackage:WorkPackageResource;\n\n public constructor(\n readonly I18n:I18nService,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly apiV3Service:ApiV3Service,\n ) {\n super();\n }\n\n ngOnInit() {\n const { workPackageId } = this.uiRouterGlobals.params as unknown as { workPackageId:string };\n this.workPackageId = (this.workPackage.id as string) || workPackageId;\n\n this\n .apiV3Service\n .work_packages\n .id(this.workPackageId)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp) => {\n this.workPackage = wp;\n });\n }\n}\n","
    \n
    \n
    \n

    \n
    \n
    \n
    \n
    \n\n \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n WorkPackageWatchersService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watchers.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { trackByHref } from 'core-app/shared/helpers/angular/tracking-functions';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { TurboRequestsService } from 'core-app/core/turbo/turbo-requests.service';\n\n@Component({\n templateUrl: './watchers-tab.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'wp-watchers-tab',\n})\nexport class WorkPackageWatchersTabComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n public workPackageId:string;\n\n public trackByHref = trackByHref;\n\n public error = false;\n\n public noResults = false;\n\n public allowedToView = false;\n\n public allowedToAdd = false;\n\n public allowedToRemove = false;\n\n public availableWatchersPath:string;\n\n private $element:JQuery;\n\n public watching:any[] = [];\n\n public text = {\n loading: this.I18n.t('js.watchers.label_loading'),\n loadingError: this.I18n.t('js.watchers.label_error_loading'),\n autocomplete: {\n placeholder: this.I18n.t('js.watchers.typeahead_placeholder'),\n },\n };\n\n public constructor(\n readonly I18n:I18nService,\n readonly elementRef:ElementRef,\n readonly wpWatchersService:WorkPackageWatchersService,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly notificationService:WorkPackageNotificationService,\n readonly loadingIndicator:LoadingIndicatorService,\n readonly cdRef:ChangeDetectorRef,\n readonly pathHelper:PathHelperService,\n readonly apiV3Service:ApiV3Service,\n readonly turboRequests:TurboRequestsService,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.$element = jQuery(this.elementRef.nativeElement);\n const { workPackageId } = this.uiRouterGlobals.params as unknown as { workPackageId:string };\n this.workPackageId = (this.workPackage.id as string) || workPackageId;\n\n this\n .apiV3Service\n .work_packages\n .id(this.workPackageId)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp:WorkPackageResource) => {\n this.workPackage = wp;\n this.loadCurrentWatchers();\n });\n\n this.availableWatchersPath = this.apiV3Service.work_packages.id(this.workPackageId).available_watchers.path;\n }\n\n public loadCurrentWatchers() {\n this.error = false;\n this.allowedToView = !!this.workPackage.watchers;\n this.allowedToAdd = !!this.workPackage.addWatcher;\n this.allowedToRemove = !!this.workPackage.removeWatcher;\n\n if (!this.allowedToView) {\n this.error = true;\n return;\n }\n\n this.wpWatchersService.require(this.workPackage)\n .then((watchers:HalResource[]) => {\n this.watching = watchers;\n this.cdRef.detectChanges();\n })\n .catch((error:any) => {\n this.notificationService.showError(error, this.workPackage);\n });\n }\n\n public set loadingPromise(promise:Promise) {\n this.loadingIndicator.wpDetails.promise = promise;\n }\n\n public addWatcher(user:any) {\n this.loadingPromise = this.workPackage.addWatcher.$link.$fetch({ user: { href: user.href } })\n .then(() => {\n // Forcefully reload the resource to update the watch/unwatch links\n // should the current user have been added\n this.wpWatchersService.require(this.workPackage, true);\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .refresh();\n\n this.updateCounter();\n\n this.cdRef.detectChanges();\n })\n .catch((error:any) => this.notificationService.showError(error, this.workPackage));\n }\n\n public removeWatcher(watcher:any) {\n this.workPackage.removeWatcher.$link.$prepare({ user_id: watcher.id })()\n .then(() => {\n _.remove(this.watching, (other:HalResource) => other.href === watcher.href);\n\n // Forcefully reload the resource to update the watch/unwatch links\n // should the current user have been removed\n this.wpWatchersService.require(this.workPackage, true);\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .refresh();\n\n this.updateCounter();\n\n this.cdRef.detectChanges();\n })\n .catch((error:any) => this.notificationService.showError(error, this.workPackage));\n }\n\n public updateCounter() {\n const url = this.pathHelper.workPackageUpdateCounterPath(this.workPackageId, 'watchers');\n void this.turboRequests.request(url);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { WorkPackageLinkedResourceCache } from 'core-app/features/work-packages/components/wp-single-view-tabs/wp-linked-resource-cache.service';\n\n@Injectable()\nexport class WorkPackageWatchersService extends WorkPackageLinkedResourceCache {\n protected load(workPackage:WorkPackageResource) {\n return workPackage.watchers.$update()\n .then((collection:CollectionResource) => collection.elements);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { input, InputState } from '@openproject/reactivestates';\nimport {\n filter,\n map,\n take,\n} from 'rxjs/operators';\nimport {\n firstValueFrom,\n Observable,\n of,\n} from 'rxjs';\n\ninterface CacheInput {\n id:string;\n value:T;\n}\n\nexport abstract class WorkPackageLinkedResourceCache {\n protected cacheDurationInSeconds = 120;\n\n // Cache activities for the last work package\n // to allow fast switching between work packages without refreshing.\n protected cache:{ id:string|null, state:InputState> } = {\n id: null,\n state: input>(),\n };\n\n /**\n * Requires the linked resource for the given work package.\n * Caches a single value for subsequent requests for +cacheDurationInSeconds+ seconds.\n *\n * Whenever another work package's linked resource is requested, the cache is replaced.\n *\n * @param {WorkPackageResource} workPackage\n * @returns {Promise}\n */\n public requireAndStream(workPackage:WorkPackageResource, force = false):Observable {\n const id = (workPackage.id as string|number).toString();\n const { state } = this.cache;\n\n // Clear cache if requesting different resource\n if (force || this.cache.id !== id) {\n state.clear();\n }\n\n // Return cached value if id matches and value is present\n if (this.isCached(id) && state.value) {\n return of(state.value.value);\n }\n\n if (!this.isRequested(id)) {\n // Ensure value is loaded only once\n this.cache.id = id;\n this.cache.state.clearAndPutFromPromise(this.load(workPackage).then((value) => ({ value, id })));\n }\n\n return this\n .cache\n .state\n .values$()\n .pipe(\n filter((cached) => cached && cached.id === id),\n map((cached) => cached.value),\n );\n }\n\n public require(workPackage:WorkPackageResource, force = false):Promise {\n return firstValueFrom(this.requireAndStream(workPackage, force));\n }\n\n public clear(workPackageId:string|null) {\n if (this.cache.id === workPackageId) {\n this.cache.state.clear();\n }\n }\n\n /**\n * Return whether the given work package is cached.\n * @param {string} workPackageId\n * @returns {boolean}\n */\n public isCached(workPackageId:string) {\n const { state } = this.cache;\n return this.cache.id === workPackageId && state.hasValue() && !state.isValueOlderThan(this.cacheDurationInSeconds * 1000);\n }\n\n /**\n * Return whether the given work package is cached.\n * @param {string} workPackageId\n * @returns {boolean}\n */\n public isRequested(workPackageId:string) {\n const { state } = this.cache;\n return this.cache.id === workPackageId && state.hasActivePromiseRequest();\n }\n\n /**\n * Load the linked resource and return it as a promise\n * @param {WorkPackageResource} workPackage\n */\n protected abstract load(workPackage:WorkPackageResource):Promise;\n}\n","
    \n
    \n \n
    \n\n
    \n \n \n \n\n
    \n :\n \n \n  \n \n \n \n  \n \n .\n
    \n\n \n
    \n\n
    \n
    \n

    \n
    \n
    \n \n {{ descriptor.label }}\n *\n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n\n \n
    \n \n
    \n
    \n\n \n \n \n \n\n
    \n
    \n \n \n
    \n
    \n\n \n \n \n \n \n\n \n
    \n
    \n

    \n
    \n
    \n\n \n \n
    \n \n\n\n\n \n
    \n \n
    \n\n \n \n\n \n \n \n\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n Input,\n OnInit,\n} from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, first, map } from 'rxjs/operators';\n\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n HalResourceEditingService,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { DisplayFieldService } from 'core-app/shared/components/fields/display/display-field.service';\nimport { DisplayField } from 'core-app/shared/components/fields/display/display-field.module';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { HookService } from 'core-app/features/plugins/hook-service';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { randomString } from 'core-app/shared/helpers/random-string';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { ProjectsResourceService } from 'core-app/core/state/projects/projects.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ProjectStoragesResourceService } from 'core-app/core/state/project-storages/project-storages.service';\nimport { IProjectStorage } from 'core-app/core/state/project-storages/project-storage.model';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\n\nexport interface FieldDescriptor {\n name:string;\n label:string;\n field?:DisplayField;\n fields?:DisplayField[];\n spanAll:boolean;\n multiple:boolean;\n}\n\nexport interface GroupDescriptor {\n name:string;\n id:string;\n members:FieldDescriptor[];\n query?:QueryResource;\n relationType?:string;\n isolated:boolean;\n type:string;\n}\n\nexport interface ResourceContextChange {\n isNew:boolean;\n schema:string|null;\n project:string|null;\n}\n\nexport const overflowingContainerAttribute = 'overflowingIdentifier';\n\n@Component({\n templateUrl: './wp-single-view.component.html',\n selector: 'wp-single-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageSingleViewComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n /** Should we show the project field */\n @Input() public showProject = false;\n\n // Grouped fields returned from API\n public groupedFields:GroupDescriptor[] = [];\n\n // Project context as an indicator\n // when editing the work package in a different project\n public projectContext:{\n matches:boolean,\n id:string|null,\n href:string|null,\n field?:FieldDescriptor[]\n };\n\n public text = {\n attachments: {\n label: this.I18n.t('js.label_attachments'),\n },\n files: {\n label: this.I18n.t('js.work_packages.tabs.files'),\n },\n project: {\n required: this.I18n.t('js.project.required_outside_context'),\n },\n\n fields: {\n description: this.I18n.t('js.work_packages.properties.description'),\n },\n infoRow: {\n createdBy: this.I18n.t('js.label_created_by'),\n lastUpdatedOn: this.I18n.t('js.label_last_updated_on'),\n },\n };\n\n public isNewResource:boolean;\n\n public uiSelfRef:string;\n\n $element:JQuery;\n\n projectStorages = new BehaviorSubject([]);\n\n constructor(\n protected readonly injector:Injector,\n private readonly states:States,\n private readonly I18n:I18nService,\n private readonly hook:HookService,\n private readonly $state:StateService,\n private readonly elementRef:ElementRef,\n private readonly cdRef:ChangeDetectorRef,\n private readonly PathHelper:PathHelperService,\n private readonly schemaCache:SchemaCacheService,\n private readonly currentProject:CurrentProjectService,\n private readonly halEditing:HalResourceEditingService,\n private readonly halResourceService:HalResourceService,\n private readonly currentUserService:CurrentUserService,\n private readonly displayFieldService:DisplayFieldService,\n private readonly projectsResourceService:ProjectsResourceService,\n private readonly projectStoragesService:ProjectStoragesResourceService,\n ) {\n super();\n }\n\n public ngOnInit():void {\n this.$element = jQuery(this.elementRef.nativeElement as HTMLElement);\n\n this.isNewResource = isNewResource(this.workPackage);\n\n this.uiSelfRef = this.$state.$current.name;\n\n const change = this.halEditing.changeFor(this.workPackage);\n this.refresh(change);\n\n // Whenever the temporary resource changes in any way,\n // update the visible fields.\n this.halEditing\n .temporaryEditResource(this.workPackage)\n .values$()\n .pipe(\n this.untilDestroyed(),\n map((resource) => this.contextFrom(resource)),\n distinctUntilChanged((a, b) => _.isEqual(a, b)),\n map(() => this.halEditing.changeFor(this.workPackage)),\n )\n .subscribe((changeset:WorkPackageChangeset) => this.refresh(changeset));\n }\n\n private refresh(change:WorkPackageChangeset) {\n // Prepare the fields that are required always\n const resource = change.projectedResource;\n\n if (!resource.project) {\n this.projectContext = { matches: false, href: null, id: null };\n } else {\n const project = resource.project as unknown&{ href:string, id:string };\n const workPackageId = this.workPackage.id;\n if (!workPackageId) {\n throw new Error('work package id is invalid');\n }\n\n this.projectContext = {\n id: project.id,\n href: this.PathHelper.projectWorkPackagePath(project.id, workPackageId),\n matches: project.href === this.currentProject.apiv3Path,\n };\n }\n\n if (isNewResource(resource)) {\n this.updateWorkPackageCreationState(change);\n }\n\n // eslint-disable-next-line no-underscore-dangle\n this.groupedFields = this.rebuildGroupedFields(change, this.schema(resource)._attributeGroups) as GroupDescriptor[];\n this.cdRef.detectChanges();\n }\n\n private updateWorkPackageCreationState(change:WorkPackageChangeset) {\n const resource = change.projectedResource;\n if (!this.currentProject.inProjectContext) {\n this.projectContext.field = this.getFields(change, ['project']);\n this.workPackage.project = resource.project as HalResource;\n }\n\n if (resource.project === null) {\n this.projectStorages.next([]);\n } else {\n const project = resource.project as unknown&{ href:string, id:string };\n combineLatest([\n this.projectsResourceService.requireEntity(project.href),\n this.projectStoragesService.requireCollection({ filters: [['projectId', '=', [project.id]]] }),\n this.currentUserService.hasCapabilities$('file_links/manage', project.id),\n ])\n .pipe(\n map(([p, projectStorages, manageFileLinks]) => {\n if (!p._links.storages || !manageFileLinks) {\n return [];\n }\n\n return projectStorages;\n }),\n first(),\n )\n .subscribe((ps) => {\n this.projectStorages.next(ps);\n });\n }\n }\n\n /**\n * Returns whether a group should be hidden due to being empty\n * (e.g., consists only of CFs and none of them are active in this project.\n */\n public shouldHideGroup(group:GroupDescriptor):boolean {\n // Hide if the group is empty\n const isEmpty = group.members.length === 0;\n\n // Is a query in a new screen\n const queryInNew = isNewResource(this.workPackage) && !!group.query;\n\n return isEmpty || queryInNew;\n }\n\n /**\n * angular 2 doesn't support track by property any more but requires a custom function\n * https://github.com/angular/angular/issues/12969\n * @param _index\n * @param elem\n */\n public trackByName(_index:number, elem:{ name:string }):string {\n return elem.name;\n }\n\n /**\n * Allow other modules to register groups to insert into the single view\n */\n public prependedAttributeGroupComponents() {\n return this.hook.call('prependedAttributeGroups', this.workPackage);\n }\n\n public attributeGroupComponent(group:GroupDescriptor) {\n // we take the last registered group component which means that\n // plugins will have their say if they register for it.\n return this.hook.call('attributeGroupComponent', group, this.workPackage).pop() || null;\n }\n\n public attachmentListComponent() {\n // we take the last registered group component which means that\n // plugins will have their say if they register for it.\n return this.hook.call('workPackageAttachmentListComponent', this.workPackage).pop() || null;\n }\n\n public attachmentUploadComponent() {\n // we take the last registered group component which means that\n // plugins will have their say if they register for it.\n return this.hook.call('workPackageAttachmentUploadComponent', this.workPackage).pop() || null;\n }\n\n /*\n * Returns the work package label\n */\n public get idLabel():string {\n return `#${this.workPackage.id || ''}`;\n }\n\n public showSwitchToProjectBanner():boolean {\n return !this.isNewResource && this.projectContext && !this.projectContext.matches;\n }\n\n public get switchToProjectText():string {\n const id = idFromLink(this.workPackage.project.href);\n const projectPath = this.PathHelper.projectPath(id);\n const projectName = this.workPackage.project.name as string;\n const project = `${projectName}`;\n return this.I18n.t('js.project.click_to_switch_to_project', { projectname: project });\n }\n\n showTwoColumnLayout():boolean {\n return this.$element[0].getBoundingClientRect().width > 750;\n }\n\n private rebuildGroupedFields(change:WorkPackageChangeset, attributeGroups:any) {\n if (!attributeGroups) {\n return [];\n }\n\n return attributeGroups.map((group:any) => {\n const groupId = this.getAttributesGroupId(group);\n\n if (group._type === 'WorkPackageFormAttributeGroup') {\n return {\n name: group.name,\n id: groupId || randomString(16),\n members: this.getFields(change, group.attributes),\n type: group._type,\n isolated: false,\n };\n }\n return {\n name: group.name,\n id: groupId || randomString(16),\n query: this.halResourceService.createHalResourceOfClass(QueryResource, group._embedded.query),\n relationType: group.relationType,\n members: [group._embedded.query],\n type: group._type,\n isolated: true,\n };\n });\n }\n\n /**\n * Maps the grouped fields into their display fields.\n * May return multiple fields (for the date virtual field).\n */\n private getFields(change:WorkPackageChangeset, fieldNames:string[]):FieldDescriptor[] {\n const descriptors:FieldDescriptor[] = [];\n\n fieldNames.forEach((fieldName:string) => {\n if (fieldName === 'date') {\n descriptors.push(this.getDateField(change));\n return;\n }\n\n if (!change.schema.ofProperty(fieldName)) {\n debugLog('Unknown field for current schema', fieldName);\n return;\n }\n\n const field:DisplayField = this.displayField(change, fieldName);\n descriptors.push({\n name: fieldName,\n label: field.label,\n multiple: false,\n spanAll: field.isFormattable,\n field,\n });\n });\n\n return descriptors;\n }\n\n /**\n * We need to discern between milestones, which have a single\n * 'date' field vs. all other types which should display a\n * combined 'start' and 'due' date field.\n */\n private getDateField(change:WorkPackageChangeset):FieldDescriptor {\n const object:FieldDescriptor = {\n name: 'date',\n label: this.I18n.t('js.work_packages.properties.date'),\n spanAll: false,\n multiple: false,\n };\n\n if (change.schema.ofProperty('date')) {\n object.field = this.displayField(change, 'date');\n } else {\n object.field = this.displayField(change, 'combinedDate');\n }\n\n return object;\n }\n\n /**\n * Get the current resource context change from the WP resource.\n * Used to identify changes in the schema or project that may result in visual changes\n * to the single view.\n *\n * @param {WorkPackage} workPackage\n * @returns {ResourceContextChange}\n */\n private contextFrom(workPackage:WorkPackageResource):ResourceContextChange {\n const schema = this.schema(workPackage);\n\n let schemaHref:string|null;\n const projectHref:string|null = workPackage.project && workPackage.project.href;\n\n if (schema.baseSchema) {\n schemaHref = schema.baseSchema.href;\n } else {\n schemaHref = schema.href;\n }\n\n return {\n isNew: workPackage.isNew,\n schema: schemaHref,\n project: projectHref,\n };\n }\n\n private displayField(change:WorkPackageChangeset, name:string):DisplayField {\n return this.displayFieldService.getField(\n change.projectedResource,\n name,\n change.schema.ofProperty(name),\n { container: 'single-view', injector: this.injector, options: {} },\n );\n }\n\n private getAttributesGroupId(group:any):string {\n const overflowingIdentifier = this.$element\n .find(`[data-group-name=\\'${group.name}\\']`)\n .data(overflowingContainerAttribute);\n\n if (overflowingIdentifier) {\n return overflowingIdentifier.replace('.__overflowing_', '');\n }\n return '';\n }\n\n private schema(resource:WorkPackageResource) {\n if (this.halEditing.typedState(resource).hasValue()) {\n return this.halEditing.typedState(this.workPackage).value!.schema;\n }\n return this.schemaCache.of(resource);\n }\n}\n","
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { randomString } from 'core-app/shared/helpers/random-string';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\n@Component({\n selector: 'wp-subject',\n templateUrl: './wp-subject.html',\n})\nexport class WorkPackageSubjectComponent extends UntilDestroyedMixin implements OnInit {\n @Input('workPackage') workPackage:WorkPackageResource;\n\n public readonly uniqueElementIdentifier = `work-packages--subject-type-row-${randomString(16)}`;\n\n constructor(protected uiRouterGlobals:UIRouterGlobals,\n protected apiV3Service:ApiV3Service) {\n super();\n }\n\n ngOnInit() {\n if (!this.workPackage) {\n this\n .apiV3Service\n .work_packages\n .id(this.uiRouterGlobals.params.workPackageId)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp:WorkPackageResource) => {\n this.workPackage = wp;\n });\n }\n }\n}\n","/**\n * A PortalOutlet that lets multiple components live for the lifetime of the outlet,\n * allowing faster switching and persistent data.\n */\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n} from '@angular/core';\nimport { TabDefinition } from 'core-app/shared/components/tabs/tab.interface';\n\nexport interface TabInterface extends TabDefinition {\n componentClass:{ new(...args:any[]):TabComponent };\n}\n\nexport interface TabComponent {\n onSave:() => void;\n}\n\nexport interface ActiveTabInterface extends TabDefinition {\n portal:ComponentPortal;\n componentRef:ComponentRef;\n dispose:() => void;\n}\n\nexport class TabPortalOutlet {\n // Active tabs that have been instantiated\n public activeTabs:{ [name:string]:ActiveTabInterface } = {};\n\n // The current tab\n public currentTab:ActiveTabInterface|null = null;\n\n constructor(\n public availableTabs:TabInterface[],\n public outletElement:HTMLElement,\n private componentFactoryResolver:ComponentFactoryResolver,\n private appRef:ApplicationRef,\n private injector:Injector,\n ) {\n }\n\n public get activeComponents():TabComponent[] {\n const tabs = _.values(this.activeTabs);\n return tabs.map((tab:ActiveTabInterface) => tab.componentRef.instance);\n }\n\n public switchTo(tab:TabInterface):void {\n if (tab.disable !== undefined) {\n return;\n }\n\n // Detach any current instance\n this.detach();\n\n // Get existing or new component instance\n const instance = this.activateInstance(tab);\n\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.innerHTML = '';\n this.outletElement.appendChild(this._getComponentRootNode(instance.componentRef));\n this.outletElement.dataset.tabName = tab.name;\n this.currentTab = instance;\n }\n\n public detach():void {\n const current = this.currentTab;\n if (current !== null) {\n current.portal.setAttachedHost(null);\n this.currentTab = null;\n }\n }\n\n /**\n * Clears out a portal from the DOM.\n */\n dispose():void {\n // Dispose all active tabs\n _.each(this.activeTabs, (active) => active.dispose());\n\n // Remove outlet element\n if (this.outletElement.parentNode != null) {\n this.outletElement.parentNode.removeChild(this.outletElement);\n }\n }\n\n private activateInstance(tab:TabInterface):ActiveTabInterface {\n if (!this.activeTabs[tab.name]) {\n this.activeTabs[tab.name] = this.createComponent(tab);\n }\n\n return this.activeTabs[tab.name] || null;\n }\n\n private createComponent(tab:TabInterface):ActiveTabInterface {\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(tab.componentClass);\n const componentRef = componentFactory.create(this.injector);\n const portal = new ComponentPortal(tab.componentClass, null, this.injector);\n\n // Attach component view\n this.appRef.attachView(componentRef.hostView);\n\n return {\n ...tab,\n portal,\n componentRef,\n dispose: () => {\n this.appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n },\n };\n }\n\n /** Gets the root HTMLElement for an instantiated component. */\n private _getComponentRootNode(componentRef:ComponentRef):HTMLElement {\n return (componentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\n }\n}\n","
    \n \n \n
    \n\n\n\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { TabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\nimport { DraggableOption } from 'core-app/shared/components/autocompleter/draggable-autocomplete/draggable-autocomplete.component';\nimport { enterpriseDocsUrl } from 'core-app/core/setup/globals/constants.const';\n\n@Component({\n templateUrl: './columns-tab.component.html',\n})\nexport class WpTableConfigurationColumnsTabComponent implements TabComponent, OnInit {\n public availableColumnsOptions = this.wpTableColumns.all.map((c) => this.column2Like(c));\n\n public availableColumns = this.wpTableColumns.all;\n\n public availableColumnsMap:{ [id:string]:QueryColumn } = _.keyBy(this.availableColumns, (c) => c.id);\n\n public selectedColumns:DraggableOption[] = this.wpTableColumns.getColumns().map((c) => this.column2Like(c));\n\n public selectedColumnMap:{ [id:string]:boolean } = {};\n\n public eeShowBanners = false;\n\n public text = {\n columnsHelp: this.I18n.t('js.work_packages.table_configuration.columns_help_text'),\n columnsLabel: this.I18n.t('js.label_columns'),\n multiSelectLabel: this.I18n.t('js.work_packages.label_column_multiselect'),\n\n upsaleRelationColumns: this.I18n.t('js.work_packages.table_configuration.upsale.relation_columns'),\n upsaleCheckOutLink: this.I18n.t('js.work_packages.table_configuration.upsale.check_out_link'),\n moreInfoLink: enterpriseDocsUrl.website,\n\n inputPlaceholder: this.I18n.t('js.label_search_columns'),\n inputLabel: this.I18n.t('js.label_add_columns'),\n inputDragLabel: this.I18n.t('js.label_manage_columns'),\n };\n\n constructor(\n readonly injector:Injector,\n readonly I18n:I18nService,\n readonly wpTableColumns:WorkPackageViewColumnsService,\n readonly bannerService:BannersService,\n) {\n }\n\n public onSave() {\n this.wpTableColumns.setColumnsById(this.selectedColumns.map((c) => c.id));\n }\n\n ngOnInit() {\n this.eeShowBanners = this.bannerService.eeShowBanners;\n this.selectedColumns.forEach((c:DraggableOption) => {\n this.selectedColumnMap[c.id] = true;\n });\n }\n\n private column2Like(c:QueryColumn):DraggableOption {\n return { id: c.id, name: c.name };\n }\n\n updateSelected(selected:DraggableOption[]) {\n this.selectedColumns = selected;\n }\n}\n","
    \n
    \n

    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n\n
    \n\n
    \n
    \n
    \n \n
    \n
    \n\n
    \n
    \n
    \n","import { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport { WorkPackageViewGroupByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { WorkPackageViewSumService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport { Component, Injector } from '@angular/core';\nimport { QueryGroupByResource } from 'core-app/features/hal/resources/query-group-by-resource';\n\n@Component({\n selector: 'op-wp-table-configuration-settings-tab',\n templateUrl: './display-settings-tab.component.html',\n})\nexport class WpTableConfigurationDisplaySettingsTabComponent implements TabComponent {\n // Display mode\n public displayMode:'hierarchy'|'grouped'|'default' = 'default';\n\n // Grouping\n public currentGroup:QueryGroupByResource|null;\n\n public availableGroups:QueryGroupByResource[] = [];\n\n // Sums row display\n public displaySums = false;\n\n public text = {\n choose_mode: this.I18n.t('js.work_packages.table_configuration.choose_display_mode'),\n label_group_by: this.I18n.t('js.label_group_by'),\n title: this.I18n.t('js.label_group_by'),\n placeholder: this.I18n.t('js.placeholders.default'),\n please_select: this.I18n.t('js.placeholders.selection'),\n default: `— ${this.I18n.t('js.work_packages.table_configuration.default')}`,\n display_sums: this.I18n.t('js.work_packages.query.display_sums'),\n display_sums_hint: `— ${this.I18n.t('js.work_packages.table_configuration.display_sums_hint')}`,\n display_mode: {\n default: this.I18n.t('js.work_packages.table_configuration.default_mode'),\n grouped: this.I18n.t('js.work_packages.table_configuration.grouped_mode'),\n hierarchy: this.I18n.t('js.work_packages.table_configuration.hierarchy_mode'),\n hierarchy_hint: `— ${this.I18n.t('js.work_packages.table_configuration.hierarchy_hint')}`,\n },\n };\n\n constructor(\n readonly injector:Injector,\n readonly I18n:I18nService,\n readonly wpTableGroupBy:WorkPackageViewGroupByService,\n readonly wpTableHierarchies:WorkPackageViewHierarchiesService,\n readonly wpTableSums:WorkPackageViewSumService,\n ) { }\n\n public onSave() {\n // Update hierarchy state\n this.wpTableHierarchies.setEnabled(this.displayMode === 'hierarchy');\n\n // Update grouping state\n const group = this.displayMode === 'grouped' ? this.currentGroup : null;\n this.wpTableGroupBy.update(group);\n\n // Update sums state\n this.wpTableSums.setEnabled(this.displaySums);\n }\n\n public updateGroup(href:string) {\n this.displayMode = 'grouped';\n this.currentGroup = _.find(this.availableGroups, (group) => group.href === href) || null;\n }\n\n ngOnInit() {\n if (this.wpTableHierarchies.isEnabled) {\n this.displayMode = 'hierarchy';\n } else if (this.wpTableGroupBy.current) {\n this.displayMode = 'grouped';\n }\n\n this.displaySums = this.wpTableSums.current;\n\n void this.wpTableGroupBy\n .onReady()\n .then(() => {\n this.availableGroups = _.sortBy(this.wpTableGroupBy.available, 'name');\n this.currentGroup = this.wpTableGroupBy.current || this.availableGroups[0];\n });\n }\n}\n","\n","import { Component, Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport { WorkPackageFiltersService } from 'core-app/features/work-packages/components/filters/wp-filters/wp-filters.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\n\n@Component({\n templateUrl: './filters-tab.component.html',\n selector: 'wp-table-config-filters-tab',\n})\nexport class WpTableConfigurationFiltersTab implements TabComponent {\n public filters:QueryFilterInstanceResource[] = [];\n\n public eeShowBanners = false;\n\n public text = {\n columnsLabel: this.I18n.t('js.label_columns'),\n selectedColumns: this.I18n.t('js.description_selected_columns'),\n multiSelectLabel: this.I18n.t('js.work_packages.label_column_multiselect'),\n\n upsaleRelationColumns: this.I18n.t('js.modals.upsale_relation_columns'),\n upsaleRelationColumnsLink: this.I18n.t('js.modals.upsale_relation_columns_link'),\n };\n\n constructor(readonly injector:Injector,\n readonly I18n:I18nService,\n readonly wpTableFilters:WorkPackageViewFiltersService,\n readonly wpFiltersService:WorkPackageFiltersService,\n readonly bannerService:BannersService) {\n }\n\n ngOnInit() {\n this.eeShowBanners = this.bannerService.eeShowBanners;\n this.wpTableFilters\n .onReady()\n .then(() => this.filters = this.wpTableFilters.current);\n\n this.wpTableFilters.changes$().subscribe((filters) => {\n this.filters = this.wpTableFilters.current;\n });\n }\n\n public onSave() {\n if (this.filters) {\n this.wpTableFilters.replaceIfComplete(this.filters);\n }\n }\n}\n","
    \n \n \n\n
    \n

    \n
    \n \n\n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n \n\n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n \n
    \n
    \n
    \n","import {\n ChangeDetectionStrategy,\n Component,\n Injector,\n ViewChild,\n} from '@angular/core';\nimport { TabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport { WorkPackageViewHighlightingService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HighlightingMode } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting-mode.const';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { States } from 'core-app/core/states/states.service';\nimport { enterpriseDocsUrl } from 'core-app/core/setup/globals/constants.const';\nimport { repositionDropdownBugfix } from 'core-app/shared/components/autocompleter/op-autocompleter/autocompleter.helper';\n\n@Component({\n templateUrl: './highlighting-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WpTableConfigurationHighlightingTabComponent implements TabComponent {\n // Display mode\n public highlightingMode:HighlightingMode = 'inline';\n\n public entireRowMode = false;\n\n public lastEntireRowAttribute:HighlightingMode = 'status';\n\n public eeShowBanners = false;\n\n public availableInlineHighlightedAttributes:HalResource[] = [];\n\n public selectedAttributes:any[] = [];\n\n public availableRowHighlightedAttributes:{ name:string; value:HighlightingMode }[] = [];\n\n @ViewChild('highlightedAttributesNgSelect') public highlightedAttributesNgSelect:NgSelectComponent;\n\n @ViewChild('rowHighlightNgSelect') public rowHighlightNgSelect:NgSelectComponent;\n\n public text = {\n title: this.I18n.t('js.work_packages.table_configuration.highlighting'),\n highlighting_mode: {\n description: this.I18n.t('js.work_packages.table_configuration.highlighting_mode.description'),\n none: this.I18n.t('js.work_packages.table_configuration.highlighting_mode.none'),\n inline: this.I18n.t('js.work_packages.table_configuration.highlighting_mode.inline'),\n inline_all_attributes: this.I18n.t('js.work_packages.table_configuration.highlighting_mode.inline_all'),\n status: this.I18n.t('js.work_packages.table_configuration.highlighting_mode.status'),\n type: this.I18n.t('js.work_packages.properties.type'),\n priority: this.I18n.t('js.work_packages.table_configuration.highlighting_mode.priority'),\n entire_row_by: this.I18n.t('js.work_packages.table_configuration.highlighting_mode.entire_row_by'),\n },\n upsaleAttributeHighlighting: this.I18n.t('js.work_packages.table_configuration.upsale.attribute_highlighting'),\n upsaleCheckOutLink: this.I18n.t('js.work_packages.table_configuration.upsale.check_out_link'),\n more_info_link: enterpriseDocsUrl.tableHighlighting,\n };\n\n constructor(readonly injector:Injector,\n readonly I18n:I18nService,\n readonly states:States,\n readonly querySpace:IsolatedQuerySpace,\n readonly Banners:BannersService,\n readonly wpTableHighlight:WorkPackageViewHighlightingService) {\n }\n\n ngOnInit() {\n this.availableInlineHighlightedAttributes = this.availableHighlightedAttributes;\n this.availableRowHighlightedAttributes = [\n { name: this.text.highlighting_mode.status, value: 'status' },\n { name: this.text.highlighting_mode.priority, value: 'priority' },\n ];\n\n this.setSelectedValues();\n\n this.eeShowBanners = this.Banners.eeShowBanners;\n this.updateMode(this.wpTableHighlight.current.mode);\n\n if (this.eeShowBanners) {\n this.updateMode('none');\n }\n }\n\n public onSave() {\n const mode = this.highlightingMode;\n this.wpTableHighlight.update({ mode, selectedAttributes: this.selectedAttributes });\n }\n\n public updateMode(mode:HighlightingMode | 'entire-row') {\n if (mode === 'entire-row') {\n this.highlightingMode = this.lastEntireRowAttribute;\n } else {\n this.highlightingMode = mode;\n }\n\n if (['status', 'priority'].indexOf(this.highlightingMode) !== -1) {\n this.lastEntireRowAttribute = this.highlightingMode;\n this.entireRowMode = true;\n } else {\n this.entireRowMode = false;\n }\n }\n\n public updateHighlightingAttributes(model:HalResource[]) {\n this.selectedAttributes = model;\n }\n\n public disabledValue(value:boolean):string | null {\n return value ? 'disabled' : null;\n }\n\n public get availableHighlightedAttributes():HalResource[] {\n const { schema } = this.querySpace.queryForm.value!;\n return schema.highlightedAttributes.allowedValues;\n }\n\n public onOpen(component:unknown) {\n repositionDropdownBugfix(component);\n }\n\n private setSelectedValues() {\n const currentValues = this.wpTableHighlight.current.selectedAttributes;\n\n if (currentValues) {\n this.selectedAttributes = currentValues;\n }\n }\n}\n","
    \n
    \n\n

    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n {{ text.sorting_mode.warning }}\n
    \n
    \n\n \n
    \n
    \n \n \n
    \n
    \n \n \n\n \n \n\n \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n","import { Component, Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { TabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport {\n QUERY_SORT_BY_ASC,\n QUERY_SORT_BY_DESC,\n QuerySortByResource,\n} from 'core-app/features/hal/resources/query-sort-by-resource';\n\nexport class SortModalObject {\n constructor(public column:SortColumn,\n public direction:string) {\n }\n}\n\nexport interface SortColumn {\n name:string;\n href:string | null;\n}\n\nexport type SortingMode = 'automatic'|'manual';\n\n@Component({\n templateUrl: './sort-by-tab.component.html',\n})\nexport class WpTableConfigurationSortByTabComponent implements TabComponent {\n public text = {\n title: this.I18n.t('js.label_sort_by'),\n placeholder: this.I18n.t('js.placeholders.default'),\n sort_criteria_1: this.I18n.t('js.filter.sorting.criteria.one'),\n sort_criteria_2: this.I18n.t('js.filter.sorting.criteria.two'),\n sort_criteria_3: this.I18n.t('js.filter.sorting.criteria.three'),\n sorting_mode: {\n description: this.I18n.t('js.work_packages.table_configuration.sorting_mode.description'),\n automatic: this.I18n.t('js.work_packages.table_configuration.sorting_mode.automatic'),\n manually: this.I18n.t('js.work_packages.table_configuration.sorting_mode.manually'),\n warning: this.I18n.t('js.work_packages.table_configuration.sorting_mode.warning'),\n },\n };\n\n readonly availableDirections = [\n { href: QUERY_SORT_BY_ASC, name: this.I18n.t('js.label_ascending') },\n { href: QUERY_SORT_BY_DESC, name: this.I18n.t('js.label_descending') },\n ];\n\n public availableColumns:SortColumn[] = [];\n\n public allColumns:SortColumn[] = [];\n\n public sortationObjects:SortModalObject[] = [];\n\n public emptyColumn:SortColumn = { name: this.text.placeholder, href: null };\n\n public sortingMode:SortingMode = 'automatic';\n\n public manualSortColumn:SortColumn;\n\n constructor(readonly injector:Injector,\n readonly I18n:I18nService,\n readonly wpTableSortBy:WorkPackageViewSortByService) {\n\n }\n\n public onSave() {\n let sortElements;\n if (this.sortingMode === 'automatic') {\n sortElements = this.sortationObjects.filter((object) => object.column !== null);\n } else {\n sortElements = [new SortModalObject(this.manualSortColumn, QUERY_SORT_BY_ASC)];\n }\n\n sortElements = sortElements.map((object) => this.getMatchingSort(object.column.href!, object.direction));\n this.wpTableSortBy.update(_.compact(sortElements));\n }\n\n ngOnInit() {\n this.wpTableSortBy\n .onReadyWithAvailable()\n .subscribe(() => {\n const allColumns:SortColumn[] = this.wpTableSortBy.available.filter(\n (sort:QuerySortByResource) => !sort.column.href!.endsWith('/parent'),\n ).map(\n (sort:QuerySortByResource) => ({ name: sort.column.name, href: sort.column.href }),\n );\n\n // For whatever reason, even though the UI doesn't implement it,\n // QuerySortByResources are doubled for each column (one for asc/desc direction)\n this.allColumns = _.uniqBy(allColumns, 'href');\n\n this.getManualSortingOption();\n\n _.each(this.wpTableSortBy.current, (sort) => {\n if (!sort.column.href!.endsWith('/parent')) {\n this.sortationObjects.push(\n new SortModalObject({ name: sort.column.name, href: sort.column.href },\n sort.direction.href!),\n );\n if (sort.column.href === this.manualSortColumn.href) {\n this.updateSortingMode('manual');\n }\n }\n });\n\n this.updateUsedColumns();\n this.fillUpSortElements();\n });\n }\n\n public updateSelection(sort:SortModalObject, selected:string | null) {\n sort.column = _.find(this.allColumns, (column) => column.href === selected) || this.emptyColumn;\n this.updateUsedColumns();\n }\n\n public updateUsedColumns() {\n const usedColumns = this.sortationObjects\n .filter((o) => o.column !== null)\n .map((object:SortModalObject) => object.column);\n\n this.availableColumns = _.sortBy(_.differenceBy(this.allColumns, usedColumns, 'href'), 'name');\n }\n\n public updateSortingMode(mode:SortingMode) {\n this.sortingMode = mode;\n }\n\n private getMatchingSort(column:string, direction:string) {\n return _.find(this.wpTableSortBy.available, (sort) => sort.column.href === column && sort.direction.href === direction);\n }\n\n private fillUpSortElements() {\n while (this.sortationObjects.length < 3) {\n this.sortationObjects.push(new SortModalObject(this.emptyColumn, QUERY_SORT_BY_ASC));\n }\n }\n\n private getManualSortingOption() {\n this.manualSortColumn = this.allColumns.find((e) => e.href!.endsWith('/manualSorting'))!;\n this.allColumns.splice(this.allColumns.indexOf(this.manualSortColumn), 1);\n }\n}\n","
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n

    \n
    \n \n
    \n \n \n

    \n\n
    \n
    \n
    \n\n \n \n \n
    \n
    \n
    \n
    \n\n
    \n \n \n

    \n
    \n
    \n \n {{ text.labels[key] }}\n \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n","import {\n Component,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { zoomLevelOrder } from 'core-app/features/work-packages/components/wp-table/timeline/wp-timeline';\nimport { TimelineLabels, TimelineZoomLevel } from 'core-app/features/hal/resources/query-resource';\nimport { StateService } from '@uirouter/angular';\n\n@Component({\n templateUrl: './timelines-tab.component.html',\n})\nexport class WpTableConfigurationTimelinesTabComponent implements TabComponent, OnInit {\n public timelineVisible = false;\n\n public availableAttributes:{ id:string, name:string }[];\n\n public labels:TimelineLabels;\n\n public availableLabels:string[];\n\n public zoomLevel:TimelineZoomLevel;\n\n // Manually build available zoom levels with zoom\n // because it is not part of the order.\n public availableZoomLevels:TimelineZoomLevel[] = ['auto', ...zoomLevelOrder];\n\n public text = {\n title: this.I18n.t('js.gantt_chart.label'),\n display_timelines: this.I18n.t('js.gantt_chart.button_activate'),\n display_timelines_hint: this.I18n.t('js.work_packages.table_configuration.show_timeline_hint'),\n zoom: {\n level: this.I18n.t('js.tl_toolbar.zooms'),\n description: this.I18n.t('js.gantt_chart.zoom.description'),\n days: this.I18n.t('js.gantt_chart.zoom.days'),\n weeks: this.I18n.t('js.gantt_chart.zoom.weeks'),\n months: this.I18n.t('js.gantt_chart.zoom.months'),\n quarters: this.I18n.t('js.gantt_chart.zoom.quarters'),\n years: this.I18n.t('js.gantt_chart.zoom.years'),\n auto: this.I18n.t('js.gantt_chart.zoom.auto'),\n },\n labels: {\n title: this.I18n.t('js.gantt_chart.labels.title'),\n description: this.I18n.t('js.gantt_chart.labels.description'),\n bar: this.I18n.t('js.gantt_chart.labels.bar'),\n none: this.I18n.t('js.gantt_chart.filter.noneSelection'),\n left: this.I18n.t('js.gantt_chart.labels.left'),\n right: this.I18n.t('js.gantt_chart.labels.right'),\n farRight: this.I18n.t('js.gantt_chart.labels.farRight'),\n },\n };\n\n constructor(\n readonly injector:Injector,\n readonly I18n:I18nService,\n readonly wpTableTimeline:WorkPackageViewTimelineService,\n readonly wpTableColumns:WorkPackageViewColumnsService,\n readonly $state:StateService,\n ) {\n }\n\n public onSave() {\n this.wpTableTimeline.update({\n ...this.wpTableTimeline.current,\n visible: this.timelineVisible,\n labels: this.labels,\n zoomLevel: this.zoomLevel,\n });\n }\n\n public updateLabels(key:keyof TimelineLabels, value:string|null) {\n if (value === '') {\n value = null;\n }\n\n this.labels[key] = value;\n }\n\n ngOnInit() {\n this.timelineVisible = this.wpTableTimeline.isVisible;\n\n // Current zoom level\n this.zoomLevel = this.wpTableTimeline.zoomLevel;\n\n // Current label models\n const { labels } = this.wpTableTimeline;\n this.labels = _.clone(labels);\n this.availableLabels = Object.keys(this.labels);\n\n // Available labels\n const availableColumns = this.wpTableColumns\n .allPropertyColumns\n .sort((a:QueryColumn, b:QueryColumn) => a.name.localeCompare(b.name));\n\n this.availableAttributes = [{ id: '', name: this.text.labels.none }].concat(availableColumns);\n }\n\n timelineToggleDisabled():boolean {\n return !!this.$state.current.name?.includes('gantt');\n }\n}\n","
    \n
    \n \n &ngsp;\n \n
    \n
    \n","import {\n Component,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\nimport { QueryOperatorResource } from 'core-app/features/hal/resources/query-operator-resource';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\n\n@Component({\n templateUrl: './wp-table-configuration-relation-selector.html',\n selector: 'wp-table-configuration-relation-selector',\n})\nexport class WpTableConfigurationRelationSelectorComponent implements OnInit {\n private relationFilterIds:string[] = [\n 'parent',\n 'precedes',\n 'follows',\n 'relates',\n 'duplicates',\n 'duplicated',\n 'blocks',\n 'blocked',\n 'partof',\n 'includes',\n 'requires',\n 'required',\n ];\n\n public availableRelationFilters:QueryFilterResource[] = [];\n\n public selectedRelationFilter:QueryFilterResource|undefined = undefined;\n\n public text = {\n filter_work_packages_by_relation_type: this.I18n.t('js.work_packages.table_configuration.relation_filters.filter_work_packages_by_relation_type'),\n please_select: this.I18n.t('js.placeholders.selection'),\n // We need to inverse the translation strings, as the filters's are named the other way around than what\n // a user knows from the relations tab:\n parent: this.I18n.t('js.relation_labels.children'),\n precedes: this.I18n.t('js.relation_labels.follows'),\n follows: this.I18n.t('js.relation_labels.precedes'),\n relates: this.I18n.t('js.relation_labels.relates'),\n duplicates: this.I18n.t('js.relation_labels.duplicated'),\n duplicated: this.I18n.t('js.relation_labels.duplicates'),\n blocks: this.I18n.t('js.relation_labels.blocked'),\n blocked: this.I18n.t('js.relation_labels.blocks'),\n requires: this.I18n.t('js.relation_labels.required'),\n required: this.I18n.t('js.relation_labels.requires'),\n partof: this.I18n.t('js.relation_labels.includes'),\n includes: this.I18n.t('js.relation_labels.partof'),\n };\n\n constructor(readonly injector:Injector,\n readonly I18n:I18nService,\n readonly wpTableFilters:WorkPackageViewFiltersService,\n readonly ConfigurationService:ConfigurationService,\n readonly schemaCache:SchemaCacheService) {\n }\n\n ngOnInit() {\n const self:WpTableConfigurationRelationSelectorComponent = this;\n\n this.wpTableFilters\n .onReady()\n .then(() => {\n self.availableRelationFilters = self.relationFiltersOf(self.wpTableFilters.availableFilters) as QueryFilterResource[];\n self.setSelectedRelationFilter();\n });\n }\n\n private setSelectedRelationFilter():void {\n const currentRelationFilters:QueryFilterInstanceResource[] = this.relationFiltersOf(this.wpTableFilters.current) as QueryFilterInstanceResource[];\n if (currentRelationFilters.length > 0) {\n this.selectedRelationFilter = _.find(this.availableRelationFilters, { id: currentRelationFilters[0].id }) as QueryFilterResource;\n } else {\n this.selectedRelationFilter = this.availableRelationFilters[0];\n }\n this.onRelationFilterSelected();\n }\n\n public onRelationFilterSelected() {\n if (this.selectedRelationFilter) {\n this.removeRelationFiltersFromCurrentState();\n this.addFilterToCurrentState(this.selectedRelationFilter);\n }\n }\n\n private removeRelationFiltersFromCurrentState() {\n const filtersToRemove = this.relationFiltersOf(this.wpTableFilters.current) as QueryFilterInstanceResource[];\n this.wpTableFilters.remove(...filtersToRemove);\n }\n\n private relationFiltersOf(filters:QueryFilterResource[]|QueryFilterInstanceResource[]):QueryFilterResource[]|QueryFilterInstanceResource[] {\n return _.filter(filters, (filter:QueryFilterResource|QueryFilterInstanceResource) => _.includes(this.relationFilterIds, filter.id));\n }\n\n private addFilterToCurrentState(filter:QueryFilterResource):void {\n const newFilter = this.wpTableFilters.instantiate(filter);\n const operator:QueryOperatorResource = this.getOperatorForId(newFilter, '=');\n newFilter.operator = operator;\n newFilter.values = [{ href: '/api/v3/work_packages/{id}' }] as HalResource[];\n\n this.wpTableFilters.add(newFilter);\n }\n\n private getOperatorForId(filter:QueryFilterResource, id:string):QueryOperatorResource {\n return _.find(this.schemaCache.of(filter).availableOperators, { id }) as QueryOperatorResource;\n }\n\n public compareRelationFilters(f1:undefined|QueryFilterResource, f2:undefined|QueryFilterResource):boolean {\n return f1 && f2 ? f1.id === f2.id : f1 === f2;\n }\n}\n","\n
    {{text.title}}
    \n\n
    \n\n
    \n\n \n \n \n\n \n\n \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n\n","import {\n ApplicationRef,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n} from '@angular/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { WpTableConfigurationService } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.service';\nimport {\n ActiveTabInterface,\n TabComponent,\n TabInterface,\n TabPortalOutlet,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { OpModalLocalsToken } from 'core-app/shared/components/modal/modal.service';\nimport { OpModalComponent } from 'core-app/shared/components/modal/modal.component';\nimport { OpModalLocalsMap } from 'core-app/shared/components/modal/modal.types';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { StateService } from '@uirouter/angular';\n\nexport const WpTableConfigurationModalPrependToken = new InjectionToken>('WpTableConfigurationModalPrependComponent');\n\n@Component({\n templateUrl: './wp-table-configuration.modal.html',\n})\nexport class WpTableConfigurationModalComponent extends OpModalComponent implements OnInit, OnDestroy {\n public text = {\n title: this.I18n.t('js.work_packages.table_configuration.modal_title'),\n closePopup: this.I18n.t('js.close_popup_title'),\n\n columnsLabel: this.I18n.t('js.label_columns'),\n selectedColumns: this.I18n.t('js.description_selected_columns'),\n multiSelectLabel: this.I18n.t('js.work_packages.label_column_multiselect'),\n applyButton: this.I18n.t('js.modals.button_apply'),\n cancelButton: this.I18n.t('js.modals.button_cancel'),\n\n upsaleRelationColumns: this.I18n.t('js.modals.upsale_relation_columns'),\n upsaleRelationColumnsLink: this.I18n.t('js.modals.upsale_relation_columns_link'),\n };\n\n public onDataUpdated = new EventEmitter();\n\n public selectedColumnMap:{ [id:string]:boolean } = {};\n\n // Get the view child we'll use as the portal host\n @ViewChild('tabContentOutlet', { static: true }) tabContentOutlet:ElementRef;\n\n // And a reference to the actual portal host interface\n public tabPortalHost:TabPortalOutlet;\n\n // Try to load an optional provided configuration service, and fall back to the default one\n private wpTableConfigurationService:WpTableConfigurationService =\n this.injector.get(WpTableConfigurationService, new WpTableConfigurationService(this.I18n, this.$state));\n\n constructor(\n @Inject(OpModalLocalsToken) public locals:OpModalLocalsMap,\n @Optional() @Inject(WpTableConfigurationModalPrependToken) public prependModalComponent:ComponentType|null,\n readonly I18n:I18nService,\n readonly injector:Injector,\n readonly appRef:ApplicationRef,\n readonly componentFactoryResolver:ComponentFactoryResolver,\n readonly loadingIndicator:LoadingIndicatorService,\n readonly querySpace:IsolatedQuerySpace,\n readonly wpStatesInitialization:WorkPackageStatesInitializationService,\n readonly apiV3Service:ApiV3Service,\n readonly notificationService:WorkPackageNotificationService,\n readonly wpTableColumns:WorkPackageViewColumnsService,\n readonly cdRef:ChangeDetectorRef,\n readonly ConfigurationService:ConfigurationService,\n readonly elementRef:ElementRef,\n readonly $state:StateService,\n ) {\n super(locals, cdRef, elementRef);\n }\n\n ngOnInit() {\n this.$element = this.elementRef.nativeElement as HTMLElement;\n\n this.tabPortalHost = new TabPortalOutlet(\n this.wpTableConfigurationService.tabs,\n this.tabContentOutlet.nativeElement,\n this.componentFactoryResolver,\n this.appRef,\n this.injector,\n );\n\n this.loadingIndicator.indicator('modal').promise = this.loadForm()\n .then(() => {\n const initialTabName = this.locals.initialTab;\n const initialTab = this.availableTabs.find((el) => el.id === initialTabName);\n this.switchTo(initialTab || this.availableTabs[0]);\n this.cdRef.detectChanges();\n });\n }\n\n ngOnDestroy():void {\n this.onDataUpdated.complete();\n this.tabPortalHost.dispose();\n }\n\n public get availableTabs():TabInterface[] {\n return this.tabPortalHost.availableTabs;\n }\n\n public get currentTab():ActiveTabInterface|null {\n return this.tabPortalHost.currentTab;\n }\n\n public switchTo(tab:TabInterface):void {\n this.tabPortalHost.switchTo(tab);\n }\n\n public saveChanges():void {\n this.tabPortalHost.activeComponents.forEach((component:TabComponent) => {\n component.onSave();\n });\n\n this.onDataUpdated.emit();\n this.service.close();\n }\n\n /**\n * Called when the user attempts to close the modal window.\n * The service will close this modal if this method returns true\n * @returns {boolean}\n */\n public onClose():boolean {\n this.afterFocusOn.focus();\n return true;\n }\n\n protected get afterFocusOn():HTMLElement {\n return this.$element;\n }\n\n protected loadForm() {\n const query = this.querySpace.query.value!;\n return this\n .apiV3Service\n .queries\n .form\n .load(query)\n .toPromise()\n .then(([form, _]:[QueryFormResource, QueryResource]) => {\n this.wpStatesInitialization.updateStatesFromForm(query, form);\n\n return form;\n })\n .catch((error) => this.notificationService.handleRawError(error));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WpTableConfigurationDisplaySettingsTabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-tab.component';\nimport { TabInterface } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport { WpTableConfigurationColumnsTabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/columns-tab.component';\nimport { WpTableConfigurationFiltersTab } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/filters-tab.component';\nimport { WpTableConfigurationSortByTabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/sort-by-tab.component';\nimport { WpTableConfigurationTimelinesTabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/timelines-tab.component';\nimport { WpTableConfigurationHighlightingTabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/highlighting-tab.component';\nimport { OpBaselineComponent } from 'core-app/features/work-packages/components/wp-baseline/baseline/baseline.component';\nimport { StateService } from '@uirouter/angular';\n\n@Injectable()\nexport class WpTableConfigurationService {\n protected _tabs:TabInterface[] = [\n {\n id: 'columns',\n name: this.I18n.t('js.label_columns'),\n componentClass: WpTableConfigurationColumnsTabComponent,\n },\n {\n id: 'filters',\n name: this.I18n.t('js.work_packages.query.filters'),\n componentClass: WpTableConfigurationFiltersTab,\n },\n {\n id: 'sort-by',\n name: this.I18n.t('js.label_sort_by'),\n componentClass: WpTableConfigurationSortByTabComponent,\n },\n {\n id: 'baseline',\n name: this.I18n.t('js.baseline.toggle_title'),\n componentClass: OpBaselineComponent,\n },\n {\n id: 'display-settings',\n name: this.I18n.t('js.work_packages.table_configuration.display_settings'),\n componentClass: WpTableConfigurationDisplaySettingsTabComponent,\n },\n {\n id: 'highlighting',\n name: this.I18n.t('js.work_packages.table_configuration.highlighting'),\n componentClass: WpTableConfigurationHighlightingTabComponent,\n },\n ];\n\n constructor(\n readonly I18n:I18nService,\n readonly $state:StateService,\n ) {\n }\n\n public get tabs() {\n if (this.$state.current.name?.includes('work-packages') || this.$state.current.name?.includes('bim')) {\n return this._tabs;\n }\n\n return this._tabs.concat([\n {\n id: 'timelines',\n name: this.I18n.t('js.gantt_chart.label'),\n componentClass: WpTableConfigurationTimelinesTabComponent,\n },\n ]);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalLink } from 'core-app/features/hal/hal-link/hal-link';\nimport { Injectable } from '@angular/core';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { HookService } from 'core-app/features/plugins/hook-service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageViewHierarchyIdentationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy-indentation.service';\nimport { WorkPackageViewDisplayRepresentationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service';\n\nexport type WorkPackageAction = {\n text?:string;\n key:string;\n icon?:string;\n indexBy?:(actions:WorkPackageAction[]) => number,\n link?:string;\n href?:string;\n};\n\n@Injectable()\nexport class WorkPackageContextMenuHelperService {\n private BULK_ACTIONS = [\n {\n text: I18n.t('js.work_packages.bulk_actions.edit'),\n key: 'edit',\n link: 'update',\n href: this.PathHelper.workPackagesBulkEditPath(),\n },\n {\n text: I18n.t('js.work_packages.bulk_actions.move'),\n key: 'move',\n link: 'move',\n href: this.PathHelper.workPackagesBulkMovePath(),\n },\n {\n text: I18n.t('js.work_packages.bulk_actions.copy'),\n key: 'copy',\n link: 'copy',\n href: this.PathHelper.workPackagesBulkCopyPath(),\n },\n {\n text: I18n.t('js.work_packages.bulk_actions.delete'),\n key: 'delete',\n link: 'delete',\n href: this.PathHelper.workPackagesBulkDeletePath(),\n },\n ];\n\n constructor(private HookService:HookService,\n private UrlParamsHelper:UrlParamsHelperService,\n private wpViewRepresentation:WorkPackageViewDisplayRepresentationService,\n private wpViewTimeline:WorkPackageViewTimelineService,\n private wpViewIndent:WorkPackageViewHierarchyIdentationService,\n private PathHelper:PathHelperService) {\n }\n\n public getPermittedActionLinks(workPackage:WorkPackageResource, permittedActionConstants:any, allowSplitScreenActions:boolean):WorkPackageAction[] {\n const singularPermittedActions:any[] = [];\n\n let allowedActions = this.getAllowedActions(workPackage, permittedActionConstants);\n\n allowedActions = allowedActions.concat(this.getAllowedParentActions(workPackage));\n\n // remove some actions on Gantt\n if (this.wpViewTimeline.isVisible) {\n allowedActions = allowedActions.filter((el) => {\n const ganttNotAllowedActions = ['log_time', 'copy', 'copy_to_other_project', 'export-pdf', 'generate_pdf', 'export-atom', 'log_costs'];\n return !(ganttNotAllowedActions.includes(el.key));\n });\n }\n\n allowedActions = allowedActions.concat(this.getAllowedRelationActions(workPackage, allowSplitScreenActions));\n\n _.each(allowedActions, (allowedAction) => {\n singularPermittedActions.push({\n key: allowedAction.key,\n text: allowedAction.text,\n icon: allowedAction.icon,\n link: this.linkForAction(workPackage, allowedAction),\n });\n });\n\n return singularPermittedActions;\n }\n\n public linkForAction(workPackage:WorkPackageResource, action:WorkPackageAction):string|undefined {\n let link:string|undefined;\n switch (action.key) {\n case 'copy_link_to_clipboard':\n link = this.PathHelper.workPackageShortPath(workPackage.id as string);\n break;\n default:\n link = action.link ? (workPackage[action.link] as HalLink).href as string : undefined;\n }\n\n return link;\n }\n\n public getIntersectOfPermittedActions(workPackages:any) {\n const bulkPermittedActions:any = [];\n const possibleActions = this.BULK_ACTIONS.concat(this.HookService.call('workPackageBulkContextMenu'));\n const permittedActions = _.filter(possibleActions, (action:any) => _.every(workPackages, (workPackage:WorkPackageResource) => this.isActionAllowed(workPackage, action)));\n\n _.each(permittedActions, (permittedAction:any) => {\n bulkPermittedActions.push({\n key: permittedAction.key,\n text: permittedAction.text,\n icon: permittedAction.icon,\n link: this.getBulkActionLink(permittedAction, workPackages),\n });\n });\n\n return bulkPermittedActions;\n }\n\n public getBulkActionLink(action:any, workPackages:any) {\n const workPackageIdParams = {\n 'ids[]': workPackages.map((wp:any) => wp.id),\n };\n const serializedIdParams = this.UrlParamsHelper.buildQueryString(workPackageIdParams);\n\n const linkAndQueryString = action.href.split('?');\n const link = linkAndQueryString.shift();\n const queryParts = linkAndQueryString.concat(new Array(serializedIdParams));\n\n return `${link}?${queryParts.join('&')}`;\n }\n\n private isActionAllowed(workPackage:WorkPackageResource, action:WorkPackageAction):boolean {\n return _.filter(this.getAllowedActions(workPackage, [action]), (a) => a === action).length >= 1;\n }\n\n private getAllowedActions(workPackage:WorkPackageResource, actions:WorkPackageAction[]):WorkPackageAction[] {\n const allowedActions:WorkPackageAction[] = [];\n\n _.each(actions, (action) => {\n if (action.link && workPackage[action.link] !== undefined) {\n action.text = action.text || I18n.t(`js.button_${action.key}`);\n allowedActions.push(action);\n }\n });\n\n _.each(this.HookService.call('workPackageTableContextMenu'), (action:WorkPackageAction) => {\n if (workPackage[action.link as string] !== undefined) {\n const index = action.indexBy ? action.indexBy(allowedActions) : allowedActions.length;\n allowedActions.splice(index, 0, action);\n }\n });\n\n return allowedActions;\n }\n\n private getAllowedParentActions(workPackage:WorkPackageResource) {\n const actions:WorkPackageAction[] = [];\n\n // Do not add these actions unless we're in the table\n if (!this.wpViewRepresentation.isList) {\n return [];\n }\n\n // Can only outdent this item if it has ancestors\n if (this.wpViewIndent.canOutdent(workPackage)) {\n actions.push({\n key: 'hierarchy-outdent',\n icon: 'icon-paragraph-left',\n text: I18n.t('js.relation_buttons.hierarchy_outdent'),\n });\n }\n\n // Can only indent if not first and immediate predecessor is not the parent\n if (this.wpViewIndent.canIndent(workPackage)) {\n actions.push({\n key: 'hierarchy-indent',\n icon: 'icon-paragraph-right',\n text: I18n.t('js.relation_buttons.hierarchy_indent'),\n });\n }\n\n return actions;\n }\n\n private getAllowedRelationActions(workPackage:WorkPackageResource, allowSplitScreenActions:boolean) {\n const allowedActions:WorkPackageAction[] = [];\n\n if (!!workPackage.addRelation && this.wpViewTimeline.isVisible) {\n allowedActions.push({\n key: 'relation-precedes',\n text: I18n.t('js.relation_buttons.add_predecessor'),\n link: 'addRelation',\n });\n allowedActions.push({\n key: 'relation-follows',\n text: I18n.t('js.relation_buttons.add_follower'),\n link: 'addRelation',\n });\n }\n\n if (this.wpViewTimeline.isVisible) {\n allowedActions.push({\n key: 'relations',\n text: I18n.t('js.relation_buttons.show_relations'),\n link: 'relations',\n });\n }\n\n if (!!workPackage.addChild && allowSplitScreenActions) {\n allowedActions.push({\n key: 'relation-new-child',\n text: I18n.t('js.relation_buttons.add_new_child'),\n link: 'addChild',\n });\n }\n\n return allowedActions;\n }\n\n public getPermittedActions(workPackages:WorkPackageResource[], permittedActionConstants:any, allowSplitScreenActions:boolean):WorkPackageAction[] {\n if (workPackages.length === 1) {\n return this.getPermittedActionLinks(workPackages[0], permittedActionConstants, allowSplitScreenActions);\n }\n return this.getIntersectOfPermittedActions(workPackages);\n }\n}\n","import { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { Injector } from '@angular/core';\n\nexport class TableDragActionService {\n /**\n * Initialize an action service in the given isolated query space\n * @param querySpace The isolated query space for this table\n * @param injector The hierarchical injector for this table\n */\n constructor(readonly querySpace:IsolatedQuerySpace,\n readonly injector:Injector) {\n }\n\n /**\n * Determine whether the service applies for the given\n * query spaces.\n */\n public get applies():boolean {\n return true;\n }\n\n /**\n * Perform a post-order update\n */\n public onNewOrder(newOrder:string[]):void {\n }\n\n /**\n * Returns whether the given work package is movable\n */\n public canPickup(workPackage:WorkPackageResource):boolean {\n return true;\n }\n\n /**\n * Perform the respective action for the drop that just happened\n *\n * @param workPackage\n * @param target\n * @param source\n * @param sibling\n */\n public handleDrop(workPackage:WorkPackageResource, el:HTMLElement):Promise {\n return Promise.resolve(undefined);\n }\n\n /**\n * Manipulate the shadow element\n * @param shadowElement\n * @param backToDefault: Shall the modifications be made undone\n */\n public changeShadowElement(shadowElement:HTMLElement, backToDefault = false) {\n if (backToDefault) {\n shadowElement.classList.remove('-dragged');\n } else {\n shadowElement.classList.add('-dragged');\n }\n return true;\n }\n}\n","import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { TableDragActionService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-action.service';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { WorkPackageRelationsHierarchyService } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport {\n hierarchyGroupClass,\n hierarchyRootClass,\n} from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-hierarchy-helpers';\nimport { relationRowClass, isInsideCollapsedGroup } from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-row-helpers';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\nexport class HierarchyDragActionService extends TableDragActionService {\n @InjectField() private wpTableHierarchies:WorkPackageViewHierarchiesService;\n\n @InjectField() private relationHierarchyService:WorkPackageRelationsHierarchyService;\n\n @InjectField() private apiV3Service:ApiV3Service;\n\n public get applies() {\n return this.wpTableHierarchies.isEnabled;\n }\n\n /**\n * Returns whether the given work package is movable\n */\n public canPickup(workPackage:WorkPackageResource):boolean {\n return !!workPackage.changeParent;\n }\n\n public handleDrop(workPackage:WorkPackageResource, el:HTMLElement):Promise {\n return this.determineParent(el).then((parentId:string|null) => this.relationHierarchyService.changeParent(workPackage, parentId));\n }\n\n /**\n * Find an applicable parent element from the hierarchy information in the table.\n * @param el\n */\n private determineParent(el:Element):Promise {\n let previous = el.previousElementSibling;\n const next = el.nextElementSibling;\n let parent = null;\n\n if (previous !== null && this.droppedIntoGroup(el, previous, next)) {\n // If the previous element is a relation row,\n // skip it until we find the real previous sibling\n const isRelationRow = previous.className.indexOf(relationRowClass()) >= 0;\n\n if (isRelationRow) {\n const relationRoot = this.findRelationRowRoot(previous);\n if (relationRoot == null) {\n return Promise.resolve(null);\n }\n previous = relationRoot;\n }\n\n const previousWpId = (previous as HTMLElement).dataset.workPackageId!;\n\n if (this.isHiearchyRoot(previous, previousWpId)) {\n const droppedIntoCollapsedGroup = isInsideCollapsedGroup(next);\n\n if (droppedIntoCollapsedGroup) {\n return this.determineParent(previous);\n }\n // If the sibling is a hierarchy root, return that sibling as new parent.\n parent = previousWpId;\n } else {\n // If the sibling is no hierarchy root, return its parent.\n // Thus, the dropped element will get the same hierarchy level as the sibling\n parent = this.loadParentOfWP(previousWpId);\n }\n }\n\n return Promise.resolve(parent);\n }\n\n private findRelationRowRoot(el:Element):Element|null {\n let previous = el.previousElementSibling;\n while (previous !== null) {\n if (previous.className.indexOf(relationRowClass()) < 0) {\n return previous;\n }\n previous = previous.previousElementSibling;\n }\n\n return null;\n }\n\n private droppedIntoGroup(element:Element, previous:Element, next:Element | null):boolean {\n const inGroup = previous.className.indexOf(hierarchyGroupClass('')) >= 0;\n const isRoot = previous.className.indexOf(hierarchyRootClass('')) >= 0;\n let skipDroppedIntoGroup;\n\n if (inGroup || isRoot) {\n const elementGroups = Array.from(element.classList).filter((listClass) => listClass.includes('__hierarchy-group-')) || [];\n const previousGroups = Array.from(previous.classList).filter((listClass) => listClass.includes('__hierarchy-group-')) || [];\n const nextGroups = next && Array.from(next.classList).filter((listClass) => listClass.includes('__hierarchy-group-')) || [];\n const previousWpId = (previous as HTMLElement).dataset.workPackageId!;\n const isLastElementOfGroup = !nextGroups.some((nextGroup) => previousGroups.includes(nextGroup)) && !nextGroups.includes(hierarchyGroupClass(previousWpId));\n const elementAlreadyBelongsToGroup = elementGroups.some((elementGroup) => previousGroups.includes(elementGroup))\n || elementGroups.includes(hierarchyGroupClass(previousWpId));\n\n skipDroppedIntoGroup = isLastElementOfGroup && !elementAlreadyBelongsToGroup;\n }\n\n return !skipDroppedIntoGroup && inGroup || isRoot;\n }\n\n private isHiearchyRoot(previous:Element, previousWpId:string):boolean {\n return previous.classList.contains(hierarchyRootClass(previousWpId));\n }\n\n private loadParentOfWP(wpId:string):Promise {\n return this\n .apiV3Service\n .work_packages\n .id(wpId)\n .get()\n .toPromise()\n .then((wp:WorkPackageResource) => Promise.resolve(wp.parent?.id || null));\n }\n}\n","import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { TableDragActionService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-action.service';\nimport { WorkPackageViewGroupByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\n\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { rowGroupClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-classes.constants';\nimport { locatePredecessorBySelector } from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-row-helpers';\nimport { groupIdentifier } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-rows-helpers';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\n\nexport class GroupByDragActionService extends TableDragActionService {\n @InjectField() wpTableGroupBy:WorkPackageViewGroupByService;\n\n @InjectField() halEditing:HalResourceEditingService;\n\n @InjectField() halEvents:HalEventsService;\n\n @InjectField() halNotification:HalResourceNotificationService;\n\n @InjectField() schemaCache:SchemaCacheService;\n\n public get applies() {\n return this.wpTableGroupBy.isEnabled;\n }\n\n /**\n * Returns whether the given work package is movable\n */\n public canPickup(workPackage:WorkPackageResource):boolean {\n const attribute = this.groupedAttribute;\n return attribute !== null && this.schemaCache.of(workPackage).isAttributeEditable(attribute);\n }\n\n public handleDrop(workPackage:WorkPackageResource, el:HTMLElement):Promise {\n const changeset = this.halEditing.changeFor(workPackage);\n const groupedValue = this.getValueForGroup(el);\n\n changeset.projectedResource[this.groupedAttribute!] = groupedValue;\n return this.halEditing\n .save(changeset)\n .then((saved) => this.halEvents.push(saved.resource, { eventType: 'updated' }))\n .catch((e) => this.halNotification.handleRawError(e, workPackage));\n }\n\n private getValueForGroup(el:HTMLElement):unknown|null {\n const groupHeader = locatePredecessorBySelector(el, `.${rowGroupClassName}`)!;\n const match = this.groups.find((group) => groupIdentifier(group) === groupHeader.dataset.groupIdentifier);\n\n if (!match) {\n return null;\n }\n\n if (match._links && match._links.valueLink) {\n const links = match._links.valueLink;\n\n // Unwrap single links to properly use them\n return links.length === 1 ? links[0] : links;\n }\n return match.value;\n }\n\n /**\n * Get the attribute we're grouping by\n */\n private get groupedAttribute():string|null {\n const { current } = this.wpTableGroupBy;\n return current ? current.id : null;\n }\n\n /**\n * Returns the reference to the last table.groups state value\n */\n public get groups() {\n return this.querySpace.groups.value || [];\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { TableDragActionService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-action.service';\nimport { HierarchyDragActionService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/hierarchy-drag-action.service';\nimport { GroupByDragActionService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/group-by-drag-action.service';\n\ninterface ITableDragActionService {\n new(querySpace:IsolatedQuerySpace, injector:Injector):TableDragActionService;\n}\n\n@Injectable()\nexport class TableDragActionsRegistryService {\n private register:ITableDragActionService[] = [\n HierarchyDragActionService,\n GroupByDragActionService,\n ];\n\n public add(service:ITableDragActionService) {\n this.register.push(service);\n }\n\n public get(injector:Injector):TableDragActionService {\n const querySpace = injector.get(IsolatedQuerySpace);\n\n const match = this.register\n .map((cls) => new cls(querySpace, injector))\n .find((instance) => instance.applies);\n\n return match || new TableDragActionService(querySpace, injector);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++ Ng1FieldControlsWrapper,\n\nimport { Component, ElementRef, Input } from '@angular/core';\nimport {\n WorkPackageTableConfigurationObject,\n} from 'core-app/features/work-packages/components/wp-table/wp-table-configuration';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\n\n@Component({\n template: `\n \n \n `,\n})\nexport class EmbeddedTablesMacroComponent {\n @Input() public queryProps:object;\n\n public configuration:WorkPackageTableConfigurationObject = {\n actionsColumnEnabled: false,\n columnMenuEnabled: false,\n contextMenuEnabled: false,\n };\n\n constructor(\n readonly elementRef:ElementRef,\n ) {\n populateInputsFromDataset(this);\n }\n}\n","import {\n Component, ElementRef, Input,\n} from '@angular/core';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\nimport {\n WorkPackageIsolatedQuerySpaceDirective,\n} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive';\n\nexport const wpTableEntrySelector = 'wp-embedded-table-entry';\n\n@Component({\n selector: wpTableEntrySelector,\n hostDirectives: [WorkPackageIsolatedQuerySpaceDirective],\n template: `\n \n \n `,\n})\nexport class WorkPackageEmbeddedTableEntryComponent {\n @Input() public queryProps:unknown;\n\n @Input() public configuration:unknown;\n\n @Input() public initialLoadingIndicator = true;\n\n constructor(readonly elementRef:ElementRef) {\n populateInputsFromDataset(this);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n Input,\n SimpleChanges,\n} from '@angular/core';\nimport {\n WorkPackageTableConfiguration,\n WorkPackageTableConfigurationObject,\n} from 'core-app/features/work-packages/components/wp-table/wp-table-configuration';\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackagesViewBase } from 'core-app/features/work-packages/routing/wp-view-base/work-packages-view.base';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { WorkPackageStatesInitializationService } from '../../wp-list/wp-states-initialization.service';\nimport { firstValueFrom } from 'rxjs';\n\n@Directive()\nexport abstract class WorkPackageEmbeddedBaseComponent extends WorkPackagesViewBase implements AfterViewInit {\n @Input('configuration') protected providedConfiguration:WorkPackageTableConfigurationObject;\n\n @Input() public uniqueEmbeddedTableName = `embedded-table-${Date.now()}`;\n\n @Input() public initialLoadingIndicator = true;\n\n public renderTable = false;\n\n public showTablePagination = false;\n\n public configuration:WorkPackageTableConfiguration;\n\n public error:string|null = null;\n\n protected initialized = false;\n\n @InjectField() apiV3Service:ApiV3Service;\n\n @InjectField() querySpace:IsolatedQuerySpace;\n\n @InjectField() I18n!:I18nService;\n\n @InjectField() urlParamsHelper:UrlParamsHelperService;\n\n @InjectField() loadingIndicatorService:LoadingIndicatorService;\n\n @InjectField() wpStatesInitialization:WorkPackageStatesInitializationService;\n\n @InjectField() currentProject:CurrentProjectService;\n\n @InjectField() cdRef:ChangeDetectorRef;\n\n ngOnInit() {\n this.configuration = new WorkPackageTableConfiguration(this.providedConfiguration);\n // Set embedded status in configuration\n this.configuration.isEmbedded = true;\n this.initialized = true;\n\n super.ngOnInit();\n }\n\n ngAfterViewInit():void {\n // Load initially\n void this.loadQuery(true, false);\n }\n\n ngOnChanges(changes:SimpleChanges) {\n if (this.initialized && (changes.queryId || changes.queryProps)) {\n void this.loadQuery(this.initialLoadingIndicator, false);\n }\n }\n\n public get projectIdentifier() {\n if (this.configuration.projectContext) {\n return this.currentProject.identifier || undefined;\n }\n return this.configuration.projectIdentifier || undefined;\n }\n\n public buildQueryProps():object {\n const query = this.querySpace.query.value as QueryResource;\n this.wpStatesInitialization.applyToQuery(query);\n\n return this.urlParamsHelper.buildV3GetQueryFromQueryResource(query) as object;\n }\n\n public buildUrlParams() {\n const query = this.querySpace.query.value as QueryResource;\n this.wpStatesInitialization.applyToQuery(query);\n\n return this.urlParamsHelper.encodeQueryJsonParams(query);\n }\n\n protected setLoaded() {\n this.renderTable = this.configuration.tableVisible;\n this.cdRef.detectChanges();\n }\n\n public refresh(visible = true, firstPage = false):Promise {\n const query = this.querySpace.query.value as QueryResource;\n const pagination = this.wpTablePagination.paginationObject;\n\n if (firstPage) {\n pagination.offset = 1;\n }\n\n const params = this.urlParamsHelper.buildV3GetQueryFromQueryResource(query, pagination) as object;\n const promise = firstValueFrom(\n this\n .wpListService\n .loadQueryFromExisting(query, params, this.queryProjectScope),\n )\n .then((updated) => this.wpStatesInitialization.updateQuerySpace(updated, updated.results));\n\n if (visible) {\n this.loadingIndicator = promise;\n }\n return promise;\n }\n\n public get isInitialized() {\n return !!this.configuration;\n }\n\n public set loadingIndicator(promise:Promise) {\n if (this.configuration.tableVisible) {\n this.loadingIndicatorService\n .indicator(this.uniqueEmbeddedTableName)\n .promise = promise;\n }\n }\n\n public abstract loadQuery(visible:boolean, firstPage:boolean):Promise;\n\n protected get queryProjectScope() {\n if (!this.configuration.projectContext) {\n return undefined;\n }\n return this.projectIdentifier;\n }\n\n protected initializeStates(query:QueryResource) {\n this.wpStatesInitialization.clearStates();\n this.wpStatesInitialization.initializeFromQuery(query, query.results);\n this.wpStatesInitialization.updateQuerySpace(query, query.results);\n }\n}\n","
    \n\n \n \n \n\n \n\n \n \n\n \n
    \n \n \n
    \n\n \n \n
    \n\n
    \n \n
    \n
    \n","import { AfterViewInit, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport {\n WorkPackageViewTimelineService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport {\n WorkPackageViewPaginationService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.service';\nimport { OpTableActionFactory } from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport {\n OpTableActionsService,\n} from 'core-app/features/work-packages/components/wp-table/table-actions/table-actions.service';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport {\n WpTableConfigurationModalComponent,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.modal';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport {\n WorkPackageEmbeddedBaseComponent,\n} from 'core-app/features/work-packages/components/wp-table/embedded/wp-embedded-base.component';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { distinctUntilChanged, map, take, withLatestFrom } from 'rxjs/operators';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport {\n KeepTabService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { firstValueFrom } from 'rxjs';\nimport { QueryRequestParams } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\n\n@Component({\n selector: 'wp-embedded-table',\n templateUrl: './wp-embedded-table.html',\n})\nexport class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input('queryId') public queryId?:string;\n\n @Input('queryProps') public queryProps:Partial = {};\n\n @Input() public tableActions:OpTableActionFactory[] = [];\n\n @Input() public externalHeight = false;\n\n /** Inform about loading errors */\n @Output() public onError = new EventEmitter();\n\n /** Inform about loaded query */\n @Output() public onQueryLoaded = new EventEmitter();\n\n @InjectField() apiv3Service:ApiV3Service;\n\n @InjectField() opModalService:OpModalService;\n\n @InjectField() tableActionsService:OpTableActionsService;\n\n @InjectField() wpTableTimeline:WorkPackageViewTimelineService;\n\n @InjectField() wpTablePagination:WorkPackageViewPaginationService;\n\n @InjectField() keepTab:KeepTabService;\n\n // Cache the form promise\n private formPromise:Promise|undefined;\n\n // If the query was provided to use via the query space,\n // use it to cache first loading\n private loadedQuery:QueryResource|undefined;\n\n ngOnInit() {\n super.ngOnInit();\n this.loadedQuery = this.querySpace.query.value;\n }\n\n ngAfterViewInit():void {\n super.ngAfterViewInit();\n\n // Provision embedded table actions\n if (this.tableActions) {\n this.tableActionsService.setActions(...this.tableActions);\n }\n\n // Reload results on changes to pagination (Regression #29845)\n this.wpTablePagination\n .updates$()\n .pipe(\n map((pagination) => [pagination.page, pagination.perPage]),\n distinctUntilChanged(),\n this.untilDestroyed(),\n withLatestFrom(this.querySpace.query.values$()),\n ).subscribe(([_, query]) => {\n const pagination = this.wpTablePagination.paginationObject;\n const params = this.urlParamsHelper.buildV3GetQueryFromQueryResource(query, pagination);\n\n this.loadingIndicator = firstValueFrom(\n this\n .wpListService\n .loadQueryFromExisting(query, params, this.queryProjectScope),\n )\n .then((query) => this.initializeStates(query));\n });\n }\n\n public async openConfigurationModal(onUpdated:() => void):Promise {\n await this.querySpace.query.valuesPromise();\n\n this.opModalService\n .show(WpTableConfigurationModalComponent, this.injector)\n // Detach this component when the modal closes and pass along the query data\n .subscribe((modal) => modal.onDataUpdated.subscribe(onUpdated));\n }\n\n protected initializeStates(query:QueryResource) {\n super.initializeStates(query);\n\n this.querySpace\n .initialized\n .values$()\n .pipe(take(1))\n .subscribe(() => {\n this.showTablePagination = query.results.total > query.results.count;\n this.setLoaded();\n\n // Disable compact mode when timeline active\n if (this.wpTableTimeline.isVisible) {\n this.configuration = { ...this.configuration, compactTableStyle: false };\n }\n });\n }\n\n public loadQuery(visible = true, firstPage = false):Promise {\n\n if (this.loadedQuery) {\n const query = this.loadedQuery;\n this.loadedQuery = undefined;\n this.initializeStates(query);\n return Promise.resolve(query);\n }\n\n // HACK: Decrease loading time of queries when results are not needed.\n // We should allow the backend to disable results embedding instead.\n if (!this.configuration.tableVisible) {\n this.queryProps.pageSize = 1;\n // Also use a valid subset to ensure we get a valid response.\n this.queryProps.valid_subset = true;\n }\n\n // Set first page\n if (firstPage) {\n this.queryProps.page = 1;\n }\n\n this.error = null;\n const promise = this\n .apiv3Service\n .queries\n .find(\n this.queryProps,\n this.queryId,\n this.queryProjectScope,\n )\n .toPromise()\n .then((query:QueryResource) => {\n this.initializeStates(query);\n this.onQueryLoaded.emit(query);\n return query;\n })\n .catch((error) => {\n this.error = this.I18n.t(\n 'js.error.embedded_table_loading',\n { message: _.get(error, 'message', error) },\n );\n this.onError.emit(error);\n });\n\n if (visible) {\n this.loadingIndicator = promise;\n }\n\n return promise as Promise;\n }\n\n handleWorkPackageClicked(event:{ workPackageId:string; double:boolean }) {\n if (event.double) {\n this.$state.go(\n 'work-packages.show',\n { workPackageId: event.workPackageId },\n );\n }\n }\n\n openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) {\n const params = {\n workPackageId: event.workPackageId,\n focus: true,\n };\n\n if (event.requestedState === 'split') {\n this.keepTab.goCurrentDetailsState(params);\n } else {\n this.keepTab.goCurrentShowState(params);\n }\n }\n}\n","import {\n AfterViewInit, ChangeDetectorRef, Component, Inject, OnInit, ViewChild,\n} from '@angular/core';\nimport { WorkPackageEmbeddedTableComponent } from 'core-app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component';\nimport { WpTableConfigurationService } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.service';\nimport { RestrictedWpTableConfigurationService } from 'core-app/features/work-packages/components/wp-table/external-configuration/restricted-wp-table-configuration.service';\nimport { OpQueryConfigurationLocalsToken } from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.constants';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport {\n WorkPackageIsolatedQuerySpaceDirective,\n} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive';\n\nexport interface QueryConfigurationLocals {\n service:any;\n currentQuery:any;\n urlParams?:boolean;\n disabledTabs?:{ [key:string]:string };\n callback:(newQuery:any) => void;\n}\n\n@Component({\n templateUrl: './external-query-configuration.template.html',\n hostDirectives: [WorkPackageIsolatedQuerySpaceDirective],\n providers: [[{ provide: WpTableConfigurationService, useClass: RestrictedWpTableConfigurationService }]],\n})\nexport class ExternalQueryConfigurationComponent implements OnInit, AfterViewInit {\n @ViewChild('embeddedTableForConfiguration', { static: true }) private embeddedTable:WorkPackageEmbeddedTableComponent;\n\n queryProps:string|object;\n\n constructor(@Inject(OpQueryConfigurationLocalsToken) readonly locals:QueryConfigurationLocals,\n readonly urlParamsHelper:UrlParamsHelperService,\n readonly cdRef:ChangeDetectorRef) {\n }\n\n ngOnInit() {\n if (this.locals.urlParams) {\n this.queryProps = this.urlParamsHelper.buildV3GetQueryFromJsonParams(this.locals.currentQuery);\n } else {\n this.queryProps = this.locals.currentQuery as string;\n }\n }\n\n ngAfterViewInit() {\n // Open the configuration modal in an asynchronous step\n // to avoid nesting components in the view initialization.\n setTimeout(() => {\n this.embeddedTable.openConfigurationModal(() => {\n this.service.detach();\n if (this.locals.urlParams) {\n this.locals.callback(this.embeddedTable.buildUrlParams());\n } else {\n this.locals.callback(this.embeddedTable.buildQueryProps());\n }\n });\n this.cdRef.detectChanges();\n });\n }\n\n public get service():any {\n return this.locals.service;\n }\n}\n","\n\n","import { InjectionToken } from '@angular/core';\n\nexport const OpQueryConfigurationLocalsToken = new InjectionToken('OpQueryConfigurationLocalsToken');\n","import {\n ApplicationRef, ComponentFactoryResolver, Injectable, Injector,\n} from '@angular/core';\nimport { ComponentPortal, DomPortalOutlet, PortalInjector } from '@angular/cdk/portal';\nimport { TransitionService } from '@uirouter/core';\nimport { FocusHelperService } from 'core-app/shared/directives/focus/focus-helper';\nimport {\n ExternalQueryConfigurationComponent,\n QueryConfigurationLocals,\n} from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.component';\nimport { OpQueryConfigurationLocalsToken } from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.constants';\n\nexport type Class = { new(...args:any[]):any; };\n\n@Injectable()\nexport class ExternalQueryConfigurationService {\n // Hold a reference to the DOM node we're using as a host\n private _portalHostElement:HTMLElement;\n\n // And a reference to the actual portal host interface on top of the element\n private _bodyPortalHost:DomPortalOutlet;\n\n constructor(private componentFactoryResolver:ComponentFactoryResolver,\n readonly FocusHelper:FocusHelperService,\n private appRef:ApplicationRef,\n private $transitions:TransitionService,\n private injector:Injector) {\n }\n\n /**\n * Create a portal host element to contain the table configuration components.\n */\n private get bodyPortalHost() {\n if (!this._portalHostElement) {\n const hostElement = this._portalHostElement = document.createElement('div');\n hostElement.classList.add('op-external-query-configuration--container');\n document.body.appendChild(hostElement);\n\n this._bodyPortalHost = new DomPortalOutlet(\n hostElement,\n this.componentFactoryResolver,\n this.appRef,\n this.injector,\n );\n }\n\n return this._bodyPortalHost;\n }\n\n /**\n * Open a Modal reference and append it to the portal\n */\n public show(data:Partial) {\n this.detach();\n\n // Create a portal for the given component class and render it\n const portal = new ComponentPortal(\n this.externalQueryConfigurationComponent(),\n null,\n this.injectorFor(data),\n );\n this.bodyPortalHost.attach(portal);\n this._portalHostElement.style.display = 'block';\n }\n\n /**\n * Closes currently open modal window\n */\n public detach() {\n // Detach any component currently in the portal\n if (this.bodyPortalHost.hasAttached()) {\n this.bodyPortalHost.detach();\n this._portalHostElement.style.display = 'none';\n }\n }\n\n /**\n * Create an augmented injector that is equal to this service's injector + the additional data\n * passed into +show+.\n * This allows callers to pass data into the newly created modal.\n *\n */\n private injectorFor(data:any) {\n const injectorTokens = new WeakMap();\n // Pass the service because otherwise we're getting a cyclic dependency between the portal\n // host service and the bound portal\n data.service = this;\n\n injectorTokens.set(OpQueryConfigurationLocalsToken, data);\n\n return new PortalInjector(this.injector, injectorTokens);\n }\n\n externalQueryConfigurationComponent():Class {\n return ExternalQueryConfigurationComponent;\n }\n}\n","import {\n Component,\n} from '@angular/core';\nimport { WpTableConfigurationService } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.service';\nimport { RestrictedWpTableConfigurationService } from 'core-app/features/work-packages/components/wp-table/external-configuration/restricted-wp-table-configuration.service';\nimport { WpTableConfigurationRelationSelectorComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration-relation-selector';\nimport { WpTableConfigurationModalPrependToken } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.modal';\nimport { ExternalQueryConfigurationComponent } from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.component';\n\n@Component({\n templateUrl: './external-query-configuration.template.html',\n providers: [\n [\n { provide: WpTableConfigurationService, useClass: RestrictedWpTableConfigurationService },\n ],\n { provide: WpTableConfigurationModalPrependToken, useValue: WpTableConfigurationRelationSelectorComponent },\n ],\n})\nexport class ExternalRelationQueryConfigurationComponent extends ExternalQueryConfigurationComponent {\n}\n","import { Injectable } from '@angular/core';\nimport {\n Class,\n ExternalQueryConfigurationService,\n} from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.service';\nimport { ExternalRelationQueryConfigurationComponent } from 'core-app/features/work-packages/components/wp-table/external-configuration/external-relation-query-configuration.component';\n\n@Injectable()\nexport class ExternalRelationQueryConfigurationService extends ExternalQueryConfigurationService {\n externalQueryConfigurationComponent():Class {\n return ExternalRelationQueryConfigurationComponent;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TabInterface } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tab-portal-outlet';\nimport { WpTableConfigurationService } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.service';\nimport { QueryConfigurationLocals } from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.component';\nimport { OpQueryConfigurationLocalsToken } from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.constants';\nimport { StateService } from '@uirouter/angular';\n\n@Injectable()\nexport class RestrictedWpTableConfigurationService extends WpTableConfigurationService {\n constructor(\n @Inject(OpQueryConfigurationLocalsToken) readonly locals:QueryConfigurationLocals,\n readonly I18n:I18nService,\n readonly $state:StateService,\n ) {\n super(I18n, $state);\n }\n\n public get tabs():TabInterface[] {\n const disabledTabs = this.locals.disabledTabs || {};\n\n return super\n .tabs\n .map((el) => {\n const reason = disabledTabs[el.id];\n if (reason != null) {\n el.disable = reason;\n }\n\n return el;\n });\n }\n}\n","
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n QueryColumn,\n RelationQueryColumn,\n TypeRelationQueryColumn,\n} from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport {\n QUERY_SORT_BY_ASC,\n QUERY_SORT_BY_DESC,\n} from 'core-app/features/hal/resources/query-sort-by-resource';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { WorkPackageViewGroupByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\nimport { WorkPackageViewRelationColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { combineLatest } from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\n\n@Component({\n selector: 'sortHeader',\n templateUrl: './sort-header.directive.html',\n})\nexport class SortHeaderDirective extends UntilDestroyedMixin implements AfterViewInit {\n @Input() headerColumn:QueryColumn;\n\n @Input() locale:string;\n\n @Input() table:WorkPackageTable;\n\n sortable:boolean;\n\n directionClass:string;\n\n public text = {\n toggleHierarchy: this.I18n.t('js.work_packages.hierarchy.show'),\n openMenu: this.I18n.t('js.label_open_menu'),\n baselineIncompatible: this.I18n.t('js.work_packages.baseline.column_incompatible'),\n };\n\n isHierarchyColumn:boolean;\n\n columnType:'hierarchy'|'relation'|'sort';\n\n columnName:string;\n\n hierarchyIcon:string;\n\n isHierarchyDisabled:boolean;\n\n baselineIncompatible = false;\n\n private currentSortDirection:any;\n\n constructor(\n private wpTableHierarchies:WorkPackageViewHierarchiesService,\n private wpTableSortBy:WorkPackageViewSortByService,\n private wpTableGroupBy:WorkPackageViewGroupByService,\n private wpTableBaseline:WorkPackageViewBaselineService,\n private wpTableRelationColumns:WorkPackageViewRelationColumnsService,\n private elementRef:ElementRef,\n private cdRef:ChangeDetectorRef,\n private I18n:I18nService,\n ) {\n super();\n }\n\n ngAfterViewInit() {\n setTimeout(() => this.initialize());\n }\n\n private initialize():void {\n combineLatest([\n this.wpTableSortBy.onReadyWithAvailable(),\n this.wpTableSortBy.live$(),\n ])\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => {\n const latestSortElement = this.wpTableSortBy.current[0];\n\n if (!latestSortElement || this.headerColumn.href !== latestSortElement.column.href) {\n this.currentSortDirection = null;\n } else {\n this.currentSortDirection = latestSortElement.direction;\n }\n this.setActiveColumnClass();\n\n this.sortable = this.wpTableSortBy.isSortable(this.headerColumn);\n\n this.directionClass = this.getDirectionClass();\n\n this.cdRef.detectChanges();\n });\n\n // Place the hierarchy icon left to the subject column\n this.isHierarchyColumn = this.headerColumn.id === 'subject';\n\n if (this.headerColumn.id === 'sortHandle') {\n this.columnType = 'sort';\n }\n if (this.isHierarchyColumn) {\n this.columnType = 'hierarchy';\n } else if (this.wpTableRelationColumns.relationColumnType(this.headerColumn) === 'toType') {\n this.columnType = 'relation';\n this.columnName = (this.headerColumn as TypeRelationQueryColumn).type.name;\n } else if (this.wpTableRelationColumns.relationColumnType(this.headerColumn) === 'ofType') {\n this.columnType = 'relation';\n this.columnName = I18n.t(`js.relation_labels.${(this.headerColumn as RelationQueryColumn).relationType}`);\n }\n\n if (this.isHierarchyColumn) {\n this.hierarchyIcon = 'icon-hierarchy';\n this.isHierarchyDisabled = this.wpTableGroupBy.isEnabled;\n\n // Disable hierarchy mode when group by is active\n this.wpTableGroupBy\n .live$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.isHierarchyDisabled = this.wpTableGroupBy.isEnabled;\n this.cdRef.detectChanges();\n });\n\n // Update hierarchy icon when updated elsewhere\n this.wpTableHierarchies\n .live$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.setHierarchyIcon();\n this.cdRef.detectChanges();\n });\n\n // Set initial icon\n this.setHierarchyIcon();\n }\n\n this\n .wpTableBaseline\n .live$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.baselineIncompatible = this.wpTableBaseline.isActive() && this.wpTableBaseline.isIncompatibleColumn(this.headerColumn.id);\n });\n\n this.cdRef.detectChanges();\n }\n\n public get displayDropdownIcon() {\n return this.table && this.table.configuration.columnMenuEnabled;\n }\n\n public get displayHierarchyIcon() {\n return this.table && this.table.configuration.hierarchyToggleEnabled;\n }\n\n toggleHierarchy(evt:JQuery.TriggeredEvent) {\n if (this.wpTableHierarchies.toggleState()) {\n this.wpTableGroupBy.disable();\n }\n\n this.setHierarchyIcon();\n\n evt.stopPropagation();\n return false;\n }\n\n setHierarchyIcon() {\n if (this.wpTableHierarchies.isEnabled) {\n this.text.toggleHierarchy = I18n.t('js.work_packages.hierarchy.hide');\n this.hierarchyIcon = 'icon-hierarchy';\n } else {\n this.text.toggleHierarchy = I18n.t('js.work_packages.hierarchy.show');\n this.hierarchyIcon = 'icon-no-hierarchy';\n }\n }\n\n private getDirectionClass():string {\n if (!this.currentSortDirection) {\n return '';\n }\n\n switch (this.currentSortDirection.href) {\n case QUERY_SORT_BY_ASC:\n return 'asc';\n case QUERY_SORT_BY_DESC:\n return 'desc';\n default:\n return '';\n }\n }\n\n setActiveColumnClass() {\n if (this.currentSortDirection) {\n this.elementRef.nativeElement.classList.add('active-column');\n } else {\n this.elementRef.nativeElement.classList.remove('active-column');\n }\n }\n}\n","import { Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport type OpTableActionFactory = (i:Injector, wp:WorkPackageResource) => OpTableAction;\nexport const contextMenuTdClassName = 'wp-table--context-menu-td';\nexport const contextMenuSpanClassName = 'wp-table--context-menu-span';\nexport const contextMenuLinkClassName = 'wp-table-context-menu-link';\nexport const contextColumnIcon = 'wp-table-context-menu-icon';\n\nexport abstract class OpTableAction {\n @InjectField() I18n!:I18nService;\n\n constructor(readonly injector:Injector,\n readonly workPackage:WorkPackageResource) {\n }\n\n /** Identifier to uniquely identify the action */\n public abstract readonly identifier:string;\n\n /** The actual action factory to return the action element, if it can be rendered */\n public abstract buildElement():HTMLElement|null;\n}\n","import { contextColumnIcon, OpTableAction } from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport { opIconElement } from 'core-app/shared/helpers/op-icon-builder';\n\nimport { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service';\nimport { UiStateLinkBuilder } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder';\nimport { StateService } from '@uirouter/core';\n\nexport const detailsLinkClassName = 'wp-table--details-link';\n\nexport class OpDetailsTableAction extends OpTableAction {\n public readonly identifier = 'open-details-action';\n\n private uiStatebuilder = new UiStateLinkBuilder(this.injector.get(StateService), this.injector.get(KeepTabService));\n\n private text = {\n button: this.I18n.t('js.button_open_details'),\n };\n\n public buildElement() {\n // Append details button\n const detailsLink = this.uiStatebuilder.linkToDetails(\n this.workPackage.id!,\n this.text.button,\n '',\n );\n\n detailsLink.classList.add(detailsLinkClassName, contextColumnIcon, 'hidden-for-mobile');\n detailsLink.appendChild(opIconElement('icon', 'icon-info2'));\n\n return detailsLink;\n }\n}\n","import {\n contextColumnIcon,\n contextMenuLinkClassName,\n OpTableAction,\n} from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport { opIconElement } from 'core-app/shared/helpers/op-icon-builder';\n\nexport class OpContextMenuTableAction extends OpTableAction {\n public readonly identifier = 'open-context-menu-action';\n\n private text = {\n linkTitle: this.I18n.t('js.label_open_context_menu'),\n };\n\n public buildElement() {\n const contextMenu = document.createElement('a');\n contextMenu.href = '#';\n contextMenu.classList.add(contextMenuLinkClassName, contextColumnIcon);\n contextMenu.title = this.text.linkTitle;\n contextMenu.appendChild(opIconElement('icon', 'icon-show-more-horizontal'));\n\n return contextMenu;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n OpTableActionFactory,\n} from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport { OpDetailsTableAction } from 'core-app/features/work-packages/components/wp-table/table-actions/actions/details-table-action';\nimport { OpContextMenuTableAction } from 'core-app/features/work-packages/components/wp-table/table-actions/actions/context-menu-table-action';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\n\n@Injectable()\nexport class OpTableActionsService {\n constructor(private readonly injector:Injector) {\n }\n\n /**\n * Actions currently registered\n */\n private actions:OpTableActionFactory[] = [\n (injector, workPackage) => new OpDetailsTableAction(injector, workPackage),\n (injector, workPackage) => new OpContextMenuTableAction(injector, workPackage),\n ];\n\n /**\n * Replace the actions with a different set\n */\n public setActions(...actions:OpTableActionFactory[]) {\n this.actions = actions;\n }\n\n /**\n * Render actions for the given work package.\n * @param {WorkPackageResource} workPackage\n */\n public render(workPackage:WorkPackageResource):HTMLElement[] {\n const built = this.actions.map((factory) => factory(this.injector, workPackage).buildElement());\n return _.compact(built);\n }\n}\n","
    \n \n\n
    \n
      \n
    • \n\n
    • \n\n \n \n \n\n {{ perPageOption }}\n
    • \n
    \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { combineLatest } from 'rxjs';\n\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n WorkPackageViewPaginationService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.service';\nimport {\n WorkPackageViewPagination,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-pagination';\nimport {\n WorkPackageViewSortByService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { TablePaginationComponent } from 'core-app/shared/components/table-pagination/table-pagination.component';\nimport { PaginationService } from 'core-app/shared/components/table-pagination/pagination-service';\n\n@Component({\n templateUrl: '../../../../../shared/components/table-pagination/table-pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'wp-table-pagination',\n})\nexport class WorkPackageTablePaginationComponent extends TablePaginationComponent implements OnInit, OnDestroy {\n constructor(\n protected paginationService:PaginationService,\n protected cdRef:ChangeDetectorRef,\n protected wpTablePagination:WorkPackageViewPaginationService,\n readonly querySpace:IsolatedQuerySpace,\n readonly wpTableSortBy:WorkPackageViewSortByService,\n readonly I18n:I18nService,\n ) {\n super(paginationService, cdRef, I18n);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.wpTablePagination\n .live$()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wpPagination:WorkPackageViewPagination) => {\n this.pagination = wpPagination.current;\n this.update();\n });\n\n // hide/show pagination options depending on the sort mode\n combineLatest([\n this.querySpace.query.values$(),\n this.wpTableSortBy.live$(),\n ]).pipe(\n this.untilDestroyed(),\n ).subscribe(([query, sort]) => {\n this.showPerPage = this.showPageSelections = !this.isManualSortingMode;\n this.infoText = this.paginationInfoText(query.results);\n\n this.update();\n });\n }\n\n public selectPerPage(perPage:number) {\n this.paginationService.setPerPage(perPage);\n this.wpTablePagination.updateFromObject({ page: 1, perPage });\n }\n\n public showPage(pageNumber:number) {\n this.wpTablePagination.updateFromObject({ page: pageNumber });\n }\n\n private get isManualSortingMode() {\n return this.wpTableSortBy.isManualSortingMode;\n }\n\n public paginationInfoText(work_packages:WorkPackageCollectionResource) {\n if (this.isManualSortingMode && (work_packages.count < work_packages.total)) {\n return I18n.t('js.work_packages.limited_results',\n { count: work_packages.count });\n }\n return undefined;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport * as moment from 'moment';\nimport { InputState, MultiInputState } from '@openproject/reactivestates';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { TimelineZoomLevel } from 'core-app/features/hal/resources/query-resource';\nimport Moment = moment.Moment;\n\nexport const timelineElementCssClass = 'timeline-element';\nexport const timelineBackgroundElementClass = 'timeline-element--bg';\nexport const timelineGridElementCssClass = 'wp-timeline--grid-element';\nexport const timelineMarkerSelectionStartClass = 'selection-start';\nexport const timelineHeaderCSSClass = 'wp-timeline--header-element';\nexport const timelineHeaderSelector = 'wp-timeline-header';\n\n/**\n *\n */\nexport class TimelineViewParametersSettings {\n zoomLevel:TimelineZoomLevel = 'days';\n visibleBeforeTodayInZoomLevel:number = 2;\n}\n\n// Can't properly map the enum to a string array\nexport const zoomLevelOrder:TimelineZoomLevel[] = [\n 'days', 'weeks', 'months', 'quarters', 'years',\n];\n\nexport function getPixelPerDayForZoomLevel(zoomLevel:TimelineZoomLevel) {\n switch (zoomLevel) {\n case 'days':\n return 30;\n case 'weeks':\n return 15;\n case 'months':\n return 6;\n case 'quarters':\n return 2;\n case 'years':\n return 0.5;\n }\n throw new Error(`invalid zoom level: ${zoomLevel}`);\n}\n\n/**\n * Number of pixels to display before the earliest workpackage in view\n */\nexport const requiredPixelMarginLeft = 120;\n\n/**\n *\n */\nexport class TimelineViewParameters {\n readonly now:Moment = moment({ hour: 0, minute: 0, seconds: 0 });\n\n dateDisplayStart:Moment = moment({ hour: 0, minute: 0, seconds: 0 });\n\n dateDisplayEnd:Moment = this.dateDisplayStart.clone().add(1, 'day');\n\n settings:TimelineViewParametersSettings = new TimelineViewParametersSettings();\n\n activeSelectionMode:null | ((wp:WorkPackageResource) => any) = null;\n\n selectionModeStart:null | string = null;\n\n /**\n * The visible viewport (at the time the view parameters were calculated last!!!)\n */\n visibleViewportAtCalculationTime:[Moment, Moment];\n\n get pixelPerDay():number {\n return getPixelPerDayForZoomLevel(this.settings.zoomLevel);\n }\n\n get maxWidthInPx() {\n return this.maxSteps * this.pixelPerDay;\n }\n\n get maxSteps():number {\n return this.dateDisplayEnd.diff(this.dateDisplayStart, 'days');\n }\n\n get dayCountForMarginLeft():number {\n return Math.ceil(requiredPixelMarginLeft / this.pixelPerDay);\n }\n}\n\n/**\n *\n */\nexport interface RenderInfo {\n viewParams:TimelineViewParameters;\n workPackage:WorkPackageResource;\n change:WorkPackageChangeset;\n isDuplicatedCell?:boolean;\n withAlternativeLabels?:boolean;\n}\n\n/**\n *\n */\nexport function calculatePositionValueForDayCountingPx(viewParams:TimelineViewParameters, days:number):number {\n const daysInPx = days * viewParams.pixelPerDay;\n return daysInPx;\n}\n\n/**\n *\n */\nexport function calculatePositionValueForDayCount(viewParams:TimelineViewParameters, days:number):string {\n const value = calculatePositionValueForDayCountingPx(viewParams, days);\n return `${value}px`;\n}\n\nexport function getTimeSlicesForHeader(vp:TimelineViewParameters,\n unit:moment.unitOfTime.DurationConstructor,\n startView:Moment,\n endView:Moment) {\n const inViewport:[Moment, Moment][] = [];\n const rest:[Moment, Moment][] = [];\n\n const time = startView.clone().startOf(unit);\n const end = endView.clone().endOf(unit);\n\n while (time.isBefore(end)) {\n const sliceStart = moment.max(time, startView).clone();\n const sliceEnd = moment.min(time.clone().endOf(unit), endView).clone();\n time.add(1, unit);\n\n const viewport = vp.visibleViewportAtCalculationTime;\n if ((sliceStart.isSameOrAfter(viewport[0]) && sliceStart.isSameOrBefore(viewport[1]))\n || (sliceEnd.isSameOrAfter(viewport[0]) && sliceEnd.isSameOrBefore(viewport[1]))) {\n inViewport.push([sliceStart, sliceEnd]);\n } else {\n rest.push([sliceStart, sliceEnd]);\n }\n }\n\n const firstRest:[Moment, Moment] = rest.splice(0, 1)[0];\n const lastRest:[Moment, Moment] = rest.pop()!;\n const inViewportAndBoundaries = _.concat(\n [firstRest].filter((e) => !_.isNil(e)),\n inViewport,\n [lastRest].filter((e) => !_.isNil(e)),\n );\n\n return {\n inViewportAndBoundaries,\n rest,\n };\n}\n\nexport function calculateDaySpan(visibleWorkPackages:RenderedWorkPackage[],\n loadedWorkPackages:MultiInputState,\n viewParameters:TimelineViewParameters):number {\n let earliest:Moment = moment();\n let latest:Moment = moment();\n\n visibleWorkPackages.forEach((renderedRow) => {\n const wpId = renderedRow.workPackageId;\n\n if (!wpId) {\n return;\n }\n const workPackageState:InputState = loadedWorkPackages.get(wpId);\n const workPackage:WorkPackageResource|undefined = workPackageState.value;\n\n if (!workPackage) {\n return;\n }\n\n const start = workPackage.startDate ? workPackage.startDate : workPackage.date;\n if (start && moment(start).isBefore(earliest)) {\n earliest = moment(start);\n }\n\n const due = workPackage.dueDate ? workPackage.dueDate : workPackage.date;\n if (due && moment(due).isAfter(latest)) {\n latest = moment(due);\n }\n });\n\n const daysSpan = latest.diff(earliest, 'days') + 1;\n return daysSpan;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nexport type WorkPackageTableConfigurationObject = Partial<{ [field in keyof WorkPackageTableConfiguration]:string|boolean }>;\n\nexport class WorkPackageTableConfiguration {\n /** Render the table results, set to false when only wanting the table initialization */\n public tableVisible = true;\n\n /** Render the table as compact style */\n public compactTableStyle = false;\n\n /** Render the action column (last column) with the actions defined in the TableActionsService */\n public actionsColumnEnabled = true;\n\n /** Whether the work package context menu is enabled */\n public contextMenuEnabled = true;\n\n /** Whether the column dropdown menu is enabled */\n public columnMenuEnabled = true;\n\n /** Whether the query should be resolved using the current project identifier */\n public projectContext = true;\n\n /** Whether the embedded table should live within a specific project context (e.g., given by its parent) */\n public projectIdentifier:string|null = null;\n\n /** Whether inline create is enabled */\n public inlineCreateEnabled = true;\n\n /** Whether the hierarchy toggler item in the subject column is enabled */\n public hierarchyToggleEnabled = true;\n\n /** Whether this table supports drag and drop */\n public dragAndDropEnabled = false;\n\n /** Whether this table is in an embedded context */\n public isEmbedded = false;\n\n /** Whether the work packages shall be shown in cards instead of a table */\n public isCardView = false;\n\n /** Whether this table provides a UI for filters */\n public withFilters = false;\n\n /** Whether the filters are expanded */\n public filtersExpanded = false;\n\n /** Whether the button to open filters shall be visible */\n public showFilterButton = false;\n\n /** Whether this table provides a UI for filters */\n public filterButtonText:string = I18n.t('js.button_filter');\n\n constructor(providedConfig:WorkPackageTableConfigurationObject) {\n _.each(providedConfig, (value, k) => {\n const key = (k as keyof WorkPackageTableConfiguration);\n (this as any)[key] = value;\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nexport const selectorTableSide = '.work-packages-tabletimeline--table-side';\nexport const selectorTimelineSide = '.work-packages-tabletimeline--timeline-side';\nconst jQueryScrollSyncEventNamespace = '.scroll-sync';\nconst scrollStep = 15;\n\nfunction getXandYScrollDeltas(ev:WheelEvent):[number, number] {\n let x = ev.deltaX;\n let y = ev.deltaY;\n\n if (ev.shiftKey) {\n x = y;\n y = 0;\n }\n\n return [x, y];\n}\n\nfunction getPlattformAgnosticScrollAmount(originalValue:number) {\n if (originalValue === 0) {\n return originalValue;\n }\n\n let delta = scrollStep;\n\n // Browser-specific logic\n // TODO\n\n if (originalValue < 0) {\n delta *= -1;\n }\n return delta;\n}\n\nfunction syncWheelEvent(jev:JQuery.TriggeredEvent, elementTable:JQuery, elementTimeline:JQuery) {\n const scrollTarget = jev.target;\n const ev:WheelEvent = jev.originalEvent as any;\n let [deltaX, deltaY] = getXandYScrollDeltas(ev);\n\n if (deltaY === 0) {\n return;\n }\n\n deltaX = getPlattformAgnosticScrollAmount(deltaX); // apply only in target div\n deltaY = getPlattformAgnosticScrollAmount(deltaY); // apply in both divs\n\n window.requestAnimationFrame(() => {\n elementTable[0].scrollTop = elementTable[0].scrollTop + deltaY;\n elementTimeline[0].scrollTop = elementTable[0].scrollTop + deltaY;\n\n scrollTarget.scrollLeft += deltaX;\n });\n}\n\n/**\n * Activate or deactivate the scroll-sync between the table and timeline view.\n *\n * @param $element true if the timeline is visible, false otherwise.\n */\nexport function createScrollSync($element:JQuery) {\n const elTable = jQuery($element).find(selectorTableSide);\n const elTimeline = jQuery($element).find(selectorTimelineSide);\n\n return (timelineVisible:boolean) => {\n // state vars\n let syncedLeft = false;\n let syncedRight = false;\n\n if (timelineVisible) {\n // setup event listener for table\n elTable.on(`wheel${jQueryScrollSyncEventNamespace}`, (jev:JQuery.TriggeredEvent) => {\n syncWheelEvent(jev, elTable, elTimeline);\n });\n elTable.on(`scroll${jQueryScrollSyncEventNamespace}`, (ev:JQuery.TriggeredEvent) => {\n syncedLeft = true;\n if (!syncedRight) {\n elTimeline[0].scrollTop = ev.target.scrollTop;\n }\n if (syncedLeft && syncedRight) {\n syncedLeft = false;\n syncedRight = false;\n }\n });\n\n // setup event listener for timeline\n elTimeline.on(`wheel${jQueryScrollSyncEventNamespace}`, (jev:JQuery.TriggeredEvent) => {\n syncWheelEvent(jev, elTable, elTimeline);\n });\n elTimeline.on(`scroll${jQueryScrollSyncEventNamespace}`, (ev:JQuery.TriggeredEvent) => {\n syncedRight = true;\n if (!syncedLeft) {\n elTable[0].scrollTop = ev.target.scrollTop;\n }\n if (syncedLeft && syncedRight) {\n syncedLeft = false;\n syncedRight = false;\n }\n });\n } else {\n elTable.off(jQueryScrollSyncEventNamespace);\n }\n };\n}\n","import { Injector } from '@angular/core';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageViewHighlightingService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageTable } from '../../wp-fast-table';\n\nexport class HighlightingTransformer {\n @InjectField() public wpTableHighlighting:WorkPackageViewHighlightingService;\n\n @InjectField() public querySpace:IsolatedQuerySpace;\n\n constructor(public readonly injector:Injector,\n table:WorkPackageTable) {\n this.wpTableHighlighting\n .updates$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n distinctUntilChanged(),\n )\n .subscribe(() => table.redrawTable());\n }\n}\n","import { Injector } from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { TableDragActionsRegistryService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-actions-registry.service';\nimport { TableDragActionService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-action.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { tableRowClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/rows/single-row-builder';\nimport { DragAndDropService } from 'core-app/shared/helpers/drag-and-drop/drag-and-drop.service';\nimport { reinsert } from 'core-app/shared/helpers/drag-and-drop/drag-and-drop.helpers';\nimport { WorkPackageViewOrderService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service';\nimport { BrowserDetector } from 'core-app/core/browser/browser-detector.service';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { isInsideCollapsedGroup } from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-row-helpers';\nimport { collapsedGroupClass } from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-hierarchy-helpers';\nimport { WorkPackageTable } from '../../wp-fast-table';\nimport { firstValueFrom } from 'rxjs';\n\nexport class DragAndDropTransformer {\n @InjectField() private readonly states:States;\n\n @InjectField() private readonly querySpace:IsolatedQuerySpace;\n\n @InjectField() private readonly inlineCreateService:WorkPackageInlineCreateService;\n\n @InjectField() private readonly halNotification:HalResourceNotificationService;\n\n @InjectField() private readonly wpTableSortBy:WorkPackageViewSortByService;\n\n @InjectField() private readonly wpTableOrder:WorkPackageViewOrderService;\n\n @InjectField() private readonly browserDetector:BrowserDetector;\n\n @InjectField() private readonly apiV3Service:ApiV3Service;\n\n @InjectField() private readonly wpListService:WorkPackagesListService;\n\n @InjectField() private readonly dragActionRegistry:TableDragActionsRegistryService;\n\n @InjectField(DragAndDropService, null) private readonly dragService:DragAndDropService|null;\n\n constructor(public readonly injector:Injector,\n public table:WorkPackageTable) {\n // The DragService may not have been provided\n // in which case we do not provide drag and drop\n if (this.dragService === null) {\n return;\n }\n\n this.inlineCreateService.newInlineWorkPackageCreated\n .pipe(takeUntil(this.querySpace.stopAllSubscriptions))\n .subscribe(async (wpId) => {\n const newOrder = await this.wpTableOrder.add(this.currentOrder, wpId);\n this.updateRenderedOrder(newOrder);\n });\n\n this.querySpace.stopAllSubscriptions\n .pipe(take(1))\n .subscribe(() => {\n this.dragService!.remove(this.table.tbody);\n });\n\n this.dragService.register({\n dragContainer: this.table.tbody,\n scrollContainers: [this.table.scrollContainer],\n accepts: () => true,\n moves: (el:any, source:any, handle:HTMLElement) => {\n if (!handle.classList.contains('wp-table--drag-and-drop-handle')) {\n return false;\n }\n\n const wpId:string = el.dataset.workPackageId!;\n const workPackage = this.states.workPackages.get(wpId).value;\n return !!workPackage && this.actionService.canPickup(workPackage);\n },\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onMoved: async (el:HTMLElement, target:HTMLElement, source:HTMLElement, sibling:HTMLElement|null) => {\n const wpId:string = el.dataset.workPackageId!;\n let rowIndex;\n\n try {\n const workPackage = await firstValueFrom(this.apiV3Service.work_packages.id(wpId).get());\n\n if (isInsideCollapsedGroup(sibling)) {\n const collapsedGroupCSSClass = Array.from(sibling!.classList).find((listClass) => listClass.includes(collapsedGroupClass()))!;\n const collapsedGroupId = collapsedGroupCSSClass.replace(collapsedGroupClass(), '');\n const collapsedGroupElements = source.getElementsByClassName(collapsedGroupClass(collapsedGroupId));\n const collapsedGroupLastChild = collapsedGroupElements[collapsedGroupElements.length - 1];\n rowIndex = this.findRowIndex(collapsedGroupLastChild as HTMLElement);\n } else {\n rowIndex = this.findRowIndex(el);\n }\n\n const newOrder = await this.wpTableOrder.move(this.currentOrder, wpId, rowIndex);\n\n await this.actionService.handleDrop(workPackage, el);\n this.updateRenderedOrder(newOrder);\n this.actionService.onNewOrder(newOrder);\n\n // Save the query when switching to manual\n const query = this.querySpace.query.value;\n if (query && this.wpTableSortBy.switchToManualSorting(query)) {\n await this.wpListService.createOrSave(query);\n }\n } catch (e) {\n this.halNotification.handleRawError(e);\n\n // Restore original element's styles\n this.actionService.changeShadowElement(el, true);\n // Restore element in from container\n reinsert(el, el.dataset.sourceIndex || -1, source);\n }\n },\n onRemoved: (el:HTMLElement) => {\n const wpId:string = el.dataset.workPackageId!;\n const newOrder = this.wpTableOrder.remove(this.currentOrder, wpId);\n this.updateRenderedOrder(newOrder);\n },\n onAdded: async (el:HTMLElement) => {\n const wpId:string = el.dataset.workPackageId!;\n const workPackage = await firstValueFrom(this.apiV3Service.work_packages.id(wpId).get());\n const rowIndex = this.findRowIndex(el);\n\n return this.actionService\n .handleDrop(workPackage, el)\n .then(async () => {\n const newOrder = await this.wpTableOrder.add(this.currentOrder, wpId, rowIndex);\n this.updateRenderedOrder(newOrder);\n this.actionService.onNewOrder(newOrder);\n\n return true;\n })\n .catch(() => false);\n },\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onCloned: async (clone:HTMLElement, original:HTMLElement) => {\n // Replace clone with one TD of the subject\n const wpId:string = original.dataset.workPackageId!;\n const workPackage = await firstValueFrom(this.apiV3Service.work_packages.id(wpId).get());\n\n const colspan = clone.children.length;\n const td = document.createElement('td');\n td.textContent = workPackage.subjectWithId();\n td.colSpan = colspan;\n td.classList.add('wp-table--cell-td', 'subject');\n\n clone.style.maxWidth = '500px';\n clone.innerHTML = td.outerHTML;\n },\n onShadowInserted: (el:HTMLElement) => {\n if (!this.browserDetector.isEdge) {\n this.actionService.changeShadowElement(el);\n }\n },\n onCancel: (el:HTMLElement) => {\n if (!this.browserDetector.isEdge) {\n this.actionService.changeShadowElement(el, true);\n }\n },\n });\n }\n\n /**\n * Update current rendered order\n */\n private async updateRenderedOrder(order:string[]) {\n order = _.uniq(order);\n\n const mappedOrder = await Promise.all(\n order.map(\n (wpId) => firstValueFrom(this.apiV3Service.work_packages.id(wpId).get()),\n ),\n );\n\n /** Re-render the table */\n this.table.initialSetup(mappedOrder);\n }\n\n protected get actionService():TableDragActionService {\n return this.dragActionRegistry.get(this.injector);\n }\n\n protected get currentOrder():string[] {\n return this\n .currentRenderedOrder\n .map((row) => row.workPackageId!);\n }\n\n protected get currentRenderedOrder():RenderedWorkPackage[] {\n return this\n .querySpace\n .renderedWorkPackages\n .getValueOr([]);\n }\n\n /**\n * Find the index of the row in the set of rendered work packages.\n * This will skip non-work-package rows such as group headers\n * @param el\n */\n private findRowIndex(el:HTMLElement):number {\n const rows = Array.from(this.table.tbody.getElementsByClassName(tableRowClassName));\n return rows.indexOf(el) || 0;\n }\n}\n","import { Injector } from '@angular/core';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageViewCollapsedGroupsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-collapsed-groups.service';\n\nexport class GroupFoldTransformer {\n @InjectField() public workPackageViewCollapsedGroupsService:WorkPackageViewCollapsedGroupsService;\n\n @InjectField() public querySpace:IsolatedQuerySpace;\n\n constructor(public readonly injector:Injector,\n table:WorkPackageTable) {\n this.workPackageViewCollapsedGroupsService\n .updates$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n distinctUntilChanged(),\n )\n .subscribe((groupsCollapseEvent) => table.setGroupsCollapseState(groupsCollapseEvent.state));\n }\n}\n","import { Injector } from '@angular/core';\nimport { displayClassName, editableClassName, readOnlyClassName } from 'core-app/shared/components/fields/display/display-field-renderer';\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { getPosition } from 'core-app/shared/helpers/set-click-position/set-click-position';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { EditFieldHandler } from 'core-app/shared/components/fields/edit/editing-portal/edit-field-handler';\nimport { States } from 'core-app/core/states/states.service';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { TableEventComponent, TableEventHandler } from '../table-handler-registry';\nimport { ClickOrEnterHandler } from '../click-or-enter-handler';\nimport { WorkPackageTable } from '../../wp-fast-table';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\n\nexport class EditCellHandler extends ClickOrEnterHandler implements TableEventHandler {\n // Injections\n @InjectField() public states:States;\n\n @InjectField() public halEditing:HalResourceEditingService;\n\n // Keep a reference to all\n\n public get EVENT() {\n return 'click.table.cell, keydown.table.cell';\n }\n\n public get SELECTOR() {\n return `.${displayClassName}.${editableClassName}`;\n }\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tableAndTimelineContainer);\n }\n\n constructor(public readonly injector:Injector) {\n super();\n }\n\n protected processEvent(table:WorkPackageTable, evt:JQuery.TriggeredEvent):void {\n debugLog('Starting editing on cell: ', evt.target);\n evt.preventDefault();\n\n // Locate the cell from event\n const target = jQuery(evt.target).closest(`.${displayClassName}`);\n // Get the target field name\n const fieldName = target.data('fieldName');\n\n if (!fieldName) {\n debugLog('Click handled by cell not a field? ', evt.target);\n return;\n }\n\n // Locate the row\n const rowElement = target.closest(`.${tableRowClassName}`);\n // Get the work package we're editing\n const workPackageId = rowElement.data('workPackageId');\n const workPackage = this.states.workPackages.get(workPackageId).value!;\n // Get the row context\n const classIdentifier = rowElement.data('classIdentifier');\n\n // Get any existing edit state for this work package\n const form = table.editing.startEditing(workPackage, classIdentifier);\n\n // Get the position where the user clicked.\n const positionOffset = getPosition(evt);\n\n // Activate the field\n form.activate(fieldName)\n .then((handler:EditFieldHandler) => {\n handler.$onUserActivate.next();\n handler.focus(positionOffset);\n })\n .catch(() => target.addClass(readOnlyClassName));\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageViewRelationColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { relationCellIndicatorClassName, relationCellTdClassName } from '../../builders/relation-cell-builder';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\nimport { WorkPackageTable } from '../../wp-fast-table';\nimport { ClickOrEnterHandler } from '../click-or-enter-handler';\nimport { TableEventComponent, TableEventHandler } from '../table-handler-registry';\n\nexport class RelationsCellHandler extends ClickOrEnterHandler implements TableEventHandler {\n // Injections\n @InjectField() wpTableRelationColumns:WorkPackageViewRelationColumnsService;\n\n public get EVENT() {\n return 'click.table.relationsCell, keydown.table.relationsCell';\n }\n\n public get SELECTOR() {\n return `.${relationCellIndicatorClassName}`;\n }\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tableAndTimelineContainer);\n }\n\n constructor(public readonly injector:Injector) {\n super();\n }\n\n protected processEvent(table:WorkPackageTable, evt:JQuery.TriggeredEvent):void {\n debugLog('Handled click on relation cell %o', evt.target);\n evt.preventDefault();\n\n // Locate the relation td\n const td = jQuery(evt.target).closest(`.${relationCellTdClassName}`);\n const columnId = td.data('columnId');\n\n // Locate the row\n const rowElement = jQuery(evt.target).closest(`.${tableRowClassName}`);\n const workPackageId = rowElement.data('workPackageId');\n\n // If currently expanded\n if (this.wpTableRelationColumns.getExpandFor(workPackageId) === columnId) {\n this.wpTableRelationColumns.collapse(workPackageId);\n } else {\n this.wpTableRelationColumns.setExpandFor(workPackageId, columnId);\n }\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageAction } from 'core-app/features/work-packages/components/wp-table/context-menu-helper/wp-context-menu-helper.service';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageViewContextMenu } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive';\nimport { WorkPackageViewHierarchyIdentationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy-indentation.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport class WorkPackageTableContextMenu extends WorkPackageViewContextMenu {\n @InjectField() wpViewIndentation:WorkPackageViewHierarchyIdentationService;\n\n constructor(public injector:Injector,\n protected workPackageId:string,\n protected $element:JQuery,\n protected additionalPositionArgs:any = {},\n protected table:WorkPackageTable) {\n super(injector, workPackageId, $element, additionalPositionArgs, true);\n }\n\n public triggerContextMenuAction(action:WorkPackageAction) {\n switch (action.key) {\n case 'relation-precedes':\n this.table.timelineController.startAddRelationPredecessor(this.workPackage);\n break;\n\n case 'relation-follows':\n this.table.timelineController.startAddRelationFollower(this.workPackage);\n break;\n\n case 'hierarchy-indent':\n this.wpViewIndentation.indent(this.workPackage);\n break;\n\n case 'hierarchy-outdent':\n this.wpViewIndentation.outdent(this.workPackage);\n break;\n\n default:\n super.triggerContextMenuAction(action);\n break;\n }\n }\n}\n","import { Injector } from '@angular/core';\nimport { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service';\nimport { WorkPackageTableContextMenu } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-table-context-menu.directive';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\nimport { WorkPackageTable } from '../../wp-fast-table';\nimport { TableEventComponent, TableEventHandler } from '../table-handler-registry';\n\nexport abstract class ContextMenuHandler implements TableEventHandler {\n // Injections\n @InjectField() public opContextMenu:OPContextMenuService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public get rowSelector() {\n return `.${tableRowClassName}`;\n }\n\n public abstract get EVENT():string;\n\n public abstract get SELECTOR():string;\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tableAndTimelineContainer);\n }\n\n public abstract handleEvent(view:TableEventComponent, evt:JQuery.TriggeredEvent):boolean;\n\n protected openContextMenu(table:WorkPackageTable, evt:JQuery.TriggeredEvent, workPackageId:string, positionArgs?:any):void {\n const handler = new WorkPackageTableContextMenu(this.injector, workPackageId, jQuery(evt.target) as JQuery, positionArgs, table);\n this.opContextMenu.show(handler, evt);\n }\n}\n","import { Injector } from '@angular/core';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { contextMenuLinkClassName } from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport { TableEventComponent } from 'core-app/features/work-packages/components/wp-fast-table/handlers/table-handler-registry';\nimport { uiStateLinkClass } from '../../builders/ui-state-link-builder';\nimport { ContextMenuHandler } from './context-menu-handler';\n\nexport class ContextMenuClickHandler extends ContextMenuHandler {\n constructor(public readonly injector:Injector) {\n super(injector);\n }\n\n public get EVENT() {\n return 'click.table.contextmenu';\n }\n\n public get SELECTOR() {\n return `.${contextMenuLinkClassName}`;\n }\n\n public handleEvent(view:TableEventComponent, evt:JQuery.TriggeredEvent):boolean {\n const target = jQuery(evt.target);\n\n // We want to keep the original context menu on hrefs\n // (currently, this is only the id\n if (target.closest(`.${uiStateLinkClass}`).length) {\n debugLog('Allowing original context menu on state link');\n return true;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n\n // Locate the row from event\n const element = target.closest(this.rowSelector);\n const wpId = element.data('workPackageId');\n\n if (wpId) {\n this.openContextMenu(view.workPackageTable, evt, wpId);\n }\n\n return false;\n }\n}\n","import { Injector } from '@angular/core';\nimport { KeyCodes } from 'core-app/shared/helpers/keyCodes.enum';\nimport { TableEventComponent } from 'core-app/features/work-packages/components/wp-fast-table/handlers/table-handler-registry';\nimport { ContextMenuHandler } from './context-menu-handler';\n\nexport class ContextMenuKeyboardHandler extends ContextMenuHandler {\n constructor(public readonly injector:Injector) {\n super(injector);\n }\n\n public get EVENT() {\n return 'keydown.table.contextmenu';\n }\n\n public get SELECTOR() {\n return this.rowSelector;\n }\n\n public handleEvent(component:TableEventComponent, evt:JQuery.TriggeredEvent):boolean {\n if (!component.workPackageTable.configuration.contextMenuEnabled) {\n return false;\n }\n\n const target = jQuery(evt.target);\n\n if (!(evt.keyCode === KeyCodes.F10 && evt.shiftKey && evt.altKey)) {\n return true;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n\n // Locate the row from event\n const element = target.closest(this.SELECTOR);\n const wpId = element.data('workPackageId');\n\n // Set position args to open at element\n const position = { my: 'left top', at: 'left bottom', of: target };\n\n super.openContextMenu(component.workPackageTable, evt, wpId, position);\n\n return false;\n }\n}\n","import { Injector } from '@angular/core';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { TableEventComponent } from 'core-app/features/work-packages/components/wp-fast-table/handlers/table-handler-registry';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\nimport { timelineCellClassName } from '../../builders/timeline/timeline-row-builder';\nimport { uiStateLinkClass } from '../../builders/ui-state-link-builder';\nimport { ContextMenuHandler } from './context-menu-handler';\n\nexport class ContextMenuRightClickHandler extends ContextMenuHandler {\n @InjectField() readonly wpTableSelection:WorkPackageViewSelectionService;\n\n constructor(public readonly injector:Injector) {\n super(injector);\n }\n\n public get EVENT() {\n return 'contextmenu.table.rightclick';\n }\n\n public get SELECTOR() {\n return `.${tableRowClassName},.${timelineCellClassName}`;\n }\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tableAndTimelineContainer);\n }\n\n public handleEvent(view:TableEventComponent, evt:JQuery.TriggeredEvent):boolean {\n if (!view.workPackageTable.configuration.contextMenuEnabled) {\n return false;\n }\n const target = jQuery(evt.target);\n\n // We want to keep the original context menu on hrefs\n // (currently, this is only the id\n if (target.closest(`.${uiStateLinkClass}`).length) {\n debugLog('Allowing original context menu on state link');\n return true;\n }\n\n evt.preventDefault();\n evt.stopPropagation();\n\n // Locate the row from event\n const element = target.closest(this.SELECTOR);\n const wpId = element.data('workPackageId');\n\n if (wpId) {\n const [index] = view.workPackageTable.findRenderedRow(wpId);\n\n if (!this.wpTableSelection.isSelected(wpId)) {\n this.wpTableSelection.setSelection(wpId, index);\n }\n\n this.openContextMenu(view.workPackageTable, evt, wpId);\n }\n\n return false;\n }\n}\n","import { Injector } from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { displayClassName } from 'core-app/shared/components/fields/display/display-field-renderer';\nimport { activeFieldClassName } from 'core-app/shared/components/fields/edit/edit-form/edit-form';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { TableEventComponent, TableEventHandler } from '../table-handler-registry';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\nimport { KeepTabService } from '../../../wp-single-view-tabs/keep-tab/keep-tab.service';\n\nexport class RowClickHandler implements TableEventHandler {\n // Injections\n @InjectField() public $state:StateService;\n\n @InjectField() public states:States;\n\n @InjectField() public keepTab:KeepTabService;\n\n @InjectField() public wpTableSelection:WorkPackageViewSelectionService;\n\n @InjectField() public wpTableFocus:WorkPackageViewFocusService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public get EVENT() {\n return 'click.table.row';\n }\n\n public get SELECTOR() {\n return `.${tableRowClassName}`;\n }\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tbody);\n }\n\n public handleEvent(view:TableEventComponent, evt:JQuery.TriggeredEvent) {\n const target = jQuery(evt.target);\n\n // Ignore links\n if (target.is('a') || target.parent().is('a')) {\n return true;\n }\n\n // Shortcut to any clicks within a cell\n // We don't want to handle these.\n if (target.hasClass(`${displayClassName}`) || target.hasClass(`${activeFieldClassName}`)) {\n debugLog('Skipping click on inner cell');\n return true;\n }\n\n // Locate the row from event\n const element = target.closest(this.SELECTOR);\n const wpId = element.data('workPackageId');\n const classIdentifier = element.data('classIdentifier');\n\n if (!wpId) {\n return true;\n }\n\n const [index, row] = view.workPackageTable.findRenderedRow(classIdentifier);\n\n // Update single selection if no modifier present\n if (!(evt.ctrlKey || evt.metaKey || evt.shiftKey)) {\n this.wpTableSelection.setSelection(wpId, index);\n view.itemClicked.emit({ workPackageId: wpId, double: false });\n }\n\n // Multiple selection if shift present\n if (evt.shiftKey) {\n this.wpTableSelection.setMultiSelectionFrom(view.workPackageTable.renderedRows, wpId, index);\n }\n\n // Single selection expansion if ctrl / cmd(mac)\n if (evt.ctrlKey || evt.metaKey) {\n this.wpTableSelection.toggleRow(wpId);\n }\n\n view.selectionChanged.emit(this.wpTableSelection.getSelectedWorkPackageIds());\n\n // The current row is the last selected work package\n // not matter what other rows are (de-)selected below.\n // Thus save that row for the details view button.\n this.wpTableFocus.updateFocus(wpId);\n return false;\n }\n}\n","import { Injector } from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { States } from 'core-app/core/states/states.service';\nimport { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/link-handling';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { displayClassName } from 'core-app/shared/components/fields/display/display-field-renderer';\nimport { activeFieldClassName } from 'core-app/shared/components/fields/edit/edit-form/edit-form';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { TableEventComponent, TableEventHandler } from '../table-handler-registry';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\nimport { tdClassName } from '../../builders/cell-builder';\n\nexport class RowDoubleClickHandler implements TableEventHandler {\n // Injections\n @InjectField() public $state:StateService;\n\n @InjectField() public states:States;\n\n @InjectField() public wpTableSelection:WorkPackageViewSelectionService;\n\n @InjectField() public wpTableFocus:WorkPackageViewFocusService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public get EVENT() {\n return 'dblclick.table.row';\n }\n\n public get SELECTOR() {\n return `.${tdClassName}`;\n }\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tbody);\n }\n\n public handleEvent(view:TableEventComponent, evt:JQuery.TriggeredEvent) {\n const target = jQuery(evt.target);\n\n // Skip clicks with modifiers\n if (isClickedWithModifier(evt)) {\n return true;\n }\n\n // Shortcut to any clicks within a cell\n // We don't want to handle these.\n if (target.hasClass(`${displayClassName}`) || target.hasClass(`${activeFieldClassName}`)) {\n debugLog('Skipping click on inner cell');\n return true;\n }\n\n // Locate the row from event\n const element = target.closest(this.SELECTOR).closest(`.${tableRowClassName}`);\n const wpId = element.data('workPackageId');\n\n // Ignore links\n if (target.is('a') || target.parent().is('a')) {\n return true;\n }\n\n // Save the currently focused work package\n this.wpTableFocus.updateFocus(wpId);\n\n view.itemClicked.emit({ workPackageId: wpId, double: true });\n\n return false;\n }\n}\n","import { Injector } from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { rowGroupClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-classes.constants';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageViewCollapsedGroupsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-collapsed-groups.service';\nimport { TableEventComponent, TableEventHandler } from '../table-handler-registry';\n\nexport class GroupRowHandler implements TableEventHandler {\n // Injections\n @InjectField() public querySpace:IsolatedQuerySpace;\n\n @InjectField() public workPackageViewCollapsedGroupsService:WorkPackageViewCollapsedGroupsService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public get EVENT() {\n return 'click.table.groupheader';\n }\n\n public get SELECTOR() {\n return `.${rowGroupClassName} .expander`;\n }\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tbody);\n }\n\n public handleEvent(view:TableEventComponent, evt:JQuery.TriggeredEvent) {\n evt.preventDefault();\n evt.stopPropagation();\n\n const groupHeader = jQuery(evt.target).parents(`.${rowGroupClassName}`);\n const groupIdentifier = groupHeader.data('groupIdentifier');\n\n this.workPackageViewCollapsedGroupsService.toggleGroupCollapseState(groupIdentifier);\n }\n}\n","import { Injector } from '@angular/core';\nimport { States } from 'core-app/core/states/states.service';\nimport { TableEventComponent, TableEventHandler } from 'core-app/features/work-packages/components/wp-fast-table/handlers/table-handler-registry';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\nimport { WorkPackageTable } from '../../wp-fast-table';\nimport { ClickOrEnterHandler } from '../click-or-enter-handler';\n\nexport class HierarchyClickHandler extends ClickOrEnterHandler implements TableEventHandler {\n // Injections\n @InjectField() public states:States;\n\n @InjectField() public wpTableHierarchies:WorkPackageViewHierarchiesService;\n\n constructor(public readonly injector:Injector) {\n super();\n }\n\n public get EVENT() {\n return 'click.table.hierarchy';\n }\n\n public get SELECTOR() {\n return `.wp-table--hierarchy-indicator`;\n }\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tbody);\n }\n\n public processEvent(table:WorkPackageTable, evt:JQuery.TriggeredEvent):void {\n const target = jQuery(evt.target);\n\n // Locate the row from event\n const element = target.closest(`.${tableRowClassName}`);\n const wpId = element.data('workPackageId');\n\n this.wpTableHierarchies.toggle(wpId);\n\n evt.stopImmediatePropagation();\n evt.preventDefault();\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { StateService } from '@uirouter/core';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { KeepTabService } from '../../../wp-single-view-tabs/keep-tab/keep-tab.service';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\nimport { uiStateLinkClass } from '../../builders/ui-state-link-builder';\nimport { TableEventComponent, TableEventHandler } from '../table-handler-registry';\n\nexport class WorkPackageStateLinksHandler implements TableEventHandler {\n // Injections\n @InjectField() public $state:StateService;\n\n @InjectField() public keepTab:KeepTabService;\n\n @InjectField() public states:States;\n\n @InjectField() public wpTableSelection:WorkPackageViewSelectionService;\n\n @InjectField() public wpTableFocus:WorkPackageViewFocusService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public get EVENT() {\n return 'click.table.wpLink';\n }\n\n public get SELECTOR() {\n return `.${uiStateLinkClass}`;\n }\n\n public eventScope(view:TableEventComponent) {\n return jQuery(view.workPackageTable.tableAndTimelineContainer);\n }\n\n protected workPackage:WorkPackageResource;\n\n public handleEvent(view:TableEventComponent, evt:JQuery.TriggeredEvent) {\n evt.stopPropagation();\n\n // Avoid the state capture when clicking with modifier to allow browser opening in new tab\n if (evt.shiftKey || evt.ctrlKey || evt.metaKey || evt.altKey) {\n return true;\n }\n\n // Locate the details link from event\n const target = evt.target as HTMLElement;\n const element = target.closest(this.SELECTOR) as HTMLElement & { dataset:DOMStringMap };\n const state = element.dataset.wpState;\n const workPackageId = element.dataset.workPackageId;\n\n // Normal link processing if there are no state and work package information\n if (!state || !workPackageId) {\n return true;\n }\n\n // Blur the target to avoid focus being kept there\n target.closest('a')?.blur();\n\n // The current row is the last selected work package\n // not matter what other rows are (de-)selected below.\n // Thus save that row for the details view button.\n // Locate the row from event\n const row = target.closest(`.${tableRowClassName}`) as HTMLElement & { dataset:DOMStringMap };\n const classIdentifier = row.dataset.classIdentifier as string;\n const [index] = view.workPackageTable.findRenderedRow(classIdentifier);\n\n // Update single selection if no modifier present\n this.wpTableSelection.setSelection(workPackageId, index);\n\n view.stateLinkClicked.emit({ workPackageId, requestedState: state });\n\n evt.preventDefault();\n return false;\n }\n}\n","import { Injector } from '@angular/core';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { takeUntil } from 'rxjs/operators';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageTable } from '../../wp-fast-table';\n\nexport class ColumnsTransformer {\n @InjectField() public querySpace:IsolatedQuerySpace;\n\n @InjectField() public wpTableColumns:WorkPackageViewColumnsService;\n\n constructor(public readonly injector:Injector,\n public table:WorkPackageTable) {\n this.wpTableColumns\n .updates$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n )\n .subscribe(() => {\n if (table.originalRows.length > 0) {\n const t0 = performance.now();\n // Redraw the table section, ignore timeline\n table.redrawTable();\n\n const t1 = performance.now();\n\n debugLog(`column redraw took ${t1 - t0} milliseconds.`);\n }\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { scrollTableRowIntoView } from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-row-helpers';\nimport {\n distinctUntilChanged, filter, map, takeUntil,\n} from 'rxjs/operators';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport {\n collapsedGroupClass,\n hierarchyGroupClass,\n hierarchyRootClass,\n} from 'core-app/features/work-packages/components/wp-fast-table/helpers/wp-table-hierarchy-helpers';\nimport { indicatorCollapsedClass } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/hierarchy/single-hierarchy-row-builder';\nimport { tableRowClassName } from 'core-app/features/work-packages/components/wp-fast-table/builders/rows/single-row-builder';\nimport { WorkPackageViewHierarchies } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-hierarchies';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\nexport class HierarchyTransformer {\n @InjectField() public wpTableHierarchies:WorkPackageViewHierarchiesService;\n\n @InjectField() public querySpace:IsolatedQuerySpace;\n\n constructor(public readonly injector:Injector,\n table:WorkPackageTable) {\n this.wpTableHierarchies\n .updates$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n map((state) => state.isVisible),\n distinctUntilChanged(),\n )\n .subscribe(() => {\n // We don't have to reload all results when _disabling_ the hierarchy mode.\n if (!this.wpTableHierarchies.isEnabled) {\n table.redrawTableAndTimeline();\n }\n });\n\n let lastValue = this.wpTableHierarchies.isEnabled;\n\n this.wpTableHierarchies\n .updates$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n filter(() => this.querySpace.tableRendered.hasValue()),\n )\n .subscribe((state:WorkPackageViewHierarchies) => {\n if (state.isVisible === lastValue) {\n this.renderHierarchyState(state);\n }\n\n lastValue = state.isVisible;\n });\n }\n\n /**\n * Update all currently visible rows to match the selection state.\n */\n private renderHierarchyState(state:WorkPackageViewHierarchies) {\n const rendered = this.querySpace.tableRendered.value!;\n\n // Show all hierarchies\n jQuery('[class^=\"__hierarchy-group-\"]').removeClass((i:number, classNames:string):string => (classNames.match(/__collapsed-group-\\d+/g) || []).join(' '));\n\n // Mark which rows were hidden by some other hierarchy group\n // (e.g., by a collapsed parent)\n const collapsed:{ [index:number]:boolean } = {};\n\n // Hide all collapsed hierarchies\n _.each(state.collapsed, (isCollapsed:boolean, wpId:string) => {\n // Toggle the root style\n jQuery(`.${hierarchyRootClass(wpId)} .wp-table--hierarchy-indicator`).toggleClass(indicatorCollapsedClass, isCollapsed);\n\n // Get parent row and mark/unmark it as collapsed\n const hierarchyRoot = document.querySelector(`.wp-timeline-cell.__hierarchy-root-${wpId}`);\n\n if (hierarchyRoot) {\n if (isCollapsed) {\n hierarchyRoot.classList.add('__hierarchy-root-collapsed');\n } else {\n hierarchyRoot.classList.remove('__hierarchy-root-collapsed');\n }\n }\n\n // Get all affected children rows\n const affected = jQuery(`.${hierarchyGroupClass(wpId)}`);\n\n // Hide/Show the descendants.\n affected.toggleClass(collapsedGroupClass(wpId), isCollapsed);\n\n // Update the hidden section of the rendered state\n affected.filter(`.${tableRowClassName}`).each((i, el) => {\n // Get the index of this row\n const index = jQuery(el).index();\n\n // Update the hidden state\n if (!collapsed[index]) {\n rendered[index].hidden = isCollapsed;\n collapsed[index] = isCollapsed;\n }\n });\n });\n\n // Keep focused on the last element, if any.\n // Based on https://stackoverflow.com/a/3782959\n if (state.last) {\n scrollTableRowIntoView(state.last);\n }\n\n this.querySpace.tableRendered.putValue(rendered, 'Updated hidden state of rows after hierarchy change.');\n }\n}\n","import { Injector } from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { takeUntil } from 'rxjs/operators';\nimport { WorkPackageViewRelationColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageTable } from '../../wp-fast-table';\n\nexport class RelationsTransformer {\n @InjectField() public wpTableRelationColumns:WorkPackageViewRelationColumnsService;\n\n @InjectField() public querySpace:IsolatedQuerySpace;\n\n constructor(public readonly injector:Injector,\n table:WorkPackageTable) {\n this.wpTableRelationColumns\n .updates$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n )\n .subscribe(() => {\n table.redrawTableAndTimeline();\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewOrderService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageTable } from '../../wp-fast-table';\n\nexport class RowsTransformer {\n @InjectField() querySpace:IsolatedQuerySpace;\n\n @InjectField() wpTableSortBy:WorkPackageViewSortByService;\n\n @InjectField() wpTableOrder:WorkPackageViewOrderService;\n\n @InjectField() states:States;\n\n constructor(public readonly injector:Injector,\n public table:WorkPackageTable) {\n // Redraw table if the current row state changed\n this.querySpace\n .initialized\n .values$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n )\n .subscribe(() => {\n let rows:WorkPackageResource[];\n\n if (this.wpTableSortBy.isManualSortingMode) {\n rows = this.wpTableOrder.orderedWorkPackages();\n } else {\n rows = this.querySpace.results.value!.elements;\n }\n\n table.initialSetup(rows);\n });\n\n // Refresh a single row if it exists\n this.states.workPackages.observeChange()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions.asObservable()),\n filter(() => {\n const rendered = this.querySpace.tableRendered.getValueOr([]);\n return rendered && rendered.length > 0;\n }),\n )\n .subscribe(([changedId, wp]) => {\n if (wp === undefined) {\n return;\n }\n\n this.table.refreshRows(wp);\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { takeUntil } from 'rxjs/operators';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { FocusHelperService } from 'core-app/shared/directives/focus/focus-helper';\nimport {\n WorkPackageViewSelectionService,\n WorkPackageViewSelectionState,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { tableRowClassName } from '../../builders/rows/single-row-builder';\nimport { checkedClassName } from '../../builders/ui-state-link-builder';\nimport { locateTableRow, scrollTableRowIntoView } from '../../helpers/wp-table-row-helpers';\nimport { WorkPackageTable } from '../../wp-fast-table';\n\nexport class SelectionTransformer {\n @InjectField() public wpTableSelection:WorkPackageViewSelectionService;\n\n @InjectField() public wpTableFocus:WorkPackageViewFocusService;\n\n @InjectField() public querySpace:IsolatedQuerySpace;\n\n @InjectField() public FocusHelper:FocusHelperService;\n\n constructor(public readonly injector:Injector,\n public readonly table:WorkPackageTable) {\n // Focus a single selection when active\n this.querySpace.tableRendered.values$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n )\n .subscribe(() => {\n this.wpTableFocus.ifShouldFocus((wpId:string) => {\n const element = locateTableRow(wpId);\n if (element.length) {\n scrollTableRowIntoView(wpId);\n this.FocusHelper.focus(element[0]);\n }\n });\n });\n\n // Update selection state\n this.wpTableSelection.live$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n )\n .subscribe((state:WorkPackageViewSelectionState) => {\n this.renderSelectionState(state);\n });\n\n this.wpTableSelection.registerSelectAllListener(() => table.renderedRows);\n this.wpTableSelection.registerDeselectAllListener();\n }\n\n /**\n * Update all currently visible rows to match the selection state.\n */\n private renderSelectionState(state:WorkPackageViewSelectionState) {\n const context = jQuery(this.table.tableAndTimelineContainer);\n\n context.find(`.${tableRowClassName}.${checkedClassName}`).removeClass(checkedClassName);\n\n _.each(state.selected, (selected:boolean, workPackageId:any) => {\n context.find(`.${tableRowClassName}[data-work-package-id=\"${workPackageId}\"]`).toggleClass(checkedClassName, selected);\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageTimelineState } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-timeline';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageTable } from '../../wp-fast-table';\n\nexport class TimelineTransformer {\n @InjectField() public querySpace:IsolatedQuerySpace;\n\n @InjectField() public wpTableTimeline:WorkPackageViewTimelineService;\n\n constructor(readonly injector:Injector,\n readonly table:WorkPackageTable) {\n this.wpTableTimeline\n .live$()\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n )\n .subscribe((state:WorkPackageTimelineState) => {\n this.renderVisibility(state.visible);\n });\n }\n\n /**\n * Update all currently visible rows to match the selection state.\n */\n private renderVisibility(visible:boolean) {\n const container = jQuery(this.table.tableAndTimelineContainer).parent();\n container.find('.work-packages-tabletimeline--timeline-side').toggle(visible);\n container.find('.work-packages-tabletimeline--table-side').toggleClass('-timeline-visible', visible);\n }\n}\n","import { Injector } from '@angular/core';\nimport { filter, map } from 'rxjs/operators';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { shareModalUpdated } from 'core-app/features/work-packages/components/wp-share-modal/sharing.actions';\nimport { tableRefreshRequest } from 'core-app/features/work-packages/routing/wp-view-base/work-packages-view.actions';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\n\nexport class SharingTransformer {\n public actions$ = this.injector.get(ActionsService);\n\n constructor(\n readonly injector:Injector,\n readonly table:WorkPackageTable,\n ) {\n this.actions$\n .ofType(shareModalUpdated)\n .pipe(\n map((action) => action.workPackageId),\n filter((id) => !!this.table.renderedRows.find((el:RenderedWorkPackage) => el.workPackageId === id)),\n )\n .subscribe(() => {\n this.actions$.dispatch(tableRefreshRequest());\n });\n }\n}\n","import { Injector } from '@angular/core';\nimport {\n HighlightingTransformer,\n} from 'core-app/features/work-packages/components/wp-fast-table/handlers/state/highlighting-transformer';\nimport {\n DragAndDropTransformer,\n} from 'core-app/features/work-packages/components/wp-fast-table/handlers/state/drag-and-drop-transformer';\nimport {\n WorkPackageViewEventHandler,\n WorkPackageViewHandlerRegistry,\n WorkPackageViewOutputs,\n} from 'core-app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry';\nimport {\n GroupFoldTransformer,\n} from 'core-app/features/work-packages/components/wp-fast-table/handlers/state/group-fold-transformer';\nimport { WorkPackageTable } from '../wp-fast-table';\nimport { EditCellHandler } from './cell/edit-cell-handler';\nimport { RelationsCellHandler } from './cell/relations-cell-handler';\nimport { ContextMenuClickHandler } from './context-menu/context-menu-click-handler';\nimport { ContextMenuKeyboardHandler } from './context-menu/context-menu-keyboard-handler';\nimport { ContextMenuRightClickHandler } from './context-menu/context-menu-rightclick-handler';\nimport { RowClickHandler } from './row/click-handler';\nimport { RowDoubleClickHandler } from './row/double-click-handler';\nimport { GroupRowHandler } from './row/group-row-handler';\nimport { HierarchyClickHandler } from './row/hierarchy-click-handler';\nimport { WorkPackageStateLinksHandler } from './row/wp-state-links-handler';\nimport { ColumnsTransformer } from './state/columns-transformer';\nimport { HierarchyTransformer } from './state/hierarchy-transformer';\nimport { RelationsTransformer } from './state/relations-transformer';\nimport { RowsTransformer } from './state/rows-transformer';\nimport { SelectionTransformer } from './state/selection-transformer';\nimport { TimelineTransformer } from './state/timeline-transformer';\nimport {\n SharingTransformer,\n} from 'core-app/features/work-packages/components/wp-fast-table/handlers/state/sharing-transformer';\n\ntype StateTransformers = {\n // noinspection JSUnusedLocalSymbols\n new(injector:Injector, table:WorkPackageTable):any;\n};\n\nexport interface TableEventComponent extends WorkPackageViewOutputs {\n // Reference to the fast table instance\n workPackageTable:WorkPackageTable;\n}\n\nexport type TableEventHandler = WorkPackageViewEventHandler;\n\nexport class TableHandlerRegistry extends WorkPackageViewHandlerRegistry {\n protected eventHandlers:((t:TableEventComponent) => TableEventHandler)[] = [\n // Hierarchy expansion/collapsing\n () => new HierarchyClickHandler(this.injector),\n // Clicking or pressing Enter on a single cell, editable or not\n () => new EditCellHandler(this.injector),\n // Clicking on the details view\n () => new WorkPackageStateLinksHandler(this.injector),\n // Clicking on the row (not within a cell)\n () => new RowClickHandler(this.injector),\n // Double Clicking on the cell within the row\n () => new RowDoubleClickHandler(this.injector),\n // Clicking on group headers\n () => new GroupRowHandler(this.injector),\n // Right clicking on rows\n () => new ContextMenuRightClickHandler(this.injector),\n // Left clicking on the dropdown icon\n () => new ContextMenuClickHandler(this.injector),\n // SHIFT+ALT+F10 on rows\n () => new ContextMenuKeyboardHandler(this.injector),\n // Clicking on relations cells\n () => new RelationsCellHandler(this.injector),\n ];\n\n protected readonly stateTransformers:StateTransformers[] = [\n SelectionTransformer,\n RowsTransformer,\n ColumnsTransformer,\n GroupFoldTransformer,\n TimelineTransformer,\n HierarchyTransformer,\n RelationsTransformer,\n SharingTransformer,\n HighlightingTransformer,\n DragAndDropTransformer,\n ];\n\n attachTo(viewRef:TableEventComponent) {\n this.stateTransformers.map((cls) => new cls(this.injector, viewRef.workPackageTable));\n\n super.attachTo(viewRef);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nconst cssClassRowHovered = 'row-hovered';\n\nexport class WpTableHoverSync {\n private lastHoveredElement:Element | null = null;\n\n private eventListener = (evt:MouseEvent) => {\n const target = evt.target as Element|null;\n if (target && target !== this.lastHoveredElement) {\n this.handleHover(target);\n }\n this.lastHoveredElement = target;\n };\n\n constructor(private tableAndTimeline:JQuery) {\n }\n\n activate() {\n window.addEventListener('mousemove', this.eventListener, { passive: true });\n }\n\n deactivate() {\n window.removeEventListener('mousemove', this.eventListener);\n this.removeAllHoverClasses();\n }\n\n private locateHoveredTableRow(child:JQuery):Element | null {\n const parent = child.closest('tr');\n if (parent.length === 0) {\n return null;\n }\n return parent[0];\n }\n\n private locateHoveredTimelineRow(child:JQuery):Element | null {\n const parent = child.closest('div.wp-timeline-cell');\n if (parent.length === 0) {\n return null;\n }\n return parent[0];\n }\n\n private handleHover(element:Element) {\n const $element = jQuery(element) as JQuery;\n const parentTableRow = this.locateHoveredTableRow($element);\n const parentTimelineRow = this.locateHoveredTimelineRow($element);\n\n // remove all hover classes if cursor does not hover a row\n if (parentTableRow === null && parentTimelineRow === null) {\n this.removeAllHoverClasses();\n return;\n }\n\n this.removeOldAndAddNewHoverClass(parentTableRow, parentTimelineRow);\n }\n\n private extractWorkPackageId(row:Element):number {\n return parseInt(row.getAttribute('data-work-package-id')!);\n }\n\n private removeOldAndAddNewHoverClass(parentTableRow:Element | null, parentTimelineRow:Element | null) {\n const hovered = parentTableRow !== null ? parentTableRow : parentTimelineRow;\n const wpId = this.extractWorkPackageId(hovered!);\n\n const tableRow:JQuery = this.tableAndTimeline.find(`tr.wp-row-${wpId}`).first();\n const timelineRow:JQuery = this.tableAndTimeline.find(`div.wp-row-${wpId}`).length\n ? this.tableAndTimeline.find(`div.wp-row-${wpId}`).first()\n : this.tableAndTimeline.find(`div.wp-ancestor-row-${wpId}`).first();\n\n requestAnimationFrame(() => {\n this.removeAllHoverClasses();\n timelineRow.addClass(cssClassRowHovered);\n tableRow.addClass(cssClassRowHovered);\n });\n }\n\n private removeAllHoverClasses() {\n this.tableAndTimeline\n .find(`.${cssClassRowHovered}`)\n .removeClass(cssClassRowHovered);\n }\n}\n","
    \n
    \n \n \n \n \n \n \n \n \n \n \n {{text.tableSummary}}\n \n {{text.tableSummaryHints}}\n \n \n \n \n
    \n \n
    \n \n \n
    \n \n
    \n \n \n \n \n \n \n
    \n \n \n
    \n \n \n \n \n \n \n \n \n \n {{text.noResults.title}}\n {{text.noResults.description}}\n \n \n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n
    \n\n
    \n \n
    \n\n
    \n \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n NgZone,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n TableEventComponent,\n TableHandlerRegistry,\n} from 'core-app/features/work-packages/components/wp-fast-table/handlers/table-handler-registry';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { combineLatest } from 'rxjs';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { trackByHref } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { WorkPackageViewGroupByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { createScrollSync } from 'core-app/features/work-packages/components/wp-table/wp-table-scroll-sync';\nimport { WpTableHoverSync } from 'core-app/features/work-packages/components/wp-table/wp-table-hover-sync';\nimport { WorkPackageTimelineTableController } from 'core-app/features/work-packages/components/wp-table/timeline/container/wp-timeline-container.directive';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { WorkPackageViewSumService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport {\n WorkPackageTableConfiguration,\n WorkPackageTableConfigurationObject,\n} from 'core-app/features/work-packages/components/wp-table/wp-table-configuration';\nimport { States } from 'core-app/core/states/states.service';\nimport { QueryGroupByResource } from 'core-app/features/hal/resources/query-group-by-resource';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\n\nexport interface WorkPackageFocusContext {\n /** Work package that was focused */\n workPackageId:string;\n /** Through what action did the focus happen */\n through:'row-double-click'|'id-click'|'details-icon';\n}\n\n@Component({\n templateUrl: './wp-table.component.html',\n styleUrls: ['./wp-table.component.sass'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'wp-table',\n})\nexport class WorkPackagesTableComponent extends UntilDestroyedMixin implements OnInit, TableEventComponent {\n @Input() projectIdentifier:string;\n\n @Input('configuration') configurationObject:WorkPackageTableConfigurationObject;\n\n @Output() selectionChanged = new EventEmitter();\n\n @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>();\n\n @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>();\n\n public trackByHref = trackByHref;\n\n public configuration:WorkPackageTableConfiguration;\n\n private $element:JQuery;\n\n private scrollSyncUpdate:(timelineVisible:boolean) => any;\n\n private wpTableHoverSync:WpTableHoverSync;\n\n public tableElement:HTMLElement;\n\n public workPackageTable:WorkPackageTable;\n\n public tbody:JQuery;\n\n public query:QueryResource;\n\n public timeline:HTMLElement;\n\n public locale:string;\n\n public text:any;\n\n public results:WorkPackageCollectionResource;\n\n public groupBy:QueryGroupByResource|null;\n\n public columns:QueryColumn[];\n\n public numTableColumns:number;\n\n public timelineVisible:boolean;\n\n public manualSortEnabled:boolean;\n\n public baselineEnabled:boolean;\n\n public limitedResults = false;\n\n // We need to sync certain height difference to the timeline\n // depending on whether inline create or sums rows are being shown\n public inlineCreateVisible = false;\n\n public sumVisible = false;\n\n constructor(\n readonly elementRef:ElementRef,\n readonly injector:Injector,\n readonly states:States,\n readonly querySpace:IsolatedQuerySpace,\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n readonly zone:NgZone,\n readonly wpTableGroupBy:WorkPackageViewGroupByService,\n readonly wpTableTimeline:WorkPackageViewTimelineService,\n readonly wpTableColumns:WorkPackageViewColumnsService,\n readonly wpTableSortBy:WorkPackageViewSortByService,\n readonly wpTableSums:WorkPackageViewSumService,\n readonly wpTableBaseline:WorkPackageViewBaselineService,\n ) {\n super();\n }\n\n ngOnInit():void {\n this.configuration = new WorkPackageTableConfiguration(this.configurationObject);\n this.$element = jQuery(this.elementRef.nativeElement);\n\n // Clear any old table subscribers\n this.querySpace.stopAllSubscriptions.next();\n\n this.locale = I18n.locale;\n\n this.text = {\n cancel: I18n.t('js.button_cancel'),\n noResults: {\n title: I18n.t('js.work_packages.no_results.title'),\n description: I18n.t('js.work_packages.no_results.description'),\n },\n limitedResults: (count:number, total:number) => I18n.t('js.work_packages.limited_results', { count, total }),\n tableSummary: I18n.t('js.work_packages.table.summary'),\n tableSummaryHints: [\n I18n.t('js.work_packages.table.text_inline_edit'),\n I18n.t('js.work_packages.table.text_select_hint'),\n I18n.t('js.work_packages.table.text_sort_hint'),\n ].join(' '),\n };\n\n const statesCombined = combineLatest([\n this.querySpace.results.values$(),\n this.wpTableGroupBy.live$(),\n this.wpTableColumns.live$(),\n this.wpTableTimeline.live$(),\n this.wpTableSortBy.live$(),\n this.wpTableSums.live$(),\n this.wpTableBaseline.live$(),\n ]);\n\n statesCombined.pipe(\n this.untilDestroyed(),\n ).subscribe(([results, groupBy, columns, timelines, sort, sums]) => {\n this.query = this.querySpace.query.value!;\n\n this.results = results;\n this.sumVisible = sums;\n\n this.groupBy = groupBy;\n this.columns = columns;\n\n this.timelineVisible = timelines.visible;\n\n this.manualSortEnabled = this.wpTableSortBy.isManualSortingMode;\n this.baselineEnabled = this.wpTableBaseline.isActive();\n this.limitedResults = this.manualSortEnabled && results.total > results.count;\n\n // Total columns = all available columns + id + context menu\n this.numTableColumns = this.columns.length + 2;\n\n if (this.manualSortEnabled) {\n this.numTableColumns += 1;\n }\n\n if (this.baselineEnabled) {\n this.numTableColumns += 1;\n }\n\n if (this.workPackageTable) {\n this.workPackageTable.colspan = this.numTableColumns;\n }\n\n if (this.scrollSyncUpdate && this.timelineVisible !== timelines.visible) {\n this.scrollSyncUpdate(timelines.visible);\n }\n\n this.cdRef.detectChanges();\n });\n\n this.cdRef.detectChanges();\n }\n\n public ngOnDestroy():void {\n super.ngOnDestroy();\n this.wpTableHoverSync.deactivate();\n }\n\n public registerTimeline(controller:WorkPackageTimelineTableController, timelineBody:HTMLElement) {\n const tbody = this.$element.find('.work-package--results-tbody');\n const scrollContainer = this.$element.find('.work-package-table--container')[0];\n this.workPackageTable = new WorkPackageTable(\n this.injector,\n // Outer container for both table + Timeline\n this.$element[0],\n // Scroll container for the table/timeline\n scrollContainer,\n // Table tbody to insert into\n tbody[0],\n // Timeline body to insert into\n timelineBody,\n // Timeline controller\n controller,\n // Table configuration\n this.configuration,\n );\n this.workPackageTable.colspan = this.numTableColumns;\n\n this.tbody = tbody;\n controller.workPackageTable = this.workPackageTable;\n new TableHandlerRegistry(this.injector).attachTo(this);\n\n // Locate table and timeline elements\n const tableAndTimeline = this.getTableAndTimelineElement();\n this.tableElement = tableAndTimeline[0];\n this.timeline = tableAndTimeline[1];\n\n // sync hover from table to timeline\n this.wpTableHoverSync = new WpTableHoverSync(this.$element);\n this.wpTableHoverSync.activate();\n\n // sync scroll from table to timeline\n this.scrollSyncUpdate = createScrollSync(this.$element);\n this.scrollSyncUpdate(this.timelineVisible);\n\n this.cdRef.detectChanges();\n }\n\n public get isEmbedded() {\n return this.configuration.isEmbedded;\n }\n\n private getTableAndTimelineElement():[HTMLElement, HTMLElement] {\n const $tableSide = this.$element.find('.work-packages-tabletimeline--table-side');\n const $timelineSide = this.$element.find('.work-packages-tabletimeline--timeline-side');\n\n if ($timelineSide.length === 0 || $tableSide.length === 0) {\n throw new Error('invalid state');\n }\n\n return [$tableSide[0], $timelineSide[0]];\n }\n}\n","\n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { UIRouterGlobals } from '@uirouter/core';\nimport {\n Component,\n OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { WpTabDefinition } from 'core-app/features/work-packages/components/wp-tabs/components/wp-tab-wrapper/tab';\nimport { WorkPackageTabsService } from 'core-app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-tabs.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\n\n@Component({\n templateUrl: './wp-tab-wrapper.html',\n selector: 'op-wp-tab',\n})\nexport class WpTabWrapperComponent implements OnInit {\n workPackage:WorkPackageResource;\n\n ndcDynamicInputs$:Observable<{\n workPackage:WorkPackageResource;\n tab:WpTabDefinition | undefined;\n }>;\n\n get workPackageId():string {\n const { workPackageId } = this.uiRouterGlobals.params as unknown as { workPackageId:string };\n return workPackageId;\n }\n\n constructor(readonly I18n:I18nService,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly apiV3Service:ApiV3Service,\n readonly wpTabsService:WorkPackageTabsService) {}\n\n ngOnInit() {\n this.ndcDynamicInputs$ = this\n .apiV3Service\n .work_packages\n .id(this.workPackageId)\n .requireAndStream()\n .pipe(\n map((wp) => ({\n workPackage: wp,\n tab: this.findTab(wp),\n })),\n );\n }\n\n findTab(workPackage:WorkPackageResource):WpTabDefinition | undefined {\n const { tabIdentifier } = this.uiRouterGlobals.params as unknown as { tabIdentifier:string };\n\n return this.wpTabsService.getTab(tabIdentifier, workPackage);\n }\n}\n","\n \n
  • \n \n \n \n
  • \n
  • \n \n \n \n
  • \n
    \n\n","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\nimport {\n KeepTabService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service';\nimport { StateService, UIRouterGlobals } from '@uirouter/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TabDefinition } from 'core-app/shared/components/tabs/tab.interface';\nimport {\n WorkPackageTabsService,\n} from 'core-app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-tabs.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\n\n@Component({\n selector: 'op-wp-tabs',\n templateUrl: './wp-tabs.component.html',\n styleUrls: ['./wp-tabs.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WpTabsComponent implements OnInit {\n @Input() workPackage:WorkPackageResource;\n\n @Input() view:'full'|'split';\n\n public tabs:TabDefinition[];\n\n public uiSrefBase:string;\n\n public canViewWatchers = false;\n\n text = {\n details: {\n close: this.I18n.t('js.button_close_details'),\n goToFullScreen: this.I18n.t('js.button_show_fullscreen'),\n },\n };\n\n constructor(\n readonly wpTabsService:WorkPackageTabsService,\n readonly I18n:I18nService,\n readonly injector:Injector,\n readonly $state:StateService,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly keepTab:KeepTabService,\n ) {\n }\n\n ngOnInit():void {\n this.uiSrefBase = this.view === 'split' ? '' : 'work-packages.show';\n this.canViewWatchers = !!(this.workPackage && this.workPackage.watchers);\n this.tabs = this.getDisplayableTabs();\n }\n\n private getDisplayableTabs() {\n return this\n .wpTabsService\n .getDisplayableTabs(this.workPackage)\n .map((tab) => ({\n ...tab,\n route: `${this.uiSrefBase}.tabs`,\n routeParams: { workPackageId: this.workPackage.id, tabIdentifier: tab.id },\n }));\n }\n\n public switchToFullscreen():void {\n this.keepTab.goCurrentShowState();\n }\n\n public close():void {\n this.$state.go(\n this.uiRouterGlobals.current.data.baseRoute,\n this.uiRouterGlobals.params,\n );\n }\n}\n","import { Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { WorkPackageWatchersService } from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watchers.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { map } from 'rxjs/operators';\n\nexport function workPackageWatchersCount(\n workPackage:WorkPackageResource,\n injector:Injector,\n):Observable {\n const watcherService = injector.get(WorkPackageWatchersService);\n return watcherService\n .requireAndStream(workPackage)\n .pipe(\n map((watchers:HalResource[]) => watchers.length),\n );\n}\n","import { Injector } from '@angular/core';\nimport { Observable, combineLatest, from, Subject } from 'rxjs';\nimport { switchMap, startWith } from 'rxjs/operators';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\n\nexport function workPackageRelationsCount(\n workPackage:WorkPackageResource,\n injector:Injector,\n):Observable {\n const pathHelper = injector.get(PathHelperService);\n const wpRelations = injector.get(WorkPackageRelationsService);\n const wpId = workPackage.id!.toString();\n // It is an intermediate solution, until the API can return all relations\n // in the long term, the tabs are going to be the same as in the notifications\n const url = pathHelper.workPackageGetRelationsCounterPath(wpId.toString());\n const updateTrigger$ = new Subject();\n\n // Listen for relation state changes\n const relationsState$ = wpRelations.state(wpId).values$().pipe(startWith(null));\n\n return combineLatest([relationsState$, updateTrigger$.pipe(startWith(null))]).pipe(\n switchMap(() =>\n from(\n fetch(url)\n .then((res):Promise<{ count:number }> => res.json())\n .then((data) => data.count),\n )),\n );\n}\n","import { Injector } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WpSingleViewService } from 'core-app/features/work-packages/routing/wp-view-base/state/wp-single-view.service';\n\nexport function workPackageNotificationsCount(\n workPackage:WorkPackageResource,\n injector:Injector,\n):Observable {\n const storeService = injector.get(WpSingleViewService);\n return storeService.nonDateAlertNotificationsCount$;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { AttachmentsResourceService } from 'core-app/core/state/attachments/attachments.service';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { IFileLink } from 'core-app/core/state/file-links/file-link.model';\n\nexport function workPackageFilesCount(\n workPackage:WorkPackageResource,\n injector:Injector,\n):Observable {\n const attachmentService = injector.get(AttachmentsResourceService);\n const http = injector.get(HttpClient);\n const attachmentsCollection = workPackage.$links.attachments\n ? attachmentService.collection(workPackage.$links.attachments.href || '')\n : of([]);\n const totalFileLinks = workPackage.$links.fileLinks\n ? http.get>(href(workPackage))\n : of({ total: 0 });\n\n return combineLatest([\n attachmentsCollection,\n totalFileLinks,\n ]).pipe(map(([a, f]) => a.length + f.total));\n}\n\nfunction href(workPackage:WorkPackageResource):string {\n if (!workPackage.$links.fileLinks) {\n return '';\n }\n\n return `${workPackage.$links.fileLinks.href}?pageSize=0`;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { from } from 'rxjs';\nimport { StateService } from '@uirouter/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WpTabDefinition } from 'core-app/features/work-packages/components/wp-tabs/components/wp-tab-wrapper/tab';\nimport {\n WorkPackageRelationsTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/relations-tab/relations-tab.component';\nimport {\n WorkPackageOverviewTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/overview-tab/overview-tab.component';\nimport {\n WorkPackageActivityTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-tab.component';\nimport {\n WorkPackageWatchersTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/watchers-tab.component';\nimport {\n WorkPackageFilesTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/files-tab/op-files-tab.component';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n workPackageWatchersCount,\n} from 'core-app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-watchers-count.function';\nimport {\n workPackageRelationsCount,\n} from 'core-app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-relations-count.function';\nimport {\n workPackageNotificationsCount,\n} from 'core-app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-notifications-count.function';\nimport {\n workPackageFilesCount,\n} from 'core-app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-files-count.function';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkPackageTabsService {\n private registeredTabs:WpTabDefinition[];\n\n constructor(\n private $state:StateService,\n private I18n:I18nService,\n private injector:Injector,\n ) {\n this.registeredTabs = this.buildDefaultTabs();\n }\n\n get tabs():WpTabDefinition[] {\n return [...this.registeredTabs];\n }\n\n register(...tabs:WpTabDefinition[]):void {\n this.registeredTabs = [\n ...this.registeredTabs,\n ...tabs,\n ];\n }\n\n patchTabCondition(id:string, displayable:(workPackage:WorkPackageResource, $state:StateService) => boolean):void {\n const tabDefinition = this.registeredTabs.find((tab) => tab.id === id);\n if (tabDefinition) {\n tabDefinition.displayable = displayable;\n }\n }\n\n getDisplayableTabs(workPackage:WorkPackageResource):WpTabDefinition[] {\n return this\n .tabs\n .filter(\n (tab) => !tab.displayable || tab.displayable(workPackage, this.$state),\n )\n .map(\n (tab) => ({\n ...tab,\n counter: tab.count\n ? (injector:Injector) => tab.count!(workPackage, injector || this.injector) // eslint-disable-line @typescript-eslint/no-non-null-assertion\n : (_:Injector) => from([0]),\n }),\n );\n }\n\n getTab(tabId:string, workPackage:WorkPackageResource):WpTabDefinition|undefined {\n return this.getDisplayableTabs(workPackage).find(({ id }) => id === tabId);\n }\n\n private buildDefaultTabs():WpTabDefinition[] {\n return [\n {\n component: WorkPackageOverviewTabComponent,\n name: this.I18n.t('js.work_packages.tabs.overview'),\n id: 'overview',\n displayable: (_, $state) => $state.includes('**.details.*'),\n },\n {\n id: 'activity',\n component: WorkPackageActivityTabComponent,\n name: I18n.t('js.work_packages.tabs.activity'),\n count: workPackageNotificationsCount,\n showCountAsBubble: true,\n },\n {\n id: 'files',\n component: WorkPackageFilesTabComponent,\n name: I18n.t('js.work_packages.tabs.files'),\n count: workPackageFilesCount,\n },\n {\n id: 'relations',\n component: WorkPackageRelationsTabComponent,\n name: I18n.t('js.work_packages.tabs.relations'),\n count: workPackageRelationsCount,\n },\n {\n id: 'watchers',\n component: WorkPackageWatchersTabComponent,\n name: I18n.t('js.work_packages.tabs.watchers'),\n displayable: (workPackage) => !!workPackage.watchers,\n count: workPackageWatchersCount,\n },\n ];\n }\n}\n","import * as moment from 'moment/moment';\n\nfunction paddedNumber(input:number):string {\n return input.toString().padStart(2, '0');\n}\n\nexport function formatElapsedTime(startTime:string):string {\n const start = moment(startTime);\n const now = moment();\n const duration = now.diff(start, 'seconds');\n\n const hours = Math.floor(duration / 3600);\n const minutes = Math.floor((duration - (hours * 3600)) / 60);\n const seconds = duration - (hours * 3600) - (minutes * 60);\n\n return [\n paddedNumber(hours),\n paddedNumber(minutes),\n paddedNumber(seconds),\n ].join(':');\n}\n","\n \n \n \n \n {{ elapsed$ | async }}\n \n \n \n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Injector,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { TimeEntryCreateService } from 'core-app/shared/components/time_entries/create/create.service';\nimport {\n filter,\n map,\n switchMap,\n} from 'rxjs/operators';\nimport {\n firstValueFrom,\n from,\n Observable,\n timer,\n} from 'rxjs';\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport * as moment from 'moment';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { TimeEntryTimerService } from 'core-app/shared/components/time_entries/services/time-entry-timer.service';\nimport { formatElapsedTime } from 'core-app/features/work-packages/components/wp-timer-button/time-formatter.helper';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { StopExistingTimerModalComponent } from 'core-app/shared/components/time_entries/timer/stop-existing-timer-modal.component';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { TurboRequestsService } from 'core-app/core/turbo/turbo-requests.service';\n\n@Component({\n selector: 'op-wp-timer-button',\n templateUrl: './wp-timer-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageTimerButtonComponent extends UntilDestroyedMixin implements AfterViewInit, OnDestroy {\n @Input() public workPackage:WorkPackageResource;\n @InjectField() PathHelper:PathHelperService;\n @InjectField() TurboRequests:TurboRequestsService;\n\n timer$ = this.timeEntryService.activeTimer$;\n\n elapsed$:Observable = timer(0, 1000)\n .pipe(\n switchMap(() => this.timer$),\n filter((timeEntry) => timeEntry !== null),\n map((timeEntry:TimeEntryResource) => formatElapsedTime(timeEntry.createdAt as string)),\n );\n\n text = {\n workPackage: this.I18n.t('js.label_work_package'),\n start_timer: this.I18n.t('js.timer.start_new_timer'),\n stop_timer: this.I18n.t('js.timer.button_stop'),\n timer_already_stopped: this.I18n.t('js.timer.timer_already_stopped'),\n };\n\n private closeDialogHandler:EventListener = this.handleTimeEntryDialogClose.bind(this);\n private shouldStartNewTimer = false;\n\n constructor(\n readonly injector:Injector,\n readonly I18n:I18nService,\n readonly apiV3Service:ApiV3Service,\n readonly timeEntryService:TimeEntryTimerService,\n readonly timeEntryCreateService:TimeEntryCreateService,\n readonly halEditing:HalResourceEditingService,\n readonly modalService:OpModalService,\n readonly schemaCache:SchemaCacheService,\n readonly timezoneService:TimezoneService,\n readonly toastService:ToastService,\n readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n ngAfterViewInit():void {\n document.addEventListener('dialog:close', this.closeDialogHandler);\n }\n\n ngOnDestroy():void {\n document.removeEventListener('dialog:close', this.closeDialogHandler);\n }\n\n activeForWorkPackage(entry:TimeEntryResource | null):boolean {\n return !!entry && entry.workPackage.href === this.workPackage.href;\n }\n\n clear():void {\n this.timeEntryService.timer$.next(null);\n }\n\n async stop() {\n const active = await firstValueFrom(this.timeEntryService.refresh());\n\n if (!active) {\n return this.toastService.addWarning(this.text.timer_already_stopped);\n }\n\n return this.TurboRequests.request(\n `${this.PathHelper.timeEntryEditDialog(active.id as string)}`,\n { method: 'GET' },\n );\n }\n\n start():void {\n this\n .timeEntryService\n .refresh()\n .subscribe((active) => {\n if (active) {\n this.showStopModal(active)\n .then(() => {\n this.shouldStartNewTimer = true;\n void this.stop();\n })\n .catch(() => undefined);\n } else {\n this.startTimer();\n }\n });\n }\n\n private startTimer():void {\n this.timeEntryCreateService\n .createNewTimeEntry(moment(), this.workPackage, true)\n .pipe(\n switchMap((changeset) => from(this.halEditing.save(changeset))),\n map((result) => result.resource as TimeEntryResource),\n )\n .subscribe((active) => {\n this.timeEntryService.timer$.next(active);\n });\n }\n\n private showStopModal(active:TimeEntryResource):Promise {\n return new Promise((resolve, reject) => {\n this\n .modalService\n .show(StopExistingTimerModalComponent, this.injector, { timer: active })\n .subscribe((modal) => modal.closingEvent.subscribe(() => {\n if (modal.confirmed) {\n resolve();\n } else {\n reject();\n }\n }));\n });\n }\n\n private handleTimeEntryDialogClose(event:CustomEvent):void {\n const { detail: { dialog, submitted } } = event as { detail:{ dialog:HTMLDialogElement, submitted:boolean } };\n const isOngoing = dialog.dataset.ongoing === 'true';\n\n if (dialog.id === 'time-entry-dialog' && submitted && isOngoing) {\n this.timeEntryService.timer$.next(null);\n if (this.shouldStartNewTimer) {\n this.shouldStartNewTimer = false;\n this.startTimer();\n }\n }\n }\n}\n","
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'wp-type-status',\n templateUrl: './wp-type-status.html',\n})\nexport class WorkPackageTypeStatusComponent {\n @Input('workPackage') workPackage:WorkPackageResource;\n}\n","\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageWatchersService } from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watchers.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\n@Component({\n selector: 'wp-watcher-button',\n templateUrl: './wp-watcher-button.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageWatcherButtonComponent extends UntilDestroyedMixin implements OnInit {\n @Input('workPackage') public workPackage:WorkPackageResource;\n\n @Input('disabled') public disabled = false;\n\n public buttonTitle:string;\n\n public buttonClass:string;\n\n public buttonId:string;\n\n public watched:boolean;\n\n constructor(\n readonly I18n:I18nService,\n readonly wpWatchersService:WorkPackageWatchersService,\n readonly apiV3Service:ApiV3Service,\n readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp:WorkPackageResource) => {\n this.workPackage = wp;\n this.setWatchStatus();\n this.cdRef.detectChanges();\n });\n }\n\n public get isWatched() {\n return this.workPackage.hasOwnProperty('unwatch');\n }\n\n public get displayWatchButton() {\n return this.isWatched || this.workPackage.hasOwnProperty('watch');\n }\n\n public toggleWatch() {\n const toggleLink = this.nextStateLink();\n\n toggleLink(toggleLink.$link.payload).then(() => {\n this.wpWatchersService.clear(this.workPackage.id);\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .refresh();\n });\n }\n\n public nextStateLink() {\n const linkName = this.isWatched ? 'unwatch' : 'watch';\n return this.workPackage[linkName];\n }\n\n private setWatchStatus():void {\n if (this.isWatched) {\n this.buttonTitle = this.I18n.t('js.label_unwatch_work_package');\n this.buttonClass = '-active';\n this.buttonId = 'unwatch-button';\n this.watched = true;\n } else {\n this.buttonTitle = this.I18n.t('js.label_watch_work_package');\n this.buttonClass = '';\n this.buttonId = 'watch-button';\n this.watched = false;\n }\n }\n}\n","import {\n derive,\n input,\n InputState,\n multiInput,\n State,\n StatesGroup,\n} from '@openproject/reactivestates';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport {\n GroupObject,\n WorkPackageCollectionResource,\n} from 'core-app/features/hal/resources/wp-collection-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { WorkPackageDisplayRepresentationValue } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service';\nimport { QueryFilterInstanceSchemaResource } from 'core-app/features/hal/resources/query-filter-instance-schema-resource';\nimport { QueryFormResource } from 'core-app/features/hal/resources/query-form-resource';\nimport { QuerySortByResource } from 'core-app/features/hal/resources/query-sort-by-resource';\nimport { QueryGroupByResource } from 'core-app/features/hal/resources/query-group-by-resource';\nimport { ShareResource } from 'core-app/features/hal/resources/share-resource';\n\n@Injectable()\nexport class IsolatedQuerySpace extends StatesGroup {\n name = 'IsolatedQuerySpace';\n\n // The query that results in this table state\n query:InputState = input();\n\n // the query form associated with the table\n queryForm = input();\n\n // the results associated with the table/time-entry-changeset\n results = input();\n\n // all groups returned as results\n groups = input();\n\n // Set of columns in strict order of appearance\n columns = input();\n\n // Current state of collapsed groups (if any)\n collapsedGroups = input<{ [identifier:string]:boolean }>();\n\n // State to be updated when the table is up to date\n tableRendered = input();\n\n // Event to be raised when the timeline is up to date\n timelineRendered = new Subject();\n\n renderedWorkPackages:State = derive(this.tableRendered, ($) => $.pipe(\n map((rows) => rows.filter((row) => !!row.workPackageId)),\n ));\n\n renderedWorkPackageIds:State = derive(this.renderedWorkPackages, ($) => $.pipe(\n map((rows) => rows.map((row) => row.workPackageId!.toString())),\n ));\n\n // Subject used to unregister all listeners of states above.\n stopAllSubscriptions = new Subject();\n\n // Required work packages to be rendered by hierarchy mode + relation columns\n additionalRequiredWorkPackages = input();\n\n // Cached shares for work packages\n workPackageSharesCache = multiInput();\n\n // Input state that emits whenever table services have initialized\n initialized = input();\n\n // Available states\n available = {\n // Available columns\n columns: input(),\n\n // Available SortBy Columns\n sortBy: input(),\n\n // Available GroupBy columns\n groupBy: input(),\n\n // Available filter schemas (derived from their schema)\n filters: input(),\n\n // Display of the WP results\n displayRepresentation: input(),\n };\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Directive, ElementRef } from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport {\n OpTableActionsService,\n} from 'core-app/features/work-packages/components/wp-table/table-actions/table-actions.service';\nimport {\n WorkPackageViewRelationColumnsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport {\n WorkPackageViewPaginationService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.service';\nimport {\n WorkPackageViewGroupByService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\nimport {\n WorkPackageViewHierarchiesService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport {\n WorkPackageViewSortByService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport {\n WorkPackageViewColumnsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport {\n WorkPackageViewFiltersService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport {\n WorkPackageViewTimelineService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport {\n WorkPackageViewSelectionService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport {\n WorkPackageViewSumService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport {\n WorkPackageViewAdditionalElementsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-additional-elements.service';\nimport {\n WorkPackageViewHighlightingService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service';\nimport { WorkPackageCreateService } from 'core-app/features/work-packages/components/wp-new/wp-create.service';\nimport {\n WorkPackageStatesInitializationService,\n} from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service';\nimport {\n WorkPackageViewFocusService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport {\n HalResourceEditingService,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\nimport {\n WorkPackageRelationsHierarchyService,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport {\n WorkPackageFiltersService,\n} from 'core-app/features/work-packages/components/filters/wp-filters/wp-filters.service';\nimport {\n WorkPackageContextMenuHelperService,\n} from 'core-app/features/work-packages/components/wp-table/context-menu-helper/wp-context-menu-helper.service';\nimport {\n WorkPackageInlineCreateService,\n} from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport {\n WpChildrenInlineCreateService,\n} from 'core-app/features/work-packages/components/wp-relations/embedded/children/wp-children-inline-create.service';\nimport {\n WpRelationInlineCreateService,\n} from 'core-app/features/work-packages/components/wp-relations/embedded/relations/wp-relation-inline-create.service';\nimport {\n WorkPackagesListChecksumService,\n} from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport {\n TableDragActionsRegistryService,\n} from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-actions-registry.service';\nimport {\n WorkPackageViewOrderService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service';\nimport { CausedUpdatesService } from 'core-app/features/boards/board/caused-updates/caused-updates.service';\nimport {\n WorkPackageCardViewService,\n} from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-view.service';\nimport {\n WorkPackageViewDisplayRepresentationService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service';\nimport {\n WorkPackageViewIncludeSubprojectsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-include-subprojects.service';\nimport {\n WorkPackageViewHierarchyIdentationService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy-indentation.service';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { TimeEntryCreateService } from 'core-app/shared/components/time_entries/create/create.service';\nimport {\n WorkPackageViewCollapsedGroupsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-collapsed-groups.service';\nimport { WorkPackageService } from 'core-app/features/work-packages/services/work-package.service';\nimport {\n WorkPackageViewBaselineService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport { TimeEntryEditService } from 'core-app/shared/components/time_entries/edit/edit.service';\n\n/**\n * Directive to open a work package query 'space', an isolated injector hierarchy\n * that provides access to query-bound data and services, especially around the querySpace services.\n *\n * If you add services that depend on a table state, they should be provided here, not globally\n * in a module.\n */\n@Directive({\n standalone: true,\n selector: '[opWorkPackageIsolatedQuerySpace]',\n providers: [\n // Override the hal notification service\n { provide: HalResourceNotificationService, useExisting: WorkPackageNotificationService },\n\n // Open the isolated space first, order is important here\n IsolatedQuerySpace,\n OpTableActionsService,\n\n // Work package table services\n WorkPackagesListChecksumService,\n WorkPackagesListService,\n WorkPackageViewRelationColumnsService,\n WorkPackageViewPaginationService,\n WorkPackageViewGroupByService,\n WorkPackageViewCollapsedGroupsService,\n WorkPackageViewHierarchiesService,\n WorkPackageViewSortByService,\n WorkPackageViewColumnsService,\n WorkPackageViewFiltersService,\n WorkPackageViewTimelineService,\n WorkPackageViewSelectionService,\n WorkPackageViewSumService,\n WorkPackageViewAdditionalElementsService,\n WorkPackageViewFocusService,\n WorkPackageViewHighlightingService,\n WorkPackageViewDisplayRepresentationService,\n WorkPackageViewIncludeSubprojectsService,\n WorkPackageViewOrderService,\n WorkPackageViewHierarchyIdentationService,\n WorkPackageViewBaselineService,\n CausedUpdatesService,\n\n WorkPackageService,\n WorkPackageRelationsHierarchyService,\n WorkPackageFiltersService,\n WorkPackageContextMenuHelperService,\n\n // Provide a separate service for creation events of WP Inline create\n // This can be hierarchically injected to provide isolated events on an embedded table\n WorkPackageInlineCreateService,\n WpChildrenInlineCreateService,\n WpRelationInlineCreateService,\n\n WorkPackageCardViewService,\n\n HalResourceEditingService,\n TimeEntryCreateService,\n TimeEntryEditService,\n WorkPackageCreateService,\n\n WorkPackageStatesInitializationService,\n\n // Table Drag & Drop actions\n TableDragActionsRegistryService,\n ],\n})\nexport class WorkPackageIsolatedQuerySpaceDirective {\n constructor(\n public querySpace:IsolatedQuerySpace,\n elementRef:ElementRef,\n ) {\n debugLog('Opening isolated query space in %O', elementRef.nativeElement);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nexport class WorkPackageCellLabels {\n constructor(public readonly center:HTMLDivElement|null,\n public readonly left:HTMLDivElement,\n public readonly leftHover:HTMLDivElement|null,\n public readonly right:HTMLDivElement,\n public readonly rightHover:HTMLDivElement|null,\n public readonly farRight:HTMLDivElement,\n public readonly withAlternativeLabels?:boolean) {\n }\n}\n","import * as moment from 'moment';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { DisplayFieldRenderer } from 'core-app/shared/components/fields/display/display-field-renderer';\nimport { Injector } from '@angular/core';\nimport { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\nimport { HierarchyRenderPass } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/hierarchy/hierarchy-render-pass';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport { WorkPackageTimelineTableController } from '../container/wp-timeline-container.directive';\nimport { WorkPackageCellLabels } from './wp-timeline-cell-labels';\nimport {\n calculatePositionValueForDayCount,\n calculatePositionValueForDayCountingPx,\n RenderInfo,\n timelineBackgroundElementClass,\n timelineElementCssClass,\n timelineMarkerSelectionStartClass,\n} from '../wp-timeline';\nimport Moment = moment.Moment;\n\nexport interface CellDateMovement {\n // Target values to move work package to\n startDate?:moment.Moment;\n dueDate?:moment.Moment;\n // Target value to move milestone to\n date?:moment.Moment;\n}\n\nexport type LabelPosition = 'left'|'right'|'farRight';\nexport type MouseDirection = 'left'|'right'|'both'|'create'|'dragright';\n\nexport const classNameLeftLabel = 'labelLeft';\nexport const classNameRightContainer = 'containerRight';\nexport const classNameRightLabel = 'labelRight';\nexport const classNameLeftHoverLabel = 'labelHoverLeft';\nexport const classNameRightHoverLabel = 'labelHoverRight';\nexport const classNameHoverStyle = '-label-style';\nexport const classNameFarRightLabel = 'labelFarRight';\nexport const classNameShowOnHover = 'show-on-hover';\nexport const classNameHideOnHover = 'hide-on-hover';\nexport const classNameLeftHandle = 'leftHandle';\nexport const classNameRightHandle = 'rightHandle';\nexport const classNameBarLabel = 'bar-label';\n\nexport class TimelineCellRenderer {\n @InjectField() wpTableTimeline:WorkPackageViewTimelineService;\n\n @InjectField() weekdayService:WeekdayService;\n\n @InjectField() schemaCache:SchemaCacheService;\n\n @InjectField() I18n!:I18nService;\n\n public text = {\n label_children_derived_duration: this.I18n.t('js.label_children_derived_duration'),\n };\n\n public ganttChartRowHeight:number;\n\n public mouseDirection:MouseDirection;\n\n public fieldRenderer:DisplayFieldRenderer = new DisplayFieldRenderer(this.injector, 'timeline');\n\n protected mouseDownCursorType:string;\n\n constructor(readonly injector:Injector,\n readonly workPackageTimeline:WorkPackageTimelineTableController) {\n this.ganttChartRowHeight = +getComputedStyle(document.documentElement)\n .getPropertyValue('--table-timeline--row-height')\n .replace('px', '');\n }\n\n public get type():string {\n return 'bar';\n }\n\n public canMoveDates(wp:WorkPackageResource):boolean {\n const schema = this.schemaCache.of(wp);\n return schema.startDate.writable && schema.dueDate.writable && schema.isAttributeEditable('startDate');\n }\n\n public isEmpty(wp:WorkPackageResource) {\n const start = moment(wp.startDate as any);\n const due = moment(wp.dueDate as any);\n const noStartAndDueValues = _.isNaN(start.valueOf()) && _.isNaN(due.valueOf());\n return noStartAndDueValues;\n }\n\n public displayPlaceholderUnderCursor(ev:MouseEvent, renderInfo:RenderInfo):HTMLElement {\n const [dateUnderCursor, dayOffset] = this.cursorDateAndDayOffset(ev, renderInfo);\n const duration = this.displayDurationForDate(renderInfo, dateUnderCursor);\n const width = duration * renderInfo.viewParams.pixelPerDay || 30;\n\n const placeholder = document.createElement('div');\n placeholder.style.pointerEvents = 'none';\n placeholder.style.position = 'absolute';\n placeholder.style.height = '1em';\n placeholder.style.width = `${width}px`;\n placeholder.style.zIndex = '9999';\n placeholder.style.left = `${dayOffset * renderInfo.viewParams.pixelPerDay}px`;\n this.applyTypeColor(renderInfo, placeholder);\n\n return placeholder;\n }\n\n /**\n * Assign changed dates to the work package.\n * For generic work packages, assigns start and finish date.\n *\n */\n public assignDateValues(\n change:WorkPackageChangeset,\n labels:WorkPackageCellLabels,\n dates:CellDateMovement,\n ):void {\n this.assignDate(change, 'startDate', dates.startDate as moment.Moment);\n this.assignDate(change, 'dueDate', dates.dueDate as moment.Moment);\n\n this.updateLabels(true, labels, change);\n }\n\n /**\n * Handle movement by days of the work package to either (or both) edge(s)\n * depending on which initial date was set.\n */\n public onDaysMoved(change:WorkPackageChangeset,\n dayUnderCursor:Moment,\n delta:number,\n direction:MouseDirection):CellDateMovement {\n const initialStartDate = change.pristineResource.startDate;\n const initialDueDate = change.pristineResource.dueDate;\n\n const now = moment().format('YYYY-MM-DD');\n\n const startDate = moment(change.projectedResource.startDate);\n const dueDate = moment(change.projectedResource.dueDate);\n\n const dates:CellDateMovement = {};\n\n if (direction === 'left') {\n dates.startDate = moment(initialStartDate || initialDueDate).add(delta, 'days');\n } else if (direction === 'right') {\n // When no due date is present and the start date is in the past,\n // we assume the task hasn't finished yet, meaning the end date is not in the past.\n // To cover this case we have to choose the start date, only when it's in the future,\n // and choose now if the start date is in the past.\n const calculatedDueDate = initialDueDate || (now > initialStartDate ? now : initialStartDate);\n dates.dueDate = moment(calculatedDueDate).add(delta, 'days');\n } else if (direction === 'both') {\n if (initialStartDate) {\n dates.startDate = moment(initialStartDate).add(delta, 'days');\n }\n if (initialDueDate) {\n dates.dueDate = moment(initialDueDate).add(delta, 'days');\n }\n } else if (direction === 'dragright') {\n dates.dueDate = startDate.clone().add(delta, 'days');\n }\n\n // avoid negative \"overdrag\" if only start or due are changed\n if (direction !== 'both') {\n if (dates.startDate !== undefined && dates.startDate.isAfter(dueDate)) {\n dates.startDate = dueDate;\n } else if (dates.dueDate !== undefined && dates.dueDate.isBefore(startDate)) {\n dates.dueDate = startDate;\n }\n }\n\n return dates;\n }\n\n public onMouseDown(ev:MouseEvent,\n dateForCreate:string|null,\n renderInfo:RenderInfo,\n labels:WorkPackageCellLabels):MouseDirection {\n // check for active selection mode\n if (renderInfo.viewParams.activeSelectionMode) {\n renderInfo.viewParams.activeSelectionMode(renderInfo.workPackage);\n ev.preventDefault();\n this.mouseDirection = 'both';\n return 'both'; // irrelevant\n }\n\n const projection = renderInfo.change.projectedResource;\n let direction:Exclude;\n\n // Update the cursor and maybe set start/due values\n if (jQuery(ev.target!).hasClass(classNameLeftHandle)) {\n // only left\n direction = 'left';\n this.mouseDirection = 'left';\n this.mouseDownCursorType = 'col-resize';\n if (projection.startDate === null) {\n projection.startDate = projection.dueDate;\n }\n } else if (jQuery(ev.target!).hasClass(classNameRightHandle) || dateForCreate) {\n // only right\n direction = 'right';\n this.mouseDirection = 'right';\n this.mouseDownCursorType = 'col-resize';\n } else {\n // both\n direction = 'both';\n this.mouseDirection = 'both';\n this.mouseDownCursorType = 'ew-resize';\n }\n\n this.workPackageTimeline.forceCursor(this.mouseDownCursorType);\n\n if (dateForCreate) {\n const dateUnderCursor = this.cursorDateAndDayOffset(ev, renderInfo)[0];\n const duration = this.displayDurationForDate(renderInfo, dateUnderCursor) - 1;\n\n projection.startDate = dateForCreate;\n projection.dueDate = moment(dateForCreate).add(duration, 'days').format('YYYY-MM-DD');\n direction = 'dragright';\n this.mouseDirection = 'dragright';\n }\n\n this.updateLabels(true, labels, renderInfo.change);\n\n return direction;\n }\n\n public onMouseDownEnd(labels:WorkPackageCellLabels, change:WorkPackageChangeset) {\n // Reset the cursor set by onMouseDown\n this.mouseDownCursorType = '';\n this.workPackageTimeline.forceCursor(this.mouseDownCursorType);\n this.updateLabels(false, labels, change);\n }\n\n /**\n * @return true, if the element should still be displayed.\n * false, if the element must be removed from the timeline.\n */\n public update(element:HTMLDivElement, labels:WorkPackageCellLabels|null, renderInfo:RenderInfo):boolean {\n const { change } = renderInfo;\n const bar = element.querySelector(`.${timelineBackgroundElementClass}`) as HTMLElement;\n let start = moment(change.projectedResource.startDate);\n let due = moment(change.projectedResource.dueDate);\n\n if (_.isNaN(start.valueOf()) && _.isNaN(due.valueOf())) {\n element.style.visibility = 'hidden';\n } else {\n element.style.visibility = 'visible';\n }\n\n // only start date, fade out bar to the right\n if (_.isNaN(due.valueOf()) && !_.isNaN(start.valueOf())) {\n // Set due date to today\n due = moment();\n bar.setAttribute('style', 'background-image: linear-gradient(90deg, rgba(255,255,255,0) 0%, #F1F1F1 100%) !important');\n }\n\n // only finish date, fade out bar to the left\n if (_.isNaN(start.valueOf()) && !_.isNaN(due.valueOf())) {\n start = due.clone();\n bar.setAttribute('style', 'background-image: linear-gradient(90deg, #F1F1F1 0%, rgba(255,255,255,0) 80%) !important');\n }\n\n this.setElementPositionAndSize(element, renderInfo, start, due);\n\n // Update labels if any\n if (labels) {\n this.updateLabels(false, labels, change);\n }\n\n this.checkForActiveSelectionMode(renderInfo, bar);\n this.checkForSpecialDisplaySituations(renderInfo, bar);\n this.applyTypeColor(renderInfo, bar);\n\n return true;\n }\n\n public cursorDateAndDayOffset(ev:MouseEvent, renderInfo:RenderInfo):[Moment, number] {\n const dayOffset = Math.floor(ev.offsetX / renderInfo.viewParams.pixelPerDay);\n const dateUnderCursor = renderInfo.viewParams.dateDisplayStart.clone().add(dayOffset, 'days');\n return [dateUnderCursor, dayOffset];\n }\n\n protected checkForActiveSelectionMode(renderInfo:RenderInfo, element:HTMLElement) {\n if (renderInfo.viewParams.activeSelectionMode) {\n element.style.backgroundImage = ''; // required! unable to disable \"fade out bar\" with css\n\n if (renderInfo.viewParams.selectionModeStart === `${renderInfo.workPackage.id!}`) {\n jQuery(element).addClass(timelineMarkerSelectionStartClass);\n element.style.background = 'none';\n }\n }\n }\n\n /**\n * Takes the date under the cursor and the work package's duration.\n * It calculates the adjusted duration based on the number of NonWorkingDays\n * that fall in the range of the ( date .. date + duration ).\n * @param renderInfo\n * @param date where we start the duration calculation from\n * @return {number} the NonWorkingDays adjusted duration\n */\n\n protected displayDurationForDate(renderInfo:RenderInfo, date:Moment):number {\n const { workPackage } = renderInfo;\n let duration = Number(moment.duration(workPackage.duration || 'P1D').asDays().toFixed(0));\n\n if (workPackage.ignoreNonWorkingDays) {\n return duration;\n }\n\n const { dateDisplayEnd } = renderInfo.viewParams;\n let newDuration = 0;\n\n for (newDuration; newDuration < duration; newDuration++) {\n const currentDate = date.clone().add(newDuration, 'days');\n\n // Stop adding duration when we reach end of the visible table\n if (currentDate > dateDisplayEnd) {\n break;\n }\n // Extend the duration if the currentDate is non-working\n if (this.weekdayService.isNonWorkingDay(currentDate.toDate() || this.workPackageTimeline.isNonWorkingDay(currentDate.toDate()))) {\n duration += 1;\n }\n }\n return newDuration;\n }\n\n getMarginLeftOfLeftSide(renderInfo:RenderInfo):number {\n const projection = renderInfo.change.projectedResource;\n\n let start = moment(projection.startDate);\n const due = moment(projection.dueDate);\n start = _.isNaN(start.valueOf()) ? due.clone() : start;\n\n const offsetStart = start.diff(renderInfo.viewParams.dateDisplayStart, 'days');\n\n return calculatePositionValueForDayCountingPx(renderInfo.viewParams, offsetStart);\n }\n\n getMarginLeftOfRightSide(renderInfo:RenderInfo):number {\n const projection = renderInfo.change.projectedResource;\n\n let start = moment(projection.startDate);\n let due = moment(projection.dueDate);\n\n start = _.isNaN(start.valueOf()) ? due.clone() : start;\n due = _.isNaN(due.valueOf()) ? start.clone() : due;\n\n const offsetStart = start.diff(renderInfo.viewParams.dateDisplayStart, 'days');\n const duration = due.diff(start, 'days') + 1;\n\n return calculatePositionValueForDayCountingPx(renderInfo.viewParams, offsetStart + duration);\n }\n\n getPaddingLeftForIncomingRelationLines(renderInfo:RenderInfo):number {\n return renderInfo.viewParams.pixelPerDay / 8;\n }\n\n getPaddingRightForOutgoingRelationLines(renderInfo:RenderInfo):number {\n return 0;\n }\n\n /**\n * Render the generic cell element, a bar spanning from\n * start to finish date.\n */\n public render(renderInfo:RenderInfo):HTMLDivElement {\n const container = document.createElement('div');\n const bar = document.createElement('div');\n const left = document.createElement('div');\n const right = document.createElement('div');\n\n container.className = `${timelineElementCssClass} ${this.type}`;\n bar.className = timelineBackgroundElementClass;\n left.className = classNameLeftHandle;\n right.className = classNameRightHandle;\n container.appendChild(bar);\n container.appendChild(left);\n container.appendChild(right);\n\n return container;\n }\n\n createAndAddLabels(renderInfo:RenderInfo, element:HTMLElement):WorkPackageCellLabels {\n // create center label\n const labelCenter = document.createElement('div');\n labelCenter.classList.add(classNameBarLabel);\n this.applyTypeColor(renderInfo, labelCenter);\n element.appendChild(labelCenter);\n\n // create left label\n const labelLeft = document.createElement('div');\n labelLeft.classList.add(classNameLeftLabel, classNameHideOnHover);\n element.appendChild(labelLeft);\n\n // create right container\n const containerRight = document.createElement('div');\n containerRight.classList.add(classNameRightContainer);\n element.appendChild(containerRight);\n\n // create right label\n const labelRight = document.createElement('div');\n labelRight.classList.add(classNameRightLabel, classNameHideOnHover);\n containerRight.appendChild(labelRight);\n\n // create far right label\n const labelFarRight = document.createElement('div');\n labelFarRight.classList.add(classNameFarRightLabel, classNameHideOnHover);\n containerRight.appendChild(labelFarRight);\n\n // create left hover label\n const labelHoverLeft = document.createElement('div');\n labelHoverLeft.classList.add(classNameLeftHoverLabel, classNameShowOnHover, classNameHoverStyle);\n element.appendChild(labelHoverLeft);\n\n // create right hover label\n const labelHoverRight = document.createElement('div');\n labelHoverRight.classList.add(classNameRightHoverLabel, classNameShowOnHover, classNameHoverStyle);\n element.appendChild(labelHoverRight);\n\n const labels = new WorkPackageCellLabels(labelCenter, labelLeft, labelHoverLeft, labelRight, labelHoverRight, labelFarRight);\n this.updateLabels(false, labels, renderInfo.change);\n\n return labels;\n }\n\n protected applyTypeColor(renderInfo:RenderInfo, bg:HTMLElement):void {\n const wp = renderInfo.workPackage;\n const { type } = wp;\n const selectionMode = renderInfo.viewParams.activeSelectionMode;\n\n // Don't apply the class in selection mode\n const { id } = type;\n if (selectionMode) {\n bg.classList.remove(Highlighting.backgroundClass('type', id!));\n } else {\n bg.classList.add(Highlighting.backgroundClass('type', id!));\n }\n }\n\n protected assignDate(change:WorkPackageChangeset, attributeName:string, value:moment.Moment) {\n if (value) {\n change.projectedResource[attributeName] = value.format('YYYY-MM-DD');\n }\n }\n\n setElementPositionAndSize(element:HTMLElement, renderInfo:RenderInfo, start:moment.Moment, due:moment.Moment) {\n const { viewParams } = renderInfo;\n // offset left\n const offsetStart = start.diff(viewParams.dateDisplayStart, 'days');\n element.style.left = calculatePositionValueForDayCount(viewParams, offsetStart);\n\n // duration\n const duration = due.diff(start, 'days') + 1;\n element.style.width = calculatePositionValueForDayCount(viewParams, duration);\n\n // ensure minimum width\n if (!_.isNaN(start.valueOf()) || !_.isNaN(due.valueOf())) {\n const minWidth = _.max([renderInfo.viewParams.pixelPerDay, 2]);\n element.style.minWidth = `${minWidth}px`;\n }\n }\n\n cursorOrDatesAreNonWorking(evOrDates:MouseEvent|Moment[], renderInfo:RenderInfo, direction?:MouseDirection|null):boolean {\n if (renderInfo.workPackage.ignoreNonWorkingDays) {\n return false;\n }\n\n const dates = (evOrDates instanceof MouseEvent)\n ? [this.cursorDateAndDayOffset(evOrDates, renderInfo)[0]]\n : evOrDates;\n if (!renderInfo.workPackage.ignoreNonWorkingDays && direction === 'both'\n && (this.weekdayService.isNonWorkingDay(dates[dates.length - 1].toDate() || this.workPackageTimeline.isNonWorkingDay(dates[dates.length - 1].toDate())))) {\n return false;\n }\n return dates.some((date) => (this.weekdayService.isNonWorkingDay(date.toDate()) || this.workPackageTimeline.isNonWorkingDay(date.toDate())));\n }\n\n /**\n * Changes the presentation of the work package.\n *\n * Known cases:\n * 1. Display a clamp if this work package is a parent element\n * and display a box wrapping all the visible children when the\n * parent is hovered\n */\n checkForSpecialDisplaySituations(renderInfo:RenderInfo, bar:HTMLElement) {\n const wp = renderInfo.workPackage;\n const row = bar.parentElement!.parentElement!;\n const selectionMode = renderInfo.viewParams.activeSelectionMode;\n\n // Cannot edit the work package if it has children\n // and it is not on 'Manual scheduling' mode\n if (!wp.isLeaf && !selectionMode && !wp.scheduleManually) {\n bar.classList.add('-readonly');\n } else {\n bar.classList.remove('-readonly');\n }\n\n // Display the children's duration clamp\n if (wp.derivedStartDate && wp.derivedDueDate) {\n const derivedStartDate = moment(wp.derivedStartDate);\n const derivedDueDate = moment(wp.derivedDueDate);\n const startDate = moment(renderInfo.change.projectedResource.startDate);\n const dueDate = moment(renderInfo.change.projectedResource.dueDate);\n const previousChildrenDurationBar = row.querySelector('.children-duration-bar');\n const childrenDurationBar = document.createElement('div');\n const childrenDurationHoverContainer = document.createElement('div');\n const visibleChildren = document.querySelectorAll(`.wp-timeline-cell.__hierarchy-group-${wp.id}:not([class*='__collapsed-group'])`).length || 0;\n\n childrenDurationBar.classList.add('children-duration-bar', '-clamp-style');\n childrenDurationBar.title = this.text.label_children_derived_duration;\n childrenDurationHoverContainer.classList.add('children-duration-hover-container');\n childrenDurationHoverContainer.style.height = `${this.ganttChartRowHeight * visibleChildren + 10}px`;\n\n if (derivedStartDate.isBefore(startDate) || derivedDueDate.isAfter(dueDate)) {\n childrenDurationBar.classList.add('-duration-overflow');\n }\n\n this.setElementPositionAndSize(childrenDurationBar, renderInfo, derivedStartDate, derivedDueDate);\n\n if (previousChildrenDurationBar) {\n previousChildrenDurationBar.remove();\n }\n\n childrenDurationBar.appendChild(childrenDurationHoverContainer);\n row.appendChild(childrenDurationBar);\n }\n\n // Check for non-working days and display a not-allowed cursor\n // when the startDate, dueDate are non-working days\n const { startDate, dueDate } = renderInfo.change.projectedResource;\n const invalidDates = this.cursorOrDatesAreNonWorking([moment(startDate), moment(dueDate)], renderInfo, this.mouseDirection);\n\n if (invalidDates) {\n this.workPackageTimeline.forceCursor('not-allowed');\n } else {\n // Restore the previous cursor set by onMouseDown\n this.workPackageTimeline.forceCursor(this.mouseDownCursorType);\n }\n }\n\n protected updateLabels(activeDragNDrop:boolean,\n labels:WorkPackageCellLabels,\n change:WorkPackageChangeset) {\n const labelConfiguration = this.wpTableTimeline.getNormalizedLabels(change.projectedResource);\n\n if (!activeDragNDrop) {\n // normal display\n this.renderLabel(change, labels, 'left', labelConfiguration.left);\n this.renderLabel(change, labels, 'right', labelConfiguration.right);\n this.renderLabel(change, labels, 'farRight', labelConfiguration.farRight);\n }\n\n // Update hover labels\n this.renderHoverLabels(labels, change);\n }\n\n protected renderHoverLabels(labels:WorkPackageCellLabels, change:WorkPackageChangeset) {\n this.renderLabel(change, labels, 'leftHover', 'startDate');\n this.renderLabel(change, labels, 'rightHover', 'dueDate');\n }\n\n protected renderLabel(change:WorkPackageChangeset,\n labels:WorkPackageCellLabels,\n position:LabelPosition|'leftHover'|'rightHover',\n attribute:string|null) {\n // Get the label position\n // Skip label if it does not exist (milestones)\n const label = labels[position];\n if (!label) {\n return;\n }\n\n // Reset label value\n label.innerHTML = '';\n\n if (attribute === null) {\n label.classList.remove('not-empty');\n return;\n }\n\n // Get the rendered field\n const [field, span] = this.fieldRenderer.renderFieldValue(change.projectedResource, attribute, change);\n\n if (label && field && span) {\n span.classList.add('label-content');\n label.appendChild(span);\n label.classList.add('not-empty');\n } else if (label) {\n label.classList.remove('not-empty');\n }\n }\n\n protected isParentWithVisibleChildren(wp:WorkPackageResource):boolean {\n if (!this.workPackageTimeline.inHierarchyMode) {\n return false;\n }\n\n const renderPass = this.workPackageTimeline.workPackageTable.lastRenderPass as HierarchyRenderPass|null;\n if (renderPass) {\n return !!renderPass.parentsWithVisibleChildren[wp.id!];\n }\n\n return false;\n }\n}\n","import * as moment from 'moment';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport {\n calculatePositionValueForDayCountingPx,\n RenderInfo,\n timelineElementCssClass,\n} from '../wp-timeline';\n\nimport {\n classNameFarRightLabel,\n classNameHideOnHover,\n classNameHoverStyle,\n classNameLeftHoverLabel,\n classNameLeftLabel,\n classNameRightContainer,\n classNameRightHoverLabel,\n classNameRightLabel,\n classNameShowOnHover,\n CellDateMovement,\n LabelPosition,\n TimelineCellRenderer,\n MouseDirection,\n} from './timeline-cell-renderer';\nimport { WorkPackageCellLabels } from './wp-timeline-cell-labels';\nimport Moment = moment.Moment;\n\nexport class TimelineMilestoneCellRenderer extends TimelineCellRenderer {\n public get type():string {\n return 'milestone';\n }\n\n public isEmpty(wp:WorkPackageResource) {\n const date = moment(wp.date as any);\n return _.isNaN(date.valueOf());\n }\n\n public canMoveDates(wp:WorkPackageResource) {\n const schema = this.schemaCache.of(wp);\n return schema.date.writable && schema.isAttributeEditable('date');\n }\n\n public displayPlaceholderUnderCursor(ev:MouseEvent, renderInfo:RenderInfo):HTMLElement {\n const days = Math.floor(ev.offsetX / renderInfo.viewParams.pixelPerDay);\n\n const placeholder = document.createElement('div');\n placeholder.className = 'timeline-element milestone';\n placeholder.style.pointerEvents = 'none';\n placeholder.style.height = '1em';\n placeholder.style.width = '1em';\n placeholder.style.left = `${days * renderInfo.viewParams.pixelPerDay}px`;\n\n const diamond = document.createElement('div');\n diamond.className = 'diamond';\n diamond.style.left = '0.5em';\n diamond.style.height = '1em';\n diamond.style.width = '1em';\n placeholder.appendChild(diamond);\n\n this.applyTypeColor(renderInfo, diamond);\n\n return placeholder;\n }\n\n /**\n * Assign changed dates to the work package.\n * For generic work packages, assigns start and finish date .\n *\n */\n public assignDateValues(change:WorkPackageChangeset,\n labels:WorkPackageCellLabels,\n dates:any):void {\n this.assignDate(change, 'date', dates.date);\n this.updateLabels(true, labels, change);\n }\n\n /**\n * Handle movement by days of milestone.\n */\n public onDaysMoved(change:WorkPackageChangeset,\n dayUnderCursor:Moment,\n delta:number,\n _direction:MouseDirection):CellDateMovement {\n const initialDate = change.pristineResource.date;\n const dates:CellDateMovement = {};\n\n if (initialDate) {\n dates.date = moment(initialDate).add(delta, 'days');\n }\n\n return dates;\n }\n\n public onMouseDown(ev:MouseEvent,\n dateForCreate:string | null,\n renderInfo:RenderInfo,\n labels:WorkPackageCellLabels):MouseDirection {\n // check for active selection mode\n if (renderInfo.viewParams.activeSelectionMode) {\n renderInfo.viewParams.activeSelectionMode(renderInfo.workPackage);\n ev.preventDefault();\n return 'both'; // irrelevant\n }\n\n let direction:'both' | 'create' = 'both';\n this.workPackageTimeline.forceCursor('ew-resize');\n\n if (dateForCreate) {\n renderInfo.change.projectedResource.date = dateForCreate;\n direction = 'create';\n return direction;\n }\n\n this.updateLabels(true, labels, renderInfo.change);\n\n return direction;\n }\n\n public update(element:HTMLDivElement, labels:WorkPackageCellLabels|null, renderInfo:RenderInfo):boolean {\n const { viewParams } = renderInfo;\n const date = moment(renderInfo.change.projectedResource.date);\n\n // abort if no date\n if (_.isNaN(date.valueOf())) {\n return false;\n }\n\n const diamond = jQuery('.diamond', element)[0];\n\n diamond.style.width = `${15}px`;\n diamond.style.height = `${15}px`;\n diamond.style.width = `${15}px`;\n diamond.style.height = `${15}px`;\n diamond.style.marginLeft = `${-(15 / 2) + (renderInfo.viewParams.pixelPerDay / 2)}px`;\n this.applyTypeColor(renderInfo, diamond);\n\n // offset left\n const offsetStart = date.diff(viewParams.dateDisplayStart, 'days');\n element.style.left = `${calculatePositionValueForDayCountingPx(viewParams, offsetStart)}px`;\n\n // Update labels if any\n if (labels) {\n this.updateLabels(false, labels, renderInfo.change);\n }\n\n this.checkForActiveSelectionMode(renderInfo, diamond);\n\n return true;\n }\n\n getMarginLeftOfLeftSide(renderInfo:RenderInfo):number {\n const { change } = renderInfo;\n const start = moment(change.projectedResource.date);\n const offsetStart = start.diff(renderInfo.viewParams.dateDisplayStart, 'days');\n return calculatePositionValueForDayCountingPx(renderInfo.viewParams, offsetStart);\n }\n\n getMarginLeftOfRightSide(ri:RenderInfo):number {\n return this.getMarginLeftOfLeftSide(ri) + ri.viewParams.pixelPerDay;\n }\n\n getPaddingLeftForIncomingRelationLines(renderInfo:RenderInfo):number {\n return (renderInfo.viewParams.pixelPerDay / 2) - 1;\n }\n\n getPaddingRightForOutgoingRelationLines(renderInfo:RenderInfo):number {\n return (15 / 2);\n }\n\n /**\n * Render a milestone element, a single day event with no resize, but\n * move functionality.\n */\n public render(renderInfo:RenderInfo):HTMLDivElement {\n const element = document.createElement('div');\n element.className = `${timelineElementCssClass} ${this.type}`;\n\n const diamond = document.createElement('div');\n diamond.className = 'diamond';\n element.appendChild(diamond);\n\n return element;\n }\n\n createAndAddLabels(renderInfo:RenderInfo, element:HTMLElement):WorkPackageCellLabels {\n // create left label\n const labelLeft = document.createElement('div');\n labelLeft.classList.add(classNameLeftLabel, classNameHideOnHover);\n element.appendChild(labelLeft);\n\n // create right container\n const containerRight = document.createElement('div');\n containerRight.classList.add(classNameRightContainer);\n element.appendChild(containerRight);\n\n // create right label\n const labelRight = document.createElement('div');\n labelRight.classList.add(classNameRightLabel, classNameHideOnHover);\n containerRight.appendChild(labelRight);\n\n // create far right label\n const labelFarRight = document.createElement('div');\n labelFarRight.classList.add(classNameFarRightLabel, classNameHideOnHover);\n containerRight.appendChild(labelFarRight);\n\n // Create right hover label\n const labelHoverRight = document.createElement('div');\n labelHoverRight.classList.add(classNameRightHoverLabel, classNameShowOnHover, classNameHoverStyle);\n element.appendChild(labelHoverRight);\n\n // Create left hover label\n const labelHoverLeft = document.createElement('div');\n labelHoverLeft.classList.add(classNameLeftHoverLabel, classNameShowOnHover, classNameHoverStyle);\n element.appendChild(labelHoverLeft);\n\n const labels = new WorkPackageCellLabels(null, labelLeft, labelHoverLeft, labelRight, labelHoverRight, labelFarRight, renderInfo.withAlternativeLabels);\n this.updateLabels(false, labels, renderInfo.change);\n\n return labels;\n }\n\n protected renderHoverLabels(labels:WorkPackageCellLabels, change:WorkPackageChangeset) {\n if (labels.withAlternativeLabels) {\n this.renderLabel(change, labels, 'leftHover', 'date');\n this.renderLabel(change, labels, 'rightHover', 'subject');\n } else {\n this.renderLabel(change, labels, 'rightHover', 'date');\n }\n }\n\n protected updateLabels(activeDragNDrop:boolean,\n labels:WorkPackageCellLabels,\n change:WorkPackageChangeset) {\n const labelConfiguration = this.wpTableTimeline.getNormalizedLabels(change.projectedResource);\n\n if (!activeDragNDrop) {\n // normal display\n\n if (labels.withAlternativeLabels) {\n this.renderLabel(change, labels, 'right', 'subject');\n } else {\n // Show only one date field if left=start, right=dueDate\n if (labelConfiguration.left === 'startDate' && labelConfiguration.right === 'dueDate') {\n this.renderLabel(change, labels, 'left', null);\n this.renderLabel(change, labels, 'right', 'date');\n } else {\n this.renderLabel(change, labels, 'left', labelConfiguration.left);\n this.renderLabel(change, labels, 'right', labelConfiguration.right);\n }\n }\n\n this.renderLabel(change, labels, 'farRight', labelConfiguration.farRight);\n }\n\n // Update hover labels\n this.renderHoverLabels(labels, change);\n }\n\n protected renderLabel(change:WorkPackageChangeset,\n labels:WorkPackageCellLabels,\n position:LabelPosition|'leftHover'|'rightHover',\n attribute:string|null) {\n // Normalize attribute\n if (attribute === 'startDate' || attribute === 'dueDate') {\n attribute = 'date';\n }\n\n super.renderLabel(change, labels, position, attribute);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injector } from '@angular/core';\nimport * as moment from 'moment';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { KeyCodes } from 'core-app/shared/helpers/keyCodes.enum';\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\n\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { take } from 'rxjs/operators';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { WorkPackageCellLabels } from './wp-timeline-cell-labels';\nimport {\n MouseDirection,\n TimelineCellRenderer,\n} from './timeline-cell-renderer';\nimport { RenderInfo } from '../wp-timeline';\nimport { WorkPackageTimelineTableController } from '../container/wp-timeline-container.directive';\nimport Moment = moment.Moment;\n\nexport function registerWorkPackageMouseHandler(this:void,\n injector:Injector,\n getRenderInfo:() => RenderInfo,\n workPackageTimeline:WorkPackageTimelineTableController,\n halEditing:HalResourceEditingService,\n halEvents:HalEventsService,\n notificationService:WorkPackageNotificationService,\n loadingIndicator:LoadingIndicatorService,\n cell:HTMLElement,\n bar:HTMLDivElement,\n labels:WorkPackageCellLabels,\n renderer:TimelineCellRenderer,\n renderInfo:RenderInfo):void {\n let mouseDownStartDay:number|null = null; // also flag to signal active drag'n'drop\n renderInfo.change = halEditing.changeFor(renderInfo.workPackage);\n\n let placeholderForEmptyCell:HTMLElement;\n const jBody = jQuery('body');\n\n // handles change to existing work packages\n bar.onmousedown = (ev:MouseEvent) => {\n if (ev.which === 1) {\n // Left click only\n workPackageMouseDownFn(ev);\n }\n };\n\n // handles initial creation of start/due values\n cell.onmousemove = handleMouseMoveOnEmptyCell;\n\n function applyRendererMoveChanges(dayUnderCursor:Moment, days:number, direction:MouseDirection) {\n const moved = renderer.onDaysMoved(renderInfo.change, dayUnderCursor, days, direction);\n renderer.assignDateValues(renderInfo.change, labels, moved);\n renderer.update(bar, labels, renderInfo);\n }\n\n function getCursorOffsetInDaysFromLeft(ev:MouseEvent):number {\n const leftOffset = workPackageTimeline.getAbsoluteLeftCoordinates();\n const cursorOffsetLeftInPx = ev.clientX - leftOffset;\n return Math.floor(cursorOffsetLeftInPx / renderInfo.viewParams.pixelPerDay);\n }\n\n function workPackageMouseDownFn(ev:MouseEvent) {\n ev.preventDefault();\n\n // add/remove css class while drag'n'drop is active\n const classNameActiveDrag = 'active-drag';\n bar.classList.add(classNameActiveDrag);\n jBody.on('mouseup.timelinecell', () => bar.classList.remove(classNameActiveDrag));\n\n workPackageTimeline.disableViewParamsCalculation = true;\n mouseDownStartDay = getCursorOffsetInDaysFromLeft(ev);\n\n // If this wp is a parent element, changing it is not allowed\n // if it is not on 'Manual scheduling' mode\n // But adding a relation to it is.\n if (!renderInfo.workPackage.isLeaf && !renderInfo.viewParams.activeSelectionMode && !renderInfo.workPackage.scheduleManually) {\n return;\n }\n\n // Determine what attributes of the work package should be changed\n const direction = renderer.onMouseDown(ev, null, renderInfo, labels);\n\n jBody.on('mousemove.timelinecell', createMouseMoveFn(direction));\n jBody.on('keyup.timelinecell', keyPressFn);\n jBody.on('mouseup.timelinecell', () => deactivate(direction, false));\n }\n\n function createMouseMoveFn(direction:MouseDirection) {\n return (ev:JQuery.MouseMoveEvent) => {\n const days = getCursorOffsetInDaysFromLeft(ev.originalEvent as MouseEvent) - (mouseDownStartDay as number);\n const offsetDayCurrent = Math.floor(ev.offsetX / renderInfo.viewParams.pixelPerDay);\n const dayUnderCursor = renderInfo.viewParams.dateDisplayStart.clone().add(offsetDayCurrent, 'days');\n\n applyRendererMoveChanges(dayUnderCursor, days, direction);\n };\n }\n\n function keyPressFn(ev:JQuery.TriggeredEvent) {\n const kev:KeyboardEvent = ev.originalEvent as KeyboardEvent;\n if (kev.keyCode === KeyCodes.ESCAPE) {\n deactivate(null, true);\n }\n }\n\n function handleMouseMoveOnEmptyCell(ev:MouseEvent) {\n const wp = renderInfo.workPackage;\n\n if (!renderer.isEmpty(wp)) {\n return;\n }\n\n // placeholder logic\n placeholderForEmptyCell?.remove();\n placeholderForEmptyCell = renderer.displayPlaceholderUnderCursor(ev, renderInfo);\n\n const isEditable = (wp.isLeaf || wp.scheduleManually)\n && renderer.canMoveDates(wp)\n && !renderer.cursorOrDatesAreNonWorking(ev, renderInfo);\n\n if (!isEditable) {\n cell.style.cursor = 'not-allowed';\n return;\n }\n\n // display placeholder only if the timeline is editable\n cell.style.cursor = '';\n cell.appendChild(placeholderForEmptyCell);\n\n // abort if mouse leaves cell\n cell.onmouseleave = () => {\n placeholderForEmptyCell.remove();\n };\n\n // create logic\n cell.onmousedown = (evt) => {\n placeholderForEmptyCell.remove();\n\n evt.preventDefault();\n\n if (renderer.cursorOrDatesAreNonWorking(evt, renderInfo)) {\n return;\n }\n\n bar.style.pointerEvents = 'none';\n\n const [clickStart, offsetDayStart] = renderer.cursorDateAndDayOffset(evt, renderInfo);\n const dateForCreate = clickStart.format('YYYY-MM-DD');\n const direction = renderer.onMouseDown(evt, dateForCreate, renderInfo, labels);\n renderer.update(bar, labels, renderInfo);\n\n if (direction === 'create') {\n deactivate(direction, false);\n return;\n }\n\n jBody.on('mousemove.emptytimelinecell', mouseMoveOnEmptyCellFn(offsetDayStart, direction));\n jBody.on('mouseup.emptytimelinecell', () => deactivate(direction, false));\n\n cell.onmouseup = () => {\n deactivate(direction, false);\n };\n\n jBody.on('keyup.timelinecell', keyPressFn);\n };\n }\n\n function mouseMoveOnEmptyCellFn(offsetDayStart:number, mouseDownType:MouseDirection) {\n return (ev:JQuery.MouseMoveEvent) => {\n placeholderForEmptyCell.remove();\n const relativePosition = Math.abs(cell.getBoundingClientRect().x - ev.clientX);\n const offsetDayCurrent = Math.floor(relativePosition / renderInfo.viewParams.pixelPerDay);\n const dayUnderCursor = renderInfo.viewParams.dateDisplayStart.clone().add(offsetDayCurrent, 'days');\n const widthInDays = offsetDayCurrent - offsetDayStart;\n\n applyRendererMoveChanges(dayUnderCursor, widthInDays, mouseDownType);\n };\n }\n\n function deactivate(direction:MouseDirection|null, cancelled:boolean) {\n const change = renderInfo.change;\n workPackageTimeline.disableViewParamsCalculation = false;\n\n cell.onmousemove = handleMouseMoveOnEmptyCell;\n cell.onmousedown = () => undefined;\n cell.onmouseleave = () => undefined;\n cell.onmouseup = () => undefined;\n\n bar.style.pointerEvents = 'auto';\n\n jBody.off('.timelinecell');\n jBody.off('.emptytimelinecell');\n workPackageTimeline.resetCursor();\n mouseDownStartDay = null;\n\n // Cancel changes if the startDate or dueDate are not allowed\n const { startDate, dueDate } = change.projectedResource;\n const invalidDates = renderer.cursorOrDatesAreNonWorking([moment(startDate), moment(dueDate)], renderInfo, direction);\n\n if (cancelled || change.isEmpty() || invalidDates) {\n cancelChange();\n return;\n }\n\n // Remove due date from sending if we moved the work package as is\n // and duration was set\n const duration = change.pristineResource.duration as string|null;\n if (direction === 'both' && duration) {\n change.clearValue('dueDate');\n change.setValue('duration', duration);\n }\n\n // Persist the changes\n saveWorkPackage(renderInfo.change)\n .then(() => {\n renderInfo.change.clear();\n renderer.onMouseDownEnd(labels, renderInfo.change);\n })\n .catch((error) => {\n notificationService.handleRawError(error, renderInfo.workPackage);\n cancelChange();\n });\n }\n\n function cancelChange() {\n renderInfo.change.clear();\n renderer.update(bar, labels, renderInfo);\n renderer.onMouseDownEnd(labels, renderInfo.change);\n workPackageTimeline.refreshView();\n }\n\n function saveWorkPackage(change:WorkPackageChangeset) {\n const apiv3Service:ApiV3Service = injector.get(ApiV3Service);\n const querySpace:IsolatedQuerySpace = injector.get(IsolatedQuerySpace);\n\n // Remember the time before saving the work package to know which work packages to update\n const updatedAt = moment().toISOString();\n\n return (loadingIndicator.table.promise = halEditing\n .save(change)\n .then((result) => {\n notificationService.showSave(result.resource);\n const ids = _.map(querySpace.tableRendered.value, (row) => row.workPackageId);\n return apiv3Service\n .work_packages\n .filterUpdatedSince(ids, updatedAt)\n .get()\n .toPromise()\n .then(() => {\n halEvents.push(result.resource, { eventType: 'updated' });\n return querySpace.timelineRendered.pipe(take(1)).toPromise();\n });\n }));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { Injector } from '@angular/core';\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\n\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { registerWorkPackageMouseHandler } from './wp-timeline-cell-mouse-handler';\nimport { TimelineMilestoneCellRenderer } from './timeline-milestone-cell-renderer';\nimport { TimelineCellRenderer } from './timeline-cell-renderer';\nimport { WorkPackageCellLabels } from './wp-timeline-cell-labels';\nimport { RenderInfo } from '../wp-timeline';\nimport { WorkPackageTimelineTableController } from '../container/wp-timeline-container.directive';\n\nexport class WorkPackageTimelineCell {\n @InjectField() halEditing:HalResourceEditingService;\n\n @InjectField() halEvents:HalEventsService;\n\n @InjectField() notificationService:WorkPackageNotificationService;\n\n @InjectField() states:States;\n\n @InjectField() loadingIndicator:LoadingIndicatorService;\n\n @InjectField() schemaCache:SchemaCacheService;\n\n private wpElement:HTMLDivElement|null = null;\n\n private elementShape:string;\n\n private labels:WorkPackageCellLabels;\n\n constructor(public readonly injector:Injector,\n public workPackageTimeline:WorkPackageTimelineTableController,\n public renderers:{ milestone:TimelineMilestoneCellRenderer, generic:TimelineCellRenderer },\n public latestRenderInfo:RenderInfo,\n public classIdentifier:string,\n public workPackageId:string) {\n }\n\n getMarginLeftOfLeftSide():number {\n const renderer = this.cellRenderer(this.latestRenderInfo.workPackage);\n return renderer.getMarginLeftOfLeftSide(this.latestRenderInfo);\n }\n\n getMarginLeftOfRightSide():number {\n const renderer = this.cellRenderer(this.latestRenderInfo.workPackage);\n return renderer.getMarginLeftOfRightSide(this.latestRenderInfo);\n }\n\n getPaddingLeftForIncomingRelationLines():number {\n const renderer = this.cellRenderer(this.latestRenderInfo.workPackage);\n return renderer.getPaddingLeftForIncomingRelationLines(this.latestRenderInfo);\n }\n\n getPaddingRightForOutgoingRelationLines():number {\n const renderer = this.cellRenderer(this.latestRenderInfo.workPackage);\n return renderer.getPaddingRightForOutgoingRelationLines(this.latestRenderInfo);\n }\n\n canConnectRelations():boolean {\n const wp = this.latestRenderInfo.workPackage;\n if (this.schemaCache.of(wp).isMilestone) {\n return !_.isNil(wp.date);\n }\n\n return !_.isNil(wp.startDate) || !_.isNil(wp.dueDate);\n }\n\n public clear() {\n this.cellElement.html('');\n this.wpElement = null;\n }\n\n private get cellContainer() {\n return this.workPackageTimeline.timelineBody;\n }\n\n private get cellElement():JQuery {\n return this.cellContainer.find(`.${this.classIdentifier}`);\n }\n\n private lazyInit(renderer:TimelineCellRenderer, renderInfo:RenderInfo):Promise {\n const body = this.workPackageTimeline.timelineBody[0];\n const cell = this.cellElement;\n\n if (!cell.length) {\n return Promise.reject('uninitialized');\n }\n\n const wasRendered = this.wpElement !== null && body.contains(this.wpElement);\n\n // If already rendered with correct shape, ignore\n if (wasRendered && this.elementShape === renderer.type) {\n return Promise.resolve();\n }\n\n // Remove the element first if we're redrawing\n if (!renderInfo.isDuplicatedCell) {\n this.clear();\n }\n\n // Render the given element\n this.wpElement = renderer.render(renderInfo);\n this.labels = renderer.createAndAddLabels(renderInfo, this.wpElement);\n this.elementShape = renderer.type;\n\n // Register the element\n cell.append(this.wpElement);\n\n // Allow editing if editable\n if (renderer.canMoveDates(renderInfo.workPackage)) {\n this.wpElement.classList.add('-editable');\n\n registerWorkPackageMouseHandler(\n this.injector,\n () => this.latestRenderInfo,\n this.workPackageTimeline,\n this.halEditing,\n this.halEvents,\n this.notificationService,\n this.loadingIndicator,\n cell[0],\n this.wpElement,\n this.labels,\n renderer,\n renderInfo,\n );\n }\n\n return Promise.resolve();\n }\n\n private cellRenderer(workPackage:WorkPackageResource):TimelineCellRenderer {\n if (this.schemaCache.of(workPackage).isMilestone) {\n return this.renderers.milestone;\n }\n\n return this.renderers.generic;\n }\n\n public refreshView(renderInfo:RenderInfo) {\n this.latestRenderInfo = renderInfo;\n\n const renderer = this.cellRenderer(renderInfo.workPackage);\n\n // Render initial element if necessary\n this.lazyInit(renderer, renderInfo)\n .then(() => {\n // Render the upgrade from renderInfo\n const shouldBeDisplayed = renderer.update(\n this.wpElement as HTMLDivElement,\n this.labels,\n renderInfo,\n );\n\n if (!shouldBeDisplayed) {\n this.clear();\n }\n })\n .catch(() => null);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injector } from '@angular/core';\nimport { States } from 'core-app/core/states/states.service';\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WorkPackageTimelineTableController } from '../container/wp-timeline-container.directive';\nimport { RenderInfo } from '../wp-timeline';\nimport { TimelineCellRenderer } from './timeline-cell-renderer';\nimport { TimelineMilestoneCellRenderer } from './timeline-milestone-cell-renderer';\nimport { WorkPackageTimelineCell } from './wp-timeline-cell';\n\nexport class WorkPackageTimelineCellsRenderer {\n // Injections\n @InjectField() public states:States;\n\n @InjectField() public halEditing:HalResourceEditingService;\n\n public cells:{ [classIdentifier:string]:WorkPackageTimelineCell } = {};\n\n private cellRenderers:{ milestone:TimelineMilestoneCellRenderer, generic:TimelineCellRenderer };\n\n constructor(readonly injector:Injector,\n readonly wpTimeline:WorkPackageTimelineTableController) {\n this.cellRenderers = {\n milestone: new TimelineMilestoneCellRenderer(this.injector, wpTimeline),\n generic: new TimelineCellRenderer(this.injector, wpTimeline),\n };\n }\n\n public hasCell(wpId:string) {\n return this.getCellsFor(wpId).length > 0;\n }\n\n public getCellsFor(wpId:string):WorkPackageTimelineCell[] {\n return _.filter(this.cells, (cell) => cell.workPackageId === wpId) || [];\n }\n\n /**\n * Synchronize the currently active cells and render them all\n */\n public refreshAllCells() {\n // Create new cells and delete old ones\n this.synchronizeCells();\n\n // Update all cells\n _.each(this.cells, (cell) => this.refreshSingleCell(cell));\n }\n\n public refreshCellsFor(wpId:string) {\n _.each(this.getCellsFor(wpId), (cell) => this.refreshSingleCell(cell));\n }\n\n public refreshSingleCell(cell:WorkPackageTimelineCell, isDuplicatedCell?:boolean, withAlternativeLabels?:boolean) {\n const renderInfo = this.renderInfoFor(cell.workPackageId, isDuplicatedCell, withAlternativeLabels);\n\n if (renderInfo.workPackage) {\n cell.refreshView(renderInfo);\n }\n }\n\n /**\n * Synchronize the current cells:\n *\n * 1. Create new cells in workPackageIdOrder not yet tracked\n * 2. Remove old cells no longer contained.\n */\n private synchronizeCells() {\n const currentlyActive:string[] = Object.keys(this.cells);\n const newCells:string[] = [];\n\n _.each(this.wpTimeline.workPackageIdOrder, (renderedRow:RenderedWorkPackage) => {\n const wpId = renderedRow.workPackageId;\n\n // Ignore extra rows not tied to a work package\n if (!wpId) {\n return;\n }\n\n const state = this.states.workPackages.get(wpId);\n if (state.isPristine()) {\n return;\n }\n\n // As work packages may occur several times, get the unique identifier\n // to identify the cell\n const identifier = renderedRow.classIdentifier;\n\n // Create a cell unless we already have an active cell\n if (!this.cells[identifier]) {\n this.cells[identifier] = this.buildCell(identifier, wpId.toString());\n }\n\n newCells.push(identifier);\n });\n\n _.difference(currentlyActive, newCells).forEach((identifier:string) => {\n this.cells[identifier].clear();\n delete this.cells[identifier];\n });\n }\n\n private buildCell(classIdentifier:string, workPackageId:string) {\n return new WorkPackageTimelineCell(\n this.injector,\n this.wpTimeline,\n this.cellRenderers,\n this.renderInfoFor(workPackageId),\n classIdentifier,\n workPackageId,\n );\n }\n\n private renderInfoFor(wpId:string, isDuplicatedCell?:boolean, withAlternativeLabels?:boolean):RenderInfo {\n const wp = this.states.workPackages.get(wpId).value!;\n return {\n viewParams: this.wpTimeline.viewParameters,\n workPackage: wp,\n change: this.halEditing.changeFor(wp),\n isDuplicatedCell,\n withAlternativeLabels,\n };\n }\n\n public buildCellsAndRenderOnRow(workPackageIds:string[], rowClassIdentifier:string, isDuplicatedCell?:boolean):WorkPackageTimelineCell[] {\n const cells = workPackageIds.map((workPackageId) => this.buildCell(rowClassIdentifier, workPackageId));\n\n cells.forEach((cell:WorkPackageTimelineCell) => this.refreshSingleCell(cell, isDuplicatedCell, true));\n\n return cells;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Injector,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n IToast,\n ToastService,\n} from 'core-app/shared/components/toaster/toast.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport * as moment from 'moment';\nimport { Moment } from 'moment';\nimport {\n filter,\n takeUntil,\n take,\n} from 'rxjs/operators';\nimport {\n input,\n InputState,\n} from '@openproject/reactivestates';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { WorkPackageTimelineCellsRenderer } from 'core-app/features/work-packages/components/wp-table/timeline/cells/wp-timeline-cells-renderer';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { WorkPackageTimelineCell } from 'core-app/features/work-packages/components/wp-table/timeline/cells/wp-timeline-cell';\nimport { selectorTimelineSide } from 'core-app/features/work-packages/components/wp-table/wp-table-scroll-sync';\nimport {\n debugLog,\n timeOutput,\n} from 'core-app/shared/helpers/debug_output';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport {\n combineLatest,\n firstValueFrom,\n Observable,\n} from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { WorkPackagesTableComponent } from 'core-app/features/work-packages/components/wp-table/wp-table.component';\nimport {\n groupIdFromIdentifier,\n groupTypeFromIdentifier,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/grouped-rows-helpers';\nimport { WorkPackageViewCollapsedGroupsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-collapsed-groups.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport {\n calculateDaySpan,\n getPixelPerDayForZoomLevel,\n requiredPixelMarginLeft,\n timelineElementCssClass,\n timelineHeaderSelector,\n timelineMarkerSelectionStartClass,\n TimelineViewParameters,\n zoomLevelOrder,\n} from '../wp-timeline';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport * as Mousetrap from 'mousetrap';\nimport { DayResourceService } from 'core-app/core/state/days/day.service';\nimport { IDay } from 'core-app/core/state/days/day.model';\n\n@Component({\n selector: 'wp-timeline-container',\n templateUrl: './wp-timeline-container.html',\n})\nexport class WorkPackageTimelineTableController extends UntilDestroyedMixin implements AfterViewInit {\n private $element:JQuery;\n\n public workPackageTable:WorkPackageTable;\n\n private _viewParameters:TimelineViewParameters = new TimelineViewParameters();\n\n public disableViewParamsCalculation = false;\n\n public workPackageIdOrder:RenderedWorkPackage[] = [];\n\n private renderers:{ [name:string]:(vp:TimelineViewParameters) => void } = {};\n\n private cellsRenderer = new WorkPackageTimelineCellsRenderer(this.injector, this);\n\n public outerContainer:JQuery;\n\n public timelineBody:JQuery;\n\n private selectionParams:{ notification:IToast|null } = {\n notification: null,\n };\n\n private text:{ selectionMode:string };\n\n private refreshRequest = input();\n\n private collapsedGroupsCellsMap:IGroupCellsMap = {};\n\n private orderedRows:RenderedWorkPackage[] = [];\n\n get commonPipes() {\n return (source:Observable) => source.pipe(\n this.untilDestroyed(),\n takeUntil(this.querySpace.stopAllSubscriptions),\n filter(() => this.initialized && this.wpTableTimeline.isVisible),\n );\n }\n\n get workPackagesWithGroupHeaderCell():RenderedWorkPackage[] {\n const tableWorkPackages = this.querySpace.results.value!.elements;\n const wpsWithGroupHeaderCell = tableWorkPackages\n .filter((tableWorkPackage) => this.shouldBeShownInCollapsedGroupHeaders(tableWorkPackage))\n .map((tableWorkPackage) => tableWorkPackage.id);\n const workPackagesWithGroupHeaderCell = this.orderedRows.filter((row) => wpsWithGroupHeaderCell.includes(row.workPackageId) && !this.workPackageIdOrder.includes(row));\n\n return workPackagesWithGroupHeaderCell;\n }\n\n constructor(\n public readonly injector:Injector,\n private elementRef:ElementRef,\n private states:States,\n public wpTableComponent:WorkPackagesTableComponent,\n private toastService:ToastService,\n private wpTableTimeline:WorkPackageViewTimelineService,\n private notificationService:WorkPackageNotificationService,\n private wpRelations:WorkPackageRelationsService,\n private wpTableHierarchies:WorkPackageViewHierarchiesService,\n private halEvents:HalEventsService,\n private querySpace:IsolatedQuerySpace,\n readonly I18n:I18nService,\n private workPackageViewCollapsedGroupsService:WorkPackageViewCollapsedGroupsService,\n private weekdaysService:WeekdayService,\n private daysService:DayResourceService,\n ) {\n super();\n }\n\n ngAfterViewInit() {\n this.$element = jQuery(this.elementRef.nativeElement);\n\n const scrollBar = document.querySelector('.work-packages-tabletimeline--timeline-side');\n if (scrollBar) {\n scrollBar.addEventListener('scroll', () => {\n this.requireNonWorkingDays(this.getFirstDayInViewport().format('YYYY-MM-DD'), this.getLastDayInViewport().format('YYYY-MM-DD'));\n });\n }\n\n this.text = {\n selectionMode: this.I18n.t('js.gantt_chart.selection_mode.notification'),\n };\n\n // Get the outer container for width computation\n this.outerContainer = this.$element.find('.wp-table-timeline--outer');\n this.timelineBody = this.$element.find('.wp-table-timeline--body');\n\n // Register this instance to the table\n this.wpTableComponent.registerTimeline(this, this.timelineBody[0]);\n\n // Refresh on window resize events\n window.addEventListener('wp-resize.timeline', () => this.refreshRequest.putValue(undefined));\n\n combineLatest([\n this.querySpace.tableRendered.values$(),\n this.refreshRequest.changes$(),\n this.wpTableTimeline.live$(),\n this.weekdaysService.loadWeekdays(),\n ]).pipe(\n this.commonPipes,\n )\n .subscribe(([orderedRows]) => {\n // Remember all visible rows in their order of appearance.\n this.workPackageIdOrder = orderedRows.filter((row:RenderedWorkPackage) => !row.hidden);\n this.orderedRows = orderedRows;\n this.refreshView();\n });\n\n this.setupManageCollapsedGroupHeaderCells();\n }\n\n public nonWorkingDays:IDay[] = [];\n\n workPackageCells(wpId:string):WorkPackageTimelineCell[] {\n return this.cellsRenderer.getCellsFor(wpId);\n }\n\n /**\n * Return the index of a given row by its class identifier\n */\n workPackageIndex(classIdentifier:string):number {\n return this.workPackageIdOrder.findIndex((el) => el.classIdentifier === classIdentifier);\n }\n\n onRefreshRequested(name:string, callback:(vp:TimelineViewParameters) => void) {\n this.renderers[name] = callback;\n }\n\n getAbsoluteLeftCoordinates():number {\n return this.$element.offset()!.left;\n }\n\n getParentScrollContainer() {\n return this.outerContainer.closest(selectorTimelineSide)[0];\n }\n\n get viewParameters():TimelineViewParameters {\n return this._viewParameters;\n }\n\n get inHierarchyMode():boolean {\n return this.wpTableHierarchies.isEnabled;\n }\n\n get initialized():boolean {\n return this.workPackageTable && this.querySpace.tableRendered.hasValue();\n }\n\n refreshView() {\n if (!this.wpTableTimeline.isVisible) {\n debugLog('refreshView() requested, but TL is invisible.');\n return;\n }\n\n if (this.wpTableTimeline.isAutoZoom()) {\n // Update autozoom level\n this.applyAutoZoomLevel();\n } else {\n this._viewParameters.settings.zoomLevel = this.wpTableTimeline.zoomLevel;\n this.wpTableTimeline.appliedZoomLevel = this.wpTableTimeline.zoomLevel;\n }\n\n timeOutput('refreshView() in timeline container', async () => {\n // Reset the width of the outer container if its content shrinks\n this.outerContainer.css('width', 'auto');\n\n this.calculateViewParams(this._viewParameters);\n\n await this.requireNonWorkingDays(this.getFirstDayInViewport().format('YYYY-MM-DD'), this.getLastDayInViewport().format('YYYY-MM-DD'));\n\n // Update all cells\n this.cellsRenderer.refreshAllCells();\n\n _.each(this.renderers, (cb, key) => {\n debugLog(`Refreshing timeline member ${key}`);\n cb(this._viewParameters);\n });\n\n this.refreshCollapsedGroupsHeaderCells(this.collapsedGroupsCellsMap, this.cellsRenderer);\n\n // Calculate overflowing width to set to outer container\n // required to match width in all child divs.\n // The header is the only one reliable, as it already has the final width.\n const currentWidth = this.$element.find(timelineHeaderSelector)[0].scrollWidth;\n this.outerContainer.width(currentWidth);\n\n // Mark rendering event in a timeout to give DOM some time\n setTimeout(() => {\n this.querySpace.timelineRendered.next(null);\n });\n });\n }\n\n startAddRelationPredecessor(start:WorkPackageResource) {\n this.activateSelectionMode(start.id!, (end) => {\n this.wpRelations\n .addCommonRelation(start.id!, 'follows', end.id!)\n .then(() => {\n this.halEvents.push(start, {\n eventType: 'association',\n relatedWorkPackage: end.id!,\n relationType: 'follows',\n });\n })\n .catch((error:any) => this.notificationService.handleRawError(error, end));\n });\n }\n\n startAddRelationFollower(start:WorkPackageResource) {\n this.activateSelectionMode(start.id!, (end) => {\n this.wpRelations\n .addCommonRelation(start.id!, 'precedes', end.id!)\n .then(() => {\n this.halEvents.push(start, {\n eventType: 'association',\n relatedWorkPackage: end.id!,\n relationType: 'precedes',\n });\n })\n .catch((error:any) => this.notificationService.handleRawError(error, end));\n });\n }\n\n getFirstDayInViewport() {\n const outerContainer = this.getParentScrollContainer();\n const { scrollLeft } = outerContainer;\n const nonVisibleDaysLeft = Math.floor(scrollLeft / this.viewParameters.pixelPerDay);\n return this.viewParameters.dateDisplayStart.clone().add(nonVisibleDaysLeft, 'days');\n }\n\n getLastDayInViewport() {\n const outerContainer = this.getParentScrollContainer();\n const { scrollLeft } = outerContainer;\n const width = outerContainer.offsetWidth;\n const viewPortRight = scrollLeft + width;\n const daysUntilViewPortEnds = Math.ceil(viewPortRight / this.viewParameters.pixelPerDay) + 1;\n return this.viewParameters.dateDisplayStart.clone().add(daysUntilViewPortEnds, 'days');\n }\n\n forceCursor(cursor:string) {\n jQuery(`.${timelineElementCssClass}`).css('cursor', cursor);\n jQuery('.wp-timeline-cell').css('cursor', cursor);\n jQuery('.hascontextmenu').css('cursor', cursor);\n jQuery('.leftHandle').css('cursor', cursor);\n jQuery('.rightHandle').css('cursor', cursor);\n }\n\n resetCursor() {\n jQuery(`.${timelineElementCssClass}`).css('cursor', '');\n jQuery('.wp-timeline-cell').css('cursor', '');\n jQuery('.hascontextmenu').css('cursor', '');\n jQuery('.leftHandle').css('cursor', '');\n jQuery('.rightHandle').css('cursor', '');\n }\n\n private resetSelectionMode() {\n this._viewParameters.activeSelectionMode = null;\n this._viewParameters.selectionModeStart = null;\n\n if (this.selectionParams.notification) {\n this.toastService.remove(this.selectionParams.notification);\n }\n\n Mousetrap.unbind('esc');\n\n this.$element.removeClass('active-selection-mode');\n jQuery(`.${timelineMarkerSelectionStartClass}`).removeClass(timelineMarkerSelectionStartClass);\n this.refreshView();\n }\n\n private activateSelectionMode(start:string, callback:(wp:WorkPackageResource) => any) {\n start = start.toString(); // old system bug: ID can be a 'number'\n\n this._viewParameters.activeSelectionMode = (wp:WorkPackageResource) => {\n callback(wp);\n this.resetSelectionMode();\n };\n\n this._viewParameters.selectionModeStart = start;\n Mousetrap.bind('esc', () => this.resetSelectionMode());\n this.selectionParams.notification = this.toastService.addNotice(this.text.selectionMode);\n\n this.$element.addClass('active-selection-mode');\n\n this.refreshView();\n }\n\n async requireNonWorkingDays(start:Date|string, end:Date|string) {\n this.nonWorkingDays = await firstValueFrom(\n this\n .daysService\n .requireNonWorkingYears$(start, end)\n .pipe(take(1)),\n );\n }\n\n isNonWorkingDay(date:Date|string):boolean {\n const formatted = moment(date).format('YYYY-MM-DD');\n return (this.nonWorkingDays.findIndex((el) => el.date === formatted) !== -1);\n }\n\n private calculateViewParams(currentParams:TimelineViewParameters):boolean {\n if (this.disableViewParamsCalculation) {\n return false;\n }\n\n const newParams = new TimelineViewParameters();\n let changed = false;\n const workPackagesToCalculateTimelineWidthFrom = this.getWorkPackagesToCalculateTimelineWidthFrom();\n\n workPackagesToCalculateTimelineWidthFrom.forEach((renderedRow) => {\n const wpId = renderedRow.workPackageId;\n\n if (!wpId) {\n return;\n }\n const workPackageState:InputState = this.states.workPackages.get(wpId);\n const workPackage:WorkPackageResource|undefined = workPackageState.value;\n\n if (!workPackage) {\n return;\n }\n\n // We may still have a reference to a row that, e.g., just got deleted\n const startDate = workPackage.startDate ? moment(workPackage.startDate) : currentParams.now;\n const dueDate = workPackage.dueDate ? moment(workPackage.dueDate) : currentParams.now;\n const date = workPackage.date ? moment(workPackage.date) : currentParams.now;\n\n // start date\n newParams.dateDisplayStart = moment.min(\n newParams.dateDisplayStart,\n currentParams.now,\n startDate,\n date,\n ).clone(); // clone because currentParams.now should not be changed\n\n // finish date\n newParams.dateDisplayEnd = moment.max(\n newParams.dateDisplayEnd,\n currentParams.now,\n dueDate,\n date,\n ).clone(); // clone because currentParams.now should not be changed\n });\n\n // left spacing\n newParams.dateDisplayStart.subtract(currentParams.dayCountForMarginLeft, 'days'); // .substract modifies its instance\n\n // right spacing\n // RR: kept both variants for documentation purpose.\n // A: calculate the minimal width based on the width of the timeline view\n // B: calculate the minimal width based on the window width\n const width = this.$element.children().width()!; // A\n // const width = jQuery('body').width(); // B\n\n const { pixelPerDay } = currentParams;\n const visibleDays = Math.ceil((width / pixelPerDay) * 1.5);\n newParams.dateDisplayEnd.add(visibleDays, 'days'); // .add modifies its instance\n\n // Check if view params changed:\n\n // start date\n if (!newParams.dateDisplayStart.isSame(this._viewParameters.dateDisplayStart)) {\n changed = true;\n this._viewParameters.dateDisplayStart = newParams.dateDisplayStart;\n }\n\n // end date\n if (!newParams.dateDisplayEnd.isSame(this._viewParameters.dateDisplayEnd)) {\n changed = true;\n this._viewParameters.dateDisplayEnd = newParams.dateDisplayEnd;\n }\n\n // Calculate the visible viewport\n const firstDayInViewport = this.getFirstDayInViewport();\n const lastDayInViewport = this.getLastDayInViewport();\n const viewport:[Moment, Moment] = [firstDayInViewport, lastDayInViewport];\n this._viewParameters.visibleViewportAtCalculationTime = viewport;\n\n return changed;\n }\n\n private applyAutoZoomLevel() {\n if (this.workPackageIdOrder.length === 0) {\n return;\n }\n\n const workPackagesToCalculateWidthFrom = this.getWorkPackagesToCalculateTimelineWidthFrom();\n const daysSpan = calculateDaySpan(workPackagesToCalculateWidthFrom, this.states.workPackages, this._viewParameters);\n const timelineWidthInPx = this.$element.parent().width()! - (2 * requiredPixelMarginLeft);\n\n for (const zoomLevel of zoomLevelOrder) {\n const pixelPerDay = getPixelPerDayForZoomLevel(zoomLevel);\n const visibleDays = timelineWidthInPx / pixelPerDay;\n\n if (visibleDays >= daysSpan || zoomLevel === _.last(zoomLevelOrder)) {\n // Zoom level is enough\n const previousZoomLevel = this._viewParameters.settings.zoomLevel;\n\n // did the zoom level changed?\n if (previousZoomLevel !== zoomLevel) {\n this._viewParameters.settings.zoomLevel = zoomLevel;\n this.wpTableComponent.timeline.scrollLeft = 0;\n }\n\n this.wpTableTimeline.appliedZoomLevel = zoomLevel;\n return;\n }\n }\n }\n\n setupManageCollapsedGroupHeaderCells() {\n this.workPackageViewCollapsedGroupsService.updates$()\n .pipe(\n this.commonPipes,\n )\n .subscribe((groupsCollapseEvent:IGroupsCollapseEvent) => {\n this.manageCollapsedGroupHeaderCells(\n groupsCollapseEvent,\n this.querySpace.results.value!.elements,\n this.collapsedGroupsCellsMap,\n );\n });\n }\n\n manageCollapsedGroupHeaderCells(groupsCollapseConfig:IGroupsCollapseEvent,\n tableWorkPackages:WorkPackageResource[],\n collapsedGroupsCellsMap:IGroupCellsMap) {\n const refreshAllGroupHeaderCells = groupsCollapseConfig.allGroupsChanged;\n const collapsedGroupsChange = groupsCollapseConfig.state;\n const collapsedGroupsChangeArray = Object.keys(collapsedGroupsChange);\n let groupsToUpdate:string[] = [];\n\n if (!collapsedGroupsChangeArray.length) {\n return;\n }\n\n if (refreshAllGroupHeaderCells) {\n groupsToUpdate = collapsedGroupsChangeArray.filter((groupIdentifier) => this.shouldManageCollapsedGroupHeaderCells(groupIdentifier, groupsCollapseConfig));\n } else {\n const groupIdentifier = groupsCollapseConfig.lastChangedGroup!;\n if (this.shouldManageCollapsedGroupHeaderCells(groupIdentifier, groupsCollapseConfig)) {\n groupsToUpdate = [groupIdentifier];\n }\n }\n\n groupsToUpdate.forEach((groupIdentifier) => {\n const groupIsCollapsed = collapsedGroupsChange[groupIdentifier];\n\n if (groupIsCollapsed) {\n this.createCollapsedGroupHeaderCells(groupIdentifier, tableWorkPackages, collapsedGroupsCellsMap);\n } else {\n this.removeCollapsedGroupHeaderCells(groupIdentifier, collapsedGroupsCellsMap);\n }\n });\n }\n\n shouldManageCollapsedGroupHeaderCells(groupIdentifier:string, groupsCollapseConfig:IGroupsCollapseEvent) {\n const keyGroupType = groupTypeFromIdentifier(groupIdentifier);\n\n return this.workPackageViewCollapsedGroupsService.groupTypesWithHeaderCellsWhenCollapsed.includes(keyGroupType)\n && this.workPackageViewCollapsedGroupsService.groupTypesWithHeaderCellsWhenCollapsed.includes(groupsCollapseConfig.groupedBy!);\n }\n\n createCollapsedGroupHeaderCells(groupIdentifier:string, tableWorkPackages:WorkPackageResource[], collapsedGroupsCellsMap:IGroupCellsMap) {\n this.removeCollapsedGroupHeaderCells(groupIdentifier, collapsedGroupsCellsMap);\n\n const changedGroupId = groupIdFromIdentifier(groupIdentifier);\n const changedGroupType = groupTypeFromIdentifier(groupIdentifier);\n const changedGroupTableWorkPackages = tableWorkPackages.filter((tableWorkPackage) => tableWorkPackage[changedGroupType].id === changedGroupId);\n const changedGroupWpsWithHeaderCells = changedGroupTableWorkPackages.filter((tableWorkPackage) => this.shouldBeShownInCollapsedGroupHeaders(tableWorkPackage)\n && (tableWorkPackage.date || tableWorkPackage.startDate));\n const changedGroupWpsWithHeaderCellsIds = changedGroupWpsWithHeaderCells.map((workPackage) => workPackage.id!);\n\n this.collapsedGroupsCellsMap[groupIdentifier] = this.cellsRenderer.buildCellsAndRenderOnRow(changedGroupWpsWithHeaderCellsIds, `group-${groupIdentifier}-timeline`, true);\n }\n\n removeCollapsedGroupHeaderCells(groupIdentifier:string, collapsedGroupsCellsMap:IGroupCellsMap) {\n if (collapsedGroupsCellsMap[groupIdentifier]) {\n collapsedGroupsCellsMap[groupIdentifier].forEach((cell:WorkPackageTimelineCell) => cell.clear());\n collapsedGroupsCellsMap[groupIdentifier] = [];\n }\n }\n\n refreshCollapsedGroupsHeaderCells(collapsedGroupsCellsMap:IGroupCellsMap, cellsRenderer:WorkPackageTimelineCellsRenderer) {\n Object.keys(collapsedGroupsCellsMap).forEach((collapsedGroupKey) => {\n const collapsedGroupCells = collapsedGroupsCellsMap[collapsedGroupKey];\n\n collapsedGroupCells.forEach((cell) => cellsRenderer.refreshSingleCell(cell, false, true));\n });\n }\n\n shouldBeShownInCollapsedGroupHeaders(workPackage:WorkPackageResource) {\n return this.workPackageViewCollapsedGroupsService\n .wpTypesToShowInCollapsedGroupHeaders\n .some((wpTypeFunction) => wpTypeFunction(workPackage));\n }\n\n getWorkPackagesToCalculateTimelineWidthFrom() {\n // Include work packages that are show in collapsed group\n // headers into the calculation, if not they could be rendered out\n // of the timeline (ie: milestones are shown on collapsed row groups).\n return [...this.workPackageIdOrder, ...this.workPackagesWithGroupHeaderCell];\n }\n}\n","
    \n
    \n \n \n \n \n
    \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Directive, ElementRef, Injector, Input,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\nimport { OpContextMenuTrigger } from 'core-app/shared/components/op-context-menu/handlers/op-context-menu-trigger.directive';\nimport { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { WorkPackageViewGroupByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { WpTableConfigurationModalComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.modal';\nimport { QUERY_SORT_BY_ASC, QUERY_SORT_BY_DESC } from 'core-app/features/hal/resources/query-sort-by-resource';\nimport { ConfirmDialogService } from 'core-app/shared/components/modals/confirm-dialog/confirm-dialog.service';\n\n@Directive({\n selector: '[opColumnsContextMenu]',\n})\nexport class OpColumnsContextMenu extends OpContextMenuTrigger {\n @Input('opColumnsContextMenu-column') public column:QueryColumn;\n\n @Input('opColumnsContextMenu-table') public table:WorkPackageTable;\n\n public text = {\n confirmDelete: {\n text: this.I18n.t('js.work_packages.table_configuration.sorting_mode.warning'),\n title: this.I18n.t('js.modals.form_submit.title'),\n },\n };\n\n constructor(readonly elementRef:ElementRef,\n readonly opContextMenu:OPContextMenuService,\n readonly wpTableColumns:WorkPackageViewColumnsService,\n readonly wpTableSortBy:WorkPackageViewSortByService,\n readonly wpTableGroupBy:WorkPackageViewGroupByService,\n readonly wpTableHierarchies:WorkPackageViewHierarchiesService,\n readonly opModalService:OpModalService,\n readonly injector:Injector,\n readonly I18n:I18nService,\n readonly confirmDialog:ConfirmDialogService) {\n super(elementRef, opContextMenu);\n }\n\n protected open(evt:JQuery.TriggeredEvent) {\n if (!this.table.configuration.columnMenuEnabled) {\n return;\n }\n this.buildItems();\n this.opContextMenu.show(this, evt);\n }\n\n public get locals() {\n return {\n showAnchorRight: this.column && this.column.id !== 'id',\n contextMenuId: 'column-context-menu',\n items: this.items,\n };\n }\n\n /**\n * Positioning args for jquery-ui position.\n *\n * @param {Event} openerEvent\n */\n public positionArgs(evt:JQuery.TriggeredEvent) {\n const additionalPositionArgs = {\n of: this.$element.find('.generic-table--sort-header-outer'),\n };\n\n const position = super.positionArgs(evt);\n _.assign(position, additionalPositionArgs);\n\n return position;\n }\n\n protected get afterFocusOn():JQuery {\n return this.$element.find(`#${this.column.id}`);\n }\n\n private buildItems() {\n const c = this.column;\n\n this.items = [\n {\n // Sort ascending\n hidden: !this.wpTableSortBy.isSortable(c),\n linkText: this.I18n.t('js.work_packages.query.sort_descending'),\n icon: 'icon-sort-descending',\n onClick: (evt:any) => {\n if (this.wpTableSortBy.isManualSortingMode) {\n this.confirmDialog.confirm({\n text: this.text.confirmDelete,\n }).then(() => {\n this.wpTableSortBy.setAsSingleSortCriteria(c, QUERY_SORT_BY_DESC);\n return true;\n });\n return false;\n }\n this.wpTableSortBy.addSortCriteria(c, QUERY_SORT_BY_DESC);\n return true;\n },\n },\n {\n // Sort descending\n hidden: !this.wpTableSortBy.isSortable(c),\n linkText: this.I18n.t('js.work_packages.query.sort_ascending'),\n icon: 'icon-sort-ascending',\n onClick: (evt:any) => {\n if (this.wpTableSortBy.isManualSortingMode) {\n this.confirmDialog.confirm({\n text: this.text.confirmDelete,\n }).then(() => {\n this.wpTableSortBy.setAsSingleSortCriteria(c, QUERY_SORT_BY_ASC);\n return true;\n });\n return false;\n }\n this.wpTableSortBy.addSortCriteria(c, QUERY_SORT_BY_ASC);\n return true;\n },\n },\n {\n // Group by\n hidden: !this.wpTableGroupBy.isGroupable(c) || this.wpTableGroupBy.isCurrentlyGroupedBy(c),\n linkText: this.I18n.t('js.work_packages.query.group'),\n icon: 'icon-group-by',\n onClick: () => {\n if (this.wpTableHierarchies.isEnabled) {\n this.wpTableHierarchies.setEnabled(false);\n }\n this.wpTableGroupBy.setBy(c);\n return true;\n },\n },\n {\n // Move left\n hidden: this.wpTableColumns.isFirst(c),\n linkText: this.I18n.t('js.work_packages.query.move_column_left'),\n icon: 'icon-column-left',\n onClick: () => {\n this.wpTableColumns.shift(c, -1);\n return true;\n },\n },\n {\n // Move right\n hidden: this.wpTableColumns.isLast(c),\n linkText: this.I18n.t('js.work_packages.query.move_column_right'),\n icon: 'icon-column-right',\n onClick: () => {\n this.wpTableColumns.shift(c, 1);\n return true;\n },\n },\n {\n // Hide column\n linkText: this.I18n.t('js.work_packages.query.hide_column'),\n icon: 'icon-delete',\n onClick: () => {\n const focusColumn = this.wpTableColumns.previous(c) || this.wpTableColumns.next(c);\n this.wpTableColumns.removeColumn(c);\n\n setTimeout(() => {\n if (focusColumn) {\n jQuery(`#${focusColumn.id}`).focus();\n }\n });\n return true;\n },\n },\n {\n // Insert columns\n linkText: this.I18n.t('js.work_packages.query.insert_columns'),\n icon: 'icon-columns',\n onClick: () => {\n this.opModalService.show(\n WpTableConfigurationModalComponent,\n this.injector,\n { initialTab: 'columns' },\n );\n return true;\n },\n },\n ];\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, ElementRef, OnInit } from '@angular/core';\nimport { WorkPackageTimelineTableController } from 'core-app/features/work-packages/components/wp-table/timeline/container/wp-timeline-container.directive';\nimport * as moment from 'moment';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { TimelineZoomLevel } from 'core-app/features/hal/resources/query-resource';\nimport {\n calculatePositionValueForDayCount,\n getTimeSlicesForHeader,\n timelineHeaderCSSClass,\n timelineHeaderSelector,\n TimelineViewParameters,\n} from '../wp-timeline';\nimport Moment = moment.Moment;\n\n@Component({\n selector: timelineHeaderSelector,\n templateUrl: './wp-timeline-header.html',\n})\nexport class WorkPackageTimelineHeaderController implements OnInit {\n public $element:JQuery;\n\n private activeZoomLevel:TimelineZoomLevel;\n\n private innerHeader:JQuery;\n\n constructor(elementRef:ElementRef,\n readonly I18n:I18nService,\n readonly wpTimelineService:WorkPackageViewTimelineService,\n readonly workPackageTimelineTableController:WorkPackageTimelineTableController) {\n this.$element = jQuery(elementRef.nativeElement);\n }\n\n ngOnInit() {\n this.workPackageTimelineTableController\n .onRefreshRequested('header', (vp:TimelineViewParameters) => this.refreshView(vp));\n }\n\n refreshView(vp:TimelineViewParameters) {\n this.innerHeader = this.$element.find('.wp-table-timeline--header-inner');\n this.renderLabels(vp);\n }\n\n private renderLabels(vp:TimelineViewParameters):void {\n this.innerHeader.empty();\n this.innerHeader.attr('data-current-zoom-level', this.wpTimelineService.zoomLevel);\n\n switch (vp.settings.zoomLevel) {\n case 'days':\n this.renderLabelsDays(vp);\n break;\n case 'weeks':\n this.renderLabelsWeeks(vp);\n break;\n case 'months':\n this.renderLabelsMonths(vp);\n break;\n case 'quarters':\n this.renderLabelsQuarters(vp);\n break;\n case 'years':\n this.renderLabelsYears(vp);\n break;\n default:\n return;\n }\n\n this.activeZoomLevel = vp.settings.zoomLevel;\n }\n\n private renderLabelsDays(vp:TimelineViewParameters) {\n this.renderTimeSlices(vp, 'month', 0, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('MMM YYYY');\n cell.classList.add('wp-timeline--header-top-bold-element');\n cell.style.height = '13px';\n });\n\n this.renderTimeSlices(vp, 'week', 13, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('ww');\n cell.classList.add('-top-border');\n cell.style.height = '32px';\n });\n\n this.renderTimeSlices(vp, 'day', 23, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('D');\n cell.classList.add('-top-border');\n cell.style.height = '22px';\n });\n\n this.renderTimeSlices(vp, 'day', 33, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('dd');\n cell.classList.add('wp-timeline--header-day-element');\n });\n }\n\n private renderLabelsWeeks(vp:TimelineViewParameters) {\n this.renderTimeSlices(vp, 'month', 0, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('MMM YYYY');\n cell.classList.add('wp-timeline--header-top-bold-element');\n });\n\n this.renderTimeSlices(vp, 'week', 15, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('ww');\n cell.classList.add('-top-border');\n cell.style.height = '22px';\n });\n\n this.renderTimeSlices(vp, 'day', 25, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('D');\n cell.classList.add('wp-timeline--header-middle-element');\n });\n }\n\n private renderLabelsMonths(vp:TimelineViewParameters) {\n this.renderTimeSlices(vp, 'year', 0, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('YYYY');\n cell.classList.add('wp-timeline--header-top-bold-element');\n });\n\n this.renderTimeSlices(vp, 'month', 15, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('MMM');\n cell.classList.add('-top-border');\n cell.style.height = '30px';\n });\n\n this.renderTimeSlices(vp, 'week', 25, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('ww');\n cell.classList.add('wp-timeline--header-middle-element');\n });\n }\n\n private renderLabelsQuarters(vp:TimelineViewParameters) {\n this.renderTimeSlices(vp, 'year', 0, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--header-top-bold-element');\n cell.innerHTML = start.format('YYYY');\n });\n\n this.renderTimeSlices(vp, 'quarter', 15, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = this.I18n.t('js.gantt_chart.quarter_label',\n { quarter_number: start.format('Q') });\n cell.classList.add('-top-border');\n cell.style.height = '30px';\n });\n\n this.renderTimeSlices(vp, 'month', 25, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('MMM');\n cell.classList.add('wp-timeline--header-middle-element');\n });\n }\n\n private renderLabelsYears(vp:TimelineViewParameters) {\n this.renderTimeSlices(vp, 'year', 0, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('YYYY');\n cell.classList.add('wp-timeline--header-top-bold-element');\n });\n\n this.renderTimeSlices(vp, 'quarter', 15, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = this.I18n.t('js.gantt_chart.quarter_label',\n { quarter_number: start.format('Q') });\n cell.classList.add('-top-border');\n cell.style.height = '30px';\n });\n\n this.renderTimeSlices(vp, 'month', 25, vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.innerHTML = start.format('M');\n cell.classList.add('wp-timeline--header-middle-element');\n });\n }\n\n private renderTimeSlices(vp:TimelineViewParameters,\n unit:moment.unitOfTime.DurationConstructor,\n marginTop:number,\n startView:Moment,\n endView:Moment,\n cellCallback:(start:Moment, cell:HTMLElement) => void) {\n const { inViewportAndBoundaries, rest } = getTimeSlicesForHeader(vp, unit, startView, endView);\n\n for (const [start, end] of inViewportAndBoundaries) {\n const cell = this.addLabelCell();\n cell.style.top = `${marginTop}px`;\n cell.style.left = calculatePositionValueForDayCount(vp, start.diff(startView, 'days'));\n cell.style.width = calculatePositionValueForDayCount(vp, end.diff(start, 'days') + 1);\n cellCallback(start, cell);\n }\n setTimeout(() => {\n for (const [start, end] of rest) {\n const cell = this.addLabelCell();\n cell.style.top = `${marginTop}px`;\n cell.style.left = calculatePositionValueForDayCount(vp, start.diff(startView, 'days'));\n cell.style.width = calculatePositionValueForDayCount(vp, end.diff(start, 'days') + 1);\n cellCallback(start, cell);\n }\n }, 0);\n }\n\n private addLabelCell():HTMLElement {\n const label = document.createElement('div');\n label.className = timelineHeaderCSSClass;\n\n this.innerHeader.append(label);\n return label;\n }\n}\n","
    \n
    \n
    \n","import { RelationResource } from 'core-app/features/hal/resources/relation-resource';\n\nexport function workPackagePrefix(workPackageId:string) {\n return `__tl-relation-${workPackageId}`;\n}\n\nexport class TimelineRelationElement {\n constructor(public belongsToId:string, public relation:RelationResource) {\n }\n\n public get classNames():string[] {\n return [\n workPackagePrefix(this.relation.ids.from),\n workPackagePrefix(this.relation.ids.to),\n ];\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component, ElementRef, Injector, OnInit,\n} from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { State } from '@openproject/reactivestates';\nimport { combineLatest } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { RelationsStateValue, WorkPackageRelationsService } from '../../../wp-relations/wp-relations.service';\nimport { WorkPackageTimelineCell } from '../cells/wp-timeline-cell';\nimport { WorkPackageTimelineTableController } from '../container/wp-timeline-container.directive';\nimport { timelineElementCssClass, TimelineViewParameters } from '../wp-timeline';\nimport { TimelineRelationElement, workPackagePrefix } from './timeline-relation-element';\n\nconst DEBUG_DRAW_RELATION_LINES_WITH_COLOR = false;\n\nexport const timelineGlobalElementCssClassname = 'relation-line';\n\nfunction newSegment(vp:TimelineViewParameters,\n classNames:string[],\n yPosition:number,\n top:number,\n left:number,\n width:number,\n height:number,\n color?:string):HTMLElement {\n const segment = document.createElement('div');\n segment.classList.add(\n timelineElementCssClass,\n timelineGlobalElementCssClassname,\n ...classNames,\n );\n\n // segment.style.backgroundColor = color;\n segment.style.top = `${(yPosition * 40) + top}px`;\n segment.style.left = `${left}px`;\n segment.style.width = `${width}px`;\n segment.style.height = `${height}px`;\n\n if (DEBUG_DRAW_RELATION_LINES_WITH_COLOR && color !== undefined) {\n segment.style.zIndex = '9999999';\n segment.style.backgroundColor = color;\n }\n return segment;\n}\n\n@Component({\n selector: 'wp-timeline-relations',\n template: '
    ',\n})\nexport class WorkPackageTableTimelineRelations extends UntilDestroyedMixin implements OnInit {\n @InjectField() querySpace:IsolatedQuerySpace;\n\n private container:JQuery;\n\n private workPackagesWithRelations:{ [workPackageId:string]:State } = {};\n\n constructor(public readonly injector:Injector,\n public elementRef:ElementRef,\n public states:States,\n public workPackageTimelineTableController:WorkPackageTimelineTableController,\n public wpTableTimeline:WorkPackageViewTimelineService,\n public wpRelations:WorkPackageRelationsService) {\n super();\n }\n\n ngOnInit() {\n const $element = jQuery(this.elementRef.nativeElement);\n this.container = $element.find('.wp-table-timeline--relations');\n this.workPackageTimelineTableController\n .onRefreshRequested('relations', (vp:TimelineViewParameters) => this.refreshView());\n\n this.setupRelationSubscription();\n }\n\n private refreshView() {\n this.update();\n }\n\n private get workPackageIdOrder() {\n return this.workPackageTimelineTableController.workPackageIdOrder;\n }\n\n /**\n * Refresh relations of visible rows.\n */\n private setupRelationSubscription() {\n // for all visible WorkPackage rows...\n combineLatest([\n this.querySpace.renderedWorkPackages.values$(),\n this.wpTableTimeline.live$(),\n ])\n .pipe(\n filter(([_, timeline]) => timeline.visible),\n this.untilDestroyed(),\n map(([rendered, _]) => rendered),\n )\n .subscribe((list) => {\n // ... make sure that the corresponding relations are loaded ...\n const wps = _.compact(list.map((row) => row.workPackageId) as string[]);\n this.wpRelations.requireAll(wps);\n\n wps.forEach((wpId) => {\n const relationsForWorkPackage = this.wpRelations.state(wpId);\n this.workPackagesWithRelations[wpId] = relationsForWorkPackage;\n\n // ... once they are loaded, display them.\n relationsForWorkPackage.values$()\n .pipe(\n take(1),\n )\n .subscribe(() => {\n this.renderWorkPackagesRelations([wpId]);\n });\n });\n });\n\n // When a WorkPackage changes, redraw the corresponding relations\n this.states.workPackages.observeChange()\n .pipe(\n this.untilDestroyed(),\n filter(() => this.wpTableTimeline.isVisible),\n )\n .subscribe(([workPackageId]) => {\n this.renderWorkPackagesRelations([workPackageId]);\n });\n }\n\n private renderWorkPackagesRelations(workPackageIds:string[]) {\n workPackageIds.forEach((workPackageId) => {\n const workPackageWithRelation = this.workPackagesWithRelations[workPackageId];\n if (_.isNil(workPackageWithRelation)) {\n return;\n }\n\n this.removeRelationElementsForWorkPackage(workPackageId);\n const relations = _.values(workPackageWithRelation.value);\n const relationsList = _.values(relations);\n relationsList.forEach((relation) => {\n if (!(relation.type === 'precedes'\n || relation.type === 'follows')) {\n return;\n }\n\n const elem = new TimelineRelationElement(relation.ids.from, relation);\n this.renderElement(this.workPackageTimelineTableController.viewParameters, elem);\n });\n });\n }\n\n private update() {\n this.removeAllVisibleElements();\n this.renderElements();\n }\n\n private removeRelationElementsForWorkPackage(workPackageId:string) {\n const className = workPackagePrefix(workPackageId);\n const found = this.container.find(`.${className}`);\n found.remove();\n }\n\n private removeAllVisibleElements() {\n this.container.find(`.${timelineGlobalElementCssClassname}`).remove();\n }\n\n private renderElements() {\n const wpIdsWithRelations:string[] = _.keys(this.workPackagesWithRelations);\n this.renderWorkPackagesRelations(wpIdsWithRelations);\n }\n\n /**\n * Render a single relation to all shown work packages. Since work packages may occur multiple\n * times in the timeline, iterate all potential combinations and render them.\n * @param vp\n * @param e\n */\n private renderElement(vp:TimelineViewParameters, e:TimelineRelationElement) {\n const involved = e.relation.ids;\n\n const startCells = this.workPackageTimelineTableController.workPackageCells(involved.to);\n const endCells = this.workPackageTimelineTableController.workPackageCells(involved.from);\n\n // If either sources or targets are not rendered, ignore this relation\n if (startCells.length === 0 || endCells.length === 0) {\n return;\n }\n\n // Now, render all sources to all targets\n startCells.forEach((startCell) => {\n const idxFrom = this.workPackageTimelineTableController.workPackageIndex(startCell.classIdentifier);\n endCells.forEach((endCell) => {\n const idxTo = this.workPackageTimelineTableController.workPackageIndex(endCell.classIdentifier);\n this.renderRelation(vp, e, idxFrom, idxTo, startCell, endCell);\n });\n });\n }\n\n private renderRelation(vp:TimelineViewParameters,\n e:TimelineRelationElement,\n idxFrom:number,\n idxTo:number,\n startCell:WorkPackageTimelineCell,\n endCell:WorkPackageTimelineCell) {\n const rowFrom = this.workPackageIdOrder[idxFrom];\n const rowTo = this.workPackageIdOrder[idxTo];\n\n // If any of the targets are hidden in the table, skip\n if (!(rowFrom && rowTo) || (rowFrom.hidden || rowTo.hidden)) {\n return;\n }\n\n // Skip if relations cannot be drawn between these cells\n if (!startCell.canConnectRelations() || !endCell.canConnectRelations()) {\n return;\n }\n\n // Get X values\n // const hookLength = endCell.getPaddingLeftForIncomingRelationLines();\n const startX = startCell.getMarginLeftOfRightSide() - startCell.getPaddingRightForOutgoingRelationLines();\n const targetX = endCell.getMarginLeftOfLeftSide() + endCell.getPaddingLeftForIncomingRelationLines();\n\n // Vertical direction\n const directionY:'toUp'|'toDown' = idxFrom < idxTo ? 'toDown' : 'toUp';\n\n // Horizontal direction\n const directionX:'toLeft'|'beneath'|'toRight' = targetX > startX ? 'toRight' : targetX < startX ? 'toLeft' : 'beneath';\n\n // start\n if (!startCell) {\n return;\n }\n\n // Draw the first line next to the bar/milestone element\n const paddingRight = startCell.getPaddingRightForOutgoingRelationLines();\n const startLineWith = endCell.getPaddingLeftForIncomingRelationLines()\n + (paddingRight > 0 ? paddingRight : 0);\n this.container.append(newSegment(vp, e.classNames, idxFrom, 19, startX, startLineWith, 1, 'red'));\n const lastX = startX + startLineWith;\n // lastX += hookLength;\n\n // Draw vertical line between rows\n const height = Math.abs(idxTo - idxFrom);\n if (directionY === 'toDown') {\n if (directionX === 'toRight' || directionX === 'beneath') {\n this.container.append(newSegment(vp, e.classNames, idxFrom, 19, lastX, 1, height * 40, 'black'));\n } else if (directionX === 'toLeft') {\n this.container.append(newSegment(vp, e.classNames, idxFrom, 19, lastX, 1, (height * 40) - 10, 'black'));\n }\n } else if (directionY === 'toUp') {\n this.container.append(newSegment(vp, e.classNames, idxTo, 30, lastX, 1, (height * 40) - 10, 'black'));\n }\n\n // Draw end corner to the target\n if (directionX === 'toRight') {\n if (directionY === 'toDown') {\n this.container.append(newSegment(vp, e.classNames, idxTo, 19, lastX, targetX - lastX, 1, 'red'));\n } else if (directionY === 'toUp') {\n this.container.append(newSegment(vp, e.classNames, idxTo, 20, lastX, 1, 10, 'green'));\n this.container.append(newSegment(vp, e.classNames, idxTo, 20, lastX, targetX - lastX, 1, 'lightsalmon'));\n }\n } else if (directionX === 'toLeft') {\n if (directionY === 'toDown') {\n this.container.append(newSegment(vp, e.classNames, idxTo, 0, lastX, 1, 8, 'red'));\n this.container.append(newSegment(vp, e.classNames, idxTo, 8, targetX, lastX - targetX, 1, 'green'));\n this.container.append(newSegment(vp, e.classNames, idxTo, 8, targetX, 1, 11, 'blue'));\n } else if (directionY === 'toUp') {\n this.container.append(newSegment(vp, e.classNames, idxTo, 30, targetX + 1, lastX - targetX, 1, 'red'));\n this.container.append(newSegment(vp, e.classNames, idxTo, 19, targetX + 1, 1, 11, 'blue'));\n }\n }\n }\n}\n","import { TimelineViewParameters } from '../wp-timeline';\n\nexport const timelineStaticElementCssClassname = 'wp-timeline--static-element';\n\nexport abstract class TimelineStaticElement {\n constructor() {\n }\n\n /**\n * Render the static element according to the current ViewParameters\n * @param vp Current timeline view paraemters\n * @returns {HTMLElement} The finished static element\n */\n public render(vp:TimelineViewParameters):HTMLElement {\n const elem = document.createElement('div');\n elem.id = this.identifier;\n elem.classList.add(...this.classNames);\n\n return this.finishElement(elem, vp);\n }\n\n protected abstract finishElement(elem:HTMLElement, vp:TimelineViewParameters):HTMLElement;\n\n public abstract get identifier():string;\n\n public get classNames():string[] {\n return [timelineStaticElementCssClassname];\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport * as moment from 'moment';\nimport { calculatePositionValueForDayCount, TimelineViewParameters } from '../wp-timeline';\nimport { TimelineStaticElement } from './timeline-static-element';\n\nexport class TodayLineElement extends TimelineStaticElement {\n protected finishElement(elem:HTMLElement, vp:TimelineViewParameters):HTMLElement {\n const offsetToday = vp.now.diff(vp.dateDisplayStart, 'days');\n const dayProgress = moment().hour() / 24;\n elem.style.left = calculatePositionValueForDayCount(vp, offsetToday + dayProgress);\n\n return elem;\n }\n\n public get identifier():string {\n return 'wp-timeline-static-element-today-line';\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport {\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageTimelineTableController } from '../container/wp-timeline-container.directive';\nimport { calculatePositionValueForDayCountingPx, TimelineViewParameters } from '../wp-timeline';\nimport {\n TimelineStaticElement,\n timelineStaticElementCssClassname,\n} from './timeline-static-element';\nimport { TodayLineElement } from './wp-timeline.today-line';\n\n@Component({\n selector: 'wp-timeline-static-elements',\n template: '
    '\n})\nexport class WorkPackageTableTimelineStaticElements implements OnInit {\n public $element:HTMLElement;\n\n private container:HTMLElement;\n\n private elements:TimelineStaticElement[];\n\n constructor(elementRef:ElementRef,\n public states:States,\n public workPackageTimelineTableController:WorkPackageTimelineTableController) {\n this.$element = elementRef.nativeElement;\n\n this.elements = [\n new TodayLineElement(),\n ];\n }\n\n ngOnInit() {\n this.container = this.$element.querySelector('.wp-table-timeline--static-elements') as HTMLElement;\n this.workPackageTimelineTableController\n .onRefreshRequested('static elements', (vp:TimelineViewParameters) => this.update(vp));\n }\n\n private update(vp:TimelineViewParameters) {\n this.removeAllVisibleElements();\n this.renderElements(vp);\n }\n\n private removeAllVisibleElements() {\n this\n .container\n .querySelectorAll(`.${timelineStaticElementCssClassname}`)\n .forEach((el) => el.remove());\n }\n\n private renderElements(vp:TimelineViewParameters) {\n for (const e of this.elements) {\n this.container.appendChild(e.render(vp));\n }\n const timelineSide = document.querySelector('.work-packages-tabletimeline--timeline-side');\n if (timelineSide !== null && vp.settings.zoomLevel !== 'auto') {\n const visibleMomentBeforeToday = vp.now.clone().subtract(vp.settings.visibleBeforeTodayInZoomLevel, vp.settings.zoomLevel)\n const visibleDaysBeforeToday = visibleMomentBeforeToday.diff(vp.dateDisplayStart, 'days');\n const visibleDaysBeforeTodayPositionPixels = calculatePositionValueForDayCountingPx(vp, visibleDaysBeforeToday);\n timelineSide.scrollLeft = visibleDaysBeforeTodayPositionPixels;\n }\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n} from '@angular/core';\nimport * as moment from 'moment';\nimport { TimelineZoomLevel } from 'core-app/features/hal/resources/query-resource';\nimport { WorkPackageTimelineTableController } from '../container/wp-timeline-container.directive';\nimport {\n calculatePositionValueForDayCount,\n getTimeSlicesForHeader,\n timelineElementCssClass,\n timelineGridElementCssClass,\n TimelineViewParameters,\n} from '../wp-timeline';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport Moment = moment.Moment;\n\n@Component({\n selector: 'wp-timeline-grid',\n template: '
    ',\n})\nexport class WorkPackageTableTimelineGrid implements AfterViewInit {\n private activeZoomLevel:TimelineZoomLevel;\n\n private gridContainer:JQuery;\n\n constructor(\n private elementRef:ElementRef,\n public wpTimeline:WorkPackageTimelineTableController,\n private weekdaysService:WeekdayService,\n ) {}\n\n ngAfterViewInit():void {\n const $element = jQuery(this.elementRef.nativeElement);\n this.gridContainer = $element.find('.wp-table-timeline--grid');\n this.wpTimeline.onRefreshRequested('grid', (vp:TimelineViewParameters) => this.refreshView(vp));\n }\n\n refreshView(vp:TimelineViewParameters):void {\n this.renderLabels(vp);\n }\n\n private renderLabels(vp:TimelineViewParameters):void {\n this.gridContainer.empty();\n\n switch (vp.settings.zoomLevel) {\n case 'days':\n this.renderLabelsDays(vp);\n break;\n case 'weeks':\n this.renderLabelsWeeks(vp);\n break;\n case 'months':\n this.renderLabelsMonths(vp);\n break;\n case 'quarters':\n this.renderLabelsQuarters(vp);\n break;\n case 'years':\n this.renderLabelsYears(vp);\n break;\n default:\n return;\n }\n\n this.activeZoomLevel = vp.settings.zoomLevel;\n }\n\n private renderLabelsDays(vp:TimelineViewParameters):void {\n this.renderTimeSlices(vp, 'day', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.style.paddingTop = '1px';\n this.checkForNonWorkingDayHighlight(start, cell);\n });\n\n this.renderTimeSlices(vp, 'year', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--grid-element_highlight');\n cell.style.zIndex = '2';\n });\n }\n\n private renderLabelsWeeks(vp:TimelineViewParameters):void {\n this.renderTimeSlices(vp, 'day', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n this.checkForNonWorkingDayHighlight(start, cell);\n });\n\n this.renderTimeSlices(vp, 'week', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--grid-element_highlight');\n });\n\n this.renderTimeSlices(vp, 'year', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--grid-element_highlight');\n cell.style.zIndex = '2';\n });\n }\n\n private renderLabelsMonths(vp:TimelineViewParameters):void {\n this.renderTimeSlices(vp, 'week', vp.dateDisplayStart, vp.dateDisplayEnd, () => {\n });\n\n this.renderTimeSlices(vp, 'month', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--grid-element_highlight');\n });\n\n this.renderTimeSlices(vp, 'year', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--grid-element_highlight');\n cell.style.zIndex = '2';\n });\n }\n\n private renderLabelsQuarters(vp:TimelineViewParameters):void {\n this.renderTimeSlices(vp, 'month', vp.dateDisplayStart, vp.dateDisplayEnd, () => {\n });\n\n this.renderTimeSlices(vp, 'quarter', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--grid-element_highlight');\n });\n\n this.renderTimeSlices(vp, 'year', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--grid-element_highlight');\n cell.style.zIndex = '2';\n });\n }\n\n private renderLabelsYears(vp:TimelineViewParameters):void {\n this.renderTimeSlices(vp, 'month', vp.dateDisplayStart, vp.dateDisplayEnd, () => {\n });\n\n this.renderTimeSlices(vp, 'year', vp.dateDisplayStart, vp.dateDisplayEnd, (start, cell) => {\n cell.classList.add('wp-timeline--grid-element_highlight');\n });\n }\n\n renderTimeSlices(vp:TimelineViewParameters,\n unit:moment.unitOfTime.DurationConstructor,\n startView:Moment,\n endView:Moment,\n cellCallback:(start:Moment, cell:HTMLElement) => void):void {\n const { inViewportAndBoundaries, rest } = getTimeSlicesForHeader(vp, unit, startView, endView);\n\n for (const [start, end] of inViewportAndBoundaries) {\n const cell = document.createElement('div');\n cell.classList.add(timelineElementCssClass, timelineGridElementCssClass);\n cell.style.left = calculatePositionValueForDayCount(vp, start.diff(startView, 'days'));\n cell.style.width = calculatePositionValueForDayCount(vp, end.diff(start, 'days') + 1);\n this.gridContainer[0].appendChild(cell);\n cellCallback(start, cell);\n }\n setTimeout(() => {\n for (const [start, end] of rest) {\n const cell = document.createElement('div');\n cell.classList.add(timelineElementCssClass, timelineGridElementCssClass);\n cell.style.left = calculatePositionValueForDayCount(vp, start.diff(startView, 'days'));\n cell.style.width = calculatePositionValueForDayCount(vp, end.diff(start, 'days') + 1);\n this.gridContainer[0].appendChild(cell);\n cellCallback(start, cell);\n }\n }, 0);\n }\n\n private checkForNonWorkingDayHighlight(date:Moment, cell:HTMLElement) {\n const day = date.toDate();\n if (this.weekdaysService.isNonWorkingDay(day) || this.wpTimeline.isNonWorkingDay(day)) {\n cell.classList.add('wp-timeline--non-working-day');\n cell.dataset.testSelector = `wp-timeline--non-working-day_${day.getDate()}-${day.getMonth() + 1}-${day.getFullYear()}`;\n }\n }\n}\n","\n \n
    \n \n \n \n \n \n \n \n \n \n
    \n \n\n #{{relatedWorkPackage.id}}\n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n","import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport {\n ChangeDetectorRef, Component, ElementRef, Input, OnInit, ViewChild,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { WorkPackageRelationsService } from '../wp-relations.service';\nimport { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\n\n\n@Component({\n selector: 'wp-relation-row',\n templateUrl: './wp-relation-row.template.html',\n})\nexport class WorkPackageRelationRowComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public relatedWorkPackage:WorkPackageResource;\n\n @Input() public groupByWorkPackageType:boolean;\n\n @ViewChild('relationDescriptionTextarea') readonly relationDescriptionTextarea:ElementRef;\n\n public relationType:string;\n\n public showRelationInfo = false;\n\n public showEditForm = false;\n\n public availableRelationTypes:{ label:string, name:string }[];\n\n public selectedRelationType:{ name:string };\n\n public userInputs = {\n newRelationText: '',\n showDescriptionEditForm: false,\n showRelationTypesForm: false,\n showRelationInfo: false,\n };\n\n // Create a quasi-field object\n public fieldController = {\n handler: {\n active: true,\n },\n required: false,\n };\n\n public relation:RelationResource;\n\n public text = {\n cancel: this.I18n.t('js.button_cancel'),\n save: this.I18n.t('js.button_save'),\n removeButton: this.I18n.t('js.relation_buttons.remove'),\n description_label: this.I18n.t('js.relation_buttons.update_description'),\n toggleDescription: this.I18n.t('js.relation_buttons.toggle_description'),\n updateRelation: this.I18n.t('js.relation_buttons.update_relation'),\n placeholder: {\n description: this.I18n.t('js.placeholders.relation_description'),\n },\n };\n\n constructor(protected apiV3Service:ApiV3Service,\n protected notificationService:WorkPackageNotificationService,\n protected wpRelations:WorkPackageRelationsService,\n protected halEvents:HalEventsService,\n protected I18n:I18nService,\n protected cdRef:ChangeDetectorRef,\n protected PathHelper:PathHelperService) {\n super();\n }\n\n ngOnInit() {\n this.relation = this.relatedWorkPackage.relatedBy as RelationResource;\n\n this.userInputs.newRelationText = this.relation.description || '';\n this.availableRelationTypes = RelationResource.LOCALIZED_RELATION_TYPES(false);\n this.selectedRelationType = _.find(this.availableRelationTypes,\n { name: this.relation.normalizedType(this.workPackage) })!;\n\n this\n .apiV3Service\n .work_packages\n .id(this.relatedWorkPackage)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n ).subscribe((wp) => {\n this.relatedWorkPackage = wp;\n });\n }\n\n /**\n * Return the normalized relation type for the work package we're viewing.\n * That is, normalize `precedes` where the work package is the `to` link.\n */\n public get normalizedRelationType() {\n const type = this.relation.normalizedType(this.workPackage);\n return this.I18n.t(`js.relation_labels.${type}`);\n }\n\n public get relationReady() {\n return this.relatedWorkPackage && this.relatedWorkPackage.$loaded;\n }\n\n public startDescriptionEdit() {\n this.userInputs.showDescriptionEditForm = true;\n setTimeout(() => {\n const textarea = jQuery(this.relationDescriptionTextarea.nativeElement);\n const textlen = (textarea.val() as string).length;\n // Focus and set cursor to end\n textarea.focus();\n\n textarea.prop('selectionStart', textlen);\n textarea.prop('selectionEnd', textlen);\n });\n }\n\n public handleDescriptionKey($event:JQuery.TriggeredEvent) {\n if ($event.which === 27) {\n this.cancelDescriptionEdit();\n }\n }\n\n public cancelDescriptionEdit() {\n this.userInputs.showDescriptionEditForm = false;\n this.userInputs.newRelationText = this.relation.description || '';\n }\n\n public saveDescription() {\n this.wpRelations.updateRelation(\n this.relation,\n { description: this.userInputs.newRelationText },\n )\n .then((savedRelation:RelationResource) => {\n this.relation = savedRelation;\n this.relatedWorkPackage.relatedBy = savedRelation;\n this.userInputs.showDescriptionEditForm = false;\n this.notificationService.showSave(this.relatedWorkPackage);\n this.cdRef.detectChanges();\n });\n }\n\n public get showDescriptionInfo() {\n return this.userInputs.showRelationInfo || this.relation.description;\n }\n\n public activateRelationTypeEdit() {\n if (this.groupByWorkPackageType) {\n this.userInputs.showRelationTypesForm = true;\n }\n }\n\n public cancelRelationTypeEditOnEscape(evt:JQuery.TriggeredEvent) {\n this.userInputs.showRelationTypesForm = false;\n }\n\n public saveRelationType() {\n this.wpRelations.updateRelationType(\n this.workPackage,\n this.relatedWorkPackage,\n this.relation,\n this.selectedRelationType.name,\n )\n .then((savedRelation:RelationResource) => {\n this.notificationService.showSave(this.relatedWorkPackage);\n this.relatedWorkPackage.relatedBy = savedRelation;\n this.relation = savedRelation;\n\n this.userInputs.showRelationTypesForm = false;\n this.cdRef.detectChanges();\n })\n .catch((error:any) => this.notificationService.handleRawError(error, this.workPackage));\n }\n\n public toggleUserDescriptionForm() {\n this.userInputs.showDescriptionEditForm = !this.userInputs.showDescriptionEditForm;\n }\n\n public removeRelation() {\n this.wpRelations.removeRelation(this.relation)\n .then(() => {\n this.halEvents.push(this.workPackage, {\n eventType: 'association',\n relatedWorkPackage: null,\n relationType: this.relation.normalizedType(this.workPackage),\n });\n\n this\n .apiV3Service\n .work_packages\n .cache\n .updateWorkPackage(this.relatedWorkPackage);\n\n this.wpRelations.updateCounter(this.workPackage);\n\n this.notificationService.showSave(this.relatedWorkPackage);\n })\n .catch((err:any) => this.notificationService.handleRawError(err,\n this.relatedWorkPackage));\n }\n\n public highlightingClassForWpType():string {\n return Highlighting.inlineClass('type', this.relatedWorkPackage.type.id!);\n }\n}\n","
    \n
    \n \n
    \n \n \n \n \n
    \n\n\n\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\n@Component({\n selector: 'wp-relations-group',\n templateUrl: './wp-relations-group.template.html',\n})\nexport class WorkPackageRelationsGroupComponent {\n @HostBinding('class.attributes-group') className = true;\n\n @Input() public relatedWorkPackages:WorkPackageResource[];\n\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public header:string;\n\n @Input() public firstGroup:boolean;\n\n @Input() public groupByWorkPackageType:boolean;\n\n @Output() public onToggleGroupBy = new EventEmitter();\n\n @ViewChild('wpRelationGroupByToggler') readonly toggleElement:ElementRef;\n\n public text = {\n groupByType: this.I18n.t('js.relation_buttons.group_by_wp_type'),\n groupByRelation: this.I18n.t('js.relation_buttons.group_by_relation_type'),\n };\n\n constructor(\n readonly I18n:I18nService,\n ) {\n }\n\n public get togglerText() {\n if (this.groupByWorkPackageType) {\n return this.text.groupByRelation;\n }\n return this.text.groupByType;\n }\n\n public toggleButton() {\n this.onToggleGroupBy.emit();\n\n setTimeout(() => {\n this.toggleElement.nativeElement.focus();\n }, 20);\n }\n}\n","
    \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n","import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n Component,\n Input,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { WorkPackageRelationsService } from '../wp-relations.service';\n\n@Component({\n selector: 'wp-relations-create',\n templateUrl: './wp-relation-create.template.html',\n})\nexport class WorkPackageRelationsCreateComponent {\n @Input() readonly workPackage:WorkPackageResource;\n\n public showRelationsCreateForm = false;\n\n public selectedRelationType:string = RelationResource.DEFAULT();\n\n public selectedWpId:string;\n\n public relationTypes = RelationResource.LOCALIZED_RELATION_TYPES(false);\n\n public isDisabled = false;\n\n public text = {\n abort: this.I18n.t('js.relation_buttons.abort'),\n relationType: this.I18n.t('js.relation_buttons.relation_type'),\n addNewRelation: this.I18n.t('js.relation_buttons.add_new_relation'),\n };\n\n constructor(\n readonly I18n:I18nService,\n protected wpRelations:WorkPackageRelationsService,\n protected notificationService:WorkPackageNotificationService,\n protected halEvents:HalEventsService,\n ) {\n }\n\n public onSelected(workPackage?:WorkPackageResource) {\n if (workPackage) {\n this.selectedWpId = workPackage.id!;\n this.createCommonRelation();\n }\n }\n\n protected createCommonRelation() {\n return this.wpRelations.addCommonRelation(this.workPackage.id!,\n this.selectedRelationType,\n this.selectedWpId)\n .then((relation) => {\n this.halEvents.push(this.workPackage, {\n eventType: 'association',\n relatedWorkPackage: relation.id!,\n relationType: this.selectedRelationType,\n });\n this.notificationService.showSave(this.workPackage);\n this.wpRelations.updateCounter(this.workPackage);\n this.toggleRelationsCreateForm();\n })\n .catch((err) => {\n this.notificationService.handleRawError(err, this.workPackage);\n this.toggleRelationsCreateForm();\n });\n }\n\n public toggleRelationsCreateForm() {\n this.showRelationsCreateForm = !this.showRelationsCreateForm;\n // Reset value\n this.selectedWpId = '';\n }\n}\n","import {\n contextColumnIcon,\n OpTableAction,\n OpTableActionFactory,\n} from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport { opIconElement } from 'core-app/shared/helpers/op-icon-builder';\nimport { Injector } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\n\nexport class OpUnlinkTableAction extends OpTableAction {\n constructor(public injector:Injector,\n public workPackage:WorkPackageResource,\n public readonly identifier:string,\n private title:string,\n readonly applicable:(workPackage:WorkPackageResource) => boolean,\n readonly onClick:(workPackage:WorkPackageResource) => void) {\n super(injector, workPackage);\n }\n\n /**\n * Returns a factory for this action with the given title and identifier for reusing\n * remove actions.\n *\n * @param {string} identifier\n * @param {string} title\n */\n public static factoryFor(identifier:string,\n title:string,\n onClick:(workPackage:WorkPackageResource) => void,\n applicable:(workPackage:WorkPackageResource) => boolean = () => true):OpTableActionFactory {\n return (injector:Injector, workPackage:WorkPackageResource) => new OpUnlinkTableAction(injector,\n workPackage,\n identifier,\n title,\n applicable,\n onClick) as OpTableAction;\n }\n\n public buildElement() {\n if (!this.applicable(this.workPackage)) {\n return null;\n }\n\n const element = document.createElement('a');\n element.title = this.title;\n element.href = '#';\n element.classList.add(contextColumnIcon, 'wp-table-action--unlink');\n element.dataset.workPackageId = this.workPackage.id!;\n element.appendChild(opIconElement('icon', 'icon-close'));\n jQuery(element).click((event) => {\n event.preventDefault();\n this.onClick(this.workPackage);\n });\n\n return element;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { Directive, ViewChild } from '@angular/core';\nimport { WorkPackageEmbeddedTableComponent } from 'core-app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\n\n@Directive()\nexport abstract class WorkPackageRelationQueryBase extends UntilDestroyedMixin {\n public workPackage:WorkPackageResource;\n\n /** Input is either a query resource, or directly query props */\n public query:QueryResource|Object;\n\n /** Query props are derived from the query resource, if any */\n public queryProps:Object;\n\n /** Whether this section should be hidden completely (due to missing permissions e.g.) */\n public hidden = false;\n\n /** Reference to the embedded table instance */\n @ViewChild('embeddedTable') protected embeddedTable?:WorkPackageEmbeddedTableComponent;\n\n constructor(protected queryUrlParamsHelper:UrlParamsHelperService) {\n super();\n }\n\n /**\n * Request to refresh the results of the embedded table\n */\n public refreshTable() {\n this.embeddedTable?.isInitialized && this.embeddedTable.loadQuery(true, false);\n }\n\n /**\n * Special handling for query loading when a project filter is involved.\n *\n * Ensure that at least one project was visible to the user or otherwise,\n * hide the creation from them.\n * cf. OP#30106\n * @param query\n */\n public handleQueryLoaded(loaded:QueryResource) {\n // We only handle loaded queries\n if (!(this.query instanceof QueryResource)) {\n return;\n }\n\n const filtersLength = this.projectValuesCount(this.query);\n const loadedFiltersLength = this.projectValuesCount(loaded);\n\n // Does the default have a project filter, but the other does not?\n if (filtersLength !== null && loadedFiltersLength === null) {\n this.hidden = true;\n }\n\n // Has a project filter been reduced to zero elements?\n if (filtersLength && loadedFiltersLength && filtersLength > 0 && loadedFiltersLength === 0) {\n this.hidden = true;\n }\n }\n\n /**\n * Get the filters of the query props\n */\n protected projectValuesCount(query:QueryResource):number|null {\n const project = query.filters.find((f) => f.id === 'project');\n return project ? project.values.length : null;\n }\n\n /**\n * Set up the query props from input\n */\n protected buildQueryProps() {\n if (this.query instanceof QueryResource) {\n return this.queryUrlParamsHelper.buildV3GetQueryFromQueryResource(\n this.query,\n { valid_subset: true },\n { id: this.workPackage.id! },\n );\n }\n return this.query;\n }\n}\n","\n
    \n
    \n

    \n
    \n
    \n\n \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, Input, OnInit } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { WorkPackageRelationsHierarchyService } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport { OpUnlinkTableAction } from 'core-app/features/work-packages/components/wp-table/table-actions/actions/unlink-table-action';\nimport { OpTableActionFactory } from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { WorkPackageRelationQueryBase } from 'core-app/features/work-packages/components/wp-relations/embedded/wp-relation-query.base';\nimport { WpChildrenInlineCreateService } from 'core-app/features/work-packages/components/wp-relations/embedded/children/wp-children-inline-create.service';\nimport { filter } from 'rxjs/operators';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { GroupDescriptor } from 'core-app/features/work-packages/components/wp-single-view/wp-single-view.component';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\n\n@Component({\n selector: 'wp-children-query',\n templateUrl: '../wp-relation-query.html',\n providers: [\n { provide: WorkPackageInlineCreateService, useClass: WpChildrenInlineCreateService },\n ],\n})\nexport class WorkPackageChildrenQueryComponent extends WorkPackageRelationQueryBase implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public query:QueryResource;\n\n /** An optional group descriptor if we're rendering on the single view */\n @Input() public group?:GroupDescriptor;\n\n @Input() public addExistingChildEnabled = false;\n\n public idFromLink = idFromLink;\n\n public tableActions:OpTableActionFactory[] = [\n OpUnlinkTableAction.factoryFor(\n 'remove-child-action',\n this.I18n.t('js.relation_buttons.remove_child'),\n (child:WorkPackageResource) => {\n if (this.embeddedTable) {\n this.embeddedTable.loadingIndicator = this.wpRelationsHierarchyService.removeChild(child);\n }\n },\n (child:WorkPackageResource) => !!child.changeParent,\n ),\n ];\n\n constructor(\n protected wpRelationsHierarchyService:WorkPackageRelationsHierarchyService,\n protected PathHelper:PathHelperService,\n protected wpInlineCreate:WorkPackageInlineCreateService,\n protected halEvents:HalEventsService,\n protected apiV3Service:ApiV3Service,\n protected queryUrlParamsHelper:UrlParamsHelperService,\n readonly I18n:I18nService,\n readonly wpRelations:WorkPackageRelationsService,\n ) {\n super(queryUrlParamsHelper);\n }\n\n ngOnInit() {\n // Set reference target and reference class\n this.wpInlineCreate.referenceTarget = this.workPackage;\n\n // Set up the query props\n this.queryProps = this.buildQueryProps();\n\n // Fire event that children were added\n this.wpInlineCreate.newInlineWorkPackageCreated\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((toId:string) => {\n this.halEvents.push(this.workPackage, {\n eventType: 'association',\n relatedWorkPackage: toId,\n relationType: 'child',\n });\n });\n\n // Refresh table when work package is refreshed\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .observe()\n .pipe(\n filter(() => !!this.embeddedTable?.isInitialized),\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.wpRelations.updateCounter(this.workPackage);\n this.refreshTable();\n });\n }\n}\n","\n
    \n
    \n

    \n

    \n
    \n
    \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { withLatestFrom } from 'rxjs/operators';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport {\n WorkPackageIsolatedQuerySpaceDirective,\n} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\n\n@Component({\n selector: 'wp-relations-hierarchy',\n templateUrl: './wp-relations-hierarchy.template.html',\n hostDirectives: [WorkPackageIsolatedQuerySpaceDirective],\n})\nexport class WorkPackageRelationsHierarchyComponent extends UntilDestroyedMixin implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public relationType:string;\n\n public showEditForm = false;\n\n public workPackagePath:string;\n\n public canHaveChildren = false;\n\n public canModifyHierarchy:boolean;\n\n public canAddRelation:boolean;\n\n public childrenQueryProps:any;\n\n constructor(\n readonly apiV3Service:ApiV3Service,\n readonly PathHelper:PathHelperService,\n readonly I18n:I18nService,\n readonly schemaCache:SchemaCacheService,\n readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n public text = {\n parentHeadline: this.I18n.t('js.relations_hierarchy.parent_headline'),\n childrenHeadline: this.I18n.t('js.relations_hierarchy.children_headline'),\n };\n\n ngOnInit() {\n this.workPackagePath = this.PathHelper.workPackagePath(this.workPackage.id!);\n this.canModifyHierarchy = !!this.workPackage.changeParent;\n this.canAddRelation = !!this.workPackage.addRelation;\n\n this.childrenQueryProps = {\n filters: JSON.stringify([{ parent: { operator: '=', values: [this.workPackage.id] } }]),\n 'columns[]': ['id', 'type', 'subject', 'status'],\n showHierarchies: false,\n };\n\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .requireAndStream()\n .pipe(\n withLatestFrom(this.schemaCache.requireAndStream(this.schemaCache.getSchemaHref(this.workPackage) as string)),\n this.untilDestroyed(),\n )\n .subscribe(([wp, _]) => {\n const milestone = this.schemaCache.of(wp).isMilestone as boolean;\n this.workPackage = wp;\n this.canHaveChildren = !milestone;\n\n this.cdRef.detectChanges();\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { WorkPackageWatchersTabComponent } from './watchers-tab.component';\n\n@Component({\n templateUrl: './wp-watcher-entry.component.html',\n styleUrls: ['./wp-watcher-entry.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'op-wp-watcher-entry',\n})\nexport class WorkPackageWatcherEntryComponent implements OnInit {\n @Input() public watcher:UserResource;\n\n public text:{ remove:string };\n\n constructor(readonly I18n:I18nService,\n readonly panelCtrl:WorkPackageWatchersTabComponent) {\n }\n\n ngOnInit():void {\n this.text = {\n remove: this.I18n.t('js.label_remove_watcher', { name: this.watcher.name }),\n };\n }\n\n public remove():void {\n this.panelCtrl.removeWatcher(this.watcher);\n }\n}\n","
    \n \n \n \n \n \n \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit, Directive, ElementRef, Injector, Input,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { WorkPackageViewSumService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport { combineLatest } from 'rxjs';\nimport { GroupSumsBuilder } from 'core-app/features/work-packages/components/wp-fast-table/builders/modes/grouped/group-sums-builder';\nimport { WorkPackageTable } from 'core-app/features/work-packages/components/wp-fast-table/wp-fast-table';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { SchemaResource } from 'core-app/features/hal/resources/schema-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\n\n@Directive({\n selector: '[wpTableSumsRow]',\n host: {\n '[class.-hidden]': 'isHidden',\n },\n})\nexport class WorkPackageTableSumsRowController implements AfterViewInit {\n @Input('wpTableSumsRow-table') workPackageTable:WorkPackageTable;\n\n public isHidden = true;\n\n private text:{ sum:string };\n\n private element:HTMLTableRowElement;\n\n private groupSumsBuilder:GroupSumsBuilder;\n\n constructor(readonly injector:Injector,\n readonly elementRef:ElementRef,\n readonly querySpace:IsolatedQuerySpace,\n readonly states:States,\n readonly schemaCache:SchemaCacheService,\n readonly wpTableColumns:WorkPackageViewColumnsService,\n readonly wpTableSums:WorkPackageViewSumService,\n readonly I18n:I18nService) {\n this.text = {\n sum: I18n.t('js.label_total_sum'),\n };\n }\n\n ngAfterViewInit():void {\n this.element = this.elementRef.nativeElement;\n\n combineLatest([\n this.wpTableColumns.live$(),\n this.wpTableSums.live$(),\n this.querySpace.results.values$(),\n ])\n .pipe(\n takeUntil(this.querySpace.stopAllSubscriptions),\n )\n .subscribe(([columns, sum, resource]) => {\n this.isHidden = !sum;\n if (sum && resource.sumsSchema) {\n this.schemaCache\n .ensureLoaded(resource.sumsSchema.href!)\n .then((schema:SchemaResource) => {\n this.refresh(columns, resource, schema);\n });\n } else {\n this.clear();\n }\n });\n }\n\n private clear() {\n this.element.innerHTML = '';\n }\n\n private refresh(columns:QueryColumn[], resource:WorkPackageCollectionResource, schema:SchemaResource) {\n this.clear();\n this.render(columns, resource, schema);\n }\n\n private render(columns:QueryColumn[], resource:WorkPackageCollectionResource, schema:SchemaResource) {\n this.groupSumsBuilder = new GroupSumsBuilder(this.injector, this.workPackageTable);\n this.groupSumsBuilder.text = this.text;\n this.groupSumsBuilder.renderColumns(resource.totalSums!, this.element);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n Component,\n Inject,\n Input,\n OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { OpUnlinkTableAction } from 'core-app/features/work-packages/components/wp-table/table-actions/actions/unlink-table-action';\nimport { OpTableActionFactory } from 'core-app/features/work-packages/components/wp-table/table-actions/table-action';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { WorkPackageRelationQueryBase } from 'core-app/features/work-packages/components/wp-relations/embedded/wp-relation-query.base';\nimport { WpRelationInlineCreateService } from 'core-app/features/work-packages/components/wp-relations/embedded/relations/wp-relation-inline-create.service';\nimport { WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport { filter } from 'rxjs/operators';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { GroupDescriptor } from 'core-app/features/work-packages/components/wp-single-view/wp-single-view.component';\n\n@Component({\n selector: 'wp-relation-query',\n templateUrl: '../wp-relation-query.html',\n providers: [\n { provide: WorkPackageInlineCreateService, useClass: WpRelationInlineCreateService },\n ],\n})\nexport class WorkPackageRelationQueryComponent extends WorkPackageRelationQueryBase implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public query:QueryResource;\n\n @Input() public group:GroupDescriptor;\n\n public tableActions:OpTableActionFactory[] = [\n OpUnlinkTableAction.factoryFor(\n 'remove-relation-action',\n this.I18n.t('js.relation_buttons.remove'),\n (relatedTo:WorkPackageResource) => {\n if (!this.embeddedTable) {\n return;\n }\n\n this.embeddedTable.loadingIndicator = this.wpRelations.require(relatedTo.id!)\n .then(() => this.wpInlineCreate.remove(this.workPackage, relatedTo))\n .then(() => this.refreshTable())\n .catch((error) => this.notificationService.handleRawError(error, this.workPackage));\n },\n (child:WorkPackageResource) => !!child.changeParent,\n ),\n ];\n\n public idFromLink = idFromLink;\n\n constructor(protected readonly PathHelper:PathHelperService,\n @Inject(WorkPackageInlineCreateService) protected readonly wpInlineCreate:WpRelationInlineCreateService,\n protected readonly wpRelations:WorkPackageRelationsService,\n protected readonly halEvents:HalEventsService,\n protected readonly queryUrlParamsHelper:UrlParamsHelperService,\n protected readonly notificationService:WorkPackageNotificationService,\n protected readonly I18n:I18nService) {\n super(queryUrlParamsHelper);\n }\n\n ngOnInit() {\n const relationType = this.getRelationTypeFromQuery();\n\n // Set reference target and reference class\n this.wpInlineCreate.referenceTarget = this.workPackage;\n this.wpInlineCreate.relationType = relationType;\n\n // Set up the query props\n this.queryProps = this.buildQueryProps();\n\n // Wire the successful saving of a new addition to refreshing the embedded table\n this.wpInlineCreate.newInlineWorkPackageCreated\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((toId:string) => this.addRelation(toId));\n\n // When relations have changed, refresh this table\n this.wpRelations.observe(this.workPackage.id!)\n .pipe(\n filter((val) => !_.isEmpty(val)),\n this.untilDestroyed(),\n )\n .subscribe(() => this.refreshTable());\n }\n\n private addRelation(toId:string) {\n this.wpInlineCreate\n .add(this.workPackage, toId)\n .then(() => {\n this.halEvents.push(this.workPackage, {\n eventType: 'association',\n relatedWorkPackage: toId,\n relationType: this.getRelationTypeFromQuery(),\n });\n })\n .catch((error) => this.notificationService.handleRawError(error, this.workPackage));\n }\n\n private getRelationTypeFromQuery() {\n return this.group.relationType!;\n }\n}\n","import { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { Component, Injector } from '@angular/core';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service';\nimport { WpTableConfigurationModalComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.modal';\n\n@Component({\n templateUrl: './config-menu.template.html',\n selector: 'wp-table-config-menu',\n})\nexport class WorkPackagesTableConfigMenuComponent {\n public text = {\n configureTable: this.I18n.t('js.toolbar.settings.configure_view'),\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly injector:Injector,\n readonly opModalService:OpModalService,\n readonly opContextMenu:OPContextMenuService,\n ) { }\n\n public openTableConfigurationModal() {\n this.opContextMenu.close();\n this.opModalService.show(WpTableConfigurationModalComponent, this.injector);\n }\n}\n","\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service';\nimport { Directive, ElementRef } from '@angular/core';\nimport { OpContextMenuTrigger } from 'core-app/shared/components/op-context-menu/handlers/op-context-menu-trigger.directive';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n WorkPackageViewDisplayRepresentationService,\n wpDisplayCardRepresentation,\n wpDisplayListRepresentation,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\n\n@Directive({\n selector: '[wpViewDropdown]',\n})\nexport class WorkPackageViewDropdownMenuDirective extends OpContextMenuTrigger {\n constructor(\n readonly elementRef:ElementRef,\n readonly opContextMenu:OPContextMenuService,\n readonly I18n:I18nService,\n readonly wpDisplayRepresentationService:WorkPackageViewDisplayRepresentationService,\n readonly wpTableTimeline:WorkPackageViewTimelineService,\n ) {\n super(elementRef, opContextMenu);\n }\n\n public isOpen = false;\n\n protected open(evt:JQuery.TriggeredEvent) {\n this.isOpen = !this.isOpen;\n if (this.isOpen) {\n this.buildItems();\n this.opContextMenu.show(this, evt);\n } else {\n this.opContextMenu.close();\n }\n }\n\n public get locals() {\n return {\n items: this.items,\n contextMenuId: 'wp-view-context-menu',\n };\n }\n\n private buildItems() {\n this.items = [];\n\n if (this.wpDisplayRepresentationService.current !== wpDisplayCardRepresentation) {\n this.items.push(\n {\n // Card View\n linkText: this.I18n.t('js.views.card'),\n title: this.I18n.t('js.button_show_cards'),\n icon: 'icon-view-card',\n onClick: (evt:any) => {\n this.isOpen = false;\n this.wpDisplayRepresentationService.setDisplayRepresentation(wpDisplayCardRepresentation);\n if (this.wpTableTimeline.isVisible) {\n // Necessary for the timeline buttons to disappear\n this.wpTableTimeline.toggle();\n }\n return true;\n },\n },\n );\n }\n\n if (this.wpTableTimeline.isVisible || this.wpDisplayRepresentationService.current === wpDisplayCardRepresentation) {\n this.items.push(\n {\n // List View\n linkText: this.I18n.t('js.views.list'),\n title: this.I18n.t('js.button_show_table'),\n icon: 'icon-view-list',\n onClick: (evt:any) => {\n this.isOpen = false;\n this.wpDisplayRepresentationService.setDisplayRepresentation(wpDisplayListRepresentation);\n if (this.wpTableTimeline.isVisible) {\n this.wpTableTimeline.toggle();\n }\n return true;\n },\n },\n );\n }\n\n if (!this.wpTableTimeline.isVisible || this.wpDisplayRepresentationService.current === wpDisplayCardRepresentation) {\n this.items.push(\n {\n // List View with enabled Gantt\n linkText: this.I18n.t('js.views.timeline'),\n title: this.I18n.t('js.button_show_gantt'),\n icon: 'icon-view-timeline',\n onClick: (evt:any) => {\n this.isOpen = false;\n if (!this.wpTableTimeline.isVisible) {\n this.wpTableTimeline.toggle();\n }\n this.wpDisplayRepresentationService.setDisplayRepresentation(wpDisplayListRepresentation);\n return true;\n },\n },\n );\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UIRouterModule } from '@uirouter/angular';\nimport { WpTabWrapperComponent } from 'core-app/features/work-packages/components/wp-tabs/components/wp-tab-wrapper/wp-tab-wrapper.component';\nimport { DynamicModule } from 'ng-dynamic-component';\nimport { OpenprojectTabsModule } from 'core-app/shared/components/tabs/openproject-tabs.module';\nimport { IconModule } from 'core-app/shared/components/icon/icon.module';\nimport { WpTabsComponent } from './components/wp-tabs/wp-tabs.component';\n\n@NgModule({\n declarations: [\n WpTabsComponent,\n WpTabWrapperComponent,\n ],\n imports: [\n CommonModule,\n UIRouterModule,\n DynamicModule,\n OpenprojectTabsModule,\n IconModule,\n ],\n exports: [\n WpTabsComponent,\n WpTabWrapperComponent,\n ],\n})\nexport class OpWpTabsModule {\n}\n","\n \n \n \n {{ descriptor.label }}\n *\n \n \n \n \n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, HostBinding, Injector, Input, ViewEncapsulation } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { EditFormComponent } from 'core-app/shared/components/fields/edit/edit-form/edit-form.component';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport {\n FieldDescriptor,\n GroupDescriptor,\n} from 'core-app/features/work-packages/components/wp-single-view/wp-single-view.component';\n\n@Component({\n selector: 'wp-attribute-group',\n templateUrl: './wp-attribute-group.template.html',\n styleUrls: ['./wp-attribute-group.component.sass'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class WorkPackageFormAttributeGroupComponent extends UntilDestroyedMixin {\n @HostBinding('class.wp-attribute-group') className = true;\n @HostBinding('class.attributes-group--attributes') parentClassName = true;\n\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public group:GroupDescriptor;\n\n constructor(\n readonly I18n:I18nService,\n public wpEditForm:EditFormComponent,\n protected injector:Injector,\n ) {\n super();\n }\n\n public trackByName(_index:number, elem:{ name:string }) {\n return elem.name;\n }\n\n /**\n * Hide read-only fields, but only when in the create mode\n * @param {FieldDescriptor} field\n */\n public shouldHideField(descriptor:FieldDescriptor) {\n const field = descriptor.field || descriptor.fields![0];\n return this.wpEditForm.editMode && !field.writable;\n }\n}\n","import { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset';\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\n\nexport class TimeEntryChangeset extends ResourceChangeset {\n public setValue(key:string, val:any) {\n super.setValue(key, val);\n\n // Update the form for fields that may alter the form itself\n if (key === 'workPackage') {\n this.updateForm();\n }\n }\n\n protected buildPayloadFromChanges() {\n const payload = super.buildPayloadFromChanges();\n\n // we ignore the project and instead rely completely on the work package.\n delete payload._links.project;\n\n return payload;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CookieService } from 'ngx-cookie-service';\n\nimport { IconModule } from 'core-app/shared/components/icon/icon.module';\nimport { OpSpotModule } from 'core-app/spot/spot.module';\n\nimport { StorageComponent } from 'core-app/shared/components/storages/storage/storage.component';\nimport {\n FileLinkListItemComponent,\n} from 'core-app/shared/components/storages/file-link-list-item/file-link-list-item.component';\nimport {\n StorageInformationComponent,\n} from 'core-app/shared/components/storages/storage-information/storage-information.component';\nimport {\n FilePickerModalComponent,\n} from 'core-app/shared/components/storages/file-picker-modal/file-picker-modal.component';\nimport { OpSharedModule } from 'core-app/shared/shared.module';\nimport { SortFilesPipe } from 'core-app/shared/components/storages/pipes/sort-files.pipe';\nimport {\n StorageFileListItemComponent,\n} from 'core-app/shared/components/storages/storage-file-list-item/storage-file-list-item.component';\nimport {\n LocationPickerModalComponent,\n} from 'core-app/shared/components/storages/location-picker-modal/location-picker-modal.component';\nimport {\n LoadingFileListComponent,\n} from 'core-app/shared/components/storages/loading-file-list/loading-file-list.component';\nimport {\n UploadConflictModalComponent,\n} from 'core-app/shared/components/storages/upload-conflict-modal/upload-conflict-modal.component';\nimport {\n StorageInformationService,\n} from 'core-app/shared/components/storages/storage-information/storage-information.service';\nimport {\n StorageLoginButtonComponent,\n} from 'core-app/shared/components/storages/storage-login-button/storage-login-button.component';\n\n@NgModule({\n imports: [\n CommonModule,\n IconModule,\n OpSpotModule,\n OpSharedModule,\n ],\n declarations: [\n StorageComponent,\n StorageLoginButtonComponent,\n FileLinkListItemComponent,\n FilePickerModalComponent,\n LocationPickerModalComponent,\n LoadingFileListComponent,\n StorageInformationComponent,\n StorageFileListItemComponent,\n SortFilesPipe,\n UploadConflictModalComponent,\n ],\n exports: [\n StorageComponent,\n ],\n providers: [\n SortFilesPipe,\n CookieService,\n StorageInformationService,\n ],\n})\nexport class OpenprojectStoragesModule {}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { CUSTOM_ELEMENTS_SCHEMA, Injector, NgModule } from '@angular/core';\nimport { OpSharedModule } from 'core-app/shared/shared.module';\nimport { OpenprojectFieldsModule } from 'core-app/shared/components/fields/openproject-fields.module';\nimport { OpenprojectModalModule } from 'core-app/shared/components/modal/modal.module';\nimport { HookService } from 'core-app/features/plugins/hook-service';\nimport {\n WorkPackageEmbeddedTableComponent,\n} from 'core-app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component';\nimport {\n WorkPackageEmbeddedTableEntryComponent,\n} from 'core-app/features/work-packages/components/wp-table/embedded/wp-embedded-table-entry.component';\nimport {\n WorkPackageTablePaginationComponent,\n} from 'core-app/features/work-packages/components/wp-table/table-pagination/wp-table-pagination.component';\nimport {\n WorkPackageTimelineTableController,\n} from 'core-app/features/work-packages/components/wp-table/timeline/container/wp-timeline-container.directive';\nimport {\n WorkPackageInlineCreateComponent,\n} from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.component';\nimport {\n OpTypesContextMenuDirective,\n} from 'core-app/shared/components/op-context-menu/handlers/op-types-context-menu.directive';\nimport {\n OpColumnsContextMenu,\n} from 'core-app/shared/components/op-context-menu/handlers/op-columns-context-menu.directive';\nimport {\n OpSettingsMenuDirective,\n} from 'core-app/shared/components/op-context-menu/handlers/op-settings-dropdown-menu.directive';\nimport {\n WorkPackageStatusDropdownDirective,\n} from 'core-app/shared/components/op-context-menu/handlers/wp-status-dropdown-menu.directive';\nimport {\n WorkPackageCreateSettingsMenuDirective,\n} from 'core-app/shared/components/op-context-menu/handlers/wp-create-settings-menu.directive';\nimport {\n WorkPackageSingleContextMenuDirective,\n} from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-single-context-menu';\nimport {\n WorkPackageTimelineHeaderController,\n} from 'core-app/features/work-packages/components/wp-table/timeline/header/wp-timeline-header.directive';\nimport {\n WorkPackageTableTimelineRelations,\n} from 'core-app/features/work-packages/components/wp-table/timeline/global-elements/wp-timeline-relations.directive';\nimport {\n WorkPackageTableTimelineStaticElements,\n} from 'core-app/features/work-packages/components/wp-table/timeline/global-elements/wp-timeline-static-elements.directive';\nimport {\n WorkPackageTableTimelineGrid,\n} from 'core-app/features/work-packages/components/wp-table/timeline/grid/wp-timeline-grid.directive';\nimport {\n WorkPackageTimelineButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-timeline-toggle-button/wp-timeline-toggle-button.component';\nimport {\n WorkPackageOverviewTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/overview-tab/overview-tab.component';\nimport {\n WorkPackageStatusButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-status-button/wp-status-button.component';\nimport {\n WorkPackageReplacementLabelComponent,\n} from 'core-app/features/work-packages/components/wp-edit/wp-edit-field/wp-replacement-label.component';\nimport {\n WorkPackageActivityTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-tab.component';\nimport { OpenprojectAttachmentsModule } from 'core-app/shared/components/attachments/openproject-attachments.module';\nimport {\n WpCustomActionComponent,\n} from 'core-app/features/work-packages/components/wp-custom-actions/wp-custom-actions/wp-custom-action.component';\nimport {\n WpCustomActionsComponent,\n} from 'core-app/features/work-packages/components/wp-custom-actions/wp-custom-actions.component';\nimport {\n WorkPackageRelationsTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/relations-tab/relations-tab.component';\nimport {\n WorkPackageRelationsComponent,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations.component';\nimport {\n WorkPackageRelationsGroupComponent,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations-group/wp-relations-group.component';\nimport {\n WorkPackageRelationRowComponent,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relation-row/wp-relation-row.component';\nimport {\n WorkPackageRelationsCreateComponent,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations-create/wp-relations-create.component';\nimport {\n WorkPackageRelationsHierarchyComponent,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive';\nimport {\n WorkPackageCreateButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-create-button/wp-create-button.component';\nimport {\n WorkPackageFilterButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-filter-button/wp-filter-button.component';\nimport {\n WorkPackageDetailsViewButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-details-view-button/wp-details-view-button.component';\nimport {\n WorkPackageFoldToggleButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-fold-toggle-button/wp-fold-toggle-button.component';\nimport {\n WpTableConfigurationModalComponent,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.modal';\nimport {\n WpTableConfigurationColumnsTabComponent,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/columns-tab.component';\nimport {\n WpTableConfigurationDisplaySettingsTabComponent,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-tab.component';\nimport {\n WpTableConfigurationFiltersTab,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/filters-tab.component';\nimport {\n WpTableConfigurationSortByTabComponent,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/sort-by-tab.component';\nimport {\n WpTableConfigurationTimelinesTabComponent,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/timelines-tab.component';\nimport {\n WpTableConfigurationHighlightingTabComponent,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/highlighting-tab.component';\nimport {\n WpTableConfigurationRelationSelectorComponent,\n} from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration-relation-selector';\nimport {\n WorkPackageWatchersTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/watchers-tab.component';\nimport {\n WorkPackageWatcherEntryComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watcher-entry.component';\nimport {\n WorkPackageNewSplitViewComponent,\n} from 'core-app/features/work-packages/components/wp-new/wp-new-split-view.component';\nimport {\n WorkPackageNewFullViewComponent,\n} from 'core-app/features/work-packages/components/wp-new/wp-new-full-view.component';\nimport {\n EmbeddedTablesMacroComponent,\n} from 'core-app/features/work-packages/components/wp-table/embedded/embedded-tables-macro.component';\nimport { OpenprojectEditorModule } from 'core-app/shared/components/editor/openproject-editor.module';\nimport {\n WorkPackageTableSumsRowController,\n} from 'core-app/features/work-packages/components/wp-table/wp-table-sums-row/wp-table-sums-row.directive';\nimport {\n ExternalQueryConfigurationComponent,\n} from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.component';\nimport {\n ExternalQueryConfigurationService,\n} from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.service';\nimport {\n ExternalRelationQueryConfigurationComponent,\n} from 'core-app/features/work-packages/components/wp-table/external-configuration/external-relation-query-configuration.component';\nimport {\n ExternalRelationQueryConfigurationService,\n} from 'core-app/features/work-packages/components/wp-table/external-configuration/external-relation-query-configuration.service';\nimport {\n WorkPackagesListInvalidQueryService,\n} from 'core-app/features/work-packages/components/wp-list/wp-list-invalid-query.service';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport {\n WorkPackageWatchersService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watchers.service';\nimport {\n WorkPackagesActivityService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport {\n WorkPackageChildrenQueryComponent,\n} from 'core-app/features/work-packages/components/wp-relations/embedded/children/wp-children-query.component';\nimport {\n WpRelationInlineAddExistingComponent,\n} from 'core-app/features/work-packages/components/wp-relations/embedded/inline/add-existing/wp-relation-inline-add-existing.component';\nimport {\n WorkPackageRelationQueryComponent,\n} from 'core-app/features/work-packages/components/wp-relations/embedded/relations/wp-relation-query.component';\nimport { WorkPackagesBaseComponent } from 'core-app/features/work-packages/routing/wp-base/wp--base.component';\nimport {\n WorkPackageSplitViewComponent,\n} from 'core-app/features/work-packages/routing/wp-split-view/wp-split-view.component';\nimport {\n WorkPackagesFullViewComponent,\n} from 'core-app/features/work-packages/routing/wp-full-view/wp-full-view.component';\nimport { QueryFiltersService } from 'core-app/features/work-packages/components/wp-query/query-filters.service';\nimport {\n WorkPackageCardViewComponent,\n} from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport {\n WorkPackageRelationsService,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport { OpenprojectBcfModule } from 'core-app/features/bim/bcf/openproject-bcf.module';\nimport {\n WorkPackageRelationsAutocompleteComponent,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations-create/wp-relations-autocomplete/wp-relations-autocomplete.component';\nimport {\n CustomDateActionAdminComponent,\n} from 'core-app/features/work-packages/components/wp-custom-actions/date-action/custom-date-action-admin.component';\nimport {\n WorkPackagesTableConfigMenuComponent,\n} from 'core-app/features/work-packages/components/wp-table/config-menu/config-menu.component';\nimport {\n WorkPackageViewDropdownMenuDirective,\n} from 'core-app/shared/components/op-context-menu/handlers/wp-view-dropdown-menu.directive';\nimport { HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { OpenprojectProjectsModule } from 'core-app/features/projects/openproject-projects.module';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport {\n WorkPackageEditActionsBarComponent,\n} from 'core-app/features/work-packages/components/edit-actions-bar/wp-edit-actions-bar.component';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { WorkPackageChangeset } from 'core-app/features/work-packages/components/wp-edit/work-package-changeset';\nimport {\n WorkPackageSingleCardComponent,\n} from 'core-app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component';\nimport {\n WorkPackageListViewComponent,\n} from 'core-app/features/work-packages/routing/wp-list-view/wp-list-view.component';\nimport {\n PartitionedQuerySpacePageComponent,\n} from 'core-app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component';\nimport {\n WorkPackageViewPageComponent,\n} from 'core-app/features/work-packages/routing/wp-view-page/wp-view-page.component';\nimport {\n WorkPackageSettingsButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-settings-button/wp-settings-button.component';\nimport { BackButtonComponent } from 'core-app/features/work-packages/components/back-routing/back-button.component';\nimport { WorkPackagesTableComponent } from 'core-app/features/work-packages/components/wp-table/wp-table.component';\nimport {\n WorkPackageGroupToggleDropdownMenuDirective,\n} from 'core-app/shared/components/op-context-menu/handlers/wp-group-toggle-dropdown-menu.directive';\nimport {\n OpenprojectAutocompleterModule,\n} from 'core-app/shared/components/autocompleter/openproject-autocompleter.module';\nimport { OpWpTabsModule } from 'core-app/features/work-packages/components/wp-tabs/wp-tabs.module';\nimport {\n EditFieldControlsModule,\n} from 'core-app/shared/components/fields/edit/field-controls/edit-field-controls.module';\nimport {\n WpButtonMacroModalComponent,\n} from 'core-app/shared/components/modals/editor/macro-wp-button-modal/wp-button-macro.modal';\nimport { QuerySharingModalComponent } from 'core-app/shared/components/modals/share-modal/query-sharing.modal';\nimport { SaveQueryModalComponent } from 'core-app/shared/components/modals/save-modal/save-query.modal';\nimport { QuerySharingFormComponent } from 'core-app/shared/components/modals/share-modal/query-sharing-form.component';\nimport { WpDestroyModalComponent } from 'core-app/shared/components/modals/wp-destroy-modal/wp-destroy.modal';\nimport {\n WorkPackageTypeStatusComponent,\n} from 'core-app/features/work-packages/components/wp-type-status/wp-type-status.component';\nimport {\n WorkPackageIsolatedQuerySpaceDirective,\n} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive';\nimport {\n WorkPackageBreadcrumbParentComponent,\n} from 'core-app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component';\nimport {\n WorkPackageSubjectComponent,\n} from 'core-app/features/work-packages/components/wp-subject/wp-subject.component';\nimport {\n WorkPackageBreadcrumbComponent,\n} from 'core-app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component';\nimport { UserLinkComponent } from 'core-app/shared/components/user-link/user-link.component';\nimport {\n WorkPackageWatcherButtonComponent,\n} from 'core-app/features/work-packages/components/wp-watcher-button/wp-watcher-button.component';\nimport { WpResizerDirective } from 'core-app/shared/components/resizer/resizer/wp-resizer.component';\nimport {\n GroupDescriptor,\n WorkPackageSingleViewComponent,\n} from 'core-app/features/work-packages/components/wp-single-view/wp-single-view.component';\nimport {\n WorkPackageCopySplitViewComponent,\n} from 'core-app/features/work-packages/components/wp-copy/wp-copy-split-view.component';\nimport {\n WorkPackageFormAttributeGroupComponent,\n} from 'core-app/features/work-packages/components/wp-form-group/wp-attribute-group.component';\nimport { WorkPackagesGridComponent } from 'core-app/features/work-packages/components/wp-grid/wp-grid.component';\nimport {\n WorkPackageSplitViewToolbarComponent,\n} from 'core-app/features/work-packages/components/wp-details/wp-details-toolbar.component';\nimport {\n WorkPackageCopyFullViewComponent,\n} from 'core-app/features/work-packages/components/wp-copy/wp-copy-full-view.component';\nimport { OpenprojectTabsModule } from 'core-app/shared/components/tabs/openproject-tabs.module';\nimport { TimeEntryChangeset } from 'core-app/features/work-packages/helpers/time-entries/time-entry-changeset';\n\nimport { OpAttachmentsComponent } from 'core-app/shared/components/attachments/attachments.component';\nimport {\n QueryFiltersComponent,\n} from 'core-app/features/work-packages/components/filters/query-filters/query-filters.component';\nimport {\n FilterDateTimesValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-date-times-value/filter-date-times-value.component';\nimport {\n FilterSearchableMultiselectValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-searchable-multiselect-value/filter-searchable-multiselect-value.component';\nimport {\n QueryFilterComponent,\n} from 'core-app/features/work-packages/components/filters/query-filter/query-filter.component';\nimport {\n FilterDatesValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-dates-value/filter-dates-value.component';\nimport {\n FilterStringValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-string-value/filter-string-value.component';\nimport {\n FilterProjectComponent,\n} from 'core-app/features/work-packages/components/filters/filter-project/filter-project.component';\nimport {\n FilterDateValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-date-value/filter-date-value.component';\nimport {\n FilterDateTimeValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-date-time-value/filter-date-time-value.component';\nimport {\n FilterToggledMultiselectValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-toggled-multiselect-value/filter-toggled-multiselect-value.component';\nimport {\n WorkPackageFilterByTextInputComponent,\n} from 'core-app/features/work-packages/components/filters/quick-filter-by-text-input/quick-filter-by-text-input.component';\nimport {\n FilterIntegerValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-integer-value/filter-integer-value.component';\nimport {\n WorkPackageFilterContainerComponent,\n} from 'core-app/features/work-packages/components/filters/filter-container/filter-container.directive';\nimport {\n FilterBooleanValueComponent,\n} from 'core-app/features/work-packages/components/filters/filter-boolean-value/filter-boolean-value.component';\nimport {\n WorkPackageMarkNotificationButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-mark-notification-button/work-package-mark-notification-button.component';\nimport {\n WorkPackageFilesTabComponent,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/files-tab/op-files-tab.component';\nimport { WorkPackagesQueryViewService } from 'core-app/features/work-packages/components/wp-list/wp-query-view.service';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\nimport { OpenprojectStoragesModule } from 'core-app/shared/components/storages/openproject-storages.module';\nimport { FileLinksResourceService } from 'core-app/core/state/file-links/file-links.service';\nimport { StoragesResourceService } from 'core-app/core/state/storages/storages.service';\nimport { StorageFilesResourceService } from 'core-app/core/state/storage-files/storage-files.service';\nimport { ProjectStoragesResourceService } from 'core-app/core/state/project-storages/project-storages.service';\nimport {\n OpBaselineModalComponent,\n} from 'core-app/features/work-packages/components/wp-baseline/baseline-modal/baseline-modal.component';\nimport {\n OpBaselineComponent,\n} from 'core-app/features/work-packages/components/wp-baseline/baseline/baseline.component';\nimport {\n OpBaselineLoadingComponent,\n} from 'core-app/features/work-packages/components/wp-baseline/baseline-loading/baseline-loading.component';\nimport {\n OpBaselineLegendsComponent,\n} from 'core-app/features/work-packages/components/wp-baseline/baseline-legends/baseline-legends.component';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport {\n WorkPackageTimerButtonComponent,\n} from 'core-app/features/work-packages/components/wp-timer-button/wp-timer-button.component';\nimport { OpenprojectTimeEntriesModule } from 'core-app/shared/components/time_entries/openproject-time-entries.module';\nimport { RecentItemsService } from 'core-app/core/recent-items.service';\nimport {\n WorkPackageReminderButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-reminder-button/wp-reminder-button.component';\nimport {\n WorkPackageReminderModalComponent,\n} from 'core-app/features/work-packages/components/wp-reminder-modal/wp-reminder.modal';\nimport {\n WorkPackageShareButtonComponent,\n} from 'core-app/features/work-packages/components/wp-buttons/wp-share-button/wp-share-button.component';\nimport {\n WorkPackageShareModalComponent,\n} from 'core-app/features/work-packages/components/wp-share-modal/wp-share.modal';\nimport {\n WorkPackageSplitViewEntryComponent,\n} from 'core-app/features/work-packages/routing/wp-split-view/wp-split-view-entry.component';\nimport { OpWpDatePickerModalComponent } from 'core-app/shared/components/datepicker/wp-date-picker-modal/wp-date-picker.modal';\n\n@NgModule({\n imports: [\n // Commons\n OpSharedModule,\n NgSelectModule,\n // Display + Edit field functionality\n OpenprojectFieldsModule,\n // CKEditor\n OpenprojectEditorModule,\n\n OpenprojectAttachmentsModule,\n\n OpenprojectBcfModule,\n\n OpenprojectProjectsModule,\n\n OpenprojectModalModule,\n\n OpenprojectAutocompleterModule,\n\n OpenprojectTimeEntriesModule,\n\n OpWpTabsModule,\n\n EditFieldControlsModule,\n OpenprojectTabsModule,\n OpenprojectStoragesModule,\n\n WorkPackageIsolatedQuerySpaceDirective,\n ],\n providers: [\n // Notification service\n WorkPackageNotificationService,\n\n // External query configuration\n ExternalQueryConfigurationService,\n ExternalRelationQueryConfigurationService,\n\n // Global work package states / services\n SchemaCacheService,\n\n // Global query/table state services\n // For any service that depends on the isolated query space,\n // they should be provided in wp-isolated-query-space.directive instead\n QueryFiltersService,\n WorkPackagesListInvalidQueryService,\n\n // Provide a separate service for creation events of WP Inline create\n // This can be hierarchically injected to provide isolated events on an embedded table\n WorkPackageRelationsService,\n\n WorkPackagesActivityService,\n WorkPackageRelationsService,\n WorkPackageWatchersService,\n\n WorkPackagesQueryViewService,\n\n HalEventsService,\n FileLinksResourceService,\n StorageFilesResourceService,\n\n StoragesResourceService,\n ProjectStoragesResourceService,\n\n RecentItemsService,\n ],\n declarations: [\n // Routing\n WorkPackagesBaseComponent,\n PartitionedQuerySpacePageComponent,\n WorkPackageViewPageComponent,\n\n // WP list side\n WorkPackageListViewComponent,\n WorkPackageSettingsButtonComponent,\n\n // WP New\n WorkPackageNewFullViewComponent,\n WorkPackageNewSplitViewComponent,\n WorkPackageTypeStatusComponent,\n WorkPackageEditActionsBarComponent,\n\n // WP Copy\n WorkPackageCopyFullViewComponent,\n WorkPackageCopySplitViewComponent,\n\n // Embedded table\n WorkPackageEmbeddedTableComponent,\n WorkPackageEmbeddedTableEntryComponent,\n\n // External query configuration\n ExternalQueryConfigurationComponent,\n ExternalRelationQueryConfigurationComponent,\n\n // Inline create\n WorkPackageInlineCreateComponent,\n WpRelationInlineAddExistingComponent,\n\n WorkPackagesGridComponent,\n\n WorkPackagesTableComponent,\n WorkPackagesTableConfigMenuComponent,\n WorkPackageTablePaginationComponent,\n\n WpResizerDirective,\n\n WorkPackageTableSumsRowController,\n\n // Fold/Unfold button on wp list\n WorkPackageFoldToggleButtonComponent,\n\n // Filters\n QueryFiltersComponent,\n QueryFilterComponent,\n FilterBooleanValueComponent,\n FilterDateValueComponent,\n FilterDatesValueComponent,\n FilterDateTimeValueComponent,\n FilterDateTimesValueComponent,\n FilterIntegerValueComponent,\n FilterStringValueComponent,\n FilterProjectComponent,\n FilterToggledMultiselectValueComponent,\n FilterSearchableMultiselectValueComponent,\n\n WorkPackageFilterContainerComponent,\n WorkPackageFilterButtonComponent,\n\n // Context menus\n OpTypesContextMenuDirective,\n OpColumnsContextMenu,\n OpSettingsMenuDirective,\n WorkPackageStatusDropdownDirective,\n WorkPackageCreateSettingsMenuDirective,\n WorkPackageSingleContextMenuDirective,\n WorkPackageViewDropdownMenuDirective,\n WorkPackageGroupToggleDropdownMenuDirective,\n\n // Timeline\n WorkPackageTimelineButtonComponent,\n WorkPackageTimelineHeaderController,\n WorkPackageTableTimelineRelations,\n WorkPackageTableTimelineStaticElements,\n WorkPackageTableTimelineGrid,\n WorkPackageTimelineTableController,\n\n WorkPackageCreateButtonComponent,\n WorkPackageFilterByTextInputComponent,\n\n // Single view\n WorkPackageOverviewTabComponent,\n WorkPackageSingleViewComponent,\n WorkPackageStatusButtonComponent,\n WorkPackageReplacementLabelComponent,\n UserLinkComponent,\n WorkPackageChildrenQueryComponent,\n WorkPackageRelationQueryComponent,\n WorkPackageFormAttributeGroupComponent,\n BackButtonComponent,\n WorkPackageTimerButtonComponent,\n\n // Activity Tab\n WorkPackageActivityTabComponent,\n\n // Watchers wp-tab-wrapper\n WorkPackageWatchersTabComponent,\n WorkPackageWatcherEntryComponent,\n\n // Relations\n WorkPackageRelationsTabComponent,\n WorkPackageRelationsComponent,\n WorkPackageRelationsGroupComponent,\n WorkPackageRelationRowComponent,\n WorkPackageRelationsCreateComponent,\n WorkPackageRelationsHierarchyComponent,\n WorkPackageRelationsAutocompleteComponent,\n WorkPackageBreadcrumbParentComponent,\n\n // Files tab\n WorkPackageFilesTabComponent,\n\n // Split view\n WorkPackageDetailsViewButtonComponent,\n WorkPackageSplitViewComponent,\n WorkPackageSplitViewEntryComponent,\n WorkPackageBreadcrumbComponent,\n WorkPackageSplitViewToolbarComponent,\n WorkPackageWatcherButtonComponent,\n WorkPackageReminderButtonComponent,\n WorkPackageShareButtonComponent,\n WorkPackageSubjectComponent,\n\n // Full view\n WorkPackagesFullViewComponent,\n\n // Modals\n WpTableConfigurationModalComponent,\n WpTableConfigurationColumnsTabComponent,\n WpTableConfigurationDisplaySettingsTabComponent,\n WpTableConfigurationFiltersTab,\n WpTableConfigurationSortByTabComponent,\n WpTableConfigurationTimelinesTabComponent,\n WpTableConfigurationHighlightingTabComponent,\n WpTableConfigurationRelationSelectorComponent,\n QuerySharingFormComponent,\n QuerySharingModalComponent,\n SaveQueryModalComponent,\n WpDestroyModalComponent,\n WorkPackageShareModalComponent,\n WorkPackageReminderModalComponent,\n\n // CustomActions\n WpCustomActionComponent,\n WpCustomActionsComponent,\n CustomDateActionAdminComponent,\n\n // CKEditor macros which could not be included in the\n // editor module to avoid circular dependencies\n EmbeddedTablesMacroComponent,\n WpButtonMacroModalComponent,\n\n // Card view\n WorkPackageCardViewComponent,\n WorkPackageSingleCardComponent,\n\n // Notifications\n WorkPackageMarkNotificationButtonComponent,\n\n // Timestamps\n OpBaselineModalComponent,\n OpBaselineComponent,\n OpBaselineLoadingComponent,\n OpBaselineLegendsComponent,\n\n OpWpDatePickerModalComponent,\n ],\n exports: [\n WorkPackagesTableComponent,\n WorkPackageTablePaginationComponent,\n WorkPackageEmbeddedTableComponent,\n WorkPackageEmbeddedTableEntryComponent,\n WorkPackageCardViewComponent,\n WorkPackageSingleCardComponent,\n WorkPackageFilterButtonComponent,\n WorkPackageFilterContainerComponent,\n QueryFiltersComponent,\n\n WpResizerDirective,\n WorkPackageBreadcrumbComponent,\n WorkPackageBreadcrumbParentComponent,\n WorkPackageSplitViewToolbarComponent,\n WorkPackageSubjectComponent,\n WorkPackagesGridComponent,\n\n // Modals\n WpTableConfigurationModalComponent,\n WpTableConfigurationFiltersTab,\n\n // Needed so that e.g. IFC can access it.\n WorkPackageCreateButtonComponent,\n WorkPackageStatusButtonComponent,\n WorkPackageTypeStatusComponent,\n WorkPackageEditActionsBarComponent,\n WorkPackageSingleViewComponent,\n WorkPackageSplitViewComponent,\n BackButtonComponent,\n OpWpDatePickerModalComponent,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class OpenprojectWorkPackagesModule {\n static bootstrapAttributeGroupsCalled = false;\n\n constructor(private injector:Injector) {\n OpenprojectWorkPackagesModule.bootstrapAttributeGroups(injector);\n }\n\n // The static property prevents running the function\n // multiple times. This happens e.g. when the module is included\n // into a plugin's module.\n public static bootstrapAttributeGroups(injector:Injector):void {\n if (this.bootstrapAttributeGroupsCalled) {\n return;\n }\n\n this.bootstrapAttributeGroupsCalled = true;\n\n const hookService = injector.get(HookService);\n\n hookService.register('attributeGroupComponent', (group:GroupDescriptor, workPackage:WorkPackageResource) => {\n if (group.type === 'WorkPackageFormAttributeGroup') {\n return WorkPackageFormAttributeGroupComponent;\n }\n if (!isNewResource(workPackage) && group.type === 'WorkPackageFormChildrenQueryGroup') {\n return WorkPackageChildrenQueryComponent;\n }\n if (!isNewResource(workPackage) && group.type === 'WorkPackageFormRelationQueryGroup') {\n return WorkPackageRelationQueryComponent;\n }\n return null;\n });\n\n hookService.register('workPackageAttachmentListComponent', () => OpAttachmentsComponent);\n\n /** Return specialized work package changeset for editing service */\n hookService.register('halResourceChangesetClass', (resource:HalResource) => {\n switch (resource._type) {\n case 'WorkPackage':\n return WorkPackageChangeset;\n case 'TimeEntry':\n return TimeEntryChangeset;\n default:\n return null;\n }\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { OpTitleService } from 'core-app/core/html/op-title.service';\nimport { WorkPackagesViewBase } from 'core-app/features/work-packages/routing/wp-view-base/work-packages-view.base';\nimport { take } from 'rxjs/operators';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { QueryParamListenerService } from 'core-app/features/work-packages/components/wp-query/query-param-listener.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { InviteUserModalComponent } from 'core-app/features/invite-user-modal/invite-user.component';\nimport { WorkPackageFilterContainerComponent } from 'core-app/features/work-packages/components/filters/filter-container/filter-container.directive';\nimport isPersistedResource from 'core-app/features/hal/helpers/is-persisted-resource';\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface DynamicComponentDefinition {\n component:ComponentType;\n inputs?:{ [inputName:string]:any };\n outputs?:{ [outputName:string]:Function };\n}\n\nexport interface ToolbarButtonComponentDefinition extends DynamicComponentDefinition {\n containerClasses?:string;\n show?:() => boolean;\n}\n\nexport type ViewPartitionState = '-split'|'-left-only'|'-right-only';\n\n@Component({\n templateUrl: './partitioned-query-space-page.component.html',\n styleUrls: ['./partitioned-query-space-page.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n /** We need to provide the wpNotification service here to get correct save notifications for WP resources */\n { provide: HalResourceNotificationService, useClass: WorkPackageNotificationService },\n QueryParamListenerService,\n ],\n})\nexport class PartitionedQuerySpacePageComponent extends WorkPackagesViewBase implements OnInit, OnDestroy {\n @InjectField() I18n!:I18nService;\n\n @InjectField() titleService:OpTitleService;\n\n @InjectField() queryParamListener:QueryParamListenerService;\n\n @InjectField() opModalService:OpModalService;\n\n @InjectField() uiRouterGlobals:UIRouterGlobals;\n\n @InjectField() configuration:ConfigurationService;\n\n text:{ [key:string]:string } = {\n jump_to_pagination: this.I18n.t('js.work_packages.jump_marks.pagination'),\n text_jump_to_pagination: this.I18n.t('js.work_packages.jump_marks.label_pagination'),\n };\n\n /** Whether the title can be edited */\n titleEditingEnabled:boolean;\n\n /** Current query title to render */\n selectedTitle?:string;\n\n currentQuery:QueryResource|undefined;\n\n /** Whether we're saving the query */\n toolbarDisabled:boolean;\n\n /** Do we currently have query props ? */\n showToolbarSaveButton:boolean;\n\n /** Listener callbacks */\n // eslint-disable-next-line @typescript-eslint/ban-types\n removeTransitionSubscription:Function;\n\n /** Determine when query is initially loaded */\n showToolbar = false;\n\n /** The toolbar buttons to render */\n toolbarButtonComponents:ToolbarButtonComponentDefinition[] = [];\n\n /** Whether filtering is allowed */\n filterAllowed = true;\n\n /** We need to pass the correct partition state to the view to manage the grid */\n currentPartition:ViewPartitionState = '-split';\n\n /** What route (if any) should we go back to using the back button left of the title? */\n backButtonCallback:() => void|undefined;\n\n /** Which filter container component to mount */\n filterContainerDefinition:DynamicComponentDefinition = {\n component: WorkPackageFilterContainerComponent,\n };\n\n ngOnInit():void {\n super.ngOnInit();\n\n this.showToolbarSaveButton = !!this.$state.params.query_props;\n this.setPartition(this.$state.current);\n this.removeTransitionSubscription = this.$transitions.onSuccess({}, (transition):any => {\n const params = transition.params('to');\n const toState = transition.to();\n this.showToolbarSaveButton = !!params.query_props;\n this.setPartition(toState);\n\n const query = this.querySpace.query.value;\n if (query && this.shouldUpdateHtmlTitle()) {\n // Update the title if we're in the list state alone\n this.titleService.setFirstPart(this.queryTitle(query));\n }\n\n this.cdRef.detectChanges();\n });\n\n // Load the query. If it hasn't been loaded before, do that visibly.\n this.loadInitialQuery();\n\n // Mark tableInformationLoaded when initially loading done\n this.setupInformationLoadedListener();\n\n // Load query on URL transitions\n this.queryParamListener\n .observe$\n .pipe(this.untilDestroyed())\n .subscribe(() => {\n /** Ensure we reload the query from the changed props */\n this.currentQuery = undefined;\n void this.refresh(true, true);\n });\n\n this.querySpace.query.values$()\n .pipe(this.untilDestroyed())\n .subscribe((query) => {\n // Update the title whenever the query changes\n this.updateTitle(query);\n this.currentQuery = query;\n });\n }\n\n /**\n * We need to set the current partition to the grid to ensure\n * either side gets expanded to full width if we're not in '-split' mode.\n *\n * @param state The current or entering state\n */\n protected setPartition(state:Ng2StateDeclaration):void {\n this.currentPartition = (state.data && state.data.partition) ? state.data.partition : '-split';\n }\n\n protected setupInformationLoadedListener():void {\n this\n .querySpace\n .initialized\n .values$()\n .pipe(take(1))\n .subscribe(() => {\n this.showToolbar = true;\n this.cdRef.detectChanges();\n });\n }\n\n ngOnDestroy():void {\n super.ngOnDestroy();\n this.removeTransitionSubscription();\n this.queryParamListener.removeQueryChangeListener();\n }\n\n public changeChangesFromTitle(val:string):void {\n if (this.currentQuery && isPersistedResource(this.currentQuery)) {\n this.updateTitleName(val);\n } else {\n this.wpListService\n .create(this.currentQuery!, val)\n .finally(() => { this.toolbarDisabled = false; });\n }\n }\n\n updateTitleName(val:string):void {\n this.toolbarDisabled = true;\n this.currentQuery!.name = val;\n this.wpListService\n .save(this.currentQuery)\n .finally(() => {\n this.toolbarDisabled = false;\n this.cdRef.detectChanges();\n });\n }\n\n updateTitle(query?:QueryResource):void {\n // Too early for loaded query\n if (!query) {\n return;\n }\n\n this.selectedTitle = this.queryTitle(query);\n\n this.titleEditingEnabled = this.authorisationService.can('query', 'updateImmediately');\n\n // Update the title if we're in the list state alone\n if (this.shouldUpdateHtmlTitle()) {\n this.titleService.setFirstPart(this.selectedTitle);\n }\n }\n\n refresh(visibly = false, firstPage = false):void {\n let promise = this.loadQuery(firstPage);\n\n if (visibly) {\n promise = promise.then((loadedQuery:QueryResource) => {\n this.wpStatesInitialization.initialize(loadedQuery, loadedQuery.results);\n return this.additionalLoadingTime()\n .then(() => loadedQuery);\n });\n\n this.loadingIndicator = promise;\n } else {\n void promise.then((loadedQuery:QueryResource) => {\n this.wpStatesInitialization.initialize(loadedQuery, loadedQuery.results);\n });\n }\n }\n\n protected inviteModal = InviteUserModalComponent;\n\n protected loadQuery(firstPage = false):Promise {\n let promise:Promise;\n const query = this.currentQuery;\n\n if (firstPage || !query) {\n promise = this.loadFirstPage();\n } else {\n const pagination = this.wpListService.getPaginationInfo();\n promise = firstValueFrom(this.wpListService.loadQueryFromExisting(query, pagination, this.projectIdentifier));\n }\n\n return promise;\n }\n\n protected loadFirstPage():Promise {\n if (this.currentQuery) {\n return firstValueFrom(this.wpListService.reloadQuery(this.currentQuery, this.projectIdentifier));\n }\n return this.wpListService.loadCurrentQueryFromParams(this.projectIdentifier);\n }\n\n protected additionalLoadingTime():Promise {\n return Promise.resolve();\n }\n\n protected set loadingIndicator(promise:Promise) {\n this.loadingIndicatorService.table.promise = promise;\n }\n\n protected shouldUpdateHtmlTitle():boolean {\n return true;\n }\n\n protected staticQueryName(query:QueryResource):string {\n return this.opStaticQueries.getStaticName(query);\n }\n\n protected loadInitialQuery():void {\n const isFirstLoad = !this.querySpace.initialized.hasValue();\n this.loadingIndicator = this.loadQuery(isFirstLoad);\n }\n\n private queryTitle(query:QueryResource):string {\n return isPersistedResource(query) ? query.name : this.staticQueryName(query);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { StateService } from '@uirouter/angular';\n\n/**\n * Returns the path to the split view based on the current route\n *\n * @param state State service\n */\nexport function splitViewRoute(state:StateService, target:'details'|'new' = 'details'):string {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment\n const baseRoute:string = state.current.data.baseRoute || '';\n return `${baseRoute}.${target}`;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageNewSplitViewComponent } from 'core-app/features/work-packages/components/wp-new/wp-new-split-view.component';\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { ComponentType } from '@angular/cdk/overlay';\nimport { WpTabWrapperComponent } from 'core-app/features/work-packages/components/wp-tabs/components/wp-tab-wrapper/wp-tab-wrapper.component';\nimport { WorkPackageCopySplitViewComponent } from 'core-app/features/work-packages/components/wp-copy/wp-copy-split-view.component';\n\n/**\n * Return a set of routes for a split view mounted under the given base route,\n * which must be a grandchild of a PartitionedQuerySpacePageComponent.\n *\n * Example: base route = foo.bar\n *\n * Split view will be created at\n *\n * foo.bar.details\n * foo.bar.details.activity\n * foo.bar.details.relations\n * foo.bar.details.watchers\n *\n * NOTE: All parameters here must either be `export const` or literal strings,\n * otherwise AOT will not be able to look them up. This might result in missing routes.\n *\n * @param baseRoute The base route to mount under\n * @param showComponent The split view component to mount\n */\nexport function makeSplitViewRoutes(baseRoute:string,\n menuItemClass:string|undefined,\n showComponent:ComponentType,\n newComponent:ComponentType = WorkPackageNewSplitViewComponent,\n makeFullWidth?:boolean,\n showMobileAlternative = true,\n routeName = baseRoute):Ng2StateDeclaration[] {\n // makeFullWidth configuration\n const views:{ [content:string]:{ component:ComponentType; }; } = makeFullWidth\n ? { 'content-left@^.^': { component: showComponent } }\n : { 'content-right@^.^': { component: showComponent } };\n const partition = makeFullWidth ? '-left-only' : '-split';\n\n return [\n {\n name: `${routeName}.details`,\n url: '/details/{workPackageId:[0-9]+}',\n redirectTo: (trans) => {\n const params = trans.params('to');\n return {\n state: `${routeName}.details.tabs`,\n params: { ...params, tabIdentifier: 'overview' },\n };\n },\n reloadOnSearch: false,\n data: {\n bodyClasses: 'router--work-packages-partitioned-split-view-details',\n menuItem: menuItemClass,\n // Remember the base route so we can route back to it anywhere\n baseRoute,\n newRoute: `${routeName}.new`,\n partition,\n mobileAlternative: showMobileAlternative ? 'work-packages.show' : undefined,\n },\n // Retarget and by that override the grandparent views\n // https://ui-router.github.io/guide/views#relative-parent-state\n views,\n },\n {\n name: `${routeName}.details.tabs`,\n url: '/:tabIdentifier',\n component: WpTabWrapperComponent,\n data: {\n baseRoute,\n menuItem: menuItemClass,\n parent: `${routeName}.details`,\n mobileAlternative: showMobileAlternative ? 'work-packages.show' : undefined,\n },\n },\n // Split create route\n {\n name: `${routeName}.new`,\n url: '/create_new?{type:[0-9]+}&{parent_id:[0-9]+}',\n reloadOnSearch: false,\n params: {\n defaults: {\n value: null,\n },\n },\n data: {\n partition: '-split',\n allowMovingInEditMode: true,\n bodyClasses: 'router--work-packages-partitioned-split-view-new',\n // Remember the base route so we can route back to it anywhere\n baseRoute,\n parent: baseRoute,\n mobileAlternative: showMobileAlternative ? 'work-packages.new' : undefined,\n },\n views: {\n // Retarget and by that override the grandparent views\n // https://ui-router.github.io/guide/views#relative-parent-state\n 'content-right@^.^': { component: newComponent },\n },\n },\n // Split copy route\n {\n name: `${routeName}.copy`,\n url: '/details/{copiedFromWorkPackageId:[0-9]+}/copy',\n views: {\n 'content-right@^.^': { component: WorkPackageCopySplitViewComponent },\n },\n reloadOnSearch: false,\n data: {\n baseRoute,\n parent: baseRoute,\n allowMovingInEditMode: true,\n bodyClasses: 'router--work-packages-partitioned-split-view',\n menuItem: menuItemClass,\n partition: '-split',\n mobileAlternative: showMobileAlternative ? 'work-packages.show' : undefined,\n },\n },\n ];\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Transition } from '@uirouter/core';\nimport { Injectable } from '@angular/core';\nimport { EditFormRoutingService } from 'core-app/shared/components/fields/edit/edit-form/edit-form-routing.service';\n\n@Injectable()\nexport class WorkPackageEditFormRoutingService extends EditFormRoutingService {\n /**\n * Return whether the given transition is cancelled during the editing of this form\n *\n * @param transition The transition that is underway.\n * @return A boolean marking whether the transition should be blocked.\n */\n public blockedTransition(transition:Transition):boolean {\n const toState = transition.to();\n const fromState = transition.from();\n const fromParams = transition.params('from');\n const toParams = transition.params('to');\n\n // In new/copy mode, transitions to the same controller are allowed\n if (fromState.name && (/\\.(new|copy)$/.exec(fromState.name))) {\n return !(toState.data && toState.data.allowMovingInEditMode);\n }\n\n // When editing an existing WP, transitions on the same WP id are allowed\n return toParams.workPackageId === undefined || toParams.workPackageId !== fromParams.workPackageId;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component } from '@angular/core';\nimport { EditFormRoutingService } from 'core-app/shared/components/fields/edit/edit-form/edit-form-routing.service';\nimport { WorkPackageEditFormRoutingService } from 'core-app/features/work-packages/routing/wp-edit-form/wp-edit-form-routing.service';\nimport {\n WorkPackageIsolatedQuerySpaceDirective,\n} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive';\n\nexport const wpBaseSelector = 'work-packages-base';\n\n@Component({\n selector: wpBaseSelector,\n hostDirectives: [WorkPackageIsolatedQuerySpaceDirective],\n template: `\n
    \n \n
    \n `,\n providers: [\n { provide: EditFormRoutingService, useClass: WorkPackageEditFormRoutingService },\n ],\n})\nexport class WorkPackagesBaseComponent {\n}\n","
    \n
    \n
    \n \n\n \n \n\n
    \n \n
    \n\n
      \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n
    • \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n\n
    \n \n
    \n
    \n
    \n
    \n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { RecentItemsService } from 'core-app/core/recent-items.service';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { WpSingleViewService } from 'core-app/features/work-packages/routing/wp-view-base/state/wp-single-view.service';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { WorkPackageSingleViewBase } from 'core-app/features/work-packages/routing/wp-view-base/work-package-single-view.base';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { Observable, of } from 'rxjs';\n\n@Component({\n templateUrl: './wp-full-view.html',\n selector: 'wp-full-view-entry',\n // Required class to support inner scrolling on page\n host: { class: 'work-packages-page--ui-view' },\n providers: [\n WpSingleViewService,\n { provide: HalResourceNotificationService, useExisting: WorkPackageNotificationService },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackagesFullViewComponent extends WorkPackageSingleViewBase implements OnInit {\n // Watcher properties\n public isWatched:boolean;\n\n public displayReminderButton$:Observable = of(false);\n\n public displayShareButton$:false|Observable = false;\n\n public displayTimerButton = false;\n\n public displayWatchButton = false;\n\n public watchers:any;\n\n public text = {\n fullView: {\n buttonMore: this.i18n.t('js.button_more'),\n },\n };\n\n stateName$ = of('work-packages.new');\n\n constructor(\n public injector:Injector,\n public wpTableSelection:WorkPackageViewSelectionService,\n public recentItemsService:RecentItemsService,\n readonly $state:StateService,\n readonly currentUserService:CurrentUserService,\n private readonly configurationService:ConfigurationService,\n ) {\n super(injector, $state.params.workPackageId);\n }\n\n // enable other parts of the application to trigger an immediate update\n // e.g. a stimulus controller\n // currently used by the new activities tab which does its own polling\n @HostListener('document:ian-update-immediate')\n triggerImmediateUpdate() {\n this.storeService.reload();\n }\n\n ngOnInit():void {\n this.observeWorkPackage();\n }\n\n protected init() {\n super.init();\n\n if (this.workPackage.id) {\n this.recentItemsService.add(this.workPackage.id);\n\n // Set Focused WP\n this.wpTableFocus.updateFocus(this.workPackage.id);\n }\n\n this.setWorkPackageScopeProperties(this.workPackage);\n }\n\n private setWorkPackageScopeProperties(wp:WorkPackageResource) {\n this.isWatched = Object.prototype.hasOwnProperty.call(wp, 'unwatch');\n this.displayWatchButton = Object.prototype.hasOwnProperty.call(wp, 'unwatch') || Object.prototype.hasOwnProperty.call(wp, 'watch');\n this.displayTimerButton = Object.prototype.hasOwnProperty.call(wp, 'logTime');\n this.displayShareButton$ = this.currentUserService.hasCapabilities$('work_package_shares/index', (wp.project as ProjectResource).id);\n this.displayReminderButton$ = this.currentUserService.isLoggedInAndHasCapabalities$(\n 'work_packages/read',\n (this.workPackage.project as ProjectResource).id,\n );\n\n // watchers\n if (wp.watchers) {\n this.watchers = (wp.watchers as any).elements;\n }\n }\n}\n","
    \n\n\n\n\n\n\n
    \n\n\n
    \n\n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Injector,\n OnInit,\n ElementRef,\n NgZone,\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { CausedUpdatesService } from 'core-app/features/boards/board/caused-updates/caused-updates.service';\nimport { DragAndDropService } from 'core-app/shared/helpers/drag-and-drop/drag-and-drop.service';\nimport {\n WorkPackageViewDisplayRepresentationService,\n wpDisplayCardRepresentation,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service';\nimport { WorkPackageTableConfigurationObject } from 'core-app/features/work-packages/components/wp-table/wp-table-configuration';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { DeviceService } from 'core-app/core/browser/device.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { StateService } from '@uirouter/core';\nimport { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service';\nimport { WorkPackageViewBaselineService } from '../wp-view-base/view-services/wp-view-baseline.service';\nimport { combineLatest } from 'rxjs';\n\n@Component({\n selector: 'wp-list-view',\n templateUrl: './wp-list-view.component.html',\n styleUrls: ['./wp-list-view.component.sass'],\n host: { class: 'op-wp-list-view work-packages-split-view--tabletimeline-side' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: HalResourceNotificationService, useClass: WorkPackageNotificationService },\n DragAndDropService,\n CausedUpdatesService,\n ],\n})\nexport class WorkPackageListViewComponent extends UntilDestroyedMixin implements OnInit {\n text = {\n jump_to_pagination: this.I18n.t('js.work_packages.jump_marks.pagination'),\n text_jump_to_pagination: this.I18n.t('js.work_packages.jump_marks.label_pagination'),\n button_settings: this.I18n.t('js.button_settings'),\n };\n\n /** Switch between list and card view */\n showTableView = true;\n\n /** Determine when query is initially loaded */\n tableInformationLoaded = false;\n\n /** If loaded list of work packages is empty */\n noResults = false;\n\n /** Whether we should render a blocked view */\n showResultOverlay$ = this.wpViewFilters.incomplete$;\n\n public baselineEnabled:boolean;\n\n /** */\n readonly wpTableConfiguration:WorkPackageTableConfigurationObject = {\n dragAndDropEnabled: true,\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly injector:Injector,\n readonly $state:StateService,\n readonly keepTab:KeepTabService,\n readonly querySpace:IsolatedQuerySpace,\n readonly wpViewFilters:WorkPackageViewFiltersService,\n readonly deviceService:DeviceService,\n readonly CurrentProject:CurrentProjectService,\n readonly wpDisplayRepresentation:WorkPackageViewDisplayRepresentationService,\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n private ngZone:NgZone,\n readonly wpTableBaseline:WorkPackageViewBaselineService,\n ) {\n super();\n }\n\n ngOnInit() {\n // Mark tableInformationLoaded when initially loading done\n this.setupInformationLoadedListener();\n const statesCombined = combineLatest([\n this.querySpace.query.values$(),\n this.wpTableBaseline.live$(),\n ]);\n statesCombined.pipe(\n this.untilDestroyed(),\n ).subscribe(([query]) => {\n // Update the visible representation\n this.updateViewRepresentation(query);\n this.baselineEnabled = this.wpTableBaseline.isActive();\n this.noResults = query.results.total === 0;\n this.cdRef.detectChanges();\n });\n\n // Scroll into view the card/row that represents the last selected WorkPackage\n // so when the user opens a WP detail page on a split-view and then clicks on\n // the 'back button', the last selected card is visible on this list.\n // ngAfterViewInit doesn't find the .-checked elements on components\n // that inherit from this class (BcfListContainerComponent) so\n // opting for a timeout 'runOutsideAngular' to avoid running change\n // detection on the entire app\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n const selectedRow = this.elementRef.nativeElement.querySelector('.wp-table--row.-checked');\n const selectedCard = this.elementRef.nativeElement.querySelector('[data-test-selector=\"op-wp-single-card\"].-checked');\n\n // The header of the table hides the scrolledIntoView element\n // so we scrollIntoView the previous element, if any\n if (selectedRow && selectedRow.previousSibling) {\n selectedRow.previousSibling.scrollIntoView({ block: 'start' });\n }\n\n if (selectedCard) {\n selectedCard.scrollIntoView({ block: 'start' });\n }\n }, 0);\n });\n }\n\n protected setupInformationLoadedListener() {\n this\n .querySpace\n .initialized\n .values$()\n .pipe(take(1))\n .subscribe(() => {\n this.tableInformationLoaded = true;\n this.cdRef.detectChanges();\n });\n }\n\n public showResizerInCardView():boolean {\n return false;\n }\n\n protected updateViewRepresentation(query:QueryResource) {\n this.showTableView = !(this.deviceService.isMobile\n || this.wpDisplayRepresentation.valueFromQuery(query) === wpDisplayCardRepresentation);\n }\n\n handleWorkPackageClicked(event:{ workPackageId:string; double:boolean }) {\n if (event.double) {\n this.openInFullView(event.workPackageId);\n }\n }\n\n openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) {\n const params = {\n workPackageId: event.workPackageId,\n focus: true,\n };\n\n if (event.requestedState === 'split') {\n this.keepTab.goCurrentDetailsState(params);\n } else {\n this.keepTab.goCurrentShowState(params);\n }\n }\n\n /**\n * Special handling for clicking on cards.\n * If we are on mobile, a click on the card should directly open the full view\n */\n handleWorkPackageCardClicked(event:{ workPackageId:string; double:boolean }):void {\n if (this.deviceService.isMobile) {\n this.openInFullView(event.workPackageId);\n } else {\n this.handleWorkPackageClicked(event);\n }\n }\n\n private openInFullView(workPackageId:string) {\n this.$state.go(\n 'work-packages.show',\n { workPackageId },\n );\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\nimport {\n WorkPackageIsolatedQuerySpaceDirective,\n} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\n\n/**\n * An entry component to be rendered by Rails which opens an isolated query space\n * for the work package split view\n */\n@Component({\n hostDirectives: [WorkPackageIsolatedQuerySpaceDirective],\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WorkPackageSplitViewEntryComponent {\n @Input() workPackageId:string;\n @Input() activeTab:string;\n @Input() resizerClass:string;\n\n constructor(readonly elementRef:ElementRef) {\n populateInputsFromDataset(this);\n }\n}\n","\n \n
    \n \n\n \n
    \n
    \n \n\n\n \n\n \n
    \n
    \n\n \n
    \n \n \n \n \n\n \n \n\n
    \n \n
    \n\n
    \n \n
    \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, HostListener, Injector, Input, OnInit, Type } from '@angular/core';\nimport { StateService } from '@uirouter/core';\nimport {\n WorkPackageViewFocusService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { FirstRouteService } from 'core-app/core/routing/first-route-service';\nimport {\n KeepTabService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service';\nimport {\n WorkPackageViewSelectionService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport {\n WorkPackageSingleViewBase,\n} from 'core-app/features/work-packages/routing/wp-view-base/work-package-single-view.base';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { BackRoutingService } from 'core-app/features/work-packages/components/back-routing/back-routing.service';\nimport { WpSingleViewService } from 'core-app/features/work-packages/routing/wp-view-base/state/wp-single-view.service';\nimport { RecentItemsService } from 'core-app/core/recent-items.service';\nimport { UrlParamsService } from 'core-app/core/navigation/url-params.service';\nimport {\n WorkPackageTabsService,\n} from 'core-app/features/work-packages/components/wp-tabs/services/wp-tabs/wp-tabs.service';\nimport { TabComponent } from 'core-app/features/work-packages/components/wp-tabs/components/wp-tab-wrapper/tab';\n\n@Component({\n templateUrl: './wp-split-view.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'op-wp-split-view',\n providers: [\n WpSingleViewService,\n { provide: HalResourceNotificationService, useClass: WorkPackageNotificationService },\n ],\n})\nexport class WorkPackageSplitViewComponent extends WorkPackageSingleViewBase implements OnInit {\n hasState:boolean = !!this.$state.current;\n /** Reference to the base route e.g., work-packages.partitioned.list or bim.partitioned.split */\n private baseRoute:string = this.$state.current?.data?.baseRoute as string;\n\n @Input() workPackageId:string;\n @Input() showTabs = true;\n @Input() activeTab?:string;\n\n @Input() resizerClass = 'work-packages-partitioned-page--content-right';\n\n constructor(\n public injector:Injector,\n public states:States,\n public firstRoute:FirstRouteService,\n public keepTab:KeepTabService,\n public wpTableSelection:WorkPackageViewSelectionService,\n public wpTableFocus:WorkPackageViewFocusService,\n public recentItemsService:RecentItemsService,\n readonly $state:StateService,\n readonly urlParams:UrlParamsService,\n readonly backRouting:BackRoutingService,\n readonly wpTabs:WorkPackageTabsService,\n ) {\n super(injector, $state.params.workPackageId);\n }\n\n // enable other parts of the application to trigger an immediate update\n // e.g. a stimulus controller\n // currently used by the new activities tab which does its own polling\n @HostListener('document:ian-update-immediate')\n triggerImmediateUpdate() {\n this.storeService.reload();\n }\n\n ngOnInit():void {\n this.observeWorkPackage();\n\n const wpId = (this.$state.params.workPackageId || this.workPackageId) as string;\n const focusedWP = this.wpTableFocus.focusedWorkPackage;\n\n if (!focusedWP) {\n // Focus on the work package if we're the first route\n const isFirstRoute = this.firstRoute.name === `${this.baseRoute}.details.overview`;\n const isSameID = this.firstRoute.params && wpId === this.firstRoute.params.workPackageI;\n this.wpTableFocus.updateFocus(wpId, (isFirstRoute && isSameID));\n } else {\n this.wpTableFocus.updateFocus(wpId, false);\n }\n\n if (this.wpTableSelection.isEmpty) {\n this.wpTableSelection.setRowState(wpId, true);\n }\n\n this.wpTableFocus.whenChanged()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((newId) => {\n const idSame = wpId.toString() === newId.toString();\n if (!idSame && this.$state.includes(`${this.baseRoute}.details`)) {\n this.$state.go(\n (this.$state.current.name as string),\n { workPackageId: newId, focus: false },\n );\n }\n });\n this.recentItemsService.add(wpId);\n }\n\n get activeTabComponent():Type|undefined {\n return this\n .wpTabs\n .tabs\n .find((tab) => tab.id === this.activeTab)\n ?.component;\n }\n\n showBackButton():boolean {\n return this.baseRoute?.includes('bim');\n }\n\n backToList():void {\n this.backRouting.goToBaseState();\n }\n\n protected handleLoadingError(error:unknown):void {\n const message = this.notificationService.retrieveErrorMessage(error);\n\n // Go back to the base route, closing this split view\n void this.$state.go(\n this.baseRoute,\n { flash_message: { type: 'error', message } },\n );\n }\n}\n","import { EventEmitter, InjectionToken, Injector } from '@angular/core';\n\nexport interface WorkPackageViewEventHandler {\n /** Event name to register * */\n EVENT:string;\n\n /** Event context CSS selector */\n SELECTOR:string;\n\n /** Event callback handler */\n handleEvent(view:T, evt:JQuery.TriggeredEvent):void;\n\n /** Event scope method */\n eventScope(view:T):JQuery;\n}\n\nexport interface WorkPackageViewOutputs {\n // On selection updated\n selectionChanged:EventEmitter;\n // On row (double) clicked\n itemClicked:EventEmitter<{ workPackageId:string, double:boolean }>;\n // On work package link / details icon clicked\n stateLinkClicked:EventEmitter<{ workPackageId:string, requestedState:string }>;\n}\n\nexport const WorkPackageViewHandlerToken = new InjectionToken>('CardEventHandler');\n\n/**\n * Abstract view handler registry for globally handling arbitrary event on the\n * view container. Used e.g., for table to register single event callbacks for the entirety\n * of the table.\n */\nexport abstract class WorkPackageViewHandlerRegistry {\n constructor(public readonly injector:Injector) {\n }\n\n protected abstract eventHandlers:((view:T) => WorkPackageViewEventHandler)[];\n\n attachTo(viewRef:T) {\n this.eventHandlers.map((factory) => {\n const handler = factory(viewRef);\n const target = handler.eventScope(viewRef);\n\n target.on(handler.EVENT, handler.SELECTOR, (evt:JQuery.TriggeredEvent) => {\n handler.handleEvent(viewRef, evt);\n });\n\n return handler;\n });\n }\n}\n","import { Store, StoreConfig } from '@datorama/akita';\nimport { ApiV3ListFilter } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\n\nexport interface WpSingleViewState {\n notifications:{\n filters:ApiV3ListFilter[];\n }\n}\n\nexport function createInitialState():WpSingleViewState {\n return {\n notifications: {\n filters: [],\n },\n };\n}\n\n@StoreConfig({ name: 'wp-single-view' })\nexport class WpSingleViewStore extends Store {\n constructor() {\n super(createInitialState());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { WpSingleViewStore } from './wp-single-view.store';\nimport {\n filter,\n map,\n switchMap,\n take,\n} from 'rxjs/operators';\nimport { InAppNotificationsResourceService } from 'core-app/core/state/in-app-notifications/in-app-notifications.service';\nimport {\n ApiV3ListFilter,\n ApiV3ListParameters,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport {\n centerUpdatedInPlace,\n markNotificationsAsRead,\n notificationsMarkedRead,\n} from 'core-app/core/state/in-app-notifications/in-app-notifications.actions';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport {\n EffectCallback,\n EffectHandler,\n} from 'core-app/core/state/effects/effect-handler.decorator';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { Query } from '@datorama/akita';\n\n@EffectHandler\n@Injectable()\nexport class WpSingleViewService {\n id = 'WorkPackage Activity Store';\n\n protected store = new WpSingleViewStore();\n\n protected query = new Query(this.store);\n\n selectNotifications$ = this\n .query\n .select((state) => state.notifications.filters)\n .pipe(\n filter((filters) => filters.length > 0),\n switchMap((filters) => this.resourceService.collection({ filters })),\n );\n\n selectNotificationsCount$ = this\n .selectNotifications$\n .pipe(\n map((notifications) => notifications.length),\n );\n\n nonDateAlertNotificationsCount$ = this\n .selectNotifications$\n .pipe(\n map((notifications) => notifications.filter((notification) => notification.reason !== 'dateAlert')),\n map((notifications) => notifications.length),\n );\n\n hasNotifications$ = this\n .selectNotificationsCount$\n .pipe(\n map((count) => count > 0),\n );\n\n get params():ApiV3ListParameters {\n return { filters: this.query.getValue().notifications.filters };\n }\n\n constructor(\n readonly actions$:ActionsService,\n readonly currentUser$:CurrentUserService,\n private resourceService:InAppNotificationsResourceService,\n ) {\n }\n\n setFilters(workPackageId:string):void {\n const filters:ApiV3ListFilter[] = [\n ['readIAN', '=', false],\n ['resourceId', '=', [workPackageId]],\n ['resourceType', '=', ['WorkPackage']],\n ];\n\n this.store.update(({ notifications }) => (\n {\n notifications: {\n ...notifications,\n filters,\n },\n }\n ));\n\n this.reload();\n }\n\n markAllAsRead():void {\n this\n .resourceService\n .collection({ filters: this.store.getValue().notifications.filters })\n .pipe(\n take(1),\n )\n .subscribe((collection) => {\n this.actions$.dispatch(\n markNotificationsAsRead({ origin: this.id, notifications: collection.map((el) => el.id) }),\n );\n });\n }\n\n reload() {\n this\n .currentUser$\n .isLoggedIn$\n .pipe(\n take(1),\n filter((loggedIn) => loggedIn),\n switchMap(() => this.resourceService.fetchCollection(this.params)),\n )\n .subscribe();\n }\n\n /**\n * Reload after notifications were successfully marked as read\n */\n @EffectCallback(notificationsMarkedRead)\n private reloadOnNotificationRead() {\n this.reload();\n }\n\n /**\n * Reload after notifications were successfully marked as read\n */\n @EffectCallback(centerUpdatedInPlace)\n private reloadOnCenterUpdate() {\n this.reload();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable } from '@angular/core';\nimport {\n RelationsStateValue,\n WorkPackageRelationsService,\n} from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { WorkPackageViewHierarchiesService } from './wp-view-hierarchy.service';\nimport { WorkPackageViewColumnsService } from './wp-view-columns.service';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { ShareResource } from 'core-app/features/hal/resources/share-resource';\nimport { map } from 'rxjs/operators';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class WorkPackageViewAdditionalElementsService {\n constructor(\n readonly querySpace:IsolatedQuerySpace,\n readonly wpTableHierarchies:WorkPackageViewHierarchiesService,\n readonly wpTableColumns:WorkPackageViewColumnsService,\n readonly notificationService:WorkPackageNotificationService,\n readonly halResourceService:HalResourceService,\n readonly apiV3Service:ApiV3Service,\n readonly schemaCache:SchemaCacheService,\n readonly wpRelations:WorkPackageRelationsService,\n ) {\n }\n\n public initialize(query:QueryResource, results:WorkPackageCollectionResource):void {\n const rows = results.elements;\n const workPackageIds = rows.map((el) => el.id!);\n\n // Add relations to the stack\n Promise.all([\n this.requireInvolvedRelations(workPackageIds),\n this.requireHierarchyElements(rows),\n this.requireWorkPackageShares(workPackageIds),\n this.requireSumsSchema(results),\n ]).then((wpResults:string[][]) => {\n this.loadAdditional(_.flatten(wpResults));\n });\n }\n\n private loadAdditional(wpIds:string[]) {\n this\n .apiV3Service\n .work_packages\n .requireAll(wpIds)\n .then(() => {\n this.querySpace.additionalRequiredWorkPackages.putValue(null, 'All required work packages are loaded');\n })\n .catch((e) => {\n this.querySpace.additionalRequiredWorkPackages.putValue(null, 'Failure loading required work packages');\n this.notificationService.handleRawError(e);\n });\n }\n\n /**\n * Requires both the relation resource of the given work package ids as well\n * as the `to` work packages returned from the relations\n */\n private requireInvolvedRelations(rows:string[]):Promise {\n if (!this.wpTableColumns.hasRelationColumns()) {\n return Promise.resolve([]);\n }\n return this.wpRelations\n .requireAll(rows)\n .then(() => {\n const ids = this.getInvolvedWorkPackages(rows.map((id) => this.wpRelations.state(id).value!));\n return _.flatten(ids);\n });\n }\n\n /**\n * Return the id of all ancestors for visible rows in the table.\n * @param rows\n * @return {string[]}\n */\n private requireHierarchyElements(rows:WorkPackageResource[]):Promise {\n if (!this.wpTableHierarchies.isEnabled) {\n return Promise.resolve([]);\n }\n\n const resultIds = rows.map((el:WorkPackageResource) => (el.id as string | number).toString());\n const ids = _.flatten(rows.map((el) => el.ancestorIds))\n .filter((id) => !resultIds.includes(id));\n\n return Promise.resolve(ids);\n }\n\n /**\n * From a set of relations state values, return all involved IDs.\n * @param states\n * @return {string[]}\n */\n private getInvolvedWorkPackages(states:RelationsStateValue[]) {\n const ids:string[] = [];\n _.each(states, (relations:RelationsStateValue) => {\n _.each(relations, (resource:RelationResource) => {\n ids.push(resource.ids.from, resource.ids.to);\n });\n });\n\n return ids;\n }\n\n private requireSumsSchema(results:WorkPackageCollectionResource):Promise {\n if (results.sumsSchema) {\n return this\n .schemaCache\n .ensureLoaded(results.sumsSchema.href!)\n .then(() => []);\n }\n\n return Promise.resolve([]);\n }\n\n private requireWorkPackageShares(wpIds:string[]):Promise {\n if (!this.wpTableColumns.hasShareColumn()) { return Promise.resolve([]); }\n if (wpIds.length === 0) { return Promise.resolve([]); }\n\n const filters = new ApiV3FilterBuilder()\n .add('entityType', '=', ['WorkPackage'])\n .add('entityId', '=', wpIds);\n\n const workPackageShareRequest = this\n .apiV3Service\n .shares\n .filtered(filters, { pageSize: '-1' })\n .getPaginatedResults()\n .pipe(\n map((elements) => {\n const shares = elements as ShareResource[];\n\n const sharedWpIds = _.uniq(shares.map((share) => share.entity.id as string));\n\n sharedWpIds.forEach((wpId) => {\n this\n .querySpace\n .workPackageSharesCache\n .get(wpId)\n .putValue(shares.filter((share) => share.entity.id === wpId));\n });\n\n return [];\n }),\n );\n\n return firstValueFrom(workPackageShareRequest);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport {\n combine, deriveRaw, input, State,\n} from '@openproject/reactivestates';\nimport { map, mapTo, take } from 'rxjs/operators';\nimport { merge, Observable } from 'rxjs';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { Injectable } from '@angular/core';\nimport { QuerySchemaResource } from 'core-app/features/hal/resources/query-schema-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\n\n@Injectable()\nexport abstract class WorkPackageViewBaseService {\n /** Internal state to push non-persisted updates */\n protected updatesState = input();\n\n /** Internal pristine state filled during +initialize+ only */\n protected pristineState = input();\n\n constructor(\n protected readonly querySpace:IsolatedQuerySpace,\n ) { }\n\n /**\n * Get the state value from the current query.\n *\n * @param {QueryResource} query\n * @returns {T} Instance of the state value for this type.\n */\n public abstract valueFromQuery(query:QueryResource, results:WorkPackageCollectionResource):T|undefined;\n\n /**\n * Initialize this table state from the given query resource,\n * and possibly the associated schema.\n *\n * @param {QueryResource} querywp-view-group-by.service\n * @param {QuerySchemaResource} schema\n */\n public initialize(query:QueryResource, results:WorkPackageCollectionResource, schema?:QuerySchemaResource) {\n const initial = this.valueFromQuery(query, results)!;\n this.pristineState.putValue(initial);\n }\n\n public update(value:T) {\n this.updatesState.putValue(value);\n }\n\n public clear(reason:string) {\n this.pristineState.clear(reason);\n this.updatesState.clear(reason);\n }\n\n /**\n * Get the combined pristine and update value changes\n * @param unsubscribe\n */\n public live$():Observable {\n return merge(\n this.pristineState.values$(),\n this.updatesState.values$(),\n );\n }\n\n /**\n * Get pristine upstream changes\n *\n * @param unsubscribe\n */\n public pristine$():Observable {\n return this\n .pristineState\n .values$();\n }\n\n /**\n * Get only the local update changes\n *\n * @param unsubscribe\n */\n public updates$():Observable {\n return this\n .updatesState\n .values$();\n }\n\n /**\n * Get only the local update changes\n *\n * @param unsubscribe\n */\n public changes$():Observable {\n return this\n .updatesState\n .changes$();\n }\n\n public onReady() {\n return this\n .pristineState\n .values$()\n .pipe(\n take(1),\n mapTo(null),\n )\n .toPromise();\n }\n\n /** Get the last updated value from either pristine or update state */\n protected get lastUpdatedState():State {\n const combinedRaw = combine(this.pristineState, this.updatesState);\n\n return deriveRaw(combinedRaw,\n ($) => $\n .pipe(\n map(([pristine, current]) => {\n if (current === undefined) {\n return pristine;\n }\n return current;\n }),\n ));\n }\n\n /**\n * Helper to set the value of the current state\n * @param val\n */\n protected set current(val:T|undefined) {\n if (val) {\n this.updatesState.putValue(val);\n } else {\n this.updatesState.clear();\n }\n }\n\n /**\n * Get the value of the current state, if any.\n */\n protected get current():T|undefined {\n return this.lastUpdatedState.value;\n }\n}\n\n@Injectable()\nexport abstract class WorkPackageQueryStateService extends WorkPackageViewBaseService {\n /**\n * Check whether the state value does not match the query resource's value.\n * @param query The current query resource\n */\n abstract hasChanged(query:QueryResource):boolean;\n\n /**\n * Apply the current state value to query\n *\n * @return Whether the query should be visibly updated.\n */\n abstract applyToQuery(query:QueryResource):boolean;\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { States } from 'core-app/core/states/states.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { Observable } from 'rxjs';\nimport { IDay } from 'core-app/core/state/days/day.model';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport { DayResourceService } from 'core-app/core/state/days/day.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport * as moment from 'moment-timezone';\nimport { Moment } from 'moment';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\n\nexport const DEFAULT_TIMESTAMP = 'PT0S';\nexport const BASELINE_INCOMPATIBLE_FILTERS = [\n 'attachmentContent',\n 'attachmentFileName',\n 'watcher',\n 'comment',\n];\n\nexport const BASELINE_INCOMPATIBLE_COLUMNS = [\n 'category',\n 'updatedAt',\n 'estimatedTime',\n 'remainingTime',\n 'spentTime',\n 'percentageDone',\n 'duration',\n 'budget',\n 'materialCosts',\n 'laborCosts',\n 'overallCosts',\n];\n\n@Injectable()\nexport class WorkPackageViewBaselineService extends WorkPackageQueryStateService {\n constructor(\n protected readonly states:States,\n protected readonly querySpace:IsolatedQuerySpace,\n protected readonly pathHelper:PathHelperService,\n protected readonly configurationService:ConfigurationService,\n protected readonly timezoneService:TimezoneService,\n protected readonly weekdaysService:WeekdayService,\n protected readonly daysService:DayResourceService,\n ) {\n super(querySpace);\n }\n\n public nonWorkingDays:IDay[] = [];\n\n public nonWorkingDays$:Observable = this.requireNonWorkingDaysOfTwoYears();\n\n public detectIncompatibleFilters(filters:QueryFilterInstanceResource[]):string[] {\n return BASELINE_INCOMPATIBLE_FILTERS\n .filter((el) => !!filters.find((filter) => filter.id === el));\n }\n\n public isIncompatibleFilter(filter:string):boolean {\n return BASELINE_INCOMPATIBLE_FILTERS.includes(filter);\n }\n\n public isIncompatibleColumn(column:string):boolean {\n return BASELINE_INCOMPATIBLE_COLUMNS.includes(column);\n }\n\n public yesterdayDate():string {\n return moment().subtract(1, 'days').format('YYYY-MM-DD');\n }\n\n public lastMonthDate():string {\n return moment().subtract(1, 'month').format('YYYY-MM-DD');\n }\n\n public lastweekDate():string {\n return moment().subtract(1, 'week').format('YYYY-MM-DD');\n }\n\n requireNonWorkingDaysOfTwoYears() {\n const today = new Date();\n const lastYear = new Date(today);\n lastYear.setFullYear(today.getFullYear() - 1);\n const nonWorkingDays$= this\n .daysService\n .requireNonWorkingYears$(lastYear, today);\n\n nonWorkingDays$.subscribe((nonWorkingDays) => {\n this.nonWorkingDays =nonWorkingDays;\n });\n\n return nonWorkingDays$;\n }\n\n isNonWorkingDay(date:Moment|string):boolean {\n const formatted = moment(date).format('YYYY-MM-DD');\n return (this.nonWorkingDays.findIndex((el) => el.date === formatted) !== -1);\n }\n\n public lastWorkingDate():string {\n const date = moment().subtract(1, 'days');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (this.isNonWorkingDay(date) || this.weekdaysService.isNonWorkingDay(date)) {\n date.subtract(1, 'days');\n } else {\n return date.format('YYYY-MM-DD');\n }\n }\n }\n\n public isActive():boolean {\n return this.current.length >= 1 && this.current[0] !== DEFAULT_TIMESTAMP;\n }\n\n public isChanged(workPackage:WorkPackageResource, attribute:string):boolean {\n const timestamps = workPackage.attributesByTimestamp || [];\n return this.isActive()\n && timestamps.length >= 1\n && Object.prototype.hasOwnProperty.call(timestamps[0], attribute);\n }\n\n public valueFromQuery(query:QueryResource):string[] {\n return query.timestamps;\n }\n\n public hasChanged(query:QueryResource) {\n return !_.isEqual(query.timestamps, this.current);\n }\n\n public applyToQuery(query:QueryResource):boolean {\n query.timestamps = [...this.current];\n\n return true;\n }\n\n public disable() {\n this.update([DEFAULT_TIMESTAMP]);\n }\n\n public get current():string[] {\n return this.lastUpdatedState.getValueOr([DEFAULT_TIMESTAMP]);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { Injectable } from '@angular/core';\nimport { WorkPackageViewGroupByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { take } from 'rxjs/operators';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { QuerySchemaResource } from 'core-app/features/hal/resources/query-schema-resource';\nimport { GroupObject, WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { QueryGroupByResource } from 'core-app/features/hal/resources/query-group-by-resource';\nimport { WorkPackageViewBaseService } from './wp-view-base.service';\n\n@Injectable()\nexport class WorkPackageViewCollapsedGroupsService extends WorkPackageViewBaseService {\n readonly wpTypesToShowInCollapsedGroupHeaders:((wp:WorkPackageResource) => boolean)[];\n\n readonly groupTypesWithHeaderCellsWhenCollapsed = ['project'];\n\n get config():IGroupsCollapseEvent {\n return this.updatesState.getValueOr(this.getDefaultState());\n }\n\n get currentGroups():GroupObject[] {\n return this.querySpace.groups.value!;\n }\n\n get allGroupsAreCollapsed():boolean {\n return this.config.allGroupsAreCollapsed;\n }\n\n get allGroupsAreExpanded():boolean {\n return this.config.allGroupsAreExpanded;\n }\n\n get currentGroupedBy():QueryGroupByResource|null {\n return this.workPackageViewGroupByService.current;\n }\n\n constructor(\n protected readonly querySpace:IsolatedQuerySpace,\n readonly workPackageViewGroupByService:WorkPackageViewGroupByService,\n private schemaCacheService:SchemaCacheService,\n ) {\n super(querySpace);\n this.wpTypesToShowInCollapsedGroupHeaders = [this.isMilestone];\n }\n\n // Every time the groupedBy changes, this services is initialized\n private getDefaultState():IGroupsCollapseEvent {\n return {\n state: this.querySpace.collapsedGroups.value || {},\n allGroupsChanged: false,\n lastChangedGroup: null,\n groupedBy: this.currentGroupedBy?.id || null,\n ...this.getAllGroupsCollapsedState(this.currentGroups, this.querySpace.collapsedGroups.value!),\n };\n }\n\n isMilestone = (workPackage:WorkPackageResource):boolean => this.schemaCacheService.of(workPackage)?.isMilestone;\n\n toggleGroupCollapseState(groupIdentifier:string):void {\n const newCollapsedState = !this.config.state[groupIdentifier];\n const state = {\n ...this.config.state,\n [groupIdentifier]: newCollapsedState,\n };\n const newState = {\n ...this.config,\n state,\n lastChangedGroup: groupIdentifier,\n ...this.getAllGroupsCollapsedState(this.currentGroups, state),\n };\n\n this.update(newState);\n }\n\n setAllGroupsCollapseStateTo(collapsedState:boolean):void {\n const groupUpdatedState = this.currentGroups.reduce((updatedState:{ [key:string]:boolean }, group) => ({\n ...updatedState,\n [group.identifier]: collapsedState,\n }), {});\n const newState = {\n ...this.config,\n state: {\n ...this.config.state,\n ...groupUpdatedState,\n },\n lastChangedGroup: null,\n allGroupsAreCollapsed: collapsedState,\n allGroupsAreExpanded: !collapsedState,\n allGroupsChanged: true,\n };\n\n this.update(newState);\n }\n\n getAllGroupsCollapsedState(groups:GroupObject[], currentCollapsedGroupsState:IGroupsCollapseEvent['state']) {\n let allGroupsAreCollapsed = false;\n let allGroupsAreExpanded = true;\n\n if (currentCollapsedGroupsState && groups?.length) {\n const firstGroupIdentifier = groups[0].identifier;\n const firstGroupCollapsedState = currentCollapsedGroupsState[firstGroupIdentifier];\n const allGroupsHaveTheSameCollapseState = groups.every((group) => currentCollapsedGroupsState[group.identifier] != null\n && currentCollapsedGroupsState[group.identifier] === currentCollapsedGroupsState[firstGroupIdentifier]);\n\n allGroupsAreCollapsed = allGroupsHaveTheSameCollapseState && firstGroupCollapsedState;\n allGroupsAreExpanded = allGroupsHaveTheSameCollapseState && !firstGroupCollapsedState;\n }\n\n return { allGroupsAreCollapsed, allGroupsAreExpanded };\n }\n\n initialize(query:QueryResource, results:WorkPackageCollectionResource, schema?:QuerySchemaResource) {\n // When this service is initialized (first time the table is loaded and very time the groupBy changes),\n // we need to wait until the table is ready to emit the collapseStatus. Otherwise the groups are not\n // ready in the DOM and can't be collapsed/expanded.\n this.querySpace.tableRendered.values$().pipe(take(1)).subscribe(() => this.update({ ...this.config, allGroupsChanged: true }));\n }\n\n valueFromQuery(query:QueryResource, results:WorkPackageCollectionResource) {\n return this.getDefaultState();\n }\n\n applyToQuery(query:QueryResource) {\n\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { States } from 'core-app/core/states/states.service';\nimport { Injectable } from '@angular/core';\nimport { QueryColumn, queryColumnTypes } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { combine } from '@openproject/reactivestates';\nimport { mapTo, take } from 'rxjs/operators';\nimport { cloneHalResourceCollection } from 'core-app/features/hal/helpers/hal-resource-builder';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\nimport { sharedUserColumn } from 'core-app/features/work-packages/components/wp-fast-table/builders/internal-sort-columns';\n\n@Injectable()\nexport class WorkPackageViewColumnsService extends WorkPackageQueryStateService {\n public constructor(readonly states:States, readonly querySpace:IsolatedQuerySpace) {\n super(querySpace);\n }\n\n public initialize(query:any, results:any, schema?:any) {\n super.initialize(query, results, schema);\n }\n\n public valueFromQuery(query:QueryResource):QueryColumn[] {\n return [...query.columns];\n }\n\n public hasChanged(query:QueryResource) {\n return !this.isCurrentlyEqualTo(query.columns);\n }\n\n public isCurrentlyEqualTo(a:QueryColumn[]) {\n const comparer = (columns:QueryColumn[]) => columns.map((c) => c.href);\n\n return _.isEqual(\n comparer(a),\n comparer(this.getColumns()),\n );\n }\n\n public applyToQuery(query:QueryResource) {\n const toApply = this.getColumns();\n\n const oldColumns = query.columns.map((el) => el.id);\n const newColumns = toApply.map((el) => el.id);\n query.columns = cloneHalResourceCollection(toApply);\n\n // We can avoid reloading even with relation columns if we only removed columns\n const onlyRemoved = _.difference(newColumns, oldColumns).length === 0;\n\n // Reload the table visibly if adding relation or share columns.\n return !onlyRemoved && (this.hasRelationColumns() || this.hasShareColumn());\n }\n\n /**\n * Returns whether the current set of columns include relations\n */\n public hasRelationColumns() {\n const relationColumns = [queryColumnTypes.RELATION_OF_TYPE, queryColumnTypes.RELATION_TO_TYPE];\n return !!_.find(this.getColumns(), (c) => relationColumns.indexOf(c._type) >= 0);\n }\n\n /**\n * Returns whether the current set of columns include shares\n */\n public hasShareColumn() {\n return !!_.find(this.getColumns(), (c) => c.id === sharedUserColumn.id);\n }\n\n /**\n * Retrieve the QueryColumn objects for the selected columns.\n * Returns a shallow copy with the original column objects.\n */\n public getColumns():QueryColumn[] {\n return [...this.current];\n }\n\n /**\n * Return the index of the given column or -1 if it is not contained.\n */\n public index(id:string):number {\n return _.findIndex(this.getColumns(), (column) => column.id === id);\n }\n\n /**\n * Return the column object for the given id.\n * @param id\n */\n public findById(id:string):QueryColumn|undefined {\n return _.find(this.getColumns(), (column) => column.id === id);\n }\n\n /**\n * Return the previous column of the given column name\n * @param column\n */\n public previous(column:QueryColumn):QueryColumn|null {\n const index = this.index(column.id);\n\n if (index <= 0) {\n return null;\n }\n\n return this.getColumns()[index - 1];\n }\n\n /**\n * Return the next column of the given column name\n * @param column\n */\n public next(column:QueryColumn):QueryColumn|null {\n const index = this.index(column.id);\n\n if (index === -1 || this.isLast(column)) {\n return null;\n }\n\n return this.getColumns()[index + 1];\n }\n\n /**\n * Returns true if the column is the first selected\n */\n public isFirst(column:QueryColumn):boolean {\n return this.index(column.id) === 0;\n }\n\n /**\n * Returns true if the column is the last selected\n */\n public isLast(column:QueryColumn):boolean {\n return this.index(column.id) === this.columnCount - 1;\n }\n\n /**\n * Update the selected columns to a new set of columns.\n */\n public setColumns(columns:QueryColumn[]) {\n // Don't publish if this is the same content\n if (this.isCurrentlyEqualTo(columns)) {\n return;\n }\n\n this.update(columns);\n }\n\n public setColumnsById(columnIds:string[]) {\n const mapped = columnIds.map((id) => _.find(this.all, (c) => c.id === id));\n this.setColumns(_.compact(mapped));\n }\n\n /**\n * Move the column at index {fromIndex} to {toIndex}.\n * - If toIndex is larger than all columns, insert at the end.\n * - If toIndex is less than zero, insert at the start.\n */\n public moveColumn(fromIndex:number, toIndex:number) {\n const columns = this.getColumns();\n\n if (toIndex >= columns.length) {\n toIndex = columns.length - 1;\n }\n\n if (toIndex < 0) {\n toIndex = 0;\n }\n\n const element = columns[fromIndex];\n columns.splice(fromIndex, 1);\n columns.splice(toIndex, 0, element);\n\n this.setColumns(columns);\n }\n\n /**\n * Shift the given column name X indices,\n * where X is the offset in indices (-1 = shift one to left)\n */\n public shift(column:QueryColumn, offset:number) {\n const index = this.index(column.id);\n if (index === -1) {\n return;\n }\n\n this.moveColumn(index, index + offset);\n }\n\n /**\n * Add a new column to the selection at the given position\n */\n public addColumn(id:string, position?:number) {\n const columns = this.getColumns();\n\n if (position === undefined) {\n position = columns.length;\n }\n\n if (this.index(id) === -1) {\n const newColumn = _.find(this.all, (column) => column.id === id);\n\n if (!newColumn) {\n throw new Error('Column with provided name is not found');\n }\n\n columns.splice(position, 0, newColumn);\n this.setColumns(columns);\n }\n }\n\n /**\n * Remove a column from the active list\n */\n public removeColumn(column:QueryColumn) {\n const index = this.index(column.id);\n\n if (index !== -1) {\n const columns = this.getColumns();\n columns.splice(index, 1);\n this.setColumns(columns);\n }\n }\n\n // only exists to cast the state\n protected get current() {\n return this.lastUpdatedState.getValueOr([]);\n }\n\n // Get the available state\n protected get availableState() {\n return this.querySpace.available.columns;\n }\n\n /**\n * Return the number of selected rows.\n */\n public get columnCount():number {\n return this.getColumns().length;\n }\n\n /**\n * Get all available columns (regardless of whether they are selected already)\n */\n public get all():QueryColumn[] {\n return this.availableState.getValueOr([]);\n }\n\n public get allPropertyColumns():QueryColumn[] {\n return this\n .all\n .filter((column:QueryColumn) => column._type === queryColumnTypes.PROPERTY);\n }\n\n /**\n * Get columns not yet selected\n */\n public get unused():QueryColumn[] {\n return _.differenceBy(this.all, this.getColumns(), '$href');\n }\n\n /**\n * Columns service depends on two states\n */\n public onReady() {\n return combine(this.pristineState, this.availableState)\n .values$()\n .pipe(\n take(1),\n mapTo(null),\n )\n .toPromise();\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable } from '@angular/core';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\n\nexport const wpDisplayListRepresentation = 'list';\nexport const wpDisplayCardRepresentation = 'card';\nexport type WorkPackageDisplayRepresentationValue = 'list'|'card';\n\n@Injectable()\nexport class WorkPackageViewDisplayRepresentationService extends WorkPackageQueryStateService {\n public constructor(\n readonly states:States,\n readonly querySpace:IsolatedQuerySpace,\n ) {\n super(querySpace);\n }\n\n public hasChanged(query:QueryResource) {\n return this.current !== query.displayRepresentation;\n }\n\n valueFromQuery(query:QueryResource) {\n return query.displayRepresentation || null;\n }\n\n public applyToQuery(query:QueryResource) {\n const { current } = this;\n query.displayRepresentation = current === null ? undefined : current;\n\n return false;\n }\n\n public get current():string|null {\n return this.lastUpdatedState.getValueOr(null);\n }\n\n public get isList():boolean {\n const { current } = this;\n return !current || current === wpDisplayListRepresentation;\n }\n\n public get isCards():boolean {\n return this.current === wpDisplayCardRepresentation;\n }\n\n public setDisplayRepresentation(representation:WorkPackageDisplayRepresentationValue) {\n this.update(representation);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { combine, input, InputState } from '@openproject/reactivestates';\nimport { States } from 'core-app/core/states/states.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { QuerySchemaResource } from 'core-app/features/hal/resources/query-schema-resource';\nimport { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { cloneHalResourceCollection } from 'core-app/features/hal/helpers/hal-resource-builder';\nimport { QueryFilterInstanceSchemaResource } from 'core-app/features/hal/resources/query-filter-instance-schema-resource';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\nimport { firstValueFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class WorkPackageViewFiltersService extends WorkPackageQueryStateService {\n public hidden:string[] = [\n 'datesInterval',\n 'precedes',\n 'follows',\n 'relates',\n 'duplicates',\n 'duplicated',\n 'blocks',\n 'blocked',\n 'partof',\n 'includes',\n 'requires',\n 'required',\n 'search',\n // The filter should be named subjectOrId but for some reason\n // it is only named subjectOr\n 'subjectOrId',\n 'subjectOr',\n 'manualSort',\n 'typeahead',\n ];\n\n /** Flag state to determine whether the filters are incomplete */\n private incomplete = input(false);\n\n constructor(\n protected readonly states:States,\n readonly querySpace:IsolatedQuerySpace,\n ) {\n super(querySpace);\n }\n\n /**\n * Load all schemas for the current filters and fill respective states\n * @param query\n * @param schema\n */\n public initializeFilters(query:QueryResource, schema:QuerySchemaResource) {\n const filters = cloneHalResourceCollection(query.filters);\n\n this.availableState.putValue(schema.filtersSchemas.elements);\n this.pristineState.putValue(filters);\n }\n\n /**\n * Return whether the filters are empty\n */\n public get isEmpty() {\n const { value } = this.lastUpdatedState;\n return !value || value.length === 0;\n }\n\n public get availableState():InputState {\n return this.querySpace.available.filters;\n }\n\n /** Return whether the filters the user is working on are incomplete */\n public get incomplete$() {\n return this.incomplete.values$();\n }\n\n /**\n * Add a filter instantiation from the set of available filter schemas\n *\n * @param filter\n */\n public add(filter:QueryFilterInstanceResource) {\n this.updatesState.putValue([...this.rawFilters, filter]);\n }\n\n /**\n * Replace a filter, or add a new one\n */\n public replace(id:string, modifier:(filter:QueryFilterInstanceResource) => void):void {\n const filter:QueryFilterInstanceResource = this.instantiate(id);\n\n const newFilters = [...this.rawFilters];\n modifier(filter);\n\n const index = this.findIndex(id);\n if (index === -1) {\n newFilters.push(filter);\n } else {\n newFilters.splice(index, 1, filter);\n }\n\n this.update(newFilters);\n }\n\n /**\n * Modify a live filter and push it to the state.\n * Avoids copying the resource.\n *\n * Returns whether the filter was found and modified\n */\n public modify(id:string, modifier:(filter:QueryFilterInstanceResource) => void):boolean {\n const index = this.findIndex(id);\n\n if (index === -1) {\n return false;\n }\n\n const filters = [...this.rawFilters];\n modifier(filters[index]!);\n this.update(filters);\n\n return true;\n }\n\n /**\n * Get an instantiated filter without adding it to the current state\n * @param filterOrId The query filter or id to instantiate\n */\n public instantiate(filterOrId:QueryFilterResource|string):QueryFilterInstanceResource {\n const id = (filterOrId instanceof QueryFilterResource) ? filterOrId.id : filterOrId;\n\n const schema = _.find(\n this.availableSchemas,\n (schema) => (schema.filter.allowedValues as HalResource)[0].id === id,\n )!;\n\n return schema.getFilter();\n }\n\n /**\n * Remove one or more filters from the live state of filters.\n * @param filters Filters to be removed\n */\n public remove(...filters:(QueryFilterInstanceResource|string)[]) {\n const mapper = (f:QueryFilterInstanceResource|string) => ((f instanceof QueryFilterInstanceResource) ? f.id : f);\n const set = new Set(filters.map(mapper));\n\n this.update(\n this.rawFilters.filter((f) => !set.has(mapper(f))),\n );\n }\n\n /**\n * Return the remaining visible filters from the given filters set.\n * @param filters Array of active filters, defaults to the current live state.\n */\n public remainingVisibleFilters(filters = this.current) {\n return this\n .remainingFilters(filters)\n .filter((filter) => this.hidden.indexOf(filter.id) === -1);\n }\n\n /**\n * Return all available filter resources.\n * They need to be instantiated before using them in this service.\n */\n public get availableFilters():QueryFilterResource[] {\n return this.availableSchemas.map((schema) => schema.allowedFilterValue);\n }\n\n private get availableSchemas():QueryFilterInstanceSchemaResource[] {\n return this.availableState.getValueOr([]);\n }\n\n /**\n * Determine whether all given filters are completely defined.\n * @param filters\n */\n public isComplete(filters:QueryFilterInstanceResource[]):boolean {\n return _.every(filters, (filter) => filter.isCompletelyDefined());\n }\n\n /**\n * Compare the current set of filters to the given query.\n * @param query\n */\n public hasChanged(query:QueryResource) {\n const comparer = (filter:HalResource[]) => filter.map((el) => el.$source);\n\n return !_.isEqual(\n comparer(query.filters),\n comparer(this.rawFilters),\n );\n }\n\n public valueFromQuery(query:QueryResource) {\n return undefined;\n }\n\n update(value:QueryFilterInstanceResource[]) {\n super.update(value);\n this.incomplete.putValue(false);\n }\n\n /**\n * Returns the live filter instance for the given ID, or undefined\n * if it does not exist.\n *\n * @param id Identifier of the filter\n */\n public find(id:string):QueryFilterInstanceResource|undefined {\n const index = this.findIndex(id);\n\n if (index === -1) {\n return;\n }\n\n return this.rawFilters[index];\n }\n\n /**\n * Returns the index of the filter, or -1 if it does not exist\n * @param id Identifier of the filter\n */\n public findIndex(id:string):number {\n return _.findIndex(this.current, (f) => f.id === id);\n }\n\n public applyToQuery(query:QueryResource):boolean {\n query.filters = this.cloneFilters();\n return true;\n }\n\n /**\n * Returns a shallow copy of the current filters.\n * Modifications to filters themselves will still\n */\n public get current():QueryFilterInstanceResource[] {\n return [...this.rawFilters];\n }\n\n /**\n * Returns a deep clone of the current filters set, may be used\n * to modify the filters without altering this state.\n */\n public cloneFilters():QueryFilterInstanceResource[] {\n return cloneHalResourceCollection(this.rawFilters);\n }\n\n /**\n * Returns the live state array, used for inspection of the filters\n * without modification.\n */\n protected get rawFilters():QueryFilterInstanceResource[] {\n return this.lastUpdatedState.value || [];\n }\n\n public get currentlyVisibleFilters():QueryFilterInstanceResource[] {\n const invisibleFilters = new Set(this.hidden);\n invisibleFilters.delete('search');\n\n return _.reject(this.current, (filter) => invisibleFilters.has(filter.id));\n }\n\n /**\n * Replace this filter state, but only if the given filters are complete\n * @param newState\n */\n public replaceIfComplete(newState:QueryFilterInstanceResource[]):void {\n if (this.isComplete(newState)) {\n this.update(newState);\n } else {\n this.incomplete.putValue(true);\n }\n }\n\n /**\n * Filters service depends on two states\n */\n public onReady():Promise {\n return firstValueFrom(\n combine(this.pristineState, this.availableState)\n .values$()\n .pipe(map(() => null)),\n );\n }\n\n /**\n * Get all filters that are not in the current active set\n */\n private remainingFilters(filters = this.rawFilters) {\n return _.differenceBy(this.availableFilters, filters, (filter) => filter.id);\n }\n\n isAvailable(el:QueryFilterInstanceResource):boolean {\n return !!this.availableFilters.find((available) => available.id === el.id);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { WorkPackageViewBaseService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-base.service';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\n\nexport interface WPFocusState {\n workPackageId:string;\n focusAfterRender:boolean;\n}\n\n@Injectable()\nexport class WorkPackageViewFocusService extends WorkPackageViewBaseService {\n constructor(public querySpace:IsolatedQuerySpace,\n public wpTableSelection:WorkPackageViewSelectionService) {\n super(querySpace);\n }\n\n public isFocused(workPackageId:string) {\n return this.focusedWorkPackage === workPackageId;\n }\n\n public ifShouldFocus(callback:(workPackageId:string) => void) {\n const value = this.current;\n\n if (value && value.focusAfterRender) {\n callback(value.workPackageId);\n value.focusAfterRender = false;\n this.update(value);\n }\n }\n\n public get focusedWorkPackage():string|null {\n const value = this.current;\n\n if (value) {\n return value.workPackageId;\n }\n\n // Return the first result if none selected\n const results = this.querySpace.results.value;\n if (results && results.elements.length > 0) {\n return results.elements[0].id!.toString();\n }\n\n return null;\n }\n\n public whenChanged():Observable {\n return this.live$()\n .pipe(\n map((val:WPFocusState) => val.workPackageId),\n distinctUntilChanged(),\n );\n }\n\n public updateFocus(workPackageId:string, setFocusAfterRender = false) {\n // Set the selection to this row, if nothing else is selected.\n if (this.wpTableSelection.isEmpty) {\n this.wpTableSelection.setRowState(workPackageId, true);\n }\n this.update({ workPackageId, focusAfterRender: setFocusAfterRender });\n }\n\n valueFromQuery(query:QueryResource, results:WorkPackageCollectionResource):WPFocusState|undefined {\n return undefined;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable } from '@angular/core';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { QueryGroupByResource } from 'core-app/features/hal/resources/query-group-by-resource';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\n\n@Injectable()\nexport class WorkPackageViewGroupByService extends WorkPackageQueryStateService {\n public constructor(readonly states:States,\n readonly querySpace:IsolatedQuerySpace) {\n super(querySpace);\n }\n\n valueFromQuery(query:QueryResource) {\n return query.groupBy || null;\n }\n\n public hasChanged(query:QueryResource) {\n const comparer = (groupBy:QueryColumn|HalResource|null|undefined) => (groupBy ? groupBy.href : null);\n\n return !_.isEqual(\n comparer(query.groupBy),\n comparer(this.current),\n );\n }\n\n public applyToQuery(query:QueryResource) {\n const { current } = this;\n query.groupBy = current === null ? undefined : current;\n return true;\n }\n\n public isGroupable(column:QueryColumn):boolean {\n return !!_.find(this.available, (candidate) => candidate.id === column.id);\n }\n\n public disable() {\n this.update(null);\n }\n\n public setBy(column:QueryColumn) {\n const groupBy = _.find(this.available, (candidate) => candidate.id === column.id);\n\n if (groupBy) {\n this.update(groupBy);\n }\n }\n\n public get current():QueryGroupByResource|null {\n return this.lastUpdatedState.getValueOr(null);\n }\n\n protected get availableState() {\n return this.querySpace.available.groupBy;\n }\n\n public get isEnabled():boolean {\n return !!this.current;\n }\n\n public get available():QueryGroupByResource[] {\n return this.availableState.getValueOr([]);\n }\n\n public isCurrentlyGroupedBy(column:QueryColumn):boolean {\n const cur = this.current;\n return !!(cur && cur.id === column.id);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { WorkPackageViewHierarchiesService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageRelationsHierarchyService } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport { States } from 'core-app/core/states/states.service';\nimport { WorkPackageViewDisplayRepresentationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class WorkPackageViewHierarchyIdentationService {\n constructor(private wpViewHierarchies:WorkPackageViewHierarchiesService,\n private wpDisplayRepresentation:WorkPackageViewDisplayRepresentationService,\n private states:States,\n private wpRelationHierarchy:WorkPackageRelationsHierarchyService,\n private apiV3Service:ApiV3Service,\n private querySpace:IsolatedQuerySpace) {\n }\n\n /**\n * Return whether the current hierarchy mode is active\n */\n public get applicable():boolean {\n return this.wpViewHierarchies.isEnabled && this.wpDisplayRepresentation.isList;\n }\n\n /**\n * Returns whether the given work package can be indented in the current render order\n * @param workPackage\n */\n public canIndent(workPackage:WorkPackageResource):boolean {\n if (!workPackage.changeParent || !this.applicable) {\n return false;\n }\n\n const rendered = this.renderedWorkPackageIds;\n const index = rendered.indexOf(workPackage.id!);\n\n // We can never indent the first item\n if (index === 0) {\n return false;\n }\n\n // We can not indent work packages whose predecessors are already their ancestors\n const ancestors = workPackage.ancestorIds;\n const ancestorCount = ancestors.length;\n\n // We can always indent if the ancestor count is 0\n if (ancestorCount === 0) {\n return true;\n }\n\n // Otherwise, we can only indent if the predecessor is NOT the last ancestor\n const lastAncestor:string = ancestors[ancestorCount - 1];\n const predecessorId:string = rendered[index - 1];\n\n return predecessorId !== lastAncestor;\n }\n\n /**\n * Returns whether the given work package can be outdented\n * @param workPackage\n */\n public canOutdent(workPackage:WorkPackageResource):boolean {\n if (!workPackage.changeParent || !this.applicable) {\n return false;\n }\n\n // We can always outdent if the work package has a parent\n return !!workPackage.parent;\n }\n\n /**\n * Try to indent the work package.\n * @return a Promise with the change parent result\n */\n public async indent(workPackage:WorkPackageResource):Promise {\n if (!this.canIndent(workPackage)) {\n return Promise.reject();\n }\n\n const rendered = this.renderedWorkPackageIds;\n const index = rendered.indexOf(workPackage.id!);\n const predecessorId:string = rendered[index - 1];\n\n // By default, assume we're going to insert under parent\n let newParentId = predecessorId;\n\n // If the predecessor is in an ancestor chain.\n // get the first element of the ancestor chain that workPackage is not in\n const predecessor = await firstValueFrom(this.apiV3Service.work_packages.id(predecessorId).get());\n\n const difference = _.difference(predecessor.ancestorIds, workPackage.ancestorIds);\n if (difference && difference.length > 0) {\n newParentId = difference[0];\n }\n\n return this\n .wpRelationHierarchy\n .changeParent(workPackage, newParentId);\n }\n\n /**\n * Try to outdent the work package.\n * @return a Promise with the change parent result\n */\n public outdent(workPackage:WorkPackageResource):Promise {\n if (!this.canOutdent(workPackage)) {\n return Promise.reject();\n }\n\n let newParentId:string|null = null;\n\n // If we have more than one ancestor,\n // just drop the last one\n const { ancestorIds } = workPackage;\n const ancestorCount = ancestorIds.length;\n if (ancestorCount > 1) {\n newParentId = ancestorIds[ancestorCount - 2];\n }\n\n return this\n .wpRelationHierarchy\n .changeParent(workPackage, newParentId);\n }\n\n /**\n * Get the currently rendered work packages\n */\n private get renderedWorkPackageIds():string[] {\n return this.querySpace.renderedWorkPackageIds.getValueOr([]);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nexport class WorkPackageViewHierarchies {\n public isVisible = false;\n\n public last:string|null = null;\n\n public collapsed:{ [workPackageId:string]:boolean } = {};\n\n constructor(visible:boolean) {\n this.isVisible = visible;\n }\n}\n","import { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { Injectable } from '@angular/core';\nimport { WorkPackageViewHierarchies } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-hierarchies';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\n\n@Injectable()\nexport class WorkPackageViewHierarchiesService extends WorkPackageQueryStateService {\n public valueFromQuery(query:QueryResource):WorkPackageViewHierarchies {\n const value = new WorkPackageViewHierarchies(query.showHierarchies);\n const { current } = this;\n\n // Take over current collapsed values\n // which are not yet saved\n if (current) {\n value.collapsed = current.collapsed;\n }\n\n return value;\n }\n\n public hasChanged(query:QueryResource) {\n return query.showHierarchies !== this.isEnabled;\n }\n\n public applyToQuery(query:QueryResource) {\n query.showHierarchies = this.isEnabled;\n\n // We need to visibly load the ancestors when the mode is activated.\n return this.isEnabled;\n }\n\n /**\n * Return whether the current hierarchy mode is active\n */\n public get isEnabled():boolean {\n return !!(this.current && this.current.isVisible);\n }\n\n public setEnabled(active = true) {\n const state = { ...this.current, isVisible: active, last: null };\n this.update(state);\n }\n\n /**\n * Toggle the hierarchy state\n */\n public toggleState():boolean {\n this.setEnabled(!this.isEnabled);\n return this.isEnabled;\n }\n\n /**\n * Return whether the given wp ID is collapsed.\n */\n public collapsed(wpId:string):boolean {\n return this.current.collapsed[wpId];\n }\n\n /**\n * Collapse the hierarchy for this work package\n */\n public collapse(wpId:string):void {\n this.setState(wpId, true);\n }\n\n /**\n * Expand the hierarchy for this work package\n */\n public expand(wpId:string):void {\n this.setState(wpId, false);\n }\n\n /**\n * Toggle the hierarchy state\n */\n public toggle(wpId:string):void {\n this.setState(wpId, !this.collapsed(wpId));\n }\n\n /**\n * Set the collapse/expand state of the given work package id.\n */\n private setState(wpId:string, isCollapsed:boolean):void {\n const state = { ...this.current, last: wpId };\n state.collapsed[wpId] = isCollapsed;\n this.update(state);\n }\n\n /**\n * Get current selection state.\n */\n public get current():WorkPackageViewHierarchies {\n const state = this.lastUpdatedState.value;\n\n if (state === undefined) {\n return this.initialState;\n }\n\n if (!state.collapsed) {\n state.collapsed = {};\n }\n\n return state;\n }\n\n private get initialState():WorkPackageViewHierarchies {\n return new WorkPackageViewHierarchies(false);\n }\n}\n","import { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable } from '@angular/core';\nimport { States } from 'core-app/core/states/states.service';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { QuerySchemaResource } from 'core-app/features/hal/resources/query-schema-resource';\nimport { WorkPackageViewHighlight } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-highlight';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\n\n@Injectable()\nexport class WorkPackageViewHighlightingService extends WorkPackageQueryStateService {\n public constructor(readonly states:States,\n readonly Banners:BannersService,\n readonly querySpace:IsolatedQuerySpace) {\n super(querySpace);\n }\n\n initialize(query:QueryResource, results:WorkPackageCollectionResource, schema?:QuerySchemaResource) {\n super.initialize(query, results, schema);\n }\n\n /**\n * Decides whether we want to inline highlight the given field name.\n *\n * @param name A display field name such as 'status', 'priority'.\n */\n public shouldHighlightInline(name:string):boolean {\n // 1. Are we in inline mode or unable to render?\n if (!this.isInline || this.Banners.eeShowBanners) {\n return false;\n }\n\n // 2. Is selected attributes === undefined or empty Array?\n if (this.current.selectedAttributes?.length === 0) {\n return true;\n }\n\n // 3. Is name in selected attributes ?\n return !!_.find(this.current.selectedAttributes, (attr:HalResource) => attr.id === name);\n }\n\n public get current():WorkPackageViewHighlight {\n const value = this.lastUpdatedState.getValueOr({ mode: 'inline' } as WorkPackageViewHighlight);\n return this.filteredValue(value);\n }\n\n public get isInline() {\n return this.current.mode === 'inline';\n }\n\n public get isDisabled() {\n return this.current.mode === 'none';\n }\n\n public update(value:WorkPackageViewHighlight) {\n super.update(this.filteredValue(value));\n }\n\n public valueFromQuery(query:QueryResource):WorkPackageViewHighlight {\n const highlight = { mode: query.highlightingMode || 'inline', selectedAttributes: query.highlightedAttributes };\n return this.filteredValue(highlight);\n }\n\n public hasChanged(query:QueryResource) {\n return query.highlightingMode !== this.current.mode\n || !_.isEqual(query.highlightedAttributes, this.current.selectedAttributes);\n }\n\n public applyToQuery(query:QueryResource):boolean {\n const { current } = this;\n query.highlightingMode = current.mode;\n\n query.highlightedAttributes = current.selectedAttributes;\n\n return false;\n }\n\n private filteredValue(value:WorkPackageViewHighlight):WorkPackageViewHighlight {\n if (_.isEmpty(value.selectedAttributes)) {\n value.selectedAttributes = undefined;\n }\n\n this.Banners.conditional(() => {\n value.mode = 'none';\n value.selectedAttributes = undefined;\n });\n\n return value;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable } from '@angular/core';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\n\n@Injectable()\nexport class WorkPackageViewIncludeSubprojectsService extends WorkPackageQueryStateService {\n public constructor(\n readonly states:States,\n readonly querySpace:IsolatedQuerySpace,\n ) {\n super(querySpace);\n }\n\n public hasChanged(query:QueryResource):boolean {\n return this.current !== query.includeSubprojects;\n }\n\n valueFromQuery(query:QueryResource):boolean {\n return query.includeSubprojects || false;\n }\n\n public applyToQuery(query:QueryResource):boolean {\n const { current } = this;\n query.includeSubprojects = current; // eslint-disable-line no-param-reassign\n\n return true;\n }\n\n public get current():boolean {\n return this.lastUpdatedState.getValueOr(false);\n }\n\n public setIncludeSubprojects(include:boolean):void {\n this.update(include);\n }\n}\n","import { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { QueryOrder } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-order';\n\n// min allowed position\nexport const MIN_ORDER = -2147483647;\n// max postgres 4-byte integer position\nexport const MAX_ORDER = 2147483647;\n// default position to insert\nexport const DEFAULT_ORDER = 0;\n// The distance to keep between each element\nexport const ORDER_DISTANCE = 16384;\n\n/**\n * Return either the delta position or the previous persisted position,\n * in that order.\n *\n * @param wpId\n */\nfunction livePosition(\n delta:QueryOrder,\n positions:QueryOrder,\n wpId:string,\n):number|undefined {\n // Explicitly check for undefined here as the delta might be 0 which is falsey.\n return delta[wpId] === undefined ? positions[wpId] : delta[wpId];\n}\n\n/**\n * Return the position number for the given index\n */\nfunction positionFor(\n delta:QueryOrder,\n order:string[],\n positions:QueryOrder,\n index:number,\n):number|undefined {\n const wpId = order[index];\n return livePosition(delta, positions, wpId);\n}\n\n/**\n * Ensure +order+ is already ascending with the exception of +index+,\n * or otherwise reorder the positions starting from the first element.\n */\nfunction isAscendingOrder(\n order:string[],\n positions:QueryOrder,\n index:number,\n):boolean {\n let current:number|undefined;\n\n for (let i = 0, l = order.length; i < l; i += 1) {\n const id = order[i];\n const position = positions[id];\n\n // Skip our insertion point\n if (i === index) {\n continue;\n }\n\n // If neither position is set\n if (current === undefined || position === undefined) {\n current = position;\n continue;\n }\n\n // If the next position is not larger, rebuild positions\n if (position < current) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Since from and to index or only one apart,\n * we can swap the positions.\n *\n * TODO: This should not modify in-place and then return an unrelated value\n */\nfunction positionSwap(\n delta:QueryOrder,\n order:string[],\n positions:QueryOrder,\n index:number,\n fromIndex:number|null,\n wpId:string,\n):QueryOrder {\n if (fromIndex === null) {\n return delta;\n }\n\n const myPosition = positionFor(delta, order, positions, index);\n const neighbor = order[fromIndex];\n const neighborPosition = positionFor(delta, order, positions, fromIndex);\n\n // If either the neighbor or wpid have no position yet,\n // go through the regular update flow\n if (myPosition === undefined || neighborPosition === undefined) {\n return delta;\n }\n\n return {\n ...delta,\n [`${wpId}`]: neighborPosition,\n [`${neighbor}`]: myPosition,\n };\n}\n\n/**\n * Insert wpId as the first element\n */\nfunction insertAsFirst(\n delta:QueryOrder,\n order:string[],\n positions:QueryOrder,\n index:number,\n wpId:string,\n) {\n // Get the actual successor position, it might vary wildly from the optimal position\n const successorPosition = positionFor(delta, order, positions, index + 1);\n\n // If the successor also has no position yet, simply assign the default\n if (successorPosition === undefined) {\n return {\n ...delta,\n [wpId]: DEFAULT_ORDER,\n };\n }\n return {\n ...delta,\n [wpId]: successorPosition - (ORDER_DISTANCE / 2),\n };\n}\n\n/**\n * Builds any previous unset position from 0 .. index\n * so we can properly insert the wpId @ index.\n */\nfunction buildUpPredecessorPosition(\n delta:QueryOrder,\n order:string[],\n positions:QueryOrder,\n index:number,\n) {\n let predecessorPosition:number = DEFAULT_ORDER - ORDER_DISTANCE;\n const newDelta = { ...delta };\n for (let i = 0; i < index; i += 1) {\n const id = order[i];\n const position = positions[id];\n\n // If this current ID has no position yet, assign the current one\n if (position === undefined) {\n newDelta[id] = predecessorPosition + ORDER_DISTANCE;\n predecessorPosition = newDelta[id];\n } else {\n predecessorPosition = position;\n }\n }\n\n return {\n predecessorPosition,\n delta: newDelta,\n };\n}\n\n/**\n * Returns the minimal position assigned currently\n */\nfunction firstPosition(\n delta:QueryOrder,\n order:string[],\n positions:QueryOrder,\n):number {\n const wpId = order[0] || '';\n return livePosition(delta, positions, wpId) || 0;\n}\n\n/**\n * Returns the maximum position assigned currently.\n * Note that a list can be unpositioned at the beginning, so this may return undefined\n */\nfunction lastPosition(\n delta:QueryOrder,\n order:string[],\n positions:QueryOrder,\n):number {\n for (let i = order.length - 1; i >= 0; i -= 1) {\n const wpId = order[i];\n const position = livePosition(delta, positions, wpId);\n\n // Return the first set position.\n if (position !== undefined) {\n return position;\n }\n }\n\n return 0;\n}\n\n/**\n * Distribute the items over a given min/max\n */\nfunction redistribute(\n delta:QueryOrder,\n order:string[],\n minIndex:number,\n maxIndex:number,\n) {\n const itemsToDistribute = order.length;\n\n let min = minIndex;\n let max = maxIndex;\n\n // We can keep min and max orders if distance/(items to distribute) >= 1\n let space = Math.floor((max - min) / (itemsToDistribute - 1));\n\n // If no space is left, first try to add to the max item\n // Or subtract from the min item\n if (space < 1) {\n if ((max + itemsToDistribute) <= MAX_ORDER) {\n max += itemsToDistribute;\n } else if ((min - itemsToDistribute) >= MIN_ORDER) {\n min -= itemsToDistribute;\n } else {\n // This should not happen in a 4-byte integer with our frontend\n throw new Error('Elements cannot be moved further and no space is left. Too many elements');\n }\n\n // Rebuild space\n space = Math.floor((max - min) / (itemsToDistribute - 1));\n }\n\n // Assign positions for all values in between min/max\n const newDelta = { ...delta };\n for (let i = 0; i < itemsToDistribute; i += 1) {\n const wpId = order[i];\n newDelta[wpId] = min + (i * space);\n }\n\n return newDelta;\n}\n\n/**\n * There was no space left at the desired insert position,\n * we're going to evenly distribute all items again\n */\nfunction reorderedInsert(\n delta:QueryOrder,\n order:string[],\n positions:QueryOrder,\n) {\n // Get the current distance between orders\n // Both must be set by now due to +buildUpPredecessorPosition+ having run.\n const min = firstPosition(delta, order, positions);\n const max = lastPosition(delta, order, positions);\n\n return redistribute(delta, order, min, max);\n}\n\n/**\n * Insert +wpId+ at +index+ in a position that is determined either\n * by its neighbors, one of them in case both do not yet have a position\n */\nfunction buildInsertPosition(\n order:string[],\n positions:QueryOrder,\n wpId:string,\n index:number,\n fromIndex:number|null,\n):QueryOrder {\n const delta = {};\n // Special case, order is empty or only contains wpId\n // Then simply insert as the default position unless it already has a position\n if (order.length <= 1 && positions[wpId] === undefined) {\n return {\n ...delta,\n [wpId]: DEFAULT_ORDER,\n };\n }\n\n // Special case, shifted movement by one\n const newDelta = positionSwap(delta, order, positions, index, fromIndex, wpId);\n if (fromIndex !== null\n && Math.abs(fromIndex - index) === 1\n && delta !== newDelta\n ) {\n return newDelta;\n }\n\n // Special case, index is 0\n if (index === 0) {\n return insertAsFirst(newDelta, order, positions, index, wpId);\n }\n\n // Ensure previous positions exist so we can insert wpId @ index\n const { delta: rebuiltDelta, predecessorPosition } = buildUpPredecessorPosition(newDelta, order, positions, index);\n\n // Ensure we reorder when predecessor is at max already\n if (predecessorPosition >= MAX_ORDER) {\n debugLog('Predecessor position is at max order, need to reorder');\n return reorderedInsert(rebuiltDelta, order, positions);\n }\n\n // Get the actual successor position, it might vary wildly from the optimal position\n const successorPosition = positionFor(rebuiltDelta, order, positions, index + 1);\n\n if (successorPosition === undefined) {\n // Successor does not have a position yet (is NULL), any position will work\n // so let's use the optimal one which is halfway to a potential successor\n return {\n ...rebuiltDelta,\n [wpId]: predecessorPosition + (ORDER_DISTANCE / 2),\n };\n }\n\n // Ensure we reorder when successor is at max already\n if (successorPosition >= MAX_ORDER) {\n debugLog('Successor position is at max order, need to reorder');\n return reorderedInsert(rebuiltDelta, order, positions);\n }\n\n // successor exists and has a position\n // We will want to insert at the half way from predecessorPosition ... successorPosition\n const distance = Math.floor((successorPosition - predecessorPosition) / 2);\n\n // If there is no space to insert, we're going to optimize the available space\n if (distance < 1) {\n debugLog('Cannot insert at optimal position, no space left. Need to reorder');\n return reorderedInsert(rebuiltDelta, order, positions);\n }\n\n return {\n ...rebuiltDelta,\n [wpId]: predecessorPosition + distance,\n };\n}\n\n/**\n * Get the absolute minimum and maximum positions\n * currently assigned in the slot.\n *\n * If there is at least two positions assigned, returns the maximum\n * between them.\n *\n * Otherwise, returns the optimum min max for the given order length.\n */\nfunction minMaxPositions(\n delta:QueryOrder,\n order:string[],\n positions:QueryOrder,\n):[number, number] {\n let min:number = MAX_ORDER;\n let max:number = MIN_ORDER;\n let any = false;\n\n for (let i = order.length - 1; i >= 0; i -= 1) {\n const wpId = order[i];\n const position = livePosition(delta, positions, wpId);\n\n if (position !== undefined) {\n min = Math.min(position, min);\n max = Math.max(position, max);\n any = true;\n }\n }\n\n if (any && min !== max) {\n return [min, max];\n }\n return [DEFAULT_ORDER, order.length * ORDER_DISTANCE];\n}\n\n/**\n * Reassign mixed positions so that they are strictly ascending again,\n * but try to keep relative positions alive\n */\nfunction rebuildPositions(\n order:string[],\n positions:QueryOrder,\n) {\n const delta:QueryOrder = {};\n const [min, max] = minMaxPositions(delta, order, positions);\n return redistribute(delta, order, min, max);\n}\n\n/**\n * Build a delta\n * Computes the delta of positions for a given operation and order\n *\n * @param order The current order of work packages that contains the user movement\n * @param positions The current positions as loaded from backend / persisted from previous calls\n * @param wpId The work package that got moved\n * @param index The index a work package got moved into\n * @param fromIndex If moved within the order, the previous index used for movement optimzation\n */\nexport function buildDelta(\n order:string[],\n positions:QueryOrder,\n wpId:string,\n index:number,\n fromIndex:number|null,\n):QueryOrder {\n if (!isAscendingOrder(order, positions, index)) {\n return rebuildPositions(order, positions);\n }\n\n // Insert only the new element\n return buildInsertPosition(order, positions, wpId, index, fromIndex);\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { InputState } from '@openproject/reactivestates';\nimport { States } from 'core-app/core/states/states.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { QuerySchemaResource } from 'core-app/features/hal/resources/query-schema-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport isPersistedResource from 'core-app/features/hal/helpers/is-persisted-resource';\nimport { MAX_ORDER, buildDelta } from 'core-app/shared/helpers/drag-and-drop/reorder-delta-builder';\nimport { WorkPackageViewSortByService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport { CausedUpdatesService } from 'core-app/features/boards/board/caused-updates/caused-updates.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { QueryOrder } from 'core-app/core/apiv3/endpoints/queries/apiv3-query-order';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class WorkPackageViewOrderService extends WorkPackageQueryStateService {\n constructor(protected readonly querySpace:IsolatedQuerySpace,\n protected readonly apiV3Service:ApiV3Service,\n protected readonly states:States,\n protected readonly causedUpdates:CausedUpdatesService,\n protected readonly wpTableSortBy:WorkPackageViewSortByService,\n protected readonly pathHelper:PathHelperService) {\n super(querySpace);\n }\n\n public initialize(query:QueryResource, results:WorkPackageCollectionResource, schema?:QuerySchemaResource):Promise {\n // Take over our current value if the query is not saved\n if (!isPersistedResource(query) && this.positions.hasValue()) {\n this.applyToQuery(query);\n }\n\n if (this.wpTableSortBy.isManualSortingMode) {\n return this.withLoadedPositions();\n }\n\n return Promise.resolve();\n }\n\n /**\n * Move an item in the list\n */\n public async move(order:string[], wpId:string, toIndex:number):Promise {\n // Find index of the work package\n const fromIndex:number = order.findIndex((id) => id === wpId);\n\n order.splice(fromIndex, 1);\n order.splice(toIndex, 0, wpId);\n\n await this.assignPosition(order, wpId, toIndex, fromIndex);\n\n return order;\n }\n\n /**\n * Pull an item from the rendered list\n */\n public remove(order:string[], wpId:string):string[] {\n _.remove(order, (id) => id === wpId);\n this.update({ [wpId]: -1 });\n return order;\n }\n\n /**\n * Add an item to the list\n */\n public async add(order:string[], wpId:string, toIndex = -1):Promise {\n if (toIndex === -1) {\n order.push(wpId);\n toIndex = order.length - 1;\n } else {\n order.splice(toIndex, 0, wpId);\n }\n\n await this.assignPosition(order, wpId, toIndex);\n\n return order;\n }\n\n public get applicable() {\n return isPersistedResource(this.currentQuery);\n }\n\n protected get currentQuery():QueryResource {\n return this.querySpace.query.value!;\n }\n\n /**\n * Assign a position for the given work package and its index given the current order\n * @param order Current order the work package was inserted to\n * @param wpId The work package ID that was moved\n * @param toIndex The id of the work package in order\n */\n protected async assignPosition(order:string[], wpId:string, toIndex:number, fromIndex:number|null = null) {\n const positions = await this.withLoadedPositions();\n const delta = buildDelta(order, positions, wpId, toIndex, fromIndex);\n\n await this.update(delta);\n }\n\n protected get positions():InputState {\n return this.updatesState;\n }\n\n /**\n * Update the order state\n */\n public async update(delta:QueryOrder) {\n const current = this.positions.getValueOr({});\n this.positions.putValue({ ...current, ...delta });\n\n // Push the update if the query is saved\n if (isPersistedResource(this.currentQuery)) {\n const updatedAt = await this\n .apiV3Service\n .queries.id(this.currentQuery)\n .order\n .update(delta);\n\n this.currentQuery.updatedAt = updatedAt;\n\n // Remember that we caused this update\n this.causedUpdates.add(this.currentQuery);\n }\n\n // Push into the query object\n this.applyToQuery(this.currentQuery);\n\n // Update the query\n this.querySpace.query.putValue(this.currentQuery);\n }\n\n /**\n * Initialize (or load if persisted) the order for the query space\n */\n public withLoadedPositions():Promise {\n if (isPersistedResource(this.currentQuery)) {\n const { value } = this.positions;\n\n // Remove empty or stale values given we can reload them\n if ((_.isEmpty(value) || this.positions.isValueOlderThan(60000))) {\n this.positions.clear('Clearing old positions value');\n }\n\n // Load the current order from backend\n this.positions.putFromPromiseIfPristine(\n () => this\n .apiV3Service\n .queries.id(this.currentQuery)\n .order\n .get(),\n );\n } else if (this.positions.isPristine()) {\n // Insert an empty fallback in case we have no data yet\n this.positions.putValue({});\n }\n\n return firstValueFrom(this.positions.values$());\n }\n\n public valueFromQuery(query:QueryResource) {\n return undefined;\n }\n\n /**\n * Return ordered work packages\n */\n orderedWorkPackages():WorkPackageResource[] {\n const upstreamOrder = this.querySpace\n .results\n .value!\n .elements\n .map((wp) => this.states.workPackages.get(wp.id!).getValueOr(wp));\n\n if (isPersistedResource(this.currentQuery) || this.positions.isPristine()) {\n return upstreamOrder;\n }\n const positions = this.positions.value!;\n return _.sortBy(upstreamOrder, (wp) => {\n const pos = positions[wp.id!];\n return pos !== undefined ? pos : MAX_ORDER;\n });\n }\n\n applyToQuery(query:QueryResource):boolean {\n query.orderedWorkPackages = this.positions.getValueOr({});\n return false;\n }\n\n hasChanged(query:QueryResource):boolean {\n return false;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { PaginationInstance } from 'core-app/shared/components/table-pagination/pagination-instance';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\n\nexport class WorkPackageViewPagination {\n public current:PaginationInstance;\n\n constructor(results:WorkPackageCollectionResource) {\n this.current = new PaginationInstance(results.offset, results.total, results.pageSize);\n }\n\n public get page() {\n return this.current.page;\n }\n\n public set page(val) {\n this.current.page = val;\n }\n\n public get perPage() {\n return this.current.perPage;\n }\n\n public set perPage(val) {\n this.current.perPage = val;\n }\n\n public get total() {\n return this.current.total;\n }\n\n public set total(val) {\n this.current.total = val;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageViewPagination } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-pagination';\nimport { WorkPackageViewBaseService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-base.service';\nimport { PaginationObject, PaginationService } from 'core-app/shared/components/table-pagination/pagination-service';\n\nexport interface PaginationUpdateObject {\n page?:number;\n perPage?:number;\n total?:number;\n count?:number;\n}\n\n@Injectable()\nexport class WorkPackageViewPaginationService extends WorkPackageViewBaseService {\n public constructor(querySpace:IsolatedQuerySpace,\n readonly paginationService:PaginationService) {\n super(querySpace);\n }\n\n public get paginationObject():PaginationObject {\n if (this.current) {\n return {\n pageSize: this.current.perPage,\n offset: this.current.page,\n };\n }\n return {\n pageSize: this.paginationService.getCachedPerPage([]),\n offset: 1,\n };\n }\n\n public valueFromQuery(query:QueryResource, results:WorkPackageCollectionResource) {\n return new WorkPackageViewPagination(results);\n }\n\n public updateFromObject(object:PaginationUpdateObject) {\n const currentState = this.current;\n\n if (object.page) {\n currentState.page = object.page;\n }\n if (object.perPage) {\n currentState.perPage = object.perPage;\n }\n if (object.total) {\n currentState.total = object.total;\n }\n\n this.updatesState.putValue(currentState);\n }\n\n public updateFromResults(results:WorkPackageCollectionResource) {\n const update = {\n page: results.offset,\n perPage: results.pageSize,\n total: results.total,\n count: results.count,\n };\n\n this.updateFromObject(update);\n }\n\n public get current():WorkPackageViewPagination {\n return this.lastUpdatedState.value!;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { WorkPackageViewRelationColumns } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-relation-columns';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { RelationsStateValue, WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport { Injectable } from '@angular/core';\nimport {\n QueryColumn,\n queryColumnTypes,\n RelationQueryColumn,\n TypeRelationQueryColumn,\n} from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { WorkPackageViewBaseService } from './wp-view-base.service';\nimport { WorkPackageViewColumnsService } from './wp-view-columns.service';\n\nexport type RelationColumnType = 'toType'|'ofType';\n\n@Injectable()\nexport class WorkPackageViewRelationColumnsService extends WorkPackageViewBaseService {\n constructor(public querySpace:IsolatedQuerySpace,\n public wpTableColumns:WorkPackageViewColumnsService,\n public halResourceService:HalResourceService,\n public apiV3Service:ApiV3Service,\n public wpRelations:WorkPackageRelationsService) {\n super(querySpace);\n }\n\n public valueFromQuery(query:QueryResource):WorkPackageViewRelationColumns {\n // Take over current expanded values\n // which are not yet saved\n return this.current;\n }\n\n /**\n * Returns a subset of all relations that the user has currently expanded.\n *\n * @param workPackage\n * @param relation\n */\n public relationsToExtendFor(workPackage:WorkPackageResource,\n relations:RelationsStateValue|undefined,\n eachCallback:(relation:RelationResource, column:QueryColumn, type:RelationColumnType) => void) {\n // Only if any relation columns or stored expansion state exist\n if (!(this.wpTableColumns.hasRelationColumns() && this.lastUpdatedState.hasValue())) {\n return;\n }\n\n // Only if any relations exist for this work package\n if (_.isNil(relations)) {\n return;\n }\n\n // Only if the work package has anything expanded\n const expanded = this.getExpandFor(workPackage.id!);\n if (expanded === undefined) {\n return;\n }\n\n const column = this.wpTableColumns.findById(expanded)!;\n const type = this.relationColumnType(column);\n\n if (type !== null) {\n _.each(this.relationsForColumn(workPackage, relations, column),\n (relation) => eachCallback(relation, column, type));\n }\n }\n\n /**\n * Get the subset of relations for the work package that belong to this relation column\n *\n * @param workPackage A work package resource\n * @param relations The RelationStateValue of this work package\n * @param column The relation column to filter for\n * @return The filtered relations\n */\n public relationsForColumn(workPackage:WorkPackageResource, relations:RelationsStateValue|undefined, column:QueryColumn) {\n if (_.isNil(relations)) {\n return [];\n }\n\n // Get the type of TO work package\n const type = this.relationColumnType(column);\n if (type === 'toType') {\n const typeHref = (column as TypeRelationQueryColumn).type.href;\n\n return _.filter(relations, (relation:RelationResource) => {\n const denormalized = relation.denormalized(workPackage);\n const target = this.apiV3Service.work_packages.cache.state(denormalized.targetId).value;\n\n return _.get(target, 'type.href') === typeHref;\n });\n }\n\n // Get the relation types for OF relation columns\n if (type === 'ofType') {\n const { relationType } = column as RelationQueryColumn;\n\n return _.filter(relations, (relation:RelationResource) => relation.denormalized(workPackage).relationType === relationType);\n }\n\n return [];\n }\n\n public relationColumnType(column:QueryColumn):RelationColumnType|null {\n switch (column._type) {\n case queryColumnTypes.RELATION_TO_TYPE:\n return 'toType';\n case queryColumnTypes.RELATION_OF_TYPE:\n return 'ofType';\n default:\n return null;\n }\n }\n\n public getExpandFor(workPackageId:string):string|undefined {\n return this.current[workPackageId];\n }\n\n public setExpandFor(workPackageId:string, columnId:string) {\n const nextState = { ...this.current };\n nextState[workPackageId] = columnId;\n\n this.update(nextState);\n }\n\n public collapse(workPackageId:string) {\n const nextState = { ...this.current };\n delete nextState[workPackageId];\n\n this.update(nextState);\n }\n\n public get current():WorkPackageViewRelationColumns {\n return this.lastUpdatedState.getValueOr({});\n }\n}\n","import { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { States } from 'core-app/core/states/states.service';\nimport { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service';\nimport { WorkPackageViewBaseService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-base.service';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport * as Mousetrap from 'mousetrap';\n\nexport interface WorkPackageViewSelectionState {\n // Map of selected rows\n selected:{ [workPackageId:string]:boolean };\n // Index of current selection\n // required for shift-offsets\n activeRowIndex:number|null;\n}\n\n@Injectable()\nexport class WorkPackageViewSelectionService extends WorkPackageViewBaseService implements OnDestroy {\n public constructor(readonly querySpace:IsolatedQuerySpace,\n readonly states:States,\n readonly opContextMenu:OPContextMenuService) {\n super(querySpace);\n this.reset();\n }\n\n ngOnDestroy():void {\n Mousetrap.unbind(['command+d', 'ctrl+d']);\n Mousetrap.unbind(['command+a', 'ctrl+a']);\n }\n\n public initializeSelection(selectedWorkPackageIds:string[]) {\n const state:WorkPackageViewSelectionState = {\n selected: {},\n activeRowIndex: null,\n };\n\n selectedWorkPackageIds.forEach((id) => state.selected[id] = true);\n\n this.updatesState.clear();\n this.pristineState.putValue(state);\n }\n\n public isSelected(workPackageId:string):boolean {\n return !!this.current?.selected[workPackageId];\n }\n\n /**\n * Select all work packages\n */\n public selectAll(rows:RenderedWorkPackage[]) {\n const state:WorkPackageViewSelectionState = this._emptyState;\n\n rows.forEach((row) => {\n if (row.workPackageId) {\n state.selected[row.workPackageId] = true;\n }\n });\n\n this.update(state);\n }\n\n /**\n * Get the current work package resource form the selection state.\n */\n public getSelectedWorkPackages():WorkPackageResource[] {\n const wpState = this.states.workPackages;\n return this.getSelectedWorkPackageIds().map((id) => wpState.get(id).value!);\n }\n\n public getSelectedWorkPackageIds():string[] {\n const selected:string[] = [];\n\n _.each(this.current?.selected, (isSelected:boolean, wpId:string) => {\n if (isSelected) {\n selected.push(wpId);\n }\n });\n\n return selected;\n }\n\n /**\n * Reset the selection state to an empty selection\n */\n public reset() {\n this.update(this._emptyState);\n }\n\n public get isEmpty() {\n return this.selectionCount === 0;\n }\n\n /**\n * Return the number of selected rows.\n */\n public get selectionCount():number {\n return _.size(this.current?.selected);\n }\n\n /**\n * Toggle a single row selection state and update the state.\n * @param workPackageId\n */\n public toggleRow(workPackageId:string) {\n const isSelected = this.current?.selected[workPackageId];\n this.setRowState(workPackageId, !isSelected);\n }\n\n /**\n * Force the given work package's selection state. Does not modify other states.\n * @param workPackageId\n * @param newState\n */\n public setRowState(workPackageId:string, newState:boolean) {\n const state = this.current || this._emptyState;\n state.selected[workPackageId] = newState;\n this.update(state);\n }\n\n /**\n * Override current selection with the given work package id.\n */\n public setSelection(wpId:string, position:number) {\n const current = this._emptyState;\n current.selected[wpId] = true;\n current.activeRowIndex = position;\n\n this.update(current);\n }\n\n /**\n * Select a number of rows from the current `activeRowIndex`\n * to the selected target.\n * (aka shift click expansion)\n */\n public setMultiSelectionFrom(rows:RenderedWorkPackage[], wpId:string, position:number) {\n const state = this.current || this._emptyState;\n\n // If there are no other selections, it does not matter what the index is\n if (this.selectionCount === 0 || state.activeRowIndex === null) {\n state.selected[wpId] = true;\n state.activeRowIndex = position;\n } else {\n const start = Math.min(position, state.activeRowIndex);\n const end = Math.max(position, state.activeRowIndex);\n\n rows.forEach((row, i) => {\n if (row.workPackageId) {\n state.selected[row.workPackageId] = i >= start && i <= end;\n }\n });\n }\n\n this.update(state);\n }\n\n public registerSelectAllListener(renderedElements:() => RenderedWorkPackage[]) {\n // Bind CTRL+A to select all work packages\n Mousetrap.bind(['command+a', 'ctrl+a'], (e) => {\n this.selectAll(renderedElements());\n e.preventDefault();\n\n this.opContextMenu.close();\n return false;\n });\n }\n\n public registerDeselectAllListener() {\n // Bind CTRL+D to deselect all work packages\n Mousetrap.bind(['command+d', 'ctrl+d'], (e) => {\n this.reset();\n e.preventDefault();\n\n this.opContextMenu.close();\n return false;\n });\n }\n\n private get _emptyState():WorkPackageViewSelectionState {\n return {\n selected: {},\n activeRowIndex: null,\n };\n }\n\n valueFromQuery(query:QueryResource, results:WorkPackageCollectionResource):WorkPackageViewSelectionState|undefined {\n return undefined;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { combine } from '@openproject/reactivestates';\nimport { mapTo } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { States } from 'core-app/core/states/states.service';\nimport { QuerySortByResource } from 'core-app/features/hal/resources/query-sort-by-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { QueryColumn } from 'core-app/features/work-packages/components/wp-query/query-column';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\n\n@Injectable()\nexport class WorkPackageViewSortByService extends WorkPackageQueryStateService {\n constructor(protected readonly states:States,\n protected readonly querySpace:IsolatedQuerySpace,\n protected readonly pathHelper:PathHelperService) {\n super(querySpace);\n }\n\n public valueFromQuery(query:QueryResource) {\n return [...query.sortBy];\n }\n\n public onReadyWithAvailable():Observable {\n return combine(this.pristineState, this.querySpace.available.sortBy)\n .values$()\n .pipe(\n mapTo(null),\n );\n }\n\n public hasChanged(query:QueryResource) {\n const comparer = (sortBy:QuerySortByResource[]) => sortBy.map((el) => el.href);\n\n return !_.isEqual(\n comparer(query.sortBy),\n comparer(this.current),\n );\n }\n\n public applyToQuery(query:QueryResource) {\n const wasManuallySorted = this.isManuallySorted(query.sortBy);\n\n query.sortBy = [...this.current];\n\n // Reload every time unless we stayed in manual sort mode\n return !(wasManuallySorted && this.isManualSortingMode);\n }\n\n public isSortable(column:QueryColumn):boolean {\n return !!_.find(\n this.available,\n (candidate) => candidate.column.href === column.href,\n );\n }\n\n public addSortCriteria(column:QueryColumn, criteria:string) {\n const available = this.findAvailableDirection(column, criteria);\n\n if (available) {\n this.add(available);\n }\n }\n\n public setAsSingleSortCriteria(column:QueryColumn, criteria:string) {\n const available:QuerySortByResource = this.findAvailableDirection(column, criteria)!;\n\n if (available) {\n this.update([available]);\n }\n }\n\n public findAvailableDirection(column:QueryColumn, direction:string):QuerySortByResource | undefined {\n return _.find(\n this.available,\n (candidate) => (candidate.column.href === column.href\n && candidate.direction.href === direction),\n );\n }\n\n public add(sortBy:QuerySortByResource) {\n const newValue = _\n .uniqBy([sortBy, ...this.current], (sortBy) => sortBy.column.href)\n .slice(0, 3);\n\n this.update(newValue);\n }\n\n public get isManualSortingMode():boolean {\n return this.isManuallySorted(this.current);\n }\n\n public switchToManualSorting(query:QueryResource):boolean {\n const { manualSortObject } = this;\n if (manualSortObject && !this.isManualSortingMode) {\n query.setSortBy([manualSortObject]);\n return true;\n }\n\n return false;\n }\n\n public get current():QuerySortByResource[] {\n return this.lastUpdatedState.getValueOr([]);\n }\n\n private get availableState() {\n return this.querySpace.available.sortBy;\n }\n\n public get available():QuerySortByResource[] {\n return this.availableState.getValueOr([]);\n }\n\n private isManuallySorted(sortBy:QuerySortByResource[]):boolean {\n if (sortBy && sortBy.length > 0) {\n return sortBy[0].column.href!.endsWith('/manualSorting');\n }\n\n return false;\n }\n\n private get manualSortObject() {\n return _.find(this.available, (sort) => sort.column.href!.endsWith('/manualSorting'));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { QueryResource } from 'core-app/features/hal/resources/query-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { Injectable } from '@angular/core';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\n\n@Injectable()\nexport class WorkPackageViewSumService extends WorkPackageQueryStateService {\n public constructor(querySpace:IsolatedQuerySpace) {\n super(querySpace);\n }\n\n public valueFromQuery(query:QueryResource) {\n return !!query.sums;\n }\n\n public initialize(query:QueryResource) {\n this.pristineState.putValue(!!query.sums);\n }\n\n public hasChanged(query:QueryResource) {\n return query.sums !== this.isEnabled;\n }\n\n public applyToQuery(query:QueryResource) {\n query.sums = this.isEnabled;\n return true;\n }\n\n public toggle() {\n this.updatesState.putValue(!this.current);\n }\n\n public setEnabled(value:boolean) {\n this.updatesState.putValue(value);\n }\n\n public get isEnabled() {\n return this.current;\n }\n\n public get current():boolean {\n return this.lastUpdatedState.getValueOr(false);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { input } from '@openproject/reactivestates';\nimport { WorkPackageTimelineState } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-timeline';\nimport { zoomLevelOrder } from 'core-app/features/work-packages/components/wp-table/timeline/wp-timeline';\nimport { QueryResource, TimelineLabels, TimelineZoomLevel } from 'core-app/features/hal/resources/query-resource';\nimport { WorkPackageQueryStateService } from './wp-view-base.service';\n\n@Injectable()\nexport class WorkPackageViewTimelineService extends WorkPackageQueryStateService {\n /** Remember the computed zoom level to correct zooming after leaving autozoom */\n public appliedZoomLevel$ = input('auto');\n\n public constructor(protected readonly querySpace:IsolatedQuerySpace) {\n super(querySpace);\n }\n\n public valueFromQuery(query:QueryResource) {\n return {\n ...this.defaultState,\n visible: query.timelineVisible,\n zoomLevel: query.timelineZoomLevel,\n labels: query.timelineLabels,\n };\n }\n\n public set appliedZoomLevel(val:TimelineZoomLevel) {\n this.appliedZoomLevel$.putValue(val);\n }\n\n public get appliedZoomLevel() {\n return this.appliedZoomLevel$.value!;\n }\n\n public hasChanged(query:QueryResource) {\n const visibilityChanged = this.isVisible !== query.timelineVisible;\n const zoomLevelChanged = this.zoomLevel !== query.timelineZoomLevel;\n const labelsChanged = !_.isEqual(this.current.labels, query.timelineLabels);\n\n return visibilityChanged || zoomLevelChanged || labelsChanged;\n }\n\n public applyToQuery(query:QueryResource) {\n query.timelineVisible = this.isVisible;\n query.timelineZoomLevel = this.zoomLevel;\n query.timelineLabels = this.current.labels;\n\n return false;\n }\n\n public toggle() {\n const currentState = this.current;\n this.setVisible(!currentState.visible);\n }\n\n public setVisible(value:boolean) {\n this.updatesState.putValue({ ...this.current, visible: value });\n }\n\n public get isVisible() {\n return this.current.visible;\n }\n\n public get zoomLevel() {\n return this.current.zoomLevel;\n }\n\n public get labels() {\n if (_.isEmpty(this.current.labels)) {\n return this.defaultLabels;\n }\n\n return this.current.labels;\n }\n\n public updateLabels(labels:TimelineLabels) {\n this.modify({ labels });\n }\n\n public getNormalizedLabels(workPackage:WorkPackageResource) {\n const labels:TimelineLabels = this.defaultLabels;\n\n _.each(this.current.labels, (attribute:string | null, positionAsString:string) => {\n // RR: Lodash typings declare the position as string. However, it is save to cast\n // to `keyof TimelineLabels` because `this.current.labels` is of type TimelineLabels.\n const position:keyof TimelineLabels = positionAsString as keyof TimelineLabels;\n\n // Set to null to explicitly disable\n if (attribute === '') {\n labels[position] = null;\n } else {\n labels[position] = attribute;\n }\n });\n\n return labels;\n }\n\n public setZoomLevel(level:TimelineZoomLevel) {\n this.modify({ zoomLevel: level });\n }\n\n public updateZoomWithDelta(delta:number):void {\n const level = this.current.zoomLevel;\n if (level !== 'auto') {\n return this.applyZoomLevel(level, delta);\n }\n\n const applied = this.appliedZoomLevel;\n if (applied && applied !== 'auto') {\n // When we have a real zoom value, use delta on that one\n this.applyZoomLevel(applied, delta);\n } else {\n // Use the maximum zoom value\n const target = delta < 0 ? 'days' : 'years';\n this.setZoomLevel(target);\n }\n }\n\n public isAutoZoom():boolean {\n return this.current.zoomLevel === 'auto';\n }\n\n public enableAutozoom() {\n this.modify({ zoomLevel: 'auto' });\n }\n\n public get current():WorkPackageTimelineState {\n return this.lastUpdatedState.getValueOr(this.defaultState);\n }\n\n /**\n * Modify the state, updating with parts of properties\n * @param update\n */\n private modify(update:Partial) {\n this.update({ ...this.current, ...update } as WorkPackageTimelineState);\n }\n\n /**\n * Apply a zoom level\n *\n * @param level Any zoom level except auto.\n * @param delta The delta (e.g., 1, -1) to apply.\n */\n private applyZoomLevel(level:Exclude, delta:number) {\n let idx = zoomLevelOrder.indexOf(level);\n idx += delta;\n\n if (idx >= 0 && idx < zoomLevelOrder.length) {\n this.setZoomLevel(zoomLevelOrder[idx]);\n }\n }\n\n private get defaultLabels():TimelineLabels {\n return {\n left: '',\n right: '',\n farRight: 'subject',\n };\n }\n\n private get defaultState():WorkPackageTimelineState {\n return {\n zoomLevel: 'auto',\n visible: false,\n labels: this.defaultLabels,\n };\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectorRef, Injector } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport {\n WorkPackageViewFocusService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { OpTitleService } from 'core-app/core/html/op-title.service';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport { States } from 'core-app/core/states/states.service';\nimport {\n KeepTabService,\n} from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service';\nimport {\n HalResourceEditingService,\n} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport {\n WorkPackageNotificationService,\n} from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport {\n take,\n} from 'rxjs/operators';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { HookService } from 'core-app/features/plugins/hook-service';\nimport { WpSingleViewService } from 'core-app/features/work-packages/routing/wp-view-base/state/wp-single-view.service';\nimport { Observable } from 'rxjs';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { AttachmentsResourceService } from 'core-app/core/state/attachments/attachments.service';\nimport { StoragesResourceService } from 'core-app/core/state/storages/storages.service';\nimport { FileLinksResourceService } from 'core-app/core/state/file-links/file-links.service';\nimport { ProjectsResourceService } from 'core-app/core/state/projects/projects.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nexport class WorkPackageSingleViewBase extends UntilDestroyedMixin {\n @InjectField() states:States;\n\n @InjectField() i18n:I18nService;\n\n @InjectField() keepTab:KeepTabService;\n\n @InjectField() PathHelper:PathHelperService;\n\n @InjectField() halEditing:HalResourceEditingService;\n\n @InjectField() wpTableFocus:WorkPackageViewFocusService;\n\n @InjectField() notificationService:WorkPackageNotificationService;\n\n @InjectField() authorisationService:AuthorisationService;\n\n @InjectField() private readonly attachmentsResourceService:AttachmentsResourceService;\n\n @InjectField() private readonly fileLinkResourceService:FileLinksResourceService;\n\n @InjectField() private readonly projectsResourceService:ProjectsResourceService;\n\n @InjectField() private readonly storages:StoragesResourceService;\n\n @InjectField() private readonly toastService:ToastService;\n\n @InjectField() cdRef:ChangeDetectorRef;\n\n @InjectField() readonly titleService:OpTitleService;\n\n @InjectField() readonly apiV3Service:ApiV3Service;\n\n @InjectField() readonly hooks:HookService;\n\n @InjectField() readonly actions$:ActionsService;\n\n @InjectField() readonly storeService:WpSingleViewService;\n\n // Work package resource to be loaded from the cache\n public workPackage:WorkPackageResource;\n\n public projectIdentifier:string;\n\n public focusAnchorLabel:string;\n\n public showStaticPagePath:string;\n\n public displayNotificationsButton$:Observable;\n\n constructor(\n public injector:Injector,\n protected workPackageId:string,\n ) {\n super();\n }\n\n /**\n * Observe changes of work package and re-run initialization.\n * Needs to be run explicitly by descendants.\n */\n protected observeWorkPackage():void {\n this\n .apiV3Service\n .work_packages\n .id(this.workPackageId)\n .requireAndStream()\n .pipe(this.untilDestroyed())\n .subscribe((wp:WorkPackageResource) => {\n if (!this.workPackage) {\n this.workPackage = wp;\n this.init();\n } else {\n this.workPackage = wp;\n }\n\n this.cdRef.detectChanges();\n }, (error) => {\n this.handleLoadingError(error);\n });\n }\n\n /**\n * Initialize controller after workPackage resource has been loaded.\n */\n protected init():void {\n // Set elements\n this\n .apiV3Service\n .projects\n .id(this.workPackage.project)\n .requireAndStream()\n .subscribe(() => {\n this.projectIdentifier = this.workPackage.project.identifier;\n this.cdRef.detectChanges();\n });\n\n // lazy load the work package's project, needed when initializing\n // the work package resource from split view.\n this.projectsResourceService\n .requireEntity((this.workPackage.$links.project as HalResource).href as string)\n .subscribe(\n () => {},\n (error:HttpErrorResponse) => {\n this.toastService.addError(error);\n },\n );\n\n this.displayNotificationsButton$ = this.storeService.hasNotifications$;\n this.storeService.setFilters(this.workPackage.id as string);\n\n // Set authorisation data\n this.authorisationService.initModelAuth('work_package', this.workPackage.$links);\n\n // Push the current title\n this.titleService.setFirstPart(this.workPackage.subjectWithType(-1));\n\n // Preselect this work package for future list operations\n this.showStaticPagePath = this.PathHelper.workPackagePath(this.workPackageId);\n\n // Fetch attachments of current work package\n if (this.workPackage.$links.attachments) {\n this.attachmentsResourceService.fetchCollection(this.workPackage.$links.attachments.href as string).subscribe();\n }\n\n // Listen to tab changes to update the tab label\n this.keepTab.observable\n .pipe(this.untilDestroyed())\n .subscribe((tabs:{ active:string }) => {\n this.updateFocusAnchorLabel(tabs.active);\n });\n }\n\n protected handleLoadingError(error:unknown):void {\n this.notificationService.handleRawError(error);\n }\n\n /**\n * Recompute the current tab focus label\n */\n public updateFocusAnchorLabel(tabName:string):string {\n this.focusAnchorLabel = this.i18n.t('js.label_work_package_details_you_are_here', {\n tab: this.i18n.t(`js.work_packages.tabs.${tabName}`),\n type: this.workPackage.type.name,\n subject: this.workPackage.subject,\n });\n return this.focusAnchorLabel;\n }\n}\n","import { action } from 'ts-action';\n\nexport const tableRefreshRequest = action(\n '[Work packages] Table refresh requested',\n);\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectorRef, Directive, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { StateService, TransitionService } from '@uirouter/core';\nimport { AuthorisationService } from 'core-app/core/model-auth/model-auth.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { filter, take, withLatestFrom } from 'rxjs/operators';\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { StaticQueriesService } from 'core-app/shared/components/op-view-select/op-static-queries.service';\nimport {\n WorkPackageViewHighlightingService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service';\nimport { States } from 'core-app/core/states/states.service';\nimport {\n WorkPackageViewColumnsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport {\n WorkPackageViewSortByService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sort-by.service';\nimport {\n WorkPackageViewGroupByService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-group-by.service';\nimport {\n WorkPackageViewFiltersService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport {\n WorkPackageViewSumService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport {\n WorkPackageViewTimelineService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport {\n WorkPackageViewHierarchiesService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy.service';\nimport {\n WorkPackageViewPaginationService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.service';\nimport { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\nimport {\n WorkPackagesListChecksumService,\n} from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service';\nimport {\n WorkPackageQueryStateService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-base.service';\nimport {\n WorkPackageStatesInitializationService,\n} from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service';\nimport {\n WorkPackageViewOrderService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-order.service';\nimport {\n WorkPackageViewDisplayRepresentationService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-display-representation.service';\nimport {\n WorkPackageViewIncludeSubprojectsService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-include-subprojects.service';\nimport { HalEvent, HalEventsService } from 'core-app/features/hal/services/hal-events.service';\nimport { DeviceService } from 'core-app/core/browser/device.service';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport {\n WorkPackageViewBaselineService,\n} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { tableRefreshRequest } from 'core-app/features/work-packages/routing/wp-view-base/work-packages-view.actions';\n\n@Directive()\nexport abstract class WorkPackagesViewBase extends UntilDestroyedMixin implements OnInit, OnDestroy {\n @InjectField() $state:StateService;\n\n @InjectField() states:States;\n\n @InjectField() querySpace:IsolatedQuerySpace;\n\n @InjectField() authorisationService:AuthorisationService;\n\n @InjectField() wpTableColumns:WorkPackageViewColumnsService;\n\n @InjectField() wpTableHighlighting:WorkPackageViewHighlightingService;\n\n @InjectField() wpTableSortBy:WorkPackageViewSortByService;\n\n @InjectField() wpTableGroupBy:WorkPackageViewGroupByService;\n\n @InjectField() wpTableFilters:WorkPackageViewFiltersService;\n\n @InjectField() wpTableSum:WorkPackageViewSumService;\n\n @InjectField() wpTableTimeline:WorkPackageViewTimelineService;\n\n @InjectField() wpTableHierarchies:WorkPackageViewHierarchiesService;\n\n @InjectField() wpTablePagination:WorkPackageViewPaginationService;\n\n @InjectField() wpTableOrder:WorkPackageViewOrderService;\n\n @InjectField() wpListService:WorkPackagesListService;\n\n @InjectField() wpListChecksumService:WorkPackagesListChecksumService;\n\n @InjectField() loadingIndicatorService:LoadingIndicatorService;\n\n @InjectField() $transitions:TransitionService;\n\n @InjectField() I18n!:I18nService;\n\n @InjectField() opStaticQueries:StaticQueriesService;\n\n @InjectField() wpStatesInitialization:WorkPackageStatesInitializationService;\n\n @InjectField() cdRef:ChangeDetectorRef;\n\n @InjectField() wpDisplayRepresentation:WorkPackageViewDisplayRepresentationService;\n\n @InjectField() wpIncludeSubprojects:WorkPackageViewIncludeSubprojectsService;\n\n @InjectField() wpTableBaseline:WorkPackageViewBaselineService;\n\n @InjectField() halEvents:HalEventsService;\n\n @InjectField() deviceService:DeviceService;\n\n @InjectField() currentProject:CurrentProjectService;\n\n @InjectField() actions$:ActionsService;\n\n /** Determine when query is initially loaded */\n queryLoaded = false;\n\n /** Remember explicitly when this component was destroyed */\n destroyed = false;\n\n constructor(public injector:Injector) {\n super();\n }\n\n ngOnInit() {\n // Listen to changes on the query state objects\n this.setupQueryObservers();\n\n // Listen for refresh changes\n this.setupRefreshObserver();\n\n // Mark tableInformationLoaded when initially loading done\n this.setupQueryLoadedListener();\n }\n\n private setupQueryObservers() {\n this.wpTablePagination\n .updates$()\n .pipe(\n this.untilDestroyed(),\n withLatestFrom(this.querySpace.query.values$()),\n ).subscribe(([pagination, query]) => {\n if (this.wpListChecksumService.isQueryOutdated(query, pagination)) {\n this.wpListChecksumService.update(query, pagination);\n this.refresh(true, false);\n }\n });\n\n this.setupChangeObserver(this.wpTableFilters, true);\n this.setupChangeObserver(this.wpTableGroupBy);\n this.setupChangeObserver(this.wpTableSortBy);\n this.setupChangeObserver(this.wpTableSum);\n this.setupChangeObserver(this.wpTableTimeline);\n this.setupChangeObserver(this.wpTableHierarchies);\n this.setupChangeObserver(this.wpTableColumns);\n this.setupChangeObserver(this.wpTableHighlighting);\n this.setupChangeObserver(this.wpTableOrder);\n this.setupChangeObserver(this.wpDisplayRepresentation);\n this.setupChangeObserver(this.wpIncludeSubprojects);\n this.setupChangeObserver(this.wpTableBaseline);\n }\n\n /**\n * Listen to changes in the given service and reload the query / results if\n * the service requests that.\n *\n * @param service Work package query state service to listento\n * @param firstPage If the service requests a change, load the first page\n */\n protected setupChangeObserver(service:WorkPackageQueryStateService, firstPage = false) {\n const queryState = this.querySpace.query;\n\n service\n .updates$()\n .pipe(\n this.untilDestroyed(),\n filter(() => queryState.hasValue() && service.hasChanged(queryState.value!)),\n )\n .subscribe(() => {\n const newQuery = queryState.value!;\n const triggerUpdate = service.applyToQuery(newQuery);\n this.querySpace.query.putValue(newQuery);\n\n // Update the current checksum\n this.wpListChecksumService\n .updateIfDifferent(newQuery, this.wpTablePagination.current)\n .then(() => {\n // Update the page, if the change requires it\n if (triggerUpdate) {\n this.refresh(true, firstPage);\n }\n });\n });\n }\n\n public get projectIdentifier() {\n return this.currentProject.identifier || undefined;\n }\n\n /**\n * Setup the listener for members of the table to request a refresh of the entire table\n * through the refresh service.\n */\n protected setupRefreshObserver() {\n this.halEvents\n .aggregated$('WorkPackage')\n .pipe(\n this.untilDestroyed(),\n filter((events:HalEvent[]) => this.filterRefreshEvents(events)),\n )\n .subscribe((events:HalEvent[]) => {\n this.refresh(false, false);\n });\n\n this\n .actions$\n .ofType(tableRefreshRequest)\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => {\n this.refresh(false, false);\n });\n }\n\n /**\n * Refresh the set of results,\n * showing the loading indicator if visibly is set.\n *\n * @param A refresh request\n */\n public abstract refresh(visibly:boolean, firstPage:boolean):void;\n\n /**\n * Set the loading indicator for this set instance\n * @param promise\n */\n protected abstract set loadingIndicator(promise:Promise);\n\n /**\n * Filter the given work package events for something interesting\n * @param events HalEvent[]\n *\n * @return {boolean} whether any of these events should trigger the view reloading\n */\n protected filterRefreshEvents(events:HalEvent[]):boolean {\n const source:string[] = this.querySpace.renderedWorkPackageIds.value\n || this.querySpace.results.value?.elements.map((el) => el.id as string)\n || [];\n\n const rendered = new Set(source);\n\n for (let i = 0; i < events.length; i++) {\n const item = events[i];\n if (rendered.has(item.id) || item.eventType === 'created') {\n return true;\n }\n }\n\n return false;\n }\n\n protected setupQueryLoadedListener() {\n this\n .querySpace\n .initialized\n .values$()\n .pipe(\n take(1),\n filter(() => !this.componentDestroyed),\n )\n .subscribe(() => {\n this.queryLoaded = true;\n this.cdRef.detectChanges();\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { QueryParamListenerService } from 'core-app/features/work-packages/components/wp-query/query-param-listener.service';\nimport {\n PartitionedQuerySpacePageComponent,\n ToolbarButtonComponentDefinition,\n} from 'core-app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component';\nimport { WorkPackageCreateButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-create-button/wp-create-button.component';\nimport { WorkPackageFilterButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-filter-button/wp-filter-button.component';\nimport { WorkPackageDetailsViewButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-details-view-button/wp-details-view-button.component';\nimport { WorkPackageTimelineButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-timeline-toggle-button/wp-timeline-toggle-button.component';\nimport { ZenModeButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/zen-mode-toggle-button/zen-mode-toggle-button.component';\nimport { WorkPackageSettingsButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-settings-button/wp-settings-button.component';\nimport { of } from 'rxjs';\nimport { WorkPackageFoldToggleButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-fold-toggle-button/wp-fold-toggle-button.component';\nimport { OpProjectIncludeComponent } from 'core-app/shared/components/project-include/project-include.component';\nimport { OpBaselineModalComponent } from 'core-app/features/work-packages/components/wp-baseline/baseline-modal/baseline-modal.component';\n\n@Component({\n selector: 'wp-view-page',\n templateUrl: '../partitioned-query-space-page/partitioned-query-space-page.component.html',\n styleUrls: [\n // Absolute paths do not work for styleURLs :-(\n '../partitioned-query-space-page/partitioned-query-space-page.component.sass',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n /** We need to provide the wpNotification service here to get correct save notifications for WP resources */\n { provide: HalResourceNotificationService, useClass: WorkPackageNotificationService },\n QueryParamListenerService,\n ],\n})\nexport class WorkPackageViewPageComponent extends PartitionedQuerySpacePageComponent implements OnInit {\n toolbarButtonComponents:ToolbarButtonComponentDefinition[] = [\n {\n component: WorkPackageCreateButtonComponent,\n inputs: {\n stateName$: of(this.stateName),\n allowed: ['work_packages.createWorkPackage'],\n },\n },\n {\n component: OpProjectIncludeComponent,\n },\n {\n component: OpBaselineModalComponent,\n containerClasses: 'hidden-for-tablet',\n },\n {\n component: WorkPackageFilterButtonComponent,\n },\n {\n component: WorkPackageFoldToggleButtonComponent,\n show: () => !!(this.currentQuery && this.currentQuery.groupBy),\n },\n {\n component: WorkPackageDetailsViewButtonComponent,\n containerClasses: 'hidden-for-tablet',\n },\n {\n component: WorkPackageTimelineButtonComponent,\n containerClasses: 'hidden-for-tablet -no-spacing',\n },\n {\n component: ZenModeButtonComponent,\n containerClasses: 'hidden-for-tablet',\n },\n {\n component: WorkPackageSettingsButtonComponent,\n },\n ];\n\n ngOnInit() {\n super.ngOnInit();\n this.wpTableFilters.hidden.push(\n 'project',\n );\n this.text.button_settings = this.I18n.t('js.button_settings');\n }\n\n protected additionalLoadingTime():Promise {\n if (this.wpTableTimeline.isVisible) {\n return this.querySpace.timelineRendered.pipe(take(1)).toPromise();\n }\n return this.querySpace.tableRendered.valuesPromise() as Promise;\n }\n\n protected shouldUpdateHtmlTitle():boolean {\n return this.$state.current.name === 'work-packages.partitioned.list';\n }\n\n private get stateName() {\n if (this.$state.current.name?.includes('gantt')) {\n return 'gantt.partitioned.list.new';\n }\n\n return 'work-packages.partitioned.list.new';\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable, Injector } from '@angular/core';\nimport { IToast } from 'core-app/shared/components/toaster/toast.service';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { TurboRequestsService } from 'core-app/core/turbo/turbo-requests.service';\n\n@Injectable()\nexport class WorkPackageNotificationService extends HalResourceNotificationService {\n constructor(\n readonly injector:Injector,\n readonly apiV3Service:ApiV3Service,\n readonly turboRequests:TurboRequestsService,\n ) {\n super(injector);\n }\n\n public showSave(resource:HalResource, isCreate = false) {\n const message:IToast = {\n message: this.I18n.t(`js.notice_successful_${isCreate ? 'create' : 'update'}`),\n type: 'success',\n };\n\n this.ToastService.addSuccess(message);\n }\n\n protected showCustomError(errorResource:any, resource:WorkPackageResource):boolean {\n if (errorResource.errorIdentifier === 'urn:openproject-org:api:v3:errors:UpdateConflict') {\n // currently we do not have a programmatic way to show the primer flash messages\n // so we just do a request to the server to show it\n // should be refactored once we have a programmatic way to show the primer flash messages!\n void this.turboRequests.request('/work_packages/show_conflict_flash_message?scheme=danger', {\n method: 'GET',\n });\n\n return true;\n }\n\n return super.showCustomError(errorResource, resource);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { StateService } from '@uirouter/core';\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalDeletedEvent, HalEventsService } from 'core-app/features/hal/services/hal-events.service';\n\n@Injectable()\nexport class WorkPackageService {\n private text = {\n successful_delete: this.I18n.t('js.work_packages.message_successful_bulk_delete'),\n };\n\n constructor(private readonly http:HttpClient,\n private readonly $state:StateService,\n private readonly PathHelper:PathHelperService,\n private readonly UrlParamsHelper:UrlParamsHelperService,\n private readonly toastService:ToastService,\n private readonly I18n:I18nService,\n private readonly halEvents:HalEventsService) {\n }\n\n public performBulkDelete(ids:string[], defaultHandling:boolean) {\n const params = {\n 'ids[]': ids,\n };\n const promise = this.http\n .delete(\n this.PathHelper.workPackagesBulkDeletePath(),\n { params, withCredentials: true },\n )\n .toPromise();\n\n if (defaultHandling) {\n promise\n .then(() => {\n this.toastService.addSuccess(this.text.successful_delete);\n\n ids.forEach((id) => this.halEvents.push({ _type: 'WorkPackage', id }, { eventType: 'deleted' } as HalDeletedEvent));\n\n if (this.$state.includes('**.list.details.**')\n && ids.indexOf(this.$state.params.workPackageId) > -1) {\n this.$state.go('work-packages.partitioned.list', this.$state.params);\n }\n })\n .catch(() => {\n const urlParams = this.UrlParamsHelper.buildQueryString(params);\n window.location.href = `${this.PathHelper.workPackagesBulkDeletePath()}?${urlParams}`;\n });\n }\n\n return promise;\n }\n}\n","
    \n \n \n \n \n\n \n
    \n\n \n\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IPrincipal } from 'core-app/core/state/principals/principal.model';\nimport { IAttachment } from 'core-app/core/state/attachments/attachment.model';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { PrincipalsResourceService } from 'core-app/core/state/principals/principals.service';\nimport { PrincipalRendererService } from 'core-app/shared/components/principal/principal-renderer.service';\nimport { ConfirmDialogService } from 'core-app/shared/components/modals/confirm-dialog/confirm-dialog.service';\nimport { ConfirmDialogOptions } from 'core-app/shared/components/modals/confirm-dialog/confirm-dialog.modal';\nimport { getIconForMimeType } from 'core-app/shared/components/storages/functions/storages.functions';\nimport { IFileIcon } from 'core-app/shared/components/storages/icons.mapping';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[op-attachment-list-item]',\n templateUrl: './attachment-list-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OpAttachmentListItemComponent extends UntilDestroyedMixin implements OnInit, AfterViewInit {\n @Input() public attachment:IAttachment;\n\n @Input() public index:number;\n\n @Input() public showTimestamp = true;\n\n @Output() public removeAttachment = new EventEmitter();\n\n @ViewChild('avatar') avatar:ElementRef;\n\n static imageFileExtensions:string[] = ['jpeg', 'jpg', 'gif', 'bmp', 'png'];\n\n public text = {\n quarantinedHint: this.I18n.t('js.attachments.quarantined_hint'),\n dragHint: this.I18n.t('js.attachments.draggable_hint'),\n deleteTitle: this.I18n.t('js.attachments.delete'),\n deleteConfirmation: this.I18n.t('js.attachments.delete_confirmation'),\n removeFile: (arg:object):string => this.I18n.t('js.label_remove_file', arg),\n };\n\n public get deleteIconTitle():string {\n return this.text.removeFile({ fileName: this.attachment.fileName });\n }\n\n public author$:Observable;\n\n public timestampText:string;\n\n public fileIcon:IFileIcon;\n\n private viewInitialized$ = new BehaviorSubject(false);\n\n constructor(\n private readonly I18n:I18nService,\n private readonly pathHelper:PathHelperService,\n private readonly timezoneService:TimezoneService,\n private readonly confirmDialogService:ConfirmDialogService,\n private readonly principalsResourceService:PrincipalsResourceService,\n private readonly principalRendererService:PrincipalRendererService,\n ) {\n super();\n }\n\n ngOnInit():void {\n this.fileIcon = getIconForMimeType(this.attachment.contentType);\n\n const href = this.attachment._links.author.href;\n this.author$ = this.principalsResourceService.requireEntity(href);\n\n this.timestampText = this.timezoneService.parseDatetime(this.attachment.createdAt).fromNow();\n\n combineLatest([\n this.author$,\n this.viewInitialized$.pipe(distinctUntilChanged()),\n ]).pipe(this.untilDestroyed())\n .subscribe(([user, initialized]) => {\n if (!initialized) {\n return;\n }\n\n this.principalRendererService.render(\n this.avatar.nativeElement,\n user,\n { hide: true, link: false },\n { hide: false, size: 'mini' },\n );\n });\n }\n\n ngAfterViewInit():void {\n this.viewInitialized$.next(true);\n }\n\n /**\n * Set the appropriate data for drag & drop of an attachment item.\n * @param evt DragEvent\n */\n public setDragData(evt:DragEvent):void {\n const url = this.downloadPath;\n const previewElement = this.draggableHTML(url);\n\n if (evt.dataTransfer == null) return;\n\n evt.dataTransfer.setData('text/plain', url);\n evt.dataTransfer.setData('text/html', previewElement.outerHTML);\n evt.dataTransfer.setData('text/uri-list', url);\n evt.dataTransfer.setDragImage(previewElement, 0, 0);\n }\n\n public draggableHTML(url:string):HTMLImageElement|HTMLAnchorElement {\n let el:HTMLImageElement|HTMLAnchorElement;\n\n if (this.isImage) {\n el = document.createElement('img');\n el.src = url;\n el.textContent = this.attachment.fileName;\n } else {\n el = document.createElement('a');\n el.href = url;\n el.textContent = this.attachment.fileName;\n }\n\n return el;\n }\n\n private get downloadPath():string {\n return this.pathHelper.attachmentDownloadPath(String(this.attachment.id), this.attachment.fileName);\n }\n\n private get isImage():boolean {\n const ext = this.attachment.fileName.split('.').pop() || '';\n return OpAttachmentListItemComponent.imageFileExtensions.indexOf(ext.toLowerCase()) > -1;\n }\n\n public confirmRemoveAttachment():void {\n const options:ConfirmDialogOptions = {\n text: {\n text: this.text.deleteConfirmation,\n title: this.text.deleteTitle,\n button_continue: this.text.deleteTitle,\n },\n icon: {\n continue: 'delete',\n },\n dangerHighlighting: true,\n };\n void this.confirmDialogService\n .confirm(options)\n .then(() => { this.removeAttachment.emit(); })\n .catch(() => { /* confirmation rejected */ });\n }\n}\n"," 0\"\n class=\"spot-list spot-list_compact op-file-list\"\n>\n \n
\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { IAttachment } from 'core-app/core/state/attachments/attachment.model';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { AttachmentsResourceService } from 'core-app/core/state/attachments/attachments.service';\n\n@Component({\n selector: 'op-attachment-list',\n templateUrl: './attachment-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OpAttachmentListComponent extends UntilDestroyedMixin {\n @Input() public attachments:IAttachment[] = [];\n\n @Input() public collectionKey:string;\n\n @Input() public showTimestamp = true;\n\n @Output() public attachmentRemoved = new EventEmitter();\n\n constructor(\n private readonly attachmentsResourceService:AttachmentsResourceService,\n ) {\n super();\n }\n\n public removeAttachment(attachment:IAttachment):void {\n this.attachmentsResourceService.removeAttachment(this.collectionKey, attachment).subscribe(() => {\n this.attachmentRemoved.emit();\n });\n }\n}\n"," 0\n }\"\n *ngIf=\"(attachments$ | async).length\"\n [attachments]=\"attachments$ | async\"\n [collectionKey]=\"collectionKey\"\n [showTimestamp]=\"showTimestamp\"\n (attachmentRemoved)=\"attachmentRemoved.emit()\"\n>\n\n\n\n 0,\n 'op-file-section--drop-box_dragging-over': draggingOverDropZone,\n 'op-file-section--drop-box_float': (attachments$ | async).length\n }\"\n type=\"button\"\n (click)=\"triggerFileInput()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDropFiles($event)\"\n>\n \n 0\"\n class=\"op-file-section--drop-box-text\"\n [textContent]=\"text.dropFiles\"\n >\n \n\n\n\n \n \n \n \n\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\n\nimport { States } from 'core-app/core/states/states.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\nimport { AttachmentsResourceService } from 'core-app/core/state/attachments/attachments.service';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { OpUploadService } from 'core-app/core/upload/upload.service';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { IAttachment } from 'core-app/core/state/attachments/attachment.model';\nimport isNewResource from 'core-app/features/hal/helpers/is-new-resource';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nfunction containsFiles(dataTransfer:DataTransfer):boolean {\n return dataTransfer.types.indexOf('Files') >= 0;\n}\n\n@Component({\n selector: 'op-attachments',\n templateUrl: './attachments.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OpAttachmentsComponent extends UntilDestroyedMixin implements OnInit, OnDestroy {\n @HostBinding('attr.data-test-selector') public testSelector = 'op-attachments';\n\n @HostBinding('class.op-file-section') public className = true;\n\n @Input() public resource:HalResource;\n\n @Input() public allowUploading = true;\n\n @Input() public destroyImmediately = true;\n\n @Input() public externalUploadButton:string|null = null;\n\n @Input() public showTimestamp = true;\n\n @Output() public attachmentRemoved = new EventEmitter();\n\n @Output() public attachmentAdded = new EventEmitter();\n\n public attachments$:Observable;\n\n public draggingOverDropZone = false;\n\n public dragging = 0;\n\n @ViewChild('hiddenFileInput') public filePicker:ElementRef;\n\n public text = {\n attachments: this.I18n.t('js.label_attachments'),\n uploadLabel: this.I18n.t('js.label_add_attachments'),\n dropFiles: this.I18n.t('js.label_drop_files'),\n dropClickFiles: this.I18n.t('js.label_drop_or_click_files'),\n foldersWarning: this.I18n.t('js.label_drop_folders_hint'),\n };\n\n private get attachmentsSelfLink():string {\n const attachments = this.resource.attachments as unknown&{ href:string };\n return attachments.href;\n }\n\n public get collectionKey():string {\n return isNewResource(this.resource) ? 'new' : this.attachmentsSelfLink;\n }\n\n private onGlobalDragLeave:(_event:DragEvent) => void = (_event) => {\n this.dragging = Math.max(this.dragging - 1, 0);\n this.cdRef.detectChanges();\n };\n\n private onGlobalDragEnd:(_event:DragEvent) => void = (_event) => {\n this.dragging = 0;\n this.cdRef.detectChanges();\n };\n\n private onGlobalDragEnter:(_event:DragEvent) => void = (_event) => {\n // When the global drag and drop is active and the dragging happens over the DOM\n // elements, the dragenter and dragleave events are always fired in pairs.\n // On dragenter the this.dragging is set to 2 and on dragleave we deduct it to 1,\n // meaning the drag and drop remains active. When the drag and drop action is canceled\n // i.e. by the \"Escape\" key, an extra dragleave event is fired.\n // In this case this.dragging will be deducted to 0, disabling the active drop areas.\n this.dragging = 2;\n this.cdRef.detectChanges();\n };\n\n constructor(\n public elementRef:ElementRef,\n protected readonly I18n:I18nService,\n protected readonly states:States,\n protected readonly toastService:ToastService,\n private readonly uploadService:OpUploadService,\n protected readonly halResourceService:HalResourceService,\n protected readonly attachmentsResourceService:AttachmentsResourceService,\n protected readonly timezoneService:TimezoneService,\n protected readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n\n populateInputsFromDataset(this);\n }\n\n ngOnInit():void {\n if (!(this.resource instanceof HalResource)) {\n // Parse the resource if any exists\n this.resource = this.halResourceService.createHalResource(this.resource, true);\n }\n\n if (this.externalUploadButton) {\n fromEvent(document.querySelector(this.externalUploadButton) as Element, 'click')\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe(() => this.triggerFileInput());\n }\n\n this.states.forResource(this.resource)!.changes$()\n .pipe(\n this.untilDestroyed(),\n filter((newResource) => !!newResource),\n )\n .subscribe((newResource:HalResource) => {\n this.resource = newResource || this.resource;\n });\n\n // ensure collection is loaded to the store\n if (!isNewResource(this.resource)) {\n this.attachmentsResourceService.requireCollection(this.attachmentsSelfLink).subscribe();\n }\n\n const compareCreatedAtTimestamps = (a:IAttachment, b:IAttachment):number => {\n const rightCreatedAt = this.timezoneService.parseDatetime(b.createdAt);\n const leftCreatedAt = this.timezoneService.parseDatetime(a.createdAt);\n return rightCreatedAt.isBefore(leftCreatedAt) ? -1 : 1;\n };\n\n this.attachments$ = this\n .attachmentsResourceService\n .collection(this.collectionKey)\n .pipe(\n this.untilDestroyed(),\n map((attachments) => attachments.sort(compareCreatedAtTimestamps)),\n // store attachments for new resources directly into the resource. This way, the POST request to create the\n // resource embeds the attachments and the backend reroutes the anonymous attachments to the resource.\n tap((attachments) => {\n if (isNewResource(this.resource)) {\n this.resource.attachments = { elements: attachments.map((a) => a._links.self) };\n }\n }),\n );\n\n document.body.addEventListener('dragenter', this.onGlobalDragEnter);\n document.body.addEventListener('dragleave', this.onGlobalDragLeave);\n document.body.addEventListener('dragend', this.onGlobalDragEnd);\n document.body.addEventListener('drop', this.onGlobalDragEnd);\n }\n\n ngOnDestroy():void {\n document.body.removeEventListener('dragenter', this.onGlobalDragEnter);\n document.body.removeEventListener('dragleave', this.onGlobalDragLeave);\n document.body.removeEventListener('dragend', this.onGlobalDragEnd);\n document.body.removeEventListener('drop', this.onGlobalDragEnd);\n }\n\n public triggerFileInput():void {\n this.filePicker.nativeElement.click();\n }\n\n public onFilePickerChanged():void {\n const fileList = this.filePicker.nativeElement.files;\n if (fileList === null) return;\n\n this.uploadFiles(Array.from(fileList));\n // reset file input, so that selecting the same file again triggers a change\n this.filePicker.nativeElement.value = '';\n }\n\n public onDropFiles(event:DragEvent):void {\n if (event.dataTransfer === null) return;\n\n // eslint-disable-next-line no-param-reassign\n event.dataTransfer.dropEffect = 'copy';\n\n this.uploadFiles(Array.from(event.dataTransfer.files));\n this.draggingOverDropZone = false;\n this.dragging = 0;\n }\n\n public onDragOver(event:DragEvent):void {\n if (event.dataTransfer !== null && containsFiles(event.dataTransfer)) {\n // eslint-disable-next-line no-param-reassign\n event.dataTransfer.dropEffect = 'copy';\n this.draggingOverDropZone = true;\n }\n }\n\n public onDragLeave(_event:DragEvent):void {\n this.draggingOverDropZone = false;\n }\n\n protected uploadFiles(files:File[]):void {\n let filesWithoutFolders = files || [];\n const countBefore = files.length;\n filesWithoutFolders = this.filterFolders(filesWithoutFolders);\n\n if (filesWithoutFolders.length === 0) {\n // If we filtered all files as directories, show a notice\n if (countBefore > 0) {\n this.toastService.addNotice(this.text.foldersWarning);\n }\n\n return;\n }\n\n this\n .attachmentsResourceService\n .attachFiles(this.resource, filesWithoutFolders)\n .subscribe({\n next: () => { this.attachmentAdded.emit(); },\n error: (error:HttpErrorResponse) => this.toastService.addError(error),\n });\n }\n\n /**\n * We try to detect folders by checking for either empty types\n * or empty file sizes.\n * @param files\n */\n protected filterFolders(files:File[]):File[] {\n return files.filter((file) => {\n // Folders never have a mime type\n if (file.type !== '') {\n return true;\n }\n\n // Files however MAY have no mime type as well\n // so fall back to checking zero\n if (file.size === 0) {\n console.warn(`Skipping file because of file size (${file.size}) %O`, file);\n return false;\n }\n\n return true;\n });\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { IconModule } from 'core-app/shared/components/icon/icon.module';\n\nimport { OpAttachmentsComponent } from './attachments.component';\nimport { OpAttachmentListComponent } from './attachment-list/attachment-list.component';\nimport { OpAttachmentListItemComponent } from './attachment-list/attachment-list-item.component';\n\n@NgModule({\n imports: [\n CommonModule,\n IconModule,\n ],\n declarations: [\n OpAttachmentsComponent,\n OpAttachmentListComponent,\n OpAttachmentListItemComponent,\n ],\n exports: [\n OpAttachmentListComponent,\n OpAttachmentsComponent,\n\n OpAttachmentListItemComponent,\n ],\n})\nexport class OpenprojectAttachmentsModule {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { input } from '@openproject/reactivestates';\nimport { Injectable } from '@angular/core';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { take } from 'rxjs/operators';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { HelpTextResource } from 'core-app/features/hal/resources/help-text-resource';\n\n@Injectable({ providedIn: 'root' })\nexport class AttributeHelpTextsService {\n private helpTexts = input();\n\n constructor(private apiV3Service:ApiV3Service) {\n }\n\n /**\n * Search for a given attribute help text\n *\n * @param attribute\n * @param scope\n */\n public require(attribute:string, scope:string):Promise {\n this.load();\n\n return new Promise((resolve, reject) => {\n this.helpTexts\n .valuesPromise()\n .then(() => resolve(this.find(attribute, scope)));\n });\n }\n\n /**\n * Search for a given attribute help text\n *\n */\n public requireById(id:string|number):Promise {\n this.load();\n\n return this\n .helpTexts\n .values$()\n .pipe(\n take(1),\n )\n .toPromise()\n .then(() => {\n const value = this.helpTexts.getValueOr([]);\n return _.find(value, (element) => element.id?.toString() === id.toString());\n });\n }\n\n private load():void {\n this.helpTexts.putFromPromiseIfPristine(() => this.apiV3Service\n .help_texts\n .get()\n .toPromise()\n .then((resources:CollectionResource) => resources.elements));\n }\n\n private find(attribute:string, scope:string):HelpTextResource|undefined {\n const value = this.helpTexts.getValueOr([]);\n return _.find(value, (element) => element.scope === scope && element.attribute === attribute);\n }\n}\n","\n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n Input,\n OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\nimport { AttributeHelpTextsService } from './attribute-help-text.service';\nimport { AttributeHelpTextModalComponent } from './attribute-help-text.modal';\n\nexport const attributeHelpTextSelector = 'attribute-help-text';\n\n@Component({\n selector: attributeHelpTextSelector,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './attribute-help-text.component.html',\n})\nexport class AttributeHelpTextComponent implements OnInit {\n // Attribute to show help text for\n @Input() public attribute:string;\n\n @Input() public additionalLabel?:string;\n\n // Scope to search for\n @Input() public attributeScope:string;\n\n // Load single id entry if given\n @Input() public helpTextId?:string|number;\n\n public exists = false;\n\n readonly text = {\n open_dialog: this.I18n.t('js.help_texts.show_modal'),\n edit: this.I18n.t('js.button_edit'),\n close: this.I18n.t('js.button_close'),\n };\n\n constructor(\n readonly elementRef:ElementRef,\n protected attributeHelpTexts:AttributeHelpTextsService,\n protected opModalService:OpModalService,\n protected cdRef:ChangeDetectorRef,\n protected injector:Injector,\n protected I18n:I18nService,\n ) {\n populateInputsFromDataset(this);\n }\n\n ngOnInit() {\n if (this.helpTextId) {\n this.exists = true;\n } else {\n // Need to load the promise to find out if the attribute exists\n this.load().then((resource) => {\n this.exists = !!resource;\n this.cdRef.detectChanges();\n return resource;\n });\n }\n }\n\n public handleClick(event:Event):void {\n this.load().then((resource) => {\n this.opModalService.show(AttributeHelpTextModalComponent, this.injector, { helpText: resource });\n });\n\n event.preventDefault();\n }\n\n private load() {\n if (this.helpTextId) {\n return this.attributeHelpTexts.requireById(this.helpTextId);\n }\n return this.attributeHelpTexts.require(this.attribute, this.attributeScope);\n }\n}\n","\n \n \n \n \n\n
\n
\n\n
0\">\n \n {{ text.attachments }}\n \n \n
\n \n\n
\n
\n \n {{ text.close }}\n \n \n \n \n \n
\n
\n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, OnInit,\n} from '@angular/core';\nimport { OpModalComponent } from 'core-app/shared/components/modal/modal.component';\nimport { OpModalLocalsMap } from 'core-app/shared/components/modal/modal.types';\nimport { OpModalLocalsToken } from 'core-app/shared/components/modal/modal.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HelpTextResource } from 'core-app/features/hal/resources/help-text-resource';\n\n@Component({\n templateUrl: './help-text.modal.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AttributeHelpTextModalComponent extends OpModalComponent implements OnInit {\n readonly text = {\n attachments: this.I18n.t('js.label_attachments'),\n edit: this.I18n.t('js.button_edit'),\n close: this.I18n.t('js.button_close'),\n };\n\n public helpText:HelpTextResource = this.locals.helpText!;\n\n constructor(\n @Inject(OpModalLocalsToken) public locals:OpModalLocalsMap,\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n ) {\n super(locals, cdRef, elementRef);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n // Load the attachments\n this\n .helpText\n .attachments\n .$load()\n .then(() => this.cdRef.detectChanges());\n }\n\n public get helpTextLink() {\n if (this.helpText.editText) {\n return this.helpText.editText.$link.href;\n }\n\n return '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OpenprojectAttachmentsModule } from 'core-app/shared/components/attachments/openproject-attachments.module';\nimport { IconModule } from 'core-app/shared/components/icon/icon.module';\nimport { OpenprojectModalModule } from 'core-app/shared/components/modal/modal.module';\n\nimport { AttributeHelpTextComponent } from './attribute-help-text.component';\nimport { AttributeHelpTextModalComponent } from './attribute-help-text.modal';\nimport { StaticAttributeHelpTextComponent } from './static-attribute-help-text.component';\nimport { StaticAttributeHelpTextModalComponent } from './static-attribute-help-text.modal';\n\n@NgModule({\n imports: [\n CommonModule,\n OpenprojectModalModule,\n OpenprojectAttachmentsModule,\n IconModule,\n ],\n declarations: [\n AttributeHelpTextComponent,\n AttributeHelpTextModalComponent,\n StaticAttributeHelpTextComponent,\n StaticAttributeHelpTextModalComponent,\n ],\n providers: [\n ],\n exports: [\n AttributeHelpTextComponent,\n StaticAttributeHelpTextComponent,\n ],\n})\nexport class AttributeHelpTextModule {}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Injector,\n Input,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { StaticAttributeHelpTextModalComponent } from './static-attribute-help-text.modal';\n\n\n@Component({\n selector: 'opce-static-attribute-help-text',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './static-attribute-help-text.component.html',\n})\nexport class StaticAttributeHelpTextComponent {\n // Attribute pass the modal title and content\n @Input() public title:string;\n\n @Input() public content:string;\n\n @HostBinding('class.form--field-inline-buttons-container') className = true;\n\n readonly text = {\n open_dialog: this.I18n.t('js.help_texts.show_modal'),\n };\n\n constructor(\n readonly elementRef:ElementRef,\n protected opModalService:OpModalService,\n protected cdRef:ChangeDetectorRef,\n protected injector:Injector,\n protected I18n:I18nService,\n ) {\n populateInputsFromDataset(this);\n }\n\n public handleClick(event:Event):void {\n this.opModalService.show(StaticAttributeHelpTextModalComponent, this.injector, { title: this.title, content: this.content });\n\n event.preventDefault();\n }\n}\n","\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { OpModalComponent } from 'core-app/shared/components/modal/modal.component';\nimport { OpModalLocalsToken } from 'core-app/shared/components/modal/modal.service';\nimport { OpModalLocalsMap } from 'core-app/shared/components/modal/modal.types';\n\n@Component({\n templateUrl: './static-attribute-help-text.modal.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StaticAttributeHelpTextModalComponent extends OpModalComponent implements OnInit {\n readonly text = {\n close: this.I18n.t('js.button_close'),\n };\n\n public title:string = this.locals.title as string;\n\n public content:string = this.locals.content as string;\n\n constructor(\n @Inject(OpModalLocalsToken) public locals:OpModalLocalsMap,\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n ) {\n super(locals, cdRef, elementRef);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n}\n","\n \n {{ title }}\n \n\n
\n\n
\n {{ content }}\n
\n\n
\n
\n \n {{ text.close }}\n \n
\n
\n\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[op-autocompleter-footer-tmp]',\n})\n// A Directive to be used on the option template of\n// ng-select (what will be shown in each row of drop down)\n// it is used when you want to inject a different template\nexport class OpAutocompleterFooterTemplateDirective {\n\n}\n","\n \n : {{ search }}\n \n\n \n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { AddTagFn } from '@ng-select/ng-select/lib/ng-select.component';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { Subject } from 'rxjs';\nimport { compareByHref } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { repositionDropdownBugfix } from 'core-app/shared/components/autocompleter/op-autocompleter/autocompleter.helper';\n\nexport interface CreateAutocompleterValueOption {\n name:string;\n href:string|null;\n}\n\n@Component({\n templateUrl: './create-autocompleter.component.html',\n selector: 'create-autocompleter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./create-autocompleter.component.sass'],\n})\nexport class CreateAutocompleterComponent extends UntilDestroyedMixin implements AfterViewInit {\n @Input() public availableValues:CreateAutocompleterValueOption[];\n\n @Input() public appendTo:string;\n\n @Input() public resource:HalResource;\n\n @Input() public model:any;\n\n @Input() public required = false;\n\n @Input() public disabled = false;\n\n @Input() public finishedLoading = false;\n\n @Input() public id = '';\n\n @Input() public classes = '';\n\n @Input() public typeahead?:Subject;\n\n @Input() public hideSelected = false;\n\n @Output() public onChange = new EventEmitter();\n\n @Output() public onKeydown = new EventEmitter();\n\n @Output() public onOpen = new EventEmitter();\n\n @Output() public onClose = new EventEmitter();\n\n @Output() public onAfterViewInit = new EventEmitter();\n\n @Output() public onAddNew = new EventEmitter();\n\n @ViewChild(NgSelectComponent) public ngSelectComponent:NgSelectComponent;\n\n @InjectField() readonly I18n:I18nService;\n\n @InjectField() readonly cdRef:ChangeDetectorRef;\n\n @InjectField() readonly currentProject:CurrentProjectService;\n\n @InjectField() readonly pathHelper:PathHelperService;\n\n public compareByHref = compareByHref;\n\n public groupByFn = (_item:HalResource):string | null => null;\n\n public text:{ [key:string]:string } = {};\n\n public createAllowed:boolean|AddTagFn = false;\n\n private _openDirectly = false;\n\n constructor(readonly injector:Injector) {\n super();\n\n this.text.add_new_action = this.I18n.t('js.label_create');\n }\n\n ngAfterViewInit() {\n this.onAfterViewInit.emit(this);\n }\n\n public openSelect() {\n if (this.ngSelectComponent) {\n this.ngSelectComponent.open();\n } else {\n // In case the autocompleter was not loaded,\n // do not reset the variable\n return;\n }\n\n this.openDirectly = false;\n }\n\n public closeSelect() {\n this.ngSelectComponent && this.ngSelectComponent.close();\n }\n\n public changeModel(element:HalResource) {\n this.onChange.emit(element);\n }\n\n public opened() {\n repositionDropdownBugfix(this.ngSelectComponent);\n this.onOpen.emit();\n }\n\n public closed() {\n this.openDirectly = false;\n this.onClose.emit();\n }\n\n public keyPressed(event:JQuery.TriggeredEvent) {\n this.onKeydown.emit(event);\n }\n\n public get openDirectly() {\n return this._openDirectly;\n }\n\n public set openDirectly(val:boolean) {\n this._openDirectly = val;\n if (val) {\n this.openSelect();\n }\n }\n\n public focusInputField() {\n this.ngSelectComponent && this.ngSelectComponent.focus();\n }\n}\n","
\n
\n
\n \n\n \n \n
\n
\n\n
\n
\n \n\n \n
\n \n \n
\n\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n
\n
\n
\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { DragulaService, Group } from 'ng2-dragula';\nimport { DomAutoscrollService } from 'core-app/shared/helpers/drag-and-drop/dom-autoscroll.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { setBodyCursor } from 'core-app/shared/helpers/dom/set-window-cursor.helper';\nimport {\n repositionDropdownBugfix,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/autocompleter.helper';\nimport { QueryFilterResource } from 'core-app/features/hal/resources/query-filter-resource';\nimport { AlternativeSearchService } from 'core-app/shared/components/work-packages/alternative-search.service';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\nimport { merge } from 'rxjs';\n\nexport interface DraggableOption {\n name:string;\n id:string;\n}\n\n@Component({\n selector: 'op-draggable-autocompleter',\n templateUrl: './draggable-autocomplete.component.html',\n styleUrls: ['./draggable-autocomplete.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DraggableAutocompleteComponent extends UntilDestroyedMixin implements OnInit, AfterViewInit, OnDestroy {\n /** Options to show in the autocompleter */\n @Input() options:DraggableOption[];\n\n /** Order list of selected items */\n @Input() selected:DraggableOption[] = [];\n\n /** List of options that are protected from being deleted. They can still be moved. */\n @Input() protected:DraggableOption[] = [];\n\n /** Should we focus the autocompleter ? */\n @Input() autofocus = true;\n\n @Input() name = '';\n\n /** Id of the autocompleter input */\n @Input() id = this.name;\n\n /** Label to display above the autocompleter */\n @Input() inputLabel = '';\n\n /** Placeholder text to display in the autocompleter input */\n @Input() inputPlaceholder = '';\n\n /** Label to display below the autocompleter input */\n @Input() inputCaption = '';\n\n /** Label to display a validation error below the drag&drop area */\n @Input() inputError = '';\n\n /** Label to display drag&drop area */\n @Input() dragAreaLabel = '';\n\n /** Name of drag&drop area group */\n @Input() dragAreaName = 'columns';\n\n /** Indicates that at least one entry must be selected */\n @Input() required = false;\n\n /** Decide whether to bind the component to the component or to the body */\n /** Binding to the component in case the component is inside a Primer Dialog which uses popover */\n @Input() appendToComponent = false;\n @Input() formControlId = 'op-draggable-autocomplete-container';\n\n /** Output when autocompleter changes values or items removed */\n @Output() onChange = new EventEmitter();\n\n /** List of items still available for selection */\n availableOptions:DraggableOption[] = [];\n\n private autoscroll:any;\n\n private columnsGroup:Group;\n\n @ViewChild('ngSelectComponent') public ngSelectComponent:NgSelectComponent;\n @ViewChild('input') inputElement:ElementRef;\n\n public appendTo = 'body';\n\n constructor(\n readonly I18n:I18nService,\n readonly elementRef:ElementRef,\n readonly dragula:DragulaService,\n readonly alternativeSearchService:AlternativeSearchService,\n ) {\n super();\n }\n\n ngOnInit():void {\n populateInputsFromDataset(this);\n\n this.dragula.destroy(this.dragAreaName);\n\n this.updateAvailableOptions();\n\n // Setup groups\n this.columnsGroup = this.dragula.createGroup(\n this.dragAreaName,\n { mirrorContainer: this.appendToComponent ? document.getElementById(this.formControlId)! : document.body },\n );\n\n // Set cursor when dragging\n this.dragula.drag(this.dragAreaName)\n .pipe(this.untilDestroyed())\n .subscribe(() => setBodyCursor('move', 'important'));\n\n // Reset cursor when cancel or dropped\n merge(\n this.dragula.drop(this.dragAreaName),\n this.dragula.cancel(this.dragAreaName),\n )\n .pipe(this.untilDestroyed())\n .subscribe(() => setBodyCursor('auto'));\n\n // Setup autoscroll\n const that = this;\n this.autoscroll = new DomAutoscrollService(\n [\n document.getElementById('content-body')!,\n ],\n {\n margin: 25,\n maxSpeed: 10,\n scrollWhenOutside: true,\n autoScroll(this:any) {\n return this.down && that.columnsGroup.drake.dragging;\n },\n },\n );\n\n this.appendTo = this.appendToComponent ? `#${this.formControlId}` : 'body';\n }\n\n ngAfterViewInit():void {\n if (this.autofocus) {\n this.ngSelectComponent.focus();\n }\n\n // Set the id of the input so that it matches the label.\n const input = this.ngSelectComponent.element.querySelector('input');\n if (input) {\n input.id = this.id;\n }\n }\n\n ngOnDestroy():void {\n super.ngOnDestroy();\n\n this.dragula.destroy(this.dragAreaName);\n }\n\n select(item:DraggableOption|undefined) {\n if (!item) {\n return;\n }\n\n this.selectedOptions = [...this.selectedOptions, item];\n\n // Remove selection\n this.ngSelectComponent.clearModel();\n }\n\n remove(item:DraggableOption) {\n this.selectedOptions = this.selectedOptions.filter((selected) => selected.id !== item.id);\n }\n\n isRemovable(item:DraggableOption) {\n return !this.protected.find((protectedItem) => protectedItem.id === item.id);\n }\n\n get selectedOptions() {\n return this.selected;\n }\n\n set selectedOptions(val:DraggableOption[]) {\n this.selected = val;\n this.updateAvailableOptions();\n\n this.onChange.emit(this.selectedOptions);\n }\n\n get hiddenValue() {\n return this.selectedOptions.map((item) => item.id).join(' ');\n }\n\n get hiddenValues() {\n return this.selectedOptions.map((item) => item.id);\n }\n\n get isArrayOfValues() {\n return this.name.endsWith('[]');\n }\n\n opened() {\n repositionDropdownBugfix(this.ngSelectComponent);\n }\n\n searchFunction = (term:string, currentItem:QueryFilterResource):boolean => {\n return this.alternativeSearchService.searchFunction(term, currentItem);\n };\n\n get hasError() {\n return this.required && this.selectedOptions.length === 0;\n }\n\n get errorMessage() {\n return this.inputError;\n }\n\n private updateAvailableOptions() {\n this.availableOptions = this.options\n .filter((item) => !this.selectedOptions.find((selected) => selected.id === item.id));\n }\n}\n","interface NgSelectShim {\n appendTo?:string;\n dropdownPanel?:{\n _updateXPosition():void;\n _updateYPosition():void;\n }\n}\n\n// Force reposition as a workaround for BUG\n// https://github.com/ng-select/ng-select/issues/1259\nexport function repositionDropdownBugfix(component?:unknown) {\n const instance = component as NgSelectShim;\n if (instance?.appendTo && instance?.dropdownPanel) {\n setTimeout(() => {\n // eslint-disable-next-line no-underscore-dangle\n instance.dropdownPanel?._updateXPosition();\n // eslint-disable-next-line no-underscore-dangle\n instance.dropdownPanel?._updateYPosition();\n }, 25);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[op-autocompleter-header-tmp]',\n})\n// A Directive to be used on the option template of\n// ng-select (what will be shown in each row of drop down)\n// it is used when you want to inject a different template\nexport class OpAutocompleterHeaderTemplateDirective {\n\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[op-autocompleter-label-tmp]',\n})\n// A Directive to be used on the label template of\n// ng-select (what will be shown in the input box after selecting an item)\n// it is used when you want to inject a different template\nexport class OpAutocompleterLabelTemplateDirective {\n\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[op-autocompleter-option-tmp]',\n})\n// A Directive to be used on the option template of\n// ng-select (what will be shown in each row of drop down)\n// it is used when you want to inject a different template\nexport class OpAutocompleterOptionTemplateDirective {\n\n}\n","import { Injectable } from '@angular/core';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { map } from 'rxjs/operators';\nimport { ApiV3ResourceCollection } from 'core-app/core/apiv3/paths/apiv3-resource';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { ApiV3UserPaths } from 'core-app/core/apiv3/endpoints/users/apiv3-user-paths';\nimport { ApiV3WorkPackagePaths } from 'core-app/core/apiv3/endpoints/work_packages/api-v3-work-package-paths';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport {\n IAPIFilter,\n TOpAutocompleterResource,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/typings';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { ApiV3ProjectPaths } from 'core-app/core/apiv3/endpoints/projects/apiv3-project-paths';\nimport { addFiltersToPath } from 'core-app/core/apiv3/helpers/add-filters-to-path';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\n\n@Injectable()\n\nexport class OpAutocompleterService extends UntilDestroyedMixin {\n constructor(\n private apiV3Service:ApiV3Service,\n private halResourceService:HalResourceService,\n ) {\n super();\n }\n\n // A method for fetching data with different resource type and different filter\n public loadAvailable(matching:string, resource:TOpAutocompleterResource, filters?:IAPIFilter[], searchKey?:string):Observable {\n const finalFilters:ApiV3FilterBuilder = this.createFilters(filters ?? [], matching, searchKey);\n const params = this.createParams(resource);\n\n const filteredData = (this.apiV3Service[resource] as\n ApiV3ResourceCollection)\n .filtered(finalFilters, params).get()\n .pipe(map((collection) => collection.elements));\n return filteredData;\n }\n\n // A method for fetching the object for a provided value using the API\n public loadValue(id:string | string[], resource:TOpAutocompleterResource, multiple:boolean):Observable {\n if (multiple) {\n const calls = (id as string[])\n .map((singleId) => this.loadSingleValue(singleId, resource));\n return forkJoin(calls);\n }\n\n return this.loadSingleValue(id as string, resource);\n }\n\n protected loadSingleValue(id:string, resource:TOpAutocompleterResource) {\n return (this.apiV3Service[resource] as\n ApiV3ResourceCollection)\n .id(id)\n .get();\n }\n\n protected createParams(resource:TOpAutocompleterResource):{ [p:string]:string } {\n if (resource === 'work_packages') {\n return {\n sortBy: '[[\"updatedAt\",\"desc\"]]',\n };\n }\n\n return {};\n }\n\n // A method for building filters\n protected createFilters(filters:IAPIFilter[], matching:string, searchKey?:string) {\n const finalFilters = new ApiV3FilterBuilder();\n\n for (const filter of filters) {\n finalFilters.add(filter.name, filter.operator, filter.values);\n }\n if (matching) {\n finalFilters.add(searchKey ?? '', '**', [matching]);\n }\n return finalFilters;\n }\n\n // A method for returning data based on the resource type\n // If you need to fetch our default date sources like work_packages or users,\n // you should use the default method (loadAvailable), otherwise you should implement a function for\n // your desired resource\n public loadData(matching:string|null, resource:TOpAutocompleterResource, filters?:IAPIFilter[], searchKey?:string, allowEmpty:boolean = false) {\n // Exit early if the query string is empty as there is no typeahead\n if (!allowEmpty && (matching === null || matching.length === 0)) {\n return of([]);\n }\n\n switch (resource) {\n // in this case we can add more functions for fetching usual resources\n default: {\n return this.loadAvailable(matching || '', resource, filters, searchKey);\n }\n }\n }\n\n // A method for returning data based on a custom URL (i.e. in time logging we have a special endpoint for retrieving\n // work packages)\n public loadFromUrl(url:string, matching:string|null, resource:TOpAutocompleterResource, filters?:IAPIFilter[], searchKey?:string, allowEmpty:boolean = false) {\n // Exit early if the query string is empty as there is no typeahead\n if (!allowEmpty && (matching === null || matching.length === 0)) {\n return of([]);\n }\n\n const finalFilters:ApiV3FilterBuilder = this.createFilters(filters ?? [], matching || '', searchKey);\n const params = this.createParams(resource);\n\n const stringifiedBuiltOutUrl = addFiltersToPath(url, finalFilters, params).toString();\n\n return this.halResourceService\n .get(stringifiedBuiltOutUrl)\n .pipe(\n map((collection:CollectionResource) => collection.elements),\n );\n }\n}\n","/* We just forward the ng-select outputs without renaming */\n/* eslint-disable @angular-eslint/no-output-native */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DropdownPosition, NgSelectComponent } from '@ng-select/ng-select';\nimport { BehaviorSubject, merge, NEVER, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, switchMap, tap } from 'rxjs/operators';\nimport { AddTagFn, GroupValueFn } from '@ng-select/ng-select/lib/ng-select.component';\n\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport {\n Highlighting,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n OpAutocompleterFooterTemplateDirective,\n} from 'core-app/shared/components/autocompleter/autocompleter-footer-template/op-autocompleter-footer-template.directive';\n\nimport { OpAutocompleterService } from './services/op-autocompleter.service';\nimport { OpAutocompleterHeaderTemplateDirective } from './directives/op-autocompleter-header-template.directive';\nimport { OpAutocompleterLabelTemplateDirective } from './directives/op-autocompleter-label-template.directive';\nimport { OpAutocompleterOptionTemplateDirective } from './directives/op-autocompleter-option-template.directive';\nimport {\n repositionDropdownBugfix,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/autocompleter.helper';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ID } from '@datorama/akita';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport {\n IAPIFilter,\n IOPAutocompleterOption,\n TOpAutocompleterResource,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/typings';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\n\nexport interface IAutocompleteItem {\n id:ID;\n href:string|null;\n}\n\nexport interface IAutocompleterTemplateComponent {\n optionTemplate?:TemplateRef;\n headerTemplate?:TemplateRef;\n labelTemplate?:TemplateRef;\n footerTemplate?:TemplateRef;\n}\n\n@Component({\n selector: 'op-autocompleter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './op-autocompleter.component.html',\n styleUrls: ['./op-autocompleter.component.sass'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OpAutocompleterComponent),\n multi: true,\n },\n ],\n})\n// It is component that you can use whenever you need an autocompleter\n// it has all inputs and outputs of ng-select\n// in order to use it, you only need to pass the data type and its filters\n// you also can change the value of ng-select default options by changing @inputs and @outputs\nexport class OpAutocompleterComponent\n extends UntilDestroyedMixin\n implements OnInit, AfterViewInit, OnChanges, ControlValueAccessor {\n @HostBinding('class.op-autocompleter') className = true;\n\n @Input() public filters?:IAPIFilter[] = [];\n\n @Input() public resource:TOpAutocompleterResource;\n\n @Input() public model?:T|T[]|null;\n\n @Input() public searchKey?:string = '';\n\n @Input() public defaultData?:boolean = false;\n\n @Input() public focusDirectly?:boolean = true;\n\n @Input() public fetchDataDirectly?:boolean = false;\n\n @Input() public labelRequired?:boolean = true;\n\n @Input() public name?:string;\n\n @Input() public inputName?:string;\n\n @Input() public inputValue?:string|string[];\n\n @Input() public multipleAsSeparateInputs = true;\n\n @Input() public inputBindValue = 'id';\n\n @Input() public additionalClassProperty:string|null = null;\n\n @Input() public hiddenFieldAction = '';\n\n @Input() public required?:boolean = false;\n\n @Input() public disabled?:string;\n\n @Input() public searchable?:boolean = true;\n\n @Input() public clearable?:boolean = true;\n\n @Input() set addTag(val:boolean|AddTagFn) {\n this._addTag = val === true ? this.addNewObjectFn.bind(this) : val;\n this.cdRef.detectChanges();\n }\n\n get addTag():boolean|AddTagFn {\n return this._addTag;\n }\n\n private _addTag:boolean|AddTagFn = false;\n\n @Input() public id = '';\n\n @Input() public accesskey?:number;\n\n @Input() public items?:IOPAutocompleterOption[]|HalResource[];\n\n private items$ = new BehaviorSubject(null);\n\n @Input() public clearSearchOnAdd?:boolean = true;\n\n @Input() public classes?:string;\n\n @Input() public multiple = false;\n\n @Input() public openDirectly?:boolean = false;\n\n @Input() public bindLabel?:string;\n\n @Input() public bindValue?:string;\n\n @Input() public markFirst ? = true;\n\n @Input() public placeholder:string = this.I18n.t('js.autocompleter.placeholder');\n @Input() public notFoundText:string = this.I18n.t('js.autocompleter.notFoundText');\n @Input() public addTagText?:string;\n\n @Input() public loadingText:string = this.I18n.t('js.ajax.loading');\n\n @Input() public clearAllText?:string;\n\n @Input() public appearance?:string;\n\n @Input() public dropdownPosition?:DropdownPosition = 'auto';\n\n @Input() public appendTo?:string;\n\n @Input() public closeOnSelect?:boolean = true;\n\n @Input() public hideSelected?:boolean = false;\n\n @Input() public selectOnTab?:boolean = false;\n\n @Input() public openOnEnter?:boolean = true;\n\n @Input() public maxSelectedItems?:number;\n\n @Input() public groupBy?:string|(() => string);\n\n @Input() public groupValue?:GroupValueFn;\n\n @Input() public bufferAmount ? = 4;\n\n @Input() public virtualScroll = true;\n\n @Input() public selectableGroup?:boolean = false;\n\n @Input() public selectableGroupAsModel?:boolean = true;\n\n @Input() public searchFn:(term:string, item:unknown) => boolean;\n\n @Input() public trackByFn = this.defaultTrackByFunction();\n\n @Input() public compareWith = this.defaultCompareWithFunction();\n\n @Input() public clearOnBackspace?:boolean = true;\n\n @Input() public labelForId?:string;\n\n @Input() public inputAttrs?:{ [key:string]:string } = {};\n\n @Input() public tabIndex?:number;\n\n @Input() public readonly?:boolean = false;\n\n @Input() public searchWhileComposing?:boolean = true;\n\n @Input() public minTermLength ? = 0;\n\n @Input() public editableSearchTerm?:boolean = false;\n\n @Input() public keyDownFn ? = ():boolean => true;\n\n @Input() public typeahead:BehaviorSubject|null = null;\n\n @Input() public resetOnChange?:boolean = false;\n\n // a function for setting the options of ng-select\n @Input() public getOptionsFn:(searchTerm:string) => Observable;\n\n @Input() public url:string;\n\n @Input() public debounceTimeMs:number = 250;\n\n @Output() public open = new EventEmitter();\n\n @Output() public close = new EventEmitter();\n\n @Output() public cancel = new EventEmitter();\n\n @Output() public change = new EventEmitter();\n\n @Output() public focus = new EventEmitter();\n\n @Output() public blur = new EventEmitter();\n\n @Output() public search = new EventEmitter<{ term:string, items:unknown[] }>();\n\n @Output() public keydown = new EventEmitter();\n\n @Output() public clear = new EventEmitter();\n\n @Output() public add = new EventEmitter();\n\n @Output() public remove = new EventEmitter();\n\n @Output() public scroll = new EventEmitter<{ start:number; end:number }>();\n\n @Output() public scrollToEnd = new EventEmitter();\n\n public active:Set;\n\n public results$:Observable;\n\n public loading$ = new Subject();\n\n @ViewChild('ngSelectInstance') ngSelectInstance:NgSelectComponent;\n\n @ViewChild('syncedInput') syncedInput:ElementRef;\n\n @ContentChild(OpAutocompleterOptionTemplateDirective, { read: TemplateRef })\n projectedOptionTemplate:TemplateRef;\n\n optionTemplate:TemplateRef;\n\n @ContentChild(OpAutocompleterLabelTemplateDirective, { read: TemplateRef })\n projectedLabelTemplate:TemplateRef;\n\n labelTemplate:TemplateRef;\n\n @ContentChild(OpAutocompleterHeaderTemplateDirective, { read: TemplateRef })\n projectedHeaderTemplate:TemplateRef;\n\n headerTemplate:TemplateRef;\n\n @ContentChild(OpAutocompleterFooterTemplateDirective, { read: TemplateRef })\n projectedFooterTemplate:TemplateRef;\n\n footerTemplate:TemplateRef;\n\n readonly opAutocompleterService = new OpAutocompleterService(this.apiV3Service, this.halResourceService);\n\n constructor(\n readonly injector:Injector,\n readonly elementRef:ElementRef,\n readonly http:HttpClient,\n readonly apiV3Service:ApiV3Service,\n readonly cdRef:ChangeDetectorRef,\n readonly ngZone:NgZone,\n readonly vcRef:ViewContainerRef,\n readonly I18n:I18nService,\n readonly halResourceService:HalResourceService,\n readonly pathHelperService:PathHelperService,\n ) {\n super();\n }\n\n ngOnInit() {\n populateInputsFromDataset(this);\n\n if (!!this.getOptionsFn || this.defaultData) {\n this.typeahead = new BehaviorSubject('');\n }\n\n if (this.items) {\n this.items$.next(this.items as IOPAutocompleterOption[]);\n }\n }\n\n ngOnChanges(changes:SimpleChanges):void {\n if (changes.items) {\n this.items$.next(changes.items.currentValue as IOPAutocompleterOption[]);\n }\n }\n\n ngAfterViewInit():void {\n if (this.inputName && this.model) {\n this.syncHiddenField(this.mappedInputValue);\n }\n\n if (this.inputValue && this.resource && !this.model) {\n this\n .opAutocompleterService\n .loadValue(this.inputValue, this.resource, this.multiple)\n .subscribe((resource) => {\n this.model = resource as unknown as T;\n this.syncHiddenField(this.mappedInputValue);\n this.cdRef.detectChanges();\n });\n }\n\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.results$ = merge(\n this.items$,\n this.autocompleteInputStream(),\n );\n\n if (this.fetchDataDirectly) {\n this.typeahead?.next('');\n }\n\n if (this.openDirectly) {\n this.ngSelectInstance.open();\n this.ngSelectInstance.focus();\n } else if (this.focusDirectly) {\n this.ngSelectInstance.focus();\n }\n }, 25);\n });\n }\n\n public get mappedInputValue():string|string[] {\n if (!this.model) {\n return '';\n }\n\n if (Array.isArray(this.model)) {\n return this.model.map((el) => el[this.inputBindValue as 'id'] as string);\n }\n\n return this.model[this.inputBindValue as 'id'] as string;\n }\n\n public repositionDropdown() {\n repositionDropdownBugfix(this.ngSelectInstance);\n }\n\n public opened():void { // eslint-disable-line no-unused-vars\n this.repositionDropdown();\n this.open.emit();\n }\n\n public getOptionsItems(searchKey:string):Observable {\n return of((this.items as IOPAutocompleterOption[])?.filter((element) => element.name.includes(searchKey)));\n }\n\n public closeSelect():void {\n this.ngSelectInstance?.close();\n }\n\n public openSelect():void {\n this.ngSelectInstance?.open();\n }\n\n public focusSelect():void {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.ngSelectInstance.focus();\n }, 25);\n });\n }\n\n public closed():void {\n this.close.emit();\n }\n\n public changed(val:T|T[]|null):void {\n this.writeValue(val);\n this.onTouched(val);\n this.onChange(val);\n this.syncHiddenField(this.mappedInputValue);\n this.syncedInput?.nativeElement.dispatchEvent(new Event('change'));\n this.change.emit(val);\n\n if (this.resetOnChange) {\n this.ngSelectInstance.clearModel();\n }\n\n this.cdRef.detectChanges();\n }\n\n public searched(val:{ term:string, items:unknown[] }):void {\n this.search.emit(val);\n }\n\n public blured(val:unknown):void {\n this.blur.emit(val);\n }\n\n public focused(val:unknown):void {\n this.focus.emit(val);\n }\n\n public cleared(val:unknown):void {\n this.clear.emit(val);\n }\n\n public keydowned(val:unknown):void {\n this.keydown.emit(val);\n }\n\n public added(val:unknown):void {\n this.add.emit(val);\n }\n\n public canceled(val:unknown):void {\n this.cancel.emit(val);\n }\n\n public removed(val:unknown):void {\n this.remove.emit(val);\n }\n\n public scrolled(val:{ start:number; end:number }):void {\n this.scroll.emit(val);\n }\n\n public scrolledToEnd(val:unknown):void {\n this.scrollToEnd.emit(val);\n }\n\n public highlighting(property:string, id:string):string {\n return Highlighting.inlineClass(property, id);\n }\n\n private autocompleteInputStream():Observable {\n if (!this.typeahead) {\n return NEVER;\n }\n\n return this.typeahead.pipe(\n filter(() => !!(this.defaultData || this.url || this.getOptionsFn)),\n distinctUntilChanged(),\n tap(() => this.loading$.next(true)),\n debounceTime(this.debounceTimeForCurrentEnvironment),\n switchMap((queryString:string) => {\n if (this.getOptionsFn) {\n return this.getOptionsFn(queryString);\n }\n\n if (this.url) {\n return this.opAutocompleterService.loadFromUrl(this.url, queryString, this.resource, this.filters, this.searchKey);\n }\n\n if (this.defaultData) {\n return this.opAutocompleterService.loadData(queryString, this.resource, this.filters, this.searchKey);\n }\n\n return NEVER;\n }),\n tap({\n next: () => this.loading$.next(false),\n error: () => this.loading$.next(false),\n }),\n );\n }\n\n private get debounceTimeForCurrentEnvironment():number {\n return (window.OpenProject.environment === 'test') ? 0 : this.debounceTimeMs;\n }\n\n writeValue(value:T|T[]|null):void {\n this.model = value;\n }\n\n onChange = (_:T|T[]|null):void => {\n };\n\n onTouched = (_:T|T[]|null):void => {\n };\n\n registerOnChange(fn:(_:T|T[]|null) => void):void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn:(_:T|T[]|null) => void):void {\n this.onTouched = fn;\n }\n\n /**\n * Instantiate the given template component and apply any given TemplateRef to this component\n * so they can be passed to ng-select.\n *\n * @param component A templating component defining any combination of the header, option, label, or footer templates.\n * @param inputs Initial inputs to the templating component\n * @protected\n */\n protected applyTemplates(component:Type, inputs:{ [key:string]:unknown } = {}) {\n const componentRef = this.vcRef.createComponent(component, { injector: this.templateInjector });\n Object.keys(inputs).forEach((key) => {\n const value = inputs[key];\n componentRef.setInput(key, value);\n });\n\n componentRef.changeDetectorRef.detectChanges();\n\n ['optionTemplate', 'headerTemplate', 'labelTemplate', 'footerTemplate'].forEach((name:keyof IAutocompleterTemplateComponent) => {\n const template = componentRef.instance[name];\n if (template) {\n this[name] = template;\n }\n });\n }\n\n protected get templateInjector() {\n return Injector.create(\n {\n providers: [{ provide: OpAutocompleterComponent, useValue: this }],\n parent: this.injector,\n },\n );\n }\n\n protected syncHiddenField(mappedInputValue:string|string[]):void {\n const input = this.syncedInput?.nativeElement;\n if (!input) {\n return;\n }\n\n const newValue = Array.isArray(mappedInputValue) ? mappedInputValue.join(',') : mappedInputValue;\n // Don't fire a change event if the value is the same\n if (input.value === newValue) {\n return;\n }\n\n input.value = newValue;\n }\n\n public addNewObjectFn(searchTerm:string):unknown {\n return this.bindLabel ? { [this.bindLabel]: searchTerm } : searchTerm;\n }\n\n protected defaultTrackByFunction():((x:unknown) => unknown)|null {\n return null;\n }\n\n protected defaultCompareWithFunction():null|((a:unknown, b:unknown) => boolean) {\n return (a, b) => {\n if (this.bindValue && !_.isObject(b)) {\n return (a as Record)[this.bindValue] === b;\n }\n\n return a === b;\n };\n }\n\n /**\n * Attaches hover card event listeners by setting this attribute for users.\n */\n protected getHoverCardTriggerTarget(item:HalResource) {\n return item instanceof UserResource ? 'trigger' : '';\n }\n\n /**\n * Enables hover card data loading by setting this attribute for users.\n */\n protected getHoverCardUrl(item:HalResource) {\n if (item instanceof UserResource && item.id) {\n return this.pathHelperService.userHoverCardPath(item.id);\n }\n\n return '';\n }\n}\n","import { Injector, NgModule } from '@angular/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DynamicModule } from 'ng-dynamic-component';\nimport { CommonModule } from '@angular/common';\nimport { DragulaModule } from 'ng2-dragula';\n\nimport { InviteUserButtonModule } from 'core-app/features/invite-user-modal/button/invite-user-button.module';\nimport { OpenprojectPrincipalRenderingModule } from 'core-app/shared/components/principal/principal-rendering.module';\n\nimport {\n DraggableAutocompleteComponent,\n} from 'core-app/shared/components/autocompleter/draggable-autocomplete/draggable-autocomplete.component';\nimport { ColorsAutocompleterComponent } from 'core-app/shared/components/colors/colors-autocompleter.component';\nimport {\n WorkPackageAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/work-package-autocompleter/wp-autocompleter.component';\nimport {\n VersionAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/version-autocompleter/version-autocompleter.component';\nimport {\n UserAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/user-autocompleter/user-autocompleter.component';\nimport {\n ProjectAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocompleter.component';\nimport {\n OpAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport {\n OpAutocompleterOptionTemplateDirective,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-option-template.directive';\nimport {\n OpAutocompleterLabelTemplateDirective,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-label-template.directive';\nimport {\n OpAutocompleterHeaderTemplateDirective,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-header-template.directive';\nimport {\n CreateAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/create-autocompleter/create-autocompleter.component';\nimport {\n OpAutocompleterFooterTemplateDirective,\n} from 'core-app/shared/components/autocompleter/autocompleter-footer-template/op-autocompleter-footer-template.directive';\nimport { OpSearchHighlightDirective } from 'core-app/shared/directives/search-highlight.directive';\nimport {\n UserAutocompleterTemplateComponent,\n} from 'core-app/shared/components/autocompleter/user-autocompleter/user-autocompleter-template.component';\nimport {\n ProjectAutocompleterTemplateComponent,\n} from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocompleter-template.component';\nimport {\n TimeEntriesWorkPackageAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/time-entries-work-package-autocompleter/time-entries-work-package-autocompleter.component';\n\nexport const OPENPROJECT_AUTOCOMPLETE_COMPONENTS = [\n CreateAutocompleterComponent,\n VersionAutocompleterComponent,\n WorkPackageAutocompleterComponent,\n TimeEntriesWorkPackageAutocompleterComponent,\n DraggableAutocompleteComponent,\n UserAutocompleterComponent,\n UserAutocompleterTemplateComponent,\n ProjectAutocompleterComponent,\n ProjectAutocompleterTemplateComponent,\n ColorsAutocompleterComponent,\n OpAutocompleterComponent,\n OpAutocompleterOptionTemplateDirective,\n OpAutocompleterLabelTemplateDirective,\n OpAutocompleterHeaderTemplateDirective,\n OpAutocompleterFooterTemplateDirective,\n OpSearchHighlightDirective,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n NgSelectModule,\n DragulaModule,\n FormsModule,\n ReactiveFormsModule,\n\n DynamicModule,\n OpenprojectPrincipalRenderingModule,\n InviteUserButtonModule,\n ],\n exports: OPENPROJECT_AUTOCOMPLETE_COMPONENTS,\n declarations: OPENPROJECT_AUTOCOMPLETE_COMPONENTS,\n})\nexport class OpenprojectAutocompleterModule {\n constructor(injector:Injector) {\n }\n}\n","\n ×\n {{ item.name }}\n\n\n\n {{ item.name }}\n {{ item.disabledReason }}\n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { IAutocompleterTemplateComponent } from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\n\n@Component({\n templateUrl: './project-autocompleter-template.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProjectAutocompleterTemplateComponent implements IAutocompleterTemplateComponent {\n @ViewChild('optionTemplate') optionTemplate:TemplateRef;\n @ViewChild('labelTemplate') labelTemplate?:TemplateRef;\n}\n","import { IProjectAutocompleteItem, IProjectAutocompleteItemTree } from './project-autocomplete-item';\n\nexport const flattenProjectTree = (\n projectTreeItems:IProjectAutocompleteItemTree[],\n depth = 0,\n):IProjectAutocompleteItem[] => projectTreeItems.reduce(\n (fullList, projectTreeItem) => [\n ...fullList,\n {\n ...projectTreeItem,\n numberOfAncestors: depth,\n // The actual list of ancestors does not matter anymore from this point forward,\n // but to keep typing straightforward for consumers of this component that use mapResultsFn,\n // it is marked as required in the interface.\n ancestors: [],\n },\n ...flattenProjectTree(projectTreeItem.children, depth + 1),\n ],\n [],\n);\n","import { IHalResourceLink } from 'core-app/core/state/hal-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport {\n IProjectAutocompleteItem,\n IProjectAutocompleteItemTree,\n} from './project-autocomplete-item';\n\nconst insertProjectWithAncestors = (\n tree:IProjectAutocompleteItemTree[],\n project:IProjectAutocompleteItem,\n ancestors:IHalResourceLink[],\n):IProjectAutocompleteItemTree[] => {\n // The project has no ancestors, thus it can become a part of the tree right away.\n if (!ancestors.length) {\n return [\n ...tree,\n {\n ...project,\n children: [],\n },\n ];\n }\n\n const ancestorToFind = ancestors[0];\n const ancestorInTree = tree.find((leaf) => leaf.href === ancestorToFind.href);\n\n if (ancestorInTree) {\n return tree.map((item) => (item === ancestorInTree\n ? { ...item, children: insertProjectWithAncestors(item.children, project, ancestors.slice(1)) }\n : { ...item }));\n }\n\n return [\n ...tree,\n {\n id: idFromLink(ancestorToFind.href),\n name: ancestorToFind.title,\n href: ancestorToFind.href,\n disabled: true,\n children: insertProjectWithAncestors([], project, ancestors.slice(1)),\n },\n ];\n};\n\nexport const buildTree = (\n projects:IProjectAutocompleteItem[],\n):IProjectAutocompleteItemTree[] => projects.reduce(\n // The ancestors are listed from direct parent up to root. We'll build a tree structure for these ancestors here.\n // Some might already exist from other children that added them to the tree, or because they were part of the result\n // list themselves. However, if they're not available yet we'll need to generate them.\n (tree, project) => insertProjectWithAncestors(tree, project, project.ancestors),\n [],\n);\n","import { IProjectAutocompleteItemTree } from './project-autocomplete-item';\n\n// Recursively sort project children and their children by name\nexport const recursiveSort = (projects:IProjectAutocompleteItemTree[]):IProjectAutocompleteItemTree[] => projects\n .map((project) => ({\n ...project,\n children: recursiveSort(project.children),\n }))\n .sort((a, b) => a.name.localeCompare(b.name));\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { merge, Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { ID } from '@datorama/akita';\nimport { IProjectAutocompleteItem } from './project-autocomplete-item';\nimport { flattenProjectTree } from './flatten-project-tree';\nimport { getPaginatedResults } from 'core-app/core/apiv3/helpers/get-paginated-results';\nimport { IProject } from 'core-app/core/state/projects/project.model';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { buildTree } from 'core-app/shared/components/autocompleter/project-autocompleter/insert-in-list';\nimport { recursiveSort } from 'core-app/shared/components/autocompleter/project-autocompleter/recursive-sort';\nimport {\n OpAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport {\n ProjectAutocompleterTemplateComponent,\n} from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocompleter-template.component';\nimport { addFiltersToPath } from 'core-app/core/apiv3/helpers/add-filters-to-path';\nimport { TOpAutocompleterResource } from 'core-app/shared/components/autocompleter/op-autocompleter/typings';\n\nexport const projectsAutocompleterSelector = 'op-project-autocompleter';\n\nexport interface IProjectAutocompleterData {\n id:ID;\n href:string;\n name:string;\n}\n\n@Component({\n templateUrl: '../op-autocompleter/op-autocompleter.component.html',\n styleUrls: ['./project-autocompleter.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: projectsAutocompleterSelector,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProjectAutocompleterComponent),\n multi: true,\n }],\n})\nexport class ProjectAutocompleterComponent extends OpAutocompleterComponent implements OnInit, ControlValueAccessor {\n @HostBinding('class.op-project-autocompleter') public className = true;\n\n @HostBinding('class.op-project-autocompleter_inline')\n public get inlineClass():boolean {\n return this.isInlineContext;\n }\n\n // Load all projects as default\n @Input() public url:string = this.apiV3Service.projects.path;\n\n @Input() public isInlineContext = false;\n\n @Input() public disabledProjects:{ [key:string]:string|boolean } = {};\n\n // This function allows mapping of the results before they are fed to the tree\n // structuring and destructuring algorithms used internally the this component\n // to show the tree structure. By default it does not do much, but it is\n // overwritable so additional filtering or transforming can be done on the\n // API result set.\n @Input()\n public mapResultsFn:(projects:IProjectAutocompleteItem[]) => IProjectAutocompleteItem[] = (projects) => projects;\n\n /* eslint-disable-next-line @angular-eslint/no-output-rename */\n @Output('valueChange') valueChange = new EventEmitter();\n\n projectTracker = (item:IProjectAutocompleteItem):ID => item.href || item.id;\n\n getOptionsFn = this.getAvailableProjects.bind(this);\n\n dataLoaded = false;\n\n resource:TOpAutocompleterResource = 'projects';\n\n projects:IProjectAutocompleteItem[];\n\n ngOnInit() {\n super.ngOnInit();\n\n this.applyTemplates(ProjectAutocompleterTemplateComponent, {});\n }\n\n private matchingItems(elements:IProjectAutocompleteItem[], matching:string):Observable {\n let filtered:IProjectAutocompleteItem[];\n\n if (matching === '' || !matching) {\n filtered = elements;\n } else {\n const lowered = matching.toLowerCase();\n filtered = elements.filter((el) => el.name.toLowerCase().includes(lowered));\n }\n\n return of(filtered);\n }\n\n private disableSelectedItems(\n projects:IProjectAutocompleteItem[],\n value:IProjectAutocompleterData|IProjectAutocompleterData[]|null|undefined,\n ) {\n if (!this.multiple) {\n return projects;\n }\n\n const normalizedValue = (value || []);\n const arrayedValue = (Array.isArray(normalizedValue) ? normalizedValue : [normalizedValue]).map((p) => p.href || p.id);\n return projects.map((project) => {\n const isSelected = !!arrayedValue.find((selected) => selected === this.projectTracker(project));\n const id = project.id.toString();\n const disabled = isSelected || project.disabled || !!this.disabledProjects[id];\n return {\n ...project,\n disabled,\n disabledReason: (typeof this.disabledProjects[id] === 'string') ? this.disabledProjects[id] as string : '',\n };\n });\n }\n\n public getAvailableProjects(searchTerm:string):Observable {\n if (this.dataLoaded) {\n return this.matchingItems(this.projects, searchTerm).pipe(\n map(this.mapResultsFn),\n map((projects) => projects.sort((a, b) => a.ancestors.length - b.ancestors.length)),\n map((projects) => buildTree(projects)),\n map((projects) => recursiveSort(projects)),\n map((projectTreeItems) => flattenProjectTree(projectTreeItems)),\n switchMap(\n (projects) => merge(of([]), this.valueChange).pipe(\n map(() => this.disableSelectedItems(projects, this.model)),\n ),\n ),\n );\n }\n return getPaginatedResults(\n (params) => {\n const filteredURL = this.buildFilteredURL(searchTerm);\n\n filteredURL.searchParams.set('pageSize', params.pageSize?.toString() || '-1');\n filteredURL.searchParams.set('offset', params.offset?.toString() || '1');\n filteredURL.searchParams.set('select', 'elements/id,elements/name,elements/identifier,elements/self,elements/ancestors,total,count,pageSize');\n\n return this\n .http\n .get>(filteredURL.toString());\n },\n )\n .pipe(\n map((projects) => projects.map((project) => {\n const id = project.id.toString();\n const disabled = !!this.disabledProjects[id];\n\n return {\n id: project.id,\n href: project._links.self.href,\n name: project.name,\n disabled,\n disabledReason: (typeof this.disabledProjects[id] === 'string') ? this.disabledProjects[id] as string : '',\n ancestors: project._links.ancestors,\n children: [],\n };\n })),\n map(this.mapResultsFn),\n map((projects) => {\n this.dataLoaded = true;\n this.projects = projects;\n return projects.sort((a, b) => a.ancestors.length - b.ancestors.length);\n }),\n map((projects) => buildTree(projects)),\n map((projects) => recursiveSort(projects)),\n map((projectTreeItems) => flattenProjectTree(projectTreeItems)),\n switchMap(\n (projects) => merge(of([]), this.valueChange).pipe(\n map(() => this.disableSelectedItems(projects, this.model)),\n ),\n ),\n );\n }\n\n // Todo: Reduce duplication with method from user-autocompleter\n protected buildFilteredURL(searchTerm?:string):URL {\n const filterObject = _.keyBy(this.filters, 'name');\n const searchFilters = ApiV3FilterBuilder.fromFilterObject(filterObject);\n\n if (searchTerm?.length) {\n searchFilters.add('typeahead', '**', [searchTerm]);\n }\n\n return addFiltersToPath(this.url, searchFilters);\n }\n}\n","\n
\n
\n
    \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, Injector, Input, TemplateRef, ViewChild } from '@angular/core';\nimport {\n IAutocompleterTemplateComponent,\n OpAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport {\n TimeEntriesWorkPackageAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/time-entries-work-package-autocompleter/time-entries-work-package-autocompleter.component';\n\n@Component({\n templateUrl: './time-entries-work-package-autocompleter-template.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimeEntriesWorkPackageAutocompleterTemplateComponent implements IAutocompleterTemplateComponent {\n @Input() public mode:string|undefined;\n @Input() public isOpenedInModal:boolean = false;\n @Input() public hoverCards:boolean = true;\n\n @ViewChild('headerTemplate') headerTemplate:TemplateRef;\n\n autocompleter:TimeEntriesWorkPackageAutocompleterComponent = this.injector.get(OpAutocompleterComponent) as TimeEntriesWorkPackageAutocompleterComponent;\n\n constructor(\n readonly injector:Injector,\n ) {\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, forwardRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OpInviteUserModalService } from 'core-app/features/invite-user-modal/invite-user-modal.service';\nimport {\n OpAutocompleterComponent,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { map, switchMap } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { TimeEntryResource } from 'core-app/features/hal/resources/time-entry-resource';\nimport { IAPIFilter } from 'core-app/shared/components/autocompleter/op-autocompleter/typings';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { HalResourceSortingService } from 'core-app/features/hal/services/hal-resource-sorting.service';\nimport {\n TimeEntriesWorkPackageAutocompleterTemplateComponent,\n} from 'core-app/shared/components/autocompleter/time-entries-work-package-autocompleter/time-entries-work-package-autocompleter-template.component';\n\nexport type TimeEntryWorkPackageAutocompleterMode = 'all'|'recent';\n\nconst RECENT_TIME_ENTRIES_MAGIC_NUMBER = 30;\n\n@Component({\n templateUrl: '../op-autocompleter/op-autocompleter.component.html',\n selector: 'op-time-entries-work-package-autocompleter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeEntriesWorkPackageAutocompleterComponent),\n multi: true,\n },\n // Provide a new version of the modal invite service,\n // as otherwise the close event will be shared across all instances\n OpInviteUserModalService,\n ],\n})\nexport class TimeEntriesWorkPackageAutocompleterComponent extends OpAutocompleterComponent implements OnInit, ControlValueAccessor {\n public mode:TimeEntryWorkPackageAutocompleterMode = 'all';\n\n @InjectField() halSorting:HalResourceSortingService;\n\n labelAll = this.I18n.t('js.label_all');\n labelRecent = this.I18n.t('js.label_recent');\n\n private recentWorkPackageIds:string[];\n\n getOptionsFn = this.loadAllowedValues.bind(this);\n\n ngOnInit():void {\n super.ngOnInit();\n this.applyTemplates(TimeEntriesWorkPackageAutocompleterTemplateComponent);\n }\n\n changeMode(newMode:TimeEntryWorkPackageAutocompleterMode) {\n this.mode = newMode;\n\n if (this.typeahead) {\n const lastValue = this.typeahead?.value;\n this.typeahead?.next(' '); // Reset value\n this.typeahead?.next(lastValue);\n }\n\n this.cdRef.detectChanges();\n }\n\n // We fetch the last RECENT_TIME_ENTRIES_MAGIC_NUMBER time entries by that user. We then use it to fetch the work packages\n // associated with the time entries so that we have the most recent work packages the user logged time on.\n // As a worst case, the user logged RECENT_TIME_ENTRIES_MAGIC_NUMBER times on one work package so we can not guarantee to actually have\n // a fixed number returned.\n protected loadAllowedValues(query:string):Observable {\n if (!this.recentWorkPackageIds) {\n return this\n .apiV3Service\n .time_entries\n .list({\n filters: [['user_id', '=', ['me']]],\n sortBy: [['updated_at', 'desc']],\n pageSize: RECENT_TIME_ENTRIES_MAGIC_NUMBER,\n })\n .pipe(\n switchMap((collection:CollectionResource) => {\n this.recentWorkPackageIds = collection\n .elements\n .filter((timeEntry) => timeEntry.workPackage?.href)\n .map((timeEntry) => idFromLink(timeEntry.workPackage.href))\n .filter((v, i, a) => a.indexOf(v) === i);\n\n return this.loadWorkPackages(query);\n }),\n );\n }\n\n return this.loadWorkPackages(query);\n }\n\n protected get modeSpecificFilters():IAPIFilter[] {\n const base = this.filters ?? [];\n const isRecent = this.mode === 'recent';\n if (isRecent && this.recentWorkPackageIds.length > 0) {\n return [...base, { name: 'id', operator: '=', values: this.recentWorkPackageIds } as IAPIFilter];\n }\n\n return base;\n }\n\n protected loadWorkPackages(query:string):Observable {\n return this.opAutocompleterService\n .loadFromUrl(\n this.url,\n query,\n this.resource,\n this.modeSpecificFilters,\n this.searchKey,\n (this.mode === 'recent'), // allow empty typeahead for recent page, as this will list most recent WPs\n )\n .pipe(map((workPackages) => this.sortValues(workPackages)));\n }\n\n protected sortValues(availableValues:HalResource[]) {\n if (this.mode === 'recent') {\n return this.sortValuesByRecentIds(availableValues);\n }\n return this.halSorting.sort(availableValues);\n }\n\n protected sortValuesByRecentIds(availableValues:HalResource[]) {\n return availableValues\n .sort((a, b) => this.recentWorkPackageIds.indexOf(a.id!) - this.recentWorkPackageIds.indexOf(b.id!));\n }\n}\n","\n \n \n {{ item.name }}\n \n {{ item.email }}\n\n\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport {\n IAutocompleterTemplateComponent,\n} from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { PrincipalLike } from 'core-app/shared/components/principal/principal-types';\nimport { hrefFromPrincipal, typeFromHref } from 'core-app/shared/components/principal/principal-helper';\n\n@Component({\n templateUrl: './user-autocompleter-template.component.html',\n styleUrls: ['./user-autocompleter-template.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UserAutocompleterTemplateComponent implements IAutocompleterTemplateComponent {\n @Input() public inviteUserToProject:string|undefined;\n @Input() public isOpenedInModal:boolean = false;\n @Input() public hoverCards:boolean = true;\n\n constructor(private readonly pathHelperService:PathHelperService) {}\n\n @ViewChild('optionTemplate') optionTemplate:TemplateRef;\n @ViewChild('footerTemplate') footerTemplate?:TemplateRef;\n\n public getHoverCardUrl(principal:PrincipalLike) {\n if (!this.hoverCards || !principal.id) { return ''; }\n\n const type = typeFromHref(hrefFromPrincipal(principal));\n if (!type || type !== 'user') {\n return '';\n }\n\n return this.pathHelperService.userHoverCardPath(principal.id);\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { ID } from '@datorama/akita';\nimport { OpInviteUserModalService } from 'core-app/features/invite-user-modal/invite-user-modal.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { IHALCollection } from 'core-app/core/apiv3/types/hal-collection.type';\nimport { OpAutocompleterComponent } from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { addFiltersToPath } from 'core-app/core/apiv3/helpers/add-filters-to-path';\nimport { UserAutocompleterTemplateComponent } from 'core-app/shared/components/autocompleter/user-autocompleter/user-autocompleter-template.component';\nimport { IUser } from 'core-app/core/state/principals/user.model';\nimport { compareByAttribute } from 'core-app/shared/helpers/angular/tracking-functions';\n\nexport const usersAutocompleterSelector = 'op-user-autocompleter';\n\nexport interface IUserAutocompleteItem {\n id:ID;\n name:string;\n email?:string|null;\n href:string|null;\n avatar?:string|null;\n}\n\n@Component({\n templateUrl: '../op-autocompleter/op-autocompleter.component.html',\n selector: usersAutocompleterSelector,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UserAutocompleterComponent),\n multi: true,\n },\n // Provide a new version of the modal invite service,\n // as otherwise the close event will be shared across all instances\n OpInviteUserModalService,\n ],\n styleUrls: ['./user-autocompleter.component.sass'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class UserAutocompleterComponent extends OpAutocompleterComponent implements OnInit, ControlValueAccessor {\n @Input() public inviteUserToProject:string|undefined;\n\n @Input() public isOpenedInModal:boolean = false;\n @Input() public hoverCards:boolean = true;\n\n @Input() public url:string = this.apiV3Service.users.path;\n\n @Output() public userInvited = new EventEmitter();\n\n @InjectField(OpInviteUserModalService) opInviteUserModalService:OpInviteUserModalService;\n\n getOptionsFn = this.getAvailableUsers.bind(this);\n\n ngOnInit():void {\n super.ngOnInit();\n\n this.applyTemplates(UserAutocompleterTemplateComponent, {\n inviteUserToProject: this.inviteUserToProject,\n isOpenedInModal: this.isOpenedInModal,\n hoverCards: this.hoverCards,\n });\n\n this\n .opInviteUserModalService\n .close\n .pipe(\n this.untilDestroyed(),\n filter((user) => !!user),\n )\n .subscribe((user:HalResource) => {\n this.userInvited.emit(user);\n });\n }\n\n public getAvailableUsers(searchTerm?:string):Observable {\n const filteredURL = this.buildFilteredURL(searchTerm);\n\n filteredURL.searchParams.set('pageSize', '-1');\n filteredURL.searchParams.set('select', 'elements/id,elements/name,elements/email,elements/self,total,count,pageSize');\n\n return this\n .http\n .get>(filteredURL.toString())\n .pipe(\n map((res) => _.uniqBy(res._embedded.elements, (el) => el._links.self?.href || el.id)),\n map((users) => {\n return users.map((user) => {\n return { id: user.id, name: user.name, href: user._links.self?.href, email: user.email };\n });\n }),\n );\n }\n\n protected buildFilteredURL(searchTerm?:string):URL {\n const filterObject = _.keyBy(this.filters, 'name');\n const searchFilters = ApiV3FilterBuilder.fromFilterObject(filterObject);\n\n if (searchTerm?.length) {\n searchFilters.add(this.searchKey || 'name', '~', [searchTerm]);\n }\n\n return addFiltersToPath(this.url, searchFilters);\n }\n\n public addNewObjectFn(searchString:string):IUserAutocompleteItem {\n return {\n id: searchString,\n name: searchString,\n href: null,\n avatar: null,\n };\n }\n\n protected defaultTrackByFunction():(item:{ href:unknown, name:unknown }) => unknown {\n return (item) => item.href || item.name;\n }\n\n protected defaultCompareWithFunction():(a:unknown, b:unknown) => boolean {\n return compareByAttribute('href', 'name');\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Output,\n} from '@angular/core';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { CreateAutocompleterComponent } from 'core-app/shared/components/autocompleter/create-autocompleter/create-autocompleter.component';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { VersionResource } from 'core-app/features/hal/resources/version-resource';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n templateUrl: '../create-autocompleter/create-autocompleter.component.html',\n selector: 'version-autocompleter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VersionAutocompleterComponent extends CreateAutocompleterComponent implements AfterViewInit {\n @Output() public onCreate = new EventEmitter();\n\n groupByFn = (item:HalResource):string|null => {\n if (!item.id) return null; // Do not group non version options\n const project = item.definingProject as HalResource | undefined;\n return project?.name || this.I18n.t('js.project.not_available');\n };\n\n constructor(\n readonly injector:Injector,\n readonly I18n:I18nService,\n readonly currentProject:CurrentProjectService,\n readonly cdRef:ChangeDetectorRef,\n readonly pathHelper:PathHelperService,\n readonly apiV3Service:ApiV3Service,\n readonly halNotification:HalResourceNotificationService,\n ) {\n super(injector);\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n\n void this.canCreateNewActionElements().then((val) => {\n if (val) {\n this.createAllowed = (input:string) => this.createNewVersion(input);\n this.cdRef.detectChanges();\n }\n });\n }\n\n /**\n * Checks for correct permissions\n * (whether the current project is in the list of allowed values in the version create form)\n * @returns {Promise}\n */\n public canCreateNewActionElements():Promise {\n if (!this.currentProject.id) {\n return Promise.resolve(false);\n }\n\n return firstValueFrom(\n this\n .apiV3Service\n .versions\n .available_projects\n .exists(this.currentProject.id),\n )\n .catch(() => false);\n }\n\n protected createNewVersion(name:string) {\n this\n .apiV3Service\n .versions\n .post(this.getVersionPayload(name))\n .subscribe(\n (version) => this.onCreate.emit(version),\n (error) => {\n this.closeSelect();\n this.halNotification.handleRawError(error);\n },\n );\n }\n\n private getVersionPayload(name:string) {\n const payload:any = {};\n payload.name = name;\n payload._links = {\n definingProject: {\n href: this.apiV3Service.projects.id(this.currentProject.id!).path,\n },\n };\n\n return payload;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { AfterViewInit, Component } from '@angular/core';\nimport { CreateAutocompleterComponent } from 'core-app/shared/components/autocompleter/create-autocompleter/create-autocompleter.component';\n\n@Component({\n templateUrl: '../create-autocompleter/create-autocompleter.component.html',\n selector: 'wp-autocompleter',\n})\nexport class WorkPackageAutocompleterComponent extends CreateAutocompleterComponent implements AfterViewInit {\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'opce-opce-collapsible-section-augment',\n templateUrl: './collapsible-section.html',\n})\nexport class CollapsibleSectionComponent implements OnInit {\n public expanded = false;\n\n public sectionTitle:string;\n\n @ViewChild('sectionBody', { static: true }) public sectionBody:ElementRef;\n\n constructor(public elementRef:ElementRef) {\n }\n\n ngOnInit():void {\n const element:HTMLElement = this.elementRef.nativeElement;\n\n this.sectionTitle = element.getAttribute('section-title')!;\n if (element.getAttribute('initially-expanded') === 'true') {\n this.expanded = true;\n }\n\n const target:HTMLElement = element.nextElementSibling as HTMLElement;\n this.sectionBody.nativeElement.appendChild(target);\n target.removeAttribute('hidden');\n }\n\n public toggle(event:Event) {\n this.expanded = !this.expanded;\n event.preventDefault();\n }\n}\n","
\n\n \n \n \n \n
\n \n
\n
\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, ElementRef, OnInit } from '@angular/core';\nimport {\n Highlighting,\n} from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\ninterface ColorItem {\n name:string;\n value:string;\n selected?:boolean;\n}\n\n@Component({\n template: `\n \n \n {{ item.name }}\n \n \n {{ item.name }}\n \n \n `,\n selector: 'opce-colors-autocompleter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorsAutocompleterComponent implements OnInit {\n public options:ColorItem[];\n\n public selectedOption?:ColorItem|string;\n\n private highlightTextInline = false;\n\n public classes:string;\n\n private updateInputField:HTMLInputElement|undefined;\n\n private selectedColorId:string;\n\n constructor(\n protected elementRef:ElementRef,\n protected readonly I18n:I18nService,\n ) {\n }\n\n ngOnInit() {\n this.setColorOptions();\n\n this.updateInputField = document.getElementsByName(this.elementRef.nativeElement.dataset.updateInput as string)[0] as HTMLInputElement|undefined;\n this.highlightTextInline = JSON.parse(this.elementRef.nativeElement.dataset.highlightTextInline || 'false') as boolean;\n this.classes = this.elementRef.nativeElement.dataset.classes || '';\n }\n\n public onModelChange(color:{ name:string, value:string }) {\n if (color && this.updateInputField) {\n this.updateInputField.value = color.value;\n }\n }\n\n private setColorOptions() {\n this.options = JSON.parse(this.elementRef.nativeElement.dataset.colors as string) as {\n name:string,\n value:string\n }[];\n this.options.unshift({ name: this.I18n.t('js.label_no_color'), value: '' });\n\n this.selectedOption = this.options.find((item) => item.selected === true);\n\n if (this.selectedOption) {\n this.selectedOption = this.selectedOption.value;\n } else {\n // Differentiate between \"No color\" and a color that is now not selectable any more\n this.selectedColorId = this.elementRef.nativeElement.dataset.selectedColor as string;\n this.selectedOption = this.selectedColorId ? this.selectedColorId : '';\n }\n }\n\n highlightColor(item:ColorItem):string|undefined {\n if (item.value === '') {\n return undefined;\n }\n\n let highlightingClass;\n if (this.highlightTextInline) {\n highlightingClass = '__hl_inline_type_ ';\n } else {\n highlightingClass = '__hl_inline_ ';\n }\n return highlightingClass + Highlighting.colorClass(this.highlightTextInline, item.value);\n }\n}\n","import { Injectable } from '@angular/core';\n\nexport const colorModes = {\n lightHighContrast: 'lightHighContrast',\n light: 'light',\n dark: 'dark',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class ColorsService {\n public toHsl(value:string, colorMode?:string):string {\n return `hsl(${this.valueHash(value)}, 50%, ${colorMode === colorModes.lightHighContrast ? '30%' : '50%'})`;\n }\n\n public toHsla(value:string, opacity:number) {\n return `hsla(${this.valueHash(value)}, 50%, 30%, ${opacity}%)`;\n }\n\n protected valueHash(value:string) {\n let hash = 0;\n for (let i = 0; i < value.length; i++) {\n hash = value.charCodeAt(i) + ((hash << 5) - hash);\n }\n\n return hash % 360;\n }\n\n public colorMode():string {\n if (document.body.getAttribute('data-color-mode') === 'dark') {\n return colorModes.dark;\n }\n\n if (document.body.getAttribute('data-light-theme') === 'light_high_contrast') {\n return colorModes.lightHighContrast;\n }\n\n return colorModes.light;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ChangeDetectionStrategy, Component, ElementRef, OnInit } from '@angular/core';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\nimport { CopyToClipboardService } from './copy-to-clipboard.service';\n\n@Component({\n template: '',\n selector: 'opce-copy-to-clipboard',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class CopyToClipboardComponent implements OnInit {\n public clickTarget:string;\n\n public clipboardTarget:string;\n\n private target:JQuery;\n\n constructor(\n readonly toastService:ToastService,\n readonly elementRef:ElementRef,\n readonly I18n:I18nService,\n protected copyToClipboardService:CopyToClipboardService,\n ) {\n }\n\n ngOnInit() {\n const element = this.elementRef.nativeElement;\n // Get inputs as attributes since this is a bootstrapped directive\n this.clickTarget = element.getAttribute('click-target');\n this.clipboardTarget = element.getAttribute('clipboard-target');\n\n jQuery(this.clickTarget).on('click', (evt:JQuery.TriggeredEvent) => this.onClick(evt));\n\n element.classList.add('copy-to-clipboard');\n this.target = jQuery(this.clipboardTarget ? this.clipboardTarget : element);\n }\n\n onClick($event:JQuery.TriggeredEvent) {\n $event.preventDefault();\n // Select the text in case the clipboard is not supported by the browser\n this.target.select().focus();\n this.copyToClipboardService.copy(String(this.target.val()));\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Injectable } from '@angular/core';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class CopyToClipboardService {\n constructor(\n readonly toastService:ToastService,\n readonly I18n:I18nService,\n ) { }\n\n copy(content:string, successMessage?:string) {\n if (!navigator.clipboard) {\n // fallback for browsers that don't support clipboard API at all\n this.addNotification('addError', this.I18n.t('js.clipboard.browser_error', { content }));\n } else {\n void navigator.clipboard.writeText(content)\n .then(() => {\n this.addNotification('addSuccess', successMessage || this.I18n.t('js.clipboard.copied_successful'));\n })\n .catch(() => {\n // fallback when running into e.g. browser permission errors\n this.addNotification('addError', this.I18n.t('js.clipboard.browser_error', { content }));\n });\n }\n }\n\n addNotification(type:'addSuccess'|'addError', message:string) {\n const notification = this.toastService[type](message);\n\n // Remove the notification some time later\n if (notification) {\n setTimeout(() => this.toastService.remove(notification), 5000);\n }\n }\n}\n","import 'reflect-metadata';\nimport {\n Component,\n ElementRef,\n ɵDirectiveDef,\n} from '@angular/core';\n\n/** We expect an ElementRef to be present on the target class */\nexport interface DatasetInputsDecorated extends Component {\n elementRef:ElementRef;\n}\n\nexport interface DatasetInputsComponent extends DatasetInputsDecorated {\n elementRef:ElementRef;\n [key:string]:unknown;\n}\n\n/**\n * The populateInputsFromDataset function automatically sets input values from `data` attributes set on a component tag.\n * This is useful if you're rendering the tag in the backend but want to provide data to the component via its inputs.\n *\n * Usage:\n *\n * ```\n * @Component({ selector: 'my-component' })\n * export class MyComponent {\n * @Input() someInput:string[] = [];\n *\n * constructor(\n * elementRef:ElementRef,\n * ) {\n * populateInputsFromDataset(this);\n * }\n * }\n * ```\n *\n * Now you can send data from the backend to the component by JSON:\n *\n * <%= content_tag 'my-component',\n * '',\n * data: {\n * 'some-input': ['a', 'b'].to_json\n * }\n * %>\n * Warning: this is only checked during the constructor phase once. Changes to the dataset\n * will not be reflected in the inputs. If you need inputs that update, use normal Angular bindings.\n */\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nexport function populateInputsFromDataset(instance:DatasetInputsDecorated):any {\n // TypeScript won't allow us to do the necessary metaprogramming here since it does not\n // know about these keys (probably because we should not touch them)\n const cstr = instance.constructor as unknown as DatasetInputsComponent;\n\n // Here we find the declared input names of the component.\n // With them way we can make sure we don't overwrite any non-input values.\n // This seems to always be ɵcmp, but we don't want to depend on that knowledge.\n // FIXME: Is there a better way to get to this information? It does not seem to be part of Reflect metadata\n const declaredInputsParentKey = Object.keys(cstr)\n .find((key:string) => typeof (cstr[key] as ɵDirectiveDef).declaredInputs === 'object');\n\n if (!declaredInputsParentKey) {\n console.warn('Could not find declared inputs for component');\n return;\n }\n\n const input = cstr[declaredInputsParentKey] as ɵDirectiveDef;\n const inputs = input.declaredInputs as { [key:string]:string };\n\n Object.keys(inputs)\n .forEach((outsideName) => {\n const insideName = inputs[outsideName];\n\n const { dataset } = (instance as unknown as DatasetInputsComponent).elementRef.nativeElement;\n\n if (!dataset[outsideName]) {\n return;\n }\n\n try {\n (instance as unknown as DatasetInputsComponent)[insideName] = JSON.parse(dataset[outsideName] || '');\n } catch (err) {\n console.error(\"Couldn't parse input: \", outsideName, instance.elementRef.nativeElement.dataset);\n console.error(`\nMake sure to make all data attributes you want to use as input JSON parseable.\nThis means that plain strings have to be wrapped in double quotes, and the attribute value is easiest to set with single quotes.\nAn example:\n\n\n`);\n\n // Rethrow since an error at this point is basically a syntax error and should be fixed\n throw err;\n }\n });\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { Component, Input } from '@angular/core';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\n\n@Component({\n selector: 'op-date-time',\n template: `\n \n \n  \n \n \n `,\n})\nexport class OpDateTimeComponent {\n @Input('dateTimeValue') dateTimeValue:any;\n\n public date:any;\n\n public time:any;\n\n constructor(readonly timezoneService:TimezoneService) {\n }\n\n ngOnInit() {\n const c = this.timezoneService.formattedDatetimeComponents(this.dateTimeValue);\n this.date = c[0];\n this.time = c[1];\n }\n}\n","\n\n \n \n \n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport {\n onDayCreate,\n validDate,\n} from 'core-app/shared/components/datepicker/helpers/date-modal.helpers';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { DatePicker } from '../datepicker';\nimport flatpickr from 'flatpickr';\nimport { DayElement } from 'flatpickr/dist/types/instance';\nimport { populateInputsFromDataset } from '../../dataset-inputs';\nimport { debounce } from 'lodash';\nimport { DeviceService } from 'core-app/core/browser/device.service';\n\nexport const rangeSeparator = '-';\n\nexport const opBasicRangeDatePickerSelector = 'op-basic-range-date-picker';\n\n@Component({\n selector: opBasicRangeDatePickerSelector,\n templateUrl: './basic-range-date-picker.component.html',\n styleUrls: [\n './basic-range-date-picker.component.sass',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OpBasicRangeDatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class OpBasicRangeDatePickerComponent implements OnInit, ControlValueAccessor, AfterViewInit {\n @HostBinding('class.op-basic-range-datepicker') className = true;\n\n @HostBinding('class.op-basic-range-datepicker_mobile') mobile = false;\n\n @Output() valueChange = new EventEmitter();\n\n private _value:string[] = [];\n\n @Input() set value(newValue:string|string[]) {\n if (typeof newValue === 'string') {\n this._value = newValue.split(/\\s-\\s/);\n } else {\n this._value = newValue;\n }\n\n this.stringValue = this.resolveDateArrayToString(this._value);\n }\n\n get value() {\n return this._value;\n }\n\n @Input() id = `flatpickr-input-${+(new Date())}`;\n\n @Input() name = '';\n\n @Input() required = false;\n\n @Input() disabled = false;\n\n @Input() minimalDate:Date|null = null;\n\n @Input() inputClassNames = '';\n\n @Input() inDialog:string;\n\n @Input() dataAction = '';\n\n @ViewChild('input') input:ElementRef;\n\n stringValue = '';\n\n datePickerInstance:DatePicker;\n\n text = {\n date: this.I18n.t('js.work_packages.properties.date'),\n placeholder: this.I18n.t('js.placeholders.default'),\n spacer: this.I18n.t('js.filter.value_spacer'),\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly timezoneService:TimezoneService,\n readonly injector:Injector,\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n readonly deviceService:DeviceService,\n ) {\n populateInputsFromDataset(this);\n }\n\n ngOnInit() {\n this.mobile = this.deviceService.isMobile;\n }\n\n ngAfterViewInit():void {\n if (!this.mobile) {\n this.initializeDatePicker();\n }\n }\n\n changeValueFromInputDebounced = debounce(this.changeValueFromInput.bind(this), 16);\n\n changeValueFromInput(value:string|string[]) {\n const newDates = (typeof value === 'string') ? this.resolveDateStringToArray(value) : value;\n\n this.onChange(newDates);\n this.onTouched(newDates);\n this.writeValue(newDates);\n this.cdRef.detectChanges();\n\n if (newDates.find((el) => !validDate(el))) {\n return;\n }\n\n this.valueChange.emit(newDates);\n }\n\n showDatePicker():void {\n if (!this.datePickerInstance?.isOpen) {\n this.datePickerInstance?.show();\n this.sentCalendarToTopLayer();\n }\n }\n\n private initializeDatePicker() {\n this.datePickerInstance = new DatePicker(\n this.injector,\n this.id,\n this.value || '',\n {\n allowInput: true,\n mode: 'range',\n showMonths: 2,\n onReady: (_date:Date[], _datestr:string, instance:flatpickr.Instance) => {\n instance.calendarContainer.classList.add('op-datepicker-modal--flatpickr-instance');\n },\n onChange: (dates:Date[], dateStr:string) => {\n if (dates.length === 2) {\n const value = this.resolveDateStringToArray(dateStr);\n this.writeValue(value);\n this.onChange(value);\n this.onTouched(value);\n }\n\n this.cdRef.detectChanges();\n },\n onOpen: () => {\n this.sentCalendarToTopLayer();\n },\n onDayCreate: async (dObj:Date[], dStr:string, fp:flatpickr.Instance, dayElem:DayElement) => {\n onDayCreate(\n dayElem,\n true,\n await this.datePickerInstance?.isNonWorkingDay(dayElem.dateObj),\n !!this.minimalDate && dayElem.dateObj <= this.minimalDate,\n );\n },\n static: false,\n appendTo: this.appendToBodyOrDialog(),\n },\n this.input.nativeElement as HTMLInputElement,\n );\n }\n\n writeValue(value:string[]):void {\n this.value = value;\n }\n\n onChange = (_:string[]):void => {};\n\n onTouched = (_:string[]):void => {};\n\n registerOnChange(fn:(_:string[]) => void):void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn:(_:string[]) => void):void {\n this.onTouched = fn;\n }\n\n // eslint-disable-next-line class-methods-use-this\n private resolveDateStringToArray(dates:string):string[] {\n return dates.split(` ${rangeSeparator} `).map((date) => date.trim());\n }\n\n // eslint-disable-next-line class-methods-use-this\n private resolveDateArrayToString(dates:string[]):string {\n return dates.join(` ${rangeSeparator} `);\n }\n\n // In case the date picker is opened in a dialog, it needs to be in the top layer\n // since the dialog is also there. This method is called in two cases:\n // 1. When the date picker is opened\n // 2. When the date picker is already opened and the user clicks on the input\n // The later is necessary as otherwise the date picker would be removed from the top layer\n // when the user clicks on the input. That is because the input is not part of the date picker\n // so clicking on it would be considered a click on the backdrop which removes an item from\n // the top layer again.\n public sentCalendarToTopLayer() {\n if (!this.datePickerInstance.isOpen || !this.inDialog) {\n return;\n }\n\n const calendarContainer = this.datePickerInstance.datepickerInstance.calendarContainer;\n calendarContainer.setAttribute('popover', '');\n calendarContainer.showPopover();\n calendarContainer.style.marginTop = '0';\n }\n\n private appendToBodyOrDialog():HTMLElement|undefined {\n if (this.inDialog) {\n return document.querySelector(`#${this.inDialog}`) as HTMLElement;\n }\n\n return undefined;\n }\n}\n","\n\n\n \n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { onDayCreate, validDate } from 'core-app/shared/components/datepicker/helpers/date-modal.helpers';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { DatePicker } from '../datepicker';\nimport flatpickr from 'flatpickr';\nimport { DayElement } from 'flatpickr/dist/types/instance';\nimport { populateInputsFromDataset } from '../../dataset-inputs';\nimport { DeviceService } from 'core-app/core/browser/device.service';\n\n@Component({\n selector: 'op-basic-single-date-picker',\n templateUrl: './basic-single-date-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OpBasicSingleDatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class OpBasicSingleDatePickerComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {\n @Output() valueChange = new EventEmitter();\n\n @Output() picked = new EventEmitter();\n\n private _value = '';\n\n @Input() set value(newValue:string) {\n this._value = newValue;\n }\n\n get value() {\n return this._value;\n }\n\n @Input() id = `flatpickr-input-${+(new Date())}`;\n\n @Input() name = '';\n\n @Input() required = false;\n\n @Input() disabled = false;\n\n @Input() minimalDate:Date|null = null;\n\n @Input() inputClassNames = '';\n\n @Input() remoteFieldKey = null;\n\n @Input() inDialog:string;\n\n @Input() dataAction = '';\n\n @ViewChild('input') input:ElementRef;\n\n mobile = false;\n\n text = {\n date: this.I18n.t('js.work_packages.properties.date'),\n placeholder: this.I18n.t('js.placeholders.default'),\n };\n\n public datePickerInstance:DatePicker;\n\n constructor(\n readonly I18n:I18nService,\n readonly timezoneService:TimezoneService,\n readonly injector:Injector,\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n readonly deviceService:DeviceService,\n ) {\n populateInputsFromDataset(this);\n }\n\n ngOnInit() {\n this.mobile = this.deviceService.isMobile;\n }\n\n ngAfterViewInit():void {\n if (!this.mobile) {\n this.initializeDatePicker();\n }\n }\n\n ngOnDestroy():void {\n this.datePickerInstance?.destroy();\n }\n\n changeValueFromInput(value:string) {\n if (validDate(value)) {\n this.onTouched(value);\n this.onChange(value);\n this.writeValue(value);\n this.datePickerInstance?.setDates(value);\n this.valueChange.emit(value);\n }\n }\n\n showDatePicker():void {\n if (!this.datePickerInstance?.isOpen) {\n this.datePickerInstance?.show();\n this.sentCalendarToTopLayer();\n }\n }\n\n private initializeDatePicker() {\n this.datePickerInstance = new DatePicker(\n this.injector,\n this.id,\n this.value || '',\n {\n allowInput: true,\n mode: 'single',\n showMonths: 1,\n onReady: (_date:Date[], _datestr:string, instance:flatpickr.Instance) => {\n instance.calendarContainer.classList.add('op-datepicker-modal--flatpickr-instance');\n },\n onChange: (_:Date[], dateStr:string) => {\n this.writeValue(dateStr);\n if (dateStr.length > 0) {\n const dateString = this.timezoneService.formattedISODate(dateStr);\n this.valueChange.emit(dateString);\n this.onTouched(dateString);\n this.onChange(dateString);\n this.writeValue(dateString);\n this.picked.emit();\n }\n\n this.cdRef.detectChanges();\n },\n onOpen: () => {\n this.sentCalendarToTopLayer();\n },\n onDayCreate: async (_dObj:Date[], _dStr:string, _fp:flatpickr.Instance, dayElem:DayElement) => {\n onDayCreate(\n dayElem,\n true,\n await this.datePickerInstance?.isNonWorkingDay(dayElem.dateObj),\n !!this.minimalDate && dayElem.dateObj <= this.minimalDate,\n );\n },\n static: false,\n appendTo: this.appendToBodyOrDialog(),\n },\n this.input.nativeElement as HTMLInputElement,\n );\n }\n\n writeValue(value:string):void {\n this.value = value;\n this.datePickerInstance?.setDates(this.value);\n }\n\n onChange = (_:string):void => {};\n\n onTouched = (_:string):void => {};\n\n registerOnChange(fn:(_:string) => void):void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn:(_:string) => void):void {\n this.onTouched = fn;\n }\n\n // In case the date picker is opened in a dialog, it needs to be in the top layer\n // since the dialog is also there. This method is called in two cases:\n // 1. When the date picker is opened\n // 2. When the date picker is already opened and the user clicks on the input\n // The later is necessary as otherwise the date picker would be removed from the top layer\n // when the user clicks on the input. That is because the input is not part of the date picker\n // so clicking on it would be considered a click on the backdrop which removes an item from\n // the top layer again.\n public sentCalendarToTopLayer() {\n if (!this.datePickerInstance.isOpen || !this.inDialog) {\n return;\n }\n\n const calendarContainer = this.datePickerInstance.datepickerInstance.calendarContainer;\n calendarContainer.setAttribute('popover', '');\n calendarContainer.showPopover();\n calendarContainer.style.marginTop = '0';\n }\n\n private appendToBodyOrDialog():HTMLElement|undefined {\n if (this.inDialog) {\n return document.querySelector(`#${this.inDialog}`) as HTMLElement;\n }\n\n return undefined;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\nimport * as moment from 'moment';\nimport flatpickr from 'flatpickr';\nimport { Instance } from 'flatpickr/dist/types/instance';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { Injector } from '@angular/core';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { WeekdayService } from 'core-app/core/days/weekday.service';\nimport { rangeSeparator } from './constants';\n\nimport Options = flatpickr.Options;\nimport FlatpickrOptions = flatpickr.Options.Options;\nimport DateOption = Options.DateOption;\nimport { DayResourceService } from 'core-app/core/state/days/day.service';\n\nexport class DatePicker {\n private datepickerFormat = 'Y-m-d';\n\n public datepickerInstance:Instance;\n\n @InjectField() configurationService:ConfigurationService;\n\n @InjectField() weekdaysService:WeekdayService;\n\n @InjectField() daysService:DayResourceService;\n\n @InjectField() I18n:I18nService;\n\n private weekdaysPromise:Promise;\n\n constructor(\n readonly injector:Injector,\n private datepickerElemIdentifier:string,\n private date:Date|Date[]|string[]|string,\n private options:flatpickr.Options.Options,\n private datepickerTarget:HTMLElement|null,\n ) {\n void this.initialize(options);\n }\n\n private initialize(options:flatpickr.Options.Options) {\n this.weekdaysPromise = this\n .weekdaysService\n .loadWeekdays()\n .toPromise()\n .then(() => {\n if (this.datepickerInstance) {\n this.datepickerInstance.redraw();\n }\n });\n\n const mergedOptions = _.extend({}, this.defaultOptions, options);\n\n let datePickerInstances:Instance|Instance[];\n if (this.datepickerTarget) {\n datePickerInstances = flatpickr(this.datepickerTarget as Node, mergedOptions);\n } else {\n datePickerInstances = flatpickr(this.datepickerElemIdentifier, mergedOptions);\n }\n\n this.datepickerInstance = Array.isArray(datePickerInstances) ? datePickerInstances[0] : datePickerInstances;\n }\n\n public async isNonWorkingDay(day:Date):Promise {\n return this.weekdaysService.isNonWorkingDay(day) || await this.daysService.isNonWorkingDay$(day);\n }\n\n public clear():void {\n this.datepickerInstance.clear();\n }\n\n public destroy():void {\n this.hide();\n this.datepickerInstance?.destroy();\n }\n\n public hide():void {\n if (this.isOpen) {\n this.datepickerInstance.close();\n }\n }\n\n public show():void {\n this.datepickerInstance.open();\n }\n\n public setDates(dates:DateOption|DateOption[]):void {\n this.datepickerInstance.setDate(dates);\n }\n\n public setOption(\n option:keyof FlatpickrOptions|{ [k in keyof FlatpickrOptions]?:FlatpickrOptions[k] },\n value:unknown,\n ):void {\n this.datepickerInstance.set(option, value);\n }\n\n public get isOpen():boolean {\n return this.datepickerInstance.isOpen;\n }\n\n private get defaultOptions() {\n const firstDayOfWeek = this.configurationService.startOfWeek();\n\n return {\n weekNumbers: true,\n getWeek(dateObj:Date) {\n return moment(dateObj).format('W');\n },\n dateFormat: this.datepickerFormat,\n defaultDate: this.date,\n locale: {\n weekdays: {\n shorthand: this.I18n.t('date.abbr_day_names'),\n longhand: this.I18n.t('date.day_names'),\n },\n months: {\n shorthand: this.I18n.t('date.abbr_month_names').slice(1),\n longhand: this.I18n.t('date.month_names').slice(1),\n },\n firstDayOfWeek,\n weekAbbreviation: this.I18n.t('date.abbr_week'),\n rangeSeparator: ` ${rangeSeparator} `,\n },\n };\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { DatePicker } from 'core-app/shared/components/datepicker/datepicker';\nimport { DateOption } from 'flatpickr/dist/types/options';\nimport { DayElement } from 'flatpickr/dist/types/instance';\nimport * as moment from 'moment-timezone';\n\n/**\n * Map the date to the internal format,\n * setting to null if it's empty.\n * @param date\n */\n// eslint-disable-next-line class-methods-use-this\nexport function mappedDate(date:string|null):string|null {\n return (date === '') ? null : date;\n}\n\n// eslint-disable-next-line class-methods-use-this\nexport function parseDate(date:Date|string):Date|'' {\n if (date instanceof Date) {\n return new Date(date.setHours(0, 0, 0, 0));\n }\n if (date === '') {\n return '';\n }\n return new Date(moment(date).toDate().setHours(0, 0, 0, 0));\n}\n\nexport function validDate(date:Date|string):boolean {\n return (date instanceof Date)\n || (date === '')\n || !!/^\\d{4}-\\d{2}-\\d{2}$/.exec(date);\n}\n\nexport function areDatesEqual(firstDate:Date|string, secondDate:Date|string):boolean {\n const parsedDate1 = parseDate(firstDate);\n const parsedDate2 = parseDate(secondDate);\n\n if ((typeof (parsedDate1) === 'string') || (typeof (parsedDate2) === 'string')) {\n return false;\n }\n return parsedDate1.getTime() === parsedDate2.getTime();\n}\n\nexport function keepCurrentlyActiveMonth(datePicker:DatePicker, currentMonth:number, currentYear:number):void {\n // Keep currently active month and avoid jump because of two-month layout\n datePicker.datepickerInstance.currentMonth = currentMonth;\n datePicker.datepickerInstance.currentYear = currentYear;\n}\n\nexport function comparableDate(date?:DateOption):number|null {\n if (!date || typeof date === 'string') {\n return null;\n }\n\n if (typeof date === 'number') {\n return date;\n }\n\n return date.getTime();\n}\n\nexport function setDates(dates:DateOption|DateOption[], datePicker:DatePicker, enforceDate?:Date):void {\n const { currentMonth, currentYear, selectedDates } = datePicker.datepickerInstance;\n\n const [newStart, newEnd] = _.castArray(dates);\n const [selectedStart, selectedEnd] = selectedDates;\n\n // In case the new times match the current times, do not try to update\n // the current selected months (Regression #46488)\n if (selectedDates.length > 0\n && comparableDate(newStart) === comparableDate(selectedStart)\n && comparableDate(newEnd) === comparableDate(selectedEnd)\n ) {\n return;\n }\n\n datePicker.setDates(dates);\n\n if (enforceDate) {\n const enforcedMonth = enforceDate.getMonth();\n const enforcedYear = enforceDate.getFullYear();\n const monthDiff = enforcedMonth - currentMonth + 12 * (enforcedYear - currentYear);\n\n // Because of the two-month layout we only have to update the calendar\n // if the month is further in the past/future than the one additional month that is shown anyway\n if (Math.abs(monthDiff) > 1) {\n datePicker.datepickerInstance.currentMonth = enforcedMonth;\n datePicker.datepickerInstance.currentYear = enforcedYear;\n } else {\n keepCurrentlyActiveMonth(datePicker, currentMonth, currentYear);\n }\n } else {\n keepCurrentlyActiveMonth(datePicker, currentMonth, currentYear);\n }\n\n datePicker.datepickerInstance.redraw();\n}\n\nexport function onDayCreate(\n dayElem:DayElement,\n ignoreNonWorkingDays:boolean,\n isNonWorkingDay:boolean,\n isDayDisabled:boolean,\n):void {\n dayElem.setAttribute('data-iso-date', dayElem.dateObj.toISOString());\n\n if (isDayDisabled) {\n dayElem.classList.add('flatpickr-disabled');\n return;\n }\n\n if (ignoreNonWorkingDays && isNonWorkingDay) {\n dayElem.classList.add('flatpickr-non-working-day_enabled');\n } else if (!ignoreNonWorkingDays && isNonWorkingDay) {\n dayElem.classList.add('flatpickr-non-working-day');\n }\n}\n","\n \n \n \n \n\n \n \n \n \n \n\n \n\n \n \n \n \n \n\n
\n\n
\n
\n \n \n
\n
\n \n
\n\n\n\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Injector,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { onDayCreate, parseDate, setDates } from 'core-app/shared/components/datepicker/helpers/date-modal.helpers';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { DatePicker } from '../datepicker';\nimport flatpickr from 'flatpickr';\nimport { DayElement } from 'flatpickr/dist/types/instance';\nimport { populateInputsFromDataset } from '../../dataset-inputs';\nimport { debounce } from 'lodash';\nimport {\n SpotDropModalTeleportationService,\n} from 'core-app/spot/components/drop-modal/drop-modal-teleportation.service';\n\n// eslint-disable-next-line change-detection-strategy/on-push\n@Component({\n selector: 'op-modal-single-date-picker',\n templateUrl: './modal-single-date-picker.component.html',\n styleUrls: ['./modal-single-date-picker.component.sass'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OpModalSingleDatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class OpModalSingleDatePickerComponent implements ControlValueAccessor, OnInit, AfterContentInit {\n @Output('closed') closed = new EventEmitter();\n\n @Output('valueChange') valueChange = new EventEmitter();\n\n private _value = '';\n\n @Input() set value(newValue:string) {\n this._value = newValue;\n this.writeWorkingValue(newValue);\n }\n\n get value() {\n return this._value;\n }\n\n @Input() id = `flatpickr-input-${+(new Date())}`;\n\n @Input() name = '';\n\n @Input() remoteFieldKey = '';\n\n @Input() required = false;\n\n @Input() minimalDate:Date|null = null;\n\n @Input() applyLabel:string;\n\n private _opened = false;\n\n @Input() set opened(opened:boolean) {\n if (this._opened === !!opened) {\n return;\n }\n\n this._opened = !!opened;\n\n if (this._opened) {\n this.initializeDatepickerAfterOpen();\n } else {\n this.closed.emit();\n }\n }\n\n get opened() {\n return this._opened;\n }\n\n @Input() showIgnoreNonWorkingDays = false;\n\n @Input() ignoreNonWorkingDays = false;\n\n @ViewChild('flatpickrTarget') flatpickrTarget:ElementRef;\n\n public workingValue = '';\n\n public workingDate:Date|null = null;\n\n public datePickerInstance:DatePicker;\n\n public useDefaultTrigger = false;\n\n text = {\n apply: this.I18n.t('js.modals.button_apply'),\n cancel: this.I18n.t('js.button_cancel'),\n date: this.I18n.t('js.work_packages.properties.date'),\n placeholder: this.I18n.t('js.placeholders.default'),\n today: this.I18n.t('js.label_today'),\n ignoreNonWorkingDays: {\n title: this.I18n.t('js.work_packages.datepicker_modal.ignore_non_working_days.title'),\n },\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly timezoneService:TimezoneService,\n readonly injector:Injector,\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n readonly spotDropModalTeleportationService:SpotDropModalTeleportationService,\n ) {\n populateInputsFromDataset(this);\n }\n\n ngOnInit() {\n this.applyLabel = this.applyLabel || this.text.apply;\n }\n\n ngAfterContentInit() {\n const trigger = (this.elementRef.nativeElement as HTMLElement).querySelector(\"[slot='trigger']\");\n this.useDefaultTrigger = trigger === null;\n }\n\n onInputClick(event:MouseEvent) {\n event.stopPropagation();\n }\n\n save($event:Event) {\n const form = $event.target as HTMLFormElement;\n\n if (form.reportValidity()) {\n $event.preventDefault();\n this.valueChange.emit(this.workingValue);\n this.onChange(this.workingValue);\n this.writeValue(this.workingValue);\n this.opened = false;\n this.workingValue = '';\n this.cdRef.detectChanges();\n }\n }\n\n setToday():void {\n const today = parseDate(new Date()) as Date;\n this.writeWorkingValue(this.timezoneService.formattedISODate(today));\n this.enforceManualChangesToDatepicker(today);\n }\n\n changeNonWorkingDays():void {\n this.initializeDatepickerAfterOpen();\n this.cdRef.detectChanges();\n }\n\n changeValueFromInputDebounced = debounce(this.changeValueFromInput.bind(this), 16);\n\n changeValueFromInput(value:string) {\n this.valueChange.emit(value);\n this.onChange(value);\n this.writeValue(value);\n\n const date = parseDate(value || '');\n\n if (date !== '') {\n const dateString = this.timezoneService.formattedISODate(date);\n this.writeWorkingValue(dateString);\n this.enforceManualChangesToDatepicker(date);\n this.onTouched(dateString);\n }\n this.cdRef.detectChanges();\n }\n\n private enforceManualChangesToDatepicker(enforceDate?:Date) {\n const date = parseDate(this.workingDate || '');\n setDates(date, this.datePickerInstance, enforceDate);\n }\n\n private initializeDatepickerAfterOpen():void {\n this.spotDropModalTeleportationService\n .afterRenderOnce$(true)\n .subscribe(() => {\n this.initializeDatepicker();\n });\n }\n\n private initializeDatepicker() {\n this.datePickerInstance?.destroy();\n\n // Initialize the working values.\n const initialDate = parseDate(this.value || new Date()) as Date;\n this.writeWorkingValue(this.timezoneService.formattedISODate(initialDate));\n\n this.datePickerInstance = new DatePicker(\n this.injector,\n this.id,\n this.workingDate || '',\n {\n mode: 'single',\n showMonths: 1,\n inline: true,\n onReady: (_date:Date[], _datestr:string, instance:flatpickr.Instance) => {\n instance.calendarContainer.classList.add('op-modal-single-date-picker--flatpickr-instance');\n this.cdRef.detectChanges();\n },\n onChange: (dates:Date[]) => {\n if (dates.length > 0) {\n const dateString = this.timezoneService.formattedISODate(dates[0]);\n this.writeWorkingValue(dateString);\n this.enforceManualChangesToDatepicker(dates[0]);\n this.onTouched(dateString);\n }\n\n this.cdRef.detectChanges();\n },\n onDayCreate: async (dObj:Date[], dStr:string, fp:flatpickr.Instance, dayElem:DayElement) => {\n onDayCreate(\n dayElem,\n !this.ignoreNonWorkingDays,\n await this.datePickerInstance?.isNonWorkingDay(dayElem.dateObj),\n !!this.minimalDate && dayElem.dateObj <= this.minimalDate,\n );\n },\n },\n this.flatpickrTarget.nativeElement as HTMLElement,\n );\n }\n\n writeWorkingValue(value:string):void {\n const date = new Date(value);\n // since new Date() returns a date in our local timezone, we need to find the UTC date\n const utcDate = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n this.workingValue = value;\n this.workingDate = utcDate;\n }\n\n writeValue(value:string):void {\n this.writeWorkingValue(value);\n this.value = value;\n }\n\n onChange = (_:string):void => {};\n\n onTouched = (_:string):void => {};\n\n registerOnChange(fn:(_:string) => void):void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn:(_:string) => void):void {\n this.onTouched = fn;\n }\n}\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Injector,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { onDayCreate } from 'core-app/shared/components/datepicker/helpers/date-modal.helpers';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { DatePicker } from '../datepicker';\nimport flatpickr from 'flatpickr';\nimport { DayElement } from 'flatpickr/dist/types/instance';\nimport { DeviceService } from 'core-app/core/browser/device.service';\n\n@Component({\n selector: 'op-datepicker-sheet',\n templateUrl: './date-picker-sheet.component.html',\n styleUrls: [\n './date-picker-sheet.component.sass',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class OpDatePickerSheetComponent implements AfterViewInit, OnChanges {\n @HostBinding('class.op-datepicker-sheet') className = true;\n\n @Input() dates:string[];\n\n @Input() mode:'range'|'single';\n\n @Input() ignoreNonWorkingDays = true;\n\n @Input() isDisabled = (_dayElem:DayElement) => false;\n\n @Output() datesSelected = new EventEmitter();\n\n @ViewChild('flatpickrTarget') flatpickrTarget:ElementRef;\n\n datePickerInstance:DatePicker;\n\n constructor(\n readonly I18n:I18nService,\n readonly timezoneService:TimezoneService,\n readonly injector:Injector,\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n readonly deviceService:DeviceService,\n ) {\n }\n\n ngAfterViewInit():void {\n this.initializeDatepicker();\n }\n\n ngOnChanges(changes:SimpleChanges) {\n if (changes.dates && !changes.dates.isFirstChange()) {\n this.datePickerInstance.setDates(changes.dates.currentValue as string[]);\n }\n\n if (changes.mode && !changes.mode.isFirstChange()) {\n this.initializeDatepicker();\n }\n }\n\n private initializeDatepicker() {\n this.datePickerInstance?.destroy();\n this.datePickerInstance = new DatePicker(\n this.injector,\n '#flatpickr-input',\n this.dates,\n {\n mode: this.mode,\n showMonths: (this.deviceService.isMobile || this.mode === 'single') ? 1 : 2,\n inline: true,\n onChange: (dates:Date[]) => {\n const formatted = dates.map((el:Date) => this.timezoneService.formattedISODate(el));\n this.datesSelected.emit(formatted);\n },\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDayCreate: async (dObj:Date[], dStr:string, fp:flatpickr.Instance, dayElem:DayElement) => {\n onDayCreate(\n dayElem,\n this.ignoreNonWorkingDays,\n await this.datePickerInstance?.isNonWorkingDay(dayElem.dateObj),\n this.isDisabled(dayElem),\n );\n },\n },\n this.flatpickrTarget.nativeElement,\n );\n }\n}\n","\n","//-- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { DayElement } from 'flatpickr/dist/types/instance';\nimport flatpickr from 'flatpickr';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { onDayCreate } from 'core-app/shared/components/datepicker/helpers/date-modal.helpers';\nimport { DeviceService } from 'core-app/core/browser/device.service';\nimport { DatePicker } from '../datepicker';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\nimport { fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport * as _ from 'lodash';\n\nexport type DateMode = 'single'|'range';\n\n@Component({\n selector: 'op-wp-date-picker-instance',\n template: `\n