Advanced Search: Undefined for enums and unit tests

SVN:b1162[5516]
This commit is contained in:
Eric Espié
2018-03-23 16:05:37 +00:00
parent 52731d7b0a
commit b566bead31
5 changed files with 18 additions and 9 deletions

View File

@@ -1602,6 +1602,7 @@ class FunctionExpression extends Expression
{
$aCriteria = array_merge($oExpression->GetCriterion($oSearch, $aArgs, $bRetrofitParams, $oAttDef), $aCriteria);
}
$aCriteria['has_undefined'] = true;
break;
case 'NOW':

View File

@@ -1241,8 +1241,8 @@ Lors de l\'association à un déclencheur, on attribue à chaque action un numé
// Expression to Natural language
//
Dict::Add('FR FR', 'French', 'Français', array(
'Expression:Operator:AND' => 'ET',
'Expression:Operator:OR' => 'OU',
'Expression:Operator:AND' => ' ET ',
'Expression:Operator:OR' => ' OU ',
'Expression:Unit:Short:DAY' => 'j',
'Expression:Unit:Short:WEEK' => 's',
'Expression:Unit:Short:MONTH' => 'm',

View File

@@ -334,11 +334,6 @@ class CriterionToSearchForm extends CriterionConversionAbstract
return $aCriteria;
}
protected static function EnumToSearchForm($aCriteria, $aFields)
{
return self::ExternalKeyToSearchForm($aCriteria, $aFields);
}
protected static function DateToSearchForm($aCriteria, $aFields)
{
return self::DateTimeToSearchForm($aCriteria, $aFields);
@@ -417,6 +412,10 @@ class CriterionToSearchForm extends CriterionConversionAbstract
return $aCriteria;
}
protected static function EnumToSearchForm($aCriteria, $aFields)
{
return self::ExternalKeyToSearchForm($aCriteria, $aFields);
}
protected static function ExternalKeyToSearchForm($aCriteria, $aFields)
{
@@ -442,6 +441,14 @@ class CriterionToSearchForm extends CriterionConversionAbstract
break;
case 'IN':
break;
case 'OR':
// Special case when undefined and other values are selected
$aCriteria['operator'] = CriterionConversionAbstract::OP_IN;
if (isset($aCriteria['has_undefined']) && $aCriteria['has_undefined'])
{
$aCriteria['values'][] = array('value' => 'null', 'label' => 'null');
}
break;
default:
// Unknown operator
$aCriteria['widget'] = AttributeDefinition::SEARCH_WIDGET_TYPE_RAW;

View File

@@ -355,6 +355,7 @@ class CriterionConversionTest extends ItopDataTestCase
'enum IN' => array('OQL' => "SELECT Contact WHERE status IN ('active', 'inactive')"),
'enum NOT IN' => array('OQL' => "SELECT Contact WHERE status NOT IN ('active')"),
'enum undefined' => array('OQL' => "SELECT FunctionalCI WHERE ((business_criticity = 'high') OR ISNULL(business_criticity)) AND 1"),
'enum undefined1' => array('OQL' => "SELECT FunctionalCI WHERE ((business_criticity IN ('high', 'medium')) OR ISNULL(business_criticity)) AND 1"),
'key NOT IN' => array('OQL' => "SELECT Contact WHERE org_id NOT IN ('1')"),
'key IN' => array('OQL' => "SELECT Contact WHERE org_id IN ('1')"),
'key empty' => array('OQL' => "SELECT Person WHERE location_id = '0'"),

View File

@@ -56,9 +56,9 @@ class SearchFormTest extends ItopDataTestCase
public function GetFieldsProvider()
{
return array(
array("SELECT Contact", 7, 'zlist'),
array("SELECT Contact", 8, 'zlist'),
array("SELECT Contact AS C WHERE C.status = 'active'", 4, 'others'),
array("SELECT Person", 11, 'zlist'),
array("SELECT Person", 12, 'zlist'),
);
}