mirror of
https://github.com/go-vikunja/app
synced 2024-06-06 12:39:51 +00:00
extended functionality of TaskServiceOptions
now supports different sortings, list and more
This commit is contained in:
parent
a94c96ebe1
commit
644ebbd13f
|
@ -1,5 +1,5 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'dart:developer';
|
||||
import 'package:vikunja_app/models/list.dart';
|
||||
import 'package:vikunja_app/models/namespace.dart';
|
||||
import 'package:vikunja_app/models/task.dart';
|
||||
|
@ -7,31 +7,41 @@ import 'package:vikunja_app/models/user.dart';
|
|||
|
||||
enum TaskServiceOptionSortBy {id, title, description, done, done_at, due_date, created_by_id, list_id, repeat_after, priority, start_date, end_date, hex_color, percent_done, uid, created, updated}
|
||||
enum TaskServiceOptionOrderBy {asc,desc}
|
||||
enum TaskServiceOptionFilterBy {done}
|
||||
enum TaskServiceOptionFilterBy {done, due_date}
|
||||
enum TaskServiceOptionFilterValue {enum_true,enum_false}
|
||||
enum TaskServiceOptionFilterComparator {equals, greater, greater_equals, less, less_equals, like, enum_in}
|
||||
enum TaskServiceOptionFilterConcat {and, or}
|
||||
|
||||
|
||||
class TaskServiceOption<T> {
|
||||
String name;
|
||||
List<T> possibleValues;
|
||||
dynamic value;
|
||||
dynamic defValue;
|
||||
TaskServiceOption(
|
||||
this.name,
|
||||
this.possibleValues,
|
||||
this.value
|
||||
);
|
||||
String getValue() {
|
||||
return value.toString().split('.').last.replaceAll('enum_', '');
|
||||
String handleValue(dynamic input) {
|
||||
if(input is String)
|
||||
return input;
|
||||
return input.toString().split('.').last.replaceAll('enum_', '');
|
||||
}
|
||||
dynamic getValue() {
|
||||
if(value is List)
|
||||
return value.map((elem) => handleValue(elem)).toList();
|
||||
else
|
||||
return handleValue(value);
|
||||
}
|
||||
}
|
||||
|
||||
class TaskServiceOptions {
|
||||
List<TaskServiceOption> options = [
|
||||
TaskServiceOption<TaskServiceOptionSortBy>("sort_by",TaskServiceOptionSortBy.values, TaskServiceOptionSortBy.due_date),
|
||||
TaskServiceOption<TaskServiceOptionOrderBy>("order_by",TaskServiceOptionOrderBy.values, TaskServiceOptionOrderBy.desc),
|
||||
TaskServiceOption<TaskServiceOptionFilterBy>("filter_by",TaskServiceOptionFilterBy.values, TaskServiceOptionFilterBy.done),
|
||||
TaskServiceOption<TaskServiceOptionFilterValue>("filter_value",TaskServiceOptionFilterValue.values, TaskServiceOptionFilterValue.enum_false),
|
||||
TaskServiceOption<TaskServiceOptionSortBy>("sort_by",[TaskServiceOptionSortBy.due_date, TaskServiceOptionSortBy.id]),
|
||||
TaskServiceOption<TaskServiceOptionOrderBy>("order_by", TaskServiceOptionOrderBy.asc),
|
||||
TaskServiceOption<TaskServiceOptionFilterBy>("filter_by", [TaskServiceOptionFilterBy.done, TaskServiceOptionFilterBy.due_date]),
|
||||
TaskServiceOption<TaskServiceOptionFilterValue>("filter_value", [TaskServiceOptionFilterValue.enum_false, '0001-01-02T00:00:00.000Z']),
|
||||
TaskServiceOption<TaskServiceOptionFilterComparator>("filter_comparator", [TaskServiceOptionFilterComparator.equals,TaskServiceOptionFilterComparator.greater]),
|
||||
TaskServiceOption<TaskServiceOptionFilterConcat>("filter_concat", TaskServiceOptionFilterConcat.and),
|
||||
];
|
||||
void setOption(TaskServiceOption option, dynamic value) {
|
||||
options.firstWhere((element) => element.name == option.name).value = value;
|
||||
|
@ -41,14 +51,18 @@ class TaskServiceOptions {
|
|||
String result = '';
|
||||
for(TaskServiceOption option in options) {
|
||||
dynamic value = option.getValue();
|
||||
if(result.isNotEmpty)
|
||||
result += '&';
|
||||
/*if(option.value is List) {
|
||||
for(dynamic value in option.value) {
|
||||
result += option.name+'[]='+value.g;
|
||||
}*/
|
||||
result += option.name+'=' + value;
|
||||
if (value is List) {
|
||||
for (dynamic value_entry in value) {
|
||||
result += '&' + option.name + '[]=' + value_entry;
|
||||
}
|
||||
} else {
|
||||
result += '&' + option.name + '=' + value;
|
||||
}
|
||||
}
|
||||
|
||||
if(result.startsWith('&'))
|
||||
result.substring(1);
|
||||
log(result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user