Improve number sorting

This commit is contained in:
Hillel Coren 2021-09-23 14:50:04 +03:00
parent cc4bec2a38
commit 716dffb1e9
6 changed files with 16 additions and 7 deletions

View File

@ -14,6 +14,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/static/static_state.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/strings.dart';
import 'package:collection/collection.dart';
part 'client_model.g.dart';
@ -396,7 +397,8 @@ abstract class ClientEntity extends Object
response = clientA.idNumber.compareTo(clientB.idNumber);
break;
case ClientFields.number:
response = clientA.number.compareTo(clientB.number);
response = compareNatural(
clientA.number.toLowerCase(), clientB.number.toLowerCase());
break;
case ClientFields.website:
response = clientA.website

View File

@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/static/static_state.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/strings.dart';
import 'package:collection/collection.dart';
part 'expense_model.g.dart';
@ -449,7 +450,8 @@ abstract class ExpenseEntity extends Object
expenseA.documents.length.compareTo(expenseB.documents.length);
break;
case ExpenseFields.number:
response = expenseA.number.compareTo(expenseB.number);
response = compareNatural(
expenseA.number.toLowerCase(), expenseB.number.toLowerCase());
break;
case ExpenseFields.privateNotes:
response = expenseA.privateNotes.compareTo(expenseB.privateNotes);

View File

@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/money.dart';
import 'package:invoiceninja_flutter/utils/strings.dart';
import 'package:collection/collection.dart';
part 'invoice_model.g.dart';
@ -556,9 +557,8 @@ abstract class InvoiceEntity extends Object
invoiceBNumber.startsWith(recurringPrefix)
? invoiceBNumber.replaceFirst(recurringPrefix, '')
: invoiceBNumber;
response = invoiceANumber
.toLowerCase()
.compareTo(invoiceBNumber.toLowerCase());
response = compareNatural(
invoiceANumber.toLowerCase(), invoiceBNumber.toLowerCase());
break;
case InvoiceFields.amount:
response = invoiceA.amount.compareTo(invoiceB.amount);

View File

@ -11,6 +11,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/task_status/task_status_selectors.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/strings.dart';
import 'package:collection/collection.dart';
part 'task_model.g.dart';
@ -665,7 +666,8 @@ abstract class TaskEntity extends Object
response = taskA.documents.length.compareTo(taskB.documents.length);
break;
case TaskFields.number:
response = taskA.number.compareTo(taskB.number);
response = compareNatural(
taskA.number.toLowerCase(), taskB.number.toLowerCase());
break;
case TaskFields.status:
final taskAStatus = taskA.isRunning

View File

@ -7,6 +7,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/static/static_state.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/strings.dart';
import 'package:collection/collection.dart';
part 'vendor_model.g.dart';
@ -264,7 +265,8 @@ abstract class VendorEntity extends Object
response = vendorA.documents.length.compareTo(vendorB.documents.length);
break;
case VendorFields.number:
response = vendorA.number.compareTo(vendorB.number);
response = compareNatural(
vendorA.number.toLowerCase(), vendorB.number.toLowerCase());
break;
case VendorFields.address1:
response = vendorA.address1.compareTo(vendorB.address1);

View File

@ -170,6 +170,7 @@ class ClientEditDetailsState extends State<ClientEditDetails> {
DecoratedFormField(
label: localization.number,
controller: _numberController,
onSavePressed: viewModel.onSavePressed,
),
if (memoizedGroupList(state.groupState.map).isNotEmpty)
DynamicSelector(