How exclude directory from WebPack bundle - javascript

I'm using Storybook to develop a React component. The documentation of an SDK I'm importing in my app says to include a folder '.storybook/src/cards/myCard/xSDK' but not to bundle it.
I'm making the SDK call like this: importedSdkCall({SDKFolderPath: './xSDK'}). The folder is in the same directory as the component making the call.
I'm getting: 404 - http://localhost:6006/xSDK/x2.bundle.js
Storybook allows me to manipulate the generated webpack.config file. Here's the rules array from that file:
"rules": [
{
"test": {},
"use": [
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/builder-webpack4/node_modules/babel-loader/lib/index.js",
"options": {
"cacheDirectory": "/Users/christopheroppedal/Repos/experience-library/node_modules/.cache/storybook/babel",
"sourceType": "unambiguous",
"presets": [
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-env/lib/index.js",
{
"shippedProposals": true,
"loose": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/preset-typescript/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-react/lib/index.js",
{
"runtime": "automatic"
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-flow/lib/index.js"
],
"plugins": [
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-shorthand-properties/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-block-scoping/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/plugin-proposal-decorators/lib/index.js",
{
"legacy": true
}
],
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-class-properties/lib/index.js",
{
"loose": true
}
],
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-private-methods/lib/index.js",
{
"loose": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-export-default-from/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-syntax-dynamic-import/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-object-rest-spread/lib/index.js",
{
"loose": true,
"useBuiltIns": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-classes/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-arrow-functions/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-parameters/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-destructuring/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-spread/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-for-of/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/babel-plugin-macros/dist/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/plugin-proposal-optional-chaining/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-nullish-coalescing-operator/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-polyfill-corejs3/lib/index.js",
{
"method": "usage-global",
"absoluteImports": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/core-js/index.js",
"version": "3.15.2"
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-add-react-displayname/index.js"
],
"overrides": [
{
"test": {},
"plugins": [
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-react-docgen/lib/index.js",
{
"DOC_GEN_COLLECTION_NAME": "STORYBOOK_REACT_CLASSES"
}
]
]
}
]
}
}
],
"include": [
"/Users/christopheroppedal/Repos/experience-library"
],
"exclude": {}
},
{
"test": {},
"use": [
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/babel-loader/lib/index.js",
"options": {
"sourceType": "unambiguous",
"presets": [
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-env/lib/index.js",
{
"shippedProposals": true,
"modules": false,
"loose": true,
"targets": "defaults"
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-react/lib/index.js"
],
"plugins": [
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-shorthand-properties/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-block-scoping/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/plugin-proposal-decorators/lib/index.js",
{
"legacy": true
}
],
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-class-properties/lib/index.js",
{
"loose": true
}
],
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-private-methods/lib/index.js",
{
"loose": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-export-default-from/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-syntax-dynamic-import/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-object-rest-spread/lib/index.js",
{
"loose": true,
"useBuiltIns": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-classes/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-arrow-functions/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-parameters/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-destructuring/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-spread/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-for-of/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/babel-plugin-macros/dist/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/plugin-proposal-optional-chaining/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-nullish-coalescing-operator/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-polyfill-corejs3/lib/index.js",
{
"method": "usage-global",
"absoluteImports": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/core-js/index.js",
"version": "3.15.2"
}
]
]
}
}
]
},
{
"test": {},
"use": [
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/raw-loader/dist/cjs.js"
}
]
},
{
"test": {},
"include": {},
"use": [
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/builder-webpack4/node_modules/babel-loader/lib/index.js",
"options": {
"presets": [
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-env/lib/index.js",
{
"modules": "commonjs"
}
]
]
}
}
]
},
{
"test": {},
"use": [
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/builder-webpack4/node_modules/babel-loader/lib/index.js",
"options": {
"babelrc": false,
"configFile": false,
"cacheDirectory": "/Users/christopheroppedal/Repos/experience-library/node_modules/.cache/storybook/babel",
"sourceType": "unambiguous",
"presets": [
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-env/lib/index.js",
{
"shippedProposals": true,
"loose": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/preset-typescript/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-react/lib/index.js",
{
"runtime": "automatic"
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-flow/lib/index.js"
],
"plugins": [
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-shorthand-properties/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-block-scoping/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/plugin-proposal-decorators/lib/index.js",
{
"legacy": true
}
],
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-class-properties/lib/index.js",
{
"loose": true
}
],
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-private-methods/lib/index.js",
{
"loose": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-export-default-from/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-syntax-dynamic-import/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-object-rest-spread/lib/index.js",
{
"loose": true,
"useBuiltIns": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-classes/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-arrow-functions/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-parameters/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-destructuring/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-spread/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-for-of/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/babel-plugin-macros/dist/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/plugin-proposal-optional-chaining/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-nullish-coalescing-operator/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-polyfill-corejs3/lib/index.js",
{
"method": "usage-global",
"absoluteImports": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/core-js/index.js",
"version": "3.15.2"
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-add-react-displayname/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-react-jsx/lib/index.js",
{
"pragma": "React.createElement",
"pragmaFrag": "React.Fragment"
}
]
],
"overrides": [
{
"test": {},
"plugins": [
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-react-docgen/lib/index.js",
{
"DOC_GEN_COLLECTION_NAME": "STORYBOOK_REACT_CLASSES"
}
]
]
}
]
}
},
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#mdx-js/loader/index.js",
"options": {
"compilers": [
null
],
"remarkPlugins": [
null,
null
]
}
}
]
},
{
"test": {},
"exclude": {},
"use": [
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/builder-webpack4/node_modules/babel-loader/lib/index.js",
"options": {
"babelrc": false,
"configFile": false,
"cacheDirectory": "/Users/christopheroppedal/Repos/experience-library/node_modules/.cache/storybook/babel",
"sourceType": "unambiguous",
"presets": [
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-env/lib/index.js",
{
"shippedProposals": true,
"loose": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/preset-typescript/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-react/lib/index.js",
{
"runtime": "automatic"
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/preset-flow/lib/index.js"
],
"plugins": [
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-shorthand-properties/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-block-scoping/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/plugin-proposal-decorators/lib/index.js",
{
"legacy": true
}
],
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-class-properties/lib/index.js",
{
"loose": true
}
],
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-private-methods/lib/index.js",
{
"loose": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-export-default-from/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-syntax-dynamic-import/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-object-rest-spread/lib/index.js",
{
"loose": true,
"useBuiltIns": true
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-classes/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-arrow-functions/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-parameters/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-destructuring/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-spread/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-for-of/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/babel-plugin-macros/dist/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/#babel/plugin-proposal-optional-chaining/lib/index.js",
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-proposal-nullish-coalescing-operator/lib/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-polyfill-corejs3/lib/index.js",
{
"method": "usage-global",
"absoluteImports": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/core-common/node_modules/core-js/index.js",
"version": "3.15.2"
}
],
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-add-react-displayname/index.js",
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/#babel/plugin-transform-react-jsx/lib/index.js",
{
"pragma": "React.createElement",
"pragmaFrag": "React.Fragment"
}
]
],
"overrides": [
{
"test": {},
"plugins": [
[
"/Users/christopheroppedal/Repos/experience-library/node_modules/babel-plugin-react-docgen/lib/index.js",
{
"DOC_GEN_COLLECTION_NAME": "STORYBOOK_REACT_CLASSES"
}
]
]
}
]
}
},
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#mdx-js/loader/index.js",
"options": {
"remarkPlugins": [
null,
null
]
}
}
]
},
{
"test": {},
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/source-loader/dist/cjs/index.js",
"options": {
"injectStoryParameters": true,
"inspectLocalDependencies": true
},
"enforce": "pre"
},
{
"test": {},
"sideEffects": true,
"use": [
"/Users/christopheroppedal/Repos/experience-library/node_modules/style-loader/dist/cjs.js",
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/css-loader/dist/cjs.js",
"options": {
"importLoaders": 1
}
},
{
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/#storybook/builder-webpack4/node_modules/postcss-loader/dist/cjs.js",
"options": {
"postcssOptions": {
"config": false,
"plugins": [
null,
null
]
}
}
}
]
},
{
"test": {},
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/file-loader/dist/cjs.js",
"options": {
"esModule": false,
"name": "static/media/[path][name].[ext]"
}
},
{
"test": {},
"loader": "/Users/christopheroppedal/Repos/experience-library/node_modules/url-loader/dist/cjs.js",
"options": {
"limit": 10000,
"name": "static/media/[path][name].[ext]"
}
}
] ```

I solved this by changing to a create-react-app project and moving the bundled SDK into the /public directory.

Related

Do not enforce lines-around-comment for JSDoc

I would like to apply an ESLint rule that forces newlines before and after /* block comments / but not around /* JSDoc comments */. For those, I'd like a newline before the comment only, but I can't figure out how to set up a rule to do this. Any help would be appreciated.
My goal for valid comments:
const a = 1;
/*
* This multiline comment has
* newlines above and below it
*/
const b = 2;
/**
* This javadoc describes the function
* direction below it and should have
* a newline above it, but not below
*/
const myFunc = () => {}
I've attempted setting up an ignorePatter within the lines-around-comment setting but it either applies to both types of block comments, neither, or just crashes ESLint.
This attempt ignores both types of block comments for some reason
...
"lines-around-comment": [
"warn",
{
"afterBlockComment": true,
"beforeLineComment": true
"ignorePattern": "\\*\\*"
}
],
...
This one applies to neither
...
"lines-around-comment": [
"warn",
{
"afterBlockComment": true,
"beforeLineComment": true
"ignorePattern": "\\*"
}
],
...
And this one crashes ESLint
...
"lines-around-comment": [
"warn",
{
"afterBlockComment": true,
"beforeLineComment": true
"ignorePattern": "*"
}
],
...
I'll also add that I am ignoring (via an exception) the requirement for spaced-comments when using JSDoc via this config:
...
"spaced-comment": [
"error",
"always",
{ "exceptions": ["*"] }
]
...
Full ESLint file:
{
"root": true,
"plugins": [],
"parser": "#babel/eslint-parser",
"extends": "eslint:recommended",
"rules": {
"array-callback-return": "error",
"no-self-compare": "error",
"no-template-curly-in-string": "error",
"curly": [
"warn",
"all"
],
"default-case": "error",
"dot-notation": "warn",
"eqeqeq": [
"error",
"always"
],
"no-else-return": "warn",
"no-var": "error",
"prefer-const": "error",
"prefer-template": "error",
"radix": "error",
"array-bracket-newline": [
"error",
"consistent"
],
"array-bracket-spacing": [
"warn",
"always",
{
"singleValue": false,
"objectsInArrays": false,
"arraysInArrays": false
}
],
"array-element-newline": [
"warn",
{
"multiline": true,
"minItems": 3
}
],
"arrow-parens": [
"warn",
"as-needed"
],
"arrow-spacing": [
"error",
{
"before": true,
"after": true
}
],
"block-spacing": [
"error",
"always"
],
"brace-style": [
"error",
"1tbs"
],
"comma-dangle": [
"warn",
"always-multiline"
],
"comma-spacing": [
"error",
{
"before": false,
"after": true
}
],
"dot-location": [
"error",
"property"
],
"eol-last": [
"warn",
"always"
],
"func-call-spacing": [
"error",
"never"
],
"function-call-argument-newline": [
"error",
"never"
],
"function-paren-newline": [
"error",
"never"
],
"implicit-arrow-linebreak": [
"error",
"beside"
],
"indent": [
"error",
2,
{
"SwitchCase": 1,
"flatTernaryExpressions": true,
"offsetTernaryExpressions": true
}
],
"keyword-spacing": [
"warn",
{
"before": true,
"after": false
}
],
"lines-around-comment": [
"warn",
{
"afterBlockComment": true,
"beforeLineComment": true,
"ignorePattern": "*"
}
],
"multiline-ternary": [
"error",
"always"
],
"newline-per-chained-call": [
"error"
],
"no-extra-parens": [
"error",
"all"
],
"no-multi-spaces": [
"warn",
{
"ignoreEOLComments": true
}
],
"no-multiple-empty-lines": "warn",
"no-tabs": "error",
"no-trailing-spaces": "warn",
"no-whitespace-before-property": "error",
"object-curly-newline": [
"error",
{
"multiline": true
}
],
"object-curly-spacing": [
"error",
"always"
],
"object-property-newline": "error",
"operator-linebreak": [
"error",
"before"
],
"quotes": [
"error",
"single",
{
"avoidEscape": true,
"allowTemplateLiterals": true
}
],
"rest-spread-spacing": [
"error",
"never"
],
"semi": [
"error",
"always"
],
"semi-spacing": "error",
"semi-style": [
"error",
"last"
],
"space-before-blocks": [
"error",
{
"functions": "never",
"keywords": "always",
"classes": "never"
}
],
"space-before-function-paren": [
"error",
{
"anonymous": "never",
"named": "never",
"asyncArrow": "always"
}
],
"space-in-parens": [
"error",
"never"
],
"spaced-comment": [
"error",
"always",
{
"exceptions": [
// Allow lines to start with a second *, which
// basically allows jsdoc to work.
"*"
]
}
]
},
"globals": {
"define": "readonly",
"log": "readonly",
"Promise": "readonly"
}
}

d3-v6-tip: d3.event is not defined

I am trying to add tooltip to my map when mouseOver event occurs. The goal of the mouseOver function is that it will highlights the path and also show the tip.
I am using d3-v6-tip
This is how I select my svg and calls the tip function
var svg = d3.select("#mapDiv")
.append("svg")
.attr("width", width)
.attr("height", height)
.style("background-color", "white")
.style("border", "solid 1px black")
.call(d3.zoom()
.on("zoom", function (event) {
svg.attr("transform", event.transform);
})
.scaleExtent([1, 1])
)
.append("g");
const tip = d3.tip().attr('class', 'd3-tip').html(function (event, d) {
console.log(event.target.id);
return event.target.id;
});
svg.call(tip);
This is how I draw my map:
d3.json(path).then(function (json) {
var projection = d3.geoMercator();
var features = json.features;
var fixed = features.map(function (feature) {
return turf.rewind(feature, { reverse: true });
})
var geoPath = d3.geoPath().projection(projection);
projection.fitSize([width, height], { "type": "FeatureCollection", "features": fixed })
svg.selectAll("path")
.data(fixed)
.enter()
.append("path")
.attr("d", geoPath)
.attr("id", function (d) { return d.properties.FIPS_10_; })
.style("fill", "red")
.style("stroke", "transparent")
.on("mouseover", mouseOver)
.on("mouseleave", mouseLeave)
.on("click", mouseClick)
})
How I call tip.show in my mouseOver function:
let mouseOver = function (event, d) {
var countryCode = event.target.__data__.properties.FIPS_10_;
d3.selectAll("path#" + countryCode)
.transition()
.duration(200)
.style("opacity", 1)
.style("stroke", "black")
tip.show(event, d);
}
The problem: I put a console.log in my tip declaration. When my mouse hover over it, it shows the current country name in the console(event.target.id). However, the tooltip never show up due to the error: Uncaught TypeError: d3.event is undefined.
I am not completely sure if this has to do with the library itself because the source code calls d3.event when d3.event no longer exist in d3.v6 or am I doing something wrong in my code
Also, is there a better way to create tooltip than using the library?
I downgraded my D3 version to 5 and now it worked. I think there is a problem with the D3-v6-tip library, not sure why.
I believe you're just missing the step to invoke the tip.
Check the code underneath where the page says 'If you want to load it as standalone...' :
/* Invoke the tip in the context of your visualization */
svg.call(tip)
Your event handler code otherwise seems to work fine per this adaptation:
const width = 200;
const height = 200;
const svg = d3.select("body")
.append("svg")
.attr("width", width)
.attr("height", height);
const tip = d3.tip()
.attr("class", "d3-tip")
.html((event, d) => event.target.id);
const projection = d3.geoMercator();
const mapJson = roi();
const features = mapJson.features;
const geoPath = d3.geoPath()
.projection(projection);
projection.fitSize([width, height], mapJson);
svg.selectAll("path")
.data(features)
.enter()
.append("path")
.attr("d", geoPath)
.attr("id", d => d.properties.id)
.style("fill", "green")
.style("stroke", "red")
.on("mouseover", mouseOver)
.on("mouseleave", mouseLeave)
.on("click", mouseClick)
.call(tip);
function mouseOver(event, d) {
d3.selectAll(`path#${event.target.id}`)
.transition()
.duration(200)
.style("opacity", 1)
.style("stroke", "white");
tip.show(event, d);
}
function mouseLeave(event, d) {
d3.selectAll(`path#${event.target.id}`)
.transition()
.duration(200)
.style("stroke", "red");
tip.hide()
}
function mouseClick(event, d) {
window.alert(`Selected ${d.properties.id}`);
}
<script src="https://d3js.org/d3.v6.min.js"></script>
<script src="https://unpkg.com/d3-v6-tip#1.0.6/build/d3-v6-tip.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/bumbeishvili/d3-tip-for-v6#4/d3-tip.min.css">
<script>
function roi() {
return {
"type": "FeatureCollection",
"features": [
{ "type": "Feature", "properties": { "id": "Carlow" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.592415, 52.708085 ], [ -6.614788, 52.654218 ], [ -6.717890, 52.633128 ], [ -6.810019, 52.481218 ], [ -6.916185, 52.446304 ], [ -6.914688, 52.590519 ], [ -6.975609, 52.653791 ], [ -6.952951, 52.705377 ], [ -7.090468, 52.732311 ], [ -7.072441, 52.797934 ], [ -7.065957, 52.822872 ], [ -6.915828, 52.856717 ], [ -6.735489, 52.884007 ], [ -6.712332, 52.924335 ], [ -6.463234, 52.893982 ], [ -6.512470, 52.826791 ], [ -6.631176, 52.831494 ], [ -6.592415, 52.708085 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Cavan" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -7.311848, 54.114105 ], [ -7.188226, 54.079548 ], [ -7.035960, 54.086530 ], [ -6.753231, 53.901916 ], [ -6.753302, 53.900348 ], [ -6.779095, 53.873842 ], [ -6.942976, 53.874982 ], [ -6.955730, 53.766893 ], [ -7.275153, 53.783851 ], [ -7.282350, 53.795394 ], [ -7.394715, 53.781713 ], [ -7.471810, 53.835936 ], [ -7.577762, 53.872702 ], [ -7.606476, 53.937257 ], [ -7.604552, 54.005160 ], [ -7.760239, 54.105127 ], [ -7.853223, 54.098144 ], [ -8.034560, 54.238796 ], [ -7.952976, 54.306628 ], [ -7.878090, 54.289172 ], [ -7.820589, 54.199180 ], [ -7.696967, 54.202529 ], [ -7.554248, 54.127999 ], [ -7.414737, 54.150800 ], [ -7.311848, 54.114105 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Clare" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -9.014420, 53.143721 ], [ -8.995325, 53.094486 ], [ -8.898707, 53.061852 ], [ -8.825673, 52.973357 ], [ -8.610278, 53.039336 ], [ -8.448392, 52.981622 ], [ -8.301399, 53.004138 ], [ -8.315365, 52.923338 ], [ -8.415403, 52.895906 ], [ -8.486797, 52.717419 ], [ -8.542089, 52.683432 ], [ -8.736394, 52.676235 ], [ -8.862510, 52.697896 ], [ -8.966396, 52.683717 ], [ -8.941957, 52.735161 ], [ -9.043064, 52.749839 ], [ -9.077478, 52.671817 ], [ -9.162482, 52.618450 ], [ -9.417494, 52.602062 ], [ -9.546959, 52.639326 ], [ -9.700864, 52.612108 ], [ -9.696375, 52.582325 ], [ -9.939203, 52.558170 ], [ -9.650845, 52.677945 ], [ -9.613081, 52.742927 ], [ -9.495800, 52.750694 ], [ -9.446422, 52.877095 ], [ -9.347524, 52.929893 ], [ -9.476420, 52.941507 ], [ -9.392484, 53.007914 ], [ -9.282471, 53.145146 ], [ -9.152507, 53.119566 ], [ -9.127497, 53.157615 ], [ -9.014420, 53.143721 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Cork" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -8.160320, 52.302731 ], [ -8.088569, 52.215518 ], [ -8.137519, 52.159086 ], [ -7.927468, 51.990147 ], [ -7.849731, 51.978747 ], [ -7.904168, 51.911271 ], [ -7.865834, 51.880134 ], [ -7.997508, 51.860682 ], [ -8.001356, 51.825127 ], [ -8.170295, 51.784300 ], [ -8.264704, 51.815152 ], [ -8.202501, 51.874006 ], [ -8.319711, 51.842370 ], [ -8.273041, 51.798194 ], [ -8.339163, 51.716254 ], [ -8.563037, 51.639302 ], [ -8.658587, 51.634029 ], [ -8.706397, 51.570686 ], [ -8.867498, 51.576243 ], [ -9.107476, 51.537340 ], [ -9.227536, 51.479839 ], [ -9.535274, 51.529003 ], [ -9.644717, 51.520382 ], [ -9.773613, 51.446564 ], [ -9.838025, 51.483188 ], [ -9.653624, 51.542897 ], [ -9.539193, 51.612083 ], [ -9.850850, 51.542897 ], [ -9.444142, 51.692384 ], [ -9.451909, 51.731502 ], [ -9.639730, 51.675426 ], [ -9.906925, 51.652056 ], [ -9.935284, 51.614292 ], [ -10.166355, 51.580447 ], [ -10.055843, 51.632105 ], [ -10.097525, 51.671223 ], [ -9.974188, 51.685402 ], [ -10.004755, 51.719318 ], [ -9.908279, 51.749600 ], [ -9.856336, 51.719175 ], [ -9.727869, 51.792636 ], [ -9.595054, 51.796698 ], [ -9.330922, 51.890181 ], [ -9.305343, 51.970553 ], [ -9.153718, 52.007676 ], [ -9.229317, 52.180890 ], [ -9.294513, 52.237036 ], [ -9.234589, 52.308431 ], [ -9.132414, 52.338500 ], [ -8.961836, 52.321185 ], [ -8.842702, 52.378330 ], [ -8.640631, 52.360160 ], [ -8.519502, 52.284704 ], [ -8.341799, 52.321969 ], [ -8.160320, 52.302731 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Donegal" } , "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -8.541947, 55.023711 ], [ -8.486370, 54.973478 ], [ -8.569735, 54.975687 ], [ -8.541947, 55.023711 ] ] ], [ [ [ -8.161674, 54.457683 ], [ -8.282019, 54.479843 ], [ -8.223093, 54.572114 ], [ -8.109161, 54.612657 ], [ -8.115787, 54.649922 ], [ -8.299190, 54.600971 ], [ -8.288075, 54.646502 ], [ -8.463070, 54.605175 ], [ -8.586978, 54.605674 ], [ -8.793609, 54.659042 ], [ -8.807504, 54.697661 ], [ -8.653100, 54.775682 ], [ -8.434142, 54.755446 ], [ -8.568595, 54.825701 ], [ -8.384194, 54.882631 ], [ -8.460292, 54.918756 ], [ -8.462999, 55.002691 ], [ -8.348639, 55.039030 ], [ -8.286365, 55.159945 ], [ -8.159750, 55.146550 ], [ -8.026366, 55.173483 ], [ -7.981405, 55.227635 ], [ -7.873601, 55.202055 ], [ -7.631913, 55.278224 ], [ -7.617520, 55.191225 ], [ -7.517482, 55.122609 ], [ -7.633623, 55.057698 ], [ -7.559165, 55.034327 ], [ -7.680864, 54.951817 ], [ -7.472522, 55.046511 ], [ -7.526959, 55.059052 ], [ -7.462476, 55.137358 ], [ -7.555816, 55.197067 ], [ -7.528028, 55.285990 ], [ -7.428631, 55.279577 ], [ -7.348116, 55.357884 ], [ -7.194710, 55.348193 ], [ -7.153597, 55.294825 ], [ -6.920745, 55.237111 ], [ -7.158585, 55.148758 ], [ -7.273871, 55.056772 ], [ -7.353103, 55.048649 ], [ -7.443024, 54.934432 ], [ -7.457987, 54.857907 ], [ -7.552467, 54.791714 ], [ -7.537362, 54.744758 ], [ -7.648658, 54.749532 ], [ -7.750619, 54.705498 ], [ -7.834412, 54.738559 ], [ -7.925259, 54.702292 ], [ -7.855289, 54.634674 ], [ -7.710647, 54.630327 ], [ -7.829211, 54.544682 ], [ -8.003280, 54.546107 ], [ -8.052729, 54.489675 ], [ -8.161674, 54.457683 ] ] ] ] } },
{ "type": "Feature", "properties": { "id": "Dublin" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.105263, 53.219391 ], [ -6.347948, 53.200936 ], [ -6.464161, 53.228939 ], [ -6.535199, 53.255302 ], [ -6.495512, 53.384126 ], [ -6.453473, 53.376858 ], [ -6.334767, 53.452528 ], [ -6.320516, 53.495493 ], [ -6.408085, 53.563468 ], [ -6.291089, 53.579998 ], [ -6.213638, 53.635504 ], [ -6.098637, 53.585128 ], [ -6.075836, 53.519006 ], [ -6.121936, 53.388757 ], [ -6.229171, 53.360470 ], [ -6.100276, 53.282877 ], [ -6.105263, 53.219391 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Galway" } , "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -9.780809, 53.152057 ], [ -9.654194, 53.131822 ], [ -9.654194, 53.088500 ], [ -9.830258, 53.138163 ], [ -9.780809, 53.152057 ] ] ], [ [ [ -9.630823, 53.320711 ], [ -9.648066, 53.227371 ], [ -9.744185, 53.235138 ], [ -9.630823, 53.320711 ] ] ], [ [ [ -8.020095, 53.261501 ], [ -7.956538, 53.216256 ], [ -8.068404, 53.175642 ], [ -8.301399, 53.004138 ], [ -8.448392, 52.981622 ], [ -8.610278, 53.039336 ], [ -8.825673, 52.973357 ], [ -8.898707, 53.061852 ], [ -8.995325, 53.094486 ], [ -9.014420, 53.143721 ], [ -8.903053, 53.221528 ], [ -9.051970, 53.220175 ], [ -8.936399, 53.271547 ], [ -9.525869, 53.220958 ], [ -9.622487, 53.326269 ], [ -9.550807, 53.342372 ], [ -9.649135, 53.387119 ], [ -9.774753, 53.291498 ], [ -9.908065, 53.328763 ], [ -10.071946, 53.420678 ], [ -10.198062, 53.405145 ], [ -10.093036, 53.467063 ], [ -10.130800, 53.574868 ], [ -10.014160, 53.567885 ], [ -10.056413, 53.611492 ], [ -9.669727, 53.614912 ], [ -9.610587, 53.632725 ], [ -9.409727, 53.541095 ], [ -9.265798, 53.544301 ], [ -9.203239, 53.487442 ], [ -9.117023, 53.486800 ], [ -8.983425, 53.621895 ], [ -8.814985, 53.663292 ], [ -8.664358, 53.670916 ], [ -8.611489, 53.709535 ], [ -8.438631, 53.687660 ], [ -8.263208, 53.516085 ], [ -8.242046, 53.361040 ], [ -8.152838, 53.328478 ], [ -8.129753, 53.262427 ], [ -8.020095, 53.261501 ] ] ] ] } },
{ "type": "Feature", "properties": { "id": "Kerry" } , "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -10.349188, 51.935996 ], [ -10.286415, 51.921817 ], [ -10.430843, 51.880134 ], [ -10.349188, 51.935996 ] ] ], [ [ [ -9.328215, 52.572634 ], [ -9.303134, 52.515490 ], [ -9.339544, 52.373057 ], [ -9.234589, 52.308431 ], [ -9.294513, 52.237036 ], [ -9.229317, 52.180890 ], [ -9.153718, 52.007676 ], [ -9.305343, 51.970553 ], [ -9.330922, 51.890181 ], [ -9.595054, 51.796698 ], [ -9.727869, 51.792636 ], [ -9.856336, 51.719175 ], [ -9.908279, 51.749600 ], [ -9.863034, 51.748175 ], [ -9.745824, 51.849282 ], [ -10.125812, 51.736775 ], [ -10.228059, 51.781806 ], [ -10.208607, 51.844009 ], [ -10.343630, 51.782946 ], [ -10.335864, 51.845434 ], [ -10.408612, 51.878495 ], [ -10.252499, 51.904004 ], [ -10.321970, 51.952669 ], [ -10.258056, 51.991786 ], [ -9.916972, 52.066815 ], [ -9.889184, 52.111276 ], [ -9.753021, 52.156806 ], [ -9.985303, 52.143197 ], [ -10.193074, 52.106787 ], [ -10.287484, 52.140418 ], [ -10.452504, 52.096527 ], [ -10.475803, 52.176828 ], [ -10.361372, 52.235398 ], [ -10.178040, 52.291544 ], [ -10.181959, 52.231265 ], [ -10.026415, 52.271522 ], [ -9.955804, 52.232619 ], [ -9.736419, 52.256773 ], [ -9.876928, 52.274016 ], [ -9.833607, 52.385669 ], [ -9.943620, 52.422933 ], [ -9.828049, 52.434334 ], [ -9.687469, 52.482928 ], [ -9.620278, 52.581541 ], [ -9.364197, 52.591231 ], [ -9.328215, 52.572634 ] ] ] ] } },
{ "type": "Feature", "properties": { "id": "Kildare" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.495512, 53.384126 ], [ -6.535199, 53.255302 ], [ -6.464161, 53.228939 ], [ -6.592771, 53.092704 ], [ -6.745464, 53.017747 ], [ -6.712332, 52.924335 ], [ -6.735489, 52.884007 ], [ -6.915828, 52.856717 ], [ -6.957939, 52.967443 ], [ -7.032896, 52.971932 ], [ -7.030687, 53.080235 ], [ -7.097237, 53.164598 ], [ -6.997626, 53.317006 ], [ -7.136140, 53.409563 ], [ -7.032112, 53.514019 ], [ -6.840586, 53.390539 ], [ -6.713757, 53.426378 ], [ -6.495512, 53.384126 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Kilkenny" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -7.072441, 52.797934 ], [ -7.090468, 52.732311 ], [ -6.952951, 52.705377 ], [ -6.975609, 52.653791 ], [ -6.914688, 52.590519 ], [ -6.916185, 52.446304 ], [ -6.975182, 52.291544 ], [ -7.191717, 52.251857 ], [ -7.338853, 52.342561 ], [ -7.400130, 52.455496 ], [ -7.386663, 52.502451 ], [ -7.454139, 52.640253 ], [ -7.649370, 52.790809 ], [ -7.559236, 52.834771 ], [ -7.414737, 52.792305 ], [ -7.284772, 52.865624 ], [ -7.181172, 52.893412 ], [ -7.065957, 52.822872 ], [ -7.072441, 52.797934 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Laois" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -7.097237, 53.164598 ], [ -7.030687, 53.080235 ], [ -7.032896, 52.971932 ], [ -6.957939, 52.967443 ], [ -6.915828, 52.856717 ], [ -7.065957, 52.822872 ], [ -7.181172, 52.893412 ], [ -7.284772, 52.865624 ], [ -7.414737, 52.792305 ], [ -7.559236, 52.834771 ], [ -7.649370, 52.790809 ], [ -7.686564, 52.851444 ], [ -7.656923, 52.939370 ], [ -7.692264, 52.982335 ], [ -7.555246, 53.100115 ], [ -7.617948, 53.144790 ], [ -7.541708, 53.181271 ], [ -7.354813, 53.202647 ], [ -7.265606, 53.140230 ], [ -7.097237, 53.164598 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Leitrim" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -8.282019, 54.479843 ], [ -8.161674, 54.457683 ], [ -7.952976, 54.306628 ], [ -8.034560, 54.238796 ], [ -7.853223, 54.098144 ], [ -7.760239, 54.105127 ], [ -7.604552, 54.005160 ], [ -7.606476, 53.937257 ], [ -7.663122, 53.937114 ], [ -7.822370, 53.819477 ], [ -7.899109, 53.815558 ], [ -8.000359, 53.926712 ], [ -8.100895, 53.953859 ], [ -8.040972, 54.077125 ], [ -8.133671, 54.101422 ], [ -8.170794, 54.102633 ], [ -8.333463, 54.185500 ], [ -8.310591, 54.272855 ], [ -8.377782, 54.348453 ], [ -8.373863, 54.468228 ], [ -8.282019, 54.479843 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Limerick" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -8.160320, 52.302731 ], [ -8.341799, 52.321969 ], [ -8.519502, 52.284704 ], [ -8.640631, 52.360160 ], [ -8.842702, 52.378330 ], [ -8.961836, 52.321185 ], [ -9.132414, 52.338500 ], [ -9.234589, 52.308431 ], [ -9.339544, 52.373057 ], [ -9.303134, 52.515490 ], [ -9.328215, 52.572634 ], [ -8.987487, 52.619305 ], [ -8.958060, 52.660702 ], [ -8.638066, 52.660702 ], [ -8.736394, 52.676235 ], [ -8.542089, 52.683432 ], [ -8.486797, 52.717419 ], [ -8.358258, 52.682648 ], [ -8.257080, 52.697682 ], [ -8.180698, 52.666545 ], [ -8.197941, 52.521333 ], [ -8.399157, 52.468464 ], [ -8.388968, 52.438751 ], [ -8.230361, 52.404265 ], [ -8.160320, 52.302731 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Longford" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -7.471810, 53.835936 ], [ -7.394715, 53.781713 ], [ -7.390725, 53.735827 ], [ -7.591442, 53.647545 ], [ -7.658348, 53.531119 ], [ -7.846454, 53.538601 ], [ -7.952620, 53.512380 ], [ -8.025938, 53.607359 ], [ -7.978912, 53.694999 ], [ -7.887424, 53.772237 ], [ -7.899109, 53.815558 ], [ -7.822370, 53.819477 ], [ -7.663122, 53.937114 ], [ -7.606476, 53.937257 ], [ -7.577762, 53.872702 ], [ -7.471810, 53.835936 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Louth" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.238576, 53.778721 ], [ -6.339042, 53.722788 ], [ -6.481475, 53.722788 ], [ -6.561562, 53.771453 ], [ -6.616427, 53.861516 ], [ -6.687038, 53.875481 ], [ -6.753302, 53.900348 ], [ -6.753231, 53.901916 ], [ -6.679699, 53.909469 ], [ -6.584434, 54.051902 ], [ -6.470146, 54.078835 ], [ -6.374739, 54.066366 ], [ -6.279760, 54.109901 ], [ -6.100846, 53.999603 ], [ -6.164688, 53.976802 ], [ -6.352508, 54.011502 ], [ -6.377518, 53.955711 ], [ -6.333627, 53.877049 ], [ -6.238576, 53.861801 ], [ -6.238576, 53.778721 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Mayo" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -9.138043, 54.130707 ], [ -8.963404, 54.145527 ], [ -9.027317, 54.030241 ], [ -8.913598, 54.017701 ], [ -8.835078, 53.972455 ], [ -8.661294, 54.025681 ], [ -8.590398, 53.968109 ], [ -8.682599, 53.958704 ], [ -8.608211, 53.885884 ], [ -8.690223, 53.874484 ], [ -8.696279, 53.722716 ], [ -8.814985, 53.663292 ], [ -8.983425, 53.621895 ], [ -9.117023, 53.486800 ], [ -9.203239, 53.487442 ], [ -9.265798, 53.544301 ], [ -9.409727, 53.541095 ], [ -9.610587, 53.632725 ], [ -9.669727, 53.614912 ], [ -9.774183, 53.600661 ], [ -9.915832, 53.656238 ], [ -9.912483, 53.752286 ], [ -9.651272, 53.800453 ], [ -9.554084, 53.889874 ], [ -9.764706, 53.900134 ], [ -9.905857, 53.861231 ], [ -10.066388, 53.971814 ], [ -10.259196, 53.973453 ], [ -10.189155, 54.015706 ], [ -10.100803, 54.000671 ], [ -9.974188, 54.030669 ], [ -9.966421, 53.951009 ], [ -9.838025, 53.960414 ], [ -9.993639, 54.102633 ], [ -9.899729, 54.117953 ], [ -10.012521, 54.226541 ], [ -10.010312, 54.181296 ], [ -10.129161, 54.096007 ], [ -10.055843, 54.218204 ], [ -10.109709, 54.238511 ], [ -9.995777, 54.309336 ], [ -9.880277, 54.257607 ], [ -9.805819, 54.344606 ], [ -9.382509, 54.294302 ], [ -9.341967, 54.327363 ], [ -9.211931, 54.285894 ], [ -9.224187, 54.217136 ], [ -9.159703, 54.201816 ], [ -9.138043, 54.130707 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Meath" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.687038, 53.875481 ], [ -6.616427, 53.861516 ], [ -6.561562, 53.771453 ], [ -6.481475, 53.722788 ], [ -6.339042, 53.722788 ], [ -6.238576, 53.778721 ], [ -6.213638, 53.635504 ], [ -6.291089, 53.579998 ], [ -6.408085, 53.563468 ], [ -6.320516, 53.495493 ], [ -6.334767, 53.452528 ], [ -6.453473, 53.376858 ], [ -6.495512, 53.384126 ], [ -6.713757, 53.426378 ], [ -6.840586, 53.390539 ], [ -7.032112, 53.514019 ], [ -6.962926, 53.639494 ], [ -7.250928, 53.711387 ], [ -7.275153, 53.783851 ], [ -6.955730, 53.766893 ], [ -6.942976, 53.874982 ], [ -6.779095, 53.873842 ], [ -6.753302, 53.900348 ], [ -6.687038, 53.875481 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Monaghan" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.584434, 54.051902 ], [ -6.679699, 53.909469 ], [ -6.753231, 53.901916 ], [ -7.035960, 54.086530 ], [ -7.188226, 54.079548 ], [ -7.311848, 54.114105 ], [ -7.237746, 54.203455 ], [ -7.142268, 54.227325 ], [ -7.202120, 54.297722 ], [ -7.025129, 54.416143 ], [ -6.876141, 54.345247 ], [ -6.795555, 54.211649 ], [ -6.636377, 54.172745 ], [ -6.670293, 54.070570 ], [ -6.584434, 54.051902 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Offaly" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.997626, 53.317006 ], [ -7.097237, 53.164598 ], [ -7.265606, 53.140230 ], [ -7.354813, 53.202647 ], [ -7.541708, 53.181271 ], [ -7.617948, 53.144790 ], [ -7.555246, 53.100115 ], [ -7.692264, 52.982335 ], [ -7.822513, 52.956256 ], [ -7.922337, 52.862560 ], [ -8.013326, 52.909729 ], [ -7.956681, 52.952907 ], [ -7.904738, 53.092491 ], [ -8.068404, 53.175642 ], [ -7.956538, 53.216256 ], [ -8.020095, 53.261501 ], [ -8.021734, 53.303326 ], [ -7.915640, 53.353416 ], [ -7.767649, 53.329048 ], [ -7.586953, 53.383770 ], [ -7.535224, 53.333751 ], [ -7.372769, 53.317719 ], [ -7.337927, 53.350709 ], [ -7.136140, 53.409563 ], [ -6.997626, 53.317006 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Roscommon" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -8.133671, 54.101422 ], [ -8.040972, 54.077125 ], [ -8.100895, 53.953859 ], [ -8.000359, 53.926712 ], [ -7.899109, 53.815558 ], [ -7.887424, 53.772237 ], [ -7.978912, 53.694999 ], [ -8.025938, 53.607359 ], [ -7.952620, 53.512380 ], [ -7.915640, 53.353416 ], [ -8.021734, 53.303326 ], [ -8.020095, 53.261501 ], [ -8.129753, 53.262427 ], [ -8.152838, 53.328478 ], [ -8.242046, 53.361040 ], [ -8.263208, 53.516085 ], [ -8.438631, 53.687660 ], [ -8.611489, 53.709535 ], [ -8.664358, 53.670916 ], [ -8.814985, 53.663292 ], [ -8.696279, 53.722716 ], [ -8.690223, 53.874484 ], [ -8.608211, 53.885884 ], [ -8.682599, 53.958704 ], [ -8.590398, 53.968109 ], [ -8.459722, 53.916024 ], [ -8.373008, 53.919088 ], [ -8.275606, 54.047627 ], [ -8.170794, 54.102633 ], [ -8.133671, 54.101422 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Sligo" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -8.373863, 54.468228 ], [ -8.377782, 54.348453 ], [ -8.310591, 54.272855 ], [ -8.333463, 54.185500 ], [ -8.170794, 54.102633 ], [ -8.275606, 54.047627 ], [ -8.373008, 53.919088 ], [ -8.459722, 53.916024 ], [ -8.590398, 53.968109 ], [ -8.661294, 54.025681 ], [ -8.835078, 53.972455 ], [ -8.913598, 54.017701 ], [ -9.027317, 54.030241 ], [ -8.963404, 54.145527 ], [ -9.138043, 54.130707 ], [ -9.057528, 54.295442 ], [ -8.930271, 54.294302 ], [ -8.827526, 54.253474 ], [ -8.661935, 54.272641 ], [ -8.583629, 54.207944 ], [ -8.508601, 54.217349 ], [ -8.626381, 54.255113 ], [ -8.681886, 54.355935 ], [ -8.490289, 54.418209 ], [ -8.469697, 54.470437 ], [ -8.373863, 54.468228 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Tipperary" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -8.013326, 52.909729 ], [ -7.922337, 52.862560 ], [ -7.822513, 52.956256 ], [ -7.692264, 52.982335 ], [ -7.656923, 52.939370 ], [ -7.686564, 52.851444 ], [ -7.649370, 52.790809 ], [ -7.454139, 52.640253 ], [ -7.386663, 52.502451 ], [ -7.400130, 52.455496 ], [ -7.338853, 52.342561 ], [ -7.545271, 52.355671 ], [ -7.760524, 52.314986 ], [ -7.722190, 52.222216 ], [ -7.944426, 52.236466 ], [ -8.088569, 52.215518 ], [ -8.160320, 52.302731 ], [ -8.230361, 52.404265 ], [ -8.388968, 52.438751 ], [ -8.399157, 52.468464 ], [ -8.197941, 52.521333 ], [ -8.180698, 52.666545 ], [ -8.257080, 52.697682 ], [ -8.358258, 52.682648 ], [ -8.486797, 52.717419 ], [ -8.415403, 52.895906 ], [ -8.315365, 52.923338 ], [ -8.301399, 53.004138 ], [ -8.068404, 53.175642 ], [ -7.904738, 53.092491 ], [ -7.956681, 52.952907 ], [ -8.013326, 52.909729 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Waterford" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -7.545271, 52.355671 ], [ -7.338853, 52.342561 ], [ -7.191717, 52.251857 ], [ -6.975182, 52.291544 ], [ -6.958651, 52.241525 ], [ -6.949175, 52.177612 ], [ -7.019714, 52.134006 ], [ -7.088615, 52.150679 ], [ -7.426921, 52.129588 ], [ -7.551398, 52.077645 ], [ -7.585243, 51.991501 ], [ -7.731951, 51.937635 ], [ -7.849731, 51.978747 ], [ -7.927468, 51.990147 ], [ -8.137519, 52.159086 ], [ -8.088569, 52.215518 ], [ -7.944426, 52.236466 ], [ -7.722190, 52.222216 ], [ -7.760524, 52.314986 ], [ -7.545271, 52.355671 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Westmeath" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -7.282350, 53.795394 ], [ -7.275153, 53.783851 ], [ -7.250928, 53.711387 ], [ -6.962926, 53.639494 ], [ -7.032112, 53.514019 ], [ -7.136140, 53.409563 ], [ -7.337927, 53.350709 ], [ -7.372769, 53.317719 ], [ -7.535224, 53.333751 ], [ -7.586953, 53.383770 ], [ -7.767649, 53.329048 ], [ -7.915640, 53.353416 ], [ -7.952620, 53.512380 ], [ -7.846454, 53.538601 ], [ -7.658348, 53.531119 ], [ -7.591442, 53.647545 ], [ -7.390725, 53.735827 ], [ -7.394715, 53.781713 ], [ -7.282350, 53.795394 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Wexford" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.958651, 52.241525 ], [ -6.975182, 52.291544 ], [ -6.916185, 52.446304 ], [ -6.810019, 52.481218 ], [ -6.717890, 52.633128 ], [ -6.614788, 52.654218 ], [ -6.592415, 52.708085 ], [ -6.446419, 52.698466 ], [ -6.325575, 52.799145 ], [ -6.144666, 52.770716 ], [ -6.225822, 52.648447 ], [ -6.193046, 52.562944 ], [ -6.353577, 52.408469 ], [ -6.358066, 52.344271 ], [ -6.465799, 52.377902 ], [ -6.429176, 52.293753 ], [ -6.311396, 52.240955 ], [ -6.358636, 52.174049 ], [ -6.489170, 52.190722 ], [ -6.596975, 52.169561 ], [ -6.706917, 52.217656 ], [ -6.836382, 52.216801 ], [ -6.823058, 52.174833 ], [ -6.931361, 52.122392 ], [ -6.903644, 52.201268 ], [ -6.958651, 52.241525 ] ] ] } },
{ "type": "Feature", "properties": { "id": "Wicklow" } , "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.347948, 53.200936 ], [ -6.105263, 53.219391 ], [ -6.041421, 53.117928 ], [ -6.046409, 52.989887 ], [ -5.996960, 52.963738 ], [ -6.057524, 52.857358 ], [ -6.144666, 52.770716 ], [ -6.325575, 52.799145 ], [ -6.446419, 52.698466 ], [ -6.592415, 52.708085 ], [ -6.631176, 52.831494 ], [ -6.512470, 52.826791 ], [ -6.463234, 52.893982 ], [ -6.712332, 52.924335 ], [ -6.745464, 53.017747 ], [ -6.592771, 53.092704 ], [ -6.464161, 53.228939 ], [ -6.347948, 53.200936 ] ] ] } }
]
}
}
</script>
Regarding a 'better way', IMO it would depend on if you had specific use cases not covered by the library. Also, consider the amount of work already done for us by the library which they took the time to update for D3 v6.
I struggled with this too. I was importing d3 and d3-tip via NPM to use in my Next/React app.
The 'd3 is not defined' error is because d3 is not globally available on the window object. If importing d3 and d3-tip via NPM, make d3 available to the window. Put this in your code:
if (typeof window !== "undefined") { window.d3 = d3 }
Make sure you are following the new v6 API properly: calls to tip.html() and tip.show() need the event passed first before the data e.g.
function (event, d) {...}
not just d. That's why downgrading to v5 as per the OP's suggestion worked for me at first - I wasn't doing that. And that would also explain why the Tooltip was failing to position properly.
I hope that helps someone struggling like I was. I really appreciate this great little trusty, simple and elegant tooltip which I've used extensively over the years, and the efforts of the various forkers and maintainers to keep it compatible with the latest d3 versions.

