Improve number sorting
This commit is contained in:
parent
cc4bec2a38
commit
716dffb1e9
|
|
@ -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/redux/static/static_state.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/strings.dart';
|
import 'package:invoiceninja_flutter/utils/strings.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
|
|
||||||
part 'client_model.g.dart';
|
part 'client_model.g.dart';
|
||||||
|
|
||||||
|
|
@ -396,7 +397,8 @@ abstract class ClientEntity extends Object
|
||||||
response = clientA.idNumber.compareTo(clientB.idNumber);
|
response = clientA.idNumber.compareTo(clientB.idNumber);
|
||||||
break;
|
break;
|
||||||
case ClientFields.number:
|
case ClientFields.number:
|
||||||
response = clientA.number.compareTo(clientB.number);
|
response = compareNatural(
|
||||||
|
clientA.number.toLowerCase(), clientB.number.toLowerCase());
|
||||||
break;
|
break;
|
||||||
case ClientFields.website:
|
case ClientFields.website:
|
||||||
response = clientA.website
|
response = clientA.website
|
||||||
|
|
|
||||||
|
|
@ -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/redux/static/static_state.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/strings.dart';
|
import 'package:invoiceninja_flutter/utils/strings.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
|
|
||||||
part 'expense_model.g.dart';
|
part 'expense_model.g.dart';
|
||||||
|
|
||||||
|
|
@ -449,7 +450,8 @@ abstract class ExpenseEntity extends Object
|
||||||
expenseA.documents.length.compareTo(expenseB.documents.length);
|
expenseA.documents.length.compareTo(expenseB.documents.length);
|
||||||
break;
|
break;
|
||||||
case ExpenseFields.number:
|
case ExpenseFields.number:
|
||||||
response = expenseA.number.compareTo(expenseB.number);
|
response = compareNatural(
|
||||||
|
expenseA.number.toLowerCase(), expenseB.number.toLowerCase());
|
||||||
break;
|
break;
|
||||||
case ExpenseFields.privateNotes:
|
case ExpenseFields.privateNotes:
|
||||||
response = expenseA.privateNotes.compareTo(expenseB.privateNotes);
|
response = expenseA.privateNotes.compareTo(expenseB.privateNotes);
|
||||||
|
|
|
||||||
|
|
@ -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/formatting.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/money.dart';
|
import 'package:invoiceninja_flutter/utils/money.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/strings.dart';
|
import 'package:invoiceninja_flutter/utils/strings.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
|
|
||||||
part 'invoice_model.g.dart';
|
part 'invoice_model.g.dart';
|
||||||
|
|
||||||
|
|
@ -556,9 +557,8 @@ abstract class InvoiceEntity extends Object
|
||||||
invoiceBNumber.startsWith(recurringPrefix)
|
invoiceBNumber.startsWith(recurringPrefix)
|
||||||
? invoiceBNumber.replaceFirst(recurringPrefix, '')
|
? invoiceBNumber.replaceFirst(recurringPrefix, '')
|
||||||
: invoiceBNumber;
|
: invoiceBNumber;
|
||||||
response = invoiceANumber
|
response = compareNatural(
|
||||||
.toLowerCase()
|
invoiceANumber.toLowerCase(), invoiceBNumber.toLowerCase());
|
||||||
.compareTo(invoiceBNumber.toLowerCase());
|
|
||||||
break;
|
break;
|
||||||
case InvoiceFields.amount:
|
case InvoiceFields.amount:
|
||||||
response = invoiceA.amount.compareTo(invoiceB.amount);
|
response = invoiceA.amount.compareTo(invoiceB.amount);
|
||||||
|
|
|
||||||
|
|
@ -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/redux/task_status/task_status_selectors.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/strings.dart';
|
import 'package:invoiceninja_flutter/utils/strings.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
|
|
||||||
part 'task_model.g.dart';
|
part 'task_model.g.dart';
|
||||||
|
|
||||||
|
|
@ -665,7 +666,8 @@ abstract class TaskEntity extends Object
|
||||||
response = taskA.documents.length.compareTo(taskB.documents.length);
|
response = taskA.documents.length.compareTo(taskB.documents.length);
|
||||||
break;
|
break;
|
||||||
case TaskFields.number:
|
case TaskFields.number:
|
||||||
response = taskA.number.compareTo(taskB.number);
|
response = compareNatural(
|
||||||
|
taskA.number.toLowerCase(), taskB.number.toLowerCase());
|
||||||
break;
|
break;
|
||||||
case TaskFields.status:
|
case TaskFields.status:
|
||||||
final taskAStatus = taskA.isRunning
|
final taskAStatus = taskA.isRunning
|
||||||
|
|
|
||||||
|
|
@ -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/redux/static/static_state.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/strings.dart';
|
import 'package:invoiceninja_flutter/utils/strings.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
|
|
||||||
part 'vendor_model.g.dart';
|
part 'vendor_model.g.dart';
|
||||||
|
|
||||||
|
|
@ -264,7 +265,8 @@ abstract class VendorEntity extends Object
|
||||||
response = vendorA.documents.length.compareTo(vendorB.documents.length);
|
response = vendorA.documents.length.compareTo(vendorB.documents.length);
|
||||||
break;
|
break;
|
||||||
case VendorFields.number:
|
case VendorFields.number:
|
||||||
response = vendorA.number.compareTo(vendorB.number);
|
response = compareNatural(
|
||||||
|
vendorA.number.toLowerCase(), vendorB.number.toLowerCase());
|
||||||
break;
|
break;
|
||||||
case VendorFields.address1:
|
case VendorFields.address1:
|
||||||
response = vendorA.address1.compareTo(vendorB.address1);
|
response = vendorA.address1.compareTo(vendorB.address1);
|
||||||
|
|
|
||||||
|
|
@ -170,6 +170,7 @@ class ClientEditDetailsState extends State<ClientEditDetails> {
|
||||||
DecoratedFormField(
|
DecoratedFormField(
|
||||||
label: localization.number,
|
label: localization.number,
|
||||||
controller: _numberController,
|
controller: _numberController,
|
||||||
|
onSavePressed: viewModel.onSavePressed,
|
||||||
),
|
),
|
||||||
if (memoizedGroupList(state.groupState.map).isNotEmpty)
|
if (memoizedGroupList(state.groupState.map).isNotEmpty)
|
||||||
DynamicSelector(
|
DynamicSelector(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue