Hello everyone,
I'm trying to implement an example library from the D3 gallery called Visavail. A demo of this library can be found here: link.
I'm having difficulties getting it to work, any help or pointers will be appriciated.
Setup:
Then I referenced it all in pbiviz.json:
"externalJS": [ "node_modules/powerbi-visuals-utils-dataviewutils/lib/index.js", "node_modules/d3/build/d3.min.js", "node_modules/visavail/js/visavail.js", "node_modules/moment/min/moment-with-locales.min.js" ], "style": "style/visual.less", "capabilities": "capabilities.json", "dependencies": "dependencies.json", "stringResources": []
The CSS was referenced in the visual.less file:
@import (less) "style/font-awesome/css/font-awesome.min.css"; @import (less) "node_modules/visavail/css/visavail.css";
The code:
In Visual.ts, based on the hello world update counter I recreated the Visavail example with static data.
module powerbi.extensibility.visual { "use strict"; export class Visual implements IVisual { private target: HTMLElement; private settings: VisualSettings; private d3; private visavail; private moment; private svg; private mydataset; private chart; constructor(options: VisualConstructorOptions) { console.log('Visual constructor', options); this.target = options.element; this.d3 = (window as any).d3; this.visavail = (window as any).visavail; this.moment = (window as any).moment; this.moment.locale("en"); this.svg = this.d3.select(this.target).append('svg'); } public update(options: VisualUpdateOptions) { this.settings = Visual.parseSettings(options && options.dataViews && options.dataViews[0]); this.target.innerHTML = '<p id="example">TEST</em></p>'; this.chart = this.visavail.visavailChart().width(800); this.mydataset = [{ "measure": "Annual Report", "data": [ ["2015-01-01", 0, "2015-03-04"], ["2016-01-01", 1, "2016-03-03"], ["2017-01-01", 1, "2017-03-06"], ["2018-01-01", 1, "2018-04-01"] ] }]; this.d3.select("#example").datum(this.mydataset).call(this.chart); } private static parseSettings(dataView: DataView): VisualSettings { return VisualSettings.parse(dataView) as VisualSettings; } public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] | VisualObjectInstanceEnumerationObject { return VisualSettings.enumerateObjectInstances(this.settings || VisualSettings.getDefault(), options); } } }
I zipped the entire project, it can be downloaded here:
https://www.dropbox.com/s/aggbcdm4vnooy8h/statisTimeLine2.zip?dl=0
Solved! Go to Solution.
Hello everyone,
I'm trying to implement an example library from the D3 gallery called Visavail. A demo of this library can be found here: link.
I'm having difficulties getting it to work, any help or pointers will be appriciated. I don't know where to post it, if this is the wrong place please delete this post.
Setup:
Then I referenced it all in pbiviz.json:
"externalJS": [ "node_modules/powerbi-visuals-utils-dataviewutils/lib/index.js", "node_modules/d3/build/d3.min.js", "node_modules/visavail/js/visavail.js", "node_modules/moment/min/moment-with-locales.min.js" ], "style": "style/visual.less", "capabilities": "capabilities.json", "dependencies": "dependencies.json", "stringResources": []
The CSS was referenced in the visual.less file:
@import (less) "style/font-awesome/css/font-awesome.min.css"; @import (less) "node_modules/visavail/css/visavail.css";
The code:
In Visual.ts, based on the hello world update counter I recreated the Visavail example with static data.
module powerbi.extensibility.visual { "use strict"; export class Visual implements IVisual { private target: HTMLElement; private settings: VisualSettings; private d3; private visavail; private moment; private svg; private mydataset; private chart; constructor(options: VisualConstructorOptions) { console.log('Visual constructor', options); this.target = options.element; this.d3 = (window as any).d3; this.visavail = (window as any).visavail; this.moment = (window as any).moment; this.moment.locale("en"); this.svg = this.d3.select(this.target).append('svg'); } public update(options: VisualUpdateOptions) { this.settings = Visual.parseSettings(options && options.dataViews && options.dataViews[0]); this.target.innerHTML = '<p id="example">TEST</em></p>'; this.chart = this.visavail.visavailChart().width(800); this.mydataset = [{ "measure": "Annual Report", "data": [ ["2015-01-01", 0, "2015-03-04"], ["2016-01-01", 1, "2016-03-03"], ["2017-01-01", 1, "2017-03-06"], ["2018-01-01", 1, "2018-04-01"] ] }]; this.d3.select("#example").datum(this.mydataset).call(this.chart); } private static parseSettings(dataView: DataView): VisualSettings { return VisualSettings.parse(dataView) as VisualSettings; } public enumerateObjectInstances(options: EnumerateVisualObjectInstancesOptions): VisualObjectInstance[] | VisualObjectInstanceEnumerationObject { return VisualSettings.enumerateObjectInstances(this.settings || VisualSettings.getDefault(), options); } } }
I zipped the entire project, it can be downloaded here:
https://www.dropbox.com/s/aggbcdm4vnooy8h/statisTimeLine2.zip?dl=0
Join us for a free, hands-on Microsoft workshop led by women trainers for women where you will learn how to build a Dashboard in a Day!