Question
Custom filters on CDT that is not associated with any table.
Hello community,
I am trying to make UI which has a read only grid which is populated based on data from integration, we passed a cdt as an input to this grid, now I wanted to put filters on that data using drop downs and date filters (start date and end date), I did came up filtering the cdt using wherecontains() function and foreach() loop and got different index for them. but I couldn't make them work like record filters. how do I group them ?
some code below for understanding.
Thanks.
a!localVariables(
local!selection,
local!responseData: rule!PNK_DataForGrid(),
local!actualData: local!responseData,
local!customerAddress: union(
local!actualData.customerName,
local!actualData.customerName
),
local!customerNameSelection,
local!ftaNames: union(
local!actualData.customerAddress,
local!actualData.customerAddress
),
local!customerAddressselection,
local!startDate,
local!endDate,
local!idx1: wherecontains(
touniformstring(local!customerNameSelection),
touniformstring(local!actualData.customerName)
),
local!idx2: wherecontains(
touniformstring(local!customerAddressselection),
touniformstring(local!actualData.customerAddress)
),
local!idx3: fn!reject(
fn!isnull,
a!forEach(
items: local!actualData,
expression: if(
or(
rule!fn!IsNull(local!startDate),
rule!fn!IsNull(local!endDate),
local!startDate > local!endDate
),
null(),
if(
and(
local!startDate - 1 < fv!item.periodStart,
fv!item.periodEnd < local!endDate + 1
),
fv!index,
null
)
)
)
),
local!idx: union(
local!idx1,
local!idx2,
tointeger(local!idx3)
),
local!filteredData: a!forEach(
items: local!idx,
expression: { local!actualData[fv!item] }
),
{
a!sectionLayout(
label: "Customer DATA",
contents: {
a!columnsLayout(
columns: {
a!columnLayout(
contents: {
rule!PNK_DropDownForCustomerSelection(
customerName: local!customerName,
customerNameSelection: local!customerNameSelection,
customerAddress: local!customerAddress,
customerAddressSelection: local!customerAddressSelection
)
}
),
a!columnLayout(
contents: {
rule!PNK_DateComponentFilters(
requestStartDate: local!startDate,
requestEndDate: local!endDate
)
}
)
}
),
a!gridField(
label: "",
labelPosition: "ABOVE",
data: if(
fn!IsNull(local!idx),
local!actualData,
local!filteredData
),
columns: {
a!gridColumn(
label: "Name",
value: fv!row.customerName
),
a!gridColumn(
label: "Address",
value: fv!row.customerAddress
),
a!gridColumn(
label: "Start Date",
value: fv!row.periodstart
),
a!gridColumn(
label: "End Date",
value: fv!row.periodend
)
},
selectable: true,
selectionStyle: "CHECKBOX",
selectionValue: local!selection,
selectionSaveInto: local!selection,
selectionRequired: true,
validations: {}
)
}
),
}
)