From 028c20c18a4f0583326d697b2afc3011ed22d625 Mon Sep 17 00:00:00 2001 From: Dayenne Souza Date: Wed, 24 Aug 2022 15:29:06 -0300 Subject: [PATCH 1/8] add verification of a new field to show or not the graph --- .../capabilities.json | 10 ++++++++ .../src/configs/DATA_ROLES.ts | 7 ++++++ .../src/configs/converter.ts | 25 ++++++++++++++----- .../src/style/visual.less | 10 ++++++++ .../network-navigator-powerbi/src/visual.ts | 14 ++++++----- .../network-navigator/src/NetworkNavigator.ts | 12 +++++++++ .../src/templates/GraphElement.ts | 4 +++ 7 files changed, 70 insertions(+), 12 deletions(-) diff --git a/packages/network-navigator-powerbi/capabilities.json b/packages/network-navigator-powerbi/capabilities.json index e7d19f3..0f13d53 100755 --- a/packages/network-navigator-powerbi/capabilities.json +++ b/packages/network-navigator-powerbi/capabilities.json @@ -5,6 +5,11 @@ "displayName": "Source Node", "kind": "GroupingOrMeasure" }, + { + "name": "NODE_FILTER", + "displayName": "Filtered Nodes", + "kind": "GroupingOrMeasure" + }, { "name": "TARGET_NODE", "displayName": "Target Node", @@ -66,6 +71,11 @@ "to": "SOURCE_NODE" } }, + { + "bind": { + "to": "NODE_FILTER" + } + }, { "bind": { "to": "TARGET_NODE" diff --git a/packages/network-navigator-powerbi/src/configs/DATA_ROLES.ts b/packages/network-navigator-powerbi/src/configs/DATA_ROLES.ts index 6ccba71..cf02070 100644 --- a/packages/network-navigator-powerbi/src/configs/DATA_ROLES.ts +++ b/packages/network-navigator-powerbi/src/configs/DATA_ROLES.ts @@ -15,6 +15,13 @@ export const DATA_ROLES = { displayName: 'Source Node', name: 'SOURCE_NODE', }, + /** + * The source node + */ + nodeFilter: { + displayName: 'Node Filter', + name: 'NODE_FILTER', + }, /** * The target node diff --git a/packages/network-navigator-powerbi/src/configs/converter.ts b/packages/network-navigator-powerbi/src/configs/converter.ts index 9cb06f3..37341a5 100644 --- a/packages/network-navigator-powerbi/src/configs/converter.ts +++ b/packages/network-navigator-powerbi/src/configs/converter.ts @@ -5,17 +5,17 @@ import powerbi from 'powerbi-visuals-api' -import { INetworkNavigatorSelectableNode } from './models' -import { DATA_ROLES } from './DATA_ROLES' -import * as models from 'powerbi-models' - -import DataView = powerbi.DataView -import ISelectionIdBuilder = powerbi.visuals.ISelectionIdBuilder import { INetworkNavigatorData, INetworkNavigatorLink, VisualSettings, } from '@essex/network-navigator' +import * as models from 'powerbi-models' +import { DATA_ROLES } from './DATA_ROLES' +import { INetworkNavigatorSelectableNode } from './models' + +import DataView = powerbi.DataView +import ISelectionIdBuilder = powerbi.visuals.ISelectionIdBuilder /** * Converts the powerbi data view into an internal data structure @@ -24,6 +24,7 @@ import { function converter( dataView: DataView, settings: VisualSettings, + nod: () => void, columnToFilter?: powerbi.DataViewMetadataColumn, createIdBuilder?: () => ISelectionIdBuilder, ): INetworkNavigatorData { @@ -62,6 +63,7 @@ function converter( const edgeColorValueIdx = colMap[roles.edgeColorValue.name] const sourceNodeWeightIdx = colMap[roles.sourceNodeWeight.name] const targetNodeWeightIdx = colMap[roles.targetNodeWeight.name] + const nodeFilterIdx = colMap[roles.nodeFilter.name] /** * Creates a node with the given value if the node has not already been seen/created @@ -169,6 +171,17 @@ function converter( } } + if ( + nodeFilterIdx !== undefined && + new Set(linkList.flatMap(x => x.source)).size > 1 + ) { + nod() + return { + nodes: [], + links: [], + } + } + return { nodes: nodeList, links: linkList, diff --git a/packages/network-navigator-powerbi/src/style/visual.less b/packages/network-navigator-powerbi/src/style/visual.less index 9237333..19d5571 100644 --- a/packages/network-navigator-powerbi/src/style/visual.less +++ b/packages/network-navigator-powerbi/src/style/visual.less @@ -131,3 +131,13 @@ body { #search-filter-box:focus-visible { outline: unset; } + +#node-filtered { + display: flex; + margin: auto; + height: 100%; + position: absolute; + width: 100%; + justify-content: center; + align-items: center; +} diff --git a/packages/network-navigator-powerbi/src/visual.ts b/packages/network-navigator-powerbi/src/visual.ts index fa083c6..e5cddc6 100644 --- a/packages/network-navigator-powerbi/src/visual.ts +++ b/packages/network-navigator-powerbi/src/visual.ts @@ -26,10 +26,12 @@ 'use strict' import 'core-js/stable' -import './style/visual.less' -import powerbi from 'powerbi-visuals-api' import * as $ from 'jquery' +import powerbi from 'powerbi-visuals-api' +import converter from './configs/converter' +import { DATA_ROLES } from './configs/DATA_ROLES' import { pretty } from './pretty' +import './style/visual.less' import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions import IVisual = powerbi.extensibility.visual.IVisual @@ -37,13 +39,11 @@ import IVisualHost = powerbi.extensibility.visual.IVisualHost import EnumerateVisualObjectInstancesOptions = powerbi.EnumerateVisualObjectInstancesOptions import VisualObjectInstance = powerbi.VisualObjectInstance import VisualObjectInstanceEnumerationObject = powerbi.VisualObjectInstanceEnumerationObject -import { DATA_ROLES } from './configs/DATA_ROLES' -import converter from './configs/converter' import { NetworkNavigator, VisualSettings } from '@essex/network-navigator' -import { INetworkNavigatorSelectableNode } from './configs/models' -import get from 'lodash-es/get' import debounce from 'lodash-es/debounce' +import get from 'lodash-es/get' +import { INetworkNavigatorSelectableNode } from './configs/models' const EVENTS_TO_IGNORE = 'mousedown mouseup click focus blur input pointerdown pointerup touchstart touchmove touchdown' @@ -135,9 +135,11 @@ export class Visual implements IVisual { n => n.roles[DATA_ROLES.filterField.name], )[0] + this.networkNavigator.nodeFilteredFalse() const newData = converter( dataView, this.visualSettings, + () => this.networkNavigator.nodeFilteredTrue(), filterColumn, () => this.host.createSelectionIdBuilder(), ) diff --git a/packages/network-navigator/src/NetworkNavigator.ts b/packages/network-navigator/src/NetworkNavigator.ts index d22f008..93cf932 100755 --- a/packages/network-navigator/src/NetworkNavigator.ts +++ b/packages/network-navigator/src/NetworkNavigator.ts @@ -330,6 +330,18 @@ export class NetworkNavigator { this.redrawSelection() } } + /** + * Sets the selected node + */ + public nodeFilteredTrue() { + this.element.nodeFiltered.css('display', 'flex') + } + /** + * Sets the selected node + */ + public nodeFilteredFalse() { + this.element.nodeFiltered.css('display', 'none') + } /** * Gets the currently selected node diff --git a/packages/network-navigator/src/templates/GraphElement.ts b/packages/network-navigator/src/templates/GraphElement.ts index b5c38bf..21ae0ff 100644 --- a/packages/network-navigator/src/templates/GraphElement.ts +++ b/packages/network-navigator/src/templates/GraphElement.ts @@ -48,6 +48,9 @@ export class GraphElement { public get filterBox() { return this.element.find('#search-filter-box') } + public get nodeFiltered() { + return this.element.find('#node-filtered') + } public get textFilter(): string { return this.filterBox.val() @@ -64,6 +67,7 @@ export class GraphElement {
+

Filter the selections to view the graph

` From 097bf32bf7f17aceca0ec9aadd506827d2421a10 Mon Sep 17 00:00:00 2001 From: Dayenne Souza Date: Wed, 24 Aug 2022 15:48:34 -0300 Subject: [PATCH 2/8] fix name --- README.md | 2 +- packages/network-navigator-powerbi/capabilities.json | 6 +++--- .../network-navigator-powerbi/src/configs/DATA_ROLES.ts | 6 +++--- packages/network-navigator-powerbi/src/configs/converter.ts | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 68f0583..d629e06 100755 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Network Navigator lets you explore node-link data by panning over and zooming in - Install [yarn](https://yarnpkg.com/lang/en/docs/install) - Run `yarn` on the project directory, which will install all the dependencies - Run `yarn package` which compile the `network-navigator`, and `network-navigator-powerbi` packages. - - Compiling `network-navigator-powerbi` will also create a `.pbiviz` file in the `packages/network-navigator/powerbi/dist` directory, which can be imported directly in [Power BI](https://app.powerbi.com/) + - Compiling `network-navigator-powerbi` will also create a `.pbiviz` file in the `packages/network-navigator-powerbi/dist` directory, which can be imported directly in [Power BI](https://app.powerbi.com/) ## Test diff --git a/packages/network-navigator-powerbi/capabilities.json b/packages/network-navigator-powerbi/capabilities.json index 0f13d53..8ca5675 100755 --- a/packages/network-navigator-powerbi/capabilities.json +++ b/packages/network-navigator-powerbi/capabilities.json @@ -6,8 +6,8 @@ "kind": "GroupingOrMeasure" }, { - "name": "NODE_FILTER", - "displayName": "Filtered Nodes", + "name": "SINGLE_VALUE_COLUMN", + "displayName": "Column to be filtered", "kind": "GroupingOrMeasure" }, { @@ -73,7 +73,7 @@ }, { "bind": { - "to": "NODE_FILTER" + "to": "SINGLE_VALUE_COLUMN" } }, { diff --git a/packages/network-navigator-powerbi/src/configs/DATA_ROLES.ts b/packages/network-navigator-powerbi/src/configs/DATA_ROLES.ts index cf02070..39edef9 100644 --- a/packages/network-navigator-powerbi/src/configs/DATA_ROLES.ts +++ b/packages/network-navigator-powerbi/src/configs/DATA_ROLES.ts @@ -18,9 +18,9 @@ export const DATA_ROLES = { /** * The source node */ - nodeFilter: { - displayName: 'Node Filter', - name: 'NODE_FILTER', + singleValueColumn: { + displayName: 'Single Value Column', + name: 'SINGLE_VALUE_COLUMN', }, /** diff --git a/packages/network-navigator-powerbi/src/configs/converter.ts b/packages/network-navigator-powerbi/src/configs/converter.ts index 37341a5..a47d6ad 100644 --- a/packages/network-navigator-powerbi/src/configs/converter.ts +++ b/packages/network-navigator-powerbi/src/configs/converter.ts @@ -63,7 +63,7 @@ function converter( const edgeColorValueIdx = colMap[roles.edgeColorValue.name] const sourceNodeWeightIdx = colMap[roles.sourceNodeWeight.name] const targetNodeWeightIdx = colMap[roles.targetNodeWeight.name] - const nodeFilterIdx = colMap[roles.nodeFilter.name] + const nodeFilterIdx = colMap[roles.singleValueColumn.name] /** * Creates a node with the given value if the node has not already been seen/created From 47ea58a7c20b39e4b7153c16331d2c382c73e768 Mon Sep 17 00:00:00 2001 From: Dayenne Souza Date: Wed, 24 Aug 2022 17:30:23 -0300 Subject: [PATCH 3/8] add dataReductionAlgorithm as top 30000 as maxNodeCount as default 1000 --- .../capabilities.json | 5 +++ .../network-navigator-powerbi/src/visual.ts | 1 + .../network-navigator/src/NetworkNavigator.ts | 35 ++++++++++++++++--- packages/network-navigator/src/defaults.ts | 9 +++++ 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/packages/network-navigator-powerbi/capabilities.json b/packages/network-navigator-powerbi/capabilities.json index 8ca5675..ed7a3a8 100755 --- a/packages/network-navigator-powerbi/capabilities.json +++ b/packages/network-navigator-powerbi/capabilities.json @@ -65,6 +65,11 @@ { "table": { "rows": { + "dataReductionAlgorithm": { + "top": { + "count": 30000 + } + }, "select": [ { "bind": { diff --git a/packages/network-navigator-powerbi/src/visual.ts b/packages/network-navigator-powerbi/src/visual.ts index e5cddc6..54da646 100644 --- a/packages/network-navigator-powerbi/src/visual.ts +++ b/packages/network-navigator-powerbi/src/visual.ts @@ -115,6 +115,7 @@ export class Visual implements IVisual { options.dataViews && options.dataViews.length && options.dataViews[0] + this._dataView = dataView const dataViewTable = dataView && dataView.table const dataChanged = this._dataViewTable !== dataViewTable diff --git a/packages/network-navigator/src/NetworkNavigator.ts b/packages/network-navigator/src/NetworkNavigator.ts index 93cf932..7c338a9 100755 --- a/packages/network-navigator/src/NetworkNavigator.ts +++ b/packages/network-navigator/src/NetworkNavigator.ts @@ -1,3 +1,4 @@ +import { nodeCount } from './defaults' /* * Power BI Visual CLI * @@ -218,6 +219,18 @@ export class NetworkNavigator { if (this.force) { let runStart = false + const getRangeValue = ( + settingName: string, + name: string, + min: number, + max: number, + ): number => { + let newValue = max + ? Math.min(newConfig[settingName][name], max) + : newConfig[settingName][name] + return min ? Math.max(newValue, min) : newValue + } + /** * Updates the config value if necessary, and returns true if it was updated */ @@ -232,12 +245,9 @@ export class NetworkNavigator { newConfig[settingName][name] !== this._configuration[settingName][name] ) { - let newValue = max - ? Math.min(newConfig[settingName][name], max) - : newConfig[settingName][name] - newValue = min ? Math.max(newValue, min) : newValue + const newValue = getRangeValue(settingName, name, min, max) this.force[>name]( - (newValue || defaultValue), + (newValue.toString() || defaultValue), ) newConfig[settingName][name] = newValue @@ -270,6 +280,21 @@ export class NetworkNavigator { ]) } + if ( + this._configuration.layout.maxNodeCount !== + newConfig.layout.maxNodeCount + ) { + const { default: defaultValue, min, max } = nodeCount + + const newValue = getRangeValue( + 'layout', + 'maxNodeCount', + min, + max, + ) + newConfig.layout.maxNodeCount = newValue || defaultValue + } + if (newConfig.layout.animate) { // If we are rerunning start or if we weren't animated, but now we are, then start the force if (false || !this._configuration.layout.animate) { diff --git a/packages/network-navigator/src/defaults.ts b/packages/network-navigator/src/defaults.ts index df20173..08db37f 100644 --- a/packages/network-navigator/src/defaults.ts +++ b/packages/network-navigator/src/defaults.ts @@ -51,6 +51,7 @@ export const DEFAULT_CONFIGURATION: INetworkNavigatorConfiguration = { minZoom: 0.1, maxZoom: 100, caseInsensitive: true, + maxNodeCount: 1000, defaultLabelColor: '#0078d4', fontSizePT: 8, maxNodeSize: 500, @@ -69,6 +70,14 @@ export const linkDistance = { max: 30, default: DEFAULT_CONFIGURATION.linkDistance, } +/** + * Defines the minimum, maximum, and default values for node count + */ +export const nodeCount = { + min: 0, + max: 30000, + default: DEFAULT_CONFIGURATION.maxNodeCount, +} /** * Defines the minimum, maximum, and default values for link strength From 51cebb2cf83d1e373cd5a7e0bc5fbfa795a9280f Mon Sep 17 00:00:00 2001 From: Dayenne Souza Date: Thu, 25 Aug 2022 11:14:55 -0300 Subject: [PATCH 4/8] merge with main --- .../network-navigator/src/NetworkNavigator.ts | 29 ++++++++++--------- .../network-navigator/src/VisualSettings.ts | 2 +- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/packages/network-navigator/src/NetworkNavigator.ts b/packages/network-navigator/src/NetworkNavigator.ts index f3ba7a4..f0385c7 100755 --- a/packages/network-navigator/src/NetworkNavigator.ts +++ b/packages/network-navigator/src/NetworkNavigator.ts @@ -33,19 +33,19 @@ import { VisualSettings } from './VisualSettings' import EventEmitter from './base/EventEmitter' import { - charge, - DEFAULT_EDGE_SIZE, - DEFAULT_NODE_SIZE, - DEFAULT_ZOOM_SCALE, - DEFAULT_ZOOM_TRANSLATE, - gravity, - linkDistance, - linkStrength, + charge, + DEFAULT_EDGE_SIZE, + DEFAULT_NODE_SIZE, + DEFAULT_ZOOM_SCALE, + DEFAULT_ZOOM_TRANSLATE, + gravity, + linkDistance, + linkStrength } from './defaults' import type { - INetworkNavigatorConfiguration, - INetworkNavigatorData, - INetworkNavigatorNode, + INetworkNavigatorConfiguration, + INetworkNavigatorData, + INetworkNavigatorNode } from './interfaces' import { GraphElement } from './templates/GraphElement' @@ -225,10 +225,11 @@ export class NetworkNavigator { config: { default: number; min: number; max: number }, ): number => { const { default: defaultValue, min, max } = config + const assignedValue = newConfig[settingName][name] - let newValue = max - ? Math.min(newConfig[settingName][name], max) - : newConfig[settingName][name] + let newValue = max + ? Math.min(assignedValue, max) + : assignedValue return ( (min ? Math.max(newValue, min) : newValue) || defaultValue diff --git a/packages/network-navigator/src/VisualSettings.ts b/packages/network-navigator/src/VisualSettings.ts index 13d9354..d1e0d7f 100644 --- a/packages/network-navigator/src/VisualSettings.ts +++ b/packages/network-navigator/src/VisualSettings.ts @@ -35,7 +35,7 @@ class SearchSettings { class LayoutSettings { public animate: boolean = DEFAULT_CONFIGURATION.animate - public maxNodeCount?: number = DEFAULT_CONFIGURATION.maxNodeCount + public maxNodeCount: number = DEFAULT_CONFIGURATION.maxNodeCount public maxNodeSize?: number = DEFAULT_CONFIGURATION.maxNodeSize public minNodeSize: number = DEFAULT_CONFIGURATION.minNodeSize public linkDistance: number = DEFAULT_CONFIGURATION.linkDistance From ab4c67c55ed2d13c1f67dfc8005d082c0d1b7a15 Mon Sep 17 00:00:00 2001 From: Dayenne Souza Date: Tue, 30 Aug 2022 12:21:11 -0300 Subject: [PATCH 5/8] version fix --- .yarn/versions/382cc17c.yml | 4 ---- package.json | 2 +- packages/network-navigator-powerbi/package.json | 2 +- packages/network-navigator-powerbi/pbiviz.json | 2 +- packages/network-navigator/package.json | 2 +- 5 files changed, 4 insertions(+), 8 deletions(-) delete mode 100644 .yarn/versions/382cc17c.yml diff --git a/.yarn/versions/382cc17c.yml b/.yarn/versions/382cc17c.yml deleted file mode 100644 index 3fffda5..0000000 --- a/.yarn/versions/382cc17c.yml +++ /dev/null @@ -1,4 +0,0 @@ -releases: - "@essex/network-navigator": minor - "@essex/network-navigator-powerbi": minor - "@essex/powerbi-visuals-network-navigator": minor diff --git a/package.json b/package.json index 5e81fa7..21e1edd 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@essex/powerbi-visuals-network-navigator", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "private": true, "scripts": { diff --git a/packages/network-navigator-powerbi/package.json b/packages/network-navigator-powerbi/package.json index 3176db7..1295a0e 100755 --- a/packages/network-navigator-powerbi/package.json +++ b/packages/network-navigator-powerbi/package.json @@ -1,7 +1,7 @@ { "name": "@essex/network-navigator-powerbi", "description": "default_template_value", - "version": "3.0.0", + "version": "3.1.0", "license": "MIT", "author": "Microsoft", "scripts": { diff --git a/packages/network-navigator-powerbi/pbiviz.json b/packages/network-navigator-powerbi/pbiviz.json index 49caddd..70ddd57 100755 --- a/packages/network-navigator-powerbi/pbiviz.json +++ b/packages/network-navigator-powerbi/pbiviz.json @@ -4,7 +4,7 @@ "displayName": "Network Navigator", "visualClassName": "Visual", "guid": "NetworkNavigator1550434005853", - "version": "3.0.0", + "version": "3.1.0", "description": "This visual is experimental and not actively being developed, only major issues will be addressed. Network Navigator lets you explore node-link data by panning over and zooming into a force-directed node layout (which can be precomputed or animated live). From an initial overview of all nodes, you can use simple text search to enlarge matching nodes in ways that guide subsequent navigation. Network nodes can also be color-coded based on additional attributes of the dataset and filtered by linked visuals.", "supportUrl": "https://github.com/Microsoft/PowerBI-visuals-NetworkNavigator", "gitHubUrl": "https://github.com/Microsoft/PowerBI-visuals-NetworkNavigator" diff --git a/packages/network-navigator/package.json b/packages/network-navigator/package.json index 46b651f..4bda1ac 100755 --- a/packages/network-navigator/package.json +++ b/packages/network-navigator/package.json @@ -1,6 +1,6 @@ { "name": "@essex/network-navigator", - "version": "3.0.0", + "version": "3.1.0", "description": "", "main": "src/index.ts", "publishConfig": { From f8aaa4279a0880186d31563dce110fde6c8bae8a Mon Sep 17 00:00:00 2001 From: Dayenne Souza Date: Tue, 30 Aug 2022 16:59:57 -0300 Subject: [PATCH 6/8] fix naming --- packages/network-navigator-powerbi/capabilities.json | 2 +- packages/network-navigator-powerbi/pbiviz.json | 6 +++--- packages/network-navigator/src/templates/GraphElement.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/network-navigator-powerbi/capabilities.json b/packages/network-navigator-powerbi/capabilities.json index ed7a3a8..c9ec4eb 100755 --- a/packages/network-navigator-powerbi/capabilities.json +++ b/packages/network-navigator-powerbi/capabilities.json @@ -7,7 +7,7 @@ }, { "name": "SINGLE_VALUE_COLUMN", - "displayName": "Column to be filtered", + "displayName": "Render on single value", "kind": "GroupingOrMeasure" }, { diff --git a/packages/network-navigator-powerbi/pbiviz.json b/packages/network-navigator-powerbi/pbiviz.json index 70ddd57..eb674e4 100755 --- a/packages/network-navigator-powerbi/pbiviz.json +++ b/packages/network-navigator-powerbi/pbiviz.json @@ -1,9 +1,9 @@ { "visual": { - "name": "NetworkNavigator", - "displayName": "Network Navigator", + "name": "NetworkNavigator3.1", + "displayName": "Network Navigator 3.1", "visualClassName": "Visual", - "guid": "NetworkNavigator1550434005853", + "guid": "NetworkNavigator311550434005853", "version": "3.1.0", "description": "This visual is experimental and not actively being developed, only major issues will be addressed. Network Navigator lets you explore node-link data by panning over and zooming into a force-directed node layout (which can be precomputed or animated live). From an initial overview of all nodes, you can use simple text search to enlarge matching nodes in ways that guide subsequent navigation. Network nodes can also be color-coded based on additional attributes of the dataset and filtered by linked visuals.", "supportUrl": "https://github.com/Microsoft/PowerBI-visuals-NetworkNavigator", diff --git a/packages/network-navigator/src/templates/GraphElement.ts b/packages/network-navigator/src/templates/GraphElement.ts index 21ae0ff..86d0e0b 100644 --- a/packages/network-navigator/src/templates/GraphElement.ts +++ b/packages/network-navigator/src/templates/GraphElement.ts @@ -67,7 +67,7 @@ export class GraphElement {
-

Filter the selections to view the graph

+

Make a selection to view the graph

` From b2121d23bfdc0197088b56fc1ff9124f7f2b5aae Mon Sep 17 00:00:00 2001 From: Dayenne Souza Date: Tue, 30 Aug 2022 18:20:13 -0300 Subject: [PATCH 7/8] fix function --- .../src/configs/converter.ts | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/network-navigator-powerbi/src/configs/converter.ts b/packages/network-navigator-powerbi/src/configs/converter.ts index a47d6ad..65853fe 100644 --- a/packages/network-navigator-powerbi/src/configs/converter.ts +++ b/packages/network-navigator-powerbi/src/configs/converter.ts @@ -65,6 +65,16 @@ function converter( const targetNodeWeightIdx = colMap[roles.targetNodeWeight.name] const nodeFilterIdx = colMap[roles.singleValueColumn.name] + if ( + nodeFilterIdx !== undefined && + new Set(table.rows.map(x => x[nodeFilterIdx])).size > 1 + ) { + nod() + return { + nodes: [], + links: [], + } + } /** * Creates a node with the given value if the node has not already been seen/created */ @@ -171,17 +181,6 @@ function converter( } } - if ( - nodeFilterIdx !== undefined && - new Set(linkList.flatMap(x => x.source)).size > 1 - ) { - nod() - return { - nodes: [], - links: [], - } - } - return { nodes: nodeList, links: linkList, From 957cc180231beec93c3a16868e25c2e644c5f944 Mon Sep 17 00:00:00 2001 From: Dayenne Souza Date: Mon, 5 Sep 2022 10:40:59 -0300 Subject: [PATCH 8/8] fix naming functions --- .../network-navigator-powerbi/pbiviz.json | 6 ++-- .../src/configs/converter.ts | 4 +-- .../network-navigator-powerbi/src/visual.ts | 5 +-- .../network-navigator/src/NetworkNavigator.ts | 36 +++++++++---------- .../src/templates/GraphElement.ts | 6 ++-- 5 files changed, 29 insertions(+), 28 deletions(-) diff --git a/packages/network-navigator-powerbi/pbiviz.json b/packages/network-navigator-powerbi/pbiviz.json index eb674e4..70ddd57 100755 --- a/packages/network-navigator-powerbi/pbiviz.json +++ b/packages/network-navigator-powerbi/pbiviz.json @@ -1,9 +1,9 @@ { "visual": { - "name": "NetworkNavigator3.1", - "displayName": "Network Navigator 3.1", + "name": "NetworkNavigator", + "displayName": "Network Navigator", "visualClassName": "Visual", - "guid": "NetworkNavigator311550434005853", + "guid": "NetworkNavigator1550434005853", "version": "3.1.0", "description": "This visual is experimental and not actively being developed, only major issues will be addressed. Network Navigator lets you explore node-link data by panning over and zooming into a force-directed node layout (which can be precomputed or animated live). From an initial overview of all nodes, you can use simple text search to enlarge matching nodes in ways that guide subsequent navigation. Network nodes can also be color-coded based on additional attributes of the dataset and filtered by linked visuals.", "supportUrl": "https://github.com/Microsoft/PowerBI-visuals-NetworkNavigator", diff --git a/packages/network-navigator-powerbi/src/configs/converter.ts b/packages/network-navigator-powerbi/src/configs/converter.ts index 65853fe..ecf95f0 100644 --- a/packages/network-navigator-powerbi/src/configs/converter.ts +++ b/packages/network-navigator-powerbi/src/configs/converter.ts @@ -24,7 +24,7 @@ import ISelectionIdBuilder = powerbi.visuals.ISelectionIdBuilder function converter( dataView: DataView, settings: VisualSettings, - nod: () => void, + activateSingleValueFilter: () => void, columnToFilter?: powerbi.DataViewMetadataColumn, createIdBuilder?: () => ISelectionIdBuilder, ): INetworkNavigatorData { @@ -69,7 +69,7 @@ function converter( nodeFilterIdx !== undefined && new Set(table.rows.map(x => x[nodeFilterIdx])).size > 1 ) { - nod() + activateSingleValueFilter() return { nodes: [], links: [], diff --git a/packages/network-navigator-powerbi/src/visual.ts b/packages/network-navigator-powerbi/src/visual.ts index 54da646..81fb3cb 100644 --- a/packages/network-navigator-powerbi/src/visual.ts +++ b/packages/network-navigator-powerbi/src/visual.ts @@ -136,11 +136,12 @@ export class Visual implements IVisual { n => n.roles[DATA_ROLES.filterField.name], )[0] - this.networkNavigator.nodeFilteredFalse() + this.networkNavigator.deactivateSingleValueMessage() const newData = converter( dataView, this.visualSettings, - () => this.networkNavigator.nodeFilteredTrue(), + () => + this.networkNavigator.activateSingleValueMessage(), filterColumn, () => this.host.createSelectionIdBuilder(), ) diff --git a/packages/network-navigator/src/NetworkNavigator.ts b/packages/network-navigator/src/NetworkNavigator.ts index f0385c7..deff001 100755 --- a/packages/network-navigator/src/NetworkNavigator.ts +++ b/packages/network-navigator/src/NetworkNavigator.ts @@ -33,19 +33,19 @@ import { VisualSettings } from './VisualSettings' import EventEmitter from './base/EventEmitter' import { - charge, - DEFAULT_EDGE_SIZE, - DEFAULT_NODE_SIZE, - DEFAULT_ZOOM_SCALE, - DEFAULT_ZOOM_TRANSLATE, - gravity, - linkDistance, - linkStrength + charge, + DEFAULT_EDGE_SIZE, + DEFAULT_NODE_SIZE, + DEFAULT_ZOOM_SCALE, + DEFAULT_ZOOM_TRANSLATE, + gravity, + linkDistance, + linkStrength, } from './defaults' import type { - INetworkNavigatorConfiguration, - INetworkNavigatorData, - INetworkNavigatorNode + INetworkNavigatorConfiguration, + INetworkNavigatorData, + INetworkNavigatorNode, } from './interfaces' import { GraphElement } from './templates/GraphElement' @@ -227,7 +227,7 @@ export class NetworkNavigator { const { default: defaultValue, min, max } = config const assignedValue = newConfig[settingName][name] - let newValue = max + let newValue = max ? Math.min(assignedValue, max) : assignedValue return ( @@ -356,16 +356,16 @@ export class NetworkNavigator { } } /** - * Sets the selected node + * Shows the single value message */ - public nodeFilteredTrue() { - this.element.nodeFiltered.css('display', 'flex') + public activateSingleValueMessage() { + this.element.singleValueMessage.css('display', 'flex') } /** - * Sets the selected node + * Hides the single value message */ - public nodeFilteredFalse() { - this.element.nodeFiltered.css('display', 'none') + public deactivateSingleValueMessage() { + this.element.singleValueMessage.css('display', 'none') } /** diff --git a/packages/network-navigator/src/templates/GraphElement.ts b/packages/network-navigator/src/templates/GraphElement.ts index 86d0e0b..1fe0d73 100644 --- a/packages/network-navigator/src/templates/GraphElement.ts +++ b/packages/network-navigator/src/templates/GraphElement.ts @@ -48,8 +48,8 @@ export class GraphElement { public get filterBox() { return this.element.find('#search-filter-box') } - public get nodeFiltered() { - return this.element.find('#node-filtered') + public get singleValueMessage() { + return this.element.find('#single-value-message') } public get textFilter(): string { @@ -67,7 +67,7 @@ export class GraphElement {
-

Make a selection to view the graph

+

Make a selection to view the graph

`