Compare commits

..

31 Commits

Author SHA1 Message Date
Niek van Staveren
adeb9a8ac8 Update readme.md (#53) 2024-10-15 08:42:31 +02:00
caele
44e14891cb chore: tinker 2023-08-21 12:20:52 +02:00
caele
94c9ac0152 chore: tinker 2023-08-21 12:17:10 +02:00
caele
496f99d6ac chore: tinker 2023-08-21 12:16:08 +02:00
caele
e45e1d26ee chore: tinker 2023-08-21 12:15:42 +02:00
caele
9300f06156 chore: tinker 2023-08-21 12:12:17 +02:00
caele
a1dc4bfff4 chore: tinker 2023-08-21 12:11:18 +02:00
caele
228fff2121 chore: tinker 2023-08-21 11:40:21 +02:00
caele
eb0953e5bc chore: tinker 2023-08-21 11:38:39 +02:00
caele
35ee5ff829 chore: tinker 2023-08-21 11:37:15 +02:00
caele
c64e60ad48 chore: tinker 2023-08-21 11:34:13 +02:00
caele
5860d05e4b chore: tinker 2023-08-21 11:30:13 +02:00
caele
d24076ab5c chore: tinker 2023-08-21 11:22:02 +02:00
caele
8127734e55 chore: tinker 2023-08-21 11:20:28 +02:00
caele
fac6b63988 chore: tinker 2023-08-21 11:19:24 +02:00
caele
df7ec26063 chore: tinker 2023-08-21 11:18:07 +02:00
Tobias Åström
eac3fe1a9e chore: api-gov action (#49)
* chore: add api-gov workflow

* chore: add on

* chore: add jobs
2023-08-21 11:16:13 +02:00
semantic-release-bot
46e3c6c04a chore(release): 1.0.4 [skip ci]
## [1.0.4](https://github.com/qlik-oss/network-vis-chart/compare/v1.0.3...v1.0.4) (2023-08-18)

### Bug Fixes

* clean spec ([96880cd](96880cd441))
2023-08-18 08:53:42 +00:00
caele
96880cd441 fix: clean spec 2023-08-18 10:51:13 +02:00
semantic-release-bot
1148aa900e chore(release): 1.0.3 [skip ci]
## [1.0.3](https://github.com/qlik-oss/network-vis-chart/compare/v1.0.2...v1.0.3) (2023-08-18)

### Bug Fixes

* api to stable ([c88dd3d](c88dd3d556))
2023-08-18 06:39:34 +00:00
caele
c88dd3d556 fix: api to stable 2023-08-18 07:56:27 +02:00
semantic-release-bot
3b85dc80a0 chore(release): 1.0.2 [skip ci]
## [1.0.2](https://github.com/qlik-oss/network-vis-chart/compare/v1.0.1...v1.0.2) (2023-08-17)

### Bug Fixes

* remove prepublish ([d7c754c](d7c754cb3e))
2023-08-17 08:20:18 +00:00
caele
d7c754cb3e fix: remove prepublish 2023-08-17 10:17:56 +02:00
semantic-release-bot
4edb698dc0 chore(release): 1.0.1 [skip ci]
## [1.0.1](https://github.com/qlik-oss/network-vis-chart/compare/v1.0.0...v1.0.1) (2023-08-16)

### Bug Fixes

* trigger patch change ([e1152aa](e1152aa0d9))
2023-08-16 14:12:18 +00:00
caele
e1152aa0d9 fix: trigger patch change 2023-08-16 16:00:55 +02:00
Tobias Åström
8b827b0848 chore: go gh (#48)
* chore: go gh

* chore: remove circle
2023-08-16 13:02:33 +02:00
caele
4409709416 1.0.0 2023-08-15 11:18:56 +02:00
caele
bcaa6b5245 chore: prep legacy readme 2023-08-15 10:12:21 +02:00
caele
1b3d4b54f0 chore: prep readme 2023-08-15 10:11:02 +02:00
caele
be2f235a3b 1.0.0 2023-08-15 10:05:26 +02:00
caele
5378a0421c chore: spec for 1 2023-08-15 10:05:19 +02:00
12 changed files with 312 additions and 378 deletions

View File

@@ -1,199 +0,0 @@
version: 2
defaults: &defaults
working_directory: ~/project
docker:
- image: cimg/node:lts
aliases:
- &restore_yarn_cache
name: Restore yarn cache
keys:
- yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
- yarn-packages-{{ .Branch }}
- yarn-packages-
- &save_yarn_cache
name: Save yarn cache
paths:
- ~/.cache/yarn
key: yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
jobs:
install:
<<: *defaults
steps:
- checkout
- restore_cache: *restore_yarn_cache
- run: yarn install --frozen-lockfile
- save_cache: *save_yarn_cache
- store_artifacts:
path: package.json
- persist_to_workspace:
root: ~/project
paths:
- .
build:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Build
command: yarn run build
- run:
name: Build sense
command: yarn run sense
- persist_to_workspace:
root: ~/project
paths:
- .
lint:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Lint
command: yarn run eslint
unit-tests:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Run unit tests and publish to codeclimate
command: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build
yarn test:unit --runInBand --coverage --reporters=default --reporters=jest-junit
./cc-test-reporter after-build --coverage-input-type lcov --exit-code $?
environment:
JEST_JUNIT_OUTPUT_DIR: ./coverage/junit/
- store_artifacts:
path: coverage
api-spec:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Build API specification
command: yarn run spec
publish-dev:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run: zip -r "sn-network-chart-ext.zip" "./sn-network-chart-ext"
- store_artifacts:
path: ./sn-network-chart-ext.zip
publish:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Setup npm
command: |
set -eo pipefail
# Amend auth token for access to public npm registry for @nebula.js packages
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
- run:
name: Publish
command: |
set -euo pipefail
PROJ_VER=v$(cat package.json | jq -r '.version')
TAG_NAME=$(git tag --points-at HEAD)
if [ "$TAG_NAME" == "$PROJ_VER" ]
then
echo "Running >> npm publish"
npm publish
fi
api-governance:
machine:
image: ubuntu-2004:current
working_directory: ~/project
steps:
- checkout
- attach_workspace:
at: ~/project
- run:
name: Create version.txt
command: |
set -x
if [ -n "${CIRCLE_TAG}" ]; then
version=${CIRCLE_TAG#v}
else
version=$(git describe --tags --abbrev=7 --match "v*")
version=${version#v}
fi
echo "$version" > ./version.txt
echo "Building $version"
- run:
name: Prepare API Compliance
command: |
docker pull ghcr.io/qlik-download/api-compliance
docker create -v /specs --name specs alpine:3.4 /bin/true
docker cp ./api-specifications/properties.json specs:/specs
- run:
name: Run API Compliance
command: >
VER=$(cat ./version.txt)
docker run --volumes-from specs
-e SPEC_PATHS="e3863ba0-a48d-4034-8a77-1b00ce8a637d@/specs/properties.json"
-e COMMIT_SHA="$CIRCLE_SHA1"
-e RELEASE_TAG="$VER"
-e CREDENTIALS_S3_SECRETKEY="$APICULTURIST_S3"
-e CREDENTIALS_GITHUB="$APICULTURIST_GITHUB"
-e CREDENTIALS_COLONY="$APICULTURIST_TOKEN"
ghcr.io/qlik-download/api-compliance
workflows:
version: 2
build-all:
jobs:
- install
- build:
requires:
- install
- unit-tests:
requires:
- build
- lint:
requires:
- build
- api-spec:
requires:
- install
- publish-dev:
requires:
- build
- publish:
requires:
- build
- unit-tests
- lint
- api-spec
filters:
branches:
only:
- main
- api-governance:
context: api-compliance
filters:
branches:
# Forked pull requests have CIRCLE_BRANCH set to pull/XXX
ignore:
- /pull\/[0-9]+/
- renovate/minor-and-patch
tags:
only:
- /v.*/

19
.codeclimate.yml Normal file
View File

@@ -0,0 +1,19 @@
version: "2"
checks:
method-lines:
config:
threshold: 100
method-complexity:
config:
threshold: 10
similar-code:
config:
threshold: 65
identical-code:
config:
threshold: 65
exclude_patterns:
- "src/**/*.test.ts"
- "src/**/*.test.tsx"
- "*config*"
- "test/**/__fixtures__"

38
.github/workflows/api-gov.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: "API Governance"
on:
workflow_dispatch:
inputs:
VERSION:
type: string
description: Version to run against
default: ''
SHA:
type: string
description: Sha of tag
default: ''
jobs:
api-gov:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Prepare API Compliance
shell: bash
run: |
docker pull ghcr.io/qlik-download/api-compliance
docker create -v /specs --name specs alpine:3.4 /bin/true
docker cp api-specifications/properties.json specs:/specs/properties.json
- name: Run API Compliance
shell: bash
run: |
docker run --volumes-from specs \
-e SPEC_PATHS="${{ secrets.API_KEY }}@/specs/properties.json" \
-e COMMIT_SHA="${{ inputs.SHA }}" \
-e RELEASE_TAG="${{ inputs.VERSION }}" \
-e CREDENTIALS_S3_SECRETKEY="${{ secrets.APICULTURIST_S3 }}" \
-e CREDENTIALS_GITHUB="${{ secrets.APICULTURIST_GITHUB }}" \
-e CREDENTIALS_COLONY="${{ secrets.APICULTURIST_TOKEN }}" \
ghcr.io/qlik-download/api-compliance

22
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Build
on:
workflow_dispatch:
inputs:
release:
type: boolean
required: true
default: false
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
uses: qlik-oss/sn-gh-workflows/.github/workflows/build.yaml@v1
secrets: inherit
with:
release: ${{ inputs.release || false}}
api_specification_path: api-specifications/properties.json

17
.github/workflows/semantic.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: "Semantic PR"
on:
pull_request_target:
types:
- opened
- edited
- synchronize
jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -3,156 +3,166 @@
"info": {
"name": "@nebula.js/sn-network-chart:properties",
"description": "Network chart generic object definition",
"version": "0.3.0",
"version": "1.0.4",
"license": "MIT",
"stability": "experimental",
"stability": "stable",
"x-qlik-visibility": "public"
},
"entries": {},
"definitions": {
"module.exports.version": {
"description": "Current version of this generic object definition",
"type": "string"
},
"module.exports.qHyperCubeDef": {
"description": "Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.",
"entries": {
"properties": {
"extends": [
{
"type": "HyperCubeDef"
"type": "GenericObjectProperties"
}
],
"entries": {
"version": {
"description": "Current version of this generic object definition",
"type": "string"
},
"qHyperCubeDef": {
"description": "Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.",
"extends": [
{
"type": "EngineAPI.HyperCubeDef"
}
],
"kind": "object"
},
"showTitles": {
"optional": true,
"defaultValue": false,
"type": "boolean"
},
"title": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"subtitle": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"footnote": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"edgeType": {
"optional": true,
"defaultValue": "dynamic",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'dynamic'"
},
{
"kind": "literal",
"value": "'continuous'"
},
{
"kind": "literal",
"value": "'discrete'"
},
{
"kind": "literal",
"value": "'diagonalCross'"
},
{
"kind": "literal",
"value": "'straightCross'"
},
{
"kind": "literal",
"value": "'horizontal'"
},
{
"kind": "literal",
"value": "'vertical'"
},
{
"kind": "literal",
"value": "'curvedCW'"
},
{
"kind": "literal",
"value": "'curvedCCW'"
},
{
"kind": "literal",
"value": "'cubicBezier'"
}
]
},
"displayEdgeLabel": {
"optional": true,
"defaultValue": false,
"type": "boolean"
},
"posEdgeLabel": {
"optional": true,
"defaultValue": "top",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'top'"
},
{
"kind": "literal",
"value": "'middle'"
},
{
"kind": "literal",
"value": "'bottom'"
},
{
"kind": "literal",
"value": "'horizontal'"
}
]
},
"nodeShape": {
"optional": true,
"defaultValue": "dot",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'dot'"
},
{
"kind": "literal",
"value": "'square'"
},
{
"kind": "literal",
"value": "'star'"
},
{
"kind": "literal",
"value": "'triangle'"
},
{
"kind": "literal",
"value": "'triangleDown'"
},
{
"kind": "literal",
"value": "'diamond'"
}
]
},
"shadowMode": {
"optional": true,
"defaultValue": false,
"type": "boolean"
}
},
"kind": "object"
},
"module.exports.showTitles": {
"optional": true,
"defaultValue": false,
"type": "boolean"
},
"module.exports.title": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"module.exports.subtitle": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"module.exports.footnote": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"module.exports.edgeType": {
"optional": true,
"defaultValue": "dynamic",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'dynamic'"
},
{
"kind": "literal",
"value": "'continuous'"
},
{
"kind": "literal",
"value": "'discrete'"
},
{
"kind": "literal",
"value": "'diagonalCross'"
},
{
"kind": "literal",
"value": "'straightCross'"
},
{
"kind": "literal",
"value": "'horizontal'"
},
{
"kind": "literal",
"value": "'vertical'"
},
{
"kind": "literal",
"value": "'curvedCW'"
},
{
"kind": "literal",
"value": "'curvedCCW'"
},
{
"kind": "literal",
"value": "'cubicBezier'"
}
]
},
"module.exports.displayEdgeLabel": {
"optional": true,
"defaultValue": false,
"type": "boolean"
},
"module.exports.posEdgeLabel": {
"optional": true,
"defaultValue": "top",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'top'"
},
{
"kind": "literal",
"value": "'middle'"
},
{
"kind": "literal",
"value": "'bottom'"
},
{
"kind": "literal",
"value": "'horizontal'"
}
]
},
"module.exports.nodeShape": {
"optional": true,
"defaultValue": "dot",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'dot'"
},
{
"kind": "literal",
"value": "'square'"
},
{
"kind": "literal",
"value": "'star'"
},
{
"kind": "literal",
"value": "'triangle'"
},
{
"kind": "literal",
"value": "'triangleDown'"
},
{
"kind": "literal",
"value": "'diamond'"
}
]
},
"module.exports.shadowMode": {
"optional": true,
"defaultValue": false,
"type": "boolean"
}
}
},
"definitions": {}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@nebula.js/sn-network-chart",
"version": "0.3.0",
"version": "1.0.4",
"description": "Displays hierarchical or relational dimensions as nodes and edges´, with measures to show the significance of its links.",
"homepage": "",
"repository": "https://github.com/qlik-oss/network-vis-chart",
@@ -14,8 +14,7 @@
"sense": "nebula sense --meta resources/meta.json && shx cp resources/network_chart_v1.png sn-network-chart-ext",
"eslint": "eslint src",
"spec": "sy from-jsdoc -c ./spec-configs/props.conf.js",
"test:unit": "jest",
"prepublishOnly": "shx rm -rf dist && shx rm -rf core/esm && shx rm -rf sn-network-chart-ext && yarn build && yarn sense"
"test:unit": "jest"
},
"files": [
"api-specifications",
@@ -44,6 +43,6 @@
"vis-network": "9.1.6"
},
"peerDependencies": {
"@nebula.js/stardust": ">=1.0.0"
"@nebula.js/stardust": ">=1.7.0"
}
}

