feat: created at and updated at field type (#2572)

* feat: created at and updated at field type

* style: context for rust asserts, change checks in flutter

* fix: mistake in if condition

* style: add comma end of array

* feat: created at and updated at field type

* fix: typo in const variable

* style: cargo fmt

* refactor: opti cell insert

* chore: remove redundant clone

* refactor: date type option

* fix: tauri build

---------

Co-authored-by: nathan <nathan@appflowy.io>
This commit is contained in:
Mohammad Zolfaghari
2023-05-26 14:04:17 +03:30
committed by GitHub
parent a85cc62a58
commit 9a213fa562
43 changed files with 598 additions and 188 deletions

View File

@ -40,6 +40,8 @@ class CellControllerBuilder {
cellDataPersistence: TextCellDataPersistence(cellId: _cellId),
);
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
final cellDataLoader = CellDataLoader(
cellId: _cellId,
parser: DateCellDataParser(),

View File

@ -353,7 +353,13 @@ class RowDataBuilder {
}
void insertDate(FieldInfo fieldInfo, DateTime date) {
assert(fieldInfo.fieldType == FieldType.DateTime);
assert(
[
FieldType.DateTime,
FieldType.UpdatedAt,
FieldType.CreatedAt,
].contains(fieldInfo.fieldType),
);
final timestamp = date.millisecondsSinceEpoch ~/ 1000;
_cellDataByFieldId[fieldInfo.field.id] = timestamp.toString();
}

View File

@ -84,10 +84,19 @@ class FilterBackendService {
required String fieldId,
String? filterId,
required DateFilterConditionPB condition,
required FieldType fieldType,
int? start,
int? end,
int? timestamp,
}) {
assert(
[
FieldType.DateTime,
FieldType.UpdatedAt,
FieldType.CreatedAt,
].contains(fieldType),
);
var filter = DateFilterPB();
if (timestamp != null) {
filter.timestamp = $fixnum.Int64(timestamp);
@ -105,7 +114,7 @@ class FilterBackendService {
return insertFilter(
fieldId: fieldId,
filterId: filterId,
fieldType: FieldType.DateTime,
fieldType: fieldType,
data: filter.writeToBuffer(),
);
}

View File

@ -362,6 +362,8 @@ Widget? _buildHeaderIcon(GroupData customData) {
}
break;
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
break;
case FieldType.MultiSelect:
break;

View File

@ -93,11 +93,14 @@ class GridCreateFilterBloc
condition: CheckboxFilterConditionPB.IsChecked,
);
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
final timestamp = DateTime.now().millisecondsSinceEpoch ~/ 1000;
return _filterBackendSvc.insertDateFilter(
fieldId: fieldId,
condition: DateFilterConditionPB.DateIs,
timestamp: timestamp,
fieldType: field.fieldType,
);
case FieldType.MultiSelect:
return _filterBackendSvc.insertSelectOptionFilter(

View File

@ -23,7 +23,11 @@ class FilterInfo {
}
DateFilterPB? dateFilter() {
if (filter.fieldType != FieldType.DateTime) {
if (![
FieldType.DateTime,
FieldType.UpdatedAt,
FieldType.CreatedAt,
].contains(filter.fieldType)) {
return null;
}
return DateFilterPB.fromBuffer(filter.data);

View File

@ -25,6 +25,8 @@ Widget buildFilterChoicechip(FilterInfo filterInfo) {
case FieldType.Checkbox:
return CheckboxFilterChoicechip(filterInfo: filterInfo);
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
return DateFilterChoicechip(filterInfo: filterInfo);
case FieldType.MultiSelect:
return SelectOptionFilterChoicechip(filterInfo: filterInfo);

View File

@ -8,6 +8,8 @@ extension FieldTypeListExtension on FieldType {
case FieldType.Checkbox:
return "grid/field/checkbox";
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
return "grid/field/date";
case FieldType.MultiSelect:
return "grid/field/multi_select";
@ -31,6 +33,10 @@ extension FieldTypeListExtension on FieldType {
return LocaleKeys.grid_field_checkboxFieldName.tr();
case FieldType.DateTime:
return LocaleKeys.grid_field_dateFieldName.tr();
case FieldType.UpdatedAt:
return LocaleKeys.grid_field_updatedAtFieldName.tr();
case FieldType.CreatedAt:
return LocaleKeys.grid_field_createdAtFieldName.tr();
case FieldType.MultiSelect:
return LocaleKeys.grid_field_multiSelectFieldName.tr();
case FieldType.Number:

View File

@ -73,6 +73,8 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({
),
);
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
return DateTypeOptionWidgetBuilder(
makeTypeOptionContextWithDataController<DateTypeOptionPB>(
viewId: viewId,
@ -202,6 +204,8 @@ TypeOptionContext<T>
dataParser: CheckboxTypeOptionWidgetDataParser(),
) as TypeOptionContext<T>;
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
return DateTypeOptionContext(
dataController: dataController,
dataParser: DateTypeOptionDataParser(),

View File

@ -39,6 +39,8 @@ class CardCellBuilder<CustomCardData> {
key: key,
);
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
return DateCardCell<CustomCardData>(
renderHook: renderHook?.renderHook[FieldType.DateTime],
cellControllerBuilder: cellControllerBuilder,

View File

@ -34,6 +34,8 @@ class GridCellBuilder {
key: key,
);
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
return GridDateCell(
cellControllerBuilder: cellControllerBuilder,
key: key,

View File

@ -335,6 +335,8 @@ GridCellStyle? _customCellStyle(FieldType fieldType) {
case FieldType.Checkbox:
return null;
case FieldType.DateTime:
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
return DateCellStyle(
alignment: Alignment.centerLeft,
);