Skip to content

Commit 834b2ac

Browse files
committed
feat: adds the DropdownButtonFormField for ContentStatus to the EditHeadlinePage UI. This allows administrators to view and modify the status of an existing headline.
1 parent 52be023 commit 834b2ac

File tree

1 file changed

+31
-8
lines changed

1 file changed

+31
-8
lines changed

lib/content_management/view/headlines_page.dart

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import 'package:ht_dashboard/content_management/bloc/content_management_bloc.dar
66
import 'package:ht_dashboard/l10n/app_localizations.dart'; // Corrected import
77
import 'package:ht_dashboard/l10n/l10n.dart';
88
import 'package:ht_dashboard/router/routes.dart';
9-
import 'package:ht_dashboard/shared/constants/pagination_constants.dart';
109
import 'package:ht_dashboard/shared/constants/app_spacing.dart';
1110
import 'package:ht_dashboard/shared/utils/date_formatter.dart';
1211
import 'package:ht_dashboard/shared/widgets/failure_state_widget.dart';
1312
import 'package:ht_dashboard/shared/widgets/loading_state_widget.dart';
1413
import 'package:ht_shared/ht_shared.dart';
14+
import 'package:ht_dashboard/shared/constants/pagination_constants.dart';
1515

1616
/// {@template headlines_page}
1717
/// A page for displaying and managing Headlines in a tabular format.
@@ -75,18 +75,24 @@ class _HeadlinesPageState extends State<HeadlinesPage> {
7575
size: ColumnSize.M,
7676
),
7777
DataColumn2(
78-
label: Text(l10n.publishedAt),
78+
label: Text(l10n.status),
7979
size: ColumnSize.S,
8080
),
81+
DataColumn2(
82+
label: Text(l10n.lastUpdated),
83+
size: ColumnSize.M,
84+
),
8185
DataColumn2(
8286
label: Text(l10n.actions),
8387
size: ColumnSize.S,
88+
fixedWidth: 120,
8489
),
8590
],
8691
source: _HeadlinesDataSource(
8792
context: context,
8893
headlines: state.headlines,
89-
isLoading: state.headlinesStatus == ContentManagementStatus.loading,
94+
isLoading:
95+
state.headlinesStatus == ContentManagementStatus.loading,
9096
hasMore: state.headlinesHasMore,
9197
l10n: l10n,
9298
),
@@ -142,23 +148,38 @@ class _HeadlinesDataSource extends DataTableSource {
142148
// If we are loading, show a spinner. Otherwise, we've reached the end.
143149
if (isLoading) {
144150
return DataRow2(
145-
cells: List.generate(4, (_) => const DataCell(Center(child: CircularProgressIndicator()))),
151+
cells: List.generate(
152+
5,
153+
(_) => const DataCell(Center(child: CircularProgressIndicator())),
154+
),
146155
);
147156
}
148157
return null;
149158
}
150159
final headline = headlines[index];
151160
return DataRow2(
161+
onSelectChanged: (selected) {
162+
if (selected ?? false) {
163+
context.goNamed(
164+
Routes.editHeadlineName,
165+
pathParameters: {'id': headline.id},
166+
);
167+
}
168+
},
152169
cells: [
153170
DataCell(Text(headline.title)),
154171
DataCell(Text(headline.source?.name ?? l10n.unknown)),
155172
DataCell(
156173
Text(
157-
headline.publishedAt != null
158-
? DateFormatter.formatDate(headline.publishedAt!)
159-
: l10n.unknown,
174+
headline.status.name.replaceFirst(
175+
headline.status.name[0],
176+
headline.status.name[0].toUpperCase(),
177+
),
160178
),
161179
),
180+
DataCell(
181+
Text(headline.updatedAt?.toLocal().toString() ?? l10n.notAvailable),
182+
),
162183
DataCell(
163184
Row(
164185
children: [
@@ -199,7 +220,9 @@ class _HeadlinesDataSource extends DataTableSource {
199220
if (hasMore) {
200221
// When loading, we show an extra row for the spinner.
201222
// Otherwise, we just indicate that there are more rows.
202-
return isLoading ? headlines.length + 1 : headlines.length + kDefaultRowsPerPage;
223+
return isLoading
224+
? headlines.length + 1
225+
: headlines.length + kDefaultRowsPerPage;
203226
}
204227
return headlines.length;
205228
}

0 commit comments

Comments
 (0)