Feature/36390 code structure (#9319)

* core/shared/features in progress

* shared/components in progress

* Fix rebase errors

* core: added admin + apiv3

* shared: attachments + attirbute-help-text

* core: OpenprojectAugmentingModule

* shared: OpenprojectAutocompleterModule

* shared: Autocompleter

* feature: backlog

* feature: bim

* feature: boards

* shared: calendar

* core: userModule

* feature: dashboards

* shared: editor

* shared: fields

* shared: focus

* core: globalsearch

* shared: grid

* shared: grid fix

* core: hal

* shared: icon

* feature: invite user modal

* feature: job status

* shared: members autocomplete

* shared: modal

* feature: my page

* feature: overview

* shared: principal

* feature: projects

* feature: repoting

* core: routing

* shared: time entries

* shared: OpenprojectWorkPackageGraphsModule

* feature: workpackages

* core: active window

* shared: autofocus

* features: wp: back-button

* core: browser

* shared: collapseible section

* core: config

* shared: copy-to-clipboard

* shared: date-time

* shared: helpers: drag-and-drop

* shared: draggable autocompleter

* shared: dynamic bootstrapper

* shared: dynamic forms

* features: wp: edit actions bar

* shared: EditableToolbarTitleComponent

* core: BannersService

* shared: OpFormFieldComponent

* shared: hide section

* shared: highlight col

* core: I18 + Sanitizer

* shared: isClickedWithModifier

* core: LoadingIndicator

* core: Modal Heading

* core: Model auth

* shared: no results

* shared: notifications

* shared: datepicker

* shared: option-list

* core: path helper

* shared: persistent toggle

* shared: remote field

* shared: set click position

* shared: slide toggle

* shared: tabs

* shared: drag-scroll

* shared: keyCodes

* shared: OPSharedModule

* global styles: common

* core:

* import fixes

* shared: Enterprise banner

* features: wps: filters

* features: home screen

* import fixes

* core: html

* import fixes

* core: main-menu

* features: home screen

* shared: modals

* shared: op-context-menu

* core + shared: current project

* core: schema-cache

* shared: table-pagination

* features: wps: time-entries

* shared: user-link

* features: wps

* features: wps

* features: wps: all wp-* components

* core: states

* Rename: angular4-modules to app.module

* core: expression service

* Modules just with plugins

* Test fixes

* added missing content-tabs.component.sass

* Replaced with .op-ckeditor--wrapper

* Replaced by .op-ckeditor-source-element

* Replaced by the entire wysiwyg_editor.rb with dev version

* Replacements by ckeditor-augmented-textarea

* Fixes ./spec/support/components/work_packages/table_configuration_modal.rb:106

* Fixes ./modules/reporting/spec/features/update_entries_spec.rb:69

* work_packages renamed to work-packages

* TimeEntryChangeset moved to helpers

* 'filters' moved to wps/components

* 'admin' moved to features

* HAL moved to shared

* plugins moved to features

* plugins moved to features

* Test fixes

* Unit test fixes

* plugin generator into /features/plugins

* fix sass rule indentation

* Revert "plugins moved to features"

This reverts commit f65ccbfd4b.

* Import fixes

* Avoid commiting in linked plugins

Co-authored-by: ulferts <jens.ulferts@googlemail.com>
Co-authored-by: Oliver Günther <mail@oliverguenther.de>
pull/9386/head
Aleix Suau 3 years ago committed by GitHub
parent d5bd82a163
commit 7e2e05c88f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      app/helpers/attachments_helper.rb
  2. 2
      docker-compose.yml
  3. 6
      frontend/.gitignore
  4. 8
      frontend/scripts/link_plugin_placeholder.js
  5. 229
      frontend/src/app/angular4-modules.ts
  6. 228
      frontend/src/app/app.module.ts
  7. 20
      frontend/src/app/components/wp-table/external-configuration/external-relation-query-configuration.component.ts
  8. 30
      frontend/src/app/components/wp-table/external-configuration/restricted-wp-table-configuration.service.ts
  9. 3
      frontend/src/app/components/wp-tabs/components/wp-tabs/wp-tabs.component.sass
  10. 30
      frontend/src/app/components/wp-tabs/wp-tabs.module.ts
  11. 2
      frontend/src/app/core/active-window/active-window.service.ts
  12. 6
      frontend/src/app/core/apiv3/api-v3.service.spec.ts
  13. 48
      frontend/src/app/core/apiv3/api-v3.service.ts
  14. 12
      frontend/src/app/core/apiv3/cache/cachable-apiv3-collection.ts
  15. 12
      frontend/src/app/core/apiv3/cache/cachable-apiv3-resource.ts
  16. 1
      frontend/src/app/core/apiv3/cache/state-cache.service.ts
  17. 16
      frontend/src/app/core/apiv3/endpoints/capabilities/apiv3-capabilities-paths.ts
  18. 8
      frontend/src/app/core/apiv3/endpoints/capabilities/apiv3-capability-paths.ts
  19. 10
      frontend/src/app/core/apiv3/endpoints/capabilities/capability-cache.service.ts
  20. 10
      frontend/src/app/core/apiv3/endpoints/configuration/apiv3-configuration-path.ts
  21. 10
      frontend/src/app/core/apiv3/endpoints/grids/apiv3-grid-form.ts
  22. 8
      frontend/src/app/core/apiv3/endpoints/grids/apiv3-grid-paths.ts
  23. 16
      frontend/src/app/core/apiv3/endpoints/grids/apiv3-grids-paths.ts
  24. 4
      frontend/src/app/core/apiv3/endpoints/groups/apiv3-group-paths.ts
  25. 12
      frontend/src/app/core/apiv3/endpoints/groups/apiv3-groups-paths.ts
  26. 8
      frontend/src/app/core/apiv3/endpoints/help_texts/apiv3-help-texts-paths.ts
  27. 10
      frontend/src/app/core/apiv3/endpoints/memberships/apiv3-memberships-form.ts
  28. 14
      frontend/src/app/core/apiv3/endpoints/memberships/apiv3-memberships-paths.ts
  29. 12
      frontend/src/app/core/apiv3/endpoints/news/apiv3-news-paths.ts
  30. 4
      frontend/src/app/core/apiv3/endpoints/placeholder-users/apiv3-placeholder-user-paths.ts
  31. 12
      frontend/src/app/core/apiv3/endpoints/placeholder-users/apiv3-placeholder-users-paths.ts
  32. 10
      frontend/src/app/core/apiv3/endpoints/projects/apiv3-available-projects-paths.ts
  33. 6
      frontend/src/app/core/apiv3/endpoints/projects/apiv3-project-copy-paths.ts
  34. 18
      frontend/src/app/core/apiv3/endpoints/projects/apiv3-project-paths.ts
  35. 18
      frontend/src/app/core/apiv3/endpoints/projects/apiv3-projects-paths.ts
  36. 12
      frontend/src/app/core/apiv3/endpoints/projects/project.cache.ts
  37. 22
      frontend/src/app/core/apiv3/endpoints/queries/apiv3-queries-paths.ts
  38. 10
      frontend/src/app/core/apiv3/endpoints/queries/apiv3-query-form.ts
  39. 4
      frontend/src/app/core/apiv3/endpoints/queries/apiv3-query-order.ts
  40. 18
      frontend/src/app/core/apiv3/endpoints/queries/apiv3-query-paths.ts
  41. 17
      frontend/src/app/core/apiv3/endpoints/relations/apiv3-relations-paths.ts
  42. 6
      frontend/src/app/core/apiv3/endpoints/roles/apiv3-role-paths.ts
  43. 10
      frontend/src/app/core/apiv3/endpoints/roles/apiv3-roles-paths.ts
  44. 6
      frontend/src/app/core/apiv3/endpoints/statuses/apiv3-status-paths.ts
  45. 10
      frontend/src/app/core/apiv3/endpoints/statuses/apiv3-statuses-paths.ts
  46. 18
      frontend/src/app/core/apiv3/endpoints/time-entries/apiv3-time-entries-paths.ts
  47. 17
      frontend/src/app/core/apiv3/endpoints/time-entries/apiv3-time-entry-paths.ts
  48. 10
      frontend/src/app/core/apiv3/endpoints/time-entries/time-entry-cache.service.ts
  49. 8
      frontend/src/app/core/apiv3/endpoints/types/apiv3-type-paths.ts
  50. 12
      frontend/src/app/core/apiv3/endpoints/types/apiv3-types-paths.ts
  51. 6
      frontend/src/app/core/apiv3/endpoints/users/apiv3-user-paths.ts
  52. 8
      frontend/src/app/core/apiv3/endpoints/users/apiv3-users-paths.ts
  53. 6
      frontend/src/app/core/apiv3/endpoints/versions/apiv3-version-paths.ts
  54. 16
      frontend/src/app/core/apiv3/endpoints/versions/apiv3-versions-paths.ts
  55. 16
      frontend/src/app/core/apiv3/endpoints/work_packages/api-v3-work-package-cached-subresource.ts
  56. 14
      frontend/src/app/core/apiv3/endpoints/work_packages/api-v3-work-package-paths.ts
  57. 25
      frontend/src/app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths.ts
  58. 6
      frontend/src/app/core/apiv3/endpoints/work_packages/apiv3-work-package-form.ts
  59. 32
      frontend/src/app/core/apiv3/endpoints/work_packages/work-package-cache.spec.ts
  60. 10
      frontend/src/app/core/apiv3/endpoints/work_packages/work-package.cache.ts
  61. 8
      frontend/src/app/core/apiv3/forms/apiv3-form-resource.ts
  62. 6
      frontend/src/app/core/apiv3/openproject-api-v3.module.ts
  63. 4
      frontend/src/app/core/apiv3/paths/apiv3-list-resource.interface.ts
  64. 12
      frontend/src/app/core/apiv3/paths/apiv3-resource.ts
  65. 1
      frontend/src/app/core/apiv3/paths/path-resources.ts
  66. 10
      frontend/src/app/core/apiv3/virtual/apiv3-board-path.ts
  67. 24
      frontend/src/app/core/apiv3/virtual/apiv3-boards-paths.ts
  68. 0
      frontend/src/app/core/augmenting/dynamic-scripts/admin_users.js
  69. 0
      frontend/src/app/core/augmenting/dynamic-scripts/administration_settings.js
  70. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs.js
  71. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/backlog.js
  72. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/burndown.js
  73. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/common.js
  74. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/editable_inplace.js
  75. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/impediment.js
  76. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/master_backlog.js
  77. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/model.js
  78. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/show_main.js
  79. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/sprint.js
  80. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/story.js
  81. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/task.js
  82. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/taskboard.js
  83. 0
      frontend/src/app/core/augmenting/dynamic-scripts/backlogs/work_package.js
  84. 0
      frontend/src/app/core/augmenting/dynamic-scripts/custom_fields.js
  85. 0
      frontend/src/app/core/augmenting/dynamic-scripts/forums.js
  86. 0
      frontend/src/app/core/augmenting/dynamic-scripts/global_roles.ts
  87. 0
      frontend/src/app/core/augmenting/dynamic-scripts/meeting.js
  88. 0
      frontend/src/app/core/augmenting/dynamic-scripts/members_form.js
  89. 0
      frontend/src/app/core/augmenting/dynamic-scripts/new_user.js
  90. 0
      frontend/src/app/core/augmenting/dynamic-scripts/project.js
  91. 0
      frontend/src/app/core/augmenting/dynamic-scripts/project_form_listener.js
  92. 0
      frontend/src/app/core/augmenting/dynamic-scripts/repository_navigation.js
  93. 0
      frontend/src/app/core/augmenting/dynamic-scripts/repository_settings.js
  94. 0
      frontend/src/app/core/augmenting/dynamic-scripts/two_factor_authentication.ts
  95. 6
      frontend/src/app/core/augmenting/openproject-augmenting.module.ts
  96. 2
      frontend/src/app/core/augmenting/services/path-script.augment.service.ts
  97. 6
      frontend/src/app/core/backup/op-backup.service.ts
  98. 0
      frontend/src/app/core/browser/browser-detector.service.ts
  99. 0
      frontend/src/app/core/browser/device.service.ts
  100. 7
      frontend/src/app/core/config/configuration.service.ts
  101. Some files were not shown because too many files have changed in this diff Show More

@ -41,7 +41,7 @@ module AttachmentsHelper
# List attachments outside the edit form
# allowing immediate removal or addition of attachments
#
# Within ckeditor-form, this attachment list is added automatically
# Within ckeditor-augmented-textarea-form, this attachment list is added automatically
# when a resource is added.
def list_attachments(resource)
content_tag 'attachments',

@ -67,7 +67,7 @@ services:
command: "npm run serve"
volumes:
- ".:/home/dev/openproject"
- "../commonmark-ckeditor-build/build/:/home/dev/openproject/frontend/src/vendor/ckeditor/"
- "../commonmark-ckeditor-augmented-textarea-build/build/:/home/dev/openproject/frontend/src/vendor/ckeditor-augmented-textarea/"
ports:
- "4200:4200"
environment:

@ -15,7 +15,7 @@
/out-tsc
/generated_typings
/src/app/modules/plugins/linked/
/src/app/modules/plugins/linked-plugins.module.ts
/src/app/modules/plugins/linked-plugins.styles.sass
/src/app/features/plugins/linked/
/src/app/features/plugins/linked-plugins.module.ts
/src/app/features/plugins/linked-plugins.styles.sass
/legacy/app/plugins/*

@ -2,10 +2,10 @@
const fs = require('fs');
const path = require('path');
const linked_module_example_path = path.join(__dirname, '..', 'src', 'app', 'modules', 'plugins', 'linked-plugins.module.ts.example');
const linked_style_example_path = path.join(__dirname, '..', 'src', 'app', 'modules', 'plugins', 'linked-plugins.styles.sass.example');
const linked_module_path = path.join(__dirname, '..', 'src', 'app', 'modules', 'plugins', 'linked-plugins.module.ts');
const linked_style_path = path.join(__dirname, '..', 'src', 'app', 'modules', 'plugins', 'linked-plugins.styles.sass');
const linked_module_example_path = path.join(__dirname, '..', 'src', 'app', 'features', 'plugins', 'linked-plugins.module.ts.example');
const linked_style_example_path = path.join(__dirname, '..', 'src', 'app', 'features', 'plugins', 'linked-plugins.styles.sass.example');
const linked_module_path = path.join(__dirname, '..', 'src', 'app', 'features', 'plugins', 'linked-plugins.module.ts');
const linked_style_path = path.join(__dirname, '..', 'src', 'app', 'features', 'plugins', 'linked-plugins.styles.sass');
if (!fs.existsSync(linked_module_path)) {
console.log(

@ -1,229 +0,0 @@
//-- copyright
// OpenProject is an open source project management software.
// Copyright (C) 2012-2021 the OpenProject GmbH
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License version 3.
//
// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
// Copyright (C) 2006-2013 Jean-Philippe Lang
// Copyright (C) 2010-2013 the ChiliProject Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APP_INITIALIZER, ApplicationRef, Injector, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { OpenprojectHalModule } from 'core-app/modules/hal/openproject-hal.module';
import { OpContextMenuTrigger } from 'core-components/op-context-menu/handlers/op-context-menu-trigger.directive';
import { States } from 'core-components/states.service';
import { PaginationService } from 'core-components/table-pagination/pagination-service';
import { MainMenuResizerComponent } from 'core-components/resizer/main-menu-resizer.component';
import { ConfirmDialogModal } from "core-components/modals/confirm-dialog/confirm-dialog.modal";
import { ConfirmDialogService } from "core-components/modals/confirm-dialog/confirm-dialog.service";
import { DynamicContentModal } from "core-components/modals/modal-wrapper/dynamic-content.modal";
import { PasswordConfirmationModal } from "core-components/modals/request-for-confirmation/password-confirmation.modal";
import { OpenprojectFieldsModule } from "core-app/modules/fields/openproject-fields.module";
import { OpenprojectCommonModule } from "core-app/modules/common/openproject-common.module";
import { CommentService } from "core-components/wp-activity/comment-service";
import { OpDragScrollDirective } from "core-app/modules/common/ui/op-drag-scroll.directive";
import { OpenprojectPluginsModule } from "core-app/modules/plugins/openproject-plugins.module";
import { ConfirmFormSubmitController } from "core-components/modals/confirm-form-submit/confirm-form-submit.directive";
import { ProjectMenuAutocompleteComponent } from "core-components/projects/project-menu-autocomplete/project-menu-autocomplete.component";
import { OpenProjectFileUploadService } from "core-components/api/op-file-upload/op-file-upload.service";
import { OpenProjectDirectFileUploadService } from './components/api/op-file-upload/op-direct-file-upload.service';
import { LinkedPluginsModule } from "core-app/modules/plugins/linked-plugins.module";
import { HookService } from "core-app/modules/plugins/hook-service";
import { DynamicBootstrapper } from "core-app/globals/dynamic-bootstrapper";
import { OpenprojectWorkPackagesModule } from 'core-app/modules/work_packages/openproject-work-packages.module';
import { OpenprojectAttachmentsModule } from 'core-app/modules/attachments/openproject-attachments.module';
import { OpenprojectEditorModule } from 'core-app/modules/editor/openproject-editor.module';
import { OpenprojectGridsModule } from "core-app/modules/grids/openproject-grids.module";
import { OpenprojectRouterModule } from "core-app/modules/router/openproject-router.module";
import { OpenprojectWorkPackageRoutesModule } from "core-app/modules/work_packages/openproject-work-package-routes.module";
import { BrowserModule } from "@angular/platform-browser";
import { OpenprojectCalendarModule } from "core-app/modules/calendar/openproject-calendar.module";
import { OpenprojectGlobalSearchModule } from "core-app/modules/global_search/openproject-global-search.module";
import { MainMenuToggleComponent } from "core-components/main-menu/main-menu-toggle.component";
import { MainMenuNavigationService } from "core-components/main-menu/main-menu-navigation.service";
import { OpenprojectAdminModule } from "core-app/modules/admin/openproject-admin.module";
import { OpenprojectDashboardsModule } from "core-app/modules/dashboards/openproject-dashboards.module";
import { OpenprojectWorkPackageGraphsModule } from "core-app/modules/work-package-graphs/openproject-work-package-graphs.module";
import { WpPreviewModal } from "core-components/modals/preview-modal/wp-preview-modal/wp-preview.modal";
import { PreviewTriggerService } from "core-app/globals/global-listeners/preview-trigger.service";
import { OpenprojectOverviewModule } from "core-app/modules/overview/openproject-overview.module";
import { OpenprojectMyPageModule } from "core-app/modules/my-page/openproject-my-page.module";
import { OpenprojectProjectsModule } from "core-app/modules/projects/openproject-projects.module";
import { KeyboardShortcutService } from "core-app/modules/a11y/keyboard-shortcut-service";
import { globalDynamicComponents } from "core-app/global-dynamic-components.const";
import { OpenprojectMembersModule } from "core-app/modules/members/members.module";
import { OpenprojectEnterpriseModule } from "core-components/enterprise/openproject-enterprise.module";
import { OpenprojectAugmentingModule } from "core-app/modules/augmenting/openproject-augmenting.module";
import { OpenprojectInviteUserModalModule } from "core-app/modules/invite-user-modal/invite-user-modal.module";
import { OpenprojectModalModule } from "core-app/modules/modal/modal.module";
import { RevitAddInSettingsButtonService } from "core-app/modules/bim/revit_add_in/revit-add-in-settings-button.service";
import { OpenprojectAutocompleterModule } from "core-app/modules/autocompleter/openproject-autocompleter.module";
import { OpenProjectBackupService } from './components/api/op-backup/op-backup.service';
import { OpenprojectTabsModule } from "core-app/modules/common/tabs/openproject-tabs.module";
@NgModule({
imports: [
// The BrowserModule must only be loaded here!
BrowserModule,
// Commons
OpenprojectCommonModule,
// Router module
OpenprojectRouterModule,
// Hal Module
OpenprojectHalModule,
// CKEditor
OpenprojectEditorModule,
// Display + Edit field functionality
OpenprojectFieldsModule,
OpenprojectGridsModule,
OpenprojectAttachmentsModule,
// Project module
OpenprojectProjectsModule,
// Work packages and their routes
OpenprojectWorkPackagesModule,
OpenprojectWorkPackageRoutesModule,
// Work packages in graph representation
OpenprojectWorkPackageGraphsModule,
// Calendar module
OpenprojectCalendarModule,
// Dashboards
OpenprojectDashboardsModule,
// Overview
OpenprojectOverviewModule,
// MyPage
OpenprojectMyPageModule,
// Global Search
OpenprojectGlobalSearchModule,
// Admin module
OpenprojectAdminModule,
OpenprojectEnterpriseModule,
// Plugin hooks and modules
OpenprojectPluginsModule,
// Linked plugins dynamically generated by bundler
LinkedPluginsModule,
// Members
OpenprojectMembersModule,
// Angular Forms
ReactiveFormsModule,
// Augmenting Module
OpenprojectAugmentingModule,
// Modals
OpenprojectModalModule,
// Invite user modal
OpenprojectInviteUserModalModule,
// Autocompleters
OpenprojectAutocompleterModule,
// Tabs
OpenprojectTabsModule,
],
providers: [
{ provide: States, useValue: new States() },
{ provide: APP_INITIALIZER, useFactory: initializeServices, deps: [Injector], multi: true },
PaginationService,
OpenProjectBackupService,
OpenProjectFileUploadService,
OpenProjectDirectFileUploadService,
// Split view
CommentService,
ConfirmDialogService,
RevitAddInSettingsButtonService,
],
declarations: [
OpContextMenuTrigger,
// Modals
ConfirmDialogModal,
DynamicContentModal,
PasswordConfirmationModal,
WpPreviewModal,
// Main menu
MainMenuResizerComponent,
MainMenuToggleComponent,
// Project autocompleter
ProjectMenuAutocompleteComponent,
// Form configuration
OpDragScrollDirective,
ConfirmFormSubmitController,
]
})
export class OpenProjectModule {
// noinspection JSUnusedGlobalSymbols
ngDoBootstrap(appRef:ApplicationRef) {
// Register global dynamic components
// this is necessary to ensure they are not tree-shaken
// (if they are not used anywhere in Angular, they would be removed)
DynamicBootstrapper.register(...globalDynamicComponents);
// Perform global dynamic bootstrapping of our entry components
// that are in the current DOM response.
DynamicBootstrapper.bootstrapOptionalDocument(appRef, document);
// Call hook service to allow modules to bootstrap additional elements.
// We can't use ngDoBootstrap in nested modules since they are not called.
const hookService = (appRef as any)._injector.get(HookService);
hookService
.call('openProjectAngularBootstrap')
.forEach((results:{ selector:string, cls:any }[]) => {
DynamicBootstrapper.bootstrapOptionalDocument(appRef, document, results);
});
}
}
export function initializeServices(injector:Injector) {
return () => {
const PreviewTrigger = injector.get(PreviewTriggerService);
const mainMenuNavigationService = injector.get(MainMenuNavigationService);
const keyboardShortcuts = injector.get(KeyboardShortcutService);
// Conditionally add the Revit Add-In settings button
injector.get(RevitAddInSettingsButtonService);
mainMenuNavigationService.register();
PreviewTrigger.setupListener();
keyboardShortcuts.register();
};
}

@ -0,0 +1,228 @@
//-- copyright
// OpenProject is an open source project management software.
// Copyright (C) 2012-2021 the OpenProject GmbH
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License version 3.
//
// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
// Copyright (C) 2006-2013 Jean-Philippe Lang
// Copyright (C) 2010-2013 the ChiliProject Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APP_INITIALIZER, ApplicationRef, Injector, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { OpContextMenuTrigger } from 'core-app/shared/components/op-context-menu/handlers/op-context-menu-trigger.directive';
import { States } from 'core-app/core/states/states.service';
import { OpenprojectFieldsModule } from "core-app/shared/components/fields/openproject-fields.module";
import { OPSharedModule } from "core-app/shared/shared.module";
import { OpDragScrollDirective } from "core-app/shared/directives/op-drag-scroll/op-drag-scroll.directive";
import { OpenProjectDirectFileUploadService } from './core/file-upload/op-direct-file-upload.service';
import { DynamicBootstrapper } from "core-app/core/setup/globals/dynamic-bootstrapper";
import { OpenprojectWorkPackagesModule } from 'core-app/features/work-packages/openproject-work-packages.module';
import { OpenprojectAttachmentsModule } from 'core-app/shared/components/attachments/openproject-attachments.module';
import { OpenprojectEditorModule } from 'core-app/shared/components/editor/openproject-editor.module';
import { OpenprojectGridsModule } from "core-app/shared/components/grids/openproject-grids.module";
import { OpenprojectRouterModule } from "core-app/core/routing/openproject-router.module";
import { OpenprojectWorkPackageRoutesModule } from "core-app/features/work-packages/openproject-work-package-routes.module";
import { BrowserModule } from "@angular/platform-browser";
import { OpenprojectCalendarModule } from "core-app/shared/components/calendar/openproject-calendar.module";
import { OpenprojectGlobalSearchModule } from "core-app/core/global_search/openproject-global-search.module";
import { OpenprojectDashboardsModule } from "core-app/features/dashboards/openproject-dashboards.module";
import { OpenprojectWorkPackageGraphsModule } from "core-app/shared/components/work-package-graphs/openproject-work-package-graphs.module";
import { PreviewTriggerService } from "core-app/core/setup/globals/global-listeners/preview-trigger.service";
import { OpenprojectOverviewModule } from "core-app/features/overview/openproject-overview.module";
import { OpenprojectMyPageModule } from "core-app/features/my-page/openproject-my-page.module";
import { OpenprojectProjectsModule } from "core-app/features/projects/openproject-projects.module";
import { KeyboardShortcutService } from "core-app/shared/directives/a11y/keyboard-shortcut-service";
import { OpenprojectMembersModule } from "core-app/shared/components/autocompleter/members-autocompleter/members.module";
import { OpenprojectAugmentingModule } from "core-app/core/augmenting/openproject-augmenting.module";
import { OpenprojectInviteUserModalModule } from "core-app/features/invite-user-modal/invite-user-modal.module";
import { OpenprojectModalModule } from "core-app/shared/components/modal/modal.module";
import { RevitAddInSettingsButtonService } from "core-app/features/bim/revit_add_in/revit-add-in-settings-button.service";
import { OpenprojectAutocompleterModule } from "core-app/shared/components/autocompleter/openproject-autocompleter.module";
import { OpenProjectBackupService } from './core/backup/op-backup.service';
import { OpenProjectFileUploadService } from "core-app/core/file-upload/op-file-upload.service";
import { OpenprojectEnterpriseModule } from "core-app/features/enterprise/openproject-enterprise.module";
import { MainMenuToggleComponent } from "core-app/core/main-menu/main-menu-toggle.component";
import { MainMenuNavigationService } from "core-app/core/main-menu/main-menu-navigation.service";
import { ConfirmDialogService } from "core-app/shared/components/modals/confirm-dialog/confirm-dialog.service";
import { ConfirmDialogModal } from "core-app/shared/components/modals/confirm-dialog/confirm-dialog.modal";
import { DynamicContentModal } from "core-app/shared/components/modals/modal-wrapper/dynamic-content.modal";
import { PasswordConfirmationModal } from "core-app/shared/components/modals/request-for-confirmation/password-confirmation.modal";
import { WpPreviewModal } from "core-app/shared/components/modals/preview-modal/wp-preview-modal/wp-preview.modal";
import { ConfirmFormSubmitController } from "core-app/shared/components/modals/confirm-form-submit/confirm-form-submit.directive";
import { ProjectMenuAutocompleteComponent } from "core-app/shared/components/autocompleter/project-menu-autocomplete/project-menu-autocomplete.component";
import { PaginationService } from "core-app/shared/components/table-pagination/pagination-service";
import { MainMenuResizerComponent } from "core-app/shared/components/resizer/resizer/main-menu-resizer.component";
import { CommentService } from "core-app/features/work-packages/components/wp-activity/comment-service";
import { OpenprojectTabsModule } from "core-app/shared/components/tabs/openproject-tabs.module";
import { OpenprojectAdminModule } from "core-app/features/admin/openproject-admin.module";
import { OpenprojectHalModule } from "core-app/features/hal/openproject-hal.module";
import { globalDynamicComponents } from "core-app/core/setup/global-dynamic-components.const";
import { HookService } from "core-app/features/plugins/hook-service";
import { OpenprojectPluginsModule } from "core-app/features/plugins/openproject-plugins.module";
import { LinkedPluginsModule } from "core-app/features/plugins/linked-plugins.module";
@NgModule({
imports: [
// The BrowserModule must only be loaded here!
BrowserModule,
// Commons
OPSharedModule,
// Router module
OpenprojectRouterModule,
// Hal Module
OpenprojectHalModule,
// CKEditor
OpenprojectEditorModule,
// Display + Edit field functionality
OpenprojectFieldsModule,
OpenprojectGridsModule,
OpenprojectAttachmentsModule,
// Project module
OpenprojectProjectsModule,
// Work packages and their routes
OpenprojectWorkPackagesModule,
OpenprojectWorkPackageRoutesModule,
// Work packages in graph representation
OpenprojectWorkPackageGraphsModule,
// Calendar module
OpenprojectCalendarModule,
// Dashboards
OpenprojectDashboardsModule,
// Overview
OpenprojectOverviewModule,
// MyPage
OpenprojectMyPageModule,
// Global Search
OpenprojectGlobalSearchModule,
// Admin module
OpenprojectAdminModule,
OpenprojectEnterpriseModule,
// Plugin hooks and modules
OpenprojectPluginsModule,
// Linked plugins dynamically generated by bundler
LinkedPluginsModule,
// Members
OpenprojectMembersModule,
// Angular Forms
ReactiveFormsModule,
// Augmenting Module
OpenprojectAugmentingModule,
// Modals
OpenprojectModalModule,
// Invite user modal
OpenprojectInviteUserModalModule,
// Autocompleters
OpenprojectAutocompleterModule,
// Tabs
OpenprojectTabsModule,
],
providers: [
{ provide: States, useValue: new States() },
{ provide: APP_INITIALIZER, useFactory: initializeServices, deps: [Injector], multi: true },
PaginationService,
OpenProjectBackupService,
OpenProjectFileUploadService,
OpenProjectDirectFileUploadService,
// Split view
CommentService,
ConfirmDialogService,
RevitAddInSettingsButtonService,
],
declarations: [
OpContextMenuTrigger,
// Modals
ConfirmDialogModal,
DynamicContentModal,
PasswordConfirmationModal,
WpPreviewModal,
// Main menu
MainMenuResizerComponent,
MainMenuToggleComponent,
// Project autocompleter
ProjectMenuAutocompleteComponent,
// Form configuration
OpDragScrollDirective,
ConfirmFormSubmitController,
]
})
export class OpenProjectModule {
// noinspection JSUnusedGlobalSymbols
ngDoBootstrap(appRef:ApplicationRef) {
// Register global dynamic components
// this is necessary to ensure they are not tree-shaken
// (if they are not used anywhere in Angular, they would be removed)
DynamicBootstrapper.register(...globalDynamicComponents);
// Perform global dynamic bootstrapping of our entry components
// that are in the current DOM response.
DynamicBootstrapper.bootstrapOptionalDocument(appRef, document);
// Call hook service to allow modules to bootstrap additional elements.
// We can't use ngDoBootstrap in nested modules since they are not called.
const hookService = (appRef as any)._injector.get(HookService);
hookService
.call('openProjectAngularBootstrap')
.forEach((results:{ selector:string, cls:any }[]) => {
DynamicBootstrapper.bootstrapOptionalDocument(appRef, document, results);
});
}
}
export function initializeServices(injector:Injector) {
return () => {
const PreviewTrigger = injector.get(PreviewTriggerService);
const mainMenuNavigationService = injector.get(MainMenuNavigationService);
const keyboardShortcuts = injector.get(KeyboardShortcutService);
// Conditionally add the Revit Add-In settings button
injector.get(RevitAddInSettingsButtonService);
mainMenuNavigationService.register();
PreviewTrigger.setupListener();
keyboardShortcuts.register();
};
}

@ -1,20 +0,0 @@
import {
Component,
} from '@angular/core';
import { WpTableConfigurationService } from 'core-components/wp-table/configuration-modal/wp-table-configuration.service';
import { RestrictedWpTableConfigurationService } from 'core-components/wp-table/external-configuration/restricted-wp-table-configuration.service';
import { WpTableConfigurationRelationSelectorComponent } from "core-components/wp-table/configuration-modal/wp-table-configuration-relation-selector";
import { WpTableConfigurationModalPrependToken } from "core-components/wp-table/configuration-modal/wp-table-configuration.modal";
import { ExternalQueryConfigurationComponent } from "core-components/wp-table/external-configuration/external-query-configuration.component";
@Component({
templateUrl: './external-query-configuration.template.html',
providers: [
[
{ provide: WpTableConfigurationService, useClass: RestrictedWpTableConfigurationService }
],
{ provide: WpTableConfigurationModalPrependToken, useValue: WpTableConfigurationRelationSelectorComponent }
],
})
export class ExternalRelationQueryConfigurationComponent extends ExternalQueryConfigurationComponent {
}

@ -1,30 +0,0 @@
import { Inject, Injectable } from '@angular/core';
import { I18nService } from 'core-app/modules/common/i18n/i18n.service';
import { TabInterface } from 'core-components/wp-table/configuration-modal/tab-portal-outlet';
import { WpTableConfigurationService } from 'core-components/wp-table/configuration-modal/wp-table-configuration.service';
import { QueryConfigurationLocals } from 'core-components/wp-table/external-configuration/external-query-configuration.component';
import { OpQueryConfigurationLocalsToken } from "core-components/wp-table/external-configuration/external-query-configuration.constants";
@Injectable()
export class RestrictedWpTableConfigurationService extends WpTableConfigurationService {
constructor(@Inject(OpQueryConfigurationLocalsToken) readonly locals:QueryConfigurationLocals,
readonly I18n:I18nService) {
super(I18n);
}
public get tabs():TabInterface[] {
const disabledTabs = this.locals.disabledTabs || {};
return this
._tabs
.map(el => {
const reason = disabledTabs[el.id];
if (reason != null) {
el.disable = reason;
}
return el;
});
}
}

@ -1,3 +0,0 @@
.op-work-package-tabs
position: relative
width: 100%

@ -1,30 +0,0 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { WpTabsComponent } from './components/wp-tabs/wp-tabs.component';
import { UIRouterModule } from "@uirouter/angular";
import { WpTabWrapperComponent } from "core-components/wp-tabs/components/wp-tab-wrapper/wp-tab-wrapper.component";
import { DynamicModule } from "ng-dynamic-component";
import { OpenprojectAccessibilityModule } from "core-app/modules/a11y/openproject-a11y.module";
import { OpenprojectTabsModule } from "core-app/modules/common/tabs/openproject-tabs.module";
import { IconModule } from "core-app/modules/icon/icon.module";
@NgModule({
declarations: [
WpTabsComponent,
WpTabWrapperComponent,
],
imports: [
CommonModule,
UIRouterModule,
DynamicModule,
OpenprojectAccessibilityModule,
OpenprojectTabsModule,
IconModule
],
exports: [
WpTabsComponent,
WpTabWrapperComponent,
],
})
export class OpWpTabsModule {
}

@ -1,7 +1,7 @@
import { Inject, Injectable } from "@angular/core";
import { DOCUMENT } from "@angular/common";
import { BehaviorSubject, Observable, Subject } from "rxjs";
import { debugLog } from "core-app/helpers/debug_output";
import { debugLog } from "core-app/shared/helpers/debug_output";
@Injectable({ providedIn: 'root' })
export class ActiveWindowService {

@ -27,9 +27,9 @@
//++
import { TestBed, waitForAsync } from "@angular/core/testing";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { PathHelperService } from "core-app/modules/common/path-helper/path-helper.service";
import { States } from "core-components/states.service";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { PathHelperService } from "core-app/core/path-helper/path-helper.service";
import { States } from "core-app/core/states/states.service";
describe('APIv3Service', function() {
let service:APIV3Service;

@ -31,33 +31,33 @@ import {
APIv3GettableResource,
APIv3ResourceCollection,
APIv3ResourcePath
} from "core-app/modules/apiv3/paths/apiv3-resource";
} from "core-app/core/apiv3/paths/apiv3-resource";
import { Constructor } from "@angular/cdk/table";
import { PathHelperService } from "core-app/modules/common/path-helper/path-helper.service";
import { Apiv3GridsPaths } from "core-app/modules/apiv3/endpoints/grids/apiv3-grids-paths";
import { Apiv3TimeEntriesPaths } from "core-app/modules/apiv3/endpoints/time-entries/apiv3-time-entries-paths";
import { Apiv3CapabilitiesPaths } from "core-app/modules/apiv3/endpoints/capabilities/apiv3-capabilities-paths";
import { Apiv3MembershipsPaths } from "core-app/modules/apiv3/endpoints/memberships/apiv3-memberships-paths";
import { Apiv3UsersPaths } from "core-app/modules/apiv3/endpoints/users/apiv3-users-paths";
import { Apiv3PlaceholderUsersPaths } from 'core-app/modules/apiv3/endpoints/placeholder-users/apiv3-placeholder-users-paths';
import { Apiv3GroupsPaths } from 'core-app/modules/apiv3/endpoints/groups/apiv3-groups-paths';
import { APIv3TypesPaths } from "core-app/modules/apiv3/endpoints/types/apiv3-types-paths";
import { APIv3QueriesPaths } from "core-app/modules/apiv3/endpoints/queries/apiv3-queries-paths";
import { APIV3WorkPackagesPaths } from "core-app/modules/apiv3/endpoints/work_packages/api-v3-work-packages-paths";
import { APIv3ProjectPaths } from "core-app/modules/apiv3/endpoints/projects/apiv3-project-paths";
import { APIv3ProjectsPaths } from "core-app/modules/apiv3/endpoints/projects/apiv3-projects-paths";
import { APIv3StatusesPaths } from "core-app/modules/apiv3/endpoints/statuses/apiv3-statuses-paths";
import { APIv3RolesPaths } from "core-app/modules/apiv3/endpoints/roles/apiv3-roles-paths";
import { APIv3VersionsPaths } from "core-app/modules/apiv3/endpoints/versions/apiv3-versions-paths";
import { Apiv3RelationsPaths } from "core-app/modules/apiv3/endpoints/relations/apiv3-relations-paths";
import { Apiv3NewsPaths } from "core-app/modules/apiv3/endpoints/news/apiv3-news-paths";
import { Apiv3HelpTextsPaths } from "core-app/modules/apiv3/endpoints/help_texts/apiv3-help-texts-paths";
import { Apiv3ConfigurationPath } from "core-app/modules/apiv3/endpoints/configuration/apiv3-configuration-path";
import { Apiv3BoardsPaths } from "core-app/modules/apiv3/virtual/apiv3-boards-paths";
import { RootResource } from "core-app/modules/hal/resources/root-resource";
import { HalResource } from "core-app/modules/hal/resources/hal-resource";
import { PathHelperService } from "core-app/core/path-helper/path-helper.service";
import { Apiv3GridsPaths } from "core-app/core/apiv3/endpoints/grids/apiv3-grids-paths";
import { Apiv3TimeEntriesPaths } from "core-app/core/apiv3/endpoints/time-entries/apiv3-time-entries-paths";
import { Apiv3CapabilitiesPaths } from "core-app/core/apiv3/endpoints/capabilities/apiv3-capabilities-paths";
import { Apiv3MembershipsPaths } from "core-app/core/apiv3/endpoints/memberships/apiv3-memberships-paths";
import { Apiv3UsersPaths } from "core-app/core/apiv3/endpoints/users/apiv3-users-paths";
import { APIv3TypesPaths } from "core-app/core/apiv3/endpoints/types/apiv3-types-paths";
import { APIv3QueriesPaths } from "core-app/core/apiv3/endpoints/queries/apiv3-queries-paths";
import { APIV3WorkPackagesPaths } from "core-app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths";
import { APIv3ProjectPaths } from "core-app/core/apiv3/endpoints/projects/apiv3-project-paths";
import { APIv3ProjectsPaths } from "core-app/core/apiv3/endpoints/projects/apiv3-projects-paths";
import { APIv3StatusesPaths } from "core-app/core/apiv3/endpoints/statuses/apiv3-statuses-paths";
import { APIv3RolesPaths } from "core-app/core/apiv3/endpoints/roles/apiv3-roles-paths";
import { APIv3VersionsPaths } from "core-app/core/apiv3/endpoints/versions/apiv3-versions-paths";
import { Apiv3RelationsPaths } from "core-app/core/apiv3/endpoints/relations/apiv3-relations-paths";
import { Apiv3NewsPaths } from "core-app/core/apiv3/endpoints/news/apiv3-news-paths";
import { Apiv3HelpTextsPaths } from "core-app/core/apiv3/endpoints/help_texts/apiv3-help-texts-paths";
import { Apiv3ConfigurationPath } from "core-app/core/apiv3/endpoints/configuration/apiv3-configuration-path";
import { Apiv3BoardsPaths } from "core-app/core/apiv3/virtual/apiv3-boards-paths";
import { RootResource } from "core-app/features/hal/resources/root-resource";
import * as ts from "typescript/lib/tsserverlibrary";
import Project = ts.server.Project;
import { Apiv3PlaceholderUsersPaths } from "core-app/core/apiv3/endpoints/placeholder-users/apiv3-placeholder-users-paths";
import { Apiv3GroupsPaths } from "core-app/core/apiv3/endpoints/groups/apiv3-groups-paths";
import { HalResource } from "core-app/features/hal/resources/hal-resource";
@Injectable({ providedIn: 'root' })
export class APIV3Service {

@ -26,14 +26,14 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { States } from "core-components/states.service";
import { HasId, StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { States } from "core-app/core/states/states.service";
import { HasId, StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { Observable } from "rxjs";
import { HalResource } from "core-app/modules/hal/resources/hal-resource";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { tap } from "rxjs/operators";
import { HalResource } from "core-app/features/hal/resources/hal-resource";
export abstract class CachableAPIV3Collection<
T extends HasId = HalResource,

@ -26,14 +26,14 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource } from "core-app/modules/apiv3/paths/apiv3-resource";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { States } from "core-components/states.service";
import { HasId, StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { APIv3GettableResource } from "core-app/core/apiv3/paths/apiv3-resource";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { States } from "core-app/core/states/states.service";
import { HasId, StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { concat, from, merge, Observable, of } from "rxjs";
import { HalResource } from "core-app/modules/hal/resources/hal-resource";
import { mapTo, publish, share, shareReplay, switchMap, take, tap } from "rxjs/operators";
import { SchemaCacheService } from "core-components/schemas/schema-cache.service";
import { SchemaCacheService } from "core-app/core/schemas/schema-cache.service";
import { HalResource } from "core-app/features/hal/resources/hal-resource";
export abstract class CachableAPIV3Resource<T extends HasId = HalResource>
extends APIv3GettableResource<T> {

@ -29,7 +29,6 @@
import { MultiInputState, State } from 'reactivestates';
import { Observable } from "rxjs";
import { auditTime, map, share, startWith, take } from "rxjs/operators";
import { HalResource } from "core-app/modules/hal/resources/hal-resource";
export interface HasId {
id:string|null;

@ -27,20 +27,20 @@
//++
import { Apiv3CapabilityPaths } from "core-app/modules/apiv3/endpoints/capabilities/apiv3-capability-paths";
import { CapabilityResource } from "core-app/modules/hal/resources/capability-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { Apiv3CapabilityPaths } from "core-app/core/apiv3/endpoints/capabilities/apiv3-capability-paths";
import { CapabilityResource } from "core-app/features/hal/resources/capability-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { Observable } from "rxjs";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { CachableAPIV3Collection } from "core-app/modules/apiv3/cache/cachable-apiv3-collection";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { CachableAPIV3Collection } from "core-app/core/apiv3/cache/cachable-apiv3-collection";
import { MultiInputState } from "reactivestates";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface,
listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
import { CapabilityCacheService } from "core-app/modules/apiv3/endpoints/capabilities/capability-cache.service";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { CapabilityCacheService } from "core-app/core/apiv3/endpoints/capabilities/capability-cache.service";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class Apiv3CapabilitiesPaths
extends CachableAPIV3Collection<CapabilityResource, Apiv3CapabilityPaths>

@ -26,10 +26,10 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { CapabilityResource } from "core-app/modules/hal/resources/capability-resource";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { Apiv3CapabilitiesPaths } from "core-app/modules/apiv3/endpoints/capabilities/apiv3-capabilities-paths";
import { CapabilityResource } from "core-app/features/hal/resources/capability-resource";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { Apiv3CapabilitiesPaths } from "core-app/core/apiv3/endpoints/capabilities/apiv3-capabilities-paths";
export class Apiv3CapabilityPaths extends CachableAPIV3Resource<CapabilityResource> {
protected createCache():StateCacheService<CapabilityResource> {

@ -26,12 +26,12 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { CapabilityResource } from "core-app/modules/hal/resources/capability-resource";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { SchemaCacheService } from "core-components/schemas/schema-cache.service";
import { States } from "core-components/states.service";
import { CapabilityResource } from "core-app/features/hal/resources/capability-resource";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { SchemaCacheService } from "core-app/core/schemas/schema-cache.service";
import { States } from "core-app/core/states/states.service";
import { Injector } from "@angular/core";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { MultiInputState } from "reactivestates";
export class CapabilityCacheService extends StateCacheService<CapabilityResource> {

@ -26,13 +26,13 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { GridResource } from "core-app/modules/hal/resources/grid-resource";
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { ConfigurationResource } from "core-app/modules/hal/resources/configuration-resource";
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { GridResource } from "core-app/features/hal/resources/grid-resource";
import { APIv3FormResource } from "core-app/core/apiv3/forms/apiv3-form-resource";
import { ConfigurationResource } from "core-app/features/hal/resources/configuration-resource";
import { Observable } from "rxjs";
import { shareReplay } from "rxjs/operators";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
export class Apiv3ConfigurationPath extends APIv3GettableResource<ConfigurationResource> {
private $configuration:Observable<ConfigurationResource>;

@ -26,11 +26,11 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { HalPayloadHelper } from "core-app/modules/hal/schemas/hal-payload.helper";
import { HalResource } from "core-app/modules/hal/resources/hal-resource";
import { GridWidgetResource } from "core-app/modules/hal/resources/grid-widget-resource";
import { APIv3FormResource } from "core-app/core/apiv3/forms/apiv3-form-resource";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
import { HalPayloadHelper } from "core-app/features/hal/schemas/hal-payload.helper";
import { GridWidgetResource } from "core-app/features/hal/resources/grid-widget-resource";
import { HalResource } from "core-app/features/hal/resources/hal-resource";
export class Apiv3GridForm extends APIv3FormResource {

@ -26,11 +26,11 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource } from "core-app/modules/apiv3/paths/apiv3-resource";
import { GridResource } from "core-app/modules/hal/resources/grid-resource";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { APIv3GettableResource } from "core-app/core/apiv3/paths/apiv3-resource";
import { GridResource } from "core-app/features/hal/resources/grid-resource";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
import { Observable } from "rxjs";
import { Apiv3GridForm } from "core-app/modules/apiv3/endpoints/grids/apiv3-grid-form";
import { Apiv3GridForm } from "core-app/core/apiv3/endpoints/grids/apiv3-grid-form";
export class Apiv3GridPaths extends APIv3GettableResource<GridResource> {
// Static paths

@ -26,19 +26,19 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { Apiv3GridPaths } from "core-app/modules/apiv3/endpoints/grids/apiv3-grid-paths";
import { GridResource } from "core-app/modules/hal/resources/grid-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { Apiv3GridForm } from "core-app/modules/apiv3/endpoints/grids/apiv3-grid-form";
import { APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { Apiv3GridPaths } from "core-app/core/apiv3/endpoints/grids/apiv3-grid-paths";
import { GridResource } from "core-app/features/hal/resources/grid-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
import { Apiv3GridForm } from "core-app/core/apiv3/endpoints/grids/apiv3-grid-form";
import { Observable } from "rxjs";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface,
listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
export class Apiv3GridsPaths
extends APIv3ResourceCollection<GridResource, Apiv3GridPaths>

@ -26,8 +26,8 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource } from "core-app/modules/apiv3/paths/apiv3-resource";
import { GroupResource } from "core-app/modules/hal/resources/group-resource";
import { APIv3GettableResource } from "core-app/core/apiv3/paths/apiv3-resource";
import { GroupResource } from "core-app/features/hal/resources/group-resource";
import { Observable } from "rxjs";
export class Apiv3GroupPaths extends APIv3GettableResource<GroupResource> {

@ -26,17 +26,17 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { Apiv3GroupPaths } from "core-app/modules/apiv3/endpoints/groups/apiv3-group-paths";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { Apiv3GroupPaths } from "core-app/core/apiv3/endpoints/groups/apiv3-group-paths";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { Observable } from "rxjs";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface,
listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { GroupResource } from 'core-app/modules/hal/resources/group-resource';
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { GroupResource } from "core-app/features/hal/resources/group-resource";
export class Apiv3GroupsPaths
extends APIv3ResourceCollection<GroupResource, Apiv3GroupPaths>

@ -26,11 +26,11 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { Observable } from "rxjs";
import { HelpTextResource } from "core-app/modules/hal/resources/help-text-resource";
import { HelpTextResource } from "core-app/features/hal/resources/help-text-resource";
export class Apiv3HelpTextsPaths
extends APIv3ResourceCollection<HelpTextResource, APIv3GettableResource<HelpTextResource>> {

@ -26,11 +26,11 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import {APIv3FormResource} from "core-app/modules/apiv3/forms/apiv3-form-resource";
import {SchemaResource} from "core-app/modules/hal/resources/schema-resource";
import {HalPayloadHelper} from "core-app/modules/hal/schemas/hal-payload.helper";
import {HalResource} from "core-app/modules/hal/resources/hal-resource";
import {MembershipResource, MembershipResourceEmbedded} from "core-app/modules/hal/resources/membership-resource";
import {APIv3FormResource} from "core-app/core/apiv3/forms/apiv3-form-resource";
import {SchemaResource} from "core-app/features/hal/resources/schema-resource";
import {HalPayloadHelper} from "core-app/features/hal/schemas/hal-payload.helper";
import {HalResource} from "core-app/features/hal/resources/hal-resource";
import {MembershipResource, MembershipResourceEmbedded} from "core-app/features/hal/resources/membership-resource";
export class Apiv3MembershipsForm extends APIv3FormResource {

@ -26,17 +26,17 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import {APIv3GettableResource, APIv3ResourceCollection} from "core-app/modules/apiv3/paths/apiv3-resource";
import {APIV3Service} from "core-app/modules/apiv3/api-v3.service";
import {Apiv3AvailableProjectsPaths} from "core-app/modules/apiv3/endpoints/projects/apiv3-available-projects-paths";
import {APIv3GettableResource, APIv3ResourceCollection} from "core-app/core/apiv3/paths/apiv3-resource";
import {APIV3Service} from "core-app/core/apiv3/api-v3.service";
import {Apiv3AvailableProjectsPaths} from "core-app/core/apiv3/endpoints/projects/apiv3-available-projects-paths";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface, listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import {Observable} from "rxjs";
import {CollectionResource} from "core-app/modules/hal/resources/collection-resource";
import {MembershipResource, MembershipResourceEmbedded} from "core-app/modules/hal/resources/membership-resource";
import {Apiv3MembershipsForm} from "core-app/modules/apiv3/endpoints/memberships/apiv3-memberships-form";
import {Apiv3MembershipsForm} from "core-app/core/apiv3/endpoints/memberships/apiv3-memberships-form";
import { MembershipResource, MembershipResourceEmbedded } from "core-app/features/hal/resources/membership-resource";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
export class Apiv3MembershipsPaths

@ -27,17 +27,17 @@
//++
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { TimeEntryResource } from "core-app/modules/hal/resources/time-entry-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { TimeEntryResource } from "core-app/features/hal/resources/time-entry-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { Observable } from "rxjs";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface,
listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
import { NewsResource } from "core-app/modules/hal/resources/news-resource";
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { NewsResource } from "core-app/features/hal/resources/news-resource";
export class Apiv3NewsPaths
extends APIv3ResourceCollection<NewsResource, APIv3GettableResource<NewsResource>>

@ -26,8 +26,8 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource } from "core-app/modules/apiv3/paths/apiv3-resource";
import { PlaceholderUserResource } from "core-app/modules/hal/resources/placeholder-user-resource";
import { APIv3GettableResource } from "core-app/core/apiv3/paths/apiv3-resource";
import { PlaceholderUserResource } from "core-app/features/hal/resources/placeholder-user-resource";
import { Observable } from "rxjs";
export class Apiv3PlaceholderUserPaths extends APIv3GettableResource<PlaceholderUserResource> {

@ -26,17 +26,17 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { Apiv3PlaceholderUserPaths } from "core-app/modules/apiv3/endpoints/placeholder-users/apiv3-placeholder-user-paths";
import { PlaceholderUserResource } from "core-app/modules/hal/resources/placeholder-user-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { Apiv3PlaceholderUserPaths } from "core-app/core/apiv3/endpoints/placeholder-users/apiv3-placeholder-user-paths";
import { PlaceholderUserResource } from "core-app/features/hal/resources/placeholder-user-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { Observable } from "rxjs";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface,
listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
export class Apiv3PlaceholderUsersPaths
extends APIv3ResourceCollection<PlaceholderUserResource, Apiv3PlaceholderUserPaths>

@ -26,16 +26,16 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { ProjectResource } from "core-app/modules/hal/resources/project-resource";
import { APIv3GettableResource } from "core-app/modules/apiv3/paths/apiv3-resource";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { buildApiV3Filter } from "core-components/api/api-v3/api-v3-filter-builder";
import { ProjectResource } from "core-app/features/hal/resources/project-resource";
import { APIv3GettableResource } from "core-app/core/apiv3/paths/apiv3-resource";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { Observable } from "rxjs";
import { map } from "rxjs/operators";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface, listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { buildApiV3Filter } from "core-app/shared/helpers/api-v3/api-v3-filter-builder";
export class Apiv3AvailableProjectsPaths
extends APIv3GettableResource<CollectionResource<ProjectResource>>

@ -26,9 +26,9 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { SimpleResource } from "core-app/modules/apiv3/paths/path-resources";
import { APIv3FormResource } from "core-app/core/apiv3/forms/apiv3-form-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { SimpleResource } from "core-app/core/apiv3/paths/path-resources";
export class APIv3ProjectCopyPaths extends SimpleResource {
constructor(protected apiRoot:APIV3Service,

@ -26,15 +26,15 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3QueriesPaths } from "core-app/modules/apiv3/endpoints/queries/apiv3-queries-paths";
import { APIv3TypesPaths } from "core-app/modules/apiv3/endpoints/types/apiv3-types-paths";
import { APIV3WorkPackagesPaths } from "core-app/modules/apiv3/endpoints/work_packages/api-v3-work-packages-paths";
import { ProjectResource } from "core-app/modules/hal/resources/project-resource";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { APIv3VersionsPaths } from "core-app/modules/apiv3/endpoints/versions/apiv3-versions-paths";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { APIv3ProjectsPaths } from "core-app/modules/apiv3/endpoints/projects/apiv3-projects-paths";
import { APIv3ProjectCopyPaths } from "core-app/modules/apiv3/endpoints/projects/apiv3-project-copy-paths";
import { APIv3QueriesPaths } from "core-app/core/apiv3/endpoints/queries/apiv3-queries-paths";
import { APIv3TypesPaths } from "core-app/core/apiv3/endpoints/types/apiv3-types-paths";
import { APIV3WorkPackagesPaths } from "core-app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths";
import { ProjectResource } from "core-app/features/hal/resources/project-resource";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { APIv3VersionsPaths } from "core-app/core/apiv3/endpoints/versions/apiv3-versions-paths";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { APIv3ProjectsPaths } from "core-app/core/apiv3/endpoints/projects/apiv3-projects-paths";
import { APIv3ProjectCopyPaths } from "core-app/core/apiv3/endpoints/projects/apiv3-project-copy-paths";
export class APIv3ProjectPaths extends CachableAPIV3Resource<ProjectResource> {
// /api/v3/projects/:project_id/available_assignees

@ -26,20 +26,20 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3ProjectPaths } from "core-app/modules/apiv3/endpoints/projects/apiv3-project-paths";
import { ProjectResource } from "core-app/modules/hal/resources/project-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { APIv3ProjectPaths } from "core-app/core/apiv3/endpoints/projects/apiv3-project-paths";
import { ProjectResource } from "core-app/features/hal/resources/project-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface,
listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { Observable } from "rxjs";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { CachableAPIV3Collection } from "core-app/modules/apiv3/cache/cachable-apiv3-collection";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { ProjectCache } from "core-app/modules/apiv3/endpoints/projects/project.cache";
import { CachableAPIV3Collection } from "core-app/core/apiv3/cache/cachable-apiv3-collection";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { ProjectCache } from "core-app/core/apiv3/endpoints/projects/project.cache";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
export class APIv3ProjectsPaths
extends CachableAPIV3Collection<ProjectResource, APIv3ProjectPaths>

@ -27,13 +27,13 @@
//++
import { MultiInputState } from 'reactivestates';
import { WorkPackageResource } from 'core-app/modules/hal/resources/work-package-resource';
import { WorkPackageResource } from "core-app/features/hal/resources/work-package-resource";
import { Injectable, Injector } from '@angular/core';
import { debugLog } from "core-app/helpers/debug_output";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { SchemaCacheService } from "core-components/schemas/schema-cache.service";
import { ProjectResource } from "core-app/modules/hal/resources/project-resource";
import { debugLog } from "core-app/shared/helpers/debug_output";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { SchemaCacheService } from "core-app/core/schemas/schema-cache.service";
import { ProjectResource } from "core-app/features/hal/resources/project-resource";
@Injectable()
export class ProjectCache extends StateCacheService<ProjectResource> {

@ -26,18 +26,18 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { APIv3QueryPaths } from "core-app/modules/apiv3/endpoints/queries/apiv3-query-paths";
import { QueryResource } from "core-app/modules/hal/resources/query-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { Apiv3QueryForm } from "core-app/modules/apiv3/endpoints/queries/apiv3-query-form";
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { APIv3QueryPaths } from "core-app/core/apiv3/endpoints/queries/apiv3-query-paths";
import { QueryResource } from "core-app/features/hal/resources/query-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { Apiv3QueryForm } from "core-app/core/apiv3/endpoints/queries/apiv3-query-form";
import { Observable } from "rxjs";
import { QueryFormResource } from "core-app/modules/hal/resources/query-form-resource";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { Apiv3ListParameters, listParamsString } from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
import { QueryFiltersService } from "core-components/wp-query/query-filters.service";
import { HalPayloadHelper } from "core-app/modules/hal/schemas/hal-payload.helper";
import { QueryFormResource } from "core-app/features/hal/resources/query-form-resource";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { Apiv3ListParameters, listParamsString } from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { QueryFiltersService } from "core-app/features/work-packages/components/wp-query/query-filters.service";
import { HalPayloadHelper } from "core-app/features/hal/schemas/hal-payload.helper";
export class APIv3QueriesPaths extends APIv3ResourceCollection<QueryResource, APIv3QueryPaths> {
@InjectField() private queryFilters:QueryFiltersService;

@ -26,14 +26,14 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { QueryResource } from "core-app/modules/hal/resources/query-resource";
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { QueryFormResource } from "core-app/modules/hal/resources/query-form-resource";
import { QueryResource } from "core-app/features/hal/resources/query-resource";
import { APIv3FormResource } from "core-app/core/apiv3/forms/apiv3-form-resource";
import { QueryFormResource } from "core-app/features/hal/resources/query-form-resource";
import { Observable } from "rxjs";
import * as URI from "urijs";
import { map, tap } from "rxjs/operators";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { QueryFiltersService } from "core-components/wp-query/query-filters.service";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { QueryFiltersService } from "core-app/features/work-packages/components/wp-query/query-filters.service";
export class Apiv3QueryForm extends APIv3FormResource<QueryFormResource> {
@InjectField() private queryFilters:QueryFiltersService;

@ -27,9 +27,9 @@
//++
import { Injector } from "@angular/core";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { HttpClient } from "@angular/common/http";
import { SimpleResource } from "core-app/modules/apiv3/paths/path-resources";
import { SimpleResource } from "core-app/core/apiv3/paths/path-resources";
export type QueryOrder = { [wpId:string]:number };

@ -26,16 +26,16 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource } from "core-app/modules/apiv3/paths/apiv3-resource";
import { QueryResource } from "core-app/modules/hal/resources/query-resource";
import { APIV3QueryOrder } from "core-app/modules/apiv3/endpoints/queries/apiv3-query-order";
import { Apiv3QueryForm } from "core-app/modules/apiv3/endpoints/queries/apiv3-query-form";
import { APIv3GettableResource } from "core-app/core/apiv3/paths/apiv3-resource";
import { QueryResource } from "core-app/features/hal/resources/query-resource";
import { APIV3QueryOrder } from "core-app/core/apiv3/endpoints/queries/apiv3-query-order";
import { Apiv3QueryForm } from "core-app/core/apiv3/endpoints/queries/apiv3-query-form";
import { Observable } from "rxjs";
import { QueryFormResource } from "core-app/modules/hal/resources/query-form-resource";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { QueryFiltersService } from "core-components/wp-query/query-filters.service";
import { PaginationObject } from "core-components/table-pagination/pagination-service";
import { HalPayloadHelper } from "core-app/modules/hal/schemas/hal-payload.helper";
import { QueryFormResource } from "core-app/features/hal/resources/query-form-resource";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { QueryFiltersService } from "core-app/features/work-packages/components/wp-query/query-filters.service";
import { HalPayloadHelper } from "core-app/features/hal/schemas/hal-payload.helper";
import { PaginationObject } from "core-app/shared/components/table-pagination/pagination-service";
export class APIv3QueryPaths extends APIv3GettableResource<QueryResource> {
@InjectField() private queryFilters:QueryFiltersService;

@ -26,18 +26,13 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { VersionResource } from "core-app/modules/hal/resources/version-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { from, NEVER, Observable } from "rxjs";
import { WorkPackageResource } from "core-app/modules/hal/resources/work-package-resource";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { Apiv3AvailableProjectsPaths } from "core-app/modules/apiv3/endpoints/projects/apiv3-available-projects-paths";
import { APIv3VersionPaths } from "core-app/modules/apiv3/endpoints/versions/apiv3-version-paths";
import { RelationResource } from "core-app/modules/hal/resources/relation-resource";
import { buildApiV3Filter } from "core-components/api/api-v3/api-v3-filter-builder";
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { from, Observable } from "rxjs";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { RelationResource } from "core-app/features/hal/resources/relation-resource";
import { map } from "rxjs/operators";
import { buildApiV3Filter } from "core-app/shared/helpers/api-v3/api-v3-filter-builder";
export class Apiv3RelationsPaths extends APIv3ResourceCollection<RelationResource, APIv3GettableResource<RelationResource>> {
constructor(protected apiRoot:APIV3Service,

@ -26,9 +26,9 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { RoleResource } from "core-app/modules/hal/resources/role-resource";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { RoleResource } from "core-app/features/hal/resources/role-resource";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class APIv3RolePaths extends CachableAPIV3Resource<RoleResource> {

@ -26,14 +26,14 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3ResourceCollection, APIv3ResourcePath } from "core-app/modules/apiv3/paths/apiv3-resource";
import { APIv3ResourceCollection, APIv3ResourcePath } from "core-app/core/apiv3/paths/apiv3-resource";
import { Injector } from "@angular/core";
import { RoleResource } from "core-app/modules/hal/resources/role-resource";
import { APIv3RolePaths } from "core-app/modules/apiv3/endpoints/roles/apiv3-role-paths";
import { RoleResource } from "core-app/features/hal/resources/role-resource";
import { APIv3RolePaths } from "core-app/core/apiv3/endpoints/roles/apiv3-role-paths";
import { Observable } from "rxjs";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { tap } from "rxjs/operators";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
export class APIv3RolesPaths extends APIv3ResourceCollection<RoleResource, APIv3RolePaths> {
constructor(protected apiRoot:APIV3Service,

@ -26,9 +26,9 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { StatusResource } from "core-app/modules/hal/resources/status-resource";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { StatusResource } from "core-app/features/hal/resources/status-resource";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class APIv3StatusPaths extends CachableAPIV3Resource<StatusResource> {

@ -26,14 +26,14 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3ResourceCollection, APIv3ResourcePath } from "core-app/modules/apiv3/paths/apiv3-resource";
import { APIv3ResourceCollection, APIv3ResourcePath } from "core-app/core/apiv3/paths/apiv3-resource";
import { Injector } from "@angular/core";
import { StatusResource } from "core-app/modules/hal/resources/status-resource";
import { APIv3StatusPaths } from "core-app/modules/apiv3/endpoints/statuses/apiv3-status-paths";
import { StatusResource } from "core-app/features/hal/resources/status-resource";
import { APIv3StatusPaths } from "core-app/core/apiv3/endpoints/statuses/apiv3-status-paths";
import { Observable } from "rxjs";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { tap } from "rxjs/operators";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
export class APIv3StatusesPaths extends APIv3ResourceCollection<StatusResource, APIv3StatusPaths> {
constructor(protected apiRoot:APIV3Service,

@ -27,21 +27,21 @@
//++
import { Apiv3TimeEntryPaths } from "core-app/modules/apiv3/endpoints/time-entries/apiv3-time-entry-paths";
import { TimeEntryResource } from "core-app/modules/hal/resources/time-entry-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { Apiv3TimeEntryPaths } from "core-app/core/apiv3/endpoints/time-entries/apiv3-time-entry-paths";
import { TimeEntryResource } from "core-app/features/hal/resources/time-entry-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { APIv3FormResource } from "core-app/core/apiv3/forms/apiv3-form-resource";
import { Observable } from "rxjs";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { CachableAPIV3Collection } from "core-app/modules/apiv3/cache/cachable-apiv3-collection";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { CachableAPIV3Collection } from "core-app/core/apiv3/cache/cachable-apiv3-collection";
import { MultiInputState } from "reactivestates";
import {
Apiv3ListParameters,
Apiv3ListResourceInterface,
listParamsString
} from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
import { TimeEntryCacheService } from "core-app/modules/apiv3/endpoints/time-entries/time-entry-cache.service";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
} from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { TimeEntryCacheService } from "core-app/core/apiv3/endpoints/time-entries/time-entry-cache.service";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class Apiv3TimeEntriesPaths
extends CachableAPIV3Collection<TimeEntryResource, Apiv3TimeEntryPaths>

@ -26,17 +26,16 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { TimeEntryResource } from "core-app/modules/hal/resources/time-entry-resource";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { MultiInputState } from "reactivestates";
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { HalResource } from "core-app/modules/hal/resources/hal-resource";
import { TimeEntryResource } from "core-app/features/hal/resources/time-entry-resource";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { APIv3FormResource } from "core-app/core/apiv3/forms/apiv3-form-resource";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
import { Observable } from "rxjs";
import { tap } from "rxjs/operators";
import { Apiv3TimeEntriesPaths } from "core-app/modules/apiv3/endpoints/time-entries/apiv3-time-entries-paths";
import { HalPayloadHelper } from "core-app/modules/hal/schemas/hal-payload.helper";
import { Apiv3TimeEntriesPaths } from "core-app/core/apiv3/endpoints/time-entries/apiv3-time-entries-paths";
import { HalPayloadHelper } from "core-app/features/hal/schemas/hal-payload.helper";
import { HalResource } from "core-app/features/hal/resources/hal-resource";
export class Apiv3TimeEntryPaths extends CachableAPIV3Resource<TimeEntryResource> {
// Static paths

@ -26,12 +26,12 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { TimeEntryResource } from "core-app/modules/hal/resources/time-entry-resource";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { SchemaCacheService } from "core-components/schemas/schema-cache.service";
import { States } from "core-components/states.service";
import { TimeEntryResource } from "core-app/features/hal/resources/time-entry-resource";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { SchemaCacheService } from "core-app/core/schemas/schema-cache.service";
import { States } from "core-app/core/states/states.service";
import { Injector } from "@angular/core";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { MultiInputState } from "reactivestates";
export class TimeEntryCacheService extends StateCacheService<TimeEntryResource> {

@ -26,10 +26,10 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { TypeResource } from "core-app/modules/hal/resources/type-resource";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { APIv3TypesPaths } from "core-app/modules/apiv3/endpoints/types/apiv3-types-paths";
import { TypeResource } from "core-app/features/hal/resources/type-resource";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { APIv3TypesPaths } from "core-app/core/apiv3/endpoints/types/apiv3-types-paths";
export class APIv3TypePaths extends CachableAPIV3Resource<TypeResource> {

@ -26,12 +26,12 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { TypeResource } from "core-app/modules/hal/resources/type-resource";
import { APIv3TypePaths } from "core-app/modules/apiv3/endpoints/types/apiv3-type-paths";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { CachableAPIV3Collection } from "core-app/modules/apiv3/cache/cachable-apiv3-collection";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { TypeResource } from "core-app/features/hal/resources/type-resource";
import { APIv3TypePaths } from "core-app/core/apiv3/endpoints/types/apiv3-type-paths";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { CachableAPIV3Collection } from "core-app/core/apiv3/cache/cachable-apiv3-collection";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class APIv3TypesPaths extends CachableAPIV3Collection<TypeResource, APIv3TypePaths> {
constructor(protected apiRoot:APIV3Service,

@ -26,10 +26,10 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { UserResource } from "core-app/modules/hal/resources/user-resource";
import { UserResource } from "core-app/features/hal/resources/user-resource";
import { MultiInputState } from "reactivestates";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class APIv3UserPaths extends CachableAPIV3Resource<UserResource> {

@ -26,11 +26,11 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { APIv3UserPaths } from "core-app/modules/apiv3/endpoints/users/apiv3-user-paths";
import { APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { APIv3UserPaths } from "core-app/core/apiv3/endpoints/users/apiv3-user-paths";
import { Observable } from "rxjs";
import { UserResource } from "core-app/modules/hal/resources/user-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { UserResource } from "core-app/features/hal/resources/user-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
export class Apiv3UsersPaths extends APIv3ResourceCollection<UserResource, APIv3UserPaths> {
constructor(protected apiRoot:APIV3Service,

@ -26,12 +26,12 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { VersionResource } from "core-app/modules/hal/resources/version-resource";
import { VersionResource } from "core-app/features/hal/resources/version-resource";
import { Observable } from "rxjs";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { MultiInputState } from "reactivestates";
import { tap } from "rxjs/operators";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class APIv3VersionPaths extends CachableAPIV3Resource<VersionResource> {

@ -26,15 +26,15 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/modules/apiv3/paths/apiv3-resource";
import { VersionResource } from "core-app/modules/hal/resources/version-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { APIv3GettableResource, APIv3ResourceCollection } from "core-app/core/apiv3/paths/apiv3-resource";
import { VersionResource } from "core-app/features/hal/resources/version-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { APIv3FormResource } from "core-app/core/apiv3/forms/apiv3-form-resource";
import { Observable } from "rxjs";
import { WorkPackageResource } from "core-app/modules/hal/resources/work-package-resource";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { Apiv3AvailableProjectsPaths } from "core-app/modules/apiv3/endpoints/projects/apiv3-available-projects-paths";
import { APIv3VersionPaths } from "core-app/modules/apiv3/endpoints/versions/apiv3-version-paths";
import { WorkPackageResource } from "core-app/features/hal/resources/work-package-resource";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { Apiv3AvailableProjectsPaths } from "core-app/core/apiv3/endpoints/projects/apiv3-available-projects-paths";
import { APIv3VersionPaths } from "core-app/core/apiv3/endpoints/versions/apiv3-version-paths";
export class APIv3VersionsPaths extends APIv3ResourceCollection<VersionResource, APIv3VersionPaths> {
constructor(protected apiRoot:APIV3Service,

@ -26,16 +26,16 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource } from "core-app/modules/apiv3/paths/apiv3-resource";
import { WorkPackageCollectionResource } from "core-app/modules/hal/resources/wp-collection-resource";
import { APIv3GettableResource } from "core-app/core/apiv3/paths/apiv3-resource";
import { WorkPackageCollectionResource } from "core-app/features/hal/resources/wp-collection-resource";
import { Observable } from "rxjs";
import { APIV3WorkPackagesPaths } from "core-app/modules/apiv3/endpoints/work_packages/api-v3-work-packages-paths";
import { APIV3WorkPackagesPaths } from "core-app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths";
import { take, tap } from "rxjs/operators";
import { WorkPackageCache } from "core-app/modules/apiv3/endpoints/work_packages/work-package.cache";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { States } from "core-components/states.service";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { WorkPackageCache } from "core-app/core/apiv3/endpoints/work_packages/work-package.cache";
import { States } from "core-app/core/states/states.service";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
export class ApiV3WorkPackageCachedSubresource extends APIv3GettableResource<WorkPackageCollectionResource> {
@InjectField() private states:States;

@ -26,15 +26,11 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIv3GettableResource, APIv3ResourcePath } from "core-app/modules/apiv3/paths/apiv3-resource";
import { WorkPackageResource } from "core-app/modules/hal/resources/work-package-resource";
import { Apiv3RelationsPaths } from "core-app/modules/apiv3/endpoints/relations/apiv3-relations-paths";
import { WorkPackageCollectionResource } from "core-app/modules/hal/resources/wp-collection-resource";
import { Observable } from "rxjs";
import { ApiV3FilterBuilder } from "core-components/api/api-v3/api-v3-filter-builder";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { APIV3WorkPackagesPaths } from "core-app/modules/apiv3/endpoints/work_packages/api-v3-work-packages-paths";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { WorkPackageResource } from "core-app/features/hal/resources/work-package-resource";
import { Apiv3RelationsPaths } from "core-app/core/apiv3/endpoints/relations/apiv3-relations-paths";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { APIV3WorkPackagesPaths } from "core-app/core/apiv3/endpoints/work_packages/api-v3-work-packages-paths";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class APIV3WorkPackagePaths extends CachableAPIV3Resource<WorkPackageResource> {

@ -26,20 +26,19 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { APIV3WorkPackagePaths } from "core-app/modules/apiv3/endpoints/work_packages/api-v3-work-package-paths";
import { ApiV3FilterBuilder, buildApiV3Filter } from "core-components/api/api-v3/api-v3-filter-builder";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { WorkPackageResource } from "core-app/modules/hal/resources/work-package-resource";
import { WorkPackageCollectionResource } from "core-app/modules/hal/resources/wp-collection-resource";
import { APIV3WorkPackagePaths } from "core-app/core/apiv3/endpoints/work_packages/api-v3-work-package-paths";
import { WorkPackageResource } from "core-app/features/hal/resources/work-package-resource";
import { WorkPackageCollectionResource } from "core-app/features/hal/resources/wp-collection-resource";
import { Observable } from "rxjs";
import { APIv3WorkPackageForm } from "core-app/modules/apiv3/endpoints/work_packages/apiv3-work-package-form";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { CachableAPIV3Collection } from "core-app/modules/apiv3/cache/cachable-apiv3-collection";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { WorkPackageCache } from "core-app/modules/apiv3/endpoints/work_packages/work-package.cache";
import { APIv3GettableResource } from "core-app/modules/apiv3/paths/apiv3-resource";
import { ApiV3WorkPackageCachedSubresource } from "core-app/modules/apiv3/endpoints/work_packages/api-v3-work-package-cached-subresource";
import { APIv3WorkPackageForm } from "core-app/core/apiv3/endpoints/work_packages/apiv3-work-package-form";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { CachableAPIV3Collection } from "core-app/core/apiv3/cache/cachable-apiv3-collection";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
import { WorkPackageCache } from "core-app/core/apiv3/endpoints/work_packages/work-package.cache";
import { APIv3GettableResource } from "core-app/core/apiv3/paths/apiv3-resource";
import { ApiV3WorkPackageCachedSubresource } from "core-app/core/apiv3/endpoints/work_packages/api-v3-work-package-cached-subresource";
import { ApiV3FilterBuilder, buildApiV3Filter } from "core-app/shared/helpers/api-v3/api-v3-filter-builder";
export class APIV3WorkPackagesPaths extends CachableAPIV3Collection<WorkPackageResource, APIV3WorkPackagePaths, WorkPackageCache> {
// Base path

@ -1,7 +1,7 @@
import { APIv3FormResource } from "core-app/modules/apiv3/forms/apiv3-form-resource";
import { FormResource } from "core-app/modules/hal/resources/form-resource";
import { APIv3FormResource } from "core-app/core/apiv3/forms/apiv3-form-resource";
import { FormResource } from "core-app/features/hal/resources/form-resource";
import { Observable } from "rxjs";
import { HalSource } from "core-app/modules/hal/resources/hal-resource";
import { HalSource } from "core-app/features/hal/resources/hal-resource";
export class APIv3WorkPackageForm extends APIv3FormResource {
/**

@ -28,23 +28,23 @@
import { Injector } from '@angular/core';
import { TestBed } from '@angular/core/testing';
import { I18nService } from 'core-app/modules/common/i18n/i18n.service';
import { NotificationsService } from 'core-app/modules/common/notifications/notifications.service';
import { PathHelperService } from 'core-app/modules/common/path-helper/path-helper.service';
import { OpenprojectHalModule } from 'core-app/modules/hal/openproject-hal.module';
import { WorkPackageResource } from 'core-app/modules/hal/resources/work-package-resource';
import { HalResourceService } from 'core-app/modules/hal/services/hal-resource.service';
import { OpenProjectFileUploadService } from 'core-components/api/op-file-upload/op-file-upload.service';
import { OpenProjectDirectFileUploadService } from "core-components/api/op-file-upload/op-direct-file-upload.service";
import { SchemaCacheService } from 'core-components/schemas/schema-cache.service';
import { States } from 'core-components/states.service';
import { HalResourceNotificationService } from "core-app/modules/hal/services/hal-resource-notification.service";
import { I18nService } from 'core-app/core/i18n/i18n.service';
import { NotificationsService } from 'core-app/shared/components/notifications/notifications.service';
import { PathHelperService } from 'core-app/core/path-helper/path-helper.service';
import { WorkPackageResource } from "core-app/features/hal/resources/work-package-resource";
import { HalResourceService } from "core-app/features/hal/services/hal-resource.service";
import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service';
import { States } from 'core-app/core/states/states.service';
import { take, takeWhile } from 'rxjs/operators';
import { WorkPackagesActivityService } from "core-components/wp-single-view-tabs/activity-panel/wp-activity.service";
import { TimezoneService } from "core-components/datetime/timezone.service";
import { ConfigurationService } from "core-app/modules/common/config/configuration.service";
import { WorkPackageNotificationService } from "core-app/modules/work_packages/notifications/work-package-notification.service";
import { WorkPackageCache } from "core-app/modules/apiv3/endpoints/work_packages/work-package.cache";
import { WorkPackagesActivityService } from "core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service";
import { ConfigurationService } from "core-app/core/config/configuration.service";
import { WorkPackageNotificationService } from "core-app/features/work-packages/services/notifications/work-package-notification.service";
import { WorkPackageCache } from "core-app/core/apiv3/endpoints/work_packages/work-package.cache";
import { OpenProjectFileUploadService } from "core-app/core/file-upload/op-file-upload.service";
import { OpenProjectDirectFileUploadService } from "core-app/core/file-upload/op-direct-file-upload.service";
import { TimezoneService } from "core-app/core/datetime/timezone.service";
import { HalResourceNotificationService } from "core-app/features/hal/services/hal-resource-notification.service";
import { OpenprojectHalModule } from "core-app/features/hal/openproject-hal.module";
describe('WorkPackageCache', () => {
let injector:Injector;

@ -27,12 +27,12 @@
//++
import { MultiInputState } from 'reactivestates';
import { WorkPackageResource } from 'core-app/modules/hal/resources/work-package-resource';
import { WorkPackageResource } from "core-app/features/hal/resources/work-package-resource";
import { Injectable, Injector } from '@angular/core';
import { debugLog } from "core-app/helpers/debug_output";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { SchemaCacheService } from "core-components/schemas/schema-cache.service";
import { debugLog } from "core-app/shared/helpers/debug_output";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { SchemaCacheService } from "core-app/core/schemas/schema-cache.service";
@Injectable()
export class WorkPackageCache extends StateCacheService<WorkPackageResource> {

@ -1,8 +1,8 @@
import { APIv3ResourcePath } from "core-app/modules/apiv3/paths/apiv3-resource";
import { FormResource } from "core-app/modules/hal/resources/form-resource";
import { APIv3ResourcePath } from "core-app/core/apiv3/paths/apiv3-resource";
import { FormResource } from "core-app/features/hal/resources/form-resource";
import { Observable } from "rxjs";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { HalPayloadHelper } from "core-app/modules/hal/schemas/hal-payload.helper";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
import { HalPayloadHelper } from "core-app/features/hal/schemas/hal-payload.helper";
export class APIv3FormResource<T extends FormResource = FormResource> extends APIv3ResourcePath<T> {
/**

@ -26,14 +26,14 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { OpenprojectCommonModule } from 'core-app/modules/common/openproject-common.module';
import { OPSharedModule } from 'core-app/shared/shared.module';
import { NgModule } from '@angular/core';
import { OpenprojectHalModule } from "core-app/modules/hal/openproject-hal.module";
import { OpenprojectHalModule } from "core-app/features/hal/openproject-hal.module";
@NgModule({
imports: [
// Commons
OpenprojectCommonModule,
OPSharedModule,
OpenprojectHalModule,
]
})

@ -26,9 +26,9 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { ApiV3FilterBuilder, FilterOperator } from "core-components/api/api-v3/api-v3-filter-builder";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { Observable } from "rxjs";
import { ApiV3FilterBuilder, FilterOperator } from "core-app/shared/helpers/api-v3/api-v3-filter-builder";
export type ApiV3ListFilter = [string, FilterOperator, string[]];

@ -1,11 +1,11 @@
import { Constructor } from "@angular/cdk/table";
import { SimpleResource, SimpleResourceCollection } from "core-app/modules/apiv3/paths/path-resources";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { HalResourceService } from "core-app/modules/hal/services/hal-resource.service";
import { ApiV3FilterBuilder } from "core-components/api/api-v3/api-v3-filter-builder";
import { HalResource } from "core-app/modules/hal/resources/hal-resource";
import { SimpleResource, SimpleResourceCollection } from "core-app/core/apiv3/paths/path-resources";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { HalResourceService } from "core-app/features/hal/services/hal-resource.service";
import { Observable } from "rxjs";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { ApiV3FilterBuilder } from "core-app/shared/helpers/api-v3/api-v3-filter-builder";
import { HalResource } from "core-app/features/hal/resources/hal-resource";
export class APIv3ResourcePath<T = HalResource> extends SimpleResource {
readonly injector = this.apiRoot.injector;

@ -1,4 +1,3 @@
import { ApiV3FilterBuilder } from "core-components/api/api-v3/api-v3-filter-builder";
import { Constructor } from "@angular/cdk/table";
/**

@ -26,14 +26,14 @@
// See docs/COPYRIGHT.rdoc for more details.
//++
import { Board } from "core-app/modules/boards/board/board";
import { Board } from "core-app/features/boards/board/board";
import { Observable } from "rxjs";
import { map, switchMap, tap } from "rxjs/operators";
import { SchemaResource } from "core-app/modules/hal/resources/schema-resource";
import { CachableAPIV3Resource } from "core-app/modules/apiv3/cache/cachable-apiv3-resource";
import { SchemaResource } from "core-app/features/hal/resources/schema-resource";
import { CachableAPIV3Resource } from "core-app/core/apiv3/cache/cachable-apiv3-resource";
import { MultiInputState } from "reactivestates";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { Apiv3BoardsPaths } from "core-app/modules/apiv3/virtual/apiv3-boards-paths";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
import { Apiv3BoardsPaths } from "core-app/core/apiv3/virtual/apiv3-boards-paths";
export class APIv3BoardPath extends CachableAPIV3Resource<Board> {

@ -27,21 +27,21 @@
//++
import { Constructor } from "@angular/cdk/table";
import { GridResource } from "core-app/modules/hal/resources/grid-resource";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { GridResource } from "core-app/features/hal/resources/grid-resource";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
import { Observable } from "rxjs";
import { Apiv3ListParameters, listParamsString } from "core-app/modules/apiv3/paths/apiv3-list-resource.interface";
import { CollectionResource } from "core-app/modules/hal/resources/collection-resource";
import { Board, BoardType } from "core-app/modules/boards/board/board";
import { Apiv3ListParameters, listParamsString } from "core-app/core/apiv3/paths/apiv3-list-resource.interface";
import { CollectionResource } from "core-app/features/hal/resources/collection-resource";
import { Board, BoardType } from "core-app/features/boards/board/board";
import { map, switchMap, tap } from "rxjs/operators";
import { InjectField } from "core-app/helpers/angular/inject-field.decorator";
import { CurrentProjectService } from "core-components/projects/current-project.service";
import { AuthorisationService } from "core-app/modules/common/model-auth/model-auth.service";
import { CachableAPIV3Collection } from "core-app/modules/apiv3/cache/cachable-apiv3-collection";
import { PathHelperService } from "core-app/modules/common/path-helper/path-helper.service";
import { InjectField } from "core-app/shared/helpers/angular/inject-field.decorator";
import { CurrentProjectService } from "core-app/core/current-project/current-project.service";
import { AuthorisationService } from "core-app/core/model-auth/model-auth.service";
import { CachableAPIV3Collection } from "core-app/core/apiv3/cache/cachable-apiv3-collection";
import { PathHelperService } from "core-app/core/path-helper/path-helper.service";
import { MultiInputState } from "reactivestates";
import { APIv3BoardPath } from "core-app/modules/apiv3/virtual/apiv3-board-path";
import { StateCacheService } from "core-app/modules/apiv3/cache/state-cache.service";
import { APIv3BoardPath } from "core-app/core/apiv3/virtual/apiv3-board-path";
import { StateCacheService } from "core-app/core/apiv3/cache/state-cache.service";
export class Apiv3BoardsPaths extends CachableAPIV3Collection<Board, APIv3BoardPath> {

@ -27,9 +27,9 @@
//++
import { NgModule } from '@angular/core';
import { OpenprojectModalModule } from "core-app/modules/modal/modal.module";
import { OpModalWrapperAugmentService } from "core-app/modules/modal/modal-wrapper-augment.service";
import { PathScriptAugmentService } from "core-app/modules/augmenting/services/path-script.augment.service";
import { OpenprojectModalModule } from "core-app/shared/components/modal/modal.module";
import { OpModalWrapperAugmentService } from "core-app/shared/components/modal/modal-wrapper-augment.service";
import { PathScriptAugmentService } from "core-app/core/augmenting/services/path-script.augment.service";
@NgModule({
imports: [ OpenprojectModalModule ],

@ -29,7 +29,7 @@
import { Inject, Injectable } from "@angular/core";
import { DOCUMENT } from "@angular/common";
import { debugLog } from "core-app/helpers/debug_output";
import { debugLog } from "core-app/shared/helpers/debug_output";
@Injectable({ providedIn: 'root' })
export class PathScriptAugmentService {

@ -27,10 +27,10 @@
//++
import {Injectable} from "@angular/core";
import {HttpClient, HttpEvent, HttpEventType, HttpResponse} from "@angular/common/http";
import {HalResource} from "core-app/modules/hal/resources/hal-resource";
import {HttpClient} from "@angular/common/http";
import {HalResource} from "core-app/features/hal/resources/hal-resource";
import {Observable} from "rxjs";
import {HalResourceService} from "core-app/modules/hal/services/hal-resource.service";
import {HalResourceService} from "core-app/features/hal/services/hal-resource.service";
@Injectable({ providedIn: 'root' })
export class OpenProjectBackupService {

@ -25,12 +25,11 @@
//
// See docs/COPYRIGHT.rdoc for more details.
//++
import { Injectable } from '@angular/core';
import { I18nService } from 'core-app/modules/common/i18n/i18n.service';
import { ConfigurationResource } from "core-app/modules/hal/resources/configuration-resource";
import { I18nService } from 'core-app/core/i18n/i18n.service';
import { ConfigurationResource } from "core-app/features/hal/resources/configuration-resource";
import * as moment from "moment";
import { APIV3Service } from "core-app/modules/apiv3/api-v3.service";
import { APIV3Service } from "core-app/core/apiv3/api-v3.service";
@Injectable({ providedIn: 'root' })
export class ConfigurationService {

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save