Преглед изворни кода

Merge pull request #629 from AppFlowy-IO/refactor/rename_grid_cell

Refactor/rename grid cell
Nathan.fooo пре 2 година
родитељ
комит
ff1b6f8f1d

+ 6 - 6
frontend/app_flowy/lib/workspace/application/grid/cell/cell_service/cell_data_loader.dart

@@ -5,14 +5,14 @@ abstract class IGridCellDataConfig {
   bool get reloadOnFieldChanged;
 }
 
-abstract class ICellDataParser<T> {
+abstract class IGridCellDataParser<T> {
   T? parserData(List<int> data);
 }
 
 class GridCellDataLoader<T> {
   final CellService service = CellService();
   final GridCellIdentifier cellId;
-  final ICellDataParser<T> parser;
+  final IGridCellDataParser<T> parser;
   final bool reloadOnFieldChanged;
 
   GridCellDataLoader({
@@ -40,7 +40,7 @@ class GridCellDataLoader<T> {
   }
 }
 
-class StringCellDataParser implements ICellDataParser<String> {
+class StringCellDataParser implements IGridCellDataParser<String> {
   @override
   String? parserData(List<int> data) {
     final s = utf8.decode(data);
@@ -48,7 +48,7 @@ class StringCellDataParser implements ICellDataParser<String> {
   }
 }
 
-class DateCellDataParser implements ICellDataParser<DateCellDataPB> {
+class DateCellDataParser implements IGridCellDataParser<DateCellDataPB> {
   @override
   DateCellDataPB? parserData(List<int> data) {
     if (data.isEmpty) {
@@ -58,7 +58,7 @@ class DateCellDataParser implements ICellDataParser<DateCellDataPB> {
   }
 }
 
-class SelectOptionCellDataParser implements ICellDataParser<SelectOptionCellDataPB> {
+class SelectOptionCellDataParser implements IGridCellDataParser<SelectOptionCellDataPB> {
   @override
   SelectOptionCellDataPB? parserData(List<int> data) {
     if (data.isEmpty) {
@@ -68,7 +68,7 @@ class SelectOptionCellDataParser implements ICellDataParser<SelectOptionCellData
   }
 }
 
-class URLCellDataParser implements ICellDataParser<URLCellDataPB> {
+class URLCellDataParser implements IGridCellDataParser<URLCellDataPB> {
   @override
   URLCellDataPB? parserData(List<int> data) {
     if (data.isEmpty) {

+ 7 - 6
frontend/app_flowy/lib/workspace/application/grid/cell/cell_service/context_builder.dart

@@ -52,6 +52,7 @@ class GridCellControllerBuilder {
         final cellDataLoader = GridCellDataLoader(
           cellId: _cellId,
           parser: StringCellDataParser(),
+          reloadOnFieldChanged: true,
         );
         return GridCellController(
           cellId: _cellId,
@@ -170,16 +171,13 @@ class IGridCellController<T, D> extends Equatable {
     }
     isListening = true;
 
-    /// The cell data will be changed by two reasons:
-    /// 1. User edit the cell
-    /// 2. User edit the field
-    ///   For example: The number cell reload the cell data that carries the format
-    ///   user input: 12
-    ///   cell display: $12
     _cellDataNotifier = ValueNotifier(_cellsCache.get(_cacheKey));
     _cellListener = CellListener(rowId: cellId.rowId, fieldId: cellId.field.id);
 
     /// 1.Listen on user edit event and load the new cell data if needed.
+    /// For example:
+    ///  user input: 12
+    ///  cell display: $12
     _cellListener.start(onCellChanged: (result) {
       result.fold(
         (_) => _loadData(),
@@ -193,6 +191,9 @@ class IGridCellController<T, D> extends Equatable {
         onCellFieldChanged();
       }
 
+      /// reloadOnFieldChanged should be true if you need to load the data when the corresponding field is changed
+      /// For example:
+      ///   ¥12 -> $12
       if (_cellDataLoader.reloadOnFieldChanged) {
         _loadData();
       }

+ 5 - 5
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/cell_builder.dart

@@ -30,15 +30,15 @@ class GridCellBuilder {
     final key = cell.key();
     switch (cell.fieldType) {
       case FieldType.Checkbox:
-        return CheckboxCell(cellControllerBuilder: cellControllerBuilder, key: key);
+        return GridCheckboxCell(cellControllerBuilder: cellControllerBuilder, key: key);
       case FieldType.DateTime:
-        return DateCell(cellControllerBuilder: cellControllerBuilder, key: key, style: style);
+        return GridDateCell(cellControllerBuilder: cellControllerBuilder, key: key, style: style);
       case FieldType.SingleSelect:
-        return SingleSelectCell(cellContorllerBuilder: cellControllerBuilder, style: style, key: key);
+        return GridSingleSelectCell(cellContorllerBuilder: cellControllerBuilder, style: style, key: key);
       case FieldType.MultiSelect:
-        return MultiSelectCell(cellContorllerBuilder: cellControllerBuilder, style: style, key: key);
+        return GridMultiSelectCell(cellContorllerBuilder: cellControllerBuilder, style: style, key: key);
       case FieldType.Number:
-        return NumberCell(cellContorllerBuilder: cellControllerBuilder, key: key);
+        return GridNumberCell(cellContorllerBuilder: cellControllerBuilder, key: key);
       case FieldType.RichText:
         return GridTextCell(cellContorllerBuilder: cellControllerBuilder, style: style, key: key);
       case FieldType.URL:

+ 4 - 4
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/checkbox_cell.dart

@@ -6,18 +6,18 @@ import 'package:flutter/widgets.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 import 'cell_builder.dart';
 
-class CheckboxCell extends GridCellWidget {
+class GridCheckboxCell extends GridCellWidget {
   final GridCellControllerBuilder cellControllerBuilder;
-  CheckboxCell({
+  GridCheckboxCell({
     required this.cellControllerBuilder,
     Key? key,
   }) : super(key: key);
 
   @override
-  GridCellState<CheckboxCell> createState() => _CheckboxCellState();
+  GridCellState<GridCheckboxCell> createState() => _CheckboxCellState();
 }
 
-class _CheckboxCellState extends GridCellState<CheckboxCell> {
+class _CheckboxCellState extends GridCellState<GridCheckboxCell> {
   late CheckboxCellBloc _cellBloc;
 
   @override

+ 4 - 4
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/date_cell/date_cell.dart

@@ -18,11 +18,11 @@ abstract class GridCellDelegate {
   GridCellDelegate get delegate;
 }
 
-class DateCell extends GridCellWidget {
+class GridDateCell extends GridCellWidget {
   final GridCellControllerBuilder cellControllerBuilder;
   late final DateCellStyle? cellStyle;
 
-  DateCell({
+  GridDateCell({
     GridCellStyle? style,
     required this.cellControllerBuilder,
     Key? key,
@@ -35,10 +35,10 @@ class DateCell extends GridCellWidget {
   }
 
   @override
-  GridCellState<DateCell> createState() => _DateCellState();
+  GridCellState<GridDateCell> createState() => _DateCellState();
 }
 
-class _DateCellState extends GridCellState<DateCell> {
+class _DateCellState extends GridCellState<GridDateCell> {
   late DateCellBloc _cellBloc;
 
   @override

+ 4 - 4
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/number_cell.dart

@@ -6,19 +6,19 @@ import 'package:flutter_bloc/flutter_bloc.dart';
 
 import 'cell_builder.dart';
 
-class NumberCell extends GridCellWidget {
+class GridNumberCell extends GridCellWidget {
   final GridCellControllerBuilder cellContorllerBuilder;
 
-  NumberCell({
+  GridNumberCell({
     required this.cellContorllerBuilder,
     Key? key,
   }) : super(key: key);
 
   @override
-  GridFocusNodeCellState<NumberCell> createState() => _NumberCellState();
+  GridFocusNodeCellState<GridNumberCell> createState() => _NumberCellState();
 }
 
-class _NumberCellState extends GridFocusNodeCellState<NumberCell> {
+class _NumberCellState extends GridFocusNodeCellState<GridNumberCell> {
   late NumberCellBloc _cellBloc;
   late TextEditingController _controller;
   Timer? _delayOperation;

+ 8 - 8
frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/select_option_cell/select_option_cell.dart

@@ -20,11 +20,11 @@ class SelectOptionCellStyle extends GridCellStyle {
   });
 }
 
-class SingleSelectCell extends GridCellWidget {
+class GridSingleSelectCell extends GridCellWidget {
   final GridCellControllerBuilder cellContorllerBuilder;
   late final SelectOptionCellStyle? cellStyle;
 
-  SingleSelectCell({
+  GridSingleSelectCell({
     required this.cellContorllerBuilder,
     GridCellStyle? style,
     Key? key,
@@ -37,10 +37,10 @@ class SingleSelectCell extends GridCellWidget {
   }
 
   @override
-  State<SingleSelectCell> createState() => _SingleSelectCellState();
+  State<GridSingleSelectCell> createState() => _SingleSelectCellState();
 }
 
-class _SingleSelectCellState extends State<SingleSelectCell> {
+class _SingleSelectCellState extends State<GridSingleSelectCell> {
   late SelectOptionCellBloc _cellBloc;
 
   @override
@@ -74,11 +74,11 @@ class _SingleSelectCellState extends State<SingleSelectCell> {
 }
 
 //----------------------------------------------------------------
-class MultiSelectCell extends GridCellWidget {
+class GridMultiSelectCell extends GridCellWidget {
   final GridCellControllerBuilder cellContorllerBuilder;
   late final SelectOptionCellStyle? cellStyle;
 
-  MultiSelectCell({
+  GridMultiSelectCell({
     required this.cellContorllerBuilder,
     GridCellStyle? style,
     Key? key,
@@ -91,10 +91,10 @@ class MultiSelectCell extends GridCellWidget {
   }
 
   @override
-  State<MultiSelectCell> createState() => _MultiSelectCellState();
+  State<GridMultiSelectCell> createState() => _MultiSelectCellState();
 }
 
-class _MultiSelectCellState extends State<MultiSelectCell> {
+class _MultiSelectCellState extends State<GridMultiSelectCell> {
   late SelectOptionCellBloc _cellBloc;
 
   @override