diff --git a/frontend/src/app/shared/components/grids/openproject-grids.module.ts b/frontend/src/app/shared/components/grids/openproject-grids.module.ts
index 170920750df..70400628687 100644
--- a/frontend/src/app/shared/components/grids/openproject-grids.module.ts
+++ b/frontend/src/app/shared/components/grids/openproject-grids.module.ts
@@ -71,9 +71,6 @@ import { WidgetMembersComponent } from 'core-app/shared/components/grids/widgets
import {
WidgetProjectStatusComponent,
} from 'core-app/shared/components/grids/widgets/project-status/project-status.component';
-import {
- WidgetProjectStatusBetaComponent,
-} from 'core-app/shared/components/grids/widgets/project-status-beta/project-status-beta.component';
import { OpenprojectTimeEntriesModule } from 'core-app/shared/components/time_entries/openproject-time-entries.module';
import {
WidgetTimeEntriesCurrentUserMenuComponent,
@@ -127,7 +124,6 @@ import { OpenprojectEnterpriseModule } from 'core-app/features/enterprise/openpr
WidgetWpGraphComponent,
WidgetProjectDescriptionComponent,
WidgetProjectStatusComponent,
- WidgetProjectStatusBetaComponent,
WidgetSubprojectsComponent,
WidgetProjectFavoritesComponent,
WidgetTimeEntriesCurrentUserComponent,
diff --git a/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.html b/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.html
deleted file mode 100644
index 1d0e28d6a65..00000000000
--- a/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.ts b/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.ts
deleted file mode 100644
index f5992b3195a..00000000000
--- a/frontend/src/app/shared/components/grids/widgets/project-status-beta/project-status-beta.component.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-//-- copyright
-// OpenProject is an open source project management software.
-// Copyright (C) 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 COPYRIGHT and LICENSE files for more details.
-//++
-
-import { ChangeDetectionStrategy, Component } from '@angular/core';
-import { AbstractTurboWidgetComponent } from 'core-app/shared/components/grids/widgets/abstract-turbo-widget.component';
-
-@Component({
- selector: 'op-project-status-beta-widget',
- templateUrl: './project-status-beta.component.html',
- changeDetection: ChangeDetectionStrategy.OnPush,
- standalone: false,
-})
-export class WidgetProjectStatusBetaComponent extends AbstractTurboWidgetComponent {
- override frameId = 'grids-widgets-project-status';
- override name = 'project_status';
-}
diff --git a/frontend/src/app/shared/components/grids/widgets/project-status/project-status.component.html b/frontend/src/app/shared/components/grids/widgets/project-status/project-status.component.html
index ed6369a633b..1d0e28d6a65 100644
--- a/frontend/src/app/shared/components/grids/widgets/project-status/project-status.component.html
+++ b/frontend/src/app/shared/components/grids/widgets/project-status/project-status.component.html
@@ -3,25 +3,11 @@
[editable]="isEditable">
+ attribute="status"
+ [attributeScope]="'Project'" />
-
- @if ((project$ | async); as project) {
-
-
-
-
-
-
-
-
- }
-
+
diff --git a/frontend/src/app/shared/components/grids/widgets/project-status/project-status.component.ts b/frontend/src/app/shared/components/grids/widgets/project-status/project-status.component.ts
index e70b532d8e9..43b15167193 100644
--- a/frontend/src/app/shared/components/grids/widgets/project-status/project-status.component.ts
+++ b/frontend/src/app/shared/components/grids/widgets/project-status/project-status.component.ts
@@ -26,64 +26,16 @@
// See COPYRIGHT and LICENSE files for more details.
//++
-import {
- ChangeDetectionStrategy,
- ChangeDetectorRef,
- Component,
- ElementRef,
- Injector,
- OnInit,
- ViewChild,
-} from '@angular/core';
-import { AbstractWidgetComponent } from 'core-app/shared/components/grids/widgets/abstract-widget.component';
-import { I18nService } from 'core-app/core/i18n/i18n.service';
-import { CurrentProjectService } from 'core-app/core/current-project/current-project.service';
-import { ProjectResource } from 'core-app/features/hal/resources/project-resource';
-import { WorkPackageViewHighlightingService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-highlighting.service';
-import { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space';
-import { Observable } from 'rxjs';
-import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service';
-import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service';
+import { ChangeDetectionStrategy, Component } from '@angular/core';
+import { AbstractTurboWidgetComponent } from 'core-app/shared/components/grids/widgets/abstract-turbo-widget.component';
@Component({
+ selector: 'op-project-status-widget',
templateUrl: './project-status.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
- providers: [
- WorkPackageViewHighlightingService,
- IsolatedQuerySpace,
- HalResourceEditingService,
- ],
standalone: false,
})
-export class WidgetProjectStatusComponent extends AbstractWidgetComponent implements OnInit {
- @ViewChild('contentContainer', { static: true }) readonly contentContainer:ElementRef;
-
- public currentStatusCode = 'not set';
-
- public explanation = '';
-
- public project$:Observable;
-
- constructor(protected readonly i18n:I18nService,
- protected readonly injector:Injector,
- protected readonly apiV3Service:ApiV3Service,
- protected readonly currentProject:CurrentProjectService,
- protected readonly cdRef:ChangeDetectorRef) {
- super(i18n, injector);
- }
-
- ngOnInit():void {
- if (this.currentProject.id) {
- this.project$ = this
- .apiV3Service
- .projects
- .id(this.currentProject.id)
- .get();
- this.cdRef.detectChanges();
- }
- }
-
- public get isEditable():boolean {
- return false;
- }
+export class WidgetProjectStatusComponent extends AbstractTurboWidgetComponent {
+ override frameId = 'grids-widgets-project-status';
+ override name = 'project_status';
}
diff --git a/frontend/src/app/shared/components/grids/widgets/widgets.service.ts b/frontend/src/app/shared/components/grids/widgets/widgets.service.ts
index ab2b465f402..22092b1fe25 100644
--- a/frontend/src/app/shared/components/grids/widgets/widgets.service.ts
+++ b/frontend/src/app/shared/components/grids/widgets/widgets.service.ts
@@ -24,9 +24,6 @@ import { WidgetCustomTextComponent } from 'core-app/shared/components/grids/widg
import {
WidgetProjectStatusComponent,
} from 'core-app/shared/components/grids/widgets/project-status/project-status.component';
-import {
- WidgetProjectStatusBetaComponent,
-} from 'core-app/shared/components/grids/widgets/project-status-beta/project-status-beta.component';
import { WidgetSubprojectsComponent } from 'core-app/shared/components/grids/widgets/subprojects/subprojects.component';
import {
WidgetProjectFavoritesComponent,
@@ -230,14 +227,6 @@ export class GridWidgetsService {
name: this.I18n.t('js.grid.widgets.project_status.title'),
},
},
- {
- identifier: 'project_status_beta',
- component: WidgetProjectStatusBetaComponent,
- title: this.I18n.t('js.grid.widgets.project_status_beta.title'),
- properties: {
- name: this.I18n.t('js.grid.widgets.project_status_beta.title'),
- },
- },
{
identifier: 'subprojects',
component: WidgetSubprojectsComponent,
diff --git a/modules/grids/config/locales/js-en.yml b/modules/grids/config/locales/js-en.yml
index 687b4ded2fc..0086ad71a69 100644
--- a/modules/grids/config/locales/js-en.yml
+++ b/modules/grids/config/locales/js-en.yml
@@ -27,8 +27,6 @@ en:
not_set: 'Not set'
finished: 'Finished'
discontinued: 'Discontinued'
- project_status_beta:
- title: 'Status (BETA)'
subprojects:
title: 'Subitems'
project_favorites:
diff --git a/modules/grids/lib/grids/configuration/in_project_base_registration.rb b/modules/grids/lib/grids/configuration/in_project_base_registration.rb
index 675d3abdcdb..d57d685d218 100644
--- a/modules/grids/lib/grids/configuration/in_project_base_registration.rb
+++ b/modules/grids/lib/grids/configuration/in_project_base_registration.rb
@@ -4,7 +4,6 @@ module Grids::Configuration
"work_packages_graph",
"project_description",
"project_status",
- "project_status_beta",
"subprojects",
"work_packages_calendar",
"work_packages_overview",
@@ -27,10 +26,6 @@ module Grids::Configuration
user.allowed_in_any_work_package?(:view_work_packages, in_project: project)
}
- view_beta_widgets = ->(_user, _project) {
- OpenProject::FeatureDecisions.beta_widgets_active?
- }
-
widget_strategy "work_packages_table" do
after_destroy remove_query_lambda
@@ -47,10 +42,6 @@ module Grids::Configuration
options_representer "::API::V3::Grids::Widgets::ChartOptionsRepresenter"
end
- widget_strategy "project_status_beta" do
- allowed view_beta_widgets
- end
-
widget_strategy "custom_text" do
options_representer "::API::V3::Grids::Widgets::CustomTextOptionsRepresenter"
end
diff --git a/modules/overviews/db/migrate/20260129120330_remove_status_beta_widgets.rb b/modules/overviews/db/migrate/20260129120330_remove_status_beta_widgets.rb
new file mode 100644
index 00000000000..9eebb2bcfce
--- /dev/null
+++ b/modules/overviews/db/migrate/20260129120330_remove_status_beta_widgets.rb
@@ -0,0 +1,48 @@
+# frozen_string_literal: true
+
+# -- copyright
+# OpenProject is an open source project management software.
+# Copyright (C) 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 COPYRIGHT and LICENSE files for more details.
+# ++
+
+class RemoveStatusBetaWidgets < ActiveRecord::Migration[8.0]
+ def up
+ remove_status_beta_widgets
+ end
+
+ def down
+ raise ActiveRecord::IrreversibleMigration
+ end
+
+ private
+
+ def remove_status_beta_widgets
+ execute <<-SQL.squish
+ DELETE FROM grid_widgets
+ WHERE identifier = 'project_status_beta'
+ SQL
+ end
+end