Skip to content
Snippets Groups Projects
Commit fa098120 authored by Johannes Goderbauer's avatar Johannes Goderbauer
Browse files

[Projekt: Entwicklung - Neon][TicketNr.: 1041584][Filter - Attribute] ->...

[Projekt: Entwicklung - Neon][TicketNr.: 1041584][Filter - Attribute] -> Searchable Tags (Type VOID)
parent cf114aea
No related branches found
No related tags found
No related merge requests found
Showing
with 123 additions and 21 deletions
......@@ -634,6 +634,15 @@
<expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/isolanguage.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
</recordFieldMappings>
<filterExtensions>
<filterExtensionSet>
<name>Attribute_filter</name>
<filterFieldsProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess>
<filterValuesProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtensionSet>
</filterExtensions>
</dbRecordContainer>
<indexRecordContainer>
<name>index</name>
......
import("system.result");
import("AttributeFilter_lib");
var sqlCond = AttributeFilterExtensionMaker.makeFilterConditionSql();
result.string(sqlCond);
\ No newline at end of file
import("system.result");
import("AttributeFilter_lib");
var fields = AttributeFilterExtensionMaker.makeFilterFields();
result.string(fields);
\ No newline at end of file
import("system.result");
import("AttributeFilter_lib");
var values = AttributeFilterExtensionMaker.makeFilterValues();
result.object(values);
\ No newline at end of file
......@@ -563,6 +563,15 @@
<filtertype>EXTENDED</filtertype>
</consumerMapping>
</recordFieldMappings>
<filterExtensions>
<filterExtensionSet>
<name>Attribute_filter</name>
<filterFieldsProcess>%aditoprj%/entity/Product_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess>
<filterValuesProcess>%aditoprj%/entity/Product_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/Product_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtensionSet>
</filterExtensions>
</dbRecordContainer>
<indexRecordContainer>
<name>index</name>
......
import("system.result");
import("AttributeFilter_lib");
var sqlCond = AttributeFilterExtensionMaker.makeFilterConditionSql();
result.string(sqlCond);
\ No newline at end of file
import("system.result");
import("AttributeFilter_lib");
var fields = AttributeFilterExtensionMaker.makeFilterFields();
result.string(fields);
\ No newline at end of file
import("system.result");
import("AttributeFilter_lib");
var values = AttributeFilterExtensionMaker.makeFilterValues();
result.object(values);
\ No newline at end of file
......@@ -792,6 +792,15 @@
<isFilterable v="true" />
</dbRecordFieldMapping>
</recordFieldMappings>
<filterExtensions>
<filterExtensionSet>
<name>Attribute_filter</name>
<filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess>
<filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtensionSet>
</filterExtensions>
</dbRecordContainer>
<indexRecordContainer>
<name>index</name>
......
import("system.result");
import("AttributeFilter_lib");
var sqlCond = AttributeFilterExtensionMaker.makeFilterConditionSql();
result.string(sqlCond);
\ No newline at end of file
import("system.result");
import("AttributeFilter_lib");
var fields = AttributeFilterExtensionMaker.makeFilterFields();
result.string(fields);
\ No newline at end of file
import("system.result");
import("AttributeFilter_lib");
var values = AttributeFilterExtensionMaker.makeFilterValues();
result.object(values);
\ No newline at end of file
import("system.translate");
import("Entity_lib");
import("system.vars");
import("Context_lib");
......@@ -7,6 +8,8 @@ import("Attribute_lib");
import("system.entities");
import("system.util");
//TODO: comment lib
function AttributeSearchNameCoder(){}
AttributeSearchNameCoder.encode = function (pUid, pAttributeType)
......@@ -40,10 +43,14 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType)
.addParameter("ObjectType_param", pObjectType);
var attributeRows = entities.getRows(loadingConfig);
attributeRows.forEach(function(row){
var attributeType = row["ATTRIBUTE_TYPE"];
var contentType = AttributeTypeUtil.getContentType(attributeType);
if (attributeType.trim() == $AttributeTypes.VOID.toString())
{
contentType = "BOOLEAN";
}
if (contentType)
{
......@@ -72,11 +79,12 @@ AttributeFilterExtensionMaker.makeFilterFields = function()
AttributeFilterExtensionMaker.getFilterValues = function(pFilter)
{
var filter = JSON.parse(pFilter);
var name = name = AttributeSearchNameCoder.decode(filter.name);
var name = AttributeSearchNameCoder.decode(filter.name);
var attributeId = name.id;
var attrType = name.type;
if (attrType == $AttributeTypes.VOID.toString())
attrType = $AttributeTypes.BOOLEAN.toString();
var res = AttributeUtil.getPossibleListValues(attributeId, attrType);
if (res == null)
res = [];
......@@ -90,27 +98,47 @@ AttributeFilterExtensionMaker.makeFilterValues = function()
return res;
};
AttributeFilterExtensionMaker.getFilterCondition = function(pObjectType, pFilterName, pCondition, pIdTableName, pIdColumnName)
AttributeFilterExtensionMaker.getFilterCondition = function(pObjectType, pFilterName, pCondition, pRawValue, pOperatorName, pIdTableName, pIdColumnName)
{
var resSql;
var preparedValues = [];
var name = pFilterName;
name = AttributeSearchNameCoder.decode(name);
var attributeId = name.id;
var dbField = AttributeTypeUtil.getDatabaseField(name.type);
var condition = pCondition;
condition = condition.replace("{'table.column'}", dbField, "g");
var preparedValues = [
[pObjectType, SqlUtils.getSingleColumnType("AB_ATTRIBUTERELATION.OBJECT_TYPE")],
[attributeId, SqlUtils.getSingleColumnType("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID")]
];
var resSql = pIdColumnName + " in (select " + pIdTableName + "." + pIdColumnName + " \n\
from " + pIdTableName + " \n\
left join AB_ATTRIBUTERELATION on (AB_ATTRIBUTERELATION.OBJECT_ROWID = " + pIdTableName + "." + pIdColumnName + " \n\
and AB_ATTRIBUTERELATION.OBJECT_TYPE = ? \n\
and AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = ?) \n\
where " + condition + " )";
var attributeType = name.type;
if (attributeType == $AttributeTypes.VOID.toString())
{
preparedValues.push([pObjectType, SqlUtils.getSingleColumnType("AB_ATTRIBUTERELATION.OBJECT_TYPE")]);
preparedValues.push([attributeId, SqlUtils.getSingleColumnType("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID")]);
resSql = "(select count(*) \n\
from AB_ATTRIBUTERELATION \n\
where OBJECT_ROWID = " + pIdTableName + "." + pIdColumnName +" \n\
and OBJECT_TYPE = ? \n\
and AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = ?)";
if (pOperatorName == "IS NOT NULL" || pRawValue == "1" && pOperatorName == "LIKE" || pRawValue == "0" && pOperatorName == "NOT LIKE")
resSql += " > 0 ";
else
resSql += " = 0 ";
}
else
{
var dbField = AttributeTypeUtil.getDatabaseField(name.type);
var condition = pCondition;
condition = condition.replace("{'table.column'}", dbField, "g");
preparedValues.push([pObjectType, SqlUtils.getSingleColumnType("AB_ATTRIBUTERELATION.OBJECT_TYPE")]);
preparedValues.push([attributeId, SqlUtils.getSingleColumnType("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID")]);
resSql = pIdTableName + "." + pIdColumnName + " in (select " + pIdTableName + "." + pIdColumnName + " \n\
from " + pIdTableName + " \n\
left join AB_ATTRIBUTERELATION on (AB_ATTRIBUTERELATION.OBJECT_ROWID = " + pIdTableName + "." + pIdColumnName + " \n\
and AB_ATTRIBUTERELATION.OBJECT_TYPE = ? \n\
and AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID = ?) \n\
where " + condition + " )";
}
resSql = db.translateCondition([resSql, preparedValues]);
return resSql;
};
......@@ -120,7 +148,9 @@ AttributeFilterExtensionMaker.makeFilterConditionSql = function()
var objectType = ContextUtils.getCurrentContextId();
var filterName = vars.get("$local.name");
var filterCond = vars.get("$local.condition");
var filterRawValue = vars.get("$local.rawvalue");
var filterOpratorName = vars.get("$local.operator2").trim();
var uidInfo = EntityUtils.parseUidColumn(vars.get("$sys.uidcolumn"));
var res = AttributeFilterExtensionMaker.getFilterCondition(objectType, filterName, filterCond, uidInfo.table, uidInfo.column);
var res = AttributeFilterExtensionMaker.getFilterCondition(objectType, filterName, filterCond, filterRawValue, filterOpratorName, uidInfo.table, uidInfo.column);
return res;
};
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment