{"version":3,"file":"main.1da719b0ce3274b0.js","mappings":"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,uBAAwB2zT,gCAC1CrrT,EAAStI,SAAS,QAASo0T,iBAC3B9rT,EAAStI,SAAS,0BAA2Bu0T,+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,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ACA,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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Ac,CACb,MACA,6CAED,UAAW,CACV,KACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,KACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,eAAgB,CACf,MACA,+CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,KACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,UAAW,CACV,MACA,0CAED,aAAc,CACb,MACA,6CAED,UAAW,CACV,MACA,2CAGF,SAASoiV,oBAAoBrkR,GAC5B,IAAIskR,EAAoB/lT,EAAEt8B,EAAK+9D,GAC9B,OAAOz2D,QAAQC,UAAUpI,MAAK,KAC7B,IAAIowB,EAAI,IAAI2C,MAAM,uBAAyB6rC,EAAM,KAEjD,MADAxuC,EAAE2nN,KAAO,mBACH3nN,CAAC,IAIT,IAAIloB,EAAMrH,EAAI+9D,GAAM9hE,EAAKoL,EAAI,GAC7B,OAAOg7U,EAAoB9yT,EAAEloB,EAAI,IAAIlI,MAAK,IAClCkjV,EAAoBlgV,EAAElG,EAAI,KAEnC,CACAmmV,oBAAoB/uU,KAAO,IAAOD,OAAOC,KAAKrT,GAC9CoiV,oBAAoBnmV,GAAK,MACzB64G,EAAO5mE,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 utcDate = moment(date).utc();\n const formatted = utcDate.format('YYYY-MM-DD');\n if (date && (this.weekdayService.isNonWorkingDay(utcDate) || nonWorkingDays.find((el) => el.date === formatted))) {\n return ['fc-non-working-day'];\n }\n return [];\n }\n}\n","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:Moment, end:Moment, entries:Promise> };\n\n public memoizedCreateAllowed = false;\n\n public text = {\n logTime: this.i18n.t('js.button_log_time'),\n today: this.i18n.t('js.team_planner.today'),\n };\n\n calendarOptions$ = new Subject();\n\n public nonWorkingDays:IDay[] = [];\n\n 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 const start = moment(fetchInfo.startStr);\n const end = moment(fetchInfo.endStr);\n void this.fetchTimeEntries(start, end)\n .then(async (collection) => {\n this.entries.emit(collection);\n\n successCallback(await this.buildEntries(collection.elements, fetchInfo));\n })\n .catch(failureCallback);\n }\n\n protected fetchTimeEntries(start:Moment, end:Moment):Promise> {\n if (!this.memoizedTimeEntries\n || this.memoizedTimeEntries.start.valueOf() !== start.valueOf()\n || this.memoizedTimeEntries.end.valueOf() !== end.valueOf()) {\n const promise = firstValueFrom(\n this\n .apiV3Service\n .time_entries\n .list({ filters: this.dmFilters(start, end), pageSize: 500 }),\n )\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:Moment, end:Moment):Array<[string, FilterOperator, string[]]> {\n const startDate = start.format('YYYY-MM-DD');\n const endDate = end.subtract(1, 'd').format('YYYY-MM-DD');\n return [['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.startStr));\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.endStr).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 //