@@ -286,7 +286,7 @@ export default {
286286 ] ,
287287 widgetProps : {
288288 } ,
289- }
289+ } ,
290290 } ,
291291 } ,
292292 multiselect : {
@@ -306,6 +306,7 @@ export default {
306306 "equal" ,
307307 ] ,
308308 widgetProps : {
309+ //you can enable this if you don't use fields as value sources
309310 //hideOperator: true,
310311 //operatorInlineLabel: "is",
311312 }
@@ -355,7 +356,7 @@ export default {
355356 label : 'Between' ,
356357 labelForFormat : 'BETWEEN' ,
357358 cardinality : 2 ,
358- formatOp : ( field , op , values , opDef , operatorOptions , isForDisplay ) => {
359+ formatOp : ( field , op , values , valueSrcs , opDef , operatorOptions , isForDisplay ) => {
359360 let valFrom = values . first ( ) ;
360361 let valTo = values . get ( 1 ) ;
361362 if ( isForDisplay )
@@ -395,7 +396,7 @@ export default {
395396 labelForFormat : 'IS EMPTY' ,
396397 cardinality : 0 ,
397398 reversedOp : 'is_not_empty' ,
398- formatOp : ( field , op , value , opDef , operatorOptions , isForDisplay ) => {
399+ formatOp : ( field , op , value , valueSrc , opDef , operatorOptions , isForDisplay , ) => {
399400 return isForDisplay ? `${ field } IS EMPTY` : `!${ field } ` ;
400401 } ,
401402 } ,
@@ -405,55 +406,67 @@ export default {
405406 labelForFormat : 'IS NOT EMPTY' ,
406407 cardinality : 0 ,
407408 reversedOp : 'is_empty' ,
408- formatOp : ( field , op , value , opDef , operatorOptions , isForDisplay ) => {
409+ formatOp : ( field , op , value , valueSrc , opDef , operatorOptions , isForDisplay ) => {
409410 return isForDisplay ? `${ field } IS NOT EMPTY` : `!!${ field } ` ;
410411 } ,
411412 } ,
412413 select_equals : {
413414 label : '==' ,
414415 labelForFormat : '==' ,
415- formatOp : ( field , op , value , opDef , operatorOptions , isForDisplay ) => {
416+ formatOp : ( field , op , value , valueSrc , opDef , operatorOptions , isForDisplay ) => {
416417 return `${ field } == ${ value } ` ;
417418 } ,
418419 reversedOp : 'select_not_equals' ,
419420 } ,
420421 select_not_equals : {
421422 label : '!=' ,
422423 labelForFormat : '!=' ,
423- formatOp : ( field , op , value , opDef , operatorOptions , isForDisplay ) => {
424+ formatOp : ( field , op , value , valueSrc , opDef , operatorOptions , isForDisplay ) => {
424425 return `${ field } != ${ value } ` ;
425426 } ,
426427 reversedOp : 'select_equals' ,
427428 } ,
428429 select_any_in : {
429430 label : 'Any in' ,
430431 labelForFormat : 'IN' ,
431- formatOp : ( field , op , values , opDef , operatorOptions , isForDisplay ) => {
432- return `${ field } IN (${ values . join ( ', ' ) } )` ;
432+ formatOp : ( field , op , values , valueSrc , opDef , operatorOptions , isForDisplay ) => {
433+ if ( valueSrc == 'value' )
434+ return `${ field } IN (${ values . join ( ', ' ) } )` ;
435+ else
436+ return `${ field } IN (${ values } )` ;
433437 } ,
434438 reversedOp : 'select_not_any_in' ,
435439 } ,
436440 select_not_any_in : {
437441 label : 'Not in' ,
438442 labelForFormat : 'NOT IN' ,
439- formatOp : ( field , op , values , opDef , operatorOptions , isForDisplay ) => {
440- return `${ field } NOT IN (${ values . join ( ', ' ) } )` ;
443+ formatOp : ( field , op , values , valueSrc , opDef , operatorOptions , isForDisplay ) => {
444+ if ( valueSrc == 'value' )
445+ return `${ field } NOT IN (${ values . join ( ', ' ) } )` ;
446+ else
447+ return `${ field } NOT IN (${ values } )` ;
441448 } ,
442449 reversedOp : 'select_any_in' ,
443450 } ,
444451 multiselect_equals : {
445452 label : 'Equals' ,
446453 labelForFormat : '==' ,
447- formatOp : ( field , op , values , opDef , operatorOptions , isForDisplay ) => {
448- return `${ field } == (${ values . join ( ', ' ) } )` ;
454+ formatOp : ( field , op , values , valueSrc , opDef , operatorOptions , isForDisplay ) => {
455+ if ( valueSrc == 'value' )
456+ return `${ field } == [${ values . join ( ', ' ) } ]` ;
457+ else
458+ return `${ field } == ${ values } ` ;
449459 } ,
450460 reversedOp : 'multiselect_not_equals' ,
451461 } ,
452462 multiselect_not_equals : {
453463 label : 'Not equals' ,
454464 labelForFormat : '!=' ,
455- formatOp : ( field , op , values , opDef , operatorOptions , isForDisplay ) => {
456- return `${ field } != (${ values . join ( ', ' ) } )` ;
465+ formatOp : ( field , op , values , valueSrc , opDef , operatorOptions , isForDisplay ) => {
466+ if ( valueSrc == 'value' )
467+ return `${ field } != [${ values . join ( ', ' ) } ]` ;
468+ else
469+ return `${ field } != ${ values } ` ;
457470 } ,
458471 reversedOp : 'multiselect_equals' ,
459472 } ,
@@ -465,7 +478,7 @@ export default {
465478 { label : 'Word 1' , placeholder : 'Enter first word' } ,
466479 'Word 2'
467480 ] ,
468- formatOp : ( field , op , values , opDef , operatorOptions , isForDisplay ) => {
481+ formatOp : ( field , op , values , valueSrc , opDef , operatorOptions , isForDisplay ) => {
469482 let val1 = values . first ( ) ;
470483 let val2 = values . get ( 1 ) ;
471484 return `${ field } ${ val1 } NEAR/${ operatorOptions . get ( 'proximity' ) } ${ val2 } ` ;
@@ -482,13 +495,15 @@ export default {
482495 } ,
483496 widgets : {
484497 text : {
498+ type : "text" ,
485499 valueSrc : 'value' ,
486500 factory : ( props ) => < TextWidget { ...props } /> ,
487501 formatValue : ( val , fieldDef , wgtDef , isForDisplay ) => {
488502 return isForDisplay ? '"' + val + '"' : JSON . stringify ( val ) ;
489503 } ,
490504 } ,
491505 number : {
506+ type : "number" ,
492507 valueSrc : 'value' ,
493508 factory : ( props ) => < NumberWidget { ...props } /> ,
494509 valueLabel : "Number" ,
@@ -498,6 +513,7 @@ export default {
498513 } ,
499514 } ,
500515 select : {
516+ type : "select" ,
501517 valueSrc : 'value' ,
502518 factory : ( props ) => < SelectWidget { ...props } /> ,
503519 formatValue : ( val , fieldDef , wgtDef , isForDisplay ) => {
@@ -506,6 +522,7 @@ export default {
506522 } ,
507523 } ,
508524 multiselect : {
525+ type : "multiselect" ,
509526 valueSrc : 'value' ,
510527 factory : ( props ) => < MultiSelectWidget { ...props } /> ,
511528 formatValue : ( vals , fieldDef , wgtDef , isForDisplay ) => {
@@ -514,6 +531,7 @@ export default {
514531 } ,
515532 } ,
516533 date : {
534+ type : "date" ,
517535 valueSrc : 'value' ,
518536 factory : ( props ) => < DateWidget { ...props } /> ,
519537 dateFormat : 'DD.MM.YYYY' ,
@@ -524,6 +542,7 @@ export default {
524542 } ,
525543 } ,
526544 time : {
545+ type : "time" ,
527546 valueSrc : 'value' ,
528547 factory : ( props ) => < TimeWidget { ...props } /> ,
529548 timeFormat : 'HH:mm' ,
@@ -534,6 +553,7 @@ export default {
534553 } ,
535554 } ,
536555 datetime : {
556+ type : "datetime" ,
537557 valueSrc : 'value' ,
538558 factory : ( props ) => < DateTimeWidget { ...props } /> ,
539559 timeFormat : 'HH:mm' ,
@@ -545,6 +565,7 @@ export default {
545565 } ,
546566 } ,
547567 boolean : {
568+ type : "boolean" ,
548569 valueSrc : 'value' ,
549570 factory : ( props ) => < BooleanWidget { ...props } /> ,
550571 labelYes : "Yes" ,
@@ -615,5 +636,9 @@ export default {
615636 } ,
616637 valueSourcesPopupTitle : "Select value source" ,
617638 canReorder : false ,
639+ canCompareFieldWithField : ( leftField , leftFieldConfig , rightField , rightFieldConfig ) => {
640+ //for type == 'select'/'multiselect' you can check listValues
641+ return true ;
642+ } ,
618643 }
619644} ;
0 commit comments