{"version":3,"file":"main.b611578d9058d86a.js","mappings":"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2Bu0T,+B,kBC3B7C,IAAIthV,EAAM,CACT,eAAgB,CACf,MACA,oDACA,2CAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,yBAA0B,CACzB,KACA,oDACA,qDAED,2BAA4B,CAC3B,MACA,oDACA,uDAED,mBAAoB,CACnB,MACA,oDACA,uDAED,uBAAwB,CACvB,MACA,oDACA,mDAED,mBAAoB,CACnB,MACA,oDACA,+CAED,mBAAoB,CACnB,MACA,oDACA,+CAED,iCAAkC,CACjC,MACA,oDACA,UAED,6BAA8B,CAC7B,MACA,oDACA,yDAED,uBAAwB,CACvB,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,MAC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AAW,MACX,aAAc,MACd,UAAW,KACX,aAAc,KACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASuiV,eAAe1kR,GACvB,IAAI5hE,EAAKumV,sBAAsB3kR,GAC/B,OAAOwkR,EAAoBpmV,EAC5B,CACA,SAASumV,sBAAsB3kR,GAC9B,IAAIwkR,EAAoB/lT,EAAEt8B,EAAK69D,GAAM,CACpC,IAAItuC,EAAI,IAAI2C,MAAM,uBAAyB2rC,EAAM,KAEjD,MADAtuC,EAAE2nN,KAAO,mBACH3nN,CACP,CACA,OAAOvvB,EAAI69D,EACZ,CACA0kR,eAAelvU,KAAO,SAASovU,qBAC9B,OAAOrvU,OAAOC,KAAKrT,EACpB,EACAuiV,eAAeh7U,QAAUi7U,sBACzB5tO,EAAO1mE,QAAUq0S,eACjBA,eAAetmV,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,uBA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ACb,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,SAASoiV,oBAAoBvkR,GAC5B,IAAIwkR,EAAoB/lT,EAAEt8B,EAAK69D,GAC9B,OAAOv2D,QAAQC,UAAUpI,MAAK,KAC7B,IAAIowB,EAAI,IAAI2C,MAAM,uBAAyB2rC,EAAM,KAEjD,MADAtuC,EAAE2nN,KAAO,mBACH3nN,CAAC,IAIT,IAAIloB,EAAMrH,EAAI69D,GAAM5hE,EAAKoL,EAAI,GAC7B,OAAOg7U,EAAoB9yT,EAAEloB,EAAI,IAAIlI,MAAK,IAClCkjV,EAAoBlgV,EAAElG,EAAI,KAEnC,CACAmmV,oBAAoB/uU,KAAO,IAAOD,OAAOC,KAAKrT,GAC9CoiV,oBAAoBnmV,GAAK,MACzB24G,EAAO1mE,QAAUk0S,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/in-app-notification-entry.component.html","./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.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/facet/activate-facet-button.component.html","./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.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/select-input/select-input.component.html","./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.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/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/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/fields/edit/edit-field.initializer.ts","./src/app/shared/components/fields/display/display-field.initializer.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.component.html","./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.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():string[] {\n return _.keys(this.$source).filter((name) => name.indexOf('_') !== 0);\n }\n\n // Find the attribute name with a matching (localized) name;\n public attributeFromLocalizedName(name:string):string|null {\n let match:string|null = null;\n\n for (const attribute of this.availableAttributes) {\n const fieldSchema = this[attribute];\n if (fieldSchema?.name === name) {\n match = attribute;\n break;\n }\n }\n\n return match;\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 \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","\n&ngsp;\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 \n \n \n\n","\n \n {{text.mySettings}}\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';\n\nexport type BaselineOption = 'oneDayAgo'|'lastWorkingDay'|'oneWeekAgo'|'oneMonthAgo'|'aSpecificDate'|'betweenTwoSpecificDates';\n\nexport interface BaselineTimestamp {\n date:string;\n time:string;\n offset:string;\n}\n\nconst BASELINE_OPTIONS = ['oneDayAgo', 'lastWorkingDay', 'oneWeekAgo', 'oneMonthAgo', 'aSpecificDate', 'betweenTwoSpecificDates'];\n\nexport function baselineFilterFromValue(selectedDates:string[]):BaselineOption|null {\n if (selectedDates.length < 2) {\n return null;\n }\n\n const first = selectedDates[0].split('@')[0];\n if (BASELINE_OPTIONS.includes(first)) {\n return first as BaselineOption;\n }\n\n if (selectedDates[1] === DEFAULT_TIMESTAMP) {\n return 'aSpecificDate';\n }\n\n return 'betweenTwoSpecificDates';\n}\n\nexport function getPartsFromTimestamp(value:string):BaselineTimestamp|null {\n if (value.includes('@')) {\n const [date, timeWithZone] = value.split(/[@]/);\n const [time, offset] = timeWithZone.split(/(?=[+-])/);\n return { date, time, offset };\n }\n\n if (value !== 'PT0S') {\n const dateObj = moment.parseZone(value);\n const date = dateObj.format('YYYY-MM-DD');\n const time = dateObj.format('HH:mm');\n const offset = dateObj.format('Z');\n\n return { date, time, offset };\n }\n\n return null;\n}\n\nexport function attributeChanged(base:IWorkPackageTimestamp, schema:ISchemaProxy):boolean {\n return !!schema\n .availableAttributes\n .find((attribute) => {\n const name = schema.mappedName(attribute);\n return Object.prototype.hasOwnProperty.call(base, name) || Object.prototype.hasOwnProperty.call(base.$links, name);\n });\n}\n\nexport function getBaselineState(workPackage:WorkPackageResource, schemaService:SchemaCacheService):string {\n let state = '';\n const schema = schemaService.of(workPackage);\n const timestamps = workPackage.attributesByTimestamp || [];\n if (timestamps.length > 1) {\n const base = timestamps[0];\n const compare = timestamps[1];\n if ((!base._meta.exists && compare._meta.exists) || (!base._meta.matchesFilters && compare._meta.matchesFilters)) {\n state = 'added';\n } else if ((base._meta.exists && !compare._meta.exists) || (base._meta.matchesFilters && !compare._meta.matchesFilters)) {\n state = 'removed';\n } else if (attributeChanged(base, schema)) {\n state = 'updated';\n }\n } else {\n state = '';\n }\n return state;\n}\n\nexport function offsetToUtcString(offset:string) {\n const mappedOffset = offset\n .replace(/^([+-])0/, '$1')\n .replace(':00', '')\n .replace(':30', '.5');\n\n return `UTC${mappedOffset}`;\n}\n","\n \n &ngsp;\n \n\n
    \n \n {{text.now_meets_filter_criteria}}\n \n {{text.no_longer_meets_filter_criteria}}\n \n {{text.maintained_with_changes}}\n
    \n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n// See COPYRIGHT and LICENSE files for more details.\n//++\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { WorkPackageViewBaselineService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-baseline.service';\nimport { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';\nimport { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource';\nimport { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport {\n baselineFilterFromValue,\n getPartsFromTimestamp,\n getBaselineState,\n offsetToUtcString,\n} from 'core-app/features/work-packages/components/wp-baseline/baseline-helpers';\nimport { TimezoneService } from 'core-app/core/datetime/timezone.service';\nimport * as moment from 'moment-timezone';\nimport { ConfigurationService } from 'core-app/core/config/configuration.service';\nimport { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin';\nimport { Moment } from 'moment';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n templateUrl: './baseline-legends.component.html',\n styleUrls: ['./baseline-legends.component.sass'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'op-baseline-legends',\n encapsulation: ViewEncapsulation.None,\n})\nexport class OpBaselineLegendsComponent extends UntilDestroyedMixin implements OnInit {\n @HostBinding('class.op-baseline-legends') className = true;\n\n public numAdded = 0;\n\n public numRemoved = 0;\n\n public numUpdated = 0;\n\n public offset:string|null;\n\n public userOffset:string;\n\n public userTimezone:string;\n\n public localDate:string;\n\n public legendDescription:string;\n\n public text = {\n now_meets_filter_criteria: this.I18n.t('js.baseline.legends.now_meets_filter_criteria'),\n no_longer_meets_filter_criteria: this.I18n.t('js.baseline.legends.no_longer_meets_filter_criteria'),\n maintained_with_changes: this.I18n.t('js.baseline.legends.maintained_with_changes'),\n in_your_timezone: this.I18n.t('js.baseline.legends.in_your_timezone'),\n };\n\n constructor(\n readonly I18n:I18nService,\n readonly wpTableBaseline:WorkPackageViewBaselineService,\n readonly querySpace:IsolatedQuerySpace,\n readonly schemaCache:SchemaCacheService,\n readonly timezoneService:TimezoneService,\n readonly configuration:ConfigurationService,\n readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this\n .wpTableBaseline\n .live$()\n .pipe(\n this.untilDestroyed(),\n filter(() => this.wpTableBaseline.isActive()),\n )\n .subscribe((timestamps) => {\n this.userTimezone = this.timezoneService.userTimezone();\n this.userOffset = moment.tz(this.userTimezone).format('Z');\n\n const parts = getPartsFromTimestamp(timestamps[0]);\n if (parts) {\n this.offset = parts.offset;\n }\n\n this.getBaselineDetails();\n this.getFilterName(timestamps);\n this.cdRef.detectChanges();\n });\n }\n\n public getFilterName(timestamps:string[]) {\n const datesAndTimes = timestamps.map((el) => el.split(/[@T]/));\n const baselineValue = baselineFilterFromValue(this.wpTableBaseline.current);\n const changesSinceOrBetween = this.deriveChangesSinceOrBetween(baselineValue);\n let description = '';\n let upstreamDate = '';\n let localDate = '';\n\n switch (baselineValue) {\n case 'oneDayAgo':\n [upstreamDate, localDate] = this.deriveSingleDate(this.wpTableBaseline.yesterdayDate(), datesAndTimes[0][1]);\n description = this.I18n.t('js.baseline.drop_down.yesterday');\n description += ` (${upstreamDate})`;\n break;\n case 'lastWorkingDay':\n [upstreamDate, localDate] = this.deriveSingleDate(this.wpTableBaseline.lastWorkingDate(), datesAndTimes[0][1]);\n description = this.I18n.t('js.baseline.drop_down.last_working_day');\n description += ` (${upstreamDate})`;\n break;\n case 'oneWeekAgo':\n [upstreamDate, localDate] = this.deriveSingleDate(this.wpTableBaseline.lastweekDate(), datesAndTimes[0][1]);\n description = this.I18n.t('js.baseline.drop_down.last_week');\n description += ` (${upstreamDate})`;\n break;\n case 'oneMonthAgo':\n [upstreamDate, localDate] = this.deriveSingleDate(this.wpTableBaseline.lastMonthDate(), datesAndTimes[0][1]);\n description = this.I18n.t('js.baseline.drop_down.last_month');\n description += ` (${upstreamDate})`;\n break;\n case 'aSpecificDate':\n [upstreamDate, localDate] = this.formatUpstreamAndLocal(moment.parseZone(timestamps[0]));\n description += upstreamDate;\n break;\n case 'betweenTwoSpecificDates':\n [upstreamDate, localDate] = this.deriveDateRange(moment.parseZone(timestamps[0]), moment.parseZone(timestamps[1]));\n description += upstreamDate;\n break;\n default:\n break;\n }\n description = `${changesSinceOrBetween} ${description}`;\n this.legendDescription = description;\n this.localDate = localDate;\n return description;\n }\n\n private deriveChangesSinceOrBetween(baselineValue:string|null) {\n if (baselineValue === 'betweenTwoSpecificDates') {\n return this.I18n.t('js.baseline.legends.changes_between');\n }\n\n return this.I18n.t('js.baseline.legends.changes_since');\n }\n\n private deriveSingleDate(date:string, timestamp:string):[string, string] {\n const parsedDate:Moment = moment.parseZone(`${date}T${timestamp}`);\n return this.formatUpstreamAndLocal(parsedDate);\n }\n\n private deriveDateRange(start:Moment, end:Moment):[string, string] {\n const startRange = this.formatUpstreamAndLocal(start);\n const endRange = this.formatUpstreamAndLocal(end);\n\n return [\n `${startRange[0]} ${this.I18n.t('js.label_and')} ${endRange[0]}`,\n `${startRange[1]} - ${endRange[1]}`,\n ];\n }\n\n private formatUpstreamAndLocal(date:Moment):[string, string] {\n return [\n this.formatDate(date),\n this.formatDate(date.tz(this.userTimezone)),\n ];\n }\n\n public getBaselineDetails() {\n this.numAdded = 0;\n this.numRemoved = 0;\n this.numUpdated = 0;\n let state = '';\n const baselineIsActive= this.wpTableBaseline.isActive();\n const results = this.querySpace.results.value;\n if (baselineIsActive && results && results.elements.length > 0) {\n results.elements.forEach((workPackage:WorkPackageResource) => {\n state = getBaselineState(workPackage, this.schemaCache);\n if (state === 'added') {\n this.numAdded += 1;\n } else if (state === 'removed') {\n this.numRemoved += 1;\n } else if (state === 'updated') {\n this.numUpdated += 1;\n }\n });\n this.text.maintained_with_changes = `${this.I18n.t('js.baseline.legends.maintained_with_changes')} (${this.numUpdated})`;\n this.text.no_longer_meets_filter_criteria = `${this.I18n.t('js.baseline.legends.no_longer_meets_filter_criteria')} (${this.numRemoved})`;\n this.text.now_meets_filter_criteria = `${this.I18n.t('js.baseline.legends.now_meets_filter_criteria')} (${this.numAdded})`;\n }\n }\n\n private formatDate(date:Moment):string {\n const formattedDate = date.format(this.timezoneService.getDateFormat());\n const formattedTime = date.format(this.timezoneService.getTimeFormat());\n const offset = offsetToUtcString(date.format('Z'));\n\n return `${formattedDate} ${formattedTime} ${offset}`;\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 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 ) {\n super();\n }\n\n ngOnInit():void {\n // Update selection state\n combineLatest([\n this.wpTableSelection.live$(),\n this.uiRouterGlobals.params$,\n ])\n .pipe(\n this.untilDestroyed(),\n map(() => {\n if (this.selectedWhenOpen) {\n return this.uiRouterGlobals.params.workPackageId === this.workPackage.id;\n }\n\n return this.wpTableSelection.isSelected(this.workPackage.id as string);\n }),\n )\n .subscribe((selected) => {\n this.selected = selected;\n this.cdRef.detectChanges();\n });\n }\n\n public classIdentifier(wp:WorkPackageResource):string {\n return this.cardView.classIdentifier(wp);\n }\n\n public emitStateLinkClicked(event:MouseEvent, wp:WorkPackageResource, detail?:boolean):void {\n if (isClickedWithModifier(event)) {\n return;\n }\n\n const classIdentifier = this.classIdentifier(wp);\n const stateToEmit = detail ? 'split' : 'show';\n\n this.wpTableSelection.setSelection(wp.id!, this.cardView.findRenderedCard(classIdentifier));\n this.wpTableFocus.updateFocus(wp.id!);\n this.stateLinkClicked.emit({ workPackageId: wp.id!, requestedState: stateToEmit });\n event.preventDefault();\n }\n\n public cardClasses():{ [className:string]:boolean } {\n const base = 'op-wp-single-card';\n\n return {\n [`${base}_selected`]: this.selected,\n [`${base}_draggable`]: this.draggable,\n [`${base}_new`]: isNewResource(this.workPackage),\n [`${base}_shrink`]: this.shrinkOnMobile,\n [`${base}_inline`]: this.showAsInlineCard,\n [`${base}_closed`]: this.isClosed,\n [`${base}_ghosted`]: this.showAsGhost,\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n [`${base}-${this.workPackage.id}`]: !!this.workPackage.id,\n [`${base}_${this.orientation}`]: true,\n };\n }\n\n cardTitle():string {\n return `${this.workPackage.subject} (${(this.workPackage.status as StatusResource).name})`;\n }\n\n public baselineIcon(workPackage:WorkPackageResource) {\n this.baselineMode = getBaselineState(workPackage, this.schemaCache);\n return this.baselineMode;\n }\n\n // eslint-disable-next-line class-methods-use-this\n public wpTypeAttribute(wp:WorkPackageResource):string {\n return wp.type.name;\n }\n\n // eslint-disable-next-line class-methods-use-this\n public wpSubject(wp:WorkPackageResource):string {\n return wp.subject;\n }\n\n // eslint-disable-next-line class-methods-use-this\n public wpProjectName(wp:WorkPackageResource):string {\n return wp.project?.name;\n }\n\n public 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';\nimport { trackByHref } from 'core-app/shared/helpers/angular/tracking-functions';\n\n@Component({\n selector: 'wp-custom-actions',\n templateUrl: './wp-custom-actions.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WpCustomActionsComponent extends UntilDestroyedMixin implements OnInit {\n @Input() workPackage:WorkPackageResource;\n\n trackByHref = trackByHref;\n\n actions:CustomActionResource[] = [];\n\n constructor(\n readonly apiV3Service:ApiV3Service,\n readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this\n .apiV3Service\n .work_packages\n .id(this.workPackage.id!)\n .requireAndStream()\n .pipe(\n this.untilDestroyed(),\n )\n .subscribe((wp) => {\n this.actions = wp.customActions as CustomActionResource[];\n this.cdRef.detectChanges();\n });\n }\n}\n","// -- copyright\n// OpenProject is an open source project management software.\n// Copyright (C) 2012-2023 the OpenProject GmbH\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License version 3.\n//\n// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:\n// Copyright (C) 2006-2013 Jean-Philippe Lang\n// Copyright (C) 2010-2013 the ChiliProject Team\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, 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 { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';\nimport { I18nService } from 'core-app/core/i18n/i18n.service';\nimport { getBaselineState } from '../../../wp-baseline/baseline-helpers';\n\nexport const baselineCellName = 'op-table-baseline--column-cell';\n\nexport class BaselineColumnBuilder {\n @InjectField() states:States;\n\n @InjectField() wpTableBaseline:WorkPackageViewBaselineService;\n\n @InjectField() schemaCache:SchemaCacheService;\n\n @InjectField() I18n:I18nService;\n\n constructor(public readonly injector:Injector) {\n }\n\n public build(workPackage:WorkPackageResource, column:QueryColumn) {\n const td = document.createElement('td');\n td.classList.add(tdClassName, baselineCellName, column.id);\n td.dataset.columnId = column.id;\n\n const timestamps = workPackage.attributesByTimestamp || [];\n\n // Nothing to render if we don't have a comparison\n if (timestamps.length <= 1) {\n return td;\n }\n\n // Check if added\n const icon = this.changeIcon(workPackage);\n if (icon) {\n td.appendChild(icon);\n }\n\n return td;\n }\n\n private changeIcon(\n workPackage:WorkPackageResource,\n ):HTMLElement|null {\n const state = getBaselineState(workPackage, this.schemaCache);\n if (state === 'added') {\n const icon = opIconElement('spot-icon', 'spot-icon_1', 'spot-icon_flex', 'spot-icon_arrow-in', 'op-table-baseline--icon-added');\n icon.title = this.I18n.t('js.work_packages.baseline.addition_label');\n return icon;\n }\n\n if (state === 'removed') {\n const icon = opIconElement('spot-icon', 'spot-icon_1', 'spot-icon_flex', 'spot-icon_arrow-out', 'op-table-baseline--icon-removed');\n icon.title = this.I18n.t('js.work_packages.baseline.removal_label');\n return icon;\n }\n\n if (state === 'updated') {\n const icon = opIconElement('spot-icon', 'spot-icon_1', 'spot-icon_flex', 'spot-icon_delta-triangle', 'op-table-baseline--icon-changed');\n icon.title = this.I18n.t('js.work_packages.baseline.modification_label');\n return icon;\n }\n\n return null;\n }\n}\n","import { Injector } from '@angular/core';\nimport { 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 // When the global drag and drop is active and the dragging happens over the DOM\n // elements, the dragenter and dragleave events are always fired in pairs.\n // On dragenter the this.dragging is set to 2 and on dragleave we deduct it to 1,\n // meaning the drag and drop remains active. When the drag and drop action is canceled\n // i.e. by the \"Escape\" key, an extra dragleave event is fired.\n // In this case this.dragging will be deducted to 0, disabling the active drop areas.\n this.dragging = 2;\n this.cdRef.detectChanges();\n };\n\n constructor(\n public elementRef:ElementRef,\n protected readonly I18n:I18nService,\n protected readonly states:States,\n protected readonly toastService:ToastService,\n private readonly uploadService:OpUploadService,\n protected readonly halResourceService:HalResourceService,\n protected readonly attachmentsResourceService:AttachmentsResourceService,\n protected readonly timezoneService:TimezoneService,\n protected readonly cdRef:ChangeDetectorRef,\n ) {\n super();\n\n populateInputsFromDataset(this);\n }\n\n ngOnInit():void {\n if (!(this.resource instanceof HalResource)) {\n // Parse the resource if any exists\n this.resource = this.halResourceService.createHalResource(this.resource, true);\n }\n\n 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 //