{"version":3,"file":"main.b0ae3f66fc671a47.js","mappings":"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ACA,UAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,uBAAwB,CACvB,KACA,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,MACA,oDACA,2CAED,mBAAoB,CACnB,MACA,oDACA,+CAED,iBAAkB,CACjB,KACA,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,KACA,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,MACA,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,MACA,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,KACA,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,IACA,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,MACA,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,IACA,oDACA,yDAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,yBAA0B,CACzB,MACA,oDACA,qDAED,eAAgB,CACf,MACA,oDACA,gEACA,kDACA,8DACA,UAED,qBAAsB,CACrB,KACA,oDACA,iDAED,qBAAsB,CACrB,MACA,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,MACA,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,IACA,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,KACA,oDACA,+CAED,eAAgB,CACf,MACA,oDACA,2CAED,uBAAwB,CACvB,MACA,oDACA,mDAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,iBAAkB,CACjB,KACA,oDACA,6CAED,iBAAkB,CACjB,KACA,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,SAASkiV,oBAAoBrkR,GAC5B,IAAIskR,EAA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EAAI69D,EACZ,CACAwkR,eAAehvU,KAAO,SAASkvU,qBAC9B,OAAOnvU,OAAOC,KAAKrT,EACpB,EACAqiV,eAAe96U,QAAU+6U,sBACzBvtO,EAAO7mE,QAAUm0S,eACjBA,eAAepmV,GAAK,K,iBCnSpB,IAAI+D,EAAM,CACT,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,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,KACA,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,MACA,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,KACA,0BAED,eAAgB,CACf,KACA,0BAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,KACA,uBAED,aAAc,CACb,MACA,wBAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,YAAa,CACZ,IACA,uBAED,YAAa,CACZ,KACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,KACA,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,KACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,MACA,uBAED,YAAa,CACZ,IACA,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,eAAgB,CACf,MACA,0BAED,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,MACA,uBAED,YAAa,CACZ,MACA,uBAED,gBAAiB,CAChB,MACA,2BAED,gBAAiB,CAChB,MACA,2BAED,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,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,MACA,uBAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,eAAgB,CACf,MACA,0BAED,gBAAiB,CAChB,MACA,4BAGF,SAASkiV,oBAAoBrkR,GAC5B,IAAIskR,EAAoB9lT,EAAEr8B,EAAK69D,GAC9B,OAAOv2D,QAAQC,UAAUpI,MAAK,KAC7B,IAAImwB,EAAI,IAAI2C,MAAM,uBAAyB4rC,EAAM,KAEjD,MADAvuC,EAAE4nN,KAAO,mBACH5nN,CAAC,IAIT,IAAIjoB,EAAMrH,EAAI69D,GAAM5hE,EAAKoL,EAAI,GAC7B,OAAO86U,EAAoB7yT,EAAEjoB,EAAI,IAAIlI,MAAK,IAClCgjV,EAAoBhgV,EAAElG,EAAI,KAEnC,CACAimV,oBAAoB7uU,KAAO,IAAOD,OAAOC,KAAKrT,GAC9CkiV,oBAAoBjmV,GAAK,KACzB84G,EAAO7mE,QAAUg0S,mB,iBC1gBjB,IAAIliV,EAAM,CACT,mCAAoC,CACnC,MACA,sEAED,8CAA+C,CAC9C,MACA,iFAED,2BAA4B,CAC3B,MACA,8DAED,2BAA4B,CAC3B,MACA,8DAED,wBAAyB,CACxB,MACA,2DAED,8BAA+B,CAC9B,MACA,iEAED,+BAAgC,CAC/B,MACA,kEAED,+BAAgC,CAC/B,MACA,kEAED,4BAA6B,CAC5B,MACA,+DAED,yCAA0C,CACzC,MACA,4EAED,0BAA2B,CAC1B,OAED,6BAA8B,CAC7B,MACA,gEAED,yBAA0B,CACzB,MACA,4DAED,oCAAqC,CACpC,MACA,uEAED,uBAAwB,CACvB,MACA,0DAED,qCAAsC,CACrC,MACA,wEAED,mCAAoC,CACnC,MACA,sEAED,mEAAoE,CACnE,MACA,sGAED,yCAA0C,CACzC,MACA,6EAGF,SAASkiV,oBAAoBrkR,GAC5B,IAAIskR,EAAoB9lT,EAAEr8B,EAAK69D,GAC9B,OAAOv2D,QAAQC,UAAUpI,MAAK,KAC7B,IAAImwB,EAAI,IAAI2C,MAAM,uBAAyB4rC,EAAM,KAEjD,MADAvuC,EAAE4nN,KAAO,mBACH5nN,CAAC,IAIT,IAAIjoB,EAAMrH,EAAI69D,GAAM5hE,EAAKoL,EAAI,GAC7B,OAAOC,QAAQ8kB,IAAI/kB,EAAI6jB,MAAM,GAAGlrB,IAAImiV,EAAoB7yT,IAAInwB,MAAK,IACzDgjV,EAAoBlmV,IAE7B,CACAimV,oBAAoB7uU,KAAO,IAAOD,OAAOC,KAAKrT,GAC9CkiV,oBAAoBjmV,GAAK,KACzB84G,EAAO7mE,QAAUg0S,mB,kBC7FjB,IAAIliV,EAAM,CACT,UAAW,CACV,MACA,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,IACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,KACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,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,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,MACA,+CAED,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,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,2CAGF,SAASkiV,oBAAoBrkR,GAC5B,IAAIskR,EAAoB9lT,EAAEr8B,EAAK69D,GAC9B,OAAOv2D,QAAQC,UAAUpI,MAAK,KAC7B,IAAImwB,EAAI,IAAI2C,MAAM,uBAAyB4rC,EAAM,KAEjD,MADAvuC,EAAE4nN,KAAO,mBACH5nN,CAAC,IAIT,IAAIjoB,EAAMrH,EAAI69D,GAAM5hE,EAAKoL,EAAI,GAC7B,OAAO86U,EAAoB7yT,EAAEjoB,EAAI,IAAIlI,MAAK,IAClCgjV,EAAoBhgV,EAAElG,EAAI,KAEnC,CACAimV,oBAAoB7uU,KAAO,IAAOD,OAAOC,KAAKrT,GAC9CkiV,oBAAoBjmV,GAAK,MACzB84G,EAAO7mE,QAAUg0S,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-navigation.service.ts","./src/app/core/main-menu/main-menu-toggle.service.ts","./src/app/core/model-auth/model-auth.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/dynamic-bootstrapper.ts","./src/app/core/setup/globals/onboarding/helpers.ts","./src/app/core/setup/globals/global-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/state/views/views.store.ts","./src/app/core/state/views/views.service.ts","./src/app/core/states/states.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/backlogs/backlogs-page/backlogs-page.component.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/board.service.ts","./src/app/features/boards/board/caused-updates/caused-updates.service.ts","./src/app/features/boards/boards-sidebar/boards-menu.component.html","./src/app/features/boards/boards-sidebar/boards-menu.component.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/sidemenu/calendar-sidemenu.component.html","./src/app/features/calendar/sidemenu/calendar-sidemenu.component.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/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/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/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/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/menu/state/ian-menu.store.ts","./src/app/features/in-app-notifications/center/menu/state/ian-menu.service.ts","./src/app/features/in-app-notifications/center/menu/menu.component.ts","./src/app/features/in-app-notifications/center/menu/menu.component.html","./src/app/features/in-app-notifications/center/state/ian-center.store.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/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/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/center/toolbar/settings/notification-settings-button.component.ts","./src/app/features/in-app-notifications/center/toolbar/settings/notification-settings-button.component.html","./src/app/features/in-app-notifications/center/toolbar/facet/activate-facet-button.component.html","./src/app/features/in-app-notifications/center/toolbar/facet/activate-facet-button.component.ts","./src/app/features/in-app-notifications/center/toolbar/mark-all-as-read/mark-all-as-read-button.component.ts","./src/app/features/in-app-notifications/center/toolbar/mark-all-as-read/mark-all-as-read-button.component.html","./src/app/features/in-app-notifications/center/in-app-notification-center-page.component.ts","./src/app/features/in-app-notifications/date-alerts-upsale/ian-date-alerts-upsale.component.ts","./src/app/shared/helpers/videos/path-helper.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.routes.ts","./src/app/features/in-app-notifications/center/empty-state/empty-state.component.html","./src/app/features/in-app-notifications/center/empty-state/empty-state.component.ts","./src/app/features/in-app-notifications/in-app-notifications.module.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/job-status.modal.html","./src/app/features/job-status/job-status-modal/job-status.modal.ts","./src/app/features/plugins/hook-service.ts","./src/app/features/projects/components/projects/projects.component.ts","./src/app/features/projects/components/projects/projects.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/copy-project/copy-project.component.ts","./src/app/features/projects/components/copy-project/copy-project.component.html","./src/app/features/projects/projects-routes.ts","./src/app/features/projects/openproject-projects.module.ts","./src/app/features/team-planner/team-planner/planner/background-events.ts","./src/app/features/team-planner/team-planner/sidemenu/team-planner-sidemenu.component.html","./src/app/features/team-planner/team-planner/sidemenu/team-planner-sidemenu.component.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/work-package-comment/work-package-comment-field-handler.ts","./src/app/features/work-packages/components/work-package-comment/work-package-comment.component.html","./src/app/features/work-packages/components/work-package-comment/work-package-comment.component.ts","./src/app/shared/components/fields/edit/field-types/formattable-edit-field/formattable-edit-field.component.html","./src/app/features/work-packages/components/work-package-comment/wp-comment-field.component.ts","./src/app/features/work-packages/components/wp-activity/activity-entry.component.html","./src/app/features/work-packages/components/wp-activity/activity-entry.component.ts","./src/app/features/work-packages/components/wp-activity/activity-link.component.ts","./src/app/features/work-packages/components/wp-activity/comment-service.ts","./src/app/features/work-packages/components/wp-activity/revision/revision-activity.component.html","./src/app/features/work-packages/components/wp-activity/revision/revision-activity.component.ts","./src/app/features/work-packages/components/wp-activity/user/user-activity.component.html","./src/app/features/work-packages/components/wp-activity/user/user-activity.component.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.html","./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-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-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/wp-view-toggle-button/work-package-view-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/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/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/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/features/work-packages/components/wp-relations/embedded/wp-relation-query.base.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-create/wp-relations-autocomplete/wp-relations-autocomplete.component.ts","./src/app/features/work-packages/components/wp-relations/wp-relations-create/wp-relations-autocomplete/wp-relations-autocomplete.html","./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-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-hierarchy/wp-relations-hierarchy.directive.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.service.ts","./src/app/features/work-packages/components/wp-relations/wp-relations.template.html","./src/app/features/work-packages/components/wp-relations/wp-relations.component.ts","./src/app/features/work-packages/components/wp-relations/wp-relations.service.ts","./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-on-overview.html","./src/app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-on-overview.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/activity-tab.component.ts","./src/app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-entry-info.ts","./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/actions/unlink-table-action.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/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-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/features/work-packages/components/wp-tabs/wp-tabs.module.ts","./src/app/features/work-packages/directives/query-space/isolated-graph-query-space.ts","./src/app/features/work-packages/directives/query-space/wp-isolated-graph-query-space.directive.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.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.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/autocomplete-select-decoration/autocomplete-select-decoration.component.ts","./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.html","./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/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.html","./src/app/shared/components/autocompleter/project-autocompleter/project-autocompleter.component.ts","./src/app/shared/components/autocompleter/te-work-package-autocompleter/te-work-package-autocompleter.component.html","./src/app/shared/components/autocompleter/te-work-package-autocompleter/te-work-package-autocompleter.component.ts","./src/app/shared/components/autocompleter/user-autocompleter/user-autocompleter.component.html","./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/banner/datepicker-banner.component.html","./src/app/shared/components/datepicker/banner/datepicker-banner.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/scheduling-mode/datepicker-scheduling-toggle.component.ts","./src/app/shared/components/datepicker/scheduling-mode/datepicker-scheduling-toggle.component.html","./src/app/shared/components/datepicker/services/date-modal-relations.service.ts","./src/app/shared/components/datepicker/services/date-modal-scheduling.service.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/toggle/datepicker-working-days-toggle.component.ts","./src/app/shared/components/datepicker/toggle/datepicker-working-days-toggle.component.html","./src/app/shared/components/datepicker/wp-multi-date-form/wp-multi-date-form.component.ts","./src/app/shared/components/datepicker/wp-multi-date-form/wp-multi-date-form.component.html","./src/app/shared/components/datepicker/wp-single-date-form/wp-single-date-form.component.ts","./src/app/shared/components/datepicker/wp-single-date-form/wp-single-date-form.component.html","./src/app/shared/components/dynamic-bootstrap/component/dynamic-bootstrap/dynamic-bootstrap.component.ts","./src/app/shared/components/dynamic-bootstrap/component/dynamic-bootstrap/dynamic-bootstrap.component.html","./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/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/progress-display-field.module.ts","./src/app/shared/components/fields/display/field-types/resources-display-field.module.ts","./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.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/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/te-work-package-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.html","./src/app/shared/components/fields/edit/field-types/combined-date-edit-field.component.ts","./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/edit-field.initializer.ts","./src/app/shared/components/fields/display/field-types/text-display-field.module.ts","./src/app/shared/components/fields/display/field-types/float-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/resource-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/datetime-display-field.module.ts","./src/app/shared/components/fields/display/field-types/boolean-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/estimated-time-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/id-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/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/multiple-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/project-status-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/linked-work-package-display-field.module.ts","./src/app/shared/components/fields/display/field-types/days-duration-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/hide-section/show-section-dropdown.component.ts","./src/app/shared/components/icon/icon.component.ts","./src/app/shared/components/icon/icon.module.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-overlay.component.ts","./src/app/shared/components/modal/modal-overlay.component.html","./src/app/shared/components/modal/modal-wrapper-augment.service.ts","./src/app/shared/components/modal/modal.component.ts","./src/app/shared/components/modal/modal.module.ts","./src/app/shared/components/modal/modal.service.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/export-modal/wp-table-export.modal.html","./src/app/shared/components/modals/export-modal/wp-table-export.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/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/handlers/wp-view-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/op-view-select/op-view-select.component.ts","./src/app/shared/components/op-view-select/op-view-select.template.html","./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-list.component.html","./src/app/shared/components/principal/principal-list.component.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/sidemenu/sidemenu.component.html","./src/app/shared/components/sidemenu/sidemenu.component.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/icons.mapping.ts","./src/app/shared/components/storages/functions/storages.functions.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/shared/components/storages/upload/nextcloud-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/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/highlight-col/highlight-col.directive.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/components/datepicker/multi-date-picker/multi-date-picker.component.ts","./src/app/shared/components/datepicker/multi-date-picker/multi-date-picker.component.html","./src/app/shared/components/dynamic-bootstrap/dynamic-bootstrap.module.ts","./src/app/shared/helpers/angular/custom-elements.helper.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.ts","./src/app/shared/components/grids/widgets/wp-calendar/wp-calendar.component.html","./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/project-details/project-details-menu.component.ts","./src/app/shared/components/grids/widgets/project-details/project-details.component.html","./src/app/shared/components/grids/widgets/project-details/project-details.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/openproject-grids.module.ts","./src/app/core/routing/base/application-base.component.ts","./src/app/features/user-preferences/user-preferences.lazy-routes.ts","./src/app/features/in-app-notifications/in-app-notifications.lazy-routes.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/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/global-search-work-packages-entry.component.ts","./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/shared/components/modals/preview-modal/wp-preview-modal/wp-preview.modal.html","./src/app/shared/components/modals/preview-modal/wp-preview-modal/wp-preview.modal.ts","./src/app/core/setup/globals/global-listeners/preview-trigger.service.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/top-menu/top-menu.service.ts","./src/app/core/main-menu/main-menu-toggle.component.html","./src/app/core/main-menu/main-menu-toggle.component.ts","./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/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/core/setup/globals/global-listeners/action-menu.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/backup/op-backup.service.ts","./src/app/core/setup/globals/components/admin/backup.component.ts","./src/app/core/setup/globals/components/admin/backup.component.html","./src/app/core/setup/global-dynamic-components.const.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/augment/cost-budget-subform.augment.service.ts","./src/app/features/plugins/linked/budgets/augment/cost-subform.augment.service.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/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-plugins.module.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/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/request-for-confirmation.ts","./src/app/core/setup/globals/global-listeners/toggable-fieldset.ts","./src/app/core/setup/globals/global-listeners/setup-server-response.ts","./src/app/core/setup/globals/onboarding/onboarding_tour_trigger.ts","./src/app/core/setup/globals/global-listeners/link-hijacking.ts","./src/app/core/setup/globals/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/main.ts","./src/app/core/errors/configure-reporter.ts","./src/app/core/setup/init-locale.ts","./src/stimulus/controllers/dynamic/menus/main.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/setup.ts","./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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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(queryData:Object, queryId?:string|null, projectIdentifier?:string|null|undefined):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(\n this.apiRoot.queries.path, payload,\n );\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { 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 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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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)/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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 ApiV3GettableResource,\n ApiV3ResourceCollection,\n} 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/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/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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 mobileWidthTreshold = 544;\n\n public get isMobile():boolean {\n return (window.innerWidth < this.mobileWidthTreshold);\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 current:{ id:string, identifier:string, name:string };\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.current !== undefined;\n }\n\n public get path():string|null {\n if (this.current) {\n return this.PathHelper.projectPath(this.current.identifier);\n }\n\n return null;\n }\n\n public get apiv3Path():string|null {\n if (this.current) {\n return this.apiV3Service.projects.id(this.current.id).toString();\n }\n\n return null;\n }\n\n public get id():string|null {\n return this.getCurrent('id');\n }\n\n public get name():string|null {\n return this.getCurrent('name');\n }\n\n public get identifier():string|null {\n return this.getCurrent('identifier');\n }\n\n private getCurrent(key:'id'|'identifier'|'name') {\n if (this.current && this.current[key]) {\n return this.current[key].toString();\n }\n\n return null;\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.current = {\n id: element.dataset.projectId!,\n name: element.dataset.projectName!,\n identifier: element.dataset.projectIdentifier!,\n };\n }\n }\n}\n","import {\n Injector,\n NgModule,\n} from '@angular/core';\n\nimport { CurrentUserService } from './current-user.service';\nimport { CurrentUserStore } from './current-user.store';\nimport { CurrentUserQuery } from './current-user.query';\nimport { ErrorReporterBase } from 'core-app/core/errors/error-reporter-base';\nimport { firstValueFrom } from 'rxjs';\n\nexport function bootstrapModule(injector:Injector):void {\n const currentUserService = injector.get(CurrentUserService);\n\n (window.ErrorReporter as ErrorReporterBase)\n .addHook(\n () => firstValueFrom(currentUserService.user$)\n .then(({ id }) => ({ user: id || 'anon' })),\n );\n\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 mail: userMeta?.dataset.mail || null,\n });\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 {\n CurrentUserState,\n CurrentUserStore,\n} 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.id);\n\n user$ = this.select(({ id, name, mail }) => ({ id, name, mail }));\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\n CurrentUser,\n CurrentUserStore,\n} from './current-user.store';\nimport { CurrentUserQuery } from './current-user.query';\nimport { CapabilitiesResourceService } from 'core-app/core/state/capabilities/capabilities.service';\nimport { Observable } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n switchMap,\n take,\n} from 'rxjs/operators';\nimport { ApiV3ListFilter } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { ICapability } from 'core-app/core/state/capabilities/capability.model';\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 /**\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[] = [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 filter((user) => !!user.id),\n take(1),\n map((user) => ['principal', '=', [user.id as string]]),\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 mail: null,\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 mail():string {\n return this._user.mail || '';\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 Store,\n StoreConfig,\n} from '@datorama/akita';\n\nexport interface CurrentUser {\n id:string|null;\n name:string|null;\n mail:string|null;\n}\n\nexport interface CurrentUserState extends CurrentUser {\n}\n\nexport function createInitialState():CurrentUserState {\n return {\n id: null,\n name: null,\n mail: 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\n Moment,\n} from 'moment';\n\n@Injectable({ providedIn: 'root' })\nexport class TimezoneService {\n constructor(\n readonly configurationService:ConfigurationService,\n readonly I18n:I18nService,\n ) {\n this.setupLocale();\n }\n\n public setupLocale():void {\n moment.locale(I18n.locale);\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):string {\n const d = this.parseDate(date);\n return d.format(this.getDateFormat());\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 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 formattedDuration(durationString:string, unit:'hour'|'days' = 'hour'):string {\n switch (unit) {\n case 'hour':\n return this.I18n.t('js.units.hour', { count: this.toHours(durationString) });\n case 'days':\n return this.I18n.t('js.units.day', { count: this.toDays(durationString) });\n default:\n // Case fallthrough for eslint\n return '';\n }\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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\n public get current():string {\n return this.titleService.getTitle();\n }\n\n public get titleParts():string[] {\n return this.current.split(titlePartsSeparator);\n }\n\n public setFirstPart(value:string) {\n const parts = this.titleParts;\n parts[0] = value;\n\n this.titleService.setTitle(parts.join(titlePartsSeparator));\n }\n\n public prependFirstPart(value:string):void {\n const parts = this.titleParts;\n parts.unshift(value);\n\n this.titleService.setTitle(parts.join(titlePartsSeparator));\n }\n}\n","import { Injectable } from '@angular/core';\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\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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 () => indicator.delayedStop(delayStopTime),\n () => indicator.stop(),\n () => 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 () => undefined,\n () => indicator().stop(),\n () => 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","import { BehaviorSubject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class MainMenuNavigationService {\n public navigationEvents$ = new BehaviorSubject('');\n\n public onActivate(...names:string[]) {\n return this\n .navigationEvents$\n .pipe(\n filter((evt) => names.indexOf(evt) !== -1),\n take(1),\n );\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 private hideElements = jQuery('.can-hide-navigation');\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\n constructor(protected I18n:I18nService,\n public injector:Injector,\n readonly deviceService:DeviceService) {\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) as string;\n\n if (!this.elementWidth) {\n this.saveWidth(this.mainMenu.offsetWidth);\n } else if (menuCollapsed && JSON.parse(menuCollapsed)) {\n this.closeMenu();\n } else {\n this.setWidth();\n }\n\n const currentProject:CurrentProjectService = this.injector.get(CurrentProjectService);\n if (jQuery(document.body).hasClass('controller-my') && this.elementWidth === 0 || currentProject.id === null) {\n this.saveWidth(this.defaultWidth);\n }\n\n // mobile version default: hide menu on initialization\n this.closeWhenOnMobile();\n }\n\n // click on arrow or hamburger icon\n public toggleNavigation(event?:JQuery.TriggeredEvent|Event):void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n if (!this.showNavigation) { // sidebar is hidden -> show menu\n if (this.deviceService.isMobile) { // mobile version\n this.setWidth(window.innerWidth);\n } else { // desktop version\n const savedWidth = parseInt(window.OpenProject.guardedLocalStorage(this.localStorageKey) as string);\n const widthToSave = savedWidth >= this.elementMinWidth ? savedWidth : this.defaultWidth;\n\n this.saveWidth(widthToSave);\n }\n } else { // sidebar is expanded -> close menu\n this.closeMenu();\n }\n\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 window.OpenProject.guardedLocalStorage(this.localStorageStateKey, 'true');\n jQuery('.searchable-menu--search-input').blur();\n }\n\n public closeWhenOnMobile():void {\n if (this.deviceService.isMobile) {\n this.closeMenu();\n window.OpenProject.guardedLocalStorage(this.localStorageStateKey, 'false');\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 setWidth(width?:any):void {\n if (width !== undefined) {\n // Leave a minimum amount of space for space for the content\n const maxMenuWidth = this.deviceService.isMobile ? window.innerWidth - 120 : window.innerWidth - 520;\n if (width > maxMenuWidth) {\n this.elementWidth = maxMenuWidth;\n } else {\n this.elementWidth = width as number;\n }\n }\n\n this.snapBack();\n this.setToggleTitle();\n this.toggleClassHidden();\n\n this.global.showNavigation = this.showNavigation;\n this.htmlNode.style.setProperty('--main-menu-width', `${this.elementWidth}px`);\n\n // Send change event when size of menu is changing (menu toggled or resized)\n const changeEvent = jQuery.Event('change');\n this.changeData.next(changeEvent);\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 this.hideElements.toggleClass('hidden-navigation', !this.showNavigation);\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","import { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\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(projectId:string|number, term:string|null) {\n const filters:ApiV3FilterBuilder = new ApiV3FilterBuilder();\n // Only real and activated users:\n filters.add('status', '!', ['3']);\n // that are members of that project:\n filters.add('member', '=', [projectId.toString()]);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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 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)}/calendar`;\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 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 workPackageDetailsCopyPath(projectIdentifier:string, workPackageId:string|number) {\n return `${this.projectWorkPackagesPath(projectIdentifier)}/details/${workPackageId}/copy`;\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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 {\n firstValueFrom,\n Observable,\n} from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { States } from 'core-app/core/states/states.service';\nimport {\n ISchemaProxy,\n SchemaProxy,\n} 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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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 { ComponentType } from '@angular/cdk/portal';\nimport { ApplicationRef } from '@angular/core';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\n\n/**\n * Optional bootstrap definition to allow selecting all matching\n * DOM nodes to manually bootstrap them.\n *\n * This differs from Angular's bootstrap module definition since it expects these\n * entries to be present on ALL pages. This is never the case for our optional\n * bootstrapped components.\n */\nexport interface OptionalBootstrapDefinition {\n // The DOM selector used to locate an optional node\n selector:string;\n // The component class tied to it.\n cls:ComponentType;\n // Whether the component may be embeddable in dynamically generated responses\n // e.g., previews\n embeddable?:boolean;\n}\n\n/**\n * Static lookup table for dynamically bootstrapped components within our application\n */\nexport class DynamicBootstrapper {\n private static optionalBoostrapComponents:OptionalBootstrapDefinition[] = [];\n\n /**\n * Register an optional bootstrap component to be dynamically bootstrapped\n * whenever it occurs in the initially loaded DOM.\n *\n * @param {OptionalBootstrapDefinition} definition\n */\n public static register(...defs:OptionalBootstrapDefinition[]) {\n this.optionalBoostrapComponents.push(...defs);\n }\n\n /**\n * Perform bootstrapping of matched elements within the given document.\n *\n * @param {ApplicationRef} appRef The application reference to lookup elements.\n * @param {Document} doc The document element\n * @param {OptionalBootstrapDefinition[]|undefined} definitions An optional set of components to bootstrap\n */\n public static bootstrapOptionalDocument(appRef:ApplicationRef, doc:Document, definitions = this.optionalBoostrapComponents) {\n this.performBootstrap(appRef, doc, false, definitions);\n }\n\n /**\n * Perform bootstrapping of embeddable elements within the given node.\n *\n * @param {ApplicationRef} appRef The application reference to lookup elements.\n * @param {HTMLElement} element A node to bootstrap elements within.\n * @param {OptionalBootstrapDefinition[]|undefined} definitions An optional set of components to bootstrap\n */\n public static bootstrapOptionalEmbeddable(appRef:ApplicationRef, element:HTMLElement, definitions = this.optionalBoostrapComponents) {\n // Delay the execution to avoid bootstrapping the embedded components while\n // the app is running the Change Detection. This was throwing \"ApplicationRef.tick\n // is called recursively\" error because of bootstrapOptionalEmbeddable and\n // bootstrapOptionalDocument were called too close (ie: ckEditor macros).\n Promise.resolve().then(() => this.performBootstrap(appRef, element, true, definitions));\n }\n\n /**\n * Get embeddable components\n */\n public static getEmbeddable() {\n return this.optionalBoostrapComponents.filter((el) => el.embeddable);\n }\n\n /**\n * Bootstrap within a given document (globally, all components available) or within an element (embeddable compoennts\n * only).\n *\n * @param {ApplicationRef} appRef\n * @param {Document | HTMLElement} root\n * @param {boolean} embedded\n */\n private static performBootstrap(appRef:ApplicationRef, root:Document|HTMLElement, embedded:boolean, definitions:OptionalBootstrapDefinition[]) {\n definitions\n .forEach((el) => {\n // Skip non-embeddable components in an embedded bootstrap.\n if (embedded && !el.embeddable) {\n return;\n }\n\n const elements = root.querySelectorAll(el.selector);\n for (let i = 0; i < elements.length; i++) {\n const target = elements[i];\n\n if (!embedded && target.closest('[op-dynamic-bootstrap]')) {\n debugLog(`Skipping nested bootstrap ${el.selector} in %O`, target);\n return;\n }\n\n appRef.bootstrap(el.cls, target);\n target.setAttribute('op-dynamic-bootstrap', 'true');\n }\n });\n }\n}\n","export const demoProjectName = 'Demo project';\nexport const scrumDemoProjectName = 'Scrum project';\nexport const onboardingTourStorageKey = 'openProject-onboardingTour';\nexport type OnboardingTourNames = 'prepareBacklogs'|'backlogs'|'taskboard'|'homescreen'|'main';\n\nexport enum ProjectName {\n demo = 'demo',\n scrum = 'scrum',\n}\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\nexport function demoProjectsLinks() {\n const demoProjects = [];\n const demoProjectsLink = jQuery(`.widget-box.welcome a:contains(${demoProjectName})`);\n const scrumDemoProjectsLink = jQuery(`.widget-box.welcome a:contains(${scrumDemoProjectName})`);\n\n if (demoProjectsLink.length) {\n demoProjects.push(demoProjectsLink);\n }\n if (scrumDemoProjectsLink.length) {\n demoProjects.push(scrumDemoProjectsLink);\n }\n\n return demoProjects;\n}\n\nexport function preventClickHandler(e:any) {\n e.preventDefault();\n e.stopPropagation();\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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:any, checked:any) {\n document\n .querySelectorAll(`#${selector} input[type=\"checkbox\"]:not([disabled])`)\n .forEach((el:HTMLInputElement) => el.checked = checked);\n }\n\n public toggleCheckboxesBySelector(selector:any) {\n const boxes = jQuery(selector);\n let all_checked = true;\n for (let i = 0; i < boxes.length; i++) {\n if (boxes[i].checked === false) {\n all_checked = false;\n }\n }\n for (let i = 0; i < boxes.length; i++) {\n boxes[i].checked = !all_checked;\n }\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { take } from 'rxjs/operators';\nimport { 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 jQuery('meta[name=app_base_path]').attr('content') || '';\n }\n\n public get environment():string {\n return jQuery('meta[name=openproject_initializer]').data('environment');\n }\n\n public get edition():string {\n return jQuery('meta[name=openproject_initializer]').data('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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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.js');\nrequire('jquery-ui/ui/position.js');\nrequire('jquery-ui/ui/disable-selection.js');\nrequire('jquery-ui/ui/widgets/sortable.js');\nrequire('jquery-ui/ui/widgets/dialog.js');\nrequire('jquery-ui/ui/widgets/tooltip.js');\n\nrequire('expose-loader?moment!moment');\nrequire('moment/locale/en-gb.js');\nrequire('moment/locale/de.js');\n\nrequire('jquery.caret');\n// Text highlight for autocompleter\nrequire('mark.js/dist/jquery.mark.min.js');\n// Micro Text fuzzy search library\nrequire('fuse.js');\n\nrequire('moment-timezone/builds/moment-timezone-with-data.min.js');\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\n// Localization for fullcalendar\nrequire('@fullcalendar/core/locales-all');\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n Subject,\n} from 'rxjs';\nimport { ActionCreator } from 'ts-action/action';\nimport { ActionType } from 'ts-action';\nimport { ofType } from 'ts-action-operators';\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 this.actions.next(action);\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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.getAttachmentsSelfLink(resource)\n || this.apiV3Service.attachments.path;\n }\n\n private getDirectUploadLink(resource:HalResource):string|null {\n const links = resource.$links as unknown&{ 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 const attachments = resource.attachments as unknown&{ href?:string };\n return attachments?.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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 (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}?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';\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 reset():void {\n this.store.reset();\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { EntityStore, StoreConfig } from '@datorama/akita';\nimport { ResourceState, createInitialResourceState } from 'core-app/core/state/resource-store';\nimport { IView } from './view.model';\n\nexport interface ViewsState extends ResourceState {\n}\n\n@StoreConfig({ name: 'views' })\nexport class ViewsStore extends EntityStore {\n constructor() {\n super(createInitialResourceState());\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EffectHandler } from 'core-app/core/state/effects/effect-handler.decorator';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { ViewsStore } from 'core-app/core/state/views/views.store';\nimport { IView } from 'core-app/core/state/views/view.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 ViewsResourceService extends ResourceStoreService {\n @InjectField() actions$:ActionsService;\n\n protected createStore():ResourceStore {\n return new ViewsStore();\n }\n\n protected basePath():string {\n return this.apiV3Service.views.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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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}\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\nexport const backlogsPageComponentSelector = 'op-backlogs-page';\n\n@Component({\n selector: backlogsPageComponentSelector,\n // Empty wrapper around legacy backlogs for CSS loading\n // that got removed in the Rails assets pipeline\n encapsulation: ViewEncapsulation.None,\n template: '',\n styleUrls: [\n './styles/backlogs.sass',\n ],\n})\nexport class BacklogsPageComponent implements OnInit {\n ngOnInit() {\n document.getElementById('projected-content')!.hidden = false;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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;\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 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 setBcfTopic$(workPackage:WorkPackageResource):Observable {\n if (this.topicUUID) {\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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.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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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(projectData:any, done:Function, _error:Function) {\n const manifestData = {\n id: projectData[0].id,\n name: projectData[0].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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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}\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) => CreateBcfViewpointData,\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(\n this.currentProjectService.identifier as string, event.modelId,\n ),\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);\n\n // The backend rejects viewpoints with bitmaps\n viewpoint.bitmaps = null;\n\n return of(viewpoint);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { WpTableExportModalComponent } from 'core-app/shared/components/modals/export-modal/wp-table-export.modal';\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 opModalService:OpModalService,\n readonly injector:Injector,\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.opModalService.show(WpTableExportModalComponent, this.injector, { link: this.exportLink });\n event.preventDefault();\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { Board } from 'core-app/features/boards/board/board';\nimport { GridWidgetResource } from 'core-app/features/hal/resources/grid-widget-resource';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { BehaviorSubject, firstValueFrom, Observable } from 'rxjs';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\n\n@Injectable({ providedIn: 'root' })\nexport class BoardService {\n public currentBoard$:BehaviorSubject = new BehaviorSubject(null);\n\n private loadAllPromise:Promise|undefined;\n\n private text = {\n unnamed_board: this.I18n.t('js.boards.label_unnamed_board'),\n action_board: (attr:string) => this.I18n.t('js.boards.board_type.action_by_attribute',\n { attribute: this.I18n.t(`js.boards.board_type.action_type.${attr}`) }),\n unnamed_list: this.I18n.t('js.boards.label_unnamed_list'),\n };\n\n constructor(\n protected apiV3Service:ApiV3Service,\n protected PathHelper:PathHelperService,\n protected CurrentProject:CurrentProjectService,\n protected halResourceService:HalResourceService,\n protected I18n:I18nService,\n ) {\n }\n\n /**\n * Return all boards in the current scope of the project\n *\n * @param projectIdentifier\n */\n public loadAllBoards(projectIdentifier:string|null = this.CurrentProject.identifier, force = false) {\n if (force || this.loadAllPromise === undefined) {\n this.loadAllPromise = firstValueFrom(\n this\n .apiV3Service\n .boards\n .allInScope(projectIdentifier as string),\n );\n }\n\n return this.loadAllPromise;\n }\n\n /**\n * Check whether the current user can manage board-type grids.\n */\n public canManage(board:Board):boolean {\n return !!board.grid.$links.delete;\n }\n\n /**\n * Save the changes to the board\n */\n public save(board:Board):Observable {\n this.reorderWidgets(board);\n return this\n .apiV3Service\n .boards\n .id(board)\n .save(board);\n }\n\n public delete(board:Board):Promise {\n return firstValueFrom(\n this\n .apiV3Service\n .boards\n .id(board)\n .delete(),\n );\n }\n\n /**\n * Reorders the widgets to correspond to the available columns\n * @param board\n */\n private reorderWidgets(board:Board) {\n board.grid.columnCount = Math.max(board.grid.widgets.length, 1);\n board.grid.widgets.map((el:GridWidgetResource, index:number) => {\n el.startColumn = index + 1;\n el.endColumn = index + 2;\n return el;\n });\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","\n \n \n\n\n
\n \n \n \n \n
\n","import {\n Component,\n HostBinding,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BoardService } from 'core-app/features/boards/board/board.service';\nimport { Board } from 'core-app/features/boards/board/board';\nimport { map } from 'rxjs/operators';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { MainMenuNavigationService } from 'core-app/core/main-menu/main-menu-navigation.service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { IOpSidemenuItem } from 'core-app/shared/components/sidemenu/sidemenu.component';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\n\nexport const boardsMenuSelector = 'boards-menu';\n\n@Component({\n selector: boardsMenuSelector,\n templateUrl: './boards-menu.component.html',\n})\n\nexport class BoardsMenuComponent extends UntilDestroyedMixin implements OnInit {\n @HostBinding('class.op-sidebar') className = true;\n\n boardOptions$:Observable = this\n .apiV3Service\n .boards\n .observeAll()\n .pipe(\n map((boards:Board[]) => {\n const menuItems:IOpSidemenuItem[] = boards.map((board) => ({\n title: board.name,\n uiSref: 'boards.partitioned.show',\n uiParams: {\n board_id: board.id,\n query_props: '',\n projects: 'projects',\n projectPath: this.currentProject.identifier,\n },\n uiOptions: { reload: true },\n }));\n\n return menuItems.sort((a, b) => a.title.localeCompare(b.title));\n }),\n );\n\n canCreateBoards$ = this\n .currentUserService\n .hasCapabilities$(\n 'boards/create',\n this.currentProject.id || null,\n )\n .pipe(this.untilDestroyed());\n\n text = {\n board: this.I18n.t('js.label_board'),\n create_new_board: this.I18n.t('js.boards.create_new'),\n };\n\n constructor(\n readonly boardService:BoardService,\n readonly apiV3Service:ApiV3Service,\n readonly currentProject:CurrentProjectService,\n readonly mainMenuService:MainMenuNavigationService,\n readonly currentUserService:CurrentUserService,\n readonly I18n:I18nService,\n readonly pathHelper:PathHelperService\n ) {\n super();\n }\n\n ngOnInit():void {\n // When activating the boards submenu,\n // either initially or through click on the toggle, load the results\n this.mainMenuService\n .onActivate('boards')\n .subscribe(() => {\n this.focusBackArrow();\n void this.boardService.loadAllBoards();\n });\n }\n\n redirectToNewBoardForm():void {\n window.location.href = this.pathHelper.newBoardsPath(this.currentProject.identifier);\n }\n\n private focusBackArrow():void {\n const buttonArrowLeft = jQuery('*[data-name=\"boards\"] .main-menu--arrow-left-to-project');\n buttonArrowLeft.focus();\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';\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 ) {\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);\n }\n\n applyNonWorkingDay({ date }:{ date?:Date }, nonWorkingDays:IDay[]):string[] {\n const formatted = moment(date).format('YYYY-MM-DD');\n if (date && (this.weekdayService.isNonWorkingDay(date) || nonWorkingDays.find((el) => el.date === formatted))) {\n return ['fc-non-working-day'];\n }\n return [];\n }\n}\n","import {\n Injectable,\n Injector,\n} 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 {\n firstValueFrom,\n Observable,\n} from 'rxjs';\nimport { WorkPackageViewFiltersService } 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 { WorkPackagesListChecksumService } from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service';\nimport {\n EventReceiveArg,\n EventResizeDoneArg,\n} from '@fullcalendar/interaction';\nimport { HalResourceEditingService } 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 { WorkPackageViewSelectionService } 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 { 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 { WorkPackageViewContextMenu } 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';\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 = 100;\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`] as string;\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('js.calendar.too_many',\n {\n count: collection.total,\n max: OpWorkPackagesCalendarService.MAX_DISPLAYED,\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(date:Date|string) {\n this.nonWorkingDays = await firstValueFrom(this.dayService.requireNonWorkingYear$(date));\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);\n await this.requireNonWorkingDays(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\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);\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 };\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 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 };\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.currentStart),\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { teamPlannerPageRefresh } from 'core-app/features/team-planner/team-planner/planner/team-planner.actions';\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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 },\n },\n {\n name: 'calendar.page.show',\n data: {\n baseRoute: 'calendar.page.show',\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { CalendarSidemenuComponent } from './sidemenu/calendar-sidemenu.component';\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 CalendarSidemenuComponent,\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 ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\n\nexport const opCalendarSidemenuSelector = 'op-calendar-sidemenu';\n\n@Component({\n selector: opCalendarSidemenuSelector,\n templateUrl: './calendar-sidemenu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarSidemenuComponent extends UntilDestroyedMixin {\n @HostBinding('class.op-sidebar') className = true;\n\n @Input() menuItems:string[] = [];\n\n @Input() projectId:string|undefined;\n\n canCreateCalendar$ = this\n .currentUserService\n .hasCapabilities$(\n 'calendars/create',\n this.currentProjectService.id || null,\n )\n .pipe(this.untilDestroyed());\n\n text = {\n calendar: this.I18n.t('js.calendar.title'),\n create_new_calendar: this.I18n.t('js.calendar.create_new'),\n };\n\n createButton = {\n title: this.text.calendar,\n uiSref: 'calendar.page.show',\n uiParams: {\n query_id: null,\n query_props: '',\n },\n };\n\n constructor(\n readonly elementRef:ElementRef,\n readonly currentUserService:CurrentUserService,\n readonly currentProjectService:CurrentProjectService,\n readonly I18n:I18nService,\n ) {\n super();\n\n populateInputsFromDataset(this);\n }\n}\n","\n\n \n \n \n \n \n \n \n\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\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 { TimeEntryEditService } from 'core-app/shared/components/time_entries/edit/edit.service';\nimport { TimeEntryCreateService } from 'core-app/shared/components/time_entries/create/create.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 { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { Subject, firstValueFrom } 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';\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 = [boolean, boolean, boolean, boolean, boolean, boolean, boolean];\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 TimeEntryEditService,\n TimeEntryCreateService,\n HalResourceEditingService,\n ],\n})\nexport class TimeEntryCalendarComponent {\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:Date, end:Date, 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 public additionalOptions:CalendarOptionsWithDayGrid = {\n editable: false,\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 };\n\n private initializeCalendar(displayedDayss:DisplayedDays) {\n void this.weekdayService.loadWeekdays()\n .toPromise()\n .then(async () => {\n const date = moment(new Date()).toString();\n await this.requireNonWorkingDays(date);\n this.additionalOptions.hiddenDays = this.setHiddenDays(displayedDayss);\n this.calendarOptions$.next(\n this.additionalOptions,\n );\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 timeEntryEdit:TimeEntryEditService,\n private timeEntryCreate:TimeEntryCreateService,\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 ) {}\n\n async requireNonWorkingDays(date:Date|string) {\n this.nonWorkingDays = await firstValueFrom(this.dayService.requireNonWorkingYear$(date));\n }\n\n public calendarEventsFunction(\n fetchInfo:EventSourceFuncArg,\n successCallback:(events:EventInput[]) => void,\n failureCallback:(error:Error) => void,\n ):void|PromiseLike {\n void this.fetchTimeEntries(fetchInfo.start, fetchInfo.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:Date, end:Date):Promise> {\n if (!this.memoizedTimeEntries\n || this.memoizedTimeEntries.start.getTime() !== start.getTime()\n || this.memoizedTimeEntries.end.getTime() !== end.getTime()) {\n const promise = firstValueFrom(\n this\n .apiV3Service\n .time_entries\n .list({ filters: this.dmFilters(start, end), pageSize: 500 }),\n )\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);\n await this.requireNonWorkingDays(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) * this.scaleRatio;\n const spentOn = entry.spentOn as string;\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);\n const spentOn = entry.spentOn as string;\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:Date, end:Date):Array<[string, FilterOperator, string[]]> {\n const startDate = moment(start).format('YYYY-MM-DD');\n const endDate = moment(end).subtract(1, 'd').format('YYYY-MM-DD');\n return [['spentOn', '<>d', [startDate, endDate]] as [string, FilterOperator, string[]],\n ['user_id', '=', ['me']] as [string, FilterOperator, [string]]];\n }\n\n private dispatchEventClick(event:CalendarViewEvent):void {\n if (event.event.extendedProps.entry) {\n this.editEvent(event.event.extendedProps.entry);\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.start));\n }\n }\n\n private editEvent(entry:TimeEntryResource):void {\n this\n .timeEntryEdit\n .edit(entry, { showUserField: false })\n .then((modificationAction) => {\n this.updateEventSet(modificationAction.entry, modificationAction.action);\n })\n .catch(() => {\n // do nothing, the user closed without changes\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.end).format('YYYY-MM-DD');\n\n void this\n .schemaCache\n .ensureLoaded(entry)\n .then((schema) => {\n this\n .apiV3Service\n .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 this\n .timeEntryCreate\n .create(date, undefined, { showUserField: false })\n .then((modificationAction) => {\n this.updateEventSet(modificationAction.entry, modificationAction.action);\n })\n .catch(() => {\n // do nothing, the user closed without changes\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\n .apiV3Service\n .time_entries\n .cache\n .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, 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) < 0.5) {\n return;\n }\n\n const formattedDuration = this.timezone.formattedDuration(timeEntry.hours);\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) < 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\n .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 as WorkPackageResource;\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)}\n
  • \n
  • \n ${schema.comment.name}:\n ${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","
    \n \n \n \n
    \n\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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} 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, {\n EventDragStartArg,\n EventDragStopArg,\n EventResizeDoneArg,\n} 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 {\n EffectCallback,\n EffectHandler,\n registerEffectCallbacks,\n} 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';\n\n@Component({\n templateUrl: './wp-calendar.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\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 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 };\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 ) {\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 // 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 height: '100%',\n headerToolbar: this.buildHeader(),\n eventSources: [\n {\n id: 'work_packages',\n events: this.calendarEventsFunction.bind(this) as unknown,\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 eventDidMount: (evt:CalendarViewEvent) => {\n const { el, event } = evt;\n if (event.source?.id === 'background') {\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 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 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: `__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 } 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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})\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 constructor(readonly elementRef:ElementRef,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n readonly http:HttpClient,\n readonly Gon:GonService,\n public eeTrialService:EnterpriseTrialService) {\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\n HttpClient,\n HttpErrorResponse,\n} from '@angular/common/http';\nimport { Query } from '@datorama/akita';\nimport {\n filter,\n map,\n shareReplay,\n} 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 { 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 { GonType } from 'core-app/core/gon/gon.service';\nimport {\n EnterpriseTrialErrorHalResource,\n EnterpriseTrialHalResource,\n IEnterpriseData,\n IEnterpriseTrial,\n} 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(readonly I18n:I18nService,\n protected http:HttpClient,\n readonly pathHelper:PathHelperService,\n protected toastService:ToastService) {\n const gon = window.gon as (GonType&{ augur_url:string, token_version:string, ee_trial_key?:string });\n this.baseUrlAugur = gon.augur_url;\n this.tokenVersion = gon.token_version;\n\n if (gon.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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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} 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 const freeTrialButtonSelector = 'free-trial-button';\n\nexport interface EETrialKey {\n created:string;\n value:string;\n}\n@Component({\n selector: freeTrialButtonSelector,\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(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 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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { QueryFilterInstanceSchemaResource } 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';\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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { 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 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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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() {\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { 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:HalResource|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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 HttpClient,\n HttpErrorResponse,\n HttpParams,\n} from '@angular/common/http';\nimport {\n catchError,\n map,\n} from 'rxjs/operators';\nimport {\n Observable,\n throwError,\n} 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 {\n HalLink,\n HalLinkInterface,\n} from 'core-app/features/hal/hal-link/hal-link';\nimport { URLParamsEncoder } from 'core-app/features/hal/services/url-params-encoder';\nimport {\n HalResource,\n HalResourceClass,\n} 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 * 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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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\nexport const homescreenNewFeaturesBlockSelector = 'homescreen-new-features-block';\n\n// The key used in the I18n files to distinguish between versions.\nconst OpVersionI18n = '13_0';\n\n/** Update the teaser image to the next version */\nconst featureTeaserImage = '13_0_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: homescreenNewFeaturesBlockSelector,\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 it's 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 const url = this.translated('learn_about_link');\n return this.domSanitizer.bypassSecurityTrustResourceUrl(url);\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","\n \n \n \n \n\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport {\n combineLatest,\n merge,\n timer,\n} from 'rxjs';\nimport {\n filter,\n map,\n shareReplay,\n switchMap,\n throttleTime,\n} from 'rxjs/operators';\nimport { ActiveWindowService } from 'core-app/core/active-window/active-window.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { IanBellService } from 'core-app/features/in-app-notifications/bell/state/ian-bell.service';\n\nexport const opInAppNotificationBellSelector = 'op-in-app-notification-bell';\nconst ACTIVE_POLLING_INTERVAL = 10000;\nconst INACTIVE_POLLING_INTERVAL = 120000;\n\n@Component({\n selector: opInAppNotificationBellSelector,\n templateUrl: './in-app-notification-bell.component.html',\n styleUrls: ['./in-app-notification-bell.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InAppNotificationBellComponent {\n polling$ = merge(\n timer(10, ACTIVE_POLLING_INTERVAL).pipe(filter(() => this.activeWindow.isActive)),\n timer(10, INACTIVE_POLLING_INTERVAL).pipe(filter(() => !this.activeWindow.isActive)),\n )\n .pipe(\n throttleTime(ACTIVE_POLLING_INTERVAL),\n switchMap(() => this.storeService.fetchUnread()),\n );\n\n unreadCount$ = combineLatest([\n this.storeService.unread$,\n this.polling$,\n ]).pipe(\n map(([count]) => count),\n shareReplay(1),\n );\n\n unreadCountText$ = this\n .unreadCount$\n .pipe(\n map((count) => {\n if (count > 99) {\n return '99+';\n }\n\n if (count <= 0) {\n return '';\n }\n\n return count;\n }),\n );\n\n constructor(\n readonly storeService:IanBellService,\n readonly apiV3Service:ApiV3Service,\n readonly activeWindow:ActiveWindowService,\n readonly pathHelper:PathHelperService,\n ) { }\n\n notificationsPath():string {\n return this.pathHelper.notificationsPath();\n }\n}\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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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.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 (count) => {\n this.store.update({ totalUnread: count });\n },\n (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 { ApiV3ListParameters } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\n\nexport interface IanMenuGroupingData {\n value:string;\n count:number;\n projectHasParent?:boolean;\n _links:{\n valueLink:{\n href:string;\n }[];\n };\n}\n\nexport interface BaseMenuItemData {\n value:string;\n count:number;\n}\n\nexport interface IanMenuState {\n notificationsByProject:IanMenuGroupingData[],\n notificationsByReason:IanMenuGroupingData[],\n projectsFilter:ApiV3ListParameters,\n}\n\nexport const IAN_MENU_PROJECT_FILTERS:ApiV3ListParameters = {\n pageSize: 100,\n groupBy: 'project',\n filters: [['read_ian', '=', false]],\n};\n\nexport const IAN_MENU_REASON_FILTERS:ApiV3ListParameters = {\n pageSize: 100,\n groupBy: 'reason',\n filters: [['read_ian', '=', false]],\n};\n\nexport function createInitialState():IanMenuState {\n return {\n notificationsByProject: [],\n notificationsByReason: [],\n projectsFilter: {},\n };\n}\n\n@StoreConfig({ name: 'ian-menu' })\nexport class IanMenuStore extends Store {\n constructor() {\n super(createInitialState());\n }\n}\n","import {\n Injectable,\n Injector,\n} from '@angular/core';\nimport {\n notificationCountIncreased,\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 { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3ListParameters } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { InAppNotificationsResourceService } from 'core-app/core/state/in-app-notifications/in-app-notifications.service';\nimport { ProjectsResourceService } from 'core-app/core/state/projects/projects.service';\nimport {\n IAN_MENU_PROJECT_FILTERS,\n IAN_MENU_REASON_FILTERS,\n IanMenuStore,\n} from './ian-menu.store';\nimport { Query } from '@datorama/akita';\nimport {\n map,\n switchMap,\n} from 'rxjs/operators';\nimport { combineLatest } from 'rxjs';\n\n@Injectable()\n@EffectHandler\nexport class IanMenuService {\n readonly id = 'ian-center';\n\n readonly store = new IanMenuStore();\n\n readonly query = new Query(this.store);\n\n projectsFilter$ = this.query.select('projectsFilter');\n\n projectsForNotifications$ = this\n .projectsFilter$\n .pipe(\n switchMap((filterParams) => this.projectsResourceService.collection(filterParams)),\n );\n\n notificationsByProject$ = combineLatest([\n this.query.select('notificationsByProject'),\n this.projectsForNotifications$,\n ]).pipe(\n map(([notifications, projects]) => notifications.map((notification) => {\n const project = projects.find((p) => p.id.toString() === idFromLink(notification._links.valueLink[0].href));\n return {\n ...notification,\n projectHasParent: !!project?._links.parent.href,\n };\n })),\n );\n\n notificationsByReason$ = this.query.select('notificationsByReason');\n\n constructor(\n readonly injector:Injector,\n readonly ianResourceService:InAppNotificationsResourceService,\n readonly projectsResourceService:ProjectsResourceService,\n readonly actions$:ActionsService,\n readonly apiV3Service:ApiV3Service,\n ) {\n }\n\n /**\n * Check for updates after bell count increased\n */\n @EffectCallback(notificationCountIncreased)\n private checkForNewNotifications() {\n this.reload();\n }\n\n /**\n * Reload after notifications were successfully marked as read\n */\n @EffectCallback(notificationsMarkedRead)\n private reloadOnNotificationRead() {\n return this.reload();\n }\n\n public reload():void {\n this.ianResourceService.fetchCollection(IAN_MENU_PROJECT_FILTERS)\n .subscribe((data) => {\n const projectsFilter:ApiV3ListParameters = {\n pageSize: 100,\n filters: [],\n };\n\n if (data.groups) {\n projectsFilter.filters = [['id', '=', data.groups.map((group) => idFromLink(group._links.valueLink[0].href))]];\n }\n\n this.store.update({\n notificationsByProject: data.groups,\n projectsFilter,\n });\n\n // Only request if there are any groups\n if (data.groups && data.groups.length > 0) {\n this.projectsResourceService.fetchCollection(projectsFilter).subscribe();\n }\n });\n this.ianResourceService.fetchCollection(IAN_MENU_REASON_FILTERS)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n .subscribe((data) => this.store.update({ notificationsByReason: data.groups }));\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 OnInit,\n HostBinding,\n} from '@angular/core';\nimport { combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { StateService } from '@uirouter/core';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { INotificationPageQueryParameters } from '../../in-app-notifications.routes';\nimport { IanMenuService } from './state/ian-menu.service';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\n\nexport const ianMenuSelector = 'op-ian-menu';\n\nconst getUiLinkForFilters = (filters:INotificationPageQueryParameters = {}) => ({\n uiSref: 'notifications.center.show',\n uiParams: filters,\n});\n\n@Component({\n selector: ianMenuSelector,\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.sass'],\n providers: [IanMenuService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IanMenuComponent implements OnInit {\n @HostBinding('class.op-ian-menu') className = true;\n\n baseMenuItems = [\n {\n key: 'inbox',\n title: this.I18n.t('js.notifications.menu.inbox'),\n icon: 'inbox',\n ...getUiLinkForFilters({ filter: '', name: '' }),\n },\n ];\n\n reasonMenuItems = [\n {\n key: 'mentioned',\n title: this.I18n.t('js.notifications.menu.mentioned'),\n icon: 'mention',\n ...getUiLinkForFilters({ filter: 'reason', name: 'mentioned' }),\n },\n {\n key: 'assigned',\n title: this.I18n.t('js.label_assignee'),\n icon: 'assigned',\n ...getUiLinkForFilters({ filter: 'reason', name: 'assigned' }),\n },\n {\n key: 'responsible',\n title: this.I18n.t('js.notifications.menu.accountable'),\n icon: 'accountable',\n ...getUiLinkForFilters({ filter: 'reason', name: 'responsible' }),\n },\n {\n key: 'watched',\n title: this.I18n.t('js.notifications.menu.watched'),\n icon: 'watching',\n ...getUiLinkForFilters({ filter: 'reason', name: 'watched' }),\n },\n {\n key: 'dateAlert',\n title: this.I18n.t('js.notifications.menu.date_alert'),\n icon: 'date-alert',\n isEnterprise: true,\n ...this.eeGuardedDateAlertRoute,\n },\n ];\n\n notificationsByProject$ = this.ianMenuService.notificationsByProject$.pipe(\n map((items) => items\n .map((item) => ({\n ...item,\n title: (item.projectHasParent ? '... ' : '') + item.value,\n ...getUiLinkForFilters({ filter: 'project', name: idFromLink(item._links.valueLink[0].href) }),\n }))\n .sort((a, b) => {\n if (b.projectHasParent && !a.projectHasParent) {\n return -1;\n }\n\n return a.value.toLowerCase().localeCompare(b.value.toLowerCase());\n })),\n );\n\n notificationsByReason$ = this.ianMenuService.notificationsByReason$.pipe(\n map((items) => this.reasonMenuItems.map((reason) => ({\n ...items.find((item) => item.value === reason.key),\n ...reason,\n }))),\n );\n\n menuItems$ = combineLatest([\n this.notificationsByProject$,\n this.notificationsByReason$,\n ]).pipe(\n map(([byProject, byReason]) => [\n ...this.baseMenuItems.map((baseMenuItem) => ({\n ...baseMenuItem,\n count: byProject.reduce((a, b) => a + (b.count || 0), 0),\n })),\n {\n title: this.I18n.t('js.notifications.menu.by_reason'),\n collapsible: true,\n children: byReason,\n },\n {\n title: this.I18n.t('js.notifications.menu.by_project'),\n collapsible: true,\n children: byProject,\n },\n ]),\n );\n\n text = {\n title: this.I18n.t('js.notifications.title'),\n button_close: this.I18n.t('js.button_close'),\n no_results: {\n unread: this.I18n.t('js.notifications.no_unread'),\n all: this.I18n.t('js.notice_no_results_to_display'),\n },\n };\n\n constructor(\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n readonly ianMenuService:IanMenuService,\n readonly state:StateService,\n readonly bannersService:BannersService,\n ) { }\n\n ngOnInit():void {\n this.ianMenuService.reload();\n }\n\n private get eeGuardedDateAlertRoute() {\n if (this.bannersService.eeShowBanners) {\n return { uiSref: 'notifications.date_alerts_upsale', uiParams: null, uiOptions: { inherit: false } };\n }\n\n return getUiLinkForFilters({ filter: 'reason', name: 'dateAlert' });\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 { INotificationPageQueryParameters } from 'core-app/features/in-app-notifications/in-app-notifications.routes';\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\n debounceTime,\n defaultIfEmpty,\n distinctUntilChanged,\n map,\n mapTo,\n pluck,\n shareReplay,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators';\nimport {\n forkJoin,\n from,\n Observable,\n Subject,\n} from 'rxjs';\nimport { ID, Query } from '@datorama/akita';\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { StateService } from '@uirouter/angular';\n\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IToast, ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport {\n centerUpdatedInPlace,\n markNotificationsAsRead,\n markNotificationsAsReadByFilters,\n notificationCountIncreased,\n notificationsMarkedRead,\n} from 'core-app/core/state/in-app-notifications/in-app-notifications.actions';\nimport { INotification } from 'core-app/core/state/in-app-notifications/in-app-notification.model';\nimport { EffectCallback, EffectHandler } from 'core-app/core/state/effects/effect-handler.decorator';\nimport { ActionsService } from 'core-app/core/state/actions/actions.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport {\n InAppNotificationsResourceService,\n} from 'core-app/core/state/in-app-notifications/in-app-notifications.service';\nimport { mapHALCollectionToIDCollection } from 'core-app/core/state/resource-store';\nimport { INotificationPageQueryParameters } from 'core-app/features/in-app-notifications/in-app-notifications.routes';\nimport {\n IAN_FACET_FILTERS,\n IanCenterStore,\n InAppNotificationFacet,\n} from 'core-app/features/in-app-notifications/center/state/ian-center.store';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { DeviceService } from 'core-app/core/browser/device.service';\nimport { ApiV3ListFilter, ApiV3ListParameters } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\n\n@Injectable()\n@EffectHandler\nexport class IanCenterService extends UntilDestroyedMixin {\n readonly id = 'ian-center';\n\n readonly store = new IanCenterStore();\n\n readonly query = new Query(this.store);\n\n activeFacet$ = this.query.select('activeFacet');\n\n notLoaded$ = this.query.select('notLoaded');\n\n activeCollection$ = this.query.select('activeCollection');\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n activeReason$:Observable = this.uiRouterGlobals.params$!.pipe(\n this.untilDestroyed(),\n distinctUntilChanged(),\n map((params) => {\n if (params.filter === 'reason') {\n return params.name as string;\n }\n\n return null;\n }),\n shareReplay(1),\n );\n\n loading$:Observable = this.query.selectLoading();\n\n selectNotifications$:Observable = this\n .activeCollection$\n .pipe(\n switchMap((collection) => {\n const lookupId = (id:ID) => this.resourceService.lookup(id).pipe(take(1));\n return forkJoin(collection.ids.map(lookupId))\n .pipe(defaultIfEmpty([]));\n }),\n );\n\n aggregatedCenterNotifications$ = this\n .selectNotifications$\n .pipe(\n map((notifications) => (\n _.groupBy(notifications, (notification) => notification._links.resource?.href || 'none')\n )),\n distinctUntilChanged(),\n );\n\n notifications$ = this\n .aggregatedCenterNotifications$\n .pipe(\n map((items) => Object.values(items)),\n distinctUntilChanged(),\n );\n\n hasNotifications$ = this\n .notifications$\n .pipe(\n distinctUntilChanged(),\n map((items) => items.length > 0),\n distinctUntilChanged(),\n );\n\n hasMoreThanPageSize$ = this\n .notLoaded$\n .pipe(\n map((notLoaded) => notLoaded > 0),\n distinctUntilChanged(),\n );\n\n get params():ApiV3ListParameters {\n const state = this.store.getValue();\n const hasFilters = state.filters.name && state.filters.filter;\n return {\n ...state.params,\n filters: [\n ...IAN_FACET_FILTERS[state.activeFacet],\n ...(\n hasFilters\n ? ([[state.filters.filter, '=', [state.filters.name]]] as ApiV3ListFilter[])\n : []\n ),\n ],\n };\n }\n\n private activeReloadToast:IToast|null = null;\n\n private reload = new Subject();\n\n private onReload = this.reload.pipe(\n debounceTime(0),\n tap((setToLoading) => {\n if (setToLoading) {\n this.store.setLoading(true);\n }\n }),\n switchMap(() => this\n .resourceService\n .fetchCollection(this.params)\n .pipe(\n switchMap(\n (results) => from(this.sideLoadInvolvedWorkPackages(results._embedded.elements))\n .pipe(\n mapTo(mapHALCollectionToIDCollection(results)),\n ),\n ),\n )),\n\n // We need to be slower than the onReload subscribers set below.\n // Because they're subscribers they're called next in the callback queue.\n // We need our loading state to be set to false only after all data is in the store,\n // but we cannot guarantee that here, since the data is set _after_ this piece of code\n // gets run. The solution is to queue this piece of code back, allowing the store contents\n // update before the loading state gets reset.\n tap(() => setTimeout(() => this.store.setLoading(false))),\n );\n\n public selectedNotificationIndex = 0;\n\n public selectedNotification:INotification;\n\n stateChanged$ = this.uiRouterGlobals.params$?.pipe(\n this.untilDestroyed(),\n pluck('workPackageId'),\n distinctUntilChanged(),\n map((workPackageId:string) => (workPackageId ? this.apiV3Service.work_packages.id(workPackageId).path : undefined)),\n shareReplay(),\n );\n\n constructor(\n readonly I18n:I18nService,\n readonly injector:Injector,\n readonly resourceService:InAppNotificationsResourceService,\n readonly actions$:ActionsService,\n readonly apiV3Service:ApiV3Service,\n readonly toastService:ToastService,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly state:StateService,\n readonly deviceService:DeviceService,\n ) {\n super();\n this.reload.subscribe();\n\n if (this.stateChanged$) {\n this.stateChanged$.subscribe(() => {\n this.updateSelectedNotification();\n });\n }\n }\n\n setFilters(filters:INotificationPageQueryParameters):void {\n this.store.update({ filters });\n this.onReload.pipe(take(1)).subscribe((collection) => {\n this.store.update({ activeCollection: collection });\n });\n this.reload.next(true);\n }\n\n setFacet(facet:InAppNotificationFacet):void {\n this.store.update({ activeFacet: facet });\n this.onReload.pipe(take(1)).subscribe((collection) => {\n this.store.update({ activeCollection: collection });\n });\n\n if (facet === 'unread') {\n if (this.selectedNotification?.readIAN) {\n this.goToCenter();\n }\n }\n this.reload.next(true);\n }\n\n markAsRead(notifications:ID[]):void {\n this.actions$.dispatch(\n markNotificationsAsRead({ origin: this.id, notifications }),\n );\n }\n\n markAllAsRead():void {\n const filters = this.params.filters;\n if (filters === undefined) {\n return;\n }\n\n this.actions$.dispatch(\n markNotificationsAsReadByFilters({ origin: this.id, filters }),\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n openSplitScreen(workPackageId:string|null, tabIdentifier:string = 'activity'):void {\n void this.state.go(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/restrict-template-expressions\n `${this.state.current.data.baseRoute}.details.tabs`,\n { workPackageId, tabIdentifier },\n );\n }\n\n openFullView(workPackageId:string|null):void {\n void this.state.go('work-packages.show', { workPackageId });\n }\n\n goToCenter():void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument\n void this.state.go(this.state.current.data.baseRoute);\n }\n\n showNextNotification():void {\n void this\n .notifications$\n .pipe(take(1))\n .subscribe((notifications:INotification[][]) => {\n if (notifications.length <= 0) {\n void this.state.go(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/restrict-template-expressions\n `${this.state.current.data.baseRoute}`,\n );\n return;\n }\n if (notifications[0][0]._links.resource || notifications[this.selectedNotificationIndex][0]._links.resource) {\n const wpId = idFromLink(notifications[this.selectedNotificationIndex >= notifications.length ? 0 : this.selectedNotificationIndex][0]._links.resource.href);\n this.openSplitScreen(wpId);\n }\n });\n }\n\n /**\n * Check for updates after bell count increased\n */\n @EffectCallback(notificationCountIncreased)\n private checkForNewNotifications() {\n this.onReload.pipe(take(1)).subscribe((collection) => {\n const { activeCollection } = this.query.getValue();\n const hasNewNotifications = !collection.ids.reduce(\n (allInOldCollection, id) => allInOldCollection && activeCollection.ids.includes(id),\n true,\n );\n\n if (!hasNewNotifications) {\n return;\n }\n\n if (this.activeReloadToast) {\n this.toastService.remove(this.activeReloadToast);\n this.activeReloadToast = null;\n }\n\n this.activeReloadToast = this.toastService.add({\n type: 'info',\n message: this.I18n.t('js.notifications.center.new_notifications.message'),\n link: {\n text: this.I18n.t('js.notifications.center.new_notifications.link_text'),\n target: () => {\n this.store.update({ activeCollection: collection });\n this.actions$.dispatch(centerUpdatedInPlace({ origin: this.id }));\n this.activeReloadToast = null;\n },\n },\n });\n });\n this.reload.next(false);\n }\n\n /**\n * Reload after notifications were successfully marked as read\n */\n @EffectCallback(notificationsMarkedRead)\n private reloadOnNotificationRead(action:ReturnType) {\n if (action.all) {\n this.store.update({ activeCollection: { ids: [] } });\n return;\n }\n\n const { activeCollection } = this.query.getValue();\n this.store.update({\n activeCollection: {\n ids: activeCollection.ids.filter((activeID) => !action.notifications.includes(activeID)),\n },\n });\n\n if (!this.deviceService.isMobile && this.state.includes('**.details.*')) {\n this.showNextNotification();\n }\n }\n\n private sideLoadInvolvedWorkPackages(elements:INotification[]):Promise {\n const { cache } = this.apiV3Service.work_packages;\n const wpIds = elements\n .map((element) => {\n const href = element._links.resource?.href;\n return href && HalResource.matchFromLink(href, 'work_packages');\n })\n .filter((id) => id && cache.stale(id)) as string[];\n\n const promise = this\n .apiV3Service\n .work_packages\n .requireAll(_.compact(wpIds));\n\n wpIds.forEach((id) => {\n cache.clearAndLoad(\n id,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n from(promise).pipe(map(() => cache.current(id)!)),\n );\n });\n\n return promise;\n }\n\n private updateSelectedNotification() {\n this\n .notifications$\n .pipe(\n take(1),\n )\n .subscribe(\n (notifications:INotification[][]) => {\n for (let i = 0; i < notifications.length; ++i) {\n if (notifications[i][0]._links.resource\n && idFromLink(notifications[i][0]._links.resource.href) === this.uiRouterGlobals.params.workPackageId) {\n this.selectedNotificationIndex = i;\n [this.selectedNotification] = notifications[i];\n return;\n }\n }\n },\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\nimport { StatusResource } from 'core-app/features/hal/resources/status-resource';\n\n@Component({\n selector: 'op-in-app-notification-status',\n styleUrls: ['./in-app-notification-status.component.sass'],\n templateUrl: './in-app-notification-status.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InAppNotificationStatusComponent implements OnChanges {\n @Input() status:StatusResource;\n\n highlightClass:string;\n\n ngOnChanges(changes:SimpleChanges):void {\n if (changes.status) {\n const status = changes.status as { currentValue:StatusResource };\n this.highlightClass = Highlighting.backgroundClass('status', status.currentValue.id || '');\n }\n }\n}\n","\n \n\n","\n
    \n \n 1 && actors.length < 4\" textContent=\" {{ text.and }} \">\n \n 2) || (idx === 1 && actors.length > 3)\" [textContent]=\"', '\">\n \n 3\"> {{ text_for_additional_authors(actors.length - 3) }}\n
    \n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { INotification } from 'core-app/core/state/in-app-notifications/in-app-notification.model';\nimport { PrincipalLike } from 'core-app/shared/components/principal/principal-types';\nimport {\n Observable,\n timer,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n} from 'rxjs/operators';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { DeviceService } from 'core-app/core/browser/device.service';\n\n@Component({\n selector: 'op-in-app-notification-actors-line',\n templateUrl: './in-app-notification-actors-line.component.html',\n styleUrls: ['./in-app-notification-actors-line.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class InAppNotificationActorsLineComponent implements OnInit {\n @HostBinding('class.op-ian-actors') className = true;\n\n @Input() aggregatedNotifications:INotification[];\n\n @Input() notification:INotification;\n\n // The actor, if any\n actors:PrincipalLike[] = [];\n\n // Fixed notification time\n fixedTime:string;\n\n // Format relative elapsed time (n seconds/minutes/hours ago)\n // at an interval for auto updating\n relativeTime$:Observable;\n\n text = {\n and: this.I18n.t('js.notifications.center.label_actor_and'),\n and_other_singular: this.I18n.t('js.notifications.center.and_more_users.one'),\n and_other_plural: (count:number):string => this.I18n.t('js.notifications.center.and_more_users.other',\n { count }),\n loading: this.I18n.t('js.ajax.loading'),\n placeholder: this.I18n.t('js.placeholders.default'),\n mark_as_read: this.I18n.t('js.notifications.center.mark_as_read'),\n updated_by_at: (age:string):string => this.I18n.t('js.notifications.center.text_update_date',\n { date: age }),\n };\n\n constructor(\n readonly deviceService:DeviceService,\n private I18n:I18nService,\n private timezoneService:TimezoneService,\n ) { }\n\n ngOnInit():void {\n this.buildActors();\n this.buildTime();\n }\n\n text_for_additional_authors(number:number):string {\n if (number === 1) {\n return this.text.and_other_singular;\n }\n\n return this.text.and_other_plural(number);\n }\n\n private buildTime() {\n this.fixedTime = this.timezoneService.formattedDatetime(this.notification.createdAt);\n this.relativeTime$ = timer(0, 10000)\n .pipe(\n map(() => this.text.updated_by_at(\n this.timezoneService.formattedRelativeDateTime(this.notification.createdAt),\n )),\n distinctUntilChanged(),\n );\n }\n\n private buildActors() {\n const actors = this\n .aggregatedNotifications\n .map((notification) => {\n const { actor } = notification._links;\n\n if (!actor) {\n return null;\n }\n\n return {\n href: actor.href,\n name: actor.title,\n };\n })\n .filter((actor) => actor !== null) as PrincipalLike[];\n\n this.actors = _.uniqBy(actors, (item) => item.href);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { INotification } from 'core-app/core/state/in-app-notifications/in-app-notification.model';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport * as moment from 'moment';\nimport { Moment } from 'moment';\n\n@Component({\n selector: 'op-in-app-notification-date-alert',\n templateUrl: './in-app-notification-date-alert.component.html',\n styleUrls: ['./in-app-notification-date-alert.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class InAppNotificationDateAlertComponent implements OnInit {\n @Input() aggregatedNotifications:INotification[];\n\n @Input() workPackage:WorkPackageResource;\n\n @HostBinding('class.op-ian-date-alert') className = true;\n\n @HostBinding('class.op-ian-date-alert_overdue') isOverdue:boolean;\n\n alertText:string;\n\n dateIsPast:boolean;\n\n propertyText:string;\n\n text = {\n work_package_is: this.I18n.t('js.notifications.date_alerts.work_package_is'),\n overdue: this.I18n.t('js.notifications.date_alerts.overdue'),\n overdue_since: (difference_in_days:string):string =>\n this.I18n.t('js.notifications.date_alerts.overdue_since', { difference_in_days }),\n property_is: (difference_in_days:string):string =>\n this.I18n.t('js.notifications.date_alerts.property_is', { difference_in_days }),\n property_was: (difference_in_days:string):string =>\n this.I18n.t('js.notifications.date_alerts.property_was', { difference_in_days }),\n property_deleted: this.I18n.t('js.notifications.date_alerts.property_is_deleted'),\n startDate: this.I18n.t('js.work_packages.properties.startDate'),\n dueDate: this.I18n.t('js.work_packages.properties.dueDate'),\n date: this.I18n.t('js.notifications.date_alerts.milestone_date'),\n due_today: this.I18n.t('js.notifications.date_alerts.property_today'),\n };\n\n constructor(\n private I18n:I18nService,\n private timezoneService:TimezoneService,\n ) { }\n\n ngOnInit():void {\n // Find the most important date alert\n const interestingAlert = this.deriveMostRelevantAlert(this.aggregatedNotifications);\n\n const detail = interestingAlert._embedded.details[0];\n const property = detail.property;\n\n if (!detail.value) {\n this.propertyText = this.text[property];\n this.alertText = this.text.property_deleted;\n } else {\n this.deriveDueDate(detail.value, property);\n }\n }\n\n private deriveDueDate(value:string, property:'startDate'|'dueDate'|'date') {\n const dateValue = this.timezoneService.parseISODate(value).startOf('day');\n const today = moment();\n this.dateIsPast = dateValue.isBefore(today, 'day');\n this.isOverdue = this.dateIsPast && ['date', 'dueDate'].includes(property);\n const diff = this.dateDiff(dateValue);\n this.propertyText = (this.isOverdue && diff > 0) ? this.text.overdue : this.text[property];\n this.alertText = this.buildAlertText(diff);\n }\n\n private buildAlertText(daysDiff:number):string {\n if (daysDiff === 0) {\n return this.text.due_today;\n }\n\n const daysText = this.I18n.t('js.units.day', { count: daysDiff });\n if (this.isOverdue) {\n return this.text.overdue_since(daysText);\n }\n\n if (this.dateIsPast) {\n return this.text.property_was(daysText);\n }\n\n return this.text.property_is(daysText);\n }\n\n private dateDiff(reference:Moment):number {\n const now = moment().startOf('day');\n return Math.abs(now.diff(reference, 'days'));\n }\n\n private deriveMostRelevantAlert(aggregatedNotifications:INotification[]) {\n // Second case: We have one date alert + some others\n const dateAlerts = aggregatedNotifications.filter((notification) => notification.reason === 'dateAlert');\n const first = aggregatedNotifications[0];\n if (dateAlerts.length > 1) {\n const found = dateAlerts.find((notification) => notification._embedded.details[0].property === 'dueDate');\n return found || first;\n }\n\n // We only have one\n return first;\n }\n}\n","\n&ngsp;\n\n","\n \n \n
    \n \n
    \n\n \n \n \n - -\n \n\n \n \n {{ item.key }}, \n \n \n\n \n\n
    \n \n \n \n \n
    \n \n\n \n \n \n \n \n \n\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 HostBinding,\n Input,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { Observable } from 'rxjs';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport {\n map,\n shareReplay,\n withLatestFrom,\n} from 'rxjs/operators';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { take } from 'rxjs/internal/operators/take';\nimport { StateService } from '@uirouter/angular';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { INotification } from 'core-app/core/state/in-app-notifications/in-app-notification.model';\nimport { IanCenterService } from 'core-app/features/in-app-notifications/center/state/ian-center.service';\nimport { DeviceService } from 'core-app/core/browser/device.service';\n\n@Component({\n selector: 'op-in-app-notification-entry',\n templateUrl: './in-app-notification-entry.component.html',\n styleUrls: ['./in-app-notification-entry.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class InAppNotificationEntryComponent implements OnInit {\n @HostBinding('class.op-ian-item') className = true;\n\n @Input() notification:INotification;\n\n @Input() aggregatedNotifications:INotification[];\n\n workPackage$:Observable|null = null;\n\n showDateAlert$:Observable = this\n .storeService\n .activeReason$\n .pipe(\n map((reason) => reason === 'date_alert'),\n map((dateAlertFiltered) => {\n const dateAlerts = this.aggregatedNotifications.filter((notification) => notification.reason === 'dateAlert');\n return dateAlertFiltered || dateAlerts.length === this.aggregatedNotifications.length;\n }),\n shareReplay(1),\n );\n\n loading$ = this.storeService.query.selectLoading();\n\n stateChanged$ = this.storeService.stateChanged$;\n\n // The translated reason, if available\n translatedReasons:{ [reason:string]:number };\n\n project?:{ href:string, title:string, showUrl:string };\n\n text = {\n loading: this.I18n.t('js.ajax.loading'),\n placeholder: this.I18n.t('js.placeholders.default'),\n mark_as_read: this.I18n.t('js.notifications.center.mark_as_read'),\n };\n\n private clickTimer:ReturnType;\n\n constructor(\n readonly apiV3Service:ApiV3Service,\n readonly I18n:I18nService,\n readonly storeService:IanCenterService,\n readonly timezoneService:TimezoneService,\n readonly pathHelper:PathHelperService,\n readonly state:StateService,\n readonly deviceService:DeviceService,\n ) {\n }\n\n ngOnInit():void {\n this.buildTranslatedReason();\n this.buildProject();\n this.loadWorkPackage();\n }\n\n private loadWorkPackage() {\n const href = this.notification._links.resource?.href;\n const id = href && HalResource.matchFromLink(href, 'work_packages');\n // not a work package reference\n if (id) {\n this.workPackage$ = this\n .apiV3Service\n .work_packages\n .id(id)\n .requireAndStream();\n }\n }\n\n onClick():void {\n clearTimeout(this.clickTimer); // Clear timer from the any previous single click events.\n this.clickTimer = setTimeout(() => {\n // The single click logic is handled in a timeout, because\n // it needs to be canceled in case the event is a double click.\n this.showDetails();\n }, 250);\n }\n\n showDetails():void {\n if (!this.workPackage$) {\n return;\n }\n\n this\n .workPackage$\n .pipe(\n take(1),\n withLatestFrom(this.showDateAlert$),\n )\n .subscribe(([wp, openDetailsTab]) => {\n const tab = openDetailsTab ? 'overview' : 'activity';\n this.storeService.openSplitScreen(wp.id, tab);\n });\n }\n\n onDoubleClick():void {\n clearTimeout(this.clickTimer); // Clear timer from the single click event onClick.\n this.showFullView();\n }\n\n showFullView():void {\n const href = this.notification._links.resource?.href;\n const id = href && HalResource.matchFromLink(href, 'work_packages');\n\n this.storeService.openFullView(id);\n }\n\n projectClicked(event:MouseEvent):void { // eslint-disable-line class-methods-use-this\n event.stopPropagation();\n }\n\n markAsRead(event:MouseEvent, notifications:INotification[]):void {\n event.stopPropagation();\n this.storeService.markAsRead(notifications.map((el) => el.id));\n }\n\n isMobile():boolean {\n return this.deviceService.isMobile;\n }\n\n private buildTranslatedReason() {\n const reasons:{ [reason:string]:number } = {};\n\n this\n .aggregatedNotifications\n .forEach((notification) => {\n const translatedReason = this.I18n.t(\n `js.notifications.reasons.${notification.reason}`,\n { defaultValue: notification.reason || this.text.placeholder },\n );\n\n reasons[translatedReason] = reasons[translatedReason] || 0;\n reasons[translatedReason] += 1;\n });\n\n this.translatedReasons = reasons;\n }\n\n private buildProject() {\n const { project } = this.notification._links;\n\n if (project) {\n this.project = {\n ...project,\n showUrl: this.pathHelper.projectPath(idFromLink(project.href)),\n };\n }\n }\n}\n","
    \n \n \n \n \n \n \n \n \n
    \n \n

    \n 0)\">\n \n

    \n 0\"\n [textContent]=\"text.no_results.with_current_filter\"\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport { StateService } from '@uirouter/angular';\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { IanCenterService } from 'core-app/features/in-app-notifications/center/state/ian-center.service';\nimport {\n INotification,\n NOTIFICATIONS_MAX_SIZE,\n} from 'core-app/core/state/in-app-notifications/in-app-notification.model';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { IanBellService } from 'core-app/features/in-app-notifications/bell/state/ian-bell.service';\nimport { imagePath } from 'core-app/shared/helpers/images/path-helper';\n\n@Component({\n selector: 'op-in-app-notification-center',\n templateUrl: './in-app-notification-center.component.html',\n styleUrls: ['./in-app-notification-center.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InAppNotificationCenterComponent implements OnInit {\n maxSize = NOTIFICATIONS_MAX_SIZE;\n\n hasMoreThanPageSize$ = this.storeService.hasMoreThanPageSize$;\n\n hasNotifications$ = this.storeService.hasNotifications$;\n\n notifications$ = this.storeService.notifications$;\n\n loading$ = this.storeService.loading$;\n\n totalCount$ = this.bellService.unread$;\n\n totalCountWarning$ = this\n .storeService\n .notLoaded$\n .pipe(\n filter((notLoaded) => notLoaded > 0),\n map((notLoaded:number) => this.I18n.t(\n 'js.notifications.center.total_count_warning',\n { newest_count: this.maxSize, more_count: notLoaded },\n )),\n );\n\n stateChanged$ = this.storeService.stateChanged$;\n\n reasonMenuItems = [\n {\n key: 'mentioned',\n title: this.I18n.t('js.notifications.menu.mentioned'),\n },\n {\n key: 'assigned',\n title: this.I18n.t('js.label_assignee'),\n },\n {\n key: 'responsible',\n title: this.I18n.t('js.notifications.menu.accountable'),\n },\n {\n key: 'watched',\n title: this.I18n.t('js.notifications.menu.watched'),\n },\n {\n key: 'dateAlert',\n title: this.I18n.t('js.notifications.menu.date_alert'),\n },\n ];\n\n selectedFilter = this.reasonMenuItems.find((item) => item.key === this.uiRouterGlobals.params.name)?.title;\n\n image = {\n no_notification: imagePath('notification-center/empty-state-no-notification.svg'),\n no_selection: imagePath('notification-center/empty-state-no-selection.svg'),\n loading: imagePath('notification-center/notification_loading.gif'),\n };\n\n trackNotificationGroups = (i:number, item:INotification[]):string => item\n .map((el) => `${el.id}@${el.updatedAt}`)\n .join(',');\n\n text = {\n no_notification: this.I18n.t('js.notifications.center.empty_state.no_notification'),\n no_notification_with_current_filter_project: this.I18n.t('js.notifications.center.empty_state.no_notification_with_current_project_filter'),\n no_notification_with_current_filter: this.I18n.t('js.notifications.center.empty_state.no_notification_with_current_filter', { filter: this.selectedFilter }),\n no_selection: this.I18n.t('js.notifications.center.empty_state.no_selection'),\n change_notification_settings: this.I18n.t(\n 'js.notifications.settings.change_notification_settings',\n { url: this.pathService.myNotificationsSettingsPath() },\n ),\n title: this.I18n.t('js.notifications.title'),\n button_close: this.I18n.t('js.button_close'),\n no_results: {\n at_all: this.I18n.t(\n 'js.notifications.center.no_results.at_all',\n { url: this.pathService.myNotificationsSettingsPath() },\n ),\n with_current_filter: this.I18n.t('js.notifications.center.no_results.with_current_filter'),\n },\n };\n\n constructor(\n readonly cdRef:ChangeDetectorRef,\n readonly elementRef:ElementRef,\n readonly I18n:I18nService,\n readonly storeService:IanCenterService,\n readonly bellService:IanBellService,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly state:StateService,\n readonly apiV3:ApiV3Service,\n readonly pathService:PathHelperService,\n ) {\n }\n\n ngOnInit():void {\n this.storeService.setFacet('unread');\n this.storeService.setFilters({\n filter: this.uiRouterGlobals.params.filter, // eslint-disable-line @typescript-eslint/no-unsafe-assignment\n name: this.uiRouterGlobals.params.name, // eslint-disable-line @typescript-eslint/no-unsafe-assignment\n });\n }\n\n noNotificationText(hasNotifications:boolean):string {\n if (!hasNotifications) {\n return this.text.no_notification;\n }\n return (this.uiRouterGlobals.params.filter === 'project' ? this.text.no_notification_with_current_filter_project : this.text.no_notification_with_current_filter);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\n@Component({\n selector: 'op-notification-settings-button',\n templateUrl: './notification-settings-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NotificationSettingsButtonComponent {\n myNotificationSettingsLink = this.pathHelper.myNotificationsSettingsPath();\n\n text = {\n mySettings: this.I18n.t('js.notifications.settings.title'),\n };\n\n constructor(\n private I18n:I18nService,\n private pathHelper:PathHelperService,\n ) {\n }\n}\n","\n \n {{text.mySettings}}\n\n","\n \n \n \n \n\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IanCenterService } from 'core-app/features/in-app-notifications/center/state/ian-center.service';\nimport {\n IAN_FACET_FILTERS,\n InAppNotificationFacet,\n} from 'core-app/features/in-app-notifications/center/state/ian-center.store';\n\n@Component({\n selector: 'op-activate-facet',\n templateUrl: './activate-facet-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActivateFacetButtonComponent {\n text = {\n facets: {\n unread: this.I18n.t('js.notifications.facets.unread'),\n all: this.I18n.t('js.notifications.facets.all'),\n },\n facet_titles: {\n unread: this.I18n.t('js.notifications.facets.unread_title'),\n all: this.I18n.t('js.notifications.facets.all_title'),\n },\n };\n\n availableFacets = Object.keys(IAN_FACET_FILTERS);\n\n activeFacet$ = this.storeService.activeFacet$;\n\n constructor(\n private I18n:I18nService,\n private storeService:IanCenterService,\n ) {\n }\n\n activateFacet(facet:InAppNotificationFacet):void {\n this.storeService.setFacet(facet);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IanCenterService } from 'core-app/features/in-app-notifications/center/state/ian-center.service';\n\n@Component({\n selector: 'op-mark-all-as-read-button',\n templateUrl: './mark-all-as-read-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MarkAllAsReadButtonComponent {\n text = {\n mark_all_read: this.I18n.t('js.notifications.center.mark_all_read'),\n };\n\n constructor(\n private I18n:I18nService,\n private storeService:IanCenterService,\n ) {\n }\n\n markAllRead():void {\n this.storeService.markAllAsRead();\n }\n}\n","\n \n {{text.mark_all_read}}\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Injector,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n ToolbarButtonComponentDefinition,\n ViewPartitionState,\n} from 'core-app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component';\nimport {\n StateService,\n TransitionService,\n} from '@uirouter/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { NotificationSettingsButtonComponent } from 'core-app/features/in-app-notifications/center/toolbar/settings/notification-settings-button.component';\nimport { ActivateFacetButtonComponent } from 'core-app/features/in-app-notifications/center/toolbar/facet/activate-facet-button.component';\nimport { MarkAllAsReadButtonComponent } from 'core-app/features/in-app-notifications/center/toolbar/mark-all-as-read/mark-all-as-read-button.component';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { BackRoutingService } from 'core-app/features/work-packages/components/back-routing/back-routing.service';\nimport { IanCenterService } from 'core-app/features/in-app-notifications/center/state/ian-center.service';\nimport { OpTitleService } from 'core-app/core/html/op-title.service';\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 providers: [\n IanCenterService,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InAppNotificationCenterPageComponent extends UntilDestroyedMixin implements OnInit, OnDestroy {\n text = {\n title: this.I18n.t('js.notifications.title'),\n };\n\n /** Disable the back button */\n backButtonCallback = undefined;\n\n /** Current query title to render */\n selectedTitle = this.text.title;\n\n /** Disable filter container for now */\n filterContainerDefinition = null;\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 /** Listener callbacks */\n // eslint-disable-next-line @typescript-eslint/ban-types\n removeTransitionSubscription:Function;\n\n /** Not saveable */\n showToolbarSaveButton = false;\n\n /** Toolbar is always enabled */\n toolbarDisabled = false;\n\n /** Define the buttons shown in the toolbar */\n toolbarButtonComponents:ToolbarButtonComponentDefinition[] = [\n {\n component: ActivateFacetButtonComponent,\n containerClasses: 'form--field-inline-buttons-container',\n },\n {\n component: MarkAllAsReadButtonComponent,\n },\n {\n component: NotificationSettingsButtonComponent,\n containerClasses: 'hidden-for-tablet',\n },\n ];\n\n /** Global referrer set when coming to the notification center */\n private documentReferer:string;\n\n constructor(\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n readonly $transitions:TransitionService,\n readonly state:StateService,\n readonly injector:Injector,\n readonly apiV3Service:ApiV3Service,\n readonly backRoutingService:BackRoutingService,\n readonly titleService:OpTitleService,\n ) {\n super();\n }\n\n ngOnInit():void {\n this.documentReferer = document.referrer;\n\n this.setInitialHtmlTitle();\n\n this.removeTransitionSubscription = this.$transitions.onSuccess({}, ():any => {\n this.titleService.setFirstPart(this.text.title);\n });\n }\n\n ngOnDestroy():void {\n super.ngOnDestroy();\n this.removeTransitionSubscription();\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 // For shared template compliance\n // eslint-disable-next-line class-methods-use-this\n updateTitleName(_val:string):void {\n }\n\n // For shared template compliance\n // eslint-disable-next-line class-methods-use-this\n changeChangesFromTitle(_val:string):void {\n }\n\n private setInitialHtmlTitle():void {\n const currentTitleParts = this.titleService.titleParts;\n\n // Prepend \"Notifications\" if only the application name is shown\n if (currentTitleParts.length === 1) {\n this.titleService.prependFirstPart(this.text.title);\n }\n\n // A click on the left side menu of the notification center newly triggers the center page (and thus the ngOnInit).\n // So the transition hook only works for changing the content of the split screen but not when switching for example\n // from \"watched\" to \"mentioned\".\n // So we override the first part in this case to make sure that there is not the name of a WP is shown when there is no split screen visible.\n if (currentTitleParts[0] !== this.text.title) {\n this.titleService.setFirstPart(this.text.title);\n }\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-ian-date-alerts-upsale',\n templateUrl: './ian-date-alerts-upsale.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InAppNotificationsDateAlertsUpsaleComponent {\n video = videoPath('notification-center/date-alert-notifications.mp4');\n\n text = {\n title: this.I18n.t('js.notifications.date_alerts.upsale.title'),\n description: this.I18n.t('js.notifications.date_alerts.upsale.description'),\n };\n\n constructor(\n readonly I18n:I18nService,\n ) { }\n}\n","/**\n * Returns an absolute asset path from the assets/videos/ folder\n *\n * e.g., to access:\n * frontend/src/assets/videos/enterprise/date-alert-notification-settings.mp4\n *\n * use\n * imagePath('enterprise/date-alert-notification-settings.mp4')\n *\n *\n * @param video Path to the video starting from frontend/src/assets/videos\n */\nexport function videoPath(video:string):string {\n return `${__webpack_public_path__}assets/videos/${video}`;\n}\n","\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { InAppNotificationCenterComponent } from 'core-app/features/in-app-notifications/center/in-app-notification-center.component';\nimport { InAppNotificationCenterPageComponent } from 'core-app/features/in-app-notifications/center/in-app-notification-center-page.component';\nimport { WorkPackagesBaseComponent } from 'core-app/features/work-packages/routing/wp-base/wp--base.component';\nimport { InAppNotificationsDateAlertsUpsaleComponent } from 'core-app/features/in-app-notifications/date-alerts-upsale/ian-date-alerts-upsale.component';\n\nexport interface INotificationPageQueryParameters {\n filter?:string;\n name?:string;\n}\n\nexport const IAN_ROUTES:Ng2StateDeclaration[] = [\n {\n name: 'notifications',\n parent: 'root',\n url: '/notifications?{filter:string}&{name:string}',\n data: {\n bodyClasses: 'router--work-packages-base',\n },\n redirectTo: 'notifications.center.show',\n views: {\n '!$default': { component: WorkPackagesBaseComponent },\n },\n },\n {\n url: '/date_alerts',\n name: 'notifications.date_alerts_upsale',\n component: InAppNotificationsDateAlertsUpsaleComponent,\n },\n {\n name: 'notifications.center',\n component: InAppNotificationCenterPageComponent,\n redirectTo: 'notifications.center.show',\n },\n {\n name: 'notifications.center.show',\n data: {\n baseRoute: 'notifications.center.show',\n },\n views: {\n 'content-left': { component: InAppNotificationCenterComponent },\n },\n },\n ...makeSplitViewRoutes(\n 'notifications.center.show',\n undefined,\n WorkPackageSplitViewComponent,\n ),\n];\n","\n
    \n \n \n \n

    \n {{ text.no_selection }}\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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} from '@angular/core';\n\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { IanCenterService } from '../state/ian-center.service';\nimport { imagePath } from 'core-app/shared/helpers/images/path-helper';\n\n@Component({\n templateUrl: './empty-state.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./empty-state.component.sass'],\n selector: 'op-empty-state',\n})\nexport class EmptyStateComponent {\n image = {\n no_notification: imagePath('notification-center/empty-state-no-notification.svg'),\n no_selection: imagePath('notification-center/empty-state-no-selection.svg'),\n loading: imagePath('notification-center/notification_loading.gif'),\n };\n\n text = {\n no_notification: this.I18n.t('js.notifications.center.empty_state.no_notification'),\n no_selection: this.I18n.t('js.notifications.center.empty_state.no_selection'),\n };\n\n hasNotifications$ = this.storeService.hasNotifications$;\n\n loading$ = this.storeService.query.selectLoading();\n\n constructor(\n readonly I18n:I18nService,\n readonly storeService:IanCenterService,\n ) {\n }\n}\n","import { NgModule } from '@angular/core';\nimport { OpSharedModule } from 'core-app/shared/shared.module';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from 'core-app/shared/components/icon/icon.module';\nimport { InAppNotificationBellComponent } from 'core-app/features/in-app-notifications/bell/in-app-notification-bell.component';\nimport { InAppNotificationEntryComponent } from 'core-app/features/in-app-notifications/entry/in-app-notification-entry.component';\nimport { OpenprojectPrincipalRenderingModule } from 'core-app/shared/components/principal/principal-rendering.module';\nimport { UIRouterModule } from '@uirouter/angular';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { IAN_ROUTES } from 'core-app/features/in-app-notifications/in-app-notifications.routes';\nimport { InAppNotificationCenterComponent } from 'core-app/features/in-app-notifications/center/in-app-notification-center.component';\nimport { InAppNotificationCenterPageComponent } from 'core-app/features/in-app-notifications/center/in-app-notification-center-page.component';\nimport { IanMenuComponent } from 'core-app/features/in-app-notifications/center/menu/menu.component';\nimport { OpenprojectWorkPackagesModule } from 'core-app/features/work-packages/openproject-work-packages.module';\nimport { DynamicModule } from 'ng-dynamic-component';\nimport { InAppNotificationStatusComponent } from './entry/status/in-app-notification-status.component';\nimport { NotificationSettingsButtonComponent } from './center/toolbar/settings/notification-settings-button.component';\nimport { ActivateFacetButtonComponent } from './center/toolbar/facet/activate-facet-button.component';\nimport { MarkAllAsReadButtonComponent } from './center/toolbar/mark-all-as-read/mark-all-as-read-button.component';\nimport { OpenprojectContentLoaderModule } from 'core-app/shared/components/op-content-loader/openproject-content-loader.module';\nimport { EmptyStateComponent } from './center/empty-state/empty-state.component';\nimport { IanBellService } from 'core-app/features/in-app-notifications/bell/state/ian-bell.service';\nimport { InAppNotificationActorsLineComponent } from './entry/actors-line/in-app-notification-actors-line.component';\nimport { InAppNotificationDateAlertComponent } from './entry/date-alert/in-app-notification-date-alert.component';\nimport { InAppNotificationsDateAlertsUpsaleComponent } from 'core-app/features/in-app-notifications/date-alerts-upsale/ian-date-alerts-upsale.component';\n\n@NgModule({\n declarations: [\n InAppNotificationBellComponent,\n InAppNotificationCenterComponent,\n InAppNotificationEntryComponent,\n InAppNotificationCenterPageComponent,\n InAppNotificationStatusComponent,\n NotificationSettingsButtonComponent,\n ActivateFacetButtonComponent,\n MarkAllAsReadButtonComponent,\n IanMenuComponent,\n EmptyStateComponent,\n InAppNotificationActorsLineComponent,\n InAppNotificationDateAlertComponent,\n InAppNotificationsDateAlertsUpsaleComponent,\n ],\n imports: [\n OpSharedModule,\n // Routes for /backlogs\n UIRouterModule.forChild({\n states: IAN_ROUTES,\n }),\n DynamicModule,\n CommonModule,\n IconModule,\n OpenprojectPrincipalRenderingModule,\n OpenprojectWorkPackagesModule,\n OpenprojectContentLoaderModule,\n ScrollingModule,\n ],\n providers: [\n IanBellService,\n ],\n})\nexport class OpenProjectInAppNotificationsModule {\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","\n {{ title }}\n\n
    \n\n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n {{ text.download_starts }}\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 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 { HttpClient, HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Observable, retry, timer } from 'rxjs';\nimport { switchMap, takeWhile } from 'rxjs/operators';\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { JobStatusEnum, JobStatusInterface } from 'core-app/features/job-status/job-status.interface';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { EXTERNAL_REQUEST_HEADER } from 'core-app/features/hal/http/openproject-header-interceptor';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n templateUrl: './job-status.modal.html',\n styleUrls: ['./job-status.modal.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class JobStatusModalComponent extends OpModalComponent implements OnInit {\n public text = {\n title: this.I18n.t('js.job_status.title'),\n closePopup: this.I18n.t('js.close_popup_title'),\n redirect: this.I18n.t('js.job_status.redirect'),\n redirect_errors: `${this.I18n.t('js.job_status.redirect_errors')} `,\n redirect_link: this.I18n.t('js.job_status.redirect_link'),\n errors: this.I18n.t('js.job_status.errors'),\n download_starts: this.I18n.t('js.job_status.download_starts'),\n click_to_download: this.I18n.t('js.job_status.click_to_download'),\n };\n\n /** The job ID reference */\n public jobId:string;\n\n /** Whether to show the loading indicator */\n public isLoading = false;\n\n /** The current status */\n public status:JobStatusEnum;\n\n /** An associated icon to render, if any */\n public statusIcon:string|null;\n\n /** Public message to show */\n public message:string;\n\n /** Payload object of the response */\n public payload:any;\n\n /** Title to show */\n public title:string = this.text.title;\n\n /** Additional html to render */\n public htmlContent:SafeHtml|null = null;\n\n /** A link in case the job results in a download */\n public downloadHref:string|null = null;\n\n @ViewChild('downloadLink') private downloadLink:ElementRef;\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 apiV3Service:ApiV3Service,\n readonly loadingIndicator:LoadingIndicatorService,\n readonly toastService:ToastService,\n readonly sanitization:DomSanitizer,\n readonly httpClient:HttpClient,\n ) {\n super(locals, cdRef, elementRef);\n\n this.jobId = locals.jobId as string;\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.listenOnJobStatus();\n }\n\n private listenOnJobStatus() {\n this.loadingIndicator.indicator('modal').start();\n timer(0, 2000)\n .pipe(\n switchMap(() => this.performRequest()),\n retry({\n count: 10,\n delay: (error:HttpErrorResponse) => {\n // Example for catching specific error code as well\n if ([502, 503, 504].includes(error.status)) {\n return timer(2000);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw error;\n },\n }),\n takeWhile((response) => !!response.body && this.continuedStatus(response.body), true),\n this.untilDestroyed(),\n )\n .subscribe({\n next: (response) => this.onResponse(response),\n error: (error:HttpErrorResponse) => this.handleError(error),\n complete: () => {\n this.loadingIndicator.indicator('modal').stop();\n this.isLoading = false;\n },\n });\n }\n\n private iconForStatus():string|null {\n switch (this.status) {\n case 'cancelled':\n case 'failure':\n case 'error':\n return 'icon-error';\n break;\n case 'success':\n return 'icon-checkmark';\n break;\n default:\n return null;\n }\n }\n\n /**\n * Determine whether the given status continues the timer\n * @param response\n */\n private continuedStatus(response:JobStatusInterface) {\n return ['in_queue', 'in_process'].includes(response.status);\n }\n\n private onResponse(response:HttpResponse) {\n const { body } = response;\n\n if (!body) {\n throw new Error(response?.statusText || 'Internal Error');\n }\n\n // eslint-disable-next-line no-multi-assign\n const status = this.status = body.status;\n\n this.message = body.message\n || this.I18n.t(`js.job_status.generic_messages.${status}`, { defaultValue: status });\n\n this.payload = body.payload;\n if (body.payload) {\n this.title = body.payload.title || this.text.title;\n this.handleRedirect(body.payload);\n this.handleDownload(body.payload?.download);\n this.handleHTML(body.payload?.html);\n }\n\n this.statusIcon = this.iconForStatus();\n this.cdRef.detectChanges();\n }\n\n private handleHTML(content?:string) {\n if (content) {\n this.htmlContent = this.sanitization.bypassSecurityTrustHtml(content);\n }\n }\n\n private handleRedirect(payload:JobStatusInterface['payload']) {\n if (payload?.redirect && !payload?.errors) {\n setTimeout(() => { window.location.href = payload.redirect as string; }, 2000);\n this.message += `. ${this.text.redirect}`;\n }\n }\n\n private handleDownload(redirectionUrl?:string) {\n if (redirectionUrl !== undefined) {\n // Get the file url from the redirectionUrl\n this.httpClient\n .get(redirectionUrl, {\n observe: 'response',\n responseType: 'text',\n // This might or might not be an external request (depending on the configuration of an S3 storage)\n // But not having headers like X-CSRF-TOKEN set works in both cases.\n headers: {\n [EXTERNAL_REQUEST_HEADER]: 'true',\n },\n })\n .subscribe((response) => {\n this.downloadHref = response.url;\n\n this.cdRef.detectChanges();\n this.downloadLink.nativeElement.click();\n }, (error:HttpErrorResponse) => {\n // In this case, most typically, there is a CORS error.\n // Instead of failing completely, we show a manual link for the user to click themselves.\n if (error.status === 0) {\n this.downloadHref = redirectionUrl;\n\n this.cdRef.detectChanges();\n }\n });\n }\n }\n\n private performRequest():Observable> {\n return this\n .httpClient\n .get(\n this.jobUrl,\n { observe: 'response', responseType: 'json' },\n );\n }\n\n private handleError(error:HttpErrorResponse) {\n if (error?.status === 404) {\n this.statusIcon = 'icon-help';\n this.message = this.I18n.t('js.job_status.generic_messages.not_found');\n } else {\n this.statusIcon = 'icon-error';\n this.message = error?.message || this.I18n.t('js.error.internal');\n this.toastService.addError(this.message);\n }\n\n this.cdRef.detectChanges();\n }\n\n private get jobUrl():string {\n return this.apiV3Service.job_statuses.id(this.jobId).toString();\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","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 selector: 'app-projects',\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","","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { StateService, UIRouterGlobals } from '@uirouter/core';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { IDynamicFieldGroupConfig, IOPFormlyFieldSettings } 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 { JobStatusModalComponent } from 'core-app/features/job-status/job-status-modal/job-status.modal';\nimport { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { DynamicFormComponent } 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';\n\nexport interface ProjectTemplateOption {\n href:string|null;\n name:string;\n}\n\n@Component({\n selector: 'op-new-project',\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 ];\n\n copyableTemplateFilter = new ApiV3FilterBuilder()\n .add('user_action', '=', ['projects/copy']) // no null values\n .add('templated', '=', true);\n\n templateOptions$:Observable =\n this\n .apiV3Service\n .projects\n .filtered(\n this.copyableTemplateFilter,\n { pageSize: '-1' },\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 uIRouterGlobals:UIRouterGlobals,\n private pathHelperService:PathHelperService,\n private modalService:OpModalService,\n private $state:StateService,\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) => !['name', 'parent'].includes(field.templateOptions?.property as string)\n && !this.isMeta(field.templateOptions?.property)\n && !(field.templateOptions?.required\n && !field.templateOptions.hasDefault\n && field.templateOptions.payloadValue == null),\n },\n {\n name: this.text.copySettingsLabel,\n fieldsFilter: (field:IOPFormlyFieldSettings) => this.isMeta(field.templateOptions?.property),\n }];\n\n if (this.uIRouterGlobals.params.parent_id) {\n this.setParentAsPayload(this.uIRouterGlobals.params.parent_id);\n }\n }\n\n onSubmitted(response:HalSource) {\n if (response._type === 'JobStatus') {\n this.modalService.show(JobStatusModalComponent, 'global', { jobId: response.jobId });\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 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","import {\n IDynamicFieldGroupConfig,\n IOPFormlyFieldSettings,\n IOPFormlyTemplateOptions,\n} from 'core-app/shared/components/dynamic-forms/typings';\nimport { JobStatusModalComponent } from 'core-app/features/job-status/job-status-modal/job-status.modal';\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 { OpModalService } from 'core-app/shared/components/modal/modal.service';\nimport { Component, OnInit } from '@angular/core';\nimport { StateService } from '@uirouter/core';\n\n@Component({\n selector: 'op-copy-project',\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 '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 modalService:OpModalService,\n private $state:StateService,\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.modalService.show(JobStatusModalComponent, 'global', { jobId: response.jobId });\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(to?:IOPFormlyTemplateOptions):boolean {\n if (!to) {\n return false;\n }\n\n return (to.required\n && !to.hasDefault\n && to.payloadValue == null)\n || to.property === 'name'\n || to.property === 'parent';\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","","import { Ng2StateDeclaration, UIRouter } from '@uirouter/angular';\nimport { ProjectsComponent } from 'core-app/features/projects/components/projects/projects.component';\nimport { NewProjectComponent } from 'core-app/features/projects/components/new-project/new-project.component';\nimport { CopyProjectComponent } from 'core-app/features/projects/components/copy-project/copy-project.component';\n\nexport const PROJECTS_ROUTES:Ng2StateDeclaration[] = [\n {\n name: 'project_settings',\n parent: 'optional_project',\n url: '/settings/general/',\n component: ProjectsComponent,\n },\n {\n name: 'project_copy',\n parent: 'optional_project',\n url: '/copy',\n component: CopyProjectComponent,\n },\n {\n name: 'new_project',\n url: '/projects/new?parent_id',\n component: NewProjectComponent,\n },\n];\n\nexport function uiRouterProjectsConfiguration(uiRouter:UIRouter) {\n // Ensure projects/ are being redirected correctly\n // cf., https://community.openproject.com/wp/29754\n uiRouter.urlService.rules\n .when(\n new RegExp('^/projects/(.*)/settings/general$'),\n (match:string[]) => `/projects/${match[1]}/settings/general/`,\n );\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { UIRouterModule } from '@uirouter/angular';\nimport { OpenprojectFieldsModule } from 'core-app/shared/components/fields/openproject-fields.module';\nimport { PROJECTS_ROUTES, uiRouterProjectsConfiguration } from 'core-app/features/projects/projects-routes';\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 UIRouterModule.forChild({\n states: PROJECTS_ROUTES,\n config: uiRouterProjectsConfiguration,\n }),\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","\n\n\n
    \n \n \n \n \n
    \n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { BannersService } from 'core-app/core/enterprise/banners.service';\nimport { map } from 'rxjs/operators';\n\nexport const opTeamPlannerSidemenuSelector = 'op-team-planner-sidemenu';\n\n@Component({\n selector: opTeamPlannerSidemenuSelector,\n templateUrl: './team-planner-sidemenu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TeamPlannerSidemenuComponent extends UntilDestroyedMixin {\n @HostBinding('class.op-sidebar') className = true;\n\n @Input() menuItems:string[] = [];\n\n @Input() projectId:string|undefined;\n\n canAddTeamPlanner$ = this\n .currentUserService\n .hasCapabilities$(\n 'team_planners/create',\n this.currentProjectService.id || null,\n )\n .pipe(\n map((val) => val && !this.bannersService.eeShowBanners),\n );\n\n createButton = {\n text: this.I18n.t('js.team_planner.create_label'),\n title: this.I18n.t('js.team_planner.create_title'),\n uiSref: 'team_planner.page.show',\n uiParams: {\n query_id: null,\n query_props: '',\n },\n };\n\n constructor(\n readonly elementRef:ElementRef,\n readonly currentUserService:CurrentUserService,\n readonly currentProjectService:CurrentProjectService,\n readonly bannersService:BannersService,\n readonly I18n:I18nService,\n ) {\n super();\n\n populateInputsFromDataset(this);\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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, EventEmitter, Input, 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 { 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})\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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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\n} from '@angular/core';\nimport { WorkPackageViewFiltersService } 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 { Observable } from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\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 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 ) {\n super();\n this.visible$ = this.wpFiltersService.observeUntil(componentDestroyed(this));\n }\n\n ngOnInit():void {\n this.wpTableFilters\n .pristine$()\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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 { 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 { IProjectAutocompleteItem } from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocomplete-item';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { ApiV3ListFilter } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { firstValueFrom } from 'rxjs';\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:ApiV3ListFilter[] = [];\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 if (projectID && (this.filter.id === 'subprojectId' || this.filter.id === 'onlySubproject')) {\n this.additionalProjectApiFilters.push(['ancestor', '=', [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 { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport {\n map,\n shareReplay,\n switchMap,\n withLatestFrom,\n} from 'rxjs/operators';\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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\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 { take } from 'rxjs/internal/operators/take';\nimport { CollectionResource } from 'core-app/features/hal/resources/collection-resource';\nimport { compareByHref } from 'core-app/shared/helpers/angular/tracking-functions';\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 {\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\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 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(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 readonly ngZone:NgZone) {\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(initialLoad.elements, matching);\n }\n\n // Otherwise, request the matching API call\n return this\n .loadCollection(matching)\n .pipe(\n switchMap((collection) => this.withMeValue(matching, collection.elements)),\n );\n }),\n );\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: '-1' })\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:any) {\n this.filter.values = val.length > 0 ? (Array.isArray(val) ? val : [val]) : [] as HalResource[];\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","
    \n\n \n
    \n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\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 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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { EditFieldHandler } from 'core-app/shared/components/fields/edit/editing-portal/edit-field-handler';\nimport {\n ElementRef, Injector, OnInit, Directive,\n} from '@angular/core';\nimport { IFieldSchema } from 'core-app/shared/components/fields/field.base';\nimport { Subject } from 'rxjs';\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';\n\n@Directive()\nexport abstract class WorkPackageCommentFieldHandler extends EditFieldHandler implements OnInit {\n public fieldName = 'comment';\n\n public handler = this;\n\n public active = false;\n\n public inEditMode = false;\n\n public inFlight = false;\n\n public change:WorkPackageChangeset;\n\n // Destroy events\n public onDestroy = new Subject();\n\n constructor(protected elementRef:ElementRef,\n protected injector:Injector) {\n super();\n }\n\n public ngOnInit() {\n this.change = new WorkPackageChangeset(this.workPackage);\n }\n\n /**\n * Handle saving the comment\n */\n public abstract handleUserSubmit():Promise;\n\n public abstract get workPackage():WorkPackageResource;\n\n public reset(withText = '') {\n if (withText.length > 0) {\n withText += '\\n';\n }\n\n this.change.setValue('comment', { raw: withText });\n }\n\n public get schema():IFieldSchema {\n return {\n name: I18n.t('js.label_comment'),\n writable: true,\n required: false,\n type: '_comment',\n hasDefault: false,\n };\n }\n\n public get rawComment() {\n return _.get(this.commentValue, 'raw', '');\n }\n\n public get commentValue() {\n return this.change.value<{ raw:string }>('comment');\n }\n\n public handleUserCancel() {\n this.deactivate(true);\n }\n\n public activate(withText?:string) {\n this.active = true;\n this.reset(withText);\n }\n\n deactivate(focus:boolean):void {\n this.active = false;\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n focus():void {\n const trigger = this.elementRef.nativeElement.querySelector('.inplace-editing--trigger-container');\n trigger && trigger.focus();\n }\n\n onFocusOut():void {\n }\n\n handleUserKeydown(event:JQuery.TriggeredEvent, onlyCancel?:boolean):void {\n }\n\n isChanged():boolean {\n return false;\n }\n\n stopPropagation(evt:JQuery.TriggeredEvent):boolean {\n return 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 \n\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { LoadingIndicatorService } from 'core-app/core/loading-indicator/loading-indicator.service';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.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 { WorkPackageCommentFieldHandler } from 'core-app/features/work-packages/components/work-package-comment/work-package-comment-field-handler';\nimport { CommentService } from 'core-app/features/work-packages/components/wp-activity/comment-service';\nimport { WorkPackagesActivityService } 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 { ErrorResource } from 'core-app/features/hal/resources/error-resource';\nimport { HalError } from 'core-app/features/hal/services/hal-error';\nimport {\n filter,\n take,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'work-package-comment',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './work-package-comment.component.html',\n})\nexport class WorkPackageCommentComponent extends WorkPackageCommentFieldHandler implements OnInit, OnDestroy {\n @Input() public workPackage:WorkPackageResource;\n\n @ContentChild(TemplateRef) template:TemplateRef;\n\n @ViewChild('commentContainer') public commentContainer:ElementRef;\n\n public text = {\n editTitle: this.I18n.t('js.label_add_comment_title'),\n addComment: this.I18n.t('js.label_add_comment'),\n cancelTitle: this.I18n.t('js.label_cancel_comment'),\n placeholder: this.I18n.t('js.label_add_comment_title'),\n };\n\n public fieldLabel:string = this.text.editTitle;\n\n public inFlight = false;\n\n public canAddComment:boolean;\n\n public showAbove:boolean;\n\n public htmlId = 'wp-comment-field';\n\n constructor(protected elementRef:ElementRef,\n protected injector:Injector,\n protected commentService:CommentService,\n protected wpLinkedActivities:WorkPackagesActivityService,\n protected configurationService:ConfigurationService,\n protected loadingIndicator:LoadingIndicatorService,\n protected apiV3Service:ApiV3Service,\n protected workPackageNotificationService:WorkPackageNotificationService,\n protected toastService:ToastService,\n protected cdRef:ChangeDetectorRef,\n protected I18n:I18nService) {\n super(elementRef, injector);\n }\n\n public ngOnInit():void {\n super.ngOnInit();\n\n this.canAddComment = !!this.workPackage.addComment;\n this.showAbove = this.configurationService.commentsSortedInDescendingOrder();\n\n this.commentService.draft$\n .pipe(\n this.untilDestroyed(),\n take(1),\n filter((val) => !!val),\n )\n .subscribe((draft:string) => {\n this.activate(draft);\n });\n\n this.commentService.quoteEvents$\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((quote:string) => {\n this.activate(quote);\n this.commentContainer.nativeElement.scrollIntoView();\n });\n }\n\n public ngOnDestroy():void {\n super.ngOnDestroy();\n this.commentService.draft$.next(this.active ? this.rawComment : null);\n }\n\n // Open the field when its closed and relay drag & drop events to it.\n public startDragOverActivation(event:JQuery.TriggeredEvent):boolean {\n if (this.active) {\n return true;\n }\n\n this.activate();\n\n event.preventDefault();\n return false;\n }\n\n public activate(withText?:string):void {\n super.activate(withText);\n\n if (!this.showAbove) {\n this.scrollToBottom();\n }\n\n this.cdRef.detectChanges();\n }\n\n public deactivate(focus:boolean):void {\n focus && this.focus();\n this.active = false;\n this.cdRef.detectChanges();\n }\n\n public async handleUserSubmit():Promise {\n if (this.inFlight || !this.rawComment) {\n return Promise.resolve();\n }\n\n this.inFlight = true;\n await this.onSubmit();\n const indicator = this.loadingIndicator.wpDetails;\n indicator.promise = this.commentService.createComment(this.workPackage, this.commentValue)\n .then(() => {\n this.active = false;\n this.toastService.addSuccess(this.I18n.t('js.work_packages.comment_added'));\n\n void this.wpLinkedActivities.require(this.workPackage, true);\n void this\n .apiV3Service\n .work_packages\n .id(this.workPackage.id!)\n .refresh();\n\n this.inFlight = false;\n this.deactivate(true);\n })\n .catch((error:any) => {\n this.inFlight = false;\n if (error instanceof HalError) {\n this.workPackageNotificationService.showError(error.resource, this.workPackage);\n } else {\n this.toastService.addError(this.I18n.t('js.work_packages.comment_send_failed'));\n }\n });\n\n return indicator.promise;\n }\n\n scrollToBottom():void {\n const scrollableContainer = jQuery(this.elementRef.nativeElement).scrollParent()[0];\n if (scrollableContainer) {\n setTimeout(() => {\n scrollableContainer.scrollTop = scrollableContainer.scrollHeight;\n }, 400);\n }\n }\n\n setErrors(newErrors:string[]):void {\n // interface\n }\n}\n","
    \n
    \n \n \n
    \n \n \n
    \n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { Component, OnInit } from '@angular/core';\nimport {\n FormattableEditFieldComponent,\n} from 'core-app/shared/components/fields/edit/field-types/formattable-edit-field/formattable-edit-field.component';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\n\n@Component({\n templateUrl: '../../../../shared/components/fields/edit/field-types/formattable-edit-field/formattable-edit-field.component.html',\n})\nexport class WorkPackageCommentFieldComponent extends FormattableEditFieldComponent implements OnInit {\n public isBusy = false;\n\n public name = 'comment';\n\n @InjectField() public ConfigurationService:ConfigurationService;\n\n public get required() {\n return true;\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n}\n","\n \n \n\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\n@Component({\n selector: 'activity-entry',\n templateUrl: './activity-entry.component.html',\n})\nexport class ActivityEntryComponent implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public activity:any;\n\n @Input() public activityNo:number;\n\n @Input() public isInitial:boolean;\n\n @Input() public hasUnreadNotification:boolean;\n\n public projectId:string;\n\n public activityType:string;\n\n constructor(\n readonly PathHelper:PathHelperService,\n readonly I18n:I18nService,\n ) { }\n\n ngOnInit() {\n this.projectId = idFromLink(this.workPackage.project.href);\n\n this.activityType = this.activity._type;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\n\n@Component({\n selector: 'activity-link',\n template: `\n \n \n `,\n})\nexport class ActivityLinkComponent implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public activityNo:number;\n\n public activityHtmlId:string;\n\n public activityLabel:string;\n\n ngOnInit() {\n this.activityHtmlId = `activity-${this.activityNo}`;\n this.activityLabel = `#${this.activityNo}`;\n }\n}\n\nfunction activityLink() {\n return {\n restrict: 'E',\n template: `\n `,\n scope: {\n },\n link(scope:any) {\n scope.workPackageId = scope.workPackage.id!;\n scope.activityHtmlId = `activity-${scope.activityNo}`;\n },\n };\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { ToastService } from 'core-app/shared/components/toaster/toast.service';\nimport {\n BehaviorSubject,\n Subject,\n} from 'rxjs';\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 { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\n@Injectable()\nexport class CommentService {\n public quoteEvents$ = new Subject();\n\n public draft$ = new BehaviorSubject(null);\n\n constructor(\n readonly I18n:I18nService,\n private workPackageNotificationService:WorkPackageNotificationService,\n private toastService:ToastService,\n ) {\n }\n\n public createComment(workPackage:WorkPackageResource, comment:{ raw:string }) {\n return workPackage.addComment(\n { comment },\n { 'Content-Type': 'application/json; charset=UTF-8' },\n )\n .catch((error:any) => this.errorAndReject(error, workPackage));\n }\n\n public updateComment(activity:HalResource, comment:string) {\n const options = {\n ajax: {\n method: 'PATCH',\n data: JSON.stringify({ comment }),\n contentType: 'application/json; charset=utf-8',\n },\n };\n\n return activity.update(\n { comment },\n { 'Content-Type': 'application/json; charset=UTF-8' },\n ).then((activity:HalResource) => {\n this.toastService.addSuccess(\n this.I18n.t('js.work_packages.comment_updated'),\n );\n\n return activity;\n }).catch((error:any) => this.errorAndReject(error));\n }\n\n private errorAndReject(error:HalResource, workPackage?:WorkPackageResource) {\n this.workPackageNotificationService.handleRawError(error, workPackage);\n\n // returning a reject will enable to correctly work with subsequent then/catch handlers.\n return Promise.reject(error);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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 ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, 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 { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { ProjectResource } from 'core-app/features/hal/resources/project-resource';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\n\n@Component({\n selector: 'revision-activity',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './revision-activity.component.html',\n})\nexport class RevisionActivityComponent implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public activity:any;\n\n @Input() public activityNo:number;\n\n @Input() public hasUnreadNotification:boolean;\n\n public userId:string | number;\n\n public userName:string;\n\n public userActive:boolean;\n\n public userPath:string | null;\n\n public userLabel:string;\n\n public userAvatar:string;\n\n public project:ProjectResource;\n\n public revision:string;\n\n public message:string;\n\n public revisionLink:string;\n\n constructor(readonly I18n:I18nService,\n readonly timezoneService:TimezoneService,\n readonly cdRef:ChangeDetectorRef,\n readonly apiV3Service:ApiV3Service) {\n }\n\n ngOnInit() {\n this.loadAuthor();\n\n this.project = this.workPackage.project;\n this.revision = this.activity.identifier;\n this.message = this.activity.message.html;\n\n const revisionPath = this.activity.showRevision.$link.href;\n const formattedRevision = this.activity.formattedIdentifier;\n\n const link = document.createElement('a');\n link.href = revisionPath;\n link.title = this.revision;\n link.textContent = this.I18n.t(\n 'js.label_committed_link',\n { revision_identifier: formattedRevision },\n );\n\n this.revisionLink = this.I18n.t('js.label_committed_at',\n {\n committed_revision_link: link.outerHTML,\n date: this.timezoneService.formattedDatetime(this.activity.createdAt),\n });\n }\n\n private loadAuthor() {\n if (this.activity.author === undefined) {\n this.userName = this.activity.authorName;\n } else {\n this\n .apiV3Service\n .users\n .id(idFromLink(this.activity.author.href))\n .get()\n .subscribe((user:UserResource) => {\n this.userId = user.id!;\n this.userName = user.name;\n this.userActive = user.isActive;\n this.userAvatar = user.avatar;\n this.userPath = user.showUser.href;\n this.userLabel = this.I18n.t('js.label_author', { user: this.userName });\n this.cdRef.detectChanges();\n });\n }\n }\n}\n","\n
    \n \n\n
    \n \n \n {{ isInitial ? text.label_created_on : text.label_updated_on }}\n \n \n
    \n
    \n
    \n \n \n \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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport {\n ApplicationRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Injector,\n Input, NgZone,\n OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { WorkPackageCommentFieldHandler } from 'core-app/features/work-packages/components/work-package-comment/work-package-comment-field-handler';\nimport { WorkPackagesActivityService } from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service';\nimport { CommentService } from 'core-app/features/work-packages/components/wp-activity/comment-service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { UserResource } from 'core-app/features/hal/resources/user-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\nimport { DeviceService } from 'core-app/core/browser/device.service';\n\n@Component({\n selector: 'user-activity',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './user-activity.component.html',\n styleUrls: ['./user-activity.component.sass'],\n})\nexport class UserActivityComponent extends WorkPackageCommentFieldHandler implements OnInit {\n @Input() public workPackage:WorkPackageResource;\n\n @Input() public activity:HalResource;\n\n @Input() public activityNo:number;\n\n @Input() public isInitial:boolean;\n\n @Input() public hasUnreadNotification:boolean;\n\n private additionalScrollMargin = 200;\n\n public userCanEdit = false;\n\n public userCanQuote = false;\n\n public userId:string | number;\n\n public user:UserResource;\n\n public userName:string;\n\n public userAvatar:string;\n\n public details:any[] = [];\n\n public isComment:boolean;\n\n public isBcfComment:boolean;\n\n public postedComment:SafeHtml;\n\n public focused = false;\n\n public text = {\n label_created_on: this.I18n.t('js.label_created_on'),\n label_updated_on: this.I18n.t('js.label_updated_on'),\n quote_comment: this.I18n.t('js.label_quote_comment'),\n edit_comment: this.I18n.t('js.label_edit_comment'),\n };\n\n private $element:JQuery;\n\n constructor(readonly elementRef:ElementRef,\n readonly injector:Injector,\n readonly sanitization:DomSanitizer,\n readonly PathHelper:PathHelperService,\n readonly wpLinkedActivities:WorkPackagesActivityService,\n readonly commentService:CommentService,\n readonly ConfigurationService:ConfigurationService,\n readonly apiV3Service:ApiV3Service,\n readonly cdRef:ChangeDetectorRef,\n readonly I18n:I18nService,\n readonly ngZone:NgZone,\n readonly deviceService:DeviceService,\n protected appRef:ApplicationRef) {\n super(elementRef, injector);\n }\n\n public ngOnInit() {\n super.ngOnInit();\n\n this.htmlId = `user_activity_edit_field_${this.activityNo}`;\n this.updateCommentText();\n this.isComment = this.activity._type === 'Activity::Comment';\n this.isBcfComment = this.activity._type === 'Activity::BcfComment';\n\n this.$element = jQuery(this.elementRef.nativeElement);\n this.reset();\n this.userCanEdit = !!this.activity.update;\n this.userCanQuote = !!this.workPackage.addComment;\n\n this.$element.bind('focusin', this.focus.bind(this));\n this.$element.bind('focusout', this.blur.bind(this));\n\n _.each(this.activity.details, (detail:{ html:string }) => {\n this.details.push(this.sanitization.bypassSecurityTrustHtml(detail.html));\n });\n\n this\n .apiV3Service\n .users\n .id(idFromLink(this.activity.user.href))\n .get()\n .subscribe((user:UserResource) => {\n this.user = user;\n this.userId = user.id!;\n this.userName = user.name;\n this.userAvatar = user.avatar;\n this.cdRef.detectChanges();\n });\n\n if (window.location.hash === `#activity-${this.activityNo}`) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n if (this.deviceService.isMobile) {\n (this.elementRef.nativeElement as HTMLElement).scrollIntoView(true);\n return;\n }\n const activityElement = document.querySelectorAll(`[data-qa-activity-number='${this.activityNo}']`)[0] as HTMLElement;\n const scrollContainer = document.querySelectorAll(\"[data-notification-selector='notification-scroll-container']\")[0];\n const scrollOffset = activityElement.offsetTop - (scrollContainer as HTMLElement).offsetTop - this.additionalScrollMargin;\n scrollContainer.scrollTop = scrollOffset;\n });\n });\n }\n }\n\n public shouldHideIcons():boolean {\n return !((this.isComment || this.isBcfComment) && this.focussing());\n }\n\n public activate() {\n super.activate(this.activity.comment.raw);\n this.cdRef.detectChanges();\n }\n\n public handleUserSubmit() {\n if (this.inFlight || !this.rawComment) {\n return Promise.resolve();\n }\n return this.updateComment();\n }\n\n public quoteComment() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n this.commentService.quoteEvents$.next(this.quotedText(this.activity.comment.raw));\n }\n\n public get bcfSnapshotUrl() {\n if (_.get(this.activity, 'bcfViewpoints[0]')) {\n return `${_.get(this.activity, 'bcfViewpoints[0]').href}/snapshot`;\n }\n return null;\n }\n\n public async updateComment() {\n this.inFlight = true;\n\n await this.onSubmit();\n return this.commentService.updateComment(this.activity, this.rawComment || '')\n .then((newActivity:HalResource) => {\n this.activity = newActivity;\n this.updateCommentText();\n this.wpLinkedActivities.require(this.workPackage, true);\n this\n .apiV3Service\n .work_packages\n .cache\n .updateWorkPackage(this.workPackage);\n })\n .finally(() => {\n this.deactivate(true); this.inFlight = false;\n });\n }\n\n public focusEditIcon() {\n // Find the according edit icon and focus it\n jQuery(`.edit-activity--${this.activityNo} a`).focus();\n }\n\n public focus() {\n this.focused = true;\n this.cdRef.detectChanges();\n }\n\n public blur() {\n this.focused = false;\n this.cdRef.detectChanges();\n }\n\n public focussing() {\n return this.focused;\n }\n\n setErrors(newErrors:string[]):void {\n // interface\n }\n\n public quotedText(rawComment:string) {\n const quoted = rawComment.split('\\n')\n .map((line:string) => `\\n> ${line}`)\n .join('');\n return `${this.userName} wrote:\\n${quoted}`;\n }\n\n deactivate(focus:boolean):void {\n super.deactivate(focus);\n\n if (focus) {\n this.focusEditIcon();\n }\n }\n\n private updateCommentText() {\n this.postedComment = this.activity.comment.html;\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';\nimport { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.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 visibleAttributeChanged(base:IWorkPackageTimestamp, schema:ISchemaProxy, wpTableColumns:WorkPackageViewColumnsService):boolean {\n return !!wpTableColumns\n .getColumns()\n .find((column) => {\n const name = schema.mappedName(column.id);\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, wpTableColumns:WorkPackageViewColumnsService):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 (visibleAttributeChanged(base, schema, wpTableColumns)) {\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.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 wpTableColumns:WorkPackageViewColumnsService,\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, this.wpTableColumns);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit,\n} 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 { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.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(readonly $state:StateService,\n readonly currentProject:CurrentProjectService,\n readonly authorisationService:AuthorisationService,\n readonly transition:TransitionService,\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n this.projectIdentifier = this.currentProject.identifier;\n\n // Find the first permission that is allowed\n this.authorisationService\n .observeUntil(componentDestroyed(this))\n .subscribe(() => {\n this.allowed = !!this\n .allowedWhen\n .find((combined) => {\n const [module, permission] = combined.split('.');\n return this.authorisationService.can(module, permission);\n });\n\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","\n\n \n \n \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 @Input() public showWithText:boolean;\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 }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\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';\nimport { combineLatest } from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\n\n@Component({\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'wp-view-toggle-button',\n})\nexport class WorkPackageViewToggleButtonComponent extends UntilDestroyedMixin implements OnInit {\n public view:string;\n\n public text:any = {\n card: this.I18n.t('js.views.card'),\n list: this.I18n.t('js.views.list'),\n timeline: this.I18n.t('js.views.timeline'),\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n readonly wpDisplayRepresentationService:WorkPackageViewDisplayRepresentationService,\n readonly wpTableTimeline:WorkPackageViewTimelineService,\n ) {\n super();\n }\n\n ngOnInit() {\n const statesCombined = combineLatest([\n this.wpDisplayRepresentationService.live$(),\n this.wpTableTimeline.live$(),\n ]);\n\n statesCombined.pipe(\n this.untilDestroyed(),\n ).subscribe(([display, timelines]) => {\n this.detectView(display, timelines.visible);\n this.cdRef.detectChanges();\n });\n }\n\n public detectView(display:string|null, timelineVisible:boolean) {\n if (display === wpDisplayCardRepresentation) {\n this.view = wpDisplayCardRepresentation;\n return;\n }\n\n if (timelineVisible) {\n this.view = 'timeline';\n } else {\n this.view = wpDisplayListRepresentation;\n }\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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;\nexport const zenModeComponentSelector = 'zen-mode-toggle-button';\n\n@Component({\n templateUrl: '../wp-button.template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: zenModeComponentSelector,\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-qa-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-qa-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-qa-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 {{startDate(workPackage)}} -\n \n\n \n\n \n\n \n - {{endDate(workPackage)}}\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 { uiStateLinkClass } 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 { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions';\nimport {\n StateService,\n UIRouterGlobals,\n} from '@uirouter/core';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { WorkPackageCardViewService } 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 { CardHighlightingMode } 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 { 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 { 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 { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport SpotDropAlignmentOption from 'core-app/spot/drop-alignment-options';\nimport {\n getBaselineState,\n} from 'core-app/features/work-packages/components/wp-baseline/baseline-helpers';\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 private dateTimeFormatYear = new Intl.DateTimeFormat(this.I18n.locale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n\n private dateTimeFormat = new Intl.DateTimeFormat(this.I18n.locale, {\n month: 'short',\n day: 'numeric',\n });\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 readonly wpTableColumns:WorkPackageViewColumnsService,\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, this.wpTableColumns);\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 wpDates(wp:WorkPackageResource):string {\n const { startDate, dueDate } = wp;\n\n if (startDate && dueDate) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore see https://github.com/microsoft/TypeScript/issues/46905\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return String(this.dateTimeFormatYear.formatRange(new Date(startDate), new Date(dueDate)));\n }\n\n if (!startDate && dueDate) {\n return `– ${this.dateTimeFormatYear.format(new Date(dueDate))}`;\n }\n\n if (startDate && !dueDate) {\n return `${this.dateTimeFormatYear.format(new Date(startDate))} –`;\n }\n\n return '';\n }\n\n startDate(wp:WorkPackageResource):string {\n const { startDate } = wp;\n if (!startDate) {\n return '';\n }\n\n return this.dateTimeFormat.format(new Date(startDate));\n }\n\n endDate(wp:WorkPackageResource):string {\n const { dueDate } = wp;\n if (!dueDate) {\n return '';\n }\n\n return this.dateTimeFormat.format(new Date(dueDate));\n }\n\n wpOverDueHighlighting(wp:WorkPackageResource):string {\n const diff = this.timezoneService.daysFromToday(wp.dueDate);\n return Highlighting.overdueDate(diff);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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, ChangeDetectorRef, Component, ElementRef, OnInit,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\n\nexport const customDateActionAdminSelector = 'custom-date-action-admin';\n\n@Component({\n selector: customDateActionAdminSelector,\n templateUrl: './custom-date-action-admin.html',\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 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(private elementRef:ElementRef,\n private cdRef:ChangeDetectorRef,\n public appRef:ApplicationRef,\n private I18n:I18nService) {\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 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 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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\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 actions:CustomActionResource[] = [];\n\n constructor(readonly apiV3Service:ApiV3Service,\n readonly cdRef:ChangeDetectorRef) {\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 ? [...wp.customActions] : [];\n this.cdRef.detectChanges();\n });\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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, Component, HostListener, Input,\n} 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 { HalResourceEditingService } 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 { SchemaCacheService } from 'core-app/core/schemas/schema-cache.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 { WorkPackagesActivityService } from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service';\n\n@Component({\n selector: 'wp-custom-action',\n templateUrl: './wp-custom-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WpCustomActionComponent {\n @Input() workPackage:WorkPackageResource;\n\n @Input() action:CustomActionResource;\n\n constructor(\n private halResourceService:HalResourceService,\n private apiV3Service:ApiV3Service,\n private wpSchemaCacheService:SchemaCacheService,\n private wpActivity:WorkPackagesActivityService,\n private notificationService:WorkPackageNotificationService,\n private halEditing:HalResourceEditingService,\n private halEvents:HalEventsService,\n ) {\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 });\n },\n (errorResource) => {\n this.notificationService.handleRawError(errorResource, this.workPackage);\n this.change.inFlight = false;\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { Component, Input } from '@angular/core';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\n\n@Component({\n selector: 'wp-details-toolbar',\n templateUrl: './wp-details-toolbar.html',\n})\nexport class WorkPackageSplitViewToolbarComponent {\n @Input('workPackage') workPackage:WorkPackageResource;\n\n @Input() displayNotificationsButton:boolean;\n\n public text = {\n button_more: this.I18n.t('js.button_more'),\n };\n\n constructor(readonly I18n:I18nService,\n readonly halEditing:HalResourceEditingService) {}\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\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 return super.applyChanges(payload);\n }\n\n protected setNewDefaultFor(key:string, val:unknown) {\n // Special handling for taking over the description\n // to the pristine resource\n if (key === 'description' && isNewResource(this.pristineResource)) {\n this.pristineResource.description = val;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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'].indexOf(attribute) !== -1) {\n td.classList.add('-no-ellipsis');\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 export function isBright(styles:CSSStyleDeclaration, property:string, id:string|number) {\n const variable = `--hl-${property}-${id}-dark`;\n return styles.getPropertyValue(variable) !== '';\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","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 { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\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() wpTableColumns:WorkPackageViewColumnsService;\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, this.wpTableColumns);\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 { 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} 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';\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 // 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 // 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 return false;\n }\n\n return true;\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):boolean;\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 its 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageViewColumnsService } 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 { CellBuilder, editCellContainer, tdClassName } 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';\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 // 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 this.wpTableColumns.addColumn(fieldName);\n return this.waitForContainer(fieldName);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageViewFocusService } 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 { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport {\n combineLatest,\n Subscription,\n} from 'rxjs';\nimport { WorkPackageViewColumnsService } 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';\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 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 // 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 this.editingSubscription = this\n .wpCreate\n .changesetUpdates$()\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 } from '@angular/core';\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 {\n firstValueFrom,\n from,\n Observable,\n of,\n} from 'rxjs';\nimport { input } from '@openproject/reactivestates';\nimport {\n catchError,\n mapTo,\n mergeMap,\n share,\n switchMap,\n take,\n} 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 { 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';\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 // 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 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 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 ) { }\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 });\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 let id;\n if (query.project) {\n id = query.project.href!.split('/').pop();\n }\n\n this.loadDefaultQuery(id);\n\n this.states.changes.queries.next(query.id!);\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\n this.$state.go('.', { query_id: query!.id, query_props: null }, { reload: true });\n this.states.changes.queries.next(query!.id!);\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, 'New manually sorted query');\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 });\n\n return promise;\n }\n\n public getPaginationInfo() {\n return this.wpTablePagination.paginationObject;\n }\n\n private conditionallyLoadForm(query:QueryResource):void {\n const currentForm = this.querySpace.queryForm.value;\n\n if (!currentForm || query.$links.update.href !== currentForm.href) {\n setTimeout(() => this.loadForm(query), 0);\n }\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","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';\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\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageFilterValues } 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';\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 // 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\n ApiV3Filter,\n ApiV3FilterBuilder,\n FilterOperator,\n} 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 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 timestamps:string;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","\n
    \n
    \n

    \n
    \n
    \n\n \n \n
    \n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\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(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 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(() => this.refreshTable());\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { WorkPackageInlineCreateComponent } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.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 { 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 { ApiV3Filter } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { WorkPackageNotificationService } 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';\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 = this.buildQueryFilters();\n\n public text = {\n abort: this.I18n.t('js.relation_buttons.abort'),\n };\n\n constructor(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 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 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():ApiV3Filter[] {\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 return this.urlParamsHelper.buildV3GetFilters(filters);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\n\n@Injectable()\nexport class WpRelationInlineCreateService extends WorkPackageInlineCreateService implements WpRelationInlineCreateServiceInterface, OnDestroy {\n @InjectField() wpRelations:WorkPackageRelationsService;\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);\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 \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.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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 Component,\n EventEmitter, HostListener,\n Input, NgZone,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { from, Observable, of } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\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 { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource';\nimport { CurrentProjectService } from 'core-app/core/current-project/current-project.service';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { ApiV3Filter } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder';\nimport { OpAutocompleterComponent } from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\n\n@Component({\n selector: 'wp-relations-autocomplete',\n templateUrl: './wp-relations-autocomplete.html',\n\n // Allow styling the embedded ng-select\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./wp-relations-autocomplete.sass'],\n})\nexport class WorkPackageRelationsAutocompleteComponent {\n readonly text = {\n placeholder: this.I18n.t('js.relations_autocomplete.placeholder'),\n };\n\n @Input() inputPlaceholder:string = this.text.placeholder;\n\n @Input() workPackage:WorkPackageResource;\n\n @Input() selectedRelationType:string;\n\n @Input() filterCandidatesFor:string;\n\n /** Do we take the current query filters into account? */\n @Input() additionalFilters:ApiV3Filter[] = [];\n\n @Input() hiddenOverflowContainer = 'body';\n\n @ViewChild(OpAutocompleterComponent, { static: true }) public ngSelectComponent:OpAutocompleterComponent;\n\n @Output() onCancel = new EventEmitter();\n\n @Output() onSelected = new EventEmitter();\n\n @Output() onEmptySelected = new EventEmitter();\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.additionalFilters),\n type: this.filterCandidatesFor || this.selectedRelationType,\n sortBy: JSON.stringify([['typeahead', 'asc']]),\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 public autocompleterOptions = {\n resource: 'work_packages',\n getOptionsFn: this.getAutocompleterData,\n };\n\n public appendToContainer = 'body';\n\n constructor(private readonly querySpace:IsolatedQuerySpace,\n private readonly pathHelper:PathHelperService,\n private readonly notificationService:WorkPackageNotificationService,\n private readonly CurrentProject:CurrentProjectService,\n private readonly halResourceService:HalResourceService,\n private readonly schemaCacheService:SchemaCacheService,\n private readonly cdRef:ChangeDetectorRef,\n private readonly ngZone:NgZone,\n private readonly I18n:I18nService) {\n }\n\n @HostListener('keydown.escape')\n public reset() {\n this.cancel();\n }\n\n cancel() {\n this.onCancel.emit();\n }\n\n public onWorkPackageSelected(workPackage?:WorkPackageResource) {\n if (workPackage) {\n this.schemaCacheService\n .ensureLoaded(workPackage)\n .then(() => {\n this.onSelected.emit(workPackage);\n this.ngSelectComponent.ngSelectInstance.close();\n });\n }\n }\n\n onOpen() {\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.ngSelectComponent.repositionDropdown();\n jQuery(this.hiddenOverflowContainer).one('scroll', () => {\n this.ngSelectComponent.closeSelect();\n });\n }, 25);\n });\n }\n}\n","\n","
    \n
    \n
    \n
    \n \n \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 { Component, Input } 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(readonly I18n:I18nService,\n protected wpRelations:WorkPackageRelationsService,\n protected notificationService:WorkPackageNotificationService,\n protected halEvents:HalEventsService) {\n }\n\n public createRelation() {\n if (!this.selectedRelationType || !this.selectedWpId) {\n return;\n }\n\n this.isDisabled = true;\n this.createCommonRelation()\n .catch(() => this.isDisabled = false)\n .then(() => this.isDisabled = false);\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.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","
    \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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { WorkPackageRelationsHierarchyService } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport { take } from 'rxjs/operators';\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-relations-hierarchy',\n templateUrl: './wp-relations-hierarchy.template.html',\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:boolean;\n\n public canModifyHierarchy:boolean;\n\n public canAddRelation:boolean;\n\n public childrenQueryProps:any;\n\n constructor(protected wpRelationsHierarchyService:WorkPackageRelationsHierarchyService,\n protected apiV3Service:ApiV3Service,\n protected PathHelper:PathHelperService,\n readonly I18n:I18nService) {\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 this.untilDestroyed(),\n )\n .subscribe((wp:WorkPackageResource) => {\n this.workPackage = wp;\n\n const parentId = this.workPackage.parent?.id?.toString();\n\n if (parentId) {\n this\n .apiV3Service\n .work_packages\n .id(parentId)\n .get()\n .pipe(\n take(1),\n )\n .subscribe((parent:WorkPackageResource) => {\n this.workPackage.parent = parent;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { Observable, zip } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { componentDestroyed } from '@w11k/ngx-componentdestroyed';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\nimport { RelationsStateValue, WorkPackageRelationsService } from './wp-relations.service';\nimport { RelatedWorkPackagesGroup } from './wp-relations.interfaces';\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 {\n @Input() public workPackage:WorkPackageResource;\n\n public relationGroups:RelatedWorkPackagesGroup = {};\n\n public relationGroupKeys:string[] = [];\n\n public relationsPresent = false;\n\n public canAddRelation:boolean;\n\n // By default, group by relation type\n public groupByWorkPackageType = false;\n\n public text = {\n relations_header: this.I18n.t('js.work_packages.tabs.relations'),\n };\n\n public currentRelations:WorkPackageResource[] = [];\n\n constructor(private I18n:I18nService,\n private wpRelations:WorkPackageRelationsService,\n private cdRef:ChangeDetectorRef,\n private apiV3Service:ApiV3Service) {\n super();\n }\n\n ngOnInit() {\n this.canAddRelation = !!this.workPackage.addRelation;\n\n this.wpRelations\n .state(this.workPackage.id!)\n .values$()\n .pipe(\n takeUntil(componentDestroyed(this)),\n )\n .subscribe((relations:RelationsStateValue) => {\n this.loadedRelations(relations);\n });\n\n this.wpRelations.require(this.workPackage.id!);\n\n // Listen for changes to this WP.\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage)\n .requireAndStream()\n .pipe(\n takeUntil(componentDestroyed(this)),\n )\n .subscribe((wp:WorkPackageResource) => {\n this.workPackage = wp;\n });\n }\n\n private getRelatedWorkPackages(workPackageIds:string[]):Observable {\n const observablesToGetZipped:Observable[] = workPackageIds.map((wpId) => this\n .apiV3Service\n .work_packages\n .id(wpId)\n .get());\n\n return zip(...observablesToGetZipped);\n }\n\n protected getRelatedWorkPackageId(relation:RelationResource):string {\n const involved = relation.ids;\n return (relation.to.href === this.workPackage.href) ? involved.from : involved.to;\n }\n\n public toggleGroupBy() {\n this.groupByWorkPackageType = !this.groupByWorkPackageType;\n this.buildRelationGroups();\n }\n\n protected buildRelationGroups() {\n if (_.isNil(this.currentRelations)) {\n return;\n }\n\n this.relationGroups = _.groupBy(this.currentRelations,\n (wp:WorkPackageResource) => {\n if (this.groupByWorkPackageType) {\n return wp.type.name;\n }\n const normalizedType = (wp.relatedBy as RelationResource).normalizedType(this.workPackage);\n return this.I18n.t(`js.relation_labels.${normalizedType}`);\n });\n this.relationGroupKeys = _.keys(this.relationGroups);\n this.relationsPresent = _.size(this.relationGroups) > 0;\n this.cdRef.detectChanges();\n }\n\n protected loadedRelations(stateValues:RelationsStateValue):void {\n const relatedWpIds:string[] = [];\n const relations:{ [wpId:string]:any } = [];\n\n if (_.size(stateValues) === 0) {\n this.currentRelations = [];\n return this.buildRelationGroups();\n }\n\n _.each(stateValues, (relation:RelationResource) => {\n const relatedWpId = this.getRelatedWorkPackageId(relation);\n relatedWpIds.push(relatedWpId);\n relations[relatedWpId] = relation;\n });\n\n this.getRelatedWorkPackages(relatedWpIds)\n .pipe(\n take(1),\n )\n .subscribe((relatedWorkPackages:WorkPackageResource[]) => {\n this.currentRelations = relatedWorkPackages.map((wp:WorkPackageResource) => {\n wp.relatedBy = relations[wp.id!];\n return wp;\n });\n\n this.buildRelationGroups();\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 {\n firstValueFrom,\n Observable,\n} from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { RelationResource } from 'core-app/features/hal/resources/relation-resource';\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(private PathHelper:PathHelperService,\n private apiV3Service:ApiV3Service,\n private halResource:HalResourceService) {\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 .work_packages\n .id(id)\n .relations\n .get()\n .pipe(\n map((collection) => this.relationsStateValue(id, collection.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 /**\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 OnInit,\n} from '@angular/core';\nimport { UIRouterGlobals } from '@uirouter/core';\nimport { Observable } from 'rxjs';\nimport { map, distinctUntilChanged } from 'rxjs/operators';\nimport { take } from 'rxjs/internal/operators/take';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ActivityEntryInfo } from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-entry-info';\nimport { WorkPackagesActivityService } from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service';\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';\n\n@Directive()\nexport class ActivityPanelBaseController extends UntilDestroyedMixin implements OnInit {\n public workPackage:WorkPackageResource;\n\n public workPackageId:string;\n\n // All activities retrieved for the work package\n public unfilteredActivities:HalResource[] = [];\n\n // Visible activities\n public visibleActivities:ActivityEntryInfo[] = [];\n\n public reverse:boolean;\n\n public showToggler:boolean;\n\n public onlyComments = false;\n\n public togglerText:string;\n\n public text = {\n commentsOnly: this.I18n.t('js.label_activity_show_only_comments'),\n showAll: this.I18n.t('js.label_activity_show_all'),\n };\n\n private additionalScrollMargin = 200;\n\n private initialized = false;\n\n private comingFromNotifications = false;\n\n constructor(\n readonly apiV3Service:ApiV3Service,\n readonly I18n:I18nService,\n readonly cdRef:ChangeDetectorRef,\n readonly uiRouterGlobals:UIRouterGlobals,\n readonly wpActivity:WorkPackagesActivityService,\n readonly storeService:WpSingleViewService,\n readonly browserDetector:BrowserDetector,\n private wpSingleViewService:WpSingleViewService,\n readonly deviceService:DeviceService,\n ) {\n super();\n\n this.reverse = wpActivity.isReversed;\n this.togglerText = this.text.commentsOnly;\n\n const lastTransitionName = uiRouterGlobals.successfulTransitions.peekTail().from().name as string;\n const comingFromNotifications = /^notifications/.test(lastTransitionName);\n const firstRouteOnMobile = lastTransitionName === '' && this.browserDetector.isMobile;\n\n if (comingFromNotifications || firstRouteOnMobile) {\n this.comingFromNotifications = true;\n }\n }\n\n ngOnInit():void {\n this.initialized = false;\n this\n .apiV3Service\n .work_packages\n .id(this.workPackageId)\n .requireAndStream()\n .pipe(this.untilDestroyed())\n .subscribe((wp) => {\n this.workPackage = wp;\n this.reloadActivities();\n });\n\n this\n .wpSingleViewService\n .selectNotificationsCount$\n .pipe(\n this.untilDestroyed(),\n distinctUntilChanged(),\n )\n .subscribe(() => {\n this.reloadActivities();\n });\n }\n\n private scrollIfNotificationPresent() {\n this\n .storeService\n .hasNotifications$\n .pipe(take(1))\n .subscribe((hasNotification) => {\n if (hasNotification) {\n this.scrollToUnreadNotification();\n }\n });\n }\n\n private reloadActivities() {\n void this.wpActivity.require(this.workPackage, true).then((activities:HalResource[]) => {\n this.updateActivities(activities);\n this.cdRef.detectChanges();\n\n if (!this.initialized) {\n this.initialized = true;\n this.scrollIfNotificationPresent();\n }\n });\n }\n\n protected updateActivities(activities:HalResource[]):void {\n this.unfilteredActivities = activities;\n\n const visible = this.getVisibleActivities();\n this.visibleActivities = visible.map((el:HalResource, i:number) => this.info(el, i));\n this.showToggler = this.shouldShowToggler();\n }\n\n protected shouldShowToggler():boolean {\n const countAll = this.unfilteredActivities.length;\n const countWithComments = this.getActivitiesWithComments().length;\n\n return countAll > 1\n && countWithComments > 0\n && countWithComments < this.unfilteredActivities.length;\n }\n\n protected getVisibleActivities():HalResource[] {\n if (!this.onlyComments) {\n return this.unfilteredActivities;\n }\n return this.getActivitiesWithComments();\n }\n\n protected getActivitiesWithComments():HalResource[] {\n return this.unfilteredActivities\n .filter((activity:HalResource) => !!_.get(activity, 'comment.html'));\n }\n\n protected hasUnreadNotification(activityHref:string):Observable {\n return this\n .storeService\n .selectNotifications$\n .pipe(\n map((notifications) => (\n !!notifications.find((notification) => notification._links.activity?.href === activityHref)\n )),\n );\n }\n\n protected scrollToUnreadNotification():void {\n const unreadNotifications = document.querySelectorAll(\"[data-notification-selector='notification-activity']\");\n // scroll to the unread notification only if there is no deep link\n if (window.location.href.indexOf('activity#') > -1 || unreadNotifications.length === 0) {\n return;\n }\n\n const notificationElement = unreadNotifications[this.reverse ? unreadNotifications.length - 1 : 0] as HTMLElement;\n const scrollContainer = document.querySelectorAll(\"[data-notification-selector='notification-scroll-container']\")[0];\n\n const scrollOffset = notificationElement.offsetTop - (scrollContainer as HTMLElement).offsetTop - this.additionalScrollMargin;\n scrollContainer.scrollTop = scrollOffset;\n\n // Make sure the scrollContainer is visible on mobile\n if (this.comingFromNotifications && this.deviceService.isMobile) {\n scrollContainer.scrollIntoView(true);\n }\n }\n\n public toggleComments():void {\n this.onlyComments = !this.onlyComments;\n this.updateActivities(this.unfilteredActivities);\n\n if (this.onlyComments) {\n this.togglerText = this.text.showAll;\n } else {\n this.togglerText = this.text.commentsOnly;\n }\n }\n\n public info(activity:HalResource, index:number):ActivityEntryInfo {\n return this.wpActivity.info(this.unfilteredActivities, activity, index);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { ActivityPanelBaseController } from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-base.controller';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { ActivityEntryInfo } from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-entry-info';\nimport { trackByProperty } from 'core-app/shared/helpers/angular/tracking-functions';\n\n@Component({\n selector: 'newest-activity-on-overview',\n templateUrl: './activity-on-overview.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NewestActivityOnOverviewComponent extends ActivityPanelBaseController {\n @Input('workPackage') public workPackage:WorkPackageResource;\n\n public latestActivityInfo:ActivityEntryInfo[] = [];\n\n public trackByIdentifier = trackByProperty('identifier');\n\n ngOnInit() {\n this.workPackageId = this.workPackage.id!;\n super.ngOnInit();\n }\n\n protected shouldShowToggler() {\n return false;\n }\n\n protected updateActivities(activities:any) {\n super.updateActivities(activities);\n this.latestActivityInfo = this.latestActivities();\n }\n\n private latestActivities(visible = 3) {\n if (this.reverse) {\n // In reverse, we already get reversed entries from API.\n // So simply take the first three\n const segment = this.unfilteredActivities.slice(0, visible);\n return segment.map((el:HalResource, i:number) => this.info(el, i));\n }\n // In ascending sort, take the last three items\n const segment = this.unfilteredActivities.slice(-visible);\n const startIndex = this.unfilteredActivities.length - segment.length;\n return segment.map((el:HalResource, i:number) => this.info(el, startIndex + i));\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { trackByProperty } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { ActivityPanelBaseController } 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 ngOnInit() {\n const { workPackageId } = this.uiRouterGlobals.params as unknown as { workPackageId:string };\n this.workPackageId = workPackageId;\n super.ngOnInit();\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport * as moment from 'moment-timezone';\n\nexport class ActivityEntryInfo {\n public date = this.activityDate(this.activity);\n\n public dateOfPrevious = this.index > 0 ? this.activityDate(this.activities[this.index - 1]) : undefined;\n\n public isNextDate = this.date !== this.dateOfPrevious;\n\n constructor(public timezoneService:TimezoneService,\n public isReversed:boolean,\n public activities:any[],\n public activity:HalResource,\n public index:number) {\n }\n\n public number(forceReverse = false):number {\n return this.orderedIndex(this.index, forceReverse);\n }\n\n public get href():string {\n return this.activity.href as string;\n }\n\n public get identifier():string {\n return `${this.href}-${this.version}-${this.updatedAt}`;\n }\n\n public get version():number {\n return this.activity.version as number;\n }\n\n public get updatedAt():string {\n return this.activity.updatedAt as string;\n }\n\n public isInitial(forceReverse = false) {\n let activityNo = this.number(forceReverse);\n\n if (this.activity._type.indexOf('Activity') !== 0) {\n return false;\n }\n\n if (activityNo === 1) {\n return true;\n }\n\n while (--activityNo > 0) {\n const idx = this.orderedIndex(activityNo, forceReverse) - 1;\n const activity = this.activities[idx];\n if (!_.isNil(activity) && activity._type.indexOf('Activity') === 0) {\n return false;\n }\n }\n\n return true;\n }\n\n protected activityDate(activity:any) {\n // Force long date regardless of current date settings for headers\n return moment(activity.createdAt).format('LL');\n }\n\n protected orderedIndex(activityNo:number, forceReverse = false) {\n if (forceReverse || this.isReversed) {\n return this.activities.length - activityNo;\n }\n\n return activityNo + 1;\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\nimport { ActivityEntryInfo } from './activity-entry-info';\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 public info(activities:HalResource[], activity:HalResource, index:number) {\n return new ActivityEntryInfo(this.timezoneService, this.isReversed, activities, activity, index);\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { HookService } from 'core-app/features/plugins/hook-service';\nimport { CurrentUserService } from 'core-app/core/current-user/current-user.service';\nimport { StoragesResourceService } from 'core-app/core/state/storages/storages.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';\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 constructor(\n private readonly i18n:I18nService,\n private readonly hook:HookService,\n private readonly currentUserService:CurrentUserService,\n private readonly storagesResourceService:StoragesResourceService,\n private readonly projectStoragesResourceService:ProjectStoragesResourceService,\n ) { }\n\n ngOnInit():void {\n const project = this.workPackage.project as HalResource;\n if (project.id === null) {\n return;\n }\n\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","\n\n
    \n
    \n
    \n

    \n
    \n
    \n\n \n
    \n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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} 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 {\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(readonly I18n:I18nService,\n readonly $state:StateService,\n readonly apiV3Service:ApiV3Service) {\n super();\n\n this.workPackageId = this.$state.params.workPackageId;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { 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(readonly I18n:I18nService,\n readonly $transition:Transition,\n readonly apiV3Service:ApiV3Service) {\n super();\n }\n\n ngOnInit() {\n const wpId = this.workPackageId || this.$transition.params('to').workPackageId;\n this\n .apiV3Service\n .work_packages\n .id(wpId)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp) => {\n this.workPackageId = wp.id!;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 Input,\n OnInit,\n} from '@angular/core';\nimport { Transition } 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 { WorkPackageWatchersService } 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 { 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';\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(readonly I18n:I18nService,\n readonly elementRef:ElementRef,\n readonly wpWatchersService:WorkPackageWatchersService,\n readonly $transition:Transition,\n readonly notificationService:WorkPackageNotificationService,\n readonly loadingIndicator:LoadingIndicatorService,\n readonly cdRef:ChangeDetectorRef,\n readonly pathHelper:PathHelperService,\n readonly apiV3Service:ApiV3Service) {\n super();\n }\n\n public ngOnInit() {\n this.$element = jQuery(this.elementRef.nativeElement);\n\n this.workPackageId = this.$transition.params('to').workPackageId;\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.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 this.cdRef.detectChanges();\n })\n .catch((error:any) => this.notificationService.showError(error, this.workPackage));\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\n BehaviorSubject,\n combineLatest,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n first,\n map,\n} 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: '',\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 object.name = 'date';\n } else {\n object.field = this.displayField(change, 'combinedDate');\n object.name = '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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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

    \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 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.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\n constructor(readonly injector:Injector,\n readonly I18n:I18nService,\n readonly wpTableColumns:WorkPackageViewColumnsService,\n readonly ConfigurationService:ConfigurationService,\n readonly bannerService:BannersService) {\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(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 this.wpTableGroupBy\n .onReady()\n .then(() => {\n this.availableGroups = _.sortBy(this.wpTableGroupBy.available, 'name');\n this.currentGroup = this.wpTableGroupBy.current;\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 { 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 { 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';\n\n@Component({\n templateUrl: './timelines-tab.component.html',\n})\nexport class WpTableConfigurationTimelinesTabComponent implements TabComponent {\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(readonly injector:Injector,\n readonly I18n:I18nService,\n readonly wpTableTimeline:WorkPackageViewTimelineService,\n readonly wpTableColumns:WorkPackageViewColumnsService) {\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","
    \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';\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));\n\n constructor(@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 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';\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 id: 'timelines',\n name: this.I18n.t('js.gantt_chart.label'),\n componentClass: WpTableConfigurationTimelinesTabComponent,\n },\n ];\n\n constructor(readonly I18n:I18nService) {\n }\n\n public get tabs() {\n return this._tabs;\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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 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 (!!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 it's 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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 } from '@angular/core';\nimport { WorkPackageTableConfigurationObject } from 'core-app/features/work-packages/components/wp-table/wp-table-configuration';\n\nexport const wpEmbeddedTableMacroSelector = 'macro.embedded-table';\n\n@Component({\n selector: wpEmbeddedTableMacroSelector,\n template: `\n \n \n `,\n})\nexport class EmbeddedTablesMacroComponent {\n // noinspection JSUnusedGlobalSymbols\n public queryProps:any;\n\n public configuration:WorkPackageTableConfigurationObject = {\n actionsColumnEnabled: false,\n columnMenuEnabled: false,\n contextMenuEnabled: false,\n };\n\n constructor(readonly elementRef:ElementRef) {\n }\n\n ngOnInit() {\n const element = this.elementRef.nativeElement;\n this.queryProps = JSON.parse(element.dataset.queryProps);\n }\n}\n","import {\n Component, ElementRef, Input,\n} from '@angular/core';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\n\nexport const wpTableEntrySelector = 'wp-embedded-table-entry';\n\n@Component({\n selector: wpTableEntrySelector,\n template: `\n \n \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 {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageViewPaginationService } 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 { OpTableActionsService } 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 { WpTableConfigurationModalComponent } 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 { WorkPackageEmbeddedBaseComponent } 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 {\n distinctUntilChanged,\n map,\n take,\n withLatestFrom,\n} from 'rxjs/operators';\nimport { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator';\nimport { KeepTabService } 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';\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:any = {};\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 void this.loadForm(query);\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 private loadForm(query:QueryResource):Promise {\n if (!this.formPromise) {\n this.formPromise = firstValueFrom(\n this\n .apiv3Service\n .withOptionalProject(this.projectIdentifier)\n .queries\n .form\n .load(query),\n )\n .then(([form, _]) => {\n this.wpStatesInitialization.updateStatesFromForm(query, form);\n return form;\n })\n .catch(() => undefined);\n }\n\n return this.formPromise;\n }\n\n public loadQuery(visible = true, firstPage = false):Promise {\n // Ensure we are loading the form.\n this.formPromise = undefined;\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 }\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';\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 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 \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';\n\n@Injectable()\nexport class RestrictedWpTableConfigurationService extends WpTableConfigurationService {\n constructor(@Inject(OpQueryConfigurationLocalsToken) readonly locals:QueryConfigurationLocals,\n readonly I18n:I18nService) {\n super(I18n);\n }\n\n public get tabs():TabInterface[] {\n const disabledTabs = this.locals.disabledTabs || {};\n\n return this\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\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","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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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):boolean {\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 true;\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 return false;\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):boolean {\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 return false;\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):boolean {\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 return false;\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 // Avoid the state capture when clicking with modifier\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 = jQuery(evt.target);\n const element = target.closest(this.SELECTOR);\n const state = element.data('wpState');\n const workPackageId = element.data('workPackageId');\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}`);\n const classIdentifier = row.data('classIdentifier');\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 evt.stopPropagation();\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 { HighlightingTransformer } from 'core-app/features/work-packages/components/wp-fast-table/handlers/state/highlighting-transformer';\nimport { DragAndDropTransformer } from 'core-app/features/work-packages/components/wp-fast-table/handlers/state/drag-and-drop-transformer';\nimport {\n WorkPackageViewEventHandler, WorkPackageViewOutputs,\n WorkPackageViewHandlerRegistry,\n} from 'core-app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry';\nimport { GroupFoldTransformer } 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';\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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 {\n ChangeDetectionStrategy, Component, Injector, Input, OnInit,\n} from '@angular/core';\nimport { KeepTabService } 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 { 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 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 { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.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 wpRelations = injector.get(WorkPackageRelationsService);\n const apiV3Service = injector.get(ApiV3Service);\n const wpId = workPackage.id!.toString();\n\n wpRelations.require(wpId);\n\n return combineLatest([\n wpRelations\n .state(wpId.toString())\n .values$(),\n apiV3Service\n .work_packages\n .id(wpId)\n .requireAndStream(),\n ])\n .pipe(\n map(([relations, workPackage]) => {\n const relationCount = _.size(relations);\n const childrenCount = _.size(workPackage.children);\n\n return relationCount + childrenCount;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { FileLinksResourceService } from 'core-app/core/state/file-links/file-links.service';\nimport { AttachmentsResourceService } from 'core-app/core/state/attachments/attachments.service';\n\nexport function workPackageFilesCount(\n workPackage:WorkPackageResource,\n injector:Injector,\n):Observable {\n const attachmentService = injector.get(AttachmentsResourceService);\n const fileLinkService = injector.get(FileLinksResourceService);\n\n return combineLatest(\n [\n attachmentService.collection(workPackage.$links.attachments.href || ''),\n fileLinkService.collection(workPackage.$links.fileLinks?.href || ''),\n ],\n ).pipe(\n map(([a, f]) => a.length + f.length),\n );\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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,\n ChangeDetectorRef,\n Component,\n Injector,\n Input,\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 { TimeEntryEditService } from 'core-app/shared/components/time_entries/edit/edit.service';\nimport { ToastService } from 'core-app/shared/components/toaster/toast.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 {\n @Input() public workPackage:WorkPackageResource;\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 constructor(\n readonly injector:Injector,\n readonly I18n:I18nService,\n readonly apiV3Service:ApiV3Service,\n readonly timeEntryService:TimeEntryTimerService,\n readonly timeEntryEditService:TimeEntryEditService,\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 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():Promise {\n const active = await firstValueFrom(this.timeEntryService.refresh());\n if (!active) {\n return this.toastService.addWarning(this.text.timer_already_stopped);\n }\n\n return this.timeEntryEditService.stopTimerAndEdit(active);\n }\n\n start():void {\n this\n .timeEntryService\n .refresh()\n .subscribe((active) => {\n if (active) {\n this.showStopModal(active)\n .then(() => this.stop().then(() => this.startTimer()))\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","
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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('showText') public showText = false;\n\n @Input('disabled') public disabled = false;\n\n public buttonText:string;\n\n public buttonTitle:string;\n\n public buttonClass:string;\n\n public buttonId:string;\n\n public watchIconClass:string;\n\n constructor(readonly I18n:I18nService,\n readonly wpWatchersService:WorkPackageWatchersService,\n readonly apiV3Service:ApiV3Service,\n readonly cdRef:ChangeDetectorRef) {\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() {\n if (this.isWatched) {\n this.buttonTitle = this.I18n.t('js.label_unwatch_work_package');\n this.buttonText = this.I18n.t('js.label_unwatch');\n this.buttonClass = '-active';\n this.buttonId = 'unwatch-button';\n this.watchIconClass = 'icon-watched';\n } else {\n this.buttonTitle = this.I18n.t('js.label_watch_work_package');\n this.buttonText = this.I18n.t('js.label_watch');\n this.buttonClass = '';\n this.buttonId = 'watch-button';\n this.watchIconClass = 'icon-unwatched';\n }\n }\n}\n","import {\n derive,\n input,\n InputState,\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';\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 // 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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, Injector } from '@angular/core';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { OpTableActionsService } from 'core-app/features/work-packages/components/wp-table/table-actions/table-actions.service';\nimport { WorkPackageViewRelationColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { WorkPackageViewPaginationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.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 { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { WorkPackageViewSumService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport { WorkPackageViewAdditionalElementsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-additional-elements.service';\nimport { WorkPackageViewHighlightingService } 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 { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service';\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\nimport { HalResourceEditingService } 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 { WorkPackageRelationsHierarchyService } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport { WorkPackageFiltersService } from 'core-app/features/work-packages/components/filters/wp-filters/wp-filters.service';\nimport { WorkPackageContextMenuHelperService } from 'core-app/features/work-packages/components/wp-table/context-menu-helper/wp-context-menu-helper.service';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { WpChildrenInlineCreateService } from 'core-app/features/work-packages/components/wp-relations/embedded/children/wp-children-inline-create.service';\nimport { WpRelationInlineCreateService } from 'core-app/features/work-packages/components/wp-relations/embedded/relations/wp-relation-inline-create.service';\nimport { WorkPackagesListChecksumService } from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service';\nimport { debugLog } from 'core-app/shared/helpers/debug_output';\nimport { TableDragActionsRegistryService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-actions-registry.service';\nimport { WorkPackageViewOrderService } 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 { WorkPackageCardViewService } from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-view.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 { WorkPackageViewHierarchyIdentationService } 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 { WorkPackageNotificationService } 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 { WorkPackageViewCollapsedGroupsService } 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 { WorkPackageViewBaselineService } 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 selector: '[wp-isolated-query-space]',\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(private elementRef:ElementRef,\n public querySpace:IsolatedQuerySpace,\n private injector:Injector) {\n debugLog('Opening isolated query space %O in %O', injector, elementRef.nativeElement);\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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.style.backgroundImage = 'linear-gradient(90deg, rgba(255,255,255,0) 0%, #F1F1F1 100%)';\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.style.backgroundImage = 'linear-gradient(90deg, #F1F1F1 0%, rgba(255,255,255,0) 80%)';\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\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.qaSelector = `wp-timeline--non-working-day_${day.getDate()}-${day.getMonth() + 1}-${day.getFullYear()}`;\n }\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","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","import { Injectable } from '@angular/core';\nimport { input } from '@openproject/reactivestates';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\n\n@Injectable()\nexport class IsolatedGraphQuerySpace extends IsolatedQuerySpace {\n chartType = input();\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 } from '@angular/core';\nimport { OpTableActionsService } from 'core-app/features/work-packages/components/wp-table/table-actions/table-actions.service';\nimport { WorkPackageViewRelationColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-relation-columns.service';\nimport { WorkPackageViewPaginationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-pagination.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 { WorkPackageViewColumnsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-columns.service';\nimport { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.service';\nimport { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service';\nimport { WorkPackageViewSumService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport { WorkPackageViewAdditionalElementsService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-additional-elements.service';\nimport { WorkPackageViewHighlightingService } 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 { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service';\nimport { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service';\n\nimport { HalResourceEditingService } 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 { WorkPackageRelationsHierarchyService } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.service';\nimport { WorkPackageFiltersService } from 'core-app/features/work-packages/components/filters/wp-filters/wp-filters.service';\nimport { WorkPackageContextMenuHelperService } from 'core-app/features/work-packages/components/wp-table/context-menu-helper/wp-context-menu-helper.service';\nimport { WorkPackageInlineCreateService } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.service';\nimport { WpChildrenInlineCreateService } from 'core-app/features/work-packages/components/wp-relations/embedded/children/wp-children-inline-create.service';\nimport { WpRelationInlineCreateService } from 'core-app/features/work-packages/components/wp-relations/embedded/relations/wp-relation-inline-create.service';\nimport { WorkPackagesListChecksumService } from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service';\nimport { TableDragActionsRegistryService } from 'core-app/features/work-packages/components/wp-table/drag-and-drop/actions/table-drag-actions-registry.service';\nimport { WorkPackageViewHierarchyIdentationService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-hierarchy-indentation.service';\nimport { WorkPackageService } from 'core-app/features/work-packages/services/work-package.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageIsolatedQuerySpaceDirective } from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive';\nimport { IsolatedGraphQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-graph-query-space';\n\nexport const WpIsolatedGraphQuerySpaceProviders = [\n // Open the isolated space first, order is important here\n { provide: IsolatedQuerySpace, useClass: IsolatedGraphQuerySpace },\n OpTableActionsService,\n\n // Work package table services\n WorkPackagesListChecksumService,\n WorkPackagesListService,\n WorkPackageViewRelationColumnsService,\n WorkPackageViewPaginationService,\n WorkPackageViewGroupByService,\n WorkPackageViewHierarchiesService,\n WorkPackageViewSortByService,\n WorkPackageViewColumnsService,\n WorkPackageViewFiltersService,\n WorkPackageViewTimelineService,\n WorkPackageViewSelectionService,\n WorkPackageViewSumService,\n WorkPackageViewAdditionalElementsService,\n WorkPackageViewFocusService,\n WorkPackageViewHighlightingService,\n WorkPackageService,\n WorkPackageViewHierarchyIdentationService,\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 HalResourceEditingService,\n WorkPackageCreateService,\n\n WorkPackageStatesInitializationService,\n\n // Table Drag & Drop actions\n TableDragActionsRegistryService,\n];\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 selector: '[wp-isolated-graph-query-space]',\n providers: WpIsolatedGraphQuerySpaceProviders,\n})\nexport class WorkPackageIsolatedGraphQuerySpaceDirective extends WorkPackageIsolatedQuerySpaceDirective {\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 Injector,\n Input,\n ViewEncapsulation,\n} 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(readonly I18n:I18nService,\n public wpEditForm:EditFormComponent,\n protected injector:Injector) {\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 public fieldName(name:string) {\n if (name === 'startDate') {\n return 'combinedDate';\n }\n return name;\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { 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 { WorkPackageEmbeddedTableComponent } from 'core-app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component';\nimport { WorkPackageEmbeddedTableEntryComponent } from 'core-app/features/work-packages/components/wp-table/embedded/wp-embedded-table-entry.component';\nimport { WorkPackageTablePaginationComponent } from 'core-app/features/work-packages/components/wp-table/table-pagination/wp-table-pagination.component';\nimport { WorkPackageTimelineTableController } from 'core-app/features/work-packages/components/wp-table/timeline/container/wp-timeline-container.directive';\nimport { WorkPackageInlineCreateComponent } from 'core-app/features/work-packages/components/wp-inline-create/wp-inline-create.component';\nimport { OpTypesContextMenuDirective } from 'core-app/shared/components/op-context-menu/handlers/op-types-context-menu.directive';\nimport { OpColumnsContextMenu } from 'core-app/shared/components/op-context-menu/handlers/op-columns-context-menu.directive';\nimport { OpSettingsMenuDirective } from 'core-app/shared/components/op-context-menu/handlers/op-settings-dropdown-menu.directive';\nimport { WorkPackageStatusDropdownDirective } from 'core-app/shared/components/op-context-menu/handlers/wp-status-dropdown-menu.directive';\nimport { WorkPackageCreateSettingsMenuDirective } from 'core-app/shared/components/op-context-menu/handlers/wp-create-settings-menu.directive';\nimport { WorkPackageSingleContextMenuDirective } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-single-context-menu';\nimport { WorkPackageTimelineHeaderController } from 'core-app/features/work-packages/components/wp-table/timeline/header/wp-timeline-header.directive';\nimport { WorkPackageTableTimelineRelations } from 'core-app/features/work-packages/components/wp-table/timeline/global-elements/wp-timeline-relations.directive';\nimport { WorkPackageTableTimelineStaticElements } from 'core-app/features/work-packages/components/wp-table/timeline/global-elements/wp-timeline-static-elements.directive';\nimport { WorkPackageTableTimelineGrid } from 'core-app/features/work-packages/components/wp-table/timeline/grid/wp-timeline-grid.directive';\nimport { WorkPackageTimelineButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-timeline-toggle-button/wp-timeline-toggle-button.component';\nimport { WorkPackageOverviewTabComponent } from 'core-app/features/work-packages/components/wp-single-view-tabs/overview-tab/overview-tab.component';\nimport { WorkPackageStatusButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-status-button/wp-status-button.component';\nimport { WorkPackageReplacementLabelComponent } from 'core-app/features/work-packages/components/wp-edit/wp-edit-field/wp-replacement-label.component';\nimport { NewestActivityOnOverviewComponent } from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/activity-on-overview.component';\nimport { WorkPackageActivityTabComponent } 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 { WpCustomActionComponent } from 'core-app/features/work-packages/components/wp-custom-actions/wp-custom-actions/wp-custom-action.component';\nimport { WpCustomActionsComponent } from 'core-app/features/work-packages/components/wp-custom-actions/wp-custom-actions.component';\nimport { WorkPackageRelationsTabComponent } from 'core-app/features/work-packages/components/wp-single-view-tabs/relations-tab/relations-tab.component';\nimport { WorkPackageRelationsComponent } from 'core-app/features/work-packages/components/wp-relations/wp-relations.component';\nimport { WorkPackageRelationsGroupComponent } from 'core-app/features/work-packages/components/wp-relations/wp-relations-group/wp-relations-group.component';\nimport { WorkPackageRelationRowComponent } from 'core-app/features/work-packages/components/wp-relations/wp-relation-row/wp-relation-row.component';\nimport { WorkPackageRelationsCreateComponent } from 'core-app/features/work-packages/components/wp-relations/wp-relations-create/wp-relations-create.component';\nimport { WorkPackageRelationsHierarchyComponent } from 'core-app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive';\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 { WorkPackageFoldToggleButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-fold-toggle-button/wp-fold-toggle-button.component';\nimport { WpTableConfigurationModalComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration.modal';\nimport { WpTableConfigurationColumnsTabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/columns-tab.component';\nimport { WpTableConfigurationDisplaySettingsTabComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/tabs/display-settings-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 { WpTableConfigurationRelationSelectorComponent } from 'core-app/features/work-packages/components/wp-table/configuration-modal/wp-table-configuration-relation-selector';\nimport { WorkPackageWatchersTabComponent } from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/watchers-tab.component';\nimport { WorkPackageWatcherEntryComponent } from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watcher-entry.component';\nimport { WorkPackageNewSplitViewComponent } from 'core-app/features/work-packages/components/wp-new/wp-new-split-view.component';\nimport { WorkPackageNewFullViewComponent } from 'core-app/features/work-packages/components/wp-new/wp-new-full-view.component';\nimport { EmbeddedTablesMacroComponent } 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 { WorkPackageTableSumsRowController } from 'core-app/features/work-packages/components/wp-table/wp-table-sums-row/wp-table-sums-row.directive';\nimport { ExternalQueryConfigurationComponent } from 'core-app/features/work-packages/components/wp-table/external-configuration/external-query-configuration.component';\nimport { ExternalQueryConfigurationService } 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';\nimport { ExternalRelationQueryConfigurationService } from 'core-app/features/work-packages/components/wp-table/external-configuration/external-relation-query-configuration.service';\nimport { WorkPackagesListInvalidQueryService } 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 { WorkPackageWatchersService } from 'core-app/features/work-packages/components/wp-single-view-tabs/watchers-tab/wp-watchers.service';\nimport { WorkPackagesActivityService } 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 { WorkPackageChildrenQueryComponent } from 'core-app/features/work-packages/components/wp-relations/embedded/children/wp-children-query.component';\nimport { WpRelationInlineAddExistingComponent } from 'core-app/features/work-packages/components/wp-relations/embedded/inline/add-existing/wp-relation-inline-add-existing.component';\nimport { WorkPackageRelationQueryComponent } 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 { WorkPackageSplitViewComponent } from 'core-app/features/work-packages/routing/wp-split-view/wp-split-view.component';\nimport { WorkPackagesFullViewComponent } 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 { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component';\nimport { WorkPackageRelationsService } from 'core-app/features/work-packages/components/wp-relations/wp-relations.service';\nimport { OpenprojectBcfModule } from 'core-app/features/bim/bcf/openproject-bcf.module';\nimport { WorkPackageRelationsAutocompleteComponent } from 'core-app/features/work-packages/components/wp-relations/wp-relations-create/wp-relations-autocomplete/wp-relations-autocomplete.component';\nimport { CustomDateActionAdminComponent } from 'core-app/features/work-packages/components/wp-custom-actions/date-action/custom-date-action-admin.component';\nimport { WorkPackagesTableConfigMenuComponent } from 'core-app/features/work-packages/components/wp-table/config-menu/config-menu.component';\nimport { WorkPackageViewToggleButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-view-toggle-button/work-package-view-toggle-button.component';\nimport { WorkPackageViewDropdownMenuDirective } 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 { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service';\nimport { WorkPackageEditActionsBarComponent } 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 { WorkPackageSingleCardComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component';\nimport { WorkPackageListViewComponent } from 'core-app/features/work-packages/routing/wp-list-view/wp-list-view.component';\nimport { PartitionedQuerySpacePageComponent } from 'core-app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component';\nimport { WorkPackageViewPageComponent } from 'core-app/features/work-packages/routing/wp-view-page/wp-view-page.component';\nimport { WorkPackageSettingsButtonComponent } 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 { WorkPackageGroupToggleDropdownMenuDirective } from 'core-app/shared/components/op-context-menu/handlers/wp-group-toggle-dropdown-menu.directive';\nimport { OpenprojectAutocompleterModule } from 'core-app/shared/components/autocompleter/openproject-autocompleter.module';\nimport { OpWpTabsModule } from 'core-app/features/work-packages/components/wp-tabs/wp-tabs.module';\nimport { EditFieldControlsModule } from 'core-app/shared/components/fields/edit/field-controls/edit-field-controls.module';\nimport { WpTableExportModalComponent } from 'core-app/shared/components/modals/export-modal/wp-table-export.modal';\nimport { WpButtonMacroModalComponent } 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 { WorkPackageTypeStatusComponent } from 'core-app/features/work-packages/components/wp-type-status/wp-type-status.component';\nimport { WorkPackageIsolatedQuerySpaceDirective } from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive';\nimport { WorkPackageBreadcrumbParentComponent } from 'core-app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component';\nimport { WorkPackageSubjectComponent } from 'core-app/features/work-packages/components/wp-subject/wp-subject.component';\nimport { WorkPackageBreadcrumbComponent } 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 { WorkPackageCommentComponent } from 'core-app/features/work-packages/components/work-package-comment/work-package-comment.component';\nimport { WorkPackageWatcherButtonComponent } from 'core-app/features/work-packages/components/wp-watcher-button/wp-watcher-button.component';\nimport { WorkPackageCommentFieldComponent } from 'core-app/features/work-packages/components/work-package-comment/wp-comment-field.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 { WorkPackageIsolatedGraphQuerySpaceDirective } from 'core-app/features/work-packages/directives/query-space/wp-isolated-graph-query-space.directive';\nimport { RevisionActivityComponent } from 'core-app/features/work-packages/components/wp-activity/revision/revision-activity.component';\nimport { WorkPackageCopySplitViewComponent } from 'core-app/features/work-packages/components/wp-copy/wp-copy-split-view.component';\nimport { WorkPackageFormAttributeGroupComponent } 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 { ActivityEntryComponent } from 'core-app/features/work-packages/components/wp-activity/activity-entry.component';\nimport { ActivityLinkComponent } from 'core-app/features/work-packages/components/wp-activity/activity-link.component';\nimport { UserActivityComponent } from 'core-app/features/work-packages/components/wp-activity/user/user-activity.component';\nimport { WorkPackageSplitViewToolbarComponent } from 'core-app/features/work-packages/components/wp-details/wp-details-toolbar.component';\nimport { WorkPackageCopyFullViewComponent } 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 { QueryFiltersComponent } from 'core-app/features/work-packages/components/filters/query-filters/query-filters.component';\nimport { FilterDateTimesValueComponent } from 'core-app/features/work-packages/components/filters/filter-date-times-value/filter-date-times-value.component';\nimport { FilterSearchableMultiselectValueComponent } from 'core-app/features/work-packages/components/filters/filter-searchable-multiselect-value/filter-searchable-multiselect-value.component';\nimport { QueryFilterComponent } from 'core-app/features/work-packages/components/filters/query-filter/query-filter.component';\nimport { FilterDatesValueComponent } from 'core-app/features/work-packages/components/filters/filter-dates-value/filter-dates-value.component';\nimport { FilterStringValueComponent } from 'core-app/features/work-packages/components/filters/filter-string-value/filter-string-value.component';\nimport { FilterProjectComponent } from 'core-app/features/work-packages/components/filters/filter-project/filter-project.component';\nimport { FilterDateValueComponent } from 'core-app/features/work-packages/components/filters/filter-date-value/filter-date-value.component';\nimport { FilterDateTimeValueComponent } from 'core-app/features/work-packages/components/filters/filter-date-time-value/filter-date-time-value.component';\nimport { FilterToggledMultiselectValueComponent } from 'core-app/features/work-packages/components/filters/filter-toggled-multiselect-value/filter-toggled-multiselect-value.component';\nimport { WorkPackageFilterByTextInputComponent } from 'core-app/features/work-packages/components/filters/quick-filter-by-text-input/quick-filter-by-text-input.component';\nimport { FilterIntegerValueComponent } from 'core-app/features/work-packages/components/filters/filter-integer-value/filter-integer-value.component';\nimport { WorkPackageFilterContainerComponent } from 'core-app/features/work-packages/components/filters/filter-container/filter-container.directive';\nimport { FilterBooleanValueComponent } from 'core-app/features/work-packages/components/filters/filter-boolean-value/filter-boolean-value.component';\nimport { WorkPackageMarkNotificationButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-mark-notification-button/work-package-mark-notification-button.component';\nimport { WorkPackageFilesTabComponent } 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 { OpBaselineModalComponent } from 'core-app/features/work-packages/components/wp-baseline/baseline-modal/baseline-modal.component';\nimport { OpBaselineComponent } from 'core-app/features/work-packages/components/wp-baseline/baseline/baseline.component';\nimport { OpBaselineLoadingComponent } from 'core-app/features/work-packages/components/wp-baseline/baseline-loading/baseline-loading.component';\nimport { OpBaselineLegendsComponent } from 'core-app/features/work-packages/components/wp-baseline/baseline-legends/baseline-legends.component';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { WorkPackageTimerButtonComponent } 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';\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 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 // Query injector isolation\n WorkPackageIsolatedQuerySpaceDirective,\n WorkPackageIsolatedGraphQuerySpaceDirective,\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 NewestActivityOnOverviewComponent,\n WorkPackageCommentComponent,\n WorkPackageCommentFieldComponent,\n ActivityEntryComponent,\n UserActivityComponent,\n RevisionActivityComponent,\n ActivityLinkComponent,\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 WorkPackageBreadcrumbComponent,\n WorkPackageSplitViewToolbarComponent,\n WorkPackageWatcherButtonComponent,\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 WpTableExportModalComponent,\n QuerySharingFormComponent,\n QuerySharingModalComponent,\n SaveQueryModalComponent,\n WpDestroyModalComponent,\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 WorkPackageViewToggleButtonComponent,\n\n // Notifications\n WorkPackageMarkNotificationButtonComponent,\n\n // Timestamps\n OpBaselineModalComponent,\n OpBaselineComponent,\n OpBaselineLoadingComponent,\n OpBaselineLegendsComponent,\n ],\n exports: [\n WorkPackagesTableComponent,\n WorkPackageTablePaginationComponent,\n WorkPackageEmbeddedTableComponent,\n WorkPackageEmbeddedTableEntryComponent,\n WorkPackageCardViewComponent,\n WorkPackageSingleCardComponent,\n WorkPackageFilterButtonComponent,\n WorkPackageFilterContainerComponent,\n WorkPackageIsolatedQuerySpaceDirective,\n WorkPackageIsolatedGraphQuerySpaceDirective,\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 ],\n})\nexport class OpenprojectWorkPackagesModule {\n static bootstrapAttributeGroupsCalled = false;\n\n constructor(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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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(() => { this.toolbarDisabled = false; });\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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.show' : 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\n\nexport const wpBaseSelector = 'work-packages-base';\n\n@Component({\n selector: wpBaseSelector,\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { StateService } from '@uirouter/core';\nimport {\n Component,\n Injector,\n OnInit,\n} from '@angular/core';\nimport { of } from 'rxjs';\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 { 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 { WpSingleViewService } from 'core-app/features/work-packages/routing/wp-view-base/state/wp-single-view.service';\nimport { CommentService } from 'core-app/features/work-packages/components/wp-activity/comment-service';\nimport { RecentItemsService } from 'core-app/core/recent-items.service';\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 CommentService,\n { provide: HalResourceNotificationService, useExisting: WorkPackageNotificationService },\n ],\n})\nexport class WorkPackagesFullViewComponent extends WorkPackageSingleViewBase implements OnInit {\n // Watcher properties\n public isWatched:boolean;\n\n public displayWatchButton = false;\n\n public displayTimerButton = 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 // private readonly i18n:I18nService,\n ) {\n super(injector, $state.params.workPackageId);\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\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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-qa-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","\n \n
    \n \n\n \n
    \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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 Injector,\n OnInit,\n} 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 { FirstRouteService } from 'core-app/core/routing/first-route-service';\nimport { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.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 { 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 { 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 { CommentService } from 'core-app/features/work-packages/components/wp-activity/comment-service';\nimport { RecentItemsService } from 'core-app/core/recent-items.service';\n\n@Component({\n templateUrl: './wp-split-view.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'op-wp-split-view',\n providers: [\n WpSingleViewService,\n CommentService,\n { provide: HalResourceNotificationService, useClass: WorkPackageNotificationService },\n ],\n})\nexport class WorkPackageSplitViewComponent extends WorkPackageSingleViewBase implements OnInit {\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;\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 backRouting:BackRoutingService,\n ) {\n super(injector, $state.params.workPackageId);\n }\n\n ngOnInit():void {\n this.observeWorkPackage();\n\n const wpId = this.$state.params.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 shouldFocus():boolean {\n return this.$state.params.focus === true;\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 private 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageNotificationService } 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';\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\n // Add relations to the stack\n Promise.all([\n this.requireInvolvedRelations(rows.map((el) => el.id!)),\n this.requireHierarchyElements(rows),\n this.requireSumsSchema(results),\n ]).then((results:string[][]) => {\n this.loadAdditional(_.flatten(results));\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\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 columns.\n return !onlyRemoved && this.hasRelationColumns();\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 * 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 switchMap, 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 const attachments = this.workPackage.attachments as unknown&{ href:string };\n this.attachmentsResourceService.fetchCollection(attachments.href).subscribe();\n\n if (this.workPackage.$links.fileLinks) {\n this.fileLinkResourceService\n .updateCollectionsForWorkPackage(this.workPackage.$links.fileLinks.href as string)\n .pipe(take(1))\n .subscribe(\n () => { /* Do nothing */ },\n (error:HttpErrorResponse) => { this.toastService.addError(error); },\n );\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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, Directive, Injector, OnDestroy, OnInit,\n} 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 { WorkPackageViewHighlightingService } 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 { 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 { 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 { WorkPackageViewSumService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-sum.service';\nimport { WorkPackageViewTimelineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-timeline.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 { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service';\nimport { WorkPackagesListChecksumService } from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service';\nimport { WorkPackageQueryStateService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-base.service';\nimport { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service';\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 { 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 { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\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 /** 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\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { WorkPackageViewToggleButtonComponent } from 'core-app/features/work-packages/components/wp-buttons/wp-view-toggle-button/work-package-view-toggle-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('work-packages.partitioned.list.new'),\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: WorkPackageViewToggleButtonComponent,\n containerClasses: 'hidden-for-tablet',\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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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';\n\n@Injectable()\nexport class WorkPackageNotificationService extends HalResourceNotificationService {\n constructor(readonly injector:Injector,\n readonly apiV3Service:ApiV3Service) {\n super(injector);\n }\n\n public showSave(resource:WorkPackageResource, isCreate = false) {\n const message:any = {\n message: this.I18n.t(`js.notice_successful_${isCreate ? 'create' : 'update'}`),\n };\n\n this.addWorkPackageFullscreenLink(message, resource as any);\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 this.ToastService.addError({\n message: errorResource.message,\n type: 'error',\n link: {\n text: this.I18n.t('js.hal.error.update_conflict_refresh'),\n target: () => this.apiV3Service.work_packages.id(resource).refresh(),\n },\n });\n\n return true;\n }\n\n return super.showCustomError(errorResource, resource);\n }\n\n private addWorkPackageFullscreenLink(message:IToast, resource:WorkPackageResource) {\n // Don't show the 'Show in full screen' link if we're there already\n if (!this.$state.includes('work-packages.show')) {\n message.link = {\n target: () => this.$state.go('work-packages.show.tabs', { tabIdentifier: 'activity', workPackageId: resource.id }),\n text: this.I18n.t('js.work_packages.message_successful_show_in_fullscreen'),\n };\n }\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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, first } 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';\nimport idFromLink from 'core-app/features/hal/helpers/id-from-link';\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 @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 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { 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 implements OnInit {\n @Input() public attachments:IAttachment[] = [];\n\n @Input() public collectionKey:string;\n\n constructor(\n private readonly attachmentsResourceService:AttachmentsResourceService,\n ) {\n super();\n }\n\n ngOnInit():void {\n }\n\n public removeAttachment(attachment:IAttachment):void {\n this.attachmentsResourceService.removeAttachment(this.collectionKey, attachment).subscribe();\n }\n}\n"," 0\n }\"\n *ngIf=\"(attachments$ | async).length\"\n [attachments]=\"attachments$ | async\"\n [collectionKey]=\"collectionKey\"\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 Input,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { 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';\n\nfunction containsFiles(dataTransfer:DataTransfer):boolean {\n return dataTransfer.types.indexOf('Files') >= 0;\n}\n\nexport const attachmentsSelector = 'op-attachments';\n\n@Component({\n selector: attachmentsSelector,\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-qa-selector') public qaSelector = '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 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 this.dragging += 1;\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 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 }\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 or 4096 bytes\n if (file.size === 0 || file.size === 4096) {\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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\nexport const staticAttributeHelpTextSelector = 'op-static-attribute-help-text';\n\n@Component({\n selector: staticAttributeHelpTextSelector,\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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, OnInit, ViewChild,\n} from '@angular/core';\nimport { NgSelectComponent } from '@ng-select/ng-select';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResource } from 'core-app/features/hal/resources/hal-resource';\nimport { IProjectAutocompleterData } from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocompleter.component';\nimport { IProjectAutocompleteItem } from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocomplete-item';\n\ntype SelectItem = { label:string, value:string, selected?:boolean };\n\nexport const autocompleteSelectDecorationSelector = 'autocomplete-select-decoration';\n\n@Component({\n template: `\n \n \n\n \n \n {{ item.label }}\n \n \n `,\n selector: autocompleteSelectDecorationSelector,\n})\nexport class AutocompleteSelectDecorationComponent implements OnInit {\n @ViewChild(NgSelectComponent) public ngSelectComponent:NgSelectComponent;\n\n public options:SelectItem[];\n\n /** Whether we're a multiselect */\n public multiselect = false;\n\n /** Get the selected options */\n public selected:SelectItem|SelectItem[];\n\n /** Get the selected options especially for the project autocompleter */\n public currentProjectSelection:{ id:string, name:string }|{ id:string, name:string }[];\n\n /** The input name we're syncing selections to */\n private syncInputFieldName:string;\n\n /** The input id used for label */\n public labelForId:string;\n\n /** The field key (e.g. status, type, or project) */\n public key:string;\n\n text = {\n placeholder: this.I18n.t('js.placeholders.selection'),\n };\n\n constructor(\n protected elementRef:ElementRef,\n readonly I18n:I18nService,\n ) {\n }\n\n ngOnInit():void {\n const element = this.elementRef.nativeElement as HTMLElement;\n\n // Set options\n this.multiselect = element.dataset.multiselect === 'true';\n this.labelForId = element.dataset.inputId!;\n this.key = element.dataset.key!;\n\n // Get the sync target\n this.syncInputFieldName = element.dataset.inputName!;\n // Add Rails multiple identifier if multiselect\n if (this.multiselect) {\n this.syncInputFieldName += '[]';\n }\n\n // Prepare and build the options\n // Expected array of objects with id, name, select\n const data:SelectItem[] = JSON.parse(element.dataset.options!);\n\n // Set initial selection\n this.setInitialSelection(data);\n if (this.isProjectField()) {\n this.setInitialProjectSelection();\n }\n\n if (!this.multiselect) {\n this.selected = (this.selected as SelectItem[])[0];\n }\n\n this.options = data;\n\n // Unhide the parent\n element.parentElement!.hidden = false;\n }\n\n setInitialSelection(data:SelectItem[]):void {\n this.updateSelection(data.filter((element) => element.selected));\n }\n\n updateSelection(items:SelectItem|SelectItem[]):void {\n this.selected = items;\n items = _.castArray(items);\n\n this.removeCurrentSyncedFields();\n items.forEach((el:SelectItem) => {\n this.createSyncedField(el.value);\n });\n }\n\n createSyncedField(value:string):void {\n const element = jQuery(this.elementRef.nativeElement);\n element\n .parent()\n .append(``);\n }\n\n removeCurrentSyncedFields():void {\n const element = jQuery(this.elementRef.nativeElement);\n element\n .parent()\n .find(`input[name=\"${this.syncInputFieldName}\"]`)\n .remove();\n }\n\n updateProjectSelection(items:IProjectAutocompleteItem|IProjectAutocompleteItem[]):void {\n items = _.castArray(items);\n const mappedItems = items.map(item => {\n const selectedItem:SelectItem = {\n label: item.name,\n value: item.id.toString(),\n selected: true,\n };\n\n return selectedItem;\n });\n\n this.updateSelection(mappedItems);\n }\n\n setInitialProjectSelection():void {\n const items = _.castArray(this.selected);\n if (items.length === 0) return;\n\n if (this.multiselect) {\n this.currentProjectSelection = items.map((item:SelectItem) => ({\n id: item.value,\n name: item.label,\n }));\n } else {\n this.currentProjectSelection = {\n id: items[0].value,\n name: items[0].label,\n };\n }\n }\n\n isProjectField():boolean {\n return this.key === 'project';\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) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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 { OpInviteUserModalService } from 'core-app/features/invite-user-modal/invite-user-modal.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 { typeFromHref } from 'core-app/shared/components/principal/principal-helper';\nimport { compareByHref } from 'core-app/shared/helpers/angular/tracking-functions';\nimport { filter } from 'rxjs/operators';\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 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 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","import {\n AfterViewInit,\n ChangeDetectionStrategy,\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 { 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 { merge } from 'rxjs';\nimport { setBodyCursor } from 'core-app/shared/helpers/dom/set-window-cursor.helper';\nimport { repositionDropdownBugfix } from 'core-app/shared/components/autocompleter/op-autocompleter/autocompleter.helper';\n\nexport interface DraggableOption {\n name:string;\n id:string;\n}\n\n@Component({\n selector: '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 {\n /** Options to show in the autocompleter */\n @Input() options:DraggableOption[];\n\n /** Should we focus the autocompleter ? */\n @Input() autofocus = true;\n\n /** Order list of selected items */\n @Input('selected') _selected:DraggableOption[] = [];\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\n text = {\n placeholder: this.I18n.t('js.label_add_columns'),\n };\n\n constructor(readonly I18n:I18nService,\n readonly dragula:DragulaService) {\n super();\n }\n\n ngOnInit():void {\n this.updateAvailableOptions();\n\n // Setup groups\n this.columnsGroup = this.dragula.createGroup('columns', {});\n\n // Set cursor when dragging\n this.dragula.drag('columns')\n .pipe(this.untilDestroyed())\n .subscribe(() => setBodyCursor('move', 'important'));\n\n // Reset cursor when cancel or dropped\n merge(\n this.dragula.drop('columns'),\n this.dragula.cancel('columns'),\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-wrapper')!,\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\n ngAfterViewInit():void {\n if (this.autofocus) {\n this.ngSelectComponent.focus();\n }\n }\n\n ngOnDestroy():void {\n super.ngOnDestroy();\n\n this.dragula.destroy('columns');\n }\n\n select(item:DraggableOption|undefined) {\n if (!item) {\n return;\n }\n\n this.selected = [...this.selected, item];\n\n // Remove selection\n this.ngSelectComponent.clearModel();\n }\n\n remove(item:DraggableOption) {\n this.selected = this.selected.filter((selected) => selected.id !== item.id);\n }\n\n get selected() {\n return this._selected;\n }\n\n set selected(val:DraggableOption[]) {\n this._selected = val;\n this.updateAvailableOptions();\n\n this.onChange.emit(this.selected);\n }\n\n opened() {\n repositionDropdownBugfix(this.ngSelectComponent);\n }\n\n private updateAvailableOptions() {\n this.availableOptions = this.options\n .filter((item) => !this.selected.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 { Observable } from 'rxjs';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\n\n@Injectable()\n\nexport class OpAutocompleterService extends UntilDestroyedMixin {\n constructor(\n private apiV3Service:ApiV3Service,\n ) {\n super();\n }\n\n // A method for fetching data with different resource type and different filter\n public loadAvailable(matching:string, resource:resource, filters?:IAPIFilter[], searchKey?:string):Observable {\n const finalFilters:ApiV3FilterBuilder = this.createFilters(filters ?? [], matching, searchKey);\n\n const filteredData = (this.apiV3Service[resource] as\n ApiV3ResourceCollection)\n .filtered(finalFilters).get()\n .pipe(map((collection) => collection.elements));\n return filteredData;\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, resource:resource, filters?:IAPIFilter[], searchKey?:string) {\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","
\n \n \n \n \n\n \n \n \n\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
\n \n {{ item.name }}\n
\n
\n\n \n {{ item.name }}\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","/* 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 EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n DropdownPosition,\n NgSelectComponent,\n} from '@ng-select/ng-select';\nimport {\n BehaviorSubject,\n merge,\n NEVER,\n Observable,\n of,\n timer,\n Subject,\n} from 'rxjs';\nimport {\n debounce,\n distinctUntilChanged,\n filter,\n switchMap,\n tap,\n} from 'rxjs/operators';\nimport { GroupValueFn } from '@ng-select/ng-select/lib/ng-select.component';\n\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 { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { OpAutocompleterFooterTemplateDirective } 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 { repositionDropdownBugfix } from 'core-app/shared/components/autocompleter/op-autocompleter/autocompleter.helper';\n\n@Component({\n selector: 'op-autocompleter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './op-autocompleter.component.html',\n styleUrls: ['./op-autocompleter.component.sass'],\n providers: [OpAutocompleterService],\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 extends UntilDestroyedMixin implements OnInit, AfterViewInit, OnChanges {\n @HostBinding('class.op-autocompleter') className = true;\n\n @Input() public filters?:IAPIFilter[] = [];\n\n @Input() public resource:resource;\n\n @Input() public model?:any;\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 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() public addTag?:boolean = 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?:boolean = 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?:boolean;\n\n @Input() public selectableGroup?:boolean = false;\n\n @Input() public selectableGroupAsModel?:boolean = true;\n\n @Input() public searchFn:(term:string, item:any) => boolean;\n\n @Input() public trackByFn ? = null;\n\n @Input() public compareWith ? = (a:unknown, b:unknown):boolean => a === b;\n\n @Input() public clearOnBackspace?:boolean = true;\n\n @Input() public labelForId ? = null;\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 // a function for setting the options of ng-select\n @Input() public getOptionsFn:(searchTerm:string) => Observable;\n\n @Output() public open = new EventEmitter();\n\n @Output() public close = 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 @ContentChild(OpAutocompleterOptionTemplateDirective, { read: TemplateRef })\n optionTemplate:TemplateRef;\n\n @ContentChild(OpAutocompleterLabelTemplateDirective, { read: TemplateRef })\n labelTemplate:TemplateRef;\n\n @ContentChild(OpAutocompleterHeaderTemplateDirective, { read: TemplateRef })\n headerTemplate:TemplateRef;\n\n @ContentChild(OpAutocompleterFooterTemplateDirective, { read: TemplateRef })\n footerTemplate:TemplateRef;\n\n initialDebounce = true;\n\n constructor(\n readonly opAutocompleterService:OpAutocompleterService,\n readonly cdRef:ChangeDetectorRef,\n readonly ngZone:NgZone,\n private readonly I18n:I18nService,\n ) {\n super();\n }\n\n ngOnInit() {\n if (!!this.getOptionsFn || this.defaultData) {\n this.typeahead = new BehaviorSubject('');\n }\n }\n\n ngOnChanges(changes:SimpleChanges):void {\n if (changes.items) {\n this.items$.next(changes.items.currentValue);\n }\n }\n\n ngAfterViewInit():void {\n if (!this.ngSelectInstance) {\n return;\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 repositionDropdown() {\n repositionDropdownBugfix(this.ngSelectInstance);\n }\n\n public opened():void { // eslint-disable-line no-unused-vars\n // Re-search for empty value as search value gets removed\n this.typeahead?.next('');\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:unknown):void {\n this.change.emit(val);\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 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.getOptionsFn)),\n distinctUntilChanged(),\n tap(() => this.loading$.next(true)),\n // tap(() => console.log('Debounce is ', this.getDebounceTimeout())),\n debounce(() => timer(this.getDebounceTimeout())),\n switchMap((queryString:string) => {\n if (this.defaultData) {\n return this.opAutocompleterService.loadData(queryString, this.resource, this.filters, this.searchKey);\n }\n\n if (this.getOptionsFn) {\n return this.getOptionsFn(queryString);\n }\n\n return NEVER;\n }),\n tap(\n () => this.loading$.next(false),\n () => this.loading$.next(false),\n ),\n );\n }\n\n private getDebounceTimeout():number {\n if (this.initialDebounce) {\n this.initialDebounce = false;\n return 0;\n }\n return 50;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport {\n FormsModule,\n ReactiveFormsModule,\n} 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 { DraggableAutocompleteComponent } from 'core-app/shared/components/autocompleter/draggable-autocomplete/draggable-autocomplete.component';\nimport { ColorsAutocompleterComponent } from 'core-app/shared/components/colors/colors-autocompleter.component';\nimport { WorkPackageAutocompleterComponent } from 'core-app/shared/components/autocompleter/work-package-autocompleter/wp-autocompleter.component';\nimport { TimeEntryWorkPackageAutocompleterComponent } from 'core-app/shared/components/autocompleter/te-work-package-autocompleter/te-work-package-autocompleter.component';\nimport { AutocompleteSelectDecorationComponent } from 'core-app/shared/components/autocompleter/autocomplete-select-decoration/autocomplete-select-decoration.component';\nimport { VersionAutocompleterComponent } from 'core-app/shared/components/autocompleter/version-autocompleter/version-autocompleter.component';\nimport { UserAutocompleterComponent } from 'core-app/shared/components/autocompleter/user-autocompleter/user-autocompleter.component';\nimport { ProjectAutocompleterComponent } from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocompleter.component';\nimport { OpAutocompleterComponent } from 'core-app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component';\nimport { OpAutocompleterOptionTemplateDirective } from 'core-app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-option-template.directive';\nimport { OpAutocompleterLabelTemplateDirective } from 'core-app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-label-template.directive';\nimport { OpAutocompleterHeaderTemplateDirective } from 'core-app/shared/components/autocompleter/op-autocompleter/directives/op-autocompleter-header-template.directive';\nimport { CreateAutocompleterComponent } from 'core-app/shared/components/autocompleter/create-autocompleter/create-autocompleter.component';\nimport { OpAutocompleterFooterTemplateDirective } from 'core-app/shared/components/autocompleter/autocompleter-footer-template/op-autocompleter-footer-template.directive';\nimport { OpSearchHighlightDirective } from 'core-app/shared/directives/search-highlight.directive';\n\nexport const OPENPROJECT_AUTOCOMPLETE_COMPONENTS = [\n CreateAutocompleterComponent,\n VersionAutocompleterComponent,\n WorkPackageAutocompleterComponent,\n TimeEntryWorkPackageAutocompleterComponent,\n DraggableAutocompleteComponent,\n UserAutocompleterComponent,\n ProjectAutocompleterComponent,\n ColorsAutocompleterComponent,\n AutocompleteSelectDecorationComponent,\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","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","\n \n {{ item.name }}\n \n\n \n {{ item.name }}\n {{ item.disabledReason }}\n \n\n\n\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 EventEmitter,\n forwardRef,\n HostBinding,\n Injector,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { HttpClient } from '@angular/common/http';\nimport { merge, Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { ID } from '@datorama/akita';\nimport { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';\nimport { PathHelperService } from 'core-app/core/path-helper/path-helper.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';\nimport { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';\nimport {\n ApiV3ListFilter,\n listParamsString,\n} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface';\nimport { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs';\n\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';\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: './project-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 implements 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 projectTracker = (item:IProjectAutocompleteItem):ID => item.href || item.id;\n\n // Load all projects as default\n @Input() public url:string = this.apiV3Service.projects.path;\n\n @Input() public name = '';\n\n @Input() public focusDirectly = false;\n\n @Input() public openDirectly = false;\n\n @Input() public multiple = false;\n\n @Input() public dropdownPosition:'bottom'|'top'|'auto' = 'auto';\n\n // ID that should be set on the input HTML element. It is used with\n //