@@ -5,26 +5,16 @@ import Helper from '../utils/helper.js'
5
5
6
6
export default class ObjectDataTable extends DataTableAbstract {
7
7
protected $offset : number = 0
8
- protected collection : Collection < any > = collect ( )
9
8
10
- constructor ( object : Record < string , any > [ ] ) {
9
+ constructor ( protected items : Record < string , any > [ ] ) {
11
10
super ( )
12
- this . collection = new Collection ( object )
13
- this . $columns = this . collection . keys ( )
11
+ this . $columns = collect ( this . items ) . keys ( )
14
12
}
15
13
16
14
static canCreate ( source : any ) : boolean {
17
15
return typeof source === 'object' || source instanceof Collection
18
16
}
19
17
20
- static create < T > ( this : new ( source : any ) => T , source : any ) : T {
21
- if ( ! ( source instanceof Collection ) ) {
22
- source = new Collection ( source )
23
- }
24
-
25
- return super . create < T > ( source )
26
- }
27
-
28
18
protected resolveCallback ( ) {
29
19
return this
30
20
}
@@ -34,7 +24,7 @@ export default class ObjectDataTable extends DataTableAbstract {
34
24
const orderable = this . request . orderableColumns ( )
35
25
36
26
if ( orderable . length ) {
37
- this . collection = this . collection
27
+ this . items = collect ( this . items )
38
28
. map ( ( data ) => Helper . dot ( data ) )
39
29
. sort ( ( a : Record < string , any > , b : Record < string , any > ) => {
40
30
for ( const value of Object . values ( orderable ) ) {
@@ -83,6 +73,7 @@ export default class ObjectDataTable extends DataTableAbstract {
83
73
84
74
return data
85
75
} )
76
+ . all ( )
86
77
}
87
78
}
88
79
@@ -92,7 +83,7 @@ export default class ObjectDataTable extends DataTableAbstract {
92
83
const index = this . $dataObject ? indexColumn : 0
93
84
let start = this . request . start ( )
94
85
95
- this . collection . transform ( ( data ) => {
86
+ collect ( this . items ) . transform ( ( data ) => {
96
87
data [ index ] = ++ start
97
88
98
89
return data
@@ -101,7 +92,7 @@ export default class ObjectDataTable extends DataTableAbstract {
101
92
}
102
93
103
94
async count ( ) : Promise < number > {
104
- return this . collection . count ( )
95
+ return collect ( this . items ) . count ( )
105
96
}
106
97
107
98
async results ( ) : Promise < Record < string , any > | void > {
@@ -122,22 +113,22 @@ export default class ObjectDataTable extends DataTableAbstract {
122
113
}
123
114
)
124
115
125
- this . collection = collect ( output )
116
+ this . items = collect ( output ) . all ( )
126
117
this . ordering ( )
127
118
await this . filterRecords ( )
128
119
this . paginate ( )
129
120
130
121
this . revertIndexColumn ( )
131
122
}
132
123
133
- return this . render ( this . collection . all ( ) )
124
+ return this . render ( collect ( this . items ) . all ( ) )
134
125
} catch ( error ) {
135
126
return this . errorResponse ( error )
136
127
}
137
128
}
138
129
139
130
dataResults ( ) : any {
140
- return this . collection . all ( )
131
+ return collect ( this . items ) . all ( )
141
132
}
142
133
143
134
setOffset ( offset : number ) : this {
@@ -162,52 +153,56 @@ export default class ObjectDataTable extends DataTableAbstract {
162
153
const regex = this . request . isRegex ( i )
163
154
const keyword = this . request . columnKeyword ( i )
164
155
165
- this . collection = this . collection . filter ( ( row : Record < string , any > ) => {
166
- const value = lodash . get ( row , column )
156
+ this . items = collect ( this . items )
157
+ . filter ( ( row : Record < string , any > ) => {
158
+ const value = lodash . get ( row , column )
167
159
168
- if ( self . config . isCaseInsensitive ( ) ) {
169
- if ( regex ) {
170
- return new RegExp ( keyword , 'i' ) . test ( value )
171
- }
160
+ if ( self . config . isCaseInsensitive ( ) ) {
161
+ if ( regex ) {
162
+ return new RegExp ( keyword , 'i' ) . test ( value )
163
+ }
172
164
173
- return Helper . contains ( value . toLowerCase ( ) , keyword . toLowerCase ( ) )
174
- }
165
+ return Helper . contains ( value . toLowerCase ( ) , keyword . toLowerCase ( ) )
166
+ }
175
167
176
- if ( regex ) {
177
- return new RegExp ( keyword ) . test ( value )
178
- }
168
+ if ( regex ) {
169
+ return new RegExp ( keyword ) . test ( value )
170
+ }
179
171
180
- return Helper . contains ( value , keyword )
181
- } )
172
+ return Helper . contains ( value , keyword )
173
+ } )
174
+ . all ( )
182
175
}
183
176
}
184
177
185
178
paging ( ) : void {
186
179
const offset = this . request . start ( ) - this . $offset
187
180
const length = this . request . length ( ) > 0 ? this . request . length ( ) : 10
188
181
189
- this . collection = this . collection . slice ( offset , length )
182
+ this . items = collect ( this . items ) . slice ( offset , length ) . all ( )
190
183
}
191
184
192
185
globalSearch ( keyword : string ) : void {
193
186
keyword = this . config . isCaseInsensitive ( ) ? keyword . toLowerCase ( ) : keyword
194
187
195
- this . collection = this . collection . filter ( ( row : any ) => {
196
- for ( const index of Object . values ( this . request . searchableColumnIndex ( ) ) ) {
197
- const column = this . getColumnName ( index ) as string
198
- let value = lodash . get ( row , column )
199
- if ( typeof value !== 'string' ) {
200
- continue
201
- } else {
202
- value = this . config . isCaseInsensitive ( ) ? value . toLowerCase ( ) : value
203
- }
188
+ this . items = collect ( this . items )
189
+ . filter ( ( row : any ) => {
190
+ for ( const index of Object . values ( this . request . searchableColumnIndex ( ) ) ) {
191
+ const column = this . getColumnName ( index ) as string
192
+ let value = lodash . get ( row , column )
193
+ if ( typeof value !== 'string' ) {
194
+ continue
195
+ } else {
196
+ value = this . config . isCaseInsensitive ( ) ? value . toLowerCase ( ) : value
197
+ }
204
198
205
- if ( Helper . contains ( value , keyword ) ) {
206
- return true
199
+ if ( Helper . contains ( value , keyword ) ) {
200
+ return true
201
+ }
207
202
}
208
- }
209
203
210
- return false
211
- } )
204
+ return false
205
+ } )
206
+ . all ( )
212
207
}
213
208
}
0 commit comments