View File

@@ -1,9 +1,11 @@
# @nebula.js/sn-network-chart
> **Warning** This repository is now archived and will not be updated
The network chart is built using [visjs network visualization](https://github.com/visjs/vis-network) to display networks of nodes and edges. It was originally forked from [miclae76/network-vis-chart](miclae76/network-vis-chart) and has since been converted to use Nebula.
> This repository was originally published to foster collaboration and engagement with developers as they customized or developed visualizations, but due to customer feedback and usage data, it is now moved back to closed source. Moving this and other projects back to closed source will support better integration with internal build and test tooling, and free up resources for investment in these and other visualizations.
## Legacy build
The chart before Nebula conversion and dependency updates can be found on the *release/legacy* branch.
# sn-network-chart
A network chart to be used with nebula.js, built using [visjs network visualization](https://github.com/visjs/vis-network) to display networks of nodes and edges.
## Requirements

4
readme_legacy.md Normal file
View File

@@ -0,0 +1,4 @@
## Legacy build
The chart before Nebula conversion and dependency updates can be found on the *release/legacy* branch.
Originally forked from [miclae76/network-vis-chart](miclae76/network-vis-chart) and has since been converted to use Nebula.

View File

@@ -1,6 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>qlik-oss/renovate-config"
]
}

View File

