Hi
I am currently working on version 17.3.I have created a task report and the data of this task report is being displayed on a Tempo report in a grid.I have a column "Status" in this report for which I have an array of values:0; 0; 0; 0; 0; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2
On the similar lines I want to depict the report data via. a pie chart.I want to having a grouping based on the "Status" but when I make use of aggregation in a!query(); I get the output "No Records Found".Also the tasks with status 0 i.e. Assigned is also not getting displayed in the pie chart if I ignore grouping and want to display the entire data set.Below is the code snippet for the same:
load( local!selectedStatus, local!chartPagingInfo: a!pagingInfo( startIndex: 1, batchSize: -1, sort:a!sortInfo( field:"c1", ascending:true ) ), with( local!chartDatasubset:a!queryProcessAnalytics( report: cons!PH_DAILY_TASK_REPORT, contextProcessModels: cons!PH_MODEL_FOR_DAILY_TASK_REPORT, query: a!query( pagingInfo: local!chartPagingInfo ) ), { if( local!chartDatasubset.totalCount = 0, a!textField( value: "No records found", readOnly: "TRUE" ), { a!textField( value:local!chartDatasubset.data.c1, readOnly:true ), a!pieChartField( series: a!forEach( items: local!chartDatasubset.data, expression: a!chartSeries( label: fv!item.c1, data: fv!item.c1, links: a!dynamicLink(value: fv!item.c1, saveInto: local!selectedStatus) ) ) ) } ) } ))
Thanx in advance!!
Discussion posts and replies are publicly visible
Please refer to https://docs.appian.com/suite/help/17.3/Pie_Chart_Component.html
First, I strongly recommend that when you're going to paste a large block of code, you use the Rich Text editor and use the menu, "Insert" --> "Insert Code", and paste your code in there - it preserves indentation which makes things much easier to read, and puts it in a box to prevent the post from stretching super long.
So, I was able to manually construct a faux aggregation within a local variable and use that to make a pie chart which I believe is pretty close to what you're after. See code below:
load( local!statusArray: { 0; 0; 0; 0; 0; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2 }, with( local!aggregate: rule!GLBL_removeDuplicateArrayMembers( a!forEach( local!statusArray, { status: fv!item, count: length(where(local!statusArray = fv!item)) } ) ), a!sectionLayout( contents: { a!paragraphField( label: "debug output", labelPosition: "ADJACENT", value: local!aggregate ), a!pieChartField( label: "test pie chart", labelPosition: "ADJACENT", series: a!forEach( local!aggregate, a!chartSeries( label: fv!item.status, data: fv!item.count ) ) ) } ) ) )
This is the output as-is:
You're right - initially it didn't occur to me that the aggregation count would work just as well when run on a pre-de-duplicated array.
Here's my revised version:
load( local!statusArray: { 0; 0; 0; 0; 0; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2 }, with( local!aggregate: a!forEach( rule!GLBL_removeDuplicateArrayMembers( local!statusArray ), { status: fv!item, count: length(where(local!statusArray = fv!item)) } ), a!sectionLayout( contents: { a!paragraphField( label: "debug output", labelPosition: "ADJACENT", value: local!aggregate ), a!pieChartField( label: "test pie chart", labelPosition: "ADJACENT", series: a!forEach( local!aggregate, a!chartSeries( label: fv!item.status, data: fv!item.count ) ) ) } ) ) )