Skip to content

Commit f4c956b

Browse files
committed
[WIP] Kalpataru - get NoteCardEntity from editor
1 parent 97488f6 commit f4c956b

18 files changed

+359
-114
lines changed

example/lib/pages/kalpataru_demo_page/kalpataru_create_card/kalpataru_create_card_desktop.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import 'dart:convert';
2+
13
import 'package:flutter/material.dart';
24
import 'package:flutter/widgets.dart';
35
import 'package:flutter_quill/flutter_quill.dart';
@@ -21,9 +23,11 @@ class KalpataruCreateCardDesktop extends StatelessWidget {
2123
Align(
2224
alignment: Alignment.topRight,
2325
child: IconButton(
24-
onPressed: () {
25-
debugPrint('LL:: title : ${editor.getTitle()}');
26-
debugPrint('LL:: content : ${editor.getContent()}');
26+
onPressed: () async {
27+
final noteCardEntity = await editor.getNoteCardEntity();
28+
var encoder = const JsonEncoder.withIndent(' ');
29+
var prettyPrint = encoder.convert(noteCardEntity);
30+
print(prettyPrint);
2731
},
2832
icon: Icon(Icons.save),
2933
),

example/lib/pages/kalpataru_demo_page/kalpataru_create_card_page.dart

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,55 @@ import 'package:flutter/material.dart';
55
import 'package:flutter_quill/flutter_quill.dart';
66
import 'package:flutter_quill/utils/adaptive_layout_builder.dart';
77

8+
Map<String, dynamic> _dummyEmptyNoteCardEntityJson() {
9+
final currentTime = SymTimestampCreator.now();
10+
11+
SymUUIDCreator.instance.userId = 1;
12+
SymChannelsCreator.instance.init(userId: 1, deckId: null);
13+
return {
14+
'id': SymUUIDCreator.instance.create(),
15+
'created_at': currentTime,
16+
'current_owner_id': 1,
17+
'original_owner_id': 1,
18+
'title': 'Test Yoo',
19+
'channels': SymChannelsCreator.instance.getChannels(),
20+
'updated_at': currentTime,
21+
'adopted_at': null,
22+
'adopted_status': false,
23+
'blocks_count': 0,
24+
'backlinks_count': 0,
25+
'forwardlinks_count': 0,
26+
'deck_id': null,
27+
'emoji': null,
28+
'is_premium': false,
29+
'order_position': 0,
30+
'owned_status': false,
31+
'tags': [],
32+
'type': 'card',
33+
'image': null,
34+
'blocks' : [{
35+
'id': SymUUIDCreator.instance.create(),
36+
'blocktype': SymBlockType.basic,
37+
'card_id': 'card-Test',
38+
'content': '',
39+
'created_at': currentTime,
40+
'deck_id': null,
41+
'order_position': 0,
42+
'potentialWords': [],
43+
'tags': [],
44+
'forwardlinks_count': 0,
45+
'updated_at': currentTime,
46+
'current_owner_id': 1,
47+
'original_owner_id': 1,
48+
'type': 'block',
49+
'channels': SymChannelsCreator.instance.getChannels(),
50+
}]
51+
};
52+
}
53+
854
class KalpataruCreateCardPage {
955
static void open(BuildContext context) {
10-
final editor = SymEditorKalpataru();
56+
final editor = SymEditorKalpataru(_dummyEmptyNoteCardEntityJson());
1157
ScreenAdaptor.onScreen(context,
1258
onMobile: () => _openMobile(context, editor),
1359
onDesktop: () => _showDialog(context, editor));
@@ -40,47 +86,3 @@ class KalpataruCreateCardPage {
4086
});
4187
}
4288
}
43-
44-
// class _KalpataruCreateCardPageState extends State<KalpataruCreateCardPage> {
45-
//
46-
// late SymEditorKalpataru editor;
47-
//
48-
// @override
49-
// void initState() {
50-
// super.initState();
51-
// editor = SymEditorKalpataru();
52-
// }
53-
//
54-
// @override
55-
// Widget build(BuildContext context) {
56-
// return Dialog(
57-
// insetPadding:
58-
// EdgeInsets.only(left: MediaQuery.of(context).size.width * 0.1),
59-
// clipBehavior: Clip.antiAlias,
60-
// shape: const RoundedRectangleBorder(
61-
// borderRadius: BorderRadius.only(topLeft: Radius.circular(37))),
62-
// child: Column(
63-
// children: [
64-
// Align(
65-
// alignment: Alignment.topRight,
66-
// child: IconButton(
67-
// onPressed: () {
68-
// debugPrint('LL:: title : ${editor.getTitle()}');
69-
// debugPrint('LL:: content : ${editor.getContent()}');
70-
// },
71-
// icon: Icon(Icons.save),
72-
// ),
73-
// ),
74-
// Expanded(
75-
// child: Container(
76-
// height: double.infinity,
77-
// width: MediaQuery.of(context).size.width,
78-
// color: Colors.white,
79-
// child: editor,
80-
// ),
81-
// ),
82-
// ],
83-
// ),
84-
// );
85-
// }
86-
// }

lib/flutter_quill.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ export 'src/models/documents/document.dart';
55
export 'src/models/documents/nodes/embed.dart';
66
export 'src/models/documents/nodes/leaf.dart';
77
export 'src/models/quill_delta.dart';
8+
export 'src/sym_model/sym_block/sym_block_type.dart';
9+
export 'src/sym_utils/sym_channels_creator.dart';
10+
export 'src/sym_utils/sym_timestamp_creator.dart';
11+
export 'src/sym_utils/sym_uuid_creator.dart';
812
export 'src/widgets/controller.dart';
913
export 'src/widgets/default_styles.dart';
1014
export 'src/widgets/editor.dart';

lib/src/models/documents/document.dart

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'dart:async';
22

3-
import 'package:flutter_quill/src/utils/delta_markdown/markdown_converter.dart';
3+
import '../../utils/delta_markdown/markdown_converter.dart';
44
import 'package:tuple/tuple.dart';
55

66
import '../quill_delta.dart';
@@ -230,6 +230,22 @@ class Document {
230230
return block.queryChild(res.offset, true).node as Line;
231231
}
232232

233+
List<Line> getAllLine() {
234+
final lines = <Line>[];
235+
for (final node in _root.children) {
236+
if (node is Line) {
237+
final line = node;
238+
lines.add(line);
239+
} else if (node is Block) {
240+
node.children.forEach((line) {
241+
lines.add(line as Line);
242+
});
243+
}
244+
}
245+
246+
return lines;
247+
}
248+
233249
void compose(Delta delta, ChangeSource changeSource) {
234250
assert(!_observer.isClosed);
235251
delta.trim();

lib/src/models/documents/nodes/line.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:math' as math;
22

33
import 'package:collection/collection.dart';
4+
import 'package:flutter_quill/src/sym_utils/sym_uuid_creator.dart';
45
import 'package:flutter_quill/src/utils/sym_regex.dart';
56
import 'package:uuid/uuid.dart';
67

@@ -21,8 +22,7 @@ import 'node.dart';
2122
/// or text nodes are allowed.
2223
class Line extends Container<Leaf?> {
2324
Line() : super() {
24-
const uuid = Uuid();
25-
_generatedLineId = uuid.v5(Uuid.NAMESPACE_NIL, uuid.v1());
25+
_generatedLineId = SymUUIDCreator.instance.create();
2626
}
2727

2828
late String _generatedLineId;

lib/src/sym_model/note_card/sym_note_card.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import 'package:json_annotation/json_annotation.dart';
22

3-
part 'note_card.g.dart';
3+
part 'sym_note_card.g.dart';
44

55
@JsonSerializable()
6-
class NoteCard {
6+
class SymNoteCard {
77
String id;
88
@JsonKey(name: _KeyString._adoptedAt)
99
String? adoptedAt;
@@ -39,7 +39,7 @@ class NoteCard {
3939
List<String> channels;
4040
String? image;
4141

42-
NoteCard(
42+
SymNoteCard(
4343
{required this.id,
4444
required this.createdAt,
4545
required this.currentOwnerId,
@@ -61,7 +61,7 @@ class NoteCard {
6161
this.type = objectAlias,
6262
this.image = null});
6363

64-
factory NoteCard.fromJson(Map<String, dynamic> json) =>
64+
factory SymNoteCard.fromJson(Map<String, dynamic> json) =>
6565
_$SymNoteCardFromJson(json);
6666

6767
Map<String, dynamic> toJson() => _$SymNoteCardToJson(this);

lib/src/sym_model/note_card/sym_note_card.g.dart

Lines changed: 57 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/sym_model/note_card/sym_note_card_entity.dart

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import '../sym_block/sym_block.dart';
2-
import 'note_card.dart';
2+
import 'sym_note_card.dart';
33

4-
class SymNoteCardEntity extends NoteCard {
4+
class SymNoteCardEntity extends SymNoteCard {
55
final List<SymBlock> blocks;
6+
67
SymNoteCardEntity({
78
required String id,
89
required String? adoptedAt,
@@ -26,28 +27,29 @@ class SymNoteCardEntity extends NoteCard {
2627
required String? image,
2728
required this.blocks,
2829
}) : super(
29-
id: id,
30-
adoptedAt: adoptedAt,
31-
adoptedStatus: adoptedStatus,
32-
channels: channels,
33-
updatedAt: updatedAt,
34-
type: type,
35-
title: title,
36-
tags: tags,
37-
ownedStatus: ownedStatus,
38-
originalOwnerId: originalOwnerId,
39-
orderPosition: orderPosition,
40-
isPremium: isPremium,
41-
emoji: emoji,
42-
deckId: deckId,
43-
currentOwnerId: currentOwnerId,
44-
createdAt: createdAt,
45-
forwardlinksCount: forwardlinksCount,
46-
backlinksCount: backlinksCount,
47-
blocksCount: blocksCount,
48-
);
30+
id: id,
31+
adoptedAt: adoptedAt,
32+
adoptedStatus: adoptedStatus,
33+
channels: channels,
34+
updatedAt: updatedAt,
35+
type: type,
36+
title: title,
37+
tags: tags,
38+
ownedStatus: ownedStatus,
39+
originalOwnerId: originalOwnerId,
40+
orderPosition: orderPosition,
41+
isPremium: isPremium,
42+
emoji: emoji,
43+
deckId: deckId,
44+
currentOwnerId: currentOwnerId,
45+
createdAt: createdAt,
46+
forwardlinksCount: forwardlinksCount,
47+
backlinksCount: backlinksCount,
48+
blocksCount: blocksCount,
49+
);
4950

50-
static SymNoteCardEntity fromNoteCard(NoteCard card, List<SymBlock> blocks) {
51+
static SymNoteCardEntity fromNoteCard(
52+
SymNoteCard card, List<SymBlock> blocks) {
5153
return SymNoteCardEntity(
5254
id: card.id,
5355
adoptedAt: card.adoptedAt,
@@ -75,6 +77,13 @@ class SymNoteCardEntity extends NoteCard {
7577
factory SymNoteCardEntity.fromJson(Map<String, dynamic> json) {
7678
final blocks = json[SymBlock.objectAlias] as List<SymBlock>;
7779

78-
return fromNoteCard(NoteCard.fromJson(json), blocks);
80+
return fromNoteCard(SymNoteCard.fromJson(json), blocks);
81+
}
82+
83+
@override
84+
Map<String, dynamic> toJson() {
85+
86+
return super.toJson()
87+
..addAll({'blocks': blocks.map((e) => e.toJson()).toList()});
7988
}
80-
}
89+
}

0 commit comments

Comments
 (0)