Skip to content
Snippets Groups Projects
Commit 1a695493 authored by Andreas Schindlbeck's avatar Andreas Schindlbeck
Browse files

#1060652 Favorites: filterExtensions

parent d92caed3
No related branches found
No related tags found
No related merge requests found
Showing with 196 additions and 16 deletions
......@@ -7,6 +7,7 @@
<grantCreate v="true" />
<grantUpdate v="true" />
<grantDelete v="true" />
<usePermissions v="false" />
<titlePlural>Favorites</titlePlural>
<recordContainer>jDitoRecordContainer</recordContainer>
<entityFields>
......@@ -36,6 +37,7 @@
<entityField>
<name>GROUP_TITLE</name>
<titleProcess>%aditoprj%/entity/Favorite_entity/entityfields/group_title/titleProcess.js</titleProcess>
<displayValueProcess>%aditoprj%/entity/Favorite_entity/entityfields/group_title/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
<name>GROUP_TYPE</name>
......@@ -55,11 +57,11 @@
<recordContainers>
<jDitoRecordContainer>
<name>jDitoRecordContainer</name>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias>
<jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
<isFilterable v="true" />
<isGroupable v="true" />
<isSortable v="true" />
<contentProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js</contentProcess>
<rowCountProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/rowCountProcess.js</rowCountProcess>
<onDelete>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js</onDelete>
<recordFieldMappings>
<jDitoRecordFieldMapping>
......@@ -90,6 +92,30 @@
<name>USER_ID.value</name>
</jDitoRecordFieldMapping>
</recordFieldMappings>
<filterExtensions>
<filterExtension>
<name>groupGroupNameExtension</name>
<title>Gruppenname</title>
<contentType>TEXT</contentType>
<filterValuesProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/filterextensions/groupgroupnameextension/filterValuesProcess.js</filterValuesProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>groupTitleExtension</name>
<title>Titel</title>
<contentType>TEXT</contentType>
<filterValuesProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/filterextensions/grouptitleextension/filterValuesProcess.js</filterValuesProcess>
<isLookupFilter v="false" />
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>groupTypeExtension</name>
<title>Typ</title>
<contentType>TEXT</contentType>
<filterValuesProcess>%aditoprj%/entity/Favorite_entity/recordcontainers/jditorecordcontainer/filterextensions/grouptypeextension/filterValuesProcess.js</filterValuesProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
</filterExtensions>
</jDitoRecordContainer>
</recordContainers>
</entity>
import("system.vars");
import("system.result");
import("system.translate");
if(vars.get("$field.GROUP_TITLE").equals(""))
// result.string(translate.text("Standard"))
result.string("Standard");
\ No newline at end of file
......@@ -5,15 +5,12 @@ import("system.favorite");
import("system.tools");
import("system.entities");
var loadConfig;
//$local.idvalues
if(vars.get("$local.idvalues") && vars.get("$local.idvalues").length != 0)
{
var selected = vars.get("$local.idvalues");
var selectedFavos = [];
for(i = 0; i < selected.length; i++)
for(let i = 0; i < selected.length; i++)
{
selectedFavos.push(buildFavorite(favorite.getFavoriteById(selected[i])));
}
......@@ -21,21 +18,86 @@ if(vars.get("$local.idvalues") && vars.get("$local.idvalues").length != 0)
}
else
{
var allFavorites = favorite.getAllFavorites(tools.getCurrentUser()["name"]);
var filters = vars.get("$local.filter");
var activeFilters = [];
if(filters["filter"] != null)
filters["filter"]["childs"].forEach(child => activeFilters.push(child));
var finishedFavoritesForDisplay = [];
var filteredFavorites = [];
var allFavorites = favorite.getAllFavorites(tools.getCurrentUser()["name"]);
for(i = 0; i < allFavorites.length; i++)
for(let i = 0; i < allFavorites.length; i++)
{
var favo = allFavorites[i];
finishedFavoritesForDisplay.push(buildFavorite(favo));
var builtFavo = buildFavorite(favo);
if(isFiltered(activeFilters, builtFavo))
finishedFavoritesForDisplay.push(builtFavo);
}
result.object(finishedFavoritesForDisplay);
}
function buildFavorite(favo)
function isFiltered(filters, fav)
{
var favoObjectType = fav[3];
var favoGroupName = fav[1];
var favoRowId = fav[5];
var favoTitle = fav[6];
var isFiltered = true;
for(let i = 0; i < filters.length; i++)
{
if(filters[i]["name"].includes("groupTypeExtension"))
{
if(!isValid(favoObjectType, filters[i]))
{
isFiltered = false;
break;
}
}
if(filters[i]["name"].includes("groupTitleExtension"))
{
if(!isValid(favoTitle, filters[i]))
{
isFiltered = false;
break;
}
}
if(filters[i]["name"].includes("groupGroupNameExtension"))
{
if(!isValid(favoObjectType, filters[i]))
{
isFiltered = false;
break;
}
}
}
return isFiltered;
}
function isValid(value, filter)
{
loadConfig = entities.createConfigForLoadingRows();
var operator = filter["operator"];
var filterValue = filter["key"];
switch(operator)
{
case "EQUAL":
return value.equals(filterValue);
case "CONTAINS":
return value.includes(filterValue);
}
return false;
}
function buildFavorite(favo)
{
var loadConfig = entities.createConfigForLoadingRows();
loadConfig.entity(ContextUtils.getEntity(favo["objecttype"]));
loadConfig.uid(favo["rowid"]);
loadConfig.fields(["#CONTENTTITLE", "#IMAGE"]);
......
import("system.favorite");
import("system.tools");
import("system.result");
import("Sql_lib");
import("system.logging");
logging.log("groupNameExtensionValuesProcess");
var allTypes = [];
var filterCond = newWhere("ASYS_RECORDGROUP.USER_ID", tools.getCurrentUser()["name"]);
var groupNames = (new SqlBuilder()).selectDistinct("ASYS_RECORDGROUP.TITLE")
.from("ASYS_RECORDGROUP")
.where(filterCond)
.arrayColumn();
groupNames.forEach(element => {
allTypes.push([element, element]);
});
result.object(Array.from(allTypes));
import("system.favorite");
import("system.tools");
import("system.result");
import("Sql_lib");
import("system.logging");
var allTitles = [];
var filterCond = newWhere("ASYS_RECORDGROUP.USER_ID", tools.getCurrentUser()["name"]);
var groupNames = (new SqlBuilder()).selectDistinct("ASYS_RECORDGROUP.TITLE")
.from("ASYS_RECORDGROUP")
.where(filterCond)
.arrayColumn();
groupNames.forEach(element => {
allTypes.push([element, element]);
});
result.object(Array.from(allTypes));
\ No newline at end of file
import("system.translate");
import("system.result");
import("system.project");
import("system.tools");
import("system.logging");
import("Context_lib");
var allContexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT);
var permittedContexts = [];
for(i = 0; i < allContexts.length; i++)
{
var isFavoEnabled = false;
var entityname = ContextUtils.getEntity(allContexts[i][0]);
var entity = null;
if(entityname)
entity = project.getDataModel(project.DATAMODEL_KIND_ENTITY,entityname);
if(entity && entity[7].equals("true")) //favoritesEnabled
permittedContexts.push([allContexts[i][0], translate.text(allContexts[i][0])]);
}
result.object(permittedContexts);
import("system.tools");
import("system.result");
import("system.favorite");
result.string(favorite.getAllFavorites(tools.getCurrentUser()["name"]).length);
\ No newline at end of file
......@@ -44,5 +44,28 @@
</neonTableColumn>
</columns>
</tableViewTemplate>
<treeTableViewTemplate>
<name>FavoriteTree</name>
<parentField>TITLE</parentField>
<entityField>#ENTITY</entityField>
<columns>
<neonTreeTableColumn>
<name>3f35104a-7ccc-44aa-8b9a-9de31d410f81</name>
<entityField>PICTURE</entityField>
</neonTreeTableColumn>
<neonTreeTableColumn>
<name>b7660bdb-7ae4-46c5-a0a6-5127244bfcf8</name>
<entityField>OBJECT_TYPE</entityField>
</neonTreeTableColumn>
<neonTreeTableColumn>
<name>d68cc010-2d84-43d1-a333-39f9fdd3a23a</name>
<entityField>TITLE</entityField>
</neonTreeTableColumn>
<neonTreeTableColumn>
<name>d6e9557d-1368-4bc3-8638-fa01e24fcbf3</name>
<entityField>GROUP_TITLE</entityField>
</neonTreeTableColumn>
</columns>
</treeTableViewTemplate>
</children>
</neonView>
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