npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

powerbi-dataview-transformer

v1.6.4

Published

It's not very easy to parse the dataview coming from Power BI Custom Visuals.

Downloads

12

Readme

Power BI Dataview Transformer

It's not very easy to parse the dataview coming from Power BI Custom Visuals.

This library helps you transform the dataview object into an array of objects that is defined in your capabilities json.

For Example:

{
    "dataRoles": [
        {
            "displayName": "Width Data",
            "name": "width",
            "kind": "Measure"
        },
        {
            "displayName": "Target Height Data",
            "name": "targetHeight",
            "kind": "Measure"
        },
        {
            "displayName": "Actual Height Data",
            "name": "actualHeight",
            "kind": "Measure"
        },
        {
            "displayName": "Label Name",
            "name": "name",
            "kind": "Grouping",
            "preferredTypes": [
                {
                    "text": true
                }
            ]
        }
    ],
  ...
}

The Transformed array will look like this

[
  {name: 'One', actualHeight: 10, targetHeight: 100, width: 15},
  {name: 'One', actualHeight: 20, targetHeight: 200, width: 25},
  {name: 'One', actualHeight: 30, targetHeight: 300, width: 35},
  {name: 'One', actualHeight: 40, targetHeight: 400, width: 45}
]

How to Use

To Install: npm install --save powerbi-dataview-transformer

  1. In pbiviz.json, Add "node_modules/powerbi-dataview-transformer/dist/index.js" under ExternalJS array.
  2. In tsconfig.json, Add "node_modules/powerbi-dataview-transformer/types.d.ts" under files array.
  3. Then in your visual.ts:
interface Window {
  d3: typeof d3;
  _: typeof _;
  dataviewTransformer: typeof dataviewTransformer; // <-- this line
}

class Visual {
  ...

  type Datum = {
    name: string,
    actualHeight: number,
    targetHeight: number,
    width: number
  }

  public update(options: VisualUpdateOptions) {
      // parse data

      const dataView: DataView = options.dataViews[0]
      const transformedData = window.dataviewTransformer.categoryTransform<Datum>(dataview, "id") // <-- "name" is the category that you want to select from your capabilities.json
      // transformedData = [{name: 'One', width: 15, targetHeight: 100, actualHeight: 10}, ...]
  }
}

API Doc

categoryTransform Function

Parameters

  • dataview (required) This is the dataview that is in the options object passed into the update function. Usually the dataview is found in options.dataviews[0] inside the update function.

  • category name (required) This is the value of name property of the category is defined in the capabilities.json file under dataRoles. The returned array is going to be an array of data objects that is based on this catagory.

  • SelectionIdBuilder (optional) SelectionIdBuilder is the function that exists in the options object that is passed in the constructor function. Since we need to pass this function in the update function. One approach is to create store the SelectionIdBuilder in a class property, then use it in this function

Returns

  • The function will return an array that is strongly typed to the datum shape you defined in your custom visual.