add transfer all button for admins
All checks were successful
Release / meta (push) Successful in 6s
Release / linux-build (push) Successful in 1m4s
Release / web-build (push) Successful in 2m47s
Release / android-build (push) Successful in 11m45s
Release / release-master (push) Successful in 26s
Release / release-dev (push) Successful in 30s
All checks were successful
Release / meta (push) Successful in 6s
Release / linux-build (push) Successful in 1m4s
Release / web-build (push) Successful in 2m47s
Release / android-build (push) Successful in 11m45s
Release / release-master (push) Successful in 26s
Release / release-dev (push) Successful in 30s
This commit is contained in:
@@ -15,6 +15,7 @@ class TractionPage extends StatefulWidget {
|
||||
this.replacementPendingLocoId,
|
||||
this.transferFromLabel,
|
||||
this.transferFromLocoId,
|
||||
this.transferAllAllocations = false,
|
||||
this.onSelect,
|
||||
this.selectedKeys = const {},
|
||||
});
|
||||
@@ -24,6 +25,7 @@ class TractionPage extends StatefulWidget {
|
||||
final int? replacementPendingLocoId;
|
||||
final String? transferFromLabel;
|
||||
final int? transferFromLocoId;
|
||||
final bool transferAllAllocations;
|
||||
final ValueChanged<LocoSummary>? onSelect;
|
||||
final Set<String> selectedKeys;
|
||||
|
||||
@@ -39,6 +41,12 @@ class _TractionPageState extends State<TractionPage> {
|
||||
bool _mileageFirst = true;
|
||||
bool _initialised = false;
|
||||
int? get _transferFromLocoId => widget.transferFromLocoId;
|
||||
bool get _transferAllAllocations {
|
||||
if (widget.transferAllAllocations) return true;
|
||||
final param =
|
||||
GoRouterState.of(context).uri.queryParameters['transferAll'];
|
||||
return param?.toLowerCase() == 'true' || param == '1';
|
||||
}
|
||||
bool _showAdvancedFilters = false;
|
||||
String? _selectedClass;
|
||||
late Set<String> _selectedKeys;
|
||||
@@ -1315,13 +1323,19 @@ class _TractionPageState extends State<TractionPage> {
|
||||
context: navContext,
|
||||
builder: (dialogContext) {
|
||||
return AlertDialog(
|
||||
title: const Text('Transfer allocations?'),
|
||||
title: Text(
|
||||
_transferAllAllocations
|
||||
? 'Transfer all allocations?'
|
||||
: 'Transfer allocations?',
|
||||
),
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Transfer all allocations from $fromLabel to $toLabel?',
|
||||
_transferAllAllocations
|
||||
? 'Transfer all user allocations from $fromLabel to $toLabel?'
|
||||
: 'Transfer all allocations from $fromLabel to $toLabel?',
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Text(
|
||||
@@ -1351,10 +1365,23 @@ class _TractionPageState extends State<TractionPage> {
|
||||
if (!navContext.mounted) return;
|
||||
try {
|
||||
final data = navContext.read<DataService>();
|
||||
await data.transferAllocations(fromLocoId: fromId, toLocoId: target.id);
|
||||
if (_transferAllAllocations) {
|
||||
await data.transferAllAllocations(
|
||||
fromLocoId: fromId,
|
||||
toLocoId: target.id,
|
||||
);
|
||||
} else {
|
||||
await data.transferAllocations(fromLocoId: fromId, toLocoId: target.id);
|
||||
}
|
||||
if (navContext.mounted) {
|
||||
messenger.showSnackBar(
|
||||
const SnackBar(content: Text('Allocations transferred')),
|
||||
SnackBar(
|
||||
content: Text(
|
||||
_transferAllAllocations
|
||||
? 'All allocations transferred'
|
||||
: 'Allocations transferred',
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
await _refreshTraction(preservePosition: true);
|
||||
@@ -1426,7 +1453,9 @@ class _TractionPageState extends State<TractionPage> {
|
||||
const SizedBox(width: 8),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Transferring allocations from $label. Select a loco to transfer to.',
|
||||
_transferAllAllocations
|
||||
? 'Transferring all allocations from $label. Select a loco to transfer to.'
|
||||
: 'Transferring allocations from $label. Select a loco to transfer to.',
|
||||
style: const TextStyle(fontWeight: FontWeight.w600),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user