@@ -6,12 +6,12 @@ import 'package:ht_dashboard/content_management/bloc/content_management_bloc.dar
66import 'package:ht_dashboard/l10n/app_localizations.dart' ; // Corrected import
77import 'package:ht_dashboard/l10n/l10n.dart' ;
88import 'package:ht_dashboard/router/routes.dart' ;
9- import 'package:ht_dashboard/shared/constants/pagination_constants.dart' ;
109import 'package:ht_dashboard/shared/constants/app_spacing.dart' ;
1110import 'package:ht_dashboard/shared/utils/date_formatter.dart' ;
1211import 'package:ht_dashboard/shared/widgets/failure_state_widget.dart' ;
1312import 'package:ht_dashboard/shared/widgets/loading_state_widget.dart' ;
1413import '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