Well, I finally figured out a way to pull it off, though more hacky than I’d prefer:
public flexChartInitialized(flexChart: wijmo.chart.FlexChart) {
this.flexChart = flexChart;
this.flexChart.rendered.addHandler(() => {
// Add a 'defs' element to the SVG in order to define the drop shadow affect we want for some elements
var svgNS = 'http://www.w3.org/2000/svg';
var svg = this.flexChart._currentRenderEngine.element;
var defs = <SVGDefsElement>document.createElementNS(svgNS, 'defs');
var filter = <SVGFilterElement>document.createElementNS(svgNS, 'filter');
var feOffset = <SVGFEOffsetElement>document.createElementNS(svgNS, 'feOffset');
var feGaussianBlur = <SVGFEGaussianBlurElement>document.createElementNS(svgNS, 'feGaussianBlur');
var feBlend = <SVGFEBlendElement>document.createElementNS(svgNS, 'feBlend');
svg.insertBefore(defs, svg.firstChild);
defs.appendChild(filter);
filter.setAttribute('id', 'f1');
filter.setAttribute('filterUnits', 'userSpaceOnUse'); // the default is 'objectBoundingBox' - without this, horizontal/vertical lines won't render at all
filter.appendChild(feOffset);
feOffset.setAttribute('result', 'offOut');
feOffset.setAttribute('in', 'SourceAlpha');
feOffset.setAttribute('dx', '2');
feOffset.setAttribute('dy', '2');
filter.appendChild(feGaussianBlur);
feGaussianBlur.setAttribute('result', 'blurOut');
feGaussianBlur.setAttribute('in', 'offOut');
feGaussianBlur.setAttribute('stdDeviation', '2');
filter.appendChild(feBlend);
feBlend.setAttribute('in', 'SourceGraphic');
feBlend.setAttribute('in2', 'blurOut');
feBlend.setAttribute('mode', 'normal');
// Add filter attribute to the lines that need a shadow
$("polyline[stroke-width='3']").attr('filter', 'url(#f1)')
})
}
Please do let me know if there is perhaps a better/cleaner way to pull it off.
Thanks,
Terry