Sort Order not in line with database sort order #377

This commit is contained in:
Hillel Coren 2021-11-29 16:56:10 +02:00
parent 02c11d1ae5
commit e8c8e63bf3
10 changed files with 38 additions and 18 deletions

View File

@ -6,6 +6,7 @@ import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
import 'package:collection/collection.dart';
import 'package:diacritic/diacritic.dart';
// Project imports:
import 'package:invoiceninja_flutter/constants.dart';
@ -385,14 +386,15 @@ abstract class ClientEntity extends Object
switch (sortField) {
case ClientFields.name:
response = clientA.displayName
response = removeDiacritics(clientA.displayName)
.toLowerCase()
.compareTo(clientB.displayName.toLowerCase());
.compareTo(removeDiacritics(clientB.displayName).toLowerCase());
break;
case ClientFields.contactName:
response = clientA.primaryContact.fullName
response = removeDiacritics(clientA.primaryContact.fullName)
.toLowerCase()
.compareTo(clientB.primaryContact.fullName.toLowerCase());
.compareTo(removeDiacritics(clientB.primaryContact.fullName)
.toLowerCase());
break;
case ClientFields.contactEmail:
response = clientA.primaryContact.email

View File

@ -3,6 +3,7 @@ import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
import 'package:collection/collection.dart';
import 'package:diacritic/diacritic.dart';
// Project imports:
import 'package:invoiceninja_flutter/constants.dart';
@ -412,17 +413,17 @@ abstract class ExpenseEntity extends Object
case ExpenseFields.client:
final clientA = clientMap[expenseA.clientId] ?? ClientEntity();
final clientB = clientMap[expenseB.clientId] ?? ClientEntity();
response = clientA.listDisplayName
response = removeDiacritics(clientA.listDisplayName)
.toLowerCase()
.compareTo(clientB.listDisplayName.toLowerCase());
.compareTo(removeDiacritics(clientB.listDisplayName).toLowerCase());
break;
case ExpenseFields.vendorId:
case ExpenseFields.vendor:
final vendorA = vendorMap[expenseA.vendorId] ?? VendorEntity();
final vendorB = vendorMap[expenseB.vendorId] ?? VendorEntity();
response = vendorA.listDisplayName
response = removeDiacritics(vendorA.listDisplayName)
.toLowerCase()
.compareTo(vendorB.listDisplayName.toLowerCase());
.compareTo(removeDiacritics(vendorB.listDisplayName).toLowerCase());
break;
case EntityFields.state:
final stateA =

View File

@ -3,6 +3,7 @@ import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
import 'package:collection/collection.dart';
import 'package:diacritic/diacritic.dart';
// Project imports:
import 'package:invoiceninja_flutter/constants.dart';
@ -609,8 +610,10 @@ abstract class InvoiceEntity extends Object
final InvoiceEntity invoiceB = sortAscending ? invoice : this;
switch (sortField) {
case InvoiceFields.number:
var invoiceANumber = invoiceA.number ?? '';
var invoiceBNumber = invoiceB.number ?? '';
var invoiceANumber =
(invoiceA.number ?? '').isEmpty ? 'ZZZZZZZZZZ' : invoiceA.number;
var invoiceBNumber =
(invoiceB.number ?? '').isEmpty ? 'ZZZZZZZZZZ' : invoiceB.number;
invoiceANumber = recurringPrefix.isNotEmpty &&
//(invoiceA.recurringId ?? '').isNotEmpty &&
invoiceANumber.startsWith(recurringPrefix)
@ -734,9 +737,9 @@ abstract class InvoiceEntity extends Object
case InvoiceFields.client:
final clientA = clientMap[invoiceA.clientId] ?? ClientEntity();
final clientB = clientMap[invoiceB.clientId] ?? ClientEntity();
response = clientA.listDisplayName
response = removeDiacritics(clientA.listDisplayName)
.toLowerCase()
.compareTo(clientB.listDisplayName.toLowerCase());
.compareTo(removeDiacritics(clientB.listDisplayName).toLowerCase());
break;
case InvoiceFields.isViewed:
response = invoiceB.isViewed ? 1 : -1;

View File

@ -2,6 +2,7 @@
import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
import 'package:diacritic/diacritic.dart';
// Project imports:
import 'package:invoiceninja_flutter/data/models/entities.dart';
@ -220,9 +221,9 @@ abstract class ProjectEntity extends Object
case ProjectFields.client:
final clientA = clientMap[projectA.clientId] ?? ClientEntity();
final clientB = clientMap[projectB.clientId] ?? ClientEntity();
response = clientA.listDisplayName
response = removeDiacritics(clientA.listDisplayName)
.toLowerCase()
.compareTo(clientB.listDisplayName.toLowerCase());
.compareTo(removeDiacritics(clientB.listDisplayName).toLowerCase());
break;
case ProjectFields.clientNumber:
final clientA = clientMap[projectA.clientId] ?? ClientEntity();

View File

@ -6,6 +6,7 @@ import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
import 'package:collection/collection.dart';
import 'package:diacritic/diacritic.dart';
// Project imports:
import 'package:invoiceninja_flutter/constants.dart';
@ -629,9 +630,9 @@ abstract class TaskEntity extends Object
case TaskFields.client:
final clientA = clientMap[taskA.clientId] ?? ClientEntity();
final clientB = clientMap[taskB.clientId] ?? ClientEntity();
response = clientA.listDisplayName
response = removeDiacritics(clientA.listDisplayName)
.toLowerCase()
.compareTo(clientB.listDisplayName.toLowerCase());
.compareTo(removeDiacritics(clientB.listDisplayName).toLowerCase());
break;
case TaskFields.projectId:
case TaskFields.project:

View File

@ -3,6 +3,7 @@ import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
import 'package:collection/collection.dart';
import 'package:diacritic/diacritic.dart';
// Project imports:
import 'package:invoiceninja_flutter/data/models/entities.dart';
@ -223,8 +224,9 @@ abstract class VendorEntity extends Object
switch (sortField) {
case VendorFields.name:
response =
vendorA.name.toLowerCase().compareTo(vendorB.name.toLowerCase());
response = removeDiacritics(vendorA.name)
.toLowerCase()
.compareTo(removeDiacritics(vendorB.name).toLowerCase());
break;
case VendorFields.city:
response =

View File

@ -57,6 +57,7 @@ dependencies:
pointer_interceptor: ^0.9.0
contacts_service: ^0.6.1
super_editor: ^0.1.0
diacritic: ^0.1.3
# quick_actions: ^0.2.1
# idb_shim: ^1.11.1+1

View File

@ -274,6 +274,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
diacritic:
dependency: "direct main"
description:
name: diacritic
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.3"
extension:
dependency: transitive
description:

View File

@ -57,6 +57,7 @@ dependencies:
pointer_interceptor: ^0.9.0
contacts_service: ^0.6.1
super_editor: ^0.1.0
diacritic: ^0.1.3
# quick_actions: ^0.2.1
# idb_shim: ^1.11.1+1

View File

@ -57,6 +57,7 @@ dependencies:
pointer_interceptor: ^0.9.0
contacts_service: ^0.6.1
super_editor: ^0.1.0
diacritic: ^0.1.3
# quick_actions: ^0.2.1
# idb_shim: ^1.11.1+1