@@ -174,6 +174,7 @@ class MainView extends React.Component {
174
174
id : filterConfig . id ,
175
175
statKey : filterConfig . statKey ,
176
176
filterBehavior : filterConfig . filterBehavior ,
177
+ filterComponent : filterConfig . filterComponent ,
177
178
value : value
178
179
} )
179
180
}
@@ -228,24 +229,46 @@ class MainView extends React.Component {
228
229
229
230
visibleFrames ( ) {
230
231
const { videoExplorerStore } = this . props ;
231
- const { frames } = videoExplorerStore ;
232
+ const { selectedVideo, frames } = videoExplorerStore ;
233
+
234
+ if ( typeof selectedVideo === 'undefined' )
235
+ return [ ] ;
236
+
237
+ const { stats } = selectedVideo ;
232
238
233
239
return frames
234
240
. filter ( f => {
235
241
return typeof f !== undefined &&
236
242
this . state . filters . every ( uiFilter => {
237
243
let isIncluded = true ;
238
244
245
+ const { filterComponent } = uiFilter ;
246
+ const { statKeyLimits } = filterComponent ;
247
+
248
+ // Check if uiFilter is set on min/max bounds
249
+ // If it's the case, current frame should be included
250
+ const isRangeBounds =
251
+ typeof statKeyLimits !== 'undefined' &&
252
+ statKeyLimits . length === 2 &&
253
+ uiFilter . value [ 0 ] === parseFloat ( stats [ statKeyLimits [ 0 ] ] . toFixed ( 2 ) ) &&
254
+ uiFilter . value [ 1 ] === parseFloat ( stats [ statKeyLimits [ 1 ] ] . toFixed ( 2 ) ) ;
255
+
239
256
switch ( uiFilter . filterBehavior ) {
240
257
case "arrayLengthInsideRange" :
241
258
isIncluded =
242
- f . stats [ uiFilter . statKey ] . length >= uiFilter . value [ 0 ] &&
243
- f . stats [ uiFilter . statKey ] . length <= uiFilter . value [ 1 ]
259
+ isRangeBounds ||
260
+ (
261
+ f . stats [ uiFilter . statKey ] . length >= uiFilter . value [ 0 ] &&
262
+ f . stats [ uiFilter . statKey ] . length <= uiFilter . value [ 1 ]
263
+ )
244
264
break ;
245
265
case "valueInsideRange" :
246
266
isIncluded =
247
- parseFloat ( f . stats [ uiFilter . statKey ] ) >= uiFilter . value [ 0 ] &&
248
- parseFloat ( f . stats [ uiFilter . statKey ] ) <= uiFilter . value [ 1 ]
267
+ isRangeBounds ||
268
+ (
269
+ parseFloat ( f . stats [ uiFilter . statKey ] ) >= uiFilter . value [ 0 ] &&
270
+ parseFloat ( f . stats [ uiFilter . statKey ] ) <= uiFilter . value [ 1 ]
271
+ )
249
272
break ;
250
273
case "someMoreThanAbsolutePercent" :
251
274
isIncluded = f . stats [ uiFilter . statKey ] . some ( val => {
0 commit comments