173229 - no subject - We have a Portal Report that work on ver

We have a Portal Report that work on version 7.3 to read some data from a CDT process variable. The Department columns in this report is configured to get its value from the following expression.

=if(isnull(pv!cdtHighLevelEstimate1.tDeptAssigned),pv!cdtHighLevelEstimateLevel2.tDeptAssigned,pv!cdtHighLevelEstimate1.tDeptAssigned)

All the other columns are defined using the same CDTs in the same fashion. The Portal Report takes care of formatting and looping; which is nice.

Now, we want to replace this Portal Report with a Dynamic Channel that displayed the table as displayed below. How can we achieve that and loop on the CDTs while doing the same if-condition as we did in Portal Report?

Thanks.


OriginalPostID-173229



  Discussion posts and replies are publicly visible

Parents
  • Thanks csteward, let me explain what I am trying to achieve a bit more ...

    The expression takes two input CDTs (both multiple)
    pv!cdtHighLevelEstimate1
    pv!cdtHighLevelEstimate2

    Each CDT contain text fields that represent:
    Department/Division
    Status
    Due Date
    Started
    Completed
    Estimate

    Uptil now, I was able to obtain the attached table using the following expression:

    =if(
    and(rule!fdCheckIsNull(pv!cdtHighLevelEstimate1),rule!fdCheckIsNull(pv!cdtHighLevelEstimate2)),"No Data available for Pipeline View.",

    rule!fdGetPipelineViewHeader() &
    apply(rule!fdGetPipelineViewRow,
    merge({"text1"}, {"text2"}, {"text3"}, {"text4"}, {"text5"}, {"text6"})
    )
    )

    The question is: I would like to have the table populated from CDT arrays following the rules below:

    1- if(isnull(pv!cdtHighLevelEstimate1.tDeptAssigned),pv!cdtHighLevelEstimateLevel2.tDeptAssigned,pv!cdtHighLevelEstimate1.tDeptAssigned),
    2- if(isnull(pv!cdtHighLevelEstimate1.iTaskId),pv!cdtHighLevelEstimateLevel2.tStatus ,pv!cdtHighLevelEstimate1.tStatus),
    3- text(todate(if(isnull(pv!cdtHighLevelEstimate1.iTaskId),pv!cdtHighLevelEstimateLevel2.dTaskDueDate,pv!cdtHighLevelEstimate1.dTaskDueDate)),"mmm dd, yyyy"),
    4- text(todate(if(isnull(pv!cdtHighLevelEstimate1.iTaskId),pv!cdtHighLevelEstimateLevel2.dTaskStartTime,pv!cdtHighLevelEstimate1.dTaskStartTime)),"mmm dd, yyyy"),
    5- text(todate(if(isnull(pv!cdtHighLevelEstimate1.iTaskId),pv!cdtHighLevelEstimateLevel2.dTaskEndTime,pv!cdtHighLevelEstimate1.dTaskEndTime)),"mmm dd, yyyy"),
    6- index ( {cons!FD_DD_HIGH_LEVEL_ESTIMATES_DISPLAY , cons!FD_DD_HIGH_LEVEL_ESTIMATES_UPDATED_DISPLAY} , lookup ( {cons!FD_DD_HIGH_LEVEL_ESTIMATES_VALUE , cons!FD_DD_HIGH_LEVEL_ESTIMATES_UPDATED_VALUE}, if ( isnull ( pv!cdtHighLevelEstimate1 .iTaskId ) , pv!cdtHighLevelEstimateLevel2 .tHighLevelEstimate , pv!cdtHighLevelEstimate1 .tHighLevelEstimate ) , - 1 ) , "Not Available" )

    Do you think there is a way to use the merge() function for that? Will it loop on the CDT array accessing each field? Is there a right syntax for this?

    Thanks

Reply
  • Thanks csteward, let me explain what I am trying to achieve a bit more ...

    The expression takes two input CDTs (both multiple)
    pv!cdtHighLevelEstimate1
    pv!cdtHighLevelEstimate2

    Each CDT contain text fields that represent:
    Department/Division
    Status
    Due Date
    Started
    Completed
    Estimate

    Uptil now, I was able to obtain the attached table using the following expression:

    =if(
    and(rule!fdCheckIsNull(pv!cdtHighLevelEstimate1),rule!fdCheckIsNull(pv!cdtHighLevelEstimate2)),"No Data available for Pipeline View.",

    rule!fdGetPipelineViewHeader() &
    apply(rule!fdGetPipelineViewRow,
    merge({"text1"}, {"text2"}, {"text3"}, {"text4"}, {"text5"}, {"text6"})
    )
    )

    The question is: I would like to have the table populated from CDT arrays following the rules below:

    1- if(isnull(pv!cdtHighLevelEstimate1.tDeptAssigned),pv!cdtHighLevelEstimateLevel2.tDeptAssigned,pv!cdtHighLevelEstimate1.tDeptAssigned),
    2- if(isnull(pv!cdtHighLevelEstimate1.iTaskId),pv!cdtHighLevelEstimateLevel2.tStatus ,pv!cdtHighLevelEstimate1.tStatus),
    3- text(todate(if(isnull(pv!cdtHighLevelEstimate1.iTaskId),pv!cdtHighLevelEstimateLevel2.dTaskDueDate,pv!cdtHighLevelEstimate1.dTaskDueDate)),"mmm dd, yyyy"),
    4- text(todate(if(isnull(pv!cdtHighLevelEstimate1.iTaskId),pv!cdtHighLevelEstimateLevel2.dTaskStartTime,pv!cdtHighLevelEstimate1.dTaskStartTime)),"mmm dd, yyyy"),
    5- text(todate(if(isnull(pv!cdtHighLevelEstimate1.iTaskId),pv!cdtHighLevelEstimateLevel2.dTaskEndTime,pv!cdtHighLevelEstimate1.dTaskEndTime)),"mmm dd, yyyy"),
    6- index ( {cons!FD_DD_HIGH_LEVEL_ESTIMATES_DISPLAY , cons!FD_DD_HIGH_LEVEL_ESTIMATES_UPDATED_DISPLAY} , lookup ( {cons!FD_DD_HIGH_LEVEL_ESTIMATES_VALUE , cons!FD_DD_HIGH_LEVEL_ESTIMATES_UPDATED_VALUE}, if ( isnull ( pv!cdtHighLevelEstimate1 .iTaskId ) , pv!cdtHighLevelEstimateLevel2 .tHighLevelEstimate , pv!cdtHighLevelEstimate1 .tHighLevelEstimate ) , - 1 ) , "Not Available" )

    Do you think there is a way to use the merge() function for that? Will it loop on the CDT array accessing each field? Is there a right syntax for this?

    Thanks

Children
No Data