Advanced Search: generic title for raw filters on joined classes

SVN:b1162[5551]
This commit is contained in:
Eric Espié
2018-03-28 07:46:47 +00:00
parent 7868a38137
commit 5772042dd3
6 changed files with 45 additions and 6 deletions

View File

@@ -871,6 +871,21 @@ class FieldExpression extends UnaryExpression
{
return $aAttDefs[$this->m_sName];
}
else
{
if ($this->m_sName == 'id')
{
$aParams = array(
'default_value' => 0,
'is_null_allowed' => false,
'allowed_values' => null,
'depends_on' => null,
'sql' => 'id',
);
return new AttributeInteger($this->m_sName, $aParams);
}
}
}
return null;

View File

@@ -1468,6 +1468,9 @@ When associated with a trigger, each action is given an "order" number, specifyi
'UI:Search:Criteria:DateTime:PlaceholderFromTime' => 'Any date',
'UI:Search:Criteria:DateTime:PlaceholderUntil' => 'Any date',
'UI:Search:Criteria:DateTime:PlaceholderUntilTime' => 'Any date',
'UI:Search:Criteria:Raw:Filtered' => 'Filtered',
'UI:Search:Criteria:Raw:FilteredOn' => 'Filtered on %1$s',
));
//

View File

@@ -1234,6 +1234,9 @@ Lors de l\'association à un déclencheur, on attribue à chaque action un numé
// -
'UI:Search:Value:Filter:Placeholder' => 'Filter...',
'UI:Search:Value:Toggler:CheckAllNone' => 'Check all / none',
'UI:Search:Criteria:Raw:Filtered' => 'Filtré',
'UI:Search:Criteria:Raw:FilteredOn' => 'Filtré sur %1$s',
));

View File

@@ -32,6 +32,8 @@ use Combodo\iTop\Application\Search\CriterionConversionAbstract;
use DateInterval;
use DateTime;
use Dict;
use Exception;
use MetaModel;
class CriterionToSearchForm extends CriterionConversionAbstract
{
@@ -40,9 +42,11 @@ class CriterionToSearchForm extends CriterionConversionAbstract
* @param array $aAndCriterionRaw
* @param array $aFieldsByCategory
*
* @param array $aClasses all the classes of the filter
*
* @return array
*/
public static function Convert($aAndCriterionRaw, $aFieldsByCategory)
public static function Convert($aAndCriterionRaw, $aFieldsByCategory, $aClasses)
{
$aAllFields = array();
foreach($aFieldsByCategory as $aFields)
@@ -71,6 +75,22 @@ class CriterionToSearchForm extends CriterionConversionAbstract
if (!array_key_exists('ref', $aCriteria) || !array_key_exists($aCriteria['ref'], $aAllFields))
{
$aCriteria['widget'] = AttributeDefinition::SEARCH_WIDGET_TYPE_RAW;
$aCriteria['label'] = Dict::S('UI:Search:Criteria:Raw:Filtered');
if (array_key_exists('ref', $aCriteria))
{
$aRef = explode('.', $aCriteria['ref']);
if (isset($aClasses[$aRef[0]]))
{
$sClass = $aClasses[$aRef[0]];
try
{
$aCriteria['label'] = Dict::Format('UI:Search:Criteria:Raw:FilteredOn', MetaModel::GetName($sClass));
}
catch (Exception $e)
{
}
}
}
}
if (array_key_exists('widget', $aCriteria))
{

View File

@@ -206,8 +206,6 @@ class SearchForm
public function GetFields($oSet)
{
$oSearch = $oSet->GetFilter();
// TODO: Later consider all the fields including the joined classes
//$aAllClasses = $oSearch->GetJoinedClasses();
$aAllClasses = $oSearch->GetSelectedClasses();
$aAuthorizedClasses = array();
foreach($aAllClasses as $sAlias => $sClassName)
@@ -334,7 +332,7 @@ class SearchForm
}
/**
* @param \DBSearch $oSearch
* @param \DBObjectSearch $oSearch
* @param array $aFields
*
* @param array $aArgs
@@ -367,7 +365,7 @@ class SearchForm
}
$aAndCriterion[] = $oAndSubExpr->GetCriterion($oSearch);
}
$aAndCriterion = CriterionToSearchForm::Convert($aAndCriterion, $aFields);
$aAndCriterion = CriterionToSearchForm::Convert($aAndCriterion, $aFields, $oSearch->GetJoinedClasses());
$aOrCriterion[] = array('and' => $aAndCriterion);
}

View File

@@ -165,7 +165,7 @@ class CriterionConversionTest extends ItopDataTestCase
$oSearchForm = new SearchForm();
$oSearch = \DBSearch::FromOQL("SELECT Contact");
$aFields = $oSearchForm->GetFields(new \DBObjectSet($oSearch));
$aRes = CriterionToSearchForm::Convert($aCriterion, $aFields);
$aRes = CriterionToSearchForm::Convert($aCriterion, $aFields, $oSearch->GetJoinedClasses());
$this->debug($aRes);
$this->assertEquals($sExpectedOperator, $aRes[0]['operator']);
}