Chart Linkage Drill

Introduction #

Chart linkage is the most common interactive feature in SmartChart: click one chart to auto-refresh others. Implemented via dataset “linkage settings” or by calling ds_setParam + ds_refresh in chart code.

Linkage Functions Quick Reference #

Function Description
ds_setParam('param_name', value) Set parameter value
ds_refresh(index) Refresh specified dataset
ds_param('param_name') Get passed parameter value
del filter_param['param_name'] Delete parameter (cancel linkage)

Dataset Preparation #

  • Write SQL in linked datasets using parameter syntax (see “Parameter Writing”):
select ... from tablename
/* where xxxx = '$param_name' */

Standard Method #

  • To make chart #0 trigger linkage on other charts
  • Open dataset #0’s editor, click the title area

Screenshot

  • Enter the parameter configuration

Screenshot

  • Click chart, check console (F12) for the value to pass, e.g., data.name

Screenshot

  • Clicking the selected item again restores the original state

Use ds_param('param_name') in chart editor to get passed parameter values

Advanced Custom Method #

myChart__name__.on('click', function(params){
     let myparam = params.seriesName;
     ds_setParam('param_name', myparam);
     ds_setParam('param_name2', myparam2);
     ds_refresh(3);   // 3 = target chart index
});
ds_setParam('param_name', value)
// Auto-deletes parameter when value is empty, null, or 0
// Use encodeURIComponent if params contain special chars like &=

Cross-Report Drill #

myChart__name__.on('click', function (params) {
 let myparam = `&param={"param_name": "${params.seriesName}"}`;
 let myurl='/echart/?type=target_report_name'+ myparam;
 window.open(myurl,'_blank','toolbar=no,scrollbar=no,top=100,left=100,width=800,height=500');
});

Common Issues #

Issue Cause Solution
Click not working Param name mismatch with SQL Check $param_name spelling
Duplicate triggers Chart has auto-refresh Add .unbind('click') before binding
Empty parameter Param value is null/0 ds_setParam auto-deletes, use string '0'
Cached data unchanged Dataset has caching Set cache time to 0 for parameterized datasets