@@ -1,27 +1,48 @@
const path = require('path');
const path = require("path");
const pkg = require(path.resolve(__dirname, '../package.json')); // eslint-disable-line
const pkg = require(path.resolve(__dirname, "../package.json")); // eslint-disable-line
module.exports = {
glob: ["./src/extension/properties.js"],
package: path.resolve(__dirname, "../package.json"),
api: {
stability: "experimental",
properties: {
"x-qlik-visibility": "public",
fromJsdoc: {
glob: ["./src/extension/properties.js"],
api: {
stability: "stable",
visibility: "public",
properties: {
"x-qlik-visibility": "public",
},
name: `${pkg.name}:properties`,
version: pkg.version,
description: "Network chart generic object definition",
},
output: {
sort: {
alpha: false,
},
file: "./api-specifications/properties.json",
},
parse: {
types: {
GenericObjectProperties: {
url: "https://qlik.dev/apis/json-rpc/qix/schemas#%23%2Fdefinitions%2Fschemas%2Fentries%2FGenericObjectProperties",
},
undefined: {},
"EngineAPI.ValueExpression": {
url: "https://qlik.dev/apis/json-rpc/qix/schemas#%23%2Fdefinitions%2Fschemas%2Fentries%2FValueExpression",
},
"EngineAPI.HyperCubeDef": {
url: "https://qlik.dev/apis/json-rpc/qix/schemas#%23%2Fdefinitions%2Fschemas%2Fentries%2FListObjectDef",
},
},
},
visibility: "public",
name: `${pkg.name}:properties`,
version: pkg.version,
description: "Network chart generic object definition",
},
output: {
file: path.resolve(__dirname, "../api-specifications/properties.json"),
},
parse: {
types: {
NxMeasure: {},
HyperCubeDef: {},
toDts: {
spec: "./api-specifications/properties.json",
output: {
file: "./types/index.d.ts",
},
dependencies: {
references: ["qlik-engineapi"],
},
},
};

View File

@@ -1,4 +1,9 @@
export default {
/**
* @type {object}
* @extends {GenericObjectProperties}
* @entry
*/
const properties = {
/**
* Current version of this generic object definition
* @type {string}
@@ -6,7 +11,7 @@ export default {
version: process.env.PACKAGE_VERSION,
/**
* Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.
* @extends {HyperCubeDef}
* @extends {EngineAPI.HyperCubeDef}
*/
qHyperCubeDef: {
qDimensions: [],
@@ -54,4 +59,6 @@ export default {
* @type {boolean=}
*/
shadowMode: false,
};
};
export default properties;