How to get data from SOAP response js

I've a API that returns this data for me.
I need to access the datas inside this. I've tried some response.SOAP-Env:Envelope but got error because of two points.
Can't debug it more because Im using react native.
http://myjson.com/14veid
{
"SOAP-ENV:Envelope": {
"$": {
"SOAP-ENV:encodingStyle": "http://schemas.xmlsoap.org/soap/encoding/",
"xmlns:SOAP-ENV": "http://schemas.xmlsoap.org/soap/envelope/",
"xmlns:xsd": "http://www.w3.org/2001/XMLSchema",
"xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"xmlns:SOAP-ENC": "http://schemas.xmlsoap.org/soap/encoding/"
},
"SOAP-ENV:Body": [
{
"Entidade.dadosEntidadeResponse": [
{
"return": [
{
"$": {
"xsi:nil": "true",
"xsi:type": "xsd:int"
}
}
],
"msgResult": [
{
"_": "Ok",
"$": {
"xsi:type": "xsd:string"
}
}
],
"rsEntidade": [
{
"_": "ASSOCIAÃÃO PRO MELHORAMENTOS DA VILA PREL",
"$": {
"xsi:type": "xsd:string"
}
}
],
"enderecoEntidade": [
{
"_": "RUA THEREZA MAIA PINTO",
"$": {
"xsi:type": "xsd:string"
}
}
],
"telEntidade": [
{
"_": "1158126849",
"$": {
"xsi:type": "xsd:string"
}
}
],
"emailEntidade": [
{
"_": "xxx#uol.com.br",
"$": {
"xsi:type": "xsd:string"
}
}
],
"telPresidente": [
{
"_": "5222682-2716",
"$": {
"xsi:type": "xsd:string"
}
}
],
"emailPresidente": [
{
"$": {
"xsi:type": "xsd:string"
}
}
]
}
]
}
]
}
I need to access the emailEntidade, telEntidade proprieties of this response.
Tried many wat to do this but without success.
Using javascript, react native

comments field are ignored in JSON.stringify

I'm using a module to parse apache configuration files into json
https://github.com/tellnes/node-apacheconf
it works just perfect . when I perform JSON.stringify() the resulted JSON object doesn't contain comments .
output of console.log(config) :
{ ThreadsPerChild: [ '250', comments: [ [Array] ] ],
MaxRequestsPerChild: [ '0', comments: [ [] ] ],
Listen: [ '80', comments: [ [] ] ],
ServerRoot: [ '"/www/Apache22"', comments: [ [] ] ],
DocumentRoot: [ '"/THDL/thdl-site"', comments: [ [] ] ],
ServerName: [ 'localhost:80', comments: [ [Array] ] ],
ServerAdmin: [ 'admin#localhost', comments: [ [] ] ],
ErrorLog: [ 'logs/error.log', comments: [ [] ] ],
LogLevel: [ 'error', comments: [ [] ] ],
LoadModule:
[ 'alias_module modules/mod_alias.so',
'authz_host_module modules/mod_authz_host.so',
'autoindex_module modules/mod_autoindex.so',
'dir_module modules/mod_dir.so',
'log_config_module modules/mod_log_config.so',
'mime_module modules/mod_mime.so',
'rewrite_module modules/mod_rewrite.so',
'setenvif_module modules/mod_setenvif.so',
'php5_module "C:/www/php5/php5apache2.dll"',
comments: [ [Array], [Array], [Array], [Array], [Array], [], [Array], [], [] ] ],
IfDefine:
[ { '$args': 'SSL', LoadModule: [Array] },
comments: [ [Array] ] ],
DefaultType: [ 'text/plain', comments: [ [] ] ],
IfModule:
[ { '$args': 'dir_module', DirectoryIndex: [Array] },
{ '$args': 'mime_module',
TypesConfig: [Array],
AddType: [Array] },
{ '$args': '!php5_module', IfModule: [Array] },
{ '$args': 'php5_module', Location: [Array] },
{ '$args': 'ssl_module',
Include: [Array],
SSLRandomSeed: [Array] },
{ '$args': 'mod_alias.c', Alias: [Array] },
comments: [ [], [], [Array], [], [], [Array] ] ],
IndexIgnore: [ '.htaccess', comments: [ [] ] ],
FilesMatch:
[ { '$args': '^.ht', Order: [Array], Deny: [Array] },
comments: [ [] ] ],
Redirect: [ '/thdl external link: http://localhost', comments: [ [] ] ],
Directory:
[ { '$args': '/',
Options: [Array],
AllowOverride: [Array],
Order: [Array],
Allow: [Array],
Satisfy: [Array] },
{ '$args': '/THDL/thdl-site',
Options: [Array],
AllowOverride: [Array],
Order: [Array],
Allow: [Array] },
{ '$args': 'C:/www/phpMyAdmin',
Options: [Array],
AllowOverride: [Array],
order: [Array],
deny: [Array],
allow: [Array] },
comments: [ [], [Array], [] ] ],
Include:
[ 'conf/extra/httpd-autoindex.conf',
'conf/extra/httpd-languages.conf',
'conf/extra/httpd-info.conf',
'conf/extra/httpd-manual.conf',
'conf/extra/httpd-default.conf',
'conf/Suite-extra/components.conf',
comments: [ [Array], [Array], [Array], [Array], [Array], [Array] ] ],
LoadFile: [ '"C:/www/php5/php5ts.dll"', comments: [ [Array] ] ] }
output of console.log(JSON.stringify(config)) :
{
"ThreadsPerChild": [
"250"
],
"MaxRequestsPerChild": [
"0"
],
"Listen": [
"80"
],
"ServerRoot": [
"\"/www/Apache22\""
],
"DocumentRoot": [
"\"/THDL/thdl-site\""
],
"ServerName": [
"localhost:80"
],
"ServerAdmin": [
"admin#localhost"
],
"ErrorLog": [
"logs/error.log"
],
"LogLevel": [
"error"
],
"LoadModule": [
"alias_module modules/mod_alias.so",
"authz_host_module modules/mod_authz_host.so",
"autoindex_module modules/mod_autoindex.so",
"dir_module modules/mod_dir.so",
"log_config_module modules/mod_log_config.so",
"mime_module modules/mod_mime.so",
"rewrite_module modules/mod_rewrite.so",
"setenvif_module modules/mod_setenvif.so",
"php5_module \"C:/www/php5/php5apache2.dll\""
],
"IfDefine": [
{
"$args": "SSL",
"LoadModule": [
"ssl_module modules/mod_ssl.so"
]
}
],
"DefaultType": [
"text/plain"
],
"IfModule": [
{
"$args": "dir_module",
"DirectoryIndex": [
"index.html index.php index.aspx"
]
},
{
"$args": "mime_module",
"TypesConfig": [
"conf/mime.types"
],
"AddType": [
"application/x-compress .Z",
"application/x-gzip .gz .tgz"
]
},
{
"$args": "!php5_module",
"IfModule": [
{
"$args": "!php4_module",
"Location": [
{
"$args": "/",
"FilesMatch": [
{
"$args": ".php[45]?$",
"Order": [
"allow,deny"
],
"Deny": [
"from all"
]
}
]
}
]
}
]
},
{
"$args": "php5_module",
"Location": [
{
"$args": "/",
"AddType": [
"text/html .php .phps"
],
"AddHandler": [
"application/x-httpd-php .php",
"application/x-httpd-php-source .phps"
]
}
]
},
{
"$args": "ssl_module",
"Include": [
"conf/extra/httpd-ssl.conf"
],
"SSLRandomSeed": [
"startup builtin",
"connect builtin"
]
},
{
"$args": "mod_alias.c",
"Alias": [
"/phpMyAdmin \"C:/www/phpMyAdmin\""
]
}
],
"IndexIgnore": [
".htaccess"
],
"FilesMatch": [
{
"$args": "^.ht",
"Order": [
"allow,deny"
],
"Deny": [
"from all"
]
}
],
"Redirect": [
"/thdl external link: http://localhost"
],
"Directory": [
{
"$args": "/",
"Options": [
"FollowSymLinks"
],
"AllowOverride": [
"all"
],
"Order": [
"deny,allow"
],
"Allow": [
"from all"
],
"Satisfy": [
"all"
]
},
{
"$args": "/THDL/thdl-site",
"Options": [
"Indexes FollowSymLinks"
],
"AllowOverride": [
"all"
],
"Order": [
"allow,deny"
],
"Allow": [
"from all"
]
},
{
"$args": "C:/www/phpMyAdmin",
"Options": [
"None"
],
"AllowOverride": [
"None"
],
"order": [
"deny,allow"
],
"deny": [
"from all"
],
"allow": [
"from 127.0.0.1"
]
}
],
"Include": [
"conf/extra/httpd-autoindex.conf",
"conf/extra/httpd-languages.conf",
"conf/extra/httpd-info.conf",
"conf/extra/httpd-manual.conf",
"conf/extra/httpd-default.conf",
"conf/Suite-extra/components.conf"
],
"LoadFile": [
"\"C:/www/php5/php5ts.dll\""
]
}
comments field is completely ignored in the whole structure . how can I prevent this from happening .
I don't think you can use keys like that inside arrays.
For example, try changing:
DefaultType: [ 'text/plain', comments: [ [] ] ],
to:
DefaultType: { type: 'text/plain', comments: [ [] ] },
Objects contain keys with values: { key1: value1, key2: value2 }
Arrays contain comma separated values: [ value1, value2 ]
Objects can also contain values that are arrays of values: { key1: [ value1, value2 ] }
or multi-dimensional: { key1: [ value1, [ value2, value3 ] ] }
It looks like a problem with the structure of your config object. I recommend changing it to match my examples.

ESLint Flow linting not working with WebStorm and babel-eslint parser

I am trying to use ESLint to enforce some flow rules to the linting procedure but ESLint only reports non-flow errors.
I used this guide: eslint-plugin-flowtype
My .eslintrc.json file is the following :
{
"extends": ["airbnb-base", "plugin:flowtype/recommended"],
"parser": "babel-eslint",
"plugins": [
"import",
"flowtype"
],
"rules": {
"flowtype/boolean-style": [
2,
"boolean"
],
"flowtype/define-flow-type": 1,
"flowtype/delimiter-dangle": [
2,
"never"
],
"flowtype/generic-spacing": [
2,
"never"
],
"flowtype/no-primitive-constructor-types": 2,
"flowtype/no-weak-types": 2,
"flowtype/object-type-delimiter": [
2,
"comma"
],
"flowtype/require-parameter-type": 2,
"flowtype/require-return-type": [
2,
"always",
{
"annotateUndefined": "never"
}
],
"flowtype/require-valid-file-annotation": 2,
"flowtype/semi": [
2,
"always"
],
"flowtype/space-after-type-colon": [
2,
"always"
],
"flowtype/space-before-generic-bracket": [
2,
"never"
],
"flowtype/space-before-type-colon": [
2,
"never"
],
"flowtype/type-id-match": [
2,
"^([A-Z][a-z0-9]+)+Type$"
],
"flowtype/union-intersection-spacing": [
2,
"always"
],
"flowtype/use-flow-type": 1,
"flowtype/valid-syntax": 1
},
"settings": {
"flowtype": {
"onlyFilesWithFlowAnnotation": false
}
}
}

Categories