grid.rs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. use crate::entities::{Field, RowMeta};
  2. use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
  3. use serde::{Deserialize, Serialize};
  4. use std::collections::HashMap;
  5. use strum_macros::{Display, EnumIter, EnumString};
  6. pub const DEFAULT_ROW_HEIGHT: i32 = 36;
  7. pub const DEFAULT_FIELD_WIDTH: i32 = 150;
  8. #[derive(Debug, Clone, Default, ProtoBuf)]
  9. pub struct Grid {
  10. #[pb(index = 1)]
  11. pub id: String,
  12. #[pb(index = 2)]
  13. pub field_orders: Vec<FieldOrder>,
  14. #[pb(index = 3)]
  15. pub row_orders: Vec<RowOrder>,
  16. }
  17. #[derive(Debug, Clone, Default, ProtoBuf)]
  18. pub struct FieldOrder {
  19. #[pb(index = 1)]
  20. pub field_id: String,
  21. }
  22. impl std::convert::From<&Field> for FieldOrder {
  23. fn from(field: &Field) -> Self {
  24. Self {
  25. field_id: field.id.clone(),
  26. }
  27. }
  28. }
  29. #[derive(Debug, Clone, Default, ProtoBuf)]
  30. pub struct RepeatedFieldOrder {
  31. #[pb(index = 1)]
  32. pub items: Vec<FieldOrder>,
  33. }
  34. impl std::ops::Deref for RepeatedFieldOrder {
  35. type Target = Vec<FieldOrder>;
  36. fn deref(&self) -> &Self::Target {
  37. &self.items
  38. }
  39. }
  40. #[derive(Debug, Default, Clone, ProtoBuf)]
  41. pub struct RowOrder {
  42. #[pb(index = 1)]
  43. pub row_id: String,
  44. }
  45. impl std::convert::From<&RowMeta> for RowOrder {
  46. fn from(row: &RowMeta) -> Self {
  47. Self { row_id: row.id.clone() }
  48. }
  49. }
  50. #[derive(Debug, Clone, Default, ProtoBuf)]
  51. pub struct RepeatedRowOrder {
  52. #[pb(index = 1)]
  53. pub items: Vec<RowOrder>,
  54. }
  55. impl std::ops::Deref for RepeatedRowOrder {
  56. type Target = Vec<RowOrder>;
  57. fn deref(&self) -> &Self::Target {
  58. &self.items
  59. }
  60. }
  61. impl std::ops::DerefMut for RepeatedRowOrder {
  62. fn deref_mut(&mut self) -> &mut Self::Target {
  63. &mut self.items
  64. }
  65. }
  66. #[derive(Debug, Default, ProtoBuf)]
  67. pub struct Row {
  68. #[pb(index = 1)]
  69. pub id: String,
  70. #[pb(index = 2)]
  71. pub cell_by_field_id: HashMap<String, Cell>,
  72. #[pb(index = 3)]
  73. pub height: i32,
  74. }
  75. #[derive(Debug, Default, ProtoBuf)]
  76. pub struct RepeatedRow {
  77. #[pb(index = 1)]
  78. pub items: Vec<Row>,
  79. }
  80. impl std::ops::Deref for RepeatedRow {
  81. type Target = Vec<Row>;
  82. fn deref(&self) -> &Self::Target {
  83. &self.items
  84. }
  85. }
  86. impl std::ops::DerefMut for RepeatedRow {
  87. fn deref_mut(&mut self) -> &mut Self::Target {
  88. &mut self.items
  89. }
  90. }
  91. impl std::convert::From<Vec<Row>> for RepeatedRow {
  92. fn from(items: Vec<Row>) -> Self {
  93. Self { items }
  94. }
  95. }
  96. #[derive(Debug, Default, ProtoBuf)]
  97. pub struct Cell {
  98. #[pb(index = 1)]
  99. pub id: String,
  100. #[pb(index = 2)]
  101. pub field_id: String,
  102. #[pb(index = 3)]
  103. pub content: String,
  104. }
  105. #[derive(ProtoBuf, Default)]
  106. pub struct CreateGridPayload {
  107. #[pb(index = 1)]
  108. pub name: String,
  109. }
  110. #[derive(Clone, ProtoBuf, Default, Debug)]
  111. pub struct GridId {
  112. #[pb(index = 1)]
  113. pub value: String,
  114. }
  115. impl AsRef<str> for GridId {
  116. fn as_ref(&self) -> &str {
  117. &self.value
  118. }
  119. }
  120. #[derive(ProtoBuf, Default)]
  121. pub struct QueryFieldPayload {
  122. #[pb(index = 1)]
  123. pub grid_id: String,
  124. #[pb(index = 2)]
  125. pub field_orders: RepeatedFieldOrder,
  126. }
  127. #[derive(ProtoBuf, Default)]
  128. pub struct QueryRowPayload {
  129. #[pb(index = 1)]
  130. pub grid_id: String,
  131. #[pb(index = 2)]
  132. pub row_orders: RepeatedRowOrder,
  133. }