Completed Sort Fields for Project model
This commit is contained in:
parent
bb1bdc1257
commit
c61f57ba31
|
|
@ -164,7 +164,12 @@ abstract class ProjectEntity extends Object
|
|||
return actions..addAll(super.getActions(userCompany: userCompany));
|
||||
}
|
||||
|
||||
int compareTo(ProjectEntity project, String sortField, bool sortAscending) {
|
||||
int compareTo(
|
||||
ProjectEntity project,
|
||||
String sortField,
|
||||
bool sortAscending,
|
||||
BuiltMap<String, UserEntity> userMap,
|
||||
BuiltMap<String, ClientEntity> clientMap) {
|
||||
int response = 0;
|
||||
final ProjectEntity projectA = sortAscending ? this : project;
|
||||
final ProjectEntity projectB = sortAscending ? project : this;
|
||||
|
|
@ -177,6 +182,53 @@ abstract class ProjectEntity extends Object
|
|||
case ProjectFields.taskRate:
|
||||
response = projectA.taskRate.compareTo(projectB.taskRate);
|
||||
break;
|
||||
case ProjectFields.client:
|
||||
final clientA = clientMap[projectA.clientId] ?? ClientEntity();
|
||||
final clientB = clientMap[projectB.clientId] ?? ClientEntity();
|
||||
response = clientA.listDisplayName
|
||||
.toLowerCase()
|
||||
.compareTo(clientB.listDisplayName.toLowerCase());
|
||||
break;
|
||||
case ProjectFields.dueDate:
|
||||
response = projectA.dueDate.compareTo(projectB.dueDate);
|
||||
break;
|
||||
case ProjectFields.privateNotes:
|
||||
response = projectA.privateNotes.compareTo(projectB.privateNotes);
|
||||
break;
|
||||
case ProjectFields.budgetedHours:
|
||||
response = projectA.budgetedHours.compareTo(projectB.budgetedHours);
|
||||
break;
|
||||
case EntityFields.state:
|
||||
final stateA =
|
||||
EntityState.valueOf(projectA.entityState) ?? EntityState.active;
|
||||
final stateB =
|
||||
EntityState.valueOf(projectB.entityState) ?? EntityState.active;
|
||||
response =
|
||||
stateA.name.toLowerCase().compareTo(stateB.name.toLowerCase());
|
||||
break;
|
||||
case EntityFields.createdAt:
|
||||
response = projectA.createdAt.compareTo(projectB.createdAt);
|
||||
break;
|
||||
case ProjectFields.archivedAt:
|
||||
response = projectA.archivedAt.compareTo(projectB.archivedAt);
|
||||
break;
|
||||
case ProjectFields.updatedAt:
|
||||
response = projectA.updatedAt.compareTo(projectB.updatedAt);
|
||||
break;
|
||||
case EntityFields.assignedTo:
|
||||
final userA = userMap[projectA.assignedUserId] ?? UserEntity();
|
||||
final userB = userMap[projectB.assignedUserId] ?? UserEntity();
|
||||
response = userA.listDisplayName
|
||||
.toLowerCase()
|
||||
.compareTo(userB.listDisplayName.toLowerCase());
|
||||
break;
|
||||
case EntityFields.createdBy:
|
||||
final userA = userMap[projectA.createdUserId] ?? UserEntity();
|
||||
final userB = userMap[projectB.createdUserId] ?? UserEntity();
|
||||
response = userA.listDisplayName
|
||||
.toLowerCase()
|
||||
.compareTo(userB.listDisplayName.toLowerCase());
|
||||
break;
|
||||
default:
|
||||
print('## ERROR: sort by project.$sortField is not implemented');
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -21,15 +21,20 @@ List<InvoiceItemEntity> convertProjectToInvoiceItem(
|
|||
return items;
|
||||
}
|
||||
|
||||
var memoizedDropdownProjectList = memo4(
|
||||
(BuiltMap<String, ProjectEntity> projectMap, BuiltList<String> projectList,
|
||||
BuiltMap<String, ClientEntity> clientMap, String clientId) =>
|
||||
dropdownProjectsSelector(projectMap, projectList, clientMap, clientId));
|
||||
var memoizedDropdownProjectList = memo5(
|
||||
(BuiltMap<String, ProjectEntity> projectMap,
|
||||
BuiltList<String> projectList,
|
||||
BuiltMap<String, ClientEntity> clientMap,
|
||||
BuiltMap<String, UserEntity> userMap,
|
||||
String clientId) =>
|
||||
dropdownProjectsSelector(
|
||||
projectMap, projectList, clientMap, userMap, clientId));
|
||||
|
||||
List<String> dropdownProjectsSelector(
|
||||
BuiltMap<String, ProjectEntity> projectMap,
|
||||
BuiltList<String> projectList,
|
||||
BuiltMap<String, ClientEntity> clientMap,
|
||||
BuiltMap<String, UserEntity> userMap,
|
||||
String clientId) {
|
||||
final list = projectList.where((projectId) {
|
||||
final project = projectMap[projectId];
|
||||
|
|
@ -49,25 +54,28 @@ List<String> dropdownProjectsSelector(
|
|||
list.sort((projectAId, projectBId) {
|
||||
final projectA = projectMap[projectAId];
|
||||
final projectB = projectMap[projectBId];
|
||||
return projectA.compareTo(projectB, ProjectFields.name, true);
|
||||
return projectA.compareTo(
|
||||
projectB, ProjectFields.name, true, userMap, clientMap);
|
||||
});
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
var memoizedFilteredProjectList = memo4(
|
||||
var memoizedFilteredProjectList = memo5(
|
||||
(BuiltMap<String, ProjectEntity> projectMap,
|
||||
BuiltList<String> projectList,
|
||||
ListUIState projectListState,
|
||||
BuiltMap<String, ClientEntity> clientMap) =>
|
||||
BuiltMap<String, ClientEntity> clientMap,
|
||||
BuiltMap<String, UserEntity> userMap) =>
|
||||
filteredProjectsSelector(
|
||||
projectMap, projectList, projectListState, clientMap));
|
||||
projectMap, projectList, projectListState, clientMap, userMap));
|
||||
|
||||
List<String> filteredProjectsSelector(
|
||||
BuiltMap<String, ProjectEntity> projectMap,
|
||||
BuiltList<String> projectList,
|
||||
ListUIState projectListState,
|
||||
BuiltMap<String, ClientEntity> clientMap) {
|
||||
BuiltMap<String, ClientEntity> clientMap,
|
||||
BuiltMap<String, UserEntity> userMap) {
|
||||
final list = projectList.where((projectId) {
|
||||
final project = projectMap[projectId];
|
||||
final client =
|
||||
|
|
@ -111,8 +119,8 @@ List<String> filteredProjectsSelector(
|
|||
list.sort((projectAId, projectBId) {
|
||||
final projectA = projectMap[projectAId];
|
||||
final projectB = projectMap[projectBId];
|
||||
return projectA.compareTo(
|
||||
projectB, projectListState.sortField, projectListState.sortAscending);
|
||||
return projectA.compareTo(projectB, projectListState.sortField,
|
||||
projectListState.sortAscending, userMap, clientMap);
|
||||
});
|
||||
|
||||
return list;
|
||||
|
|
|
|||
|
|
@ -124,7 +124,9 @@ class ProjectListVM {
|
|||
state.projectState.map,
|
||||
state.projectState.list,
|
||||
state.projectListState,
|
||||
state.clientState.map),
|
||||
state.clientState.map,
|
||||
state.userState.map,
|
||||
),
|
||||
projectMap: state.projectState.map,
|
||||
clientMap: state.clientState.map,
|
||||
isLoading: state.isLoading,
|
||||
|
|
|
|||
|
|
@ -48,7 +48,9 @@ class ProjectScreenVM {
|
|||
state.projectState.map,
|
||||
state.projectState.list,
|
||||
state.projectListState,
|
||||
state.clientState.map),
|
||||
state.clientState.map,
|
||||
state.userState.map,
|
||||
),
|
||||
userCompany: state.userCompany,
|
||||
isInMultiselect: state.projectListState.isInMultiselect(),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@ class _TaskEditDetailsState extends State<TaskEditDetails> {
|
|||
state.projectState.map,
|
||||
state.projectState.list,
|
||||
state.clientState.map,
|
||||
state.userState.map,
|
||||
task.clientId),
|
||||
onSelected: (selected) {
|
||||
final project = selected as ProjectEntity;
|
||||
|
|
|
|||
Loading…
Reference in New Issue