dataflow/
row.rs

1use super::TableEntity;
2
3pub struct DataRow<T> {
4    index: i64,
5    // table: DataTable,
6    /// The list that stores the actual data.
7    cells: Vec<T>,
8}
9
10impl<T> TableEntity for DataRow<T> {}
11
12impl<T> DataRow<T> {
13    /// Converts a column index or name to an index.
14    fn to_index(&self, column_index_or_name: i64) -> i64 {
15        // if (columnIndexOrName is int) return columnIndexOrName;
16        // return table.columnIndexByName[columnIndexOrName];
17        unimplemented!()
18    }
19
20    // /// Creates a new [DataRow] from a list of values.
21    // ///
22    // ///  Each value in [values] corresponds to a column. If [values] is too short,
23    // /// the remaining columns are filled with `null`.
24    // DataRow.internal(DataTable table, List values) {
25    //   table = table;
26    //   let n = table.columns.length;
27    //   let m = values.length;
28    //   let min = m;
29    //   if (min > n) min = n;
30    //   cells = values.sublist(0, min);
31    //   for (let i = min; i < n; i++) {
32    //     cells.add(null);
33    //   }
34    // }
35
36    // /// Returns the value of the column specified by [columnIndexOrName].
37    // operator [](columnIndexOrName) => cells[_toIndex(columnIndexOrName)];
38
39    // /// Sets the value of the column specified by [columnIndexOrName].
40    // operator []=(columnIndexOrName, value) {
41    //   let columnIndex = toIndex(columnIndexOrName);
42    //   let oldValue = cells[columnIndex];
43    //   cells[columnIndex] = value;
44    //   table.onCellChanged(index, columnIndex, oldValue, value);
45    // }
46
47    // /// Creates a [List] containing all cells in this [DataRow].
48    // List toList({bool growable: true}) => cells.toList(growable: growable);
49}
50
51// pub struct DataRowCollection<M, D> {
52//     base: Vec<DataRow<D>>,
53//     //     table: DataTable,
54// }
55
56// impl<M, D> DataRowCollection<M, D> {
57//     pub fn new(table: &DataTable<M, D>) -> Self {
58//         //   table = table;
59//         Self {
60//             base: Default::default(),
61//         }
62//     }
63// }
64
65// impl<M, D> DataCollectionBase<DataRow<D>> for DataRowCollection<M, D> {
66//     fn release_items(&self, start: i64, end: i64) {
67//         // while (start < end) {
68//         //   base[start].table = null;
69//         //   start++;
70//         // }
71//         unimplemented!()
72//     }
73
74//     fn update_items(&self, start: i64) {
75//         // let len = length;
76//         // while (start < len) {
77//         //   base[start]
78//         //     ..table = table
79//         //     ..index = start++;
80//         // }
81//         unimplemented!()
82//     }
83
84//     // @override
85//     // Iterator<E> get iterator => DataCollectionIterator<E>(this);
86
87//     // @override
88//     // E get first => base.first;
89
90//     // @override
91//     // E get last => base.last;
92
93//     // @override
94//     // E get single => base.single;
95
96//     // @override
97//     // i64 get length => base.length;
98
99//     // fn set length(&self, i64 value) {
100//     //   // TODO: implement.
101//     //   throw UnimplementedError();
102//     // }
103
104//     // @override
105//     // E operator [](i64 index) => base[index];
106
107//     // @override
108//     // operator []=(i64 index, E value) {
109//     //   // TODO: implement.
110//     //   throw UnimplementedError();
111//     // }
112
113//     fn add(&self, value: DataRow<D>) {
114//         // let index = length;
115//         // base.add(value);
116//         // updateItems(index);
117//         // table.onRowsOrColumnsInserted(this, index, 1);
118//         unimplemented!()
119//     }
120
121//     // fn add_all(&self, iterable: Iterator<E>) {
122//     // //     // let index = length;
123//     // //     // base.addAll(iterable);
124//     // //     // updateItems(index);
125//     // //     // table.onRowsOrColumnsInserted(this, index, iterable.length);
126//     // }
127
128//     // @override
129//     // E elementAt(&self, i64 index) => base[index];
130
131//     fn insert(&self, index: i64, value: DataRow<D>) {
132//         // base.insert(index, value);
133//         // updateItems(index);
134//         // table.onRowsOrColumnsInserted(this, index, 1);
135//         unimplemented!()
136//     }
137
138//     // fn insert_all(&self, index: i64, iterable: Iterable<E>) {
139//     //     // base.insertAll(index, iterable);
140//     //     // updateItems(index);
141//     //     // table.onRowsOrColumnsInserted(this, index, iterable.length);
142//     // }
143
144//     fn remove(&self, element: DataRow<D>) -> bool {
145//         // let index = base.indexOf(element);
146//         // if (index == -1) return false;
147//         // removeAt(index);
148//         // return true;
149//         unimplemented!()
150//     }
151
152//     fn clear(&self) {
153//         // let len = length;
154//         // if (len == 0) return;
155//         // releaseItems(0, len);
156//         // base.clear();
157//         // table.onRowsOrColumnsRemoved(this, 0, len);
158//         unimplemented!()
159//     }
160
161//     fn remove_at(&self, index: i64) -> DataRow<D> {
162//         // let e = base.removeAt(index);
163//         // e.table = null;
164//         // updateItems(index);
165//         // table.onRowsOrColumnsRemoved(this, index, 1);
166//         // return e;
167//         unimplemented!()
168//     }
169
170//     fn remove_last(&self) -> DataRow<D> {
171//         // let e = base.removeLast();
172//         // e.table = null;
173//         // table.onRowsOrColumnsRemoved(this, length, 1);
174//         // return e;
175//         unimplemented!()
176//     }
177
178//     fn remove_range(&self, start: i64, end: i64) {
179//         // releaseItems(start, end);
180//         // base.remove_range(start, end);
181//         // updateItems(start);
182//         // table.onRowsOrColumnsRemoved(this, start, end - start);
183//         unimplemented!()
184//     }
185
186//     // FIXME: bellow implementation
187
188//     // DataRow toDataRow(value) =>
189//     //     value is DataRow ? value : DataRow.internal(table, value);
190
191//     // DataRowCollection(DataTable table) : super(table);
192
193//     // /// Adds [value] to this collection.
194//     // ///
195//     // /// [value] can be a [DataRow] or a [List].
196//     // fn add(value: E) {
197//     //     // self.base.add(toDataRow(value));
198//     // }
199
200//     // /// Adds all elements of [iterable] to this collection.
201//     // ///
202//     // /// Each element in [iterable] can be a [DataRow] or a [List].
203//     // fn addAll(iterable: Iterable) {
204//     //     // self.base.addAll(iterable.map(toDataRow));
205//     // }
206
207//     // /// Inserts [value] at position [index] in this collection.
208//     // ///
209//     // /// [value] can be a [DataRow] or a [List].
210//     // fn insert(index: i64, value: E) {
211//     //     // self.base.insert(index, toDataRow(value));
212//     // }
213
214//     // /// Inserts all elements of [iterable] at position [index] in this collection.
215//     // ///
216//     // /// Each element in [iterable] can be a [DataRow] or a [List].
217//     // fn insertAll(index: i64, iterable: Iterable) {
218//     //     // self.base.insertAll(index, iterable.map(toDataRow));
219//     // }
220// }