diff --git a/frontend/app/components/wp-buttons/wp-inline-create-button/wp-inline-create-button.controller.ts b/frontend/app/components/wp-buttons/wp-inline-create-button/wp-inline-create-button.controller.ts index 41e8338c7f..009ec83d8a 100644 --- a/frontend/app/components/wp-buttons/wp-inline-create-button/wp-inline-create-button.controller.ts +++ b/frontend/app/components/wp-buttons/wp-inline-create-button/wp-inline-create-button.controller.ts @@ -28,16 +28,13 @@ import {wpButtonsModule} from '../../../angular-modules'; import WorkPackageCreateButtonController from '../wp-create-button/wp-create-button.controller'; -import {HalResource} from "../../api/api-v3/hal-resources/hal-resource.service"; +import {WorkPackageCreateService} from "../../wp-create/wp-create.service"; class WorkPackageInlineCreateButtonController extends WorkPackageCreateButtonController { public query: op.Query; public rows:any[]; public hidden:boolean = false; - // Template create form - protected form: HalResource; - private _wp; constructor( @@ -47,8 +44,7 @@ class WorkPackageInlineCreateButtonController extends WorkPackageCreateButtonCon protected $element, protected FocusHelper, protected I18n, - protected WorkPackageResource, - protected apiWorkPackages + protected wpCreate:WorkPackageCreateService ) { super($state, I18n); @@ -59,7 +55,7 @@ class WorkPackageInlineCreateButtonController extends WorkPackageCreateButtonCon }); // Need to reset the state when the work package is refreshed hard - $rootScope.$on('workPackagesRefreshRequired', _ => { + $rootScope.$on('workPackagesRefreshRequired', () => { this.show(); }); @@ -73,8 +69,8 @@ class WorkPackageInlineCreateButtonController extends WorkPackageCreateButtonCon } public addWorkPackageRow() { - this.getForm().then(form => { - this._wp = this.WorkPackageResource.fromCreateForm(form); + this.wpCreate.getNewWorkPackage().then(wp => { + this._wp = wp; this._wp.inlineCreated = true; this.query.applyDefaultsFromFilters(this._wp); @@ -90,15 +86,6 @@ class WorkPackageInlineCreateButtonController extends WorkPackageCreateButtonCon public show() { return this.hidden = false; } - - private getForm() { - if (!this.form) { - this.form = this.apiWorkPackages.emptyCreateForm(this.projectIdentifier); - } - - return this.form; - } - } wpButtonsModule.controller( diff --git a/frontend/app/components/wp-create/wp-create.service.ts b/frontend/app/components/wp-create/wp-create.service.ts new file mode 100644 index 0000000000..fea347be51 --- /dev/null +++ b/frontend/app/components/wp-create/wp-create.service.ts @@ -0,0 +1,56 @@ +// -- copyright +// OpenProject is a project management system. +// Copyright (C) 2012-2015 the OpenProject Foundation (OPF) +// +// 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 doc/COPYRIGHT.rdoc for more details. +// ++ + +import {wpServicesModule} from "../../angular-modules"; +import {WorkPackageResource} from "../api/api-v3/hal-resources/work-package-resource.service"; +import {ApiWorkPackagesService} from "../api/api-work-packages/api-work-packages.service"; +import {HalResource} from "../api/api-v3/hal-resources/hal-resource.service"; + +export class WorkPackageCreateService { + protected form:HalResource; + + constructor(protected WorkPackageResource:typeof WorkPackageResource, + protected apiWorkPackages:ApiWorkPackagesService) { + } + + public getNewWorkPackage(projectIdentifier):ng.IPromise { + return this.getForm(projectIdentifier).then(form => { + return this.WorkPackageResource.fromCreateForm(form); + }); + } + + private getForm(projectIdentifier):ng.IPromise { + if (!this.form) { + this.form = this.apiWorkPackages.emptyCreateForm(projectIdentifier); + } + + return this.form; + } +} + +wpServicesModule.service('wpCreate', WorkPackageCreateService);