Arthur
Arthur

Reputation: 1704

icCube - set serie color for 2 dimensions in the columns in a amCharts combo chart

I have got the following dynamic chart (see attached picture). For the sake of reproducability I have created a very simple chart based on the standard icCube's sales model.

The idea is to have two facts on the column axes with the data for the selected years. To distinguish between the facts I want to assign a color to the facts that fades over the years. When you add years, the new year will get the color that belongs to the fact, but a little bit lighter. The screenprints below will clarify.

My question is: is there a way to do this with amCharts/combo in relation with the MDX/setting of icCube?

In the attachments you see two graphs: this is what I intend

but when I de-select 2008, this happens: this happens/ the issue

I have included the JSON so you can reproduce this in the Sales demo on a plain vanilla icCUbe 5.1.2 installation.

    {
    "classID": "ic3.ReportGuts",
    "guts_": {
        "ic3Version": 12,
        "schemaName": "Sales",
        "cubeName": "Sales",
        "layout": {
            "classID": "ic3.FixedLayout",
            "guts_": {
                "ic3Version": 12,
                "grid": 10,
                "boxes": [
                    {
                        "classID": "ic3.FixedLayoutBox",
                        "guts_": {
                            "ic3Version": 12,
                            "header": "chart with color serie that should match the selected fact (orange = Amount, blue = Amount_2)",
                            "behaviour": "Fixed Box",
                            "noPrint": false,
                            "position": {
                                "top": 100,
                                "left": 0,
                                "width": 1021,
                                "height": 421
                            },
                            "widgetAdapterUid": "w12",
                            "zIndex": 2008
                        }
                    },
                    {
                        "classID": "ic3.FixedLayoutBox",
                        "guts_": {
                            "ic3Version": 12,
                            "header": "select years",
                            "behaviour": "Fixed Box",
                            "noPrint": false,
                            "position": {
                                "top": 0,
                                "left": 60,
                                "width": 630,
                                "height": 80
                            },
                            "widgetAdapterUid": "w14",
                            "zIndex": 2009
                        }
                    }
                ],
                "theme": "Classic",
                "sizeIndicator": {
                    "width": 1024,
                    "height": 708
                }
            }
        },
        "widgetMgr": {
            "classID": "ic3.WidgetAdapterContainerMgr",
            "guts_": {
                "ic3Version": 12,
                "items": [
                    {
                        "classID": "ic3.AmchartsComboAdapter",
                        "guts_": {
                            "ic3Version": 12,
                            "navigationGuts": {
                                "classID": "ic3.AmChartsNavigationStrategy",
                                "guts_": {
                                    "ic3Version": 12,
                                    "menuVisibility": {
                                        "back": true,
                                        "axisXChange": "All",
                                        "axisYChange": "All",
                                        "filter": "All",
                                        "reset": true,
                                        "widget": true,
                                        "others": "All"
                                    },
                                    "maxAxisMemberCount": 10,
                                    "selectionMode": "disabled",
                                    "drillDownStrategy": {
                                        "type": "mdxExpression",
                                        "options": {
                                            "drd_mdx": "order(nonempty($member.children, @{selMeasure}), @{selMeasure}, BDESC)"
                                        }
                                    }
                                }
                            },
                            "ic3_name": "widget-1",
                            "ic3_uid": "w12",
                            "ic3_eventMapper": {
                                "classID": "ic3.EventWidgetMapper",
                                "guts_": {
                                    "__ic3_widgetEventsDescription": {},
                                    "fireOnRefresh": {
                                        "name": "All Events (default)",
                                        "uniqueName": "all",
                                        "parentRowId": -1,
                                        "type": "OT"
                                    },
                                    "ic3queryRefresh": "selDimensie"
                                }
                            },
                            "ic3_mdxBuilderUid": "m6",
                            "__ic3_widgetTypeName": "amCharts/Combo",
                            "ic3extraOptions": ":{  \"categoryAxis\": {\n    \"gridPosition\": \"middle\",\n    \"gridAlpha\": 0,\n    \"labelFunction\": function(valueText, serialDataItem, categoryAxis) {\n        return valueText.substr(0,10).replace(/\\s+/g, '<br>');\n    }\n  }\n\n }",
                            "graphs": [
                                {
                                    "lineThickness": 3,
                                    "balloonText": "[[category]]<br>[[title]]: <b>[[fValue]]</b>"
                                }
                            ],
                            "ic3ChartType": [
                                "column",
                                "column"
                            ],
                            "legendPosition": "bottom"
                        }
                    },
                    {
                        "classID": "ic3.QueryFilterButtonListAdapter",
                        "guts_": {
                            "ic3Version": 12,
                            "ic3_name": "widget-0",
                            "ic3_uid": "w14",
                            "ic3_eventMapper": {
                                "classID": "ic3.EventWidgetMapper",
                                "guts_": {
                                    "ic3selection": "selYear",
                                    "__ic3_widgetEventsDescription": {}
                                }
                            },
                            "ic3_mdxBuilderUid": "m1",
                            "__ic3_widgetTypeName": "icCube/Buttons",
                            "selectionMode": "multi",
                            "layout": "horizontal"
                        }
                    }
                ]
            }
        },
        "constantMgr": {
            "classID": "ic3.ConstantsMgr",
            "guts_": {
                "constant": []
            }
        },
        "cssMgr": {
            "classID": "ic3.CssMgr",
            "guts_": {}
        },
        "javascriptMgr": {
            "classID": "ic3.ReportJavascriptMgr",
            "guts_": {
                "ic3Version": 12,
                "js": "/**                                                                      \n * A function called each time an event is generated.                    \n *                                                                       \n * @param context the same object is passed between consumeEvent calls.  \n *                Can be used to store information.                      \n *        {                                                              \n *          $report   : jQuery context of the report container           \n *          fireEvent : a function( name, value ) triggering an event    \n *        }                                                              \n *                                                                       \n * @param event the event information                                    \n *                                                                       \n          {                                                              \n *          name  : as specified in the 'Events' tab                     \n *          value : (optional) actual event value                        \n *          type  : (optional) e.g., ic3selection                        \n *        }                                                              \n *                                                                       \n * Check the 'Report Event Names' menu for the list of available events. \n */                                                                      \n/*                                                                       \nfunction consumeEvent( context, event ) {                                \n  if (event.name == 'ic3-report-init') {                                 \n    // add your code here                                                \n  }                                                                      \n}                                                                        \n*/                                                                       \n"
            }
        },
        "calcMeasureMgr": {
            "classID": "ic3.CalcMeasureMgr",
            "guts_": {
                "measures": [
                    {
                        "name": "Amount2",
                        "expression": "1.1*[amount]",
                        "properties": null
                    }
                ]
            }
        },
        "mdxQueriesMgr": {
            "classID": "ic3.MdxQueriesContainerMgr",
            "guts_": {
                "mdxQueries": {
                    "classID": "ic3.BaseContainerMgr",
                    "guts_": {
                        "ic3Version": 12,
                        "items": [
                            {
                                "classID": "ic3.QueryBuilderWidget",
                                "guts_": {
                                    "mdxWizard": {
                                        "classID": "ic3.QueryBuilderWizardForm",
                                        "guts_": {
                                            "rows": [
                                                {
                                                    "classID": "ic3.QueryBuilderHierarchyForm",
                                                    "guts_": {
                                                        "hierarchy": {
                                                            "name": "Product",
                                                            "uniqueName": "[Product].[Product]"
                                                        },
                                                        "type": "membersOfLevel",
                                                        "membersOfLevel": "[Product].[Product].[Article]"
                                                    }
                                                }
                                            ],
                                            "cols": [
                                                {
                                                    "classID": "ic3.QueryBuilderMeasuresFormBase",
                                                    "guts_": {
                                                        "measures": [
                                                            {
                                                                "name": "Amount",
                                                                "uniqueName": "[Measures].[Amount]",
                                                                "type": "ME"
                                                            },
                                                            {
                                                                "name": "Amount2",
                                                                "uniqueName": "[Measures].[Amount2]",
                                                                "type": "RCME"
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "classID": "ic3.QueryBuilderEventsFilter",
                                                    "guts_": {
                                                        "mdxStatement": "@{selYear}"
                                                    }
                                                }
                                            ],
                                            "filters": [],
                                            "nonEmptyOnRows": false,
                                            "nonEmptyOnColumns": false
                                        }
                                    },
                                    "mdxFlat": {
                                        "classID": "ic3.QueryBuilderFlatMdxForm",
                                        "guts_": {
                                            "useMdxStatement": false
                                        }
                                    },
                                    "ic3_name": "mdx Query-0",
                                    "ic3_uid": "m6"
                                }
                            }
                        ]
                    }
                },
                "mdxFilter": {
                    "classID": "ic3.BaseContainerMgr",
                    "guts_": {
                        "ic3Version": 12,
                        "items": [
                            {
                                "classID": "ic3.NewFilterQueryBuilderForm",
                                "guts_": {
                                    "hierarchy": {
                                        "name": "Year",
                                        "uniqueName": "[Time].[Year]"
                                    },
                                    "type": "membersOfLevel",
                                    "membersOfLevel": "[Time].[Year].[Year]",
                                    "defaultsMdx": "2008,2009,2010",
                                    "addDefaultMember": false,
                                    "useAllMember": false,
                                    "useDefaultMemberIfEmpty": false,
                                    "ic3_name": "mdx Filter-0",
                                    "ic3_uid": "m1"
                                }
                            }
                        ]
                    }
                },
                "actionBuilders": {
                    "classID": "ic3.BaseContainerMgr",
                    "guts_": {
                        "ic3Version": 12,
                        "items": []
                    }
                }
            }
        }
    }
}

Upvotes: 4

Views: 433

Answers (3)

Arthur
Arthur

Reputation: 1704

Having read that there is no answer, yet. I have created the following work-around:

  • I fix the total years displayed to 4 years in total
  • In the MDX statement I

This is the MDX statement I use:

 WITH
 MEMBER [Time].[Year].[All-M].[_1] as null
 MEMBER [Time].[Year].[All-M].[_2] as null
 MEMBER [Time].[Year].[All-M].[_3] as null
 MEMBER [Measures].[Amount2] AS 1.1*[amount]
 SET [selection] as  order( @{selYear},[Time].[Year].currentmember.key, bdesc) +
     [Time].[Year].[All-M].[_1] + [Time].[Year].[All-M].[_2] + [Time].[Year].[All-M].[_3] 
 SELECT {[measures].[Amount]} *  [Time].[Year].[All-M].[_1]
+ item( ({[measures].[Amount]} *  {[selection]}),3) 
+ item( ({[measures].[Amount]} *  {[selection]}),2) 
+ item( ({[measures].[Amount]} *  {[selection]}),1) 
+ item( ({[measures].[Amount]} *  {[selection]}),0)
+ item( ({[measures].[Amount2]} *  {[selection]}),3) 
+ item( ({[measures].[Amount2]} *  {[selection]}),2) 
+ item( ({[measures].[Amount2]} *  {[selection]}),1) 
+ item( ({[measures].[Amount2]} *  {[selection]}),0)
 ON COLUMNS,
{ [Product].[Product].[Article].allmembers } ON ROWS
 FROM [Sales]

I do not know why I have to select the 1st tuple (amount * _1), but if I do not select it I get a MDX error.

Nevertheless, I now obtain a perfectly tuned chart: 4 years selected 2 years selected

Hope it might be of help to others.

Upvotes: 1

ic3
ic3

Reputation: 7690

In the current version you can use for the column colors either the theme palette or the color defined at MDX level in the member ( @Ic3Color). To activate the second option you set the flag 'Use MDX Member Colors' in the report.

On your example it's more a cell property as for setting dynamically colors in tables ( see example ). Sorry, currently there is no easy way to bind the property of the cell with the column fill color of the chart.

Upvotes: 0

Istv&#225;n
Istv&#225;n

Reputation: 5127

It's not possible in the current version of reporting ( 5.1.2 ). What we're looking here is to use different palettes depending on the selection.

You have to create a new graph for every column to specify the valueField and the color for it. But the number of columns are changing, so we don't know how many graph should be defined.

Upvotes: 2

Related Questions