diff --git a/package-lock.json b/package-lock.json
index 2d005ad3..0d55c9cb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,15 +22,15 @@
"jquery": "^3.6.0",
"moment": "^2.29.1",
"moment-timezone": "^0.5.34",
- "plotly.js": "^2.6.3",
+ "plotly.js": "^2.8.0",
"popper.js": "^1.16.1",
"pulltorefreshjs": "^0.1.22",
"pump": "^3.0.0",
- "sass": "^1.43.4",
- "stylelint": "^14.0.1",
- "stylelint-config-recommended-scss": "^5.0.1",
+ "sass": "^1.45.0",
+ "stylelint": "^14.1.0",
+ "stylelint-config-recommended-scss": "^5.0.2",
"stylelint-order": "^5.0.0",
- "stylelint-scss": "^4.0.0",
+ "stylelint-scss": "^4.0.1",
"tempusdominus-bootstrap-4": "5.1.2",
"tempusdominus-core": "5.0.3"
}
@@ -418,9 +418,9 @@
}
},
"node_modules/ajv": {
- "version": "8.6.3",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz",
- "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz",
+ "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
@@ -4363,9 +4363,9 @@
]
},
"node_modules/ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz",
+ "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==",
"dev": true,
"engines": {
"node": ">= 4"
@@ -4382,6 +4382,12 @@
"quantize": "^1.0.2"
}
},
+ "node_modules/immutable": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
+ "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
+ "dev": true
+ },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -5161,12 +5167,6 @@
"integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
"dev": true
},
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
"node_modules/lodash.escape": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
@@ -6589,9 +6589,9 @@
}
},
"node_modules/plotly.js": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.6.3.tgz",
- "integrity": "sha512-MSdevryj5VvSZvr+slTnJcZgOmvMPZEUe8rFY+3ygxbVUFqmcOvT0TurUx4g07tfAVZ+UhXIaskHnAZNmUcNTg==",
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.8.0.tgz",
+ "integrity": "sha512-bYuLdTlQEWMs/u3nNqV/jwERj9tw8qMDKBV8NBP1BucfapLoYIM9w4ARc3W9m93r6OYvP5I6ykUztiDmDcvA9Q==",
"dev": true,
"dependencies": {
"@plotly/d3": "3.8.0",
@@ -6628,7 +6628,7 @@
"native-promise-only": "^0.8.1",
"parse-svg-path": "^0.1.2",
"polybooljs": "^1.2.0",
- "probe-image-size": "^7.2.1",
+ "probe-image-size": "^7.2.2",
"regl": "^2.1.0",
"regl-error2d": "^2.0.12",
"regl-line2d": "^3.1.2",
@@ -6846,9 +6846,9 @@
}
},
"node_modules/probe-image-size": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.1.tgz",
- "integrity": "sha512-d+6L3NvQBCNt4peRDoEfA7r9bPm6/qy18FnLKwg4NWBC5JrJm0pMLRg1kF4XNsPe1bUdt3WIMonPJzQWN2HXjQ==",
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.2.tgz",
+ "integrity": "sha512-QUm+w1S9WTsT5GZB830u0BHExrUmF0J4fyRm5kbLUMEP3fl9UVYXc3xOBVqZNnH9tnvVEJO8vDk3PMtsLqjxug==",
"dev": true,
"dependencies": {
"lodash.merge": "^4.6.2",
@@ -7707,12 +7707,14 @@
"dev": true
},
"node_modules/sass": {
- "version": "1.43.4",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz",
- "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==",
+ "version": "1.45.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz",
+ "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==",
"dev": true,
"dependencies": {
- "chokidar": ">=3.0.0 <4.0.0"
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
@@ -8388,9 +8390,9 @@
"dev": true
},
"node_modules/stylelint": {
- "version": "14.0.1",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.0.1.tgz",
- "integrity": "sha512-ZcAkmFLVCultmwkQUjxKzxW/o5+CzNmDk6TPJj/d4Y7ipTGGrewIWmNm+InjdSr04PR5/yynsAJeYJY/wisdMg==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.1.0.tgz",
+ "integrity": "sha512-IedkssuNVA11+v++2PIV2OHOU5A3SfRcXVi56vZVSsMhGrgtwmmit69jeM+08/Tun5DTBe7BuH1Zp1mMLmtKLA==",
"dev": true,
"dependencies": {
"balanced-match": "^2.0.0",
@@ -8405,7 +8407,7 @@
"globby": "^11.0.4",
"globjoin": "^0.1.4",
"html-tags": "^3.1.0",
- "ignore": "^5.1.8",
+ "ignore": "^5.1.9",
"import-lazy": "^4.0.0",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
@@ -8428,7 +8430,7 @@
"strip-ansi": "^6.0.1",
"style-search": "^0.1.0",
"svg-tags": "^1.0.0",
- "table": "^6.7.2",
+ "table": "^6.7.3",
"v8-compile-cache": "^2.3.0",
"write-file-atomic": "^3.0.3"
},
@@ -8453,12 +8455,12 @@
}
},
"node_modules/stylelint-config-recommended-scss": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.1.tgz",
- "integrity": "sha512-kVI5lX8jtaw9uNnnxxziw+LhW59m0x/JzGj8zVepeFQJ56eM4HazN4gMyCRQQSLr/8CXlIHGOW34CV5hIMr3FQ==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz",
+ "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==",
"dev": true,
"dependencies": {
- "postcss-scss": "^4.0.1",
+ "postcss-scss": "^4.0.2",
"stylelint-config-recommended": "^6.0.0",
"stylelint-scss": "^4.0.0"
},
@@ -8480,12 +8482,12 @@
}
},
"node_modules/stylelint-scss": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.0.0.tgz",
- "integrity": "sha512-lIRhPqtI6I065EJ6aI4mWKsmQt8Krnu6aF9XSL9s8Nd2f/cDKImST0T9TfjnUul3ReKYWozkG9dlpNTZH2FB9w==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.0.1.tgz",
+ "integrity": "sha512-Ea+KY7ZFsDhU6Ne9r84y7NvFSNA843w352MSdQeDmklar0pDbeQj9flKrVAuDIlK0pDDdhFtgBl/N0FrtWHq0g==",
"dev": true,
"dependencies": {
- "lodash": "^4.17.15",
+ "lodash": "^4.17.21",
"postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1",
"postcss-selector-parser": "^6.0.6",
@@ -8643,13 +8645,12 @@
"dev": true
},
"node_modules/table": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz",
- "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==",
+ "version": "6.7.5",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz",
+ "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==",
"dev": true,
"dependencies": {
"ajv": "^8.0.1",
- "lodash.clonedeep": "^4.5.0",
"lodash.truncate": "^4.4.2",
"slice-ansi": "^4.0.0",
"string-width": "^4.2.3",
@@ -10230,9 +10231,9 @@
}
},
"ajv": {
- "version": "8.6.3",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz",
- "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz",
+ "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
@@ -13526,9 +13527,9 @@
"dev": true
},
"ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz",
+ "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==",
"dev": true
},
"image-palette": {
@@ -13542,6 +13543,12 @@
"quantize": "^1.0.2"
}
},
+ "immutable": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
+ "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
+ "dev": true
+ },
"import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -14163,12 +14170,6 @@
"integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
"dev": true
},
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
"lodash.escape": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
@@ -15312,9 +15313,9 @@
}
},
"plotly.js": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.6.3.tgz",
- "integrity": "sha512-MSdevryj5VvSZvr+slTnJcZgOmvMPZEUe8rFY+3ygxbVUFqmcOvT0TurUx4g07tfAVZ+UhXIaskHnAZNmUcNTg==",
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.8.0.tgz",
+ "integrity": "sha512-bYuLdTlQEWMs/u3nNqV/jwERj9tw8qMDKBV8NBP1BucfapLoYIM9w4ARc3W9m93r6OYvP5I6ykUztiDmDcvA9Q==",
"dev": true,
"requires": {
"@plotly/d3": "3.8.0",
@@ -15351,7 +15352,7 @@
"native-promise-only": "^0.8.1",
"parse-svg-path": "^0.1.2",
"polybooljs": "^1.2.0",
- "probe-image-size": "^7.2.1",
+ "probe-image-size": "^7.2.2",
"regl": "^2.1.0",
"regl-error2d": "^2.0.12",
"regl-line2d": "^3.1.2",
@@ -15517,9 +15518,9 @@
"dev": true
},
"probe-image-size": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.1.tgz",
- "integrity": "sha512-d+6L3NvQBCNt4peRDoEfA7r9bPm6/qy18FnLKwg4NWBC5JrJm0pMLRg1kF4XNsPe1bUdt3WIMonPJzQWN2HXjQ==",
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.2.tgz",
+ "integrity": "sha512-QUm+w1S9WTsT5GZB830u0BHExrUmF0J4fyRm5kbLUMEP3fl9UVYXc3xOBVqZNnH9tnvVEJO8vDk3PMtsLqjxug==",
"dev": true,
"requires": {
"lodash.merge": "^4.6.2",
@@ -16215,12 +16216,14 @@
"dev": true
},
"sass": {
- "version": "1.43.4",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz",
- "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==",
+ "version": "1.45.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz",
+ "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==",
"dev": true,
"requires": {
- "chokidar": ">=3.0.0 <4.0.0"
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
},
"dependencies": {
"anymatch": {
@@ -16780,9 +16783,9 @@
"dev": true
},
"stylelint": {
- "version": "14.0.1",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.0.1.tgz",
- "integrity": "sha512-ZcAkmFLVCultmwkQUjxKzxW/o5+CzNmDk6TPJj/d4Y7ipTGGrewIWmNm+InjdSr04PR5/yynsAJeYJY/wisdMg==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.1.0.tgz",
+ "integrity": "sha512-IedkssuNVA11+v++2PIV2OHOU5A3SfRcXVi56vZVSsMhGrgtwmmit69jeM+08/Tun5DTBe7BuH1Zp1mMLmtKLA==",
"dev": true,
"requires": {
"balanced-match": "^2.0.0",
@@ -16797,7 +16800,7 @@
"globby": "^11.0.4",
"globjoin": "^0.1.4",
"html-tags": "^3.1.0",
- "ignore": "^5.1.8",
+ "ignore": "^5.1.9",
"import-lazy": "^4.0.0",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
@@ -16820,7 +16823,7 @@
"strip-ansi": "^6.0.1",
"style-search": "^0.1.0",
"svg-tags": "^1.0.0",
- "table": "^6.7.2",
+ "table": "^6.7.3",
"v8-compile-cache": "^2.3.0",
"write-file-atomic": "^3.0.3"
},
@@ -16882,12 +16885,12 @@
"requires": {}
},
"stylelint-config-recommended-scss": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.1.tgz",
- "integrity": "sha512-kVI5lX8jtaw9uNnnxxziw+LhW59m0x/JzGj8zVepeFQJ56eM4HazN4gMyCRQQSLr/8CXlIHGOW34CV5hIMr3FQ==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz",
+ "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==",
"dev": true,
"requires": {
- "postcss-scss": "^4.0.1",
+ "postcss-scss": "^4.0.2",
"stylelint-config-recommended": "^6.0.0",
"stylelint-scss": "^4.0.0"
}
@@ -16903,12 +16906,12 @@
}
},
"stylelint-scss": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.0.0.tgz",
- "integrity": "sha512-lIRhPqtI6I065EJ6aI4mWKsmQt8Krnu6aF9XSL9s8Nd2f/cDKImST0T9TfjnUul3ReKYWozkG9dlpNTZH2FB9w==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.0.1.tgz",
+ "integrity": "sha512-Ea+KY7ZFsDhU6Ne9r84y7NvFSNA843w352MSdQeDmklar0pDbeQj9flKrVAuDIlK0pDDdhFtgBl/N0FrtWHq0g==",
"dev": true,
"requires": {
- "lodash": "^4.17.15",
+ "lodash": "^4.17.21",
"postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.1",
"postcss-selector-parser": "^6.0.6",
@@ -16998,13 +17001,12 @@
"dev": true
},
"table": {
- "version": "6.7.2",
- "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz",
- "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==",
+ "version": "6.7.5",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz",
+ "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==",
"dev": true,
"requires": {
"ajv": "^8.0.1",
- "lodash.clonedeep": "^4.5.0",
"lodash.truncate": "^4.4.2",
"slice-ansi": "^4.0.0",
"string-width": "^4.2.3",
diff --git a/package.json b/package.json
index 1ae94cf5..f5b20064 100644
--- a/package.json
+++ b/package.json
@@ -22,15 +22,15 @@
"jquery": "^3.6.0",
"moment": "^2.29.1",
"moment-timezone": "^0.5.34",
- "plotly.js": "^2.6.3",
+ "plotly.js": "^2.8.0",
"popper.js": "^1.16.1",
"pulltorefreshjs": "^0.1.22",
"pump": "^3.0.0",
- "sass": "^1.43.4",
- "stylelint": "^14.0.1",
- "stylelint-config-recommended-scss": "^5.0.1",
+ "sass": "^1.45.0",
+ "stylelint": "^14.1.0",
+ "stylelint-config-recommended-scss": "^5.0.2",
"stylelint-order": "^5.0.0",
- "stylelint-scss": "^4.0.0",
+ "stylelint-scss": "^4.0.1",
"tempusdominus-bootstrap-4": "5.1.2",
"tempusdominus-core": "5.0.3"
}
diff --git a/static/admin/js/actions.a6d23e8853fd.js b/static/admin/js/actions.3edba334d0a4.js
similarity index 95%
rename from static/admin/js/actions.a6d23e8853fd.js
rename to static/admin/js/actions.3edba334d0a4.js
index da1c3108..2830e911 100644
--- a/static/admin/js/actions.a6d23e8853fd.js
+++ b/static/admin/js/actions.3edba334d0a4.js
@@ -36,7 +36,10 @@
function clearAcross(options) {
reset(options);
- document.querySelector(options.acrossInput).value = 0;
+ const acrossInputs = document.querySelectorAll(options.acrossInput);
+ acrossInputs.forEach(function(acrossInput) {
+ acrossInput.value = 0;
+ });
document.querySelector(options.actionContainer).classList.remove(options.selectedClass);
}
@@ -107,8 +110,10 @@
document.querySelectorAll(options.acrossQuestions + " a").forEach(function(el) {
el.addEventListener('click', function(event) {
event.preventDefault();
- const acrossInput = document.querySelector(options.acrossInput);
- acrossInput.value = 1;
+ const acrossInputs = document.querySelectorAll(options.acrossInput);
+ acrossInputs.forEach(function(acrossInput) {
+ acrossInput.value = 1;
+ });
showClear(options);
});
});
diff --git a/static/admin/js/actions.3edba334d0a4.js.gz b/static/admin/js/actions.3edba334d0a4.js.gz
new file mode 100644
index 00000000..3bcc2350
Binary files /dev/null and b/static/admin/js/actions.3edba334d0a4.js.gz differ
diff --git a/static/admin/js/actions.a6d23e8853fd.js.gz b/static/admin/js/actions.a6d23e8853fd.js.gz
deleted file mode 100644
index 00964db2..00000000
Binary files a/static/admin/js/actions.a6d23e8853fd.js.gz and /dev/null differ
diff --git a/static/admin/js/actions.js b/static/admin/js/actions.js
index da1c3108..2830e911 100644
--- a/static/admin/js/actions.js
+++ b/static/admin/js/actions.js
@@ -36,7 +36,10 @@
function clearAcross(options) {
reset(options);
- document.querySelector(options.acrossInput).value = 0;
+ const acrossInputs = document.querySelectorAll(options.acrossInput);
+ acrossInputs.forEach(function(acrossInput) {
+ acrossInput.value = 0;
+ });
document.querySelector(options.actionContainer).classList.remove(options.selectedClass);
}
@@ -107,8 +110,10 @@
document.querySelectorAll(options.acrossQuestions + " a").forEach(function(el) {
el.addEventListener('click', function(event) {
event.preventDefault();
- const acrossInput = document.querySelector(options.acrossInput);
- acrossInput.value = 1;
+ const acrossInputs = document.querySelectorAll(options.acrossInput);
+ acrossInputs.forEach(function(acrossInput) {
+ acrossInput.value = 1;
+ });
showClear(options);
});
});
diff --git a/static/admin/js/actions.js.gz b/static/admin/js/actions.js.gz
index 00964db2..3bcc2350 100644
Binary files a/static/admin/js/actions.js.gz and b/static/admin/js/actions.js.gz differ
diff --git a/static/babybuddy/js/graph.c70d07f5822f.js b/static/babybuddy/js/graph.aec8efcce748.js
similarity index 98%
rename from static/babybuddy/js/graph.c70d07f5822f.js
rename to static/babybuddy/js/graph.aec8efcce748.js
index af27fcd2..b7f31de0 100644
--- a/static/babybuddy/js/graph.c70d07f5822f.js
+++ b/static/babybuddy/js/graph.aec8efcce748.js
@@ -1,5 +1,5 @@
/**
-* plotly.js (cartesian) v2.6.3
+* plotly.js (cartesian) v2.8.0
* Copyright 2012-2021, Plotly, Inc.
* All rights reserved.
* Licensed under the MIT license
@@ -77,7 +77,7 @@ for(var selector in rules) {
module.exports = _dereq_('../src/transforms/aggregate');
-},{"../src/transforms/aggregate":546}],3:[function(_dereq_,module,exports){
+},{"../src/transforms/aggregate":547}],3:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/bar');
@@ -107,12 +107,12 @@ module.exports = _dereq_('../src/core');
module.exports = _dereq_('../src/transforms/filter');
-},{"../src/transforms/filter":547}],9:[function(_dereq_,module,exports){
+},{"../src/transforms/filter":548}],9:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/transforms/groupby');
-},{"../src/transforms/groupby":548}],10:[function(_dereq_,module,exports){
+},{"../src/transforms/groupby":549}],10:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/heatmap');
@@ -122,22 +122,22 @@ module.exports = _dereq_('../src/traces/heatmap');
module.exports = _dereq_('../src/traces/histogram');
-},{"../src/traces/histogram":465}],12:[function(_dereq_,module,exports){
+},{"../src/traces/histogram":466}],12:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/histogram2d');
-},{"../src/traces/histogram2d":471}],13:[function(_dereq_,module,exports){
+},{"../src/traces/histogram2d":472}],13:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/histogram2dcontour');
-},{"../src/traces/histogram2dcontour":475}],14:[function(_dereq_,module,exports){
+},{"../src/traces/histogram2dcontour":476}],14:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/image');
-},{"../src/traces/image":483}],15:[function(_dereq_,module,exports){
+},{"../src/traces/image":484}],15:[function(_dereq_,module,exports){
'use strict';
var Plotly = _dereq_('./core');
@@ -173,22 +173,22 @@ module.exports = Plotly;
module.exports = _dereq_('../src/traces/pie');
-},{"../src/traces/pie":492}],17:[function(_dereq_,module,exports){
+},{"../src/traces/pie":493}],17:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/scatterternary');
-},{"../src/traces/scatterternary":533}],18:[function(_dereq_,module,exports){
+},{"../src/traces/scatterternary":534}],18:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/transforms/sort');
-},{"../src/transforms/sort":550}],19:[function(_dereq_,module,exports){
+},{"../src/transforms/sort":551}],19:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/violin');
-},{"../src/traces/violin":541}],20:[function(_dereq_,module,exports){
+},{"../src/traces/violin":542}],20:[function(_dereq_,module,exports){
!function() {
var d3 = {
version: "3.8.0"
@@ -16525,15 +16525,18 @@ var SIG_EXIF = str2arr('Exif\0\0');
module.exports = function (data) {
if (data.length < 2) return;
- // first marker of the file MUST be 0xFFD8
- if (data[0] !== 0xFF || data[1] !== 0xD8) return;
+ // first marker of the file MUST be 0xFFD8,
+ // following by either 0xFFE0, 0xFFE2 or 0xFFE3
+ if (data[0] !== 0xFF || data[1] !== 0xD8 || data[2] !== 0xFF) return;
var offset = 2;
for (;;) {
- if (data.length - offset < 2) return;
- // not a JPEG marker
- if (data[offset++] !== 0xFF) return;
+ // skip until we see 0xFF, see https://github.com/nodeca/probe-image-size/issues/68
+ for (;;) {
+ if (data.length - offset < 2) return;
+ if (data[offset++] === 0xFF) break;
+ }
var code = data[offset++];
var length;
@@ -30723,13 +30726,11 @@ var overrideAll = _dereq_('../../plot_api/edit_types').overrideAll;
module.exports = overrideAll({
-// TODO: only right is supported currently
-// orient: {
-// valType: 'enumerated',
-// values: ['left', 'right', 'top', 'bottom'],
-// dflt: 'right',
-//
-// },
+ orientation: {
+ valType: 'enumerated',
+ values: ['h', 'v'],
+ dflt: 'v',
+ },
thicknessmode: {
valType: 'enumerated',
values: ['fraction', 'pixels'],
@@ -30752,14 +30753,12 @@ module.exports = overrideAll({
},
x: {
valType: 'number',
- dflt: 1.02,
min: -2,
max: 3,
},
xanchor: {
valType: 'enumerated',
values: ['left', 'center', 'right'],
- dflt: 'left',
},
xpad: {
valType: 'number',
@@ -30768,14 +30767,12 @@ module.exports = overrideAll({
},
y: {
valType: 'number',
- dflt: 0.5,
min: -2,
max: 3,
},
yanchor: {
valType: 'enumerated',
values: ['top', 'middle', 'bottom'],
- dflt: 'middle',
},
ypad: {
valType: 'number',
@@ -30807,15 +30804,21 @@ module.exports = overrideAll({
ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}),
ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, {
}),
+
+ // ticklabelposition: not used directly, as values depend on orientation
+ // left/right options are for x axes, and top/bottom options are for y axes
ticklabelposition: {
valType: 'enumerated',
values: [
'outside', 'inside',
'outside top', 'inside top',
+ 'outside left', 'inside left',
+ 'outside right', 'inside right',
'outside bottom', 'inside bottom'
],
dflt: 'outside',
},
+
ticklen: axesAttrs.ticklen,
tickwidth: axesAttrs.tickwidth,
tickcolor: axesAttrs.tickcolor,
@@ -30842,7 +30845,6 @@ module.exports = overrideAll({
side: {
valType: 'enumerated',
values: ['right', 'top', 'bottom'],
- dflt: 'top',
}
},
@@ -30901,23 +30903,30 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) {
return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt);
}
+ var margin = layout.margin || {t: 0, b: 0, l: 0, r: 0};
+ var w = layout.width - margin.l - margin.r;
+ var h = layout.height - margin.t - margin.b;
+
+ var orientation = coerce('orientation');
+ var isVertical = orientation === 'v';
+
var thicknessmode = coerce('thicknessmode');
coerce('thickness', (thicknessmode === 'fraction') ?
- 30 / (layout.width - layout.margin.l - layout.margin.r) :
+ 30 / (isVertical ? w : h) :
30
);
var lenmode = coerce('lenmode');
coerce('len', (lenmode === 'fraction') ?
1 :
- layout.height - layout.margin.t - layout.margin.b
+ isVertical ? h : w
);
- coerce('x');
- coerce('xanchor');
+ coerce('x', isVertical ? 1.02 : 0.5);
+ coerce('xanchor', isVertical ? 'left' : 'center');
coerce('xpad');
- coerce('y');
- coerce('yanchor');
+ coerce('y', isVertical ? 0.5 : 1.02);
+ coerce('yanchor', isVertical ? 'middle' : 'bottom');
coerce('ypad');
Lib.noneOrAll(colorbarIn, colorbarOut, ['x', 'y']);
@@ -30927,7 +30936,22 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) {
coerce('borderwidth');
coerce('bgcolor');
- var ticklabelposition = coerce('ticklabelposition');
+ var ticklabelposition = Lib.coerce(colorbarIn, colorbarOut, {
+ ticklabelposition: {
+ valType: 'enumerated',
+ dflt: 'outside',
+ values: isVertical ? [
+ 'outside', 'inside',
+ 'outside top', 'inside top',
+ 'outside bottom', 'inside bottom'
+ ] : [
+ 'outside', 'inside',
+ 'outside left', 'inside left',
+ 'outside right', 'inside right'
+ ]
+ }
+ }, 'ticklabelposition');
+
coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : 'hide past div');
handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear');
@@ -30949,7 +30973,7 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) {
size: Lib.bigFont(tickFont.size)
});
Lib.coerceFont(coerce, 'title.font', dfltTitleFont);
- coerce('title.side');
+ coerce('title.side', isVertical ? 'top' : 'right');
};
},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/cartesian/prefix_suffix_defaults":353,"../../plots/cartesian/tick_label_defaults":358,"../../plots/cartesian/tick_mark_defaults":359,"../../plots/cartesian/tick_value_defaults":360,"./attributes":158}],161:[function(_dereq_,module,exports){
@@ -31122,18 +31146,20 @@ function makeColorBarData(gd) {
}
function drawColorBar(g, opts, gd) {
+ var isVertical = opts.orientation === 'v';
var len = opts.len;
var lenmode = opts.lenmode;
var thickness = opts.thickness;
var thicknessmode = opts.thicknessmode;
var outlinewidth = opts.outlinewidth;
var borderwidth = opts.borderwidth;
+ var bgcolor = opts.bgcolor;
var xanchor = opts.xanchor;
var yanchor = opts.yanchor;
var xpad = opts.xpad;
var ypad = opts.ypad;
var optsX = opts.x;
- var optsY = opts.y;
+ var optsY = isVertical ? opts.y : 1 - opts.y;
var fullLayout = gd._fullLayout;
var gs = fullLayout._size;
@@ -31164,23 +31190,35 @@ function drawColorBar(g, opts, gd) {
// when the colorbar itself is pushing the margins.
// but then the fractional size is calculated based on the
// actual graph size, so that the axes will size correctly.
- var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? gs.w : 1));
- var thickFrac = thickPx / gs.w;
- var lenPx = Math.round(len * (lenmode === 'fraction' ? gs.h : 1));
- var lenFrac = lenPx / gs.h;
- var xpadFrac = xpad / gs.w;
- var yExtraPx = (borderwidth + outlinewidth) / 2;
- var ypadFrac = ypad / gs.h;
+ var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? (isVertical ? gs.w : gs.h) : 1));
+ var thickFrac = thickPx / (isVertical ? gs.w : gs.h);
+ var lenPx = Math.round(len * (lenmode === 'fraction' ? (isVertical ? gs.h : gs.w) : 1));
+ var lenFrac = lenPx / (isVertical ? gs.h : gs.w);
// x positioning: do it initially just for left anchor,
// then fix at the end (since we don't know the width yet)
- var uPx = Math.round(optsX * gs.w + xpad);
- // for dragging... this is getting a little muddled...
- var uFrac = optsX - thickFrac * ({center: 0.5, right: 1}[xanchor] || 0);
+ var uPx = Math.round(isVertical ?
+ optsX * gs.w + xpad :
+ optsY * gs.h + ypad
+ );
- // y positioning we can do correctly from the start
- var vFrac = optsY + lenFrac * (({top: -0.5, bottom: 0.5}[yanchor] || 0) - 0.5);
- var vPx = Math.round(gs.h * (1 - vFrac));
+ var xRatio = {center: 0.5, right: 1}[xanchor] || 0;
+ var yRatio = {top: 1, middle: 0.5}[yanchor] || 0;
+
+ // for dragging... this is getting a little muddled...
+ var uFrac = isVertical ?
+ optsX - xRatio * thickFrac :
+ optsY - yRatio * thickFrac;
+
+ // y/x positioning (for v/h) we can do correctly from the start
+ var vFrac = isVertical ?
+ optsY - yRatio * lenFrac :
+ optsX - xRatio * lenFrac;
+
+ var vPx = Math.round(isVertical ?
+ gs.h * (1 - vFrac) :
+ gs.w * vFrac
+ );
// stash a few things for makeEditable
opts._lenFrac = lenFrac;
@@ -31193,12 +31231,23 @@ function drawColorBar(g, opts, gd) {
// position can't go in through supplyDefaults
// because that restricts it to [0,1]
- ax.position = optsX + xpadFrac + thickFrac;
+ ax.position = thickFrac + (isVertical ?
+ optsX + xpad / gs.w :
+ optsY + ypad / gs.h
+ );
- if(['top', 'bottom'].indexOf(titleSide) !== -1) {
+ var topOrBottom = ['top', 'bottom'].indexOf(titleSide) !== -1;
+
+ if(isVertical && topOrBottom) {
ax.title.side = titleSide;
- ax.titlex = optsX + xpadFrac;
- ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypadFrac : ypadFrac);
+ ax.titlex = optsX + xpad / gs.w;
+ ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypad / gs.h : ypad / gs.h);
+ }
+
+ if(!isVertical && !topOrBottom) {
+ ax.title.side = titleSide;
+ ax.titley = optsY + ypad / gs.h;
+ ax.titlex = vFrac + xpad / gs.w; // right side
}
if(line.color && opts.tickmode === 'auto') {
@@ -31223,9 +31272,12 @@ function drawColorBar(g, opts, gd) {
// set domain after init, because we may want to
// allow it outside [0,1]
- ax.domain = [
- vFrac + ypadFrac,
- vFrac + lenFrac - ypadFrac
+ ax.domain = isVertical ? [
+ vFrac + ypad / gs.h,
+ vFrac + lenFrac - ypad / gs.h
+ ] : [
+ vFrac + xpad / gs.w,
+ vFrac + lenFrac - xpad / gs.w
];
ax.setScale();
@@ -31235,9 +31287,13 @@ function drawColorBar(g, opts, gd) {
var titleCont = g.select('.' + cn.cbtitleunshift)
.attr('transform', strTranslate(-Math.round(gs.l), -Math.round(gs.t)));
+ var ticklabelposition = ax.ticklabelposition;
+ var titleFontSize = ax.title.font.size;
+
var axLayer = g.select('.' + cn.cbaxis);
var titleEl;
var titleHeight = 0;
+ var titleWidth = 0;
function drawTitle(titleClass, titleOpts) {
var dfltTitleOpts = {
@@ -31262,54 +31318,98 @@ function drawColorBar(g, opts, gd) {
}
function drawDummyTitle() {
- if(['top', 'bottom'].indexOf(titleSide) !== -1) {
- // draw the title so we know how much room it needs
- // when we squish the axis. This one only applies to
- // top or bottom titles, not right side.
- var x = gs.l + (optsX + xpadFrac) * gs.w;
- var fontSize = ax.title.font.size;
- var y;
+ // draw the title so we know how much room it needs
+ // when we squish the axis.
+ // On vertical colorbars this only applies to top or bottom titles, not right side.
+ // On horizontal colorbars this only applies to right, etc.
+
+ if(
+ (isVertical && topOrBottom) ||
+ (!isVertical && !topOrBottom)
+ ) {
+ var x, y;
if(titleSide === 'top') {
- y = (1 - (vFrac + lenFrac - ypadFrac)) * gs.h +
- gs.t + 3 + fontSize * 0.75;
- } else {
- y = (1 - (vFrac + ypadFrac)) * gs.h +
- gs.t - 3 - fontSize * 0.25;
+ x = xpad + gs.l + gs.w * optsX;
+ y = ypad + gs.t + gs.h * (1 - vFrac - lenFrac) + 3 + titleFontSize * 0.75;
}
+
+ if(titleSide === 'bottom') {
+ x = xpad + gs.l + gs.w * optsX;
+ y = ypad + gs.t + gs.h * (1 - vFrac) - 3 - titleFontSize * 0.25;
+ }
+
+ if(titleSide === 'right') {
+ y = ypad + gs.t + gs.h * optsY + 3 + titleFontSize * 0.75;
+ x = xpad + gs.l + gs.w * vFrac;
+ }
+
drawTitle(ax._id + 'title', {
- attributes: {x: x, y: y, 'text-anchor': 'start'}
+ attributes: {x: x, y: y, 'text-anchor': isVertical ? 'start' : 'middle'}
});
}
}
function drawCbTitle() {
- if(['top', 'bottom'].indexOf(titleSide) === -1) {
- var fontSize = ax.title.font.size;
- var y = ax._offset + ax._length / 2;
- var x = gs.l + (ax.position || 0) * gs.w + ((ax.side === 'right') ?
- 10 + fontSize * ((ax.showticklabels ? 1 : 0.5)) :
- -10 - fontSize * ((ax.showticklabels ? 0.5 : 0)));
+ if(
+ (isVertical && !topOrBottom) ||
+ (!isVertical && topOrBottom)
+ ) {
+ var pos = ax.position || 0;
+ var mid = ax._offset + ax._length / 2;
+ var x, y;
- // the 'h' + is a hack to get around the fact that
- // convertToTspans rotates any 'y...' class by 90 degrees.
- // TODO: find a better way to control this.
- drawTitle('h' + ax._id + 'title', {
+ if(titleSide === 'right') {
+ y = mid;
+ x = gs.l + gs.w * pos + 10 + titleFontSize * (
+ ax.showticklabels ? 1 : 0.5
+ );
+ } else {
+ x = mid;
+
+ if(titleSide === 'bottom') {
+ y = gs.t + gs.h * pos + 10 + (
+ ticklabelposition.indexOf('inside') === -1 ?
+ ax.tickfont.size :
+ 0
+ ) + (
+ ax.ticks !== 'intside' ?
+ opts.ticklen || 0 :
+ 0
+ );
+ }
+
+ if(titleSide === 'top') {
+ var nlines = title.text.split('
').length;
+ y = gs.t + gs.h * pos + 10 - thickPx - LINE_SPACING * titleFontSize * nlines;
+ }
+ }
+
+ drawTitle((isVertical ?
+ // the 'h' + is a hack to get around the fact that
+ // convertToTspans rotates any 'y...' class by 90 degrees.
+ // TODO: find a better way to control this.
+ 'h' :
+ 'v'
+ ) + ax._id + 'title', {
avoid: {
selection: d3.select(gd).selectAll('g.' + ax._id + 'tick'),
side: titleSide,
- offsetLeft: gs.l,
- offsetTop: 0,
- maxShift: fullLayout.width
+ offsetTop: isVertical ? 0 : gs.t,
+ offsetLeft: isVertical ? gs.l : 0,
+ maxShift: isVertical ? fullLayout.width : fullLayout.height
},
attributes: {x: x, y: y, 'text-anchor': 'middle'},
- transform: {rotate: '-90', offset: 0}
+ transform: {rotate: isVertical ? -90 : 0, offset: 0}
});
}
}
function drawAxis() {
- if(['top', 'bottom'].indexOf(titleSide) !== -1) {
+ if(
+ (!isVertical && !topOrBottom) ||
+ (isVertical && topOrBottom)
+ ) {
// squish the axis top to make room for the title
var titleGroup = g.select('.' + cn.cbtitle);
var titleText = titleGroup.select('text');
@@ -31321,39 +31421,63 @@ function drawColorBar(g, opts, gd) {
if(titleText.node()) {
lineSize = parseInt(titleText.node().style.fontSize, 10) * LINE_SPACING;
}
+
+ var bb;
if(mathJaxNode) {
- titleHeight = Drawing.bBox(mathJaxNode).height;
+ bb = Drawing.bBox(mathJaxNode);
+ titleWidth = bb.width;
+ titleHeight = bb.height;
if(titleHeight > lineSize) {
// not entirely sure how mathjax is doing
// vertical alignment, but this seems to work.
titleTrans[1] -= (titleHeight - lineSize) / 2;
}
} else if(titleText.node() && !titleText.classed(cn.jsPlaceholder)) {
- titleHeight = Drawing.bBox(titleText.node()).height;
+ bb = Drawing.bBox(titleText.node());
+ titleWidth = bb.width;
+ titleHeight = bb.height;
}
- if(titleHeight) {
- // buffer btwn colorbar and title
- // TODO: configurable
- titleHeight += 5;
- if(titleSide === 'top') {
- ax.domain[1] -= titleHeight / gs.h;
- titleTrans[1] *= -1;
- } else {
- ax.domain[0] += titleHeight / gs.h;
- var nlines = svgTextUtils.lineCount(titleText);
- titleTrans[1] += (1 - nlines) * lineSize;
+ if(isVertical) {
+ if(titleHeight) {
+ // buffer btwn colorbar and title
+ // TODO: configurable
+ titleHeight += 5;
+
+ if(titleSide === 'top') {
+ ax.domain[1] -= titleHeight / gs.h;
+ titleTrans[1] *= -1;
+ } else {
+ ax.domain[0] += titleHeight / gs.h;
+ var nlines = svgTextUtils.lineCount(titleText);
+ titleTrans[1] += (1 - nlines) * lineSize;
+ }
+
+ titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));
+ ax.setScale();
}
+ } else { // horizontal colorbars
+ if(titleWidth) {
+ if(titleSide === 'right') {
+ ax.domain[0] += (titleWidth + titleFontSize / 2) / gs.w;
+ }
- titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));
- ax.setScale();
+ titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));
+ ax.setScale();
+ }
}
}
g.selectAll('.' + cn.cbfills + ',.' + cn.cblines)
- .attr('transform', strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))));
+ .attr('transform', isVertical ?
+ strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))) :
+ strTranslate(Math.round(gs.w * ax.domain[0]), 0)
+ );
- axLayer.attr('transform', strTranslate(0, Math.round(-gs.t)));
+ axLayer.attr('transform', isVertical ?
+ strTranslate(0, Math.round(-gs.t)) :
+ strTranslate(Math.round(-gs.l), 0)
+ );
var fills = g.select('.' + cn.cbfills)
.selectAll('rect.' + cn.cbfill)
@@ -31379,20 +31503,22 @@ function drawColorBar(g, opts, gd) {
// offset the side adjoining the next rectangle so they
// overlap, to prevent antialiasing gaps
- z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]);
-
+ if(isVertical) {
+ z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]);
+ } /* else {
+ // TODO: horizontal case
+ } */
// Colorbar cannot currently support opacities so we
// use an opaque fill even when alpha channels present
- var fillEl = d3.select(this).attr({
- x: uPx,
- width: Math.max(thickPx, 2),
- y: d3.min(z),
- height: Math.max(d3.max(z) - d3.min(z), 2),
- });
+ var fillEl = d3.select(this)
+ .attr(isVertical ? 'x' : 'y', uPx)
+ .attr(isVertical ? 'y' : 'x', d3.min(z))
+ .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2))
+ .attr(isVertical ? 'height' : 'width', Math.max(d3.max(z) - d3.min(z), 2));
if(opts._fillgradient) {
- Drawing.gradient(fillEl, gd, opts._id, 'vertical', opts._fillgradient, 'fill');
+ Drawing.gradient(fillEl, gd, opts._id, isVertical ? 'vertical' : 'horizontalreversed', opts._fillgradient, 'fill');
} else {
// tinycolor can't handle exponents and
// at this scale, removing it makes no difference.
@@ -31408,9 +31534,15 @@ function drawColorBar(g, opts, gd) {
.classed(cn.cbline, true);
lines.exit().remove();
lines.each(function(d) {
+ var a = uPx;
+ var b = (Math.round(ax.c2p(d)) + (line.width / 2) % 1);
+
d3.select(this)
- .attr('d', 'M' + uPx + ',' +
- (Math.round(ax.c2p(d)) + (line.width / 2) % 1) + 'h' + thickPx)
+ .attr('d', 'M' +
+ (isVertical ? a + ',' + b : b + ',' + a) +
+ (isVertical ? 'h' : 'v') +
+ thickPx
+ )
.call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash);
});
@@ -31443,82 +31575,211 @@ function drawColorBar(g, opts, gd) {
// TODO: why are we redrawing multiple times now with this?
// I guess autoMargin doesn't like being post-promise?
function positionCB() {
+ var bb;
var innerThickness = thickPx + outlinewidth / 2;
- if(ax.ticklabelposition.indexOf('inside') === -1) {
- innerThickness += Drawing.bBox(axLayer.node()).width;
+ if(ticklabelposition.indexOf('inside') === -1) {
+ bb = Drawing.bBox(axLayer.node());
+ innerThickness += isVertical ? bb.width : bb.height;
}
titleEl = titleCont.select('text');
+ var titleWidth = 0;
+
+ var topSideVertical = isVertical && titleSide === 'top';
+ var rightSideHorizontal = !isVertical && titleSide === 'right';
+
+ var moveY = 0;
+
if(titleEl.node() && !titleEl.classed(cn.jsPlaceholder)) {
+ var _titleHeight;
+
var mathJaxNode = titleCont.select('.h' + ax._id + 'title-math-group').node();
- var titleWidth;
- if(mathJaxNode && ['top', 'bottom'].indexOf(titleSide) !== -1) {
- titleWidth = Drawing.bBox(mathJaxNode).width;
+ if(mathJaxNode && (
+ (isVertical && topOrBottom) ||
+ (!isVertical && !topOrBottom)
+ )) {
+ bb = Drawing.bBox(mathJaxNode);
+ titleWidth = bb.width;
+ _titleHeight = bb.height;
} else {
// note: the formula below works for all title sides,
// (except for top/bottom mathjax, above)
// but the weird gs.l is because the titleunshift
// transform gets removed by Drawing.bBox
- titleWidth = Drawing.bBox(titleCont.node()).right - uPx - gs.l;
+ bb = Drawing.bBox(titleCont.node());
+ titleWidth = bb.right - gs.l - (isVertical ? uPx : vPx);
+ _titleHeight = bb.bottom - gs.t - (isVertical ? vPx : uPx);
+
+ if(
+ !isVertical && titleSide === 'top'
+ ) {
+ innerThickness += bb.height;
+ moveY = bb.height;
+ }
}
- innerThickness = Math.max(innerThickness, titleWidth);
+
+ if(rightSideHorizontal) {
+ titleEl.attr('transform', strTranslate(titleWidth / 2 + titleFontSize / 2, 0));
+
+ titleWidth *= 2;
+ }
+
+ innerThickness = Math.max(innerThickness,
+ isVertical ? titleWidth : _titleHeight
+ );
}
- var outerThickness = 2 * xpad + innerThickness + borderwidth + outlinewidth / 2;
+ var outerThickness = (isVertical ?
+ xpad :
+ ypad
+ ) * 2 + innerThickness + borderwidth + outlinewidth / 2;
- g.select('.' + cn.cbbg).attr({
- x: uPx - xpad - (borderwidth + outlinewidth) / 2,
- y: vPx - lenPx - yExtraPx,
- width: Math.max(outerThickness, 2),
- height: Math.max(lenPx + 2 * yExtraPx, 2)
- })
- .call(Color.fill, opts.bgcolor)
+ var hColorbarMoveTitle = 0;
+ if(!isVertical && title.text && yanchor === 'bottom' && optsY <= 0) {
+ hColorbarMoveTitle = outerThickness / 2;
+
+ outerThickness += hColorbarMoveTitle;
+ moveY += hColorbarMoveTitle;
+ }
+ fullLayout._hColorbarMoveTitle = hColorbarMoveTitle;
+ fullLayout._hColorbarMoveCBTitle = moveY;
+
+ var extraW = borderwidth + outlinewidth;
+
+ g.select('.' + cn.cbbg)
+ .attr('x', (isVertical ? uPx : vPx) - extraW / 2 - (isVertical ? xpad : 0))
+ .attr('y', (isVertical ? vPx : uPx) - (isVertical ? lenPx : ypad + moveY - hColorbarMoveTitle))
+ .attr(isVertical ? 'width' : 'height', Math.max(outerThickness - hColorbarMoveTitle, 2))
+ .attr(isVertical ? 'height' : 'width', Math.max(lenPx + extraW, 2))
+ .call(Color.fill, bgcolor)
.call(Color.stroke, opts.bordercolor)
.style('stroke-width', borderwidth);
- g.selectAll('.' + cn.cboutline).attr({
- x: uPx,
- y: vPx - lenPx + ypad + (titleSide === 'top' ? titleHeight : 0),
- width: Math.max(thickPx, 2),
- height: Math.max(lenPx - 2 * ypad - titleHeight, 2)
- })
+ var moveX = rightSideHorizontal ? Math.max(titleWidth - 10, 0) : 0;
+
+ g.selectAll('.' + cn.cboutline)
+ .attr('x', (isVertical ? uPx : vPx + xpad) + moveX)
+ .attr('y', (isVertical ? vPx + ypad - lenPx : uPx) + (topSideVertical ? titleHeight : 0))
+ .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2))
+ .attr(isVertical ? 'height' : 'width', Math.max(lenPx - (isVertical ?
+ 2 * ypad + titleHeight :
+ 2 * xpad + moveX
+ ), 2))
.call(Color.stroke, opts.outlinecolor)
.style({
fill: 'none',
'stroke-width': outlinewidth
});
- // fix positioning for xanchor!='left'
- var xoffset = ({center: 0.5, right: 1}[xanchor] || 0) * outerThickness;
- g.attr('transform', strTranslate(gs.l - xoffset, gs.t));
+ g.attr('transform', strTranslate(
+ gs.l - (isVertical ? xRatio * outerThickness : 0),
+ gs.t - (isVertical ? 0 : (1 - yRatio) * outerThickness - moveY)
+ ));
+
+ if(!isVertical && (
+ borderwidth || (
+ tinycolor(bgcolor).getAlpha() &&
+ !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor)
+ )
+ )) {
+ // for horizontal colorbars when there is a border line or having different background color
+ // hide/adjust x positioning for the first/last tick labels if they go outside the border
+ var tickLabels = axLayer.selectAll('text');
+ var numTicks = tickLabels[0].length;
+
+ var border = g.select('.' + cn.cbbg).node();
+ var oBb = Drawing.bBox(border);
+ var oTr = Drawing.getTranslate(g);
+
+ var TEXTPAD = 2;
+
+ tickLabels.each(function(d, i) {
+ var first = 0;
+ var last = numTicks - 1;
+ if(i === first || i === last) {
+ var iBb = Drawing.bBox(this);
+ var iTr = Drawing.getTranslate(this);
+ var deltaX;
+
+ if(i === last) {
+ var iRight = iBb.right + iTr.x;
+ var oRight = oBb.right + oTr.x + vPx - borderwidth - TEXTPAD + optsX;
+
+ deltaX = oRight - iRight;
+ if(deltaX > 0) deltaX = 0;
+ } else if(i === first) {
+ var iLeft = iBb.left + iTr.x;
+ var oLeft = oBb.left + oTr.x + vPx + borderwidth + TEXTPAD;
+
+ deltaX = oLeft - iLeft;
+ if(deltaX < 0) deltaX = 0;
+ }
+
+ if(deltaX) {
+ if(numTicks < 3) { // adjust position
+ this.setAttribute('transform',
+ 'translate(' + deltaX + ',0) ' +
+ this.getAttribute('transform')
+ );
+ } else { // hide
+ this.setAttribute('visibility', 'hidden');
+ }
+ }
+ }
+ });
+ }
// auto margin adjustment
var marginOpts = {};
- var tFrac = FROM_TL[yanchor];
- var bFrac = FROM_BR[yanchor];
- if(lenmode === 'pixels') {
- marginOpts.y = optsY;
- marginOpts.t = lenPx * tFrac;
- marginOpts.b = lenPx * bFrac;
- } else {
- marginOpts.t = marginOpts.b = 0;
- marginOpts.yt = optsY + len * tFrac;
- marginOpts.yb = optsY - len * bFrac;
- }
-
var lFrac = FROM_TL[xanchor];
var rFrac = FROM_BR[xanchor];
- if(thicknessmode === 'pixels') {
- marginOpts.x = optsX;
- marginOpts.l = outerThickness * lFrac;
- marginOpts.r = outerThickness * rFrac;
- } else {
- var extraThickness = outerThickness - thickPx;
- marginOpts.l = extraThickness * lFrac;
- marginOpts.r = extraThickness * rFrac;
- marginOpts.xl = optsX - thickness * lFrac;
- marginOpts.xr = optsX + thickness * rFrac;
+ var tFrac = FROM_TL[yanchor];
+ var bFrac = FROM_BR[yanchor];
+
+ var extraThickness = outerThickness - thickPx;
+ if(isVertical) {
+ if(lenmode === 'pixels') {
+ marginOpts.y = optsY;
+ marginOpts.t = lenPx * tFrac;
+ marginOpts.b = lenPx * bFrac;
+ } else {
+ marginOpts.t = marginOpts.b = 0;
+ marginOpts.yt = optsY + len * tFrac;
+ marginOpts.yb = optsY - len * bFrac;
+ }
+
+ if(thicknessmode === 'pixels') {
+ marginOpts.x = optsX;
+ marginOpts.l = outerThickness * lFrac;
+ marginOpts.r = outerThickness * rFrac;
+ } else {
+ marginOpts.l = extraThickness * lFrac;
+ marginOpts.r = extraThickness * rFrac;
+ marginOpts.xl = optsX - thickness * lFrac;
+ marginOpts.xr = optsX + thickness * rFrac;
+ }
+ } else { // horizontal colorbars
+ if(lenmode === 'pixels') {
+ marginOpts.x = optsX;
+ marginOpts.l = lenPx * lFrac;
+ marginOpts.r = lenPx * rFrac;
+ } else {
+ marginOpts.l = marginOpts.r = 0;
+ marginOpts.xl = optsX + len * lFrac;
+ marginOpts.xr = optsX - len * rFrac;
+ }
+
+ if(thicknessmode === 'pixels') {
+ marginOpts.y = 1 - optsY;
+ marginOpts.t = outerThickness * tFrac;
+ marginOpts.b = outerThickness * bFrac;
+ } else {
+ marginOpts.t = extraThickness * tFrac;
+ marginOpts.b = extraThickness * bFrac;
+ marginOpts.yt = optsY - thickness * tFrac;
+ marginOpts.yb = optsY + thickness * bFrac;
+ }
}
Plots.autoMargin(gd, opts._id, marginOpts);
@@ -31535,6 +31796,7 @@ function drawColorBar(g, opts, gd) {
}
function makeEditable(g, opts, gd) {
+ var isVertical = opts.orientation === 'v';
var fullLayout = gd._fullLayout;
var gs = fullLayout._size;
var t0, xf, yf;
@@ -31549,9 +31811,13 @@ function makeEditable(g, opts, gd) {
moveFn: function(dx, dy) {
g.attr('transform', t0 + strTranslate(dx, dy));
- xf = dragElement.align(opts._uFrac + (dx / gs.w), opts._thickFrac,
+ xf = dragElement.align(
+ (isVertical ? opts._uFrac : opts._vFrac) + (dx / gs.w),
+ isVertical ? opts._thickFrac : opts._lenFrac,
0, 1, opts.xanchor);
- yf = dragElement.align(opts._vFrac - (dy / gs.h), opts._lenFrac,
+ yf = dragElement.align(
+ (isVertical ? opts._vFrac : (1 - opts._uFrac)) - (dy / gs.h),
+ isVertical ? opts._lenFrac : opts._thickFrac,
0, 1, opts.yanchor);
var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor);
@@ -31628,6 +31894,8 @@ function calcLevels(gd, opts, zrange) {
function mockColorBarAxis(gd, opts, zrange) {
var fullLayout = gd._fullLayout;
+ var isVertical = opts.orientation === 'v';
+
var cbAxisIn = {
type: 'linear',
range: zrange,
@@ -31658,17 +31926,19 @@ function mockColorBarAxis(gd, opts, zrange) {
title: opts.title,
showline: true,
anchor: 'free',
- side: 'right',
+ side: isVertical ? 'right' : 'bottom',
position: 1
};
+ var letter = isVertical ? 'y' : 'x';
+
var cbAxisOut = {
type: 'linear',
- _id: 'y' + opts._id
+ _id: letter + opts._id
};
var axisOptions = {
- letter: 'y',
+ letter: letter,
font: fullLayout.font,
noHover: true,
noTickson: true,
@@ -34130,7 +34400,7 @@ var TEXTOFFSETSIGN = {
start: 1, end: -1, middle: 0, bottom: 1, top: -1
};
-function textPointPosition(s, textPosition, fontSize, markerRadius) {
+function textPointPosition(s, textPosition, fontSize, markerRadius, dontTouchParent) {
var group = d3.select(s.node().parentNode);
var v = textPosition.indexOf('top') !== -1 ?
@@ -34152,7 +34422,9 @@ function textPointPosition(s, textPosition, fontSize, markerRadius) {
// fix the overall text group position
s.attr('text-anchor', h);
- group.attr('transform', strTranslate(dx, dy));
+ if(!dontTouchParent) {
+ group.attr('transform', strTranslate(dx, dy));
+ }
}
function extracTextFontSize(d, trace) {
@@ -34222,7 +34494,8 @@ drawing.selectedTextStyle = function(s, trace) {
var fontSize = extracTextFontSize(d, trace);
Color.fill(tx, tc);
- textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc);
+ var dontTouchParent = Registry.traceIs(trace, 'bar-like');
+ textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc, dontTouchParent);
});
};
@@ -34644,7 +34917,7 @@ drawing.setTextPointsScale = function(selection, xScale, yScale) {
});
};
-},{"../../components/fx/helpers":193,"../../constants/alignment":262,"../../constants/interactions":266,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../registry":378,"../../traces/scatter/make_bubble_size_func":516,"../../traces/scatter/subtypes":524,"../color":157,"../colorscale":169,"./symbol_defs":180,"@plotly/d3":20,"fast-isnumeric":33,"tinycolor2":121}],180:[function(_dereq_,module,exports){
+},{"../../components/fx/helpers":193,"../../constants/alignment":262,"../../constants/interactions":266,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../registry":378,"../../traces/scatter/make_bubble_size_func":517,"../../traces/scatter/subtypes":525,"../color":157,"../colorscale":169,"./symbol_defs":180,"@plotly/d3":20,"fast-isnumeric":33,"tinycolor2":121}],180:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -35743,7 +36016,7 @@ function errorCoords(d, xa, ya) {
return out;
}
-},{"../../traces/scatter/subtypes":524,"../drawing":179,"@plotly/d3":20,"fast-isnumeric":33}],187:[function(_dereq_,module,exports){
+},{"../../traces/scatter/subtypes":525,"../drawing":179,"@plotly/d3":20,"fast-isnumeric":33}],187:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -37278,7 +37551,9 @@ function createHoverText(hoverData, opts) {
orientation: 'v'
}
};
- var mockLayoutOut = {};
+ var mockLayoutOut = {
+ font: font
+ };
legendSupplyDefaults(mockLayoutIn, mockLayoutOut, gd._fullData);
var mockLegend = mockLayoutOut.legend;
@@ -37319,7 +37594,8 @@ function createHoverText(hoverData, opts) {
// Draw unified hover label
mockLegend._inHover = true;
- mockLegend._groupTitleFont = font;
+ mockLegend._groupTitleFont = hoverlabel.grouptitlefont;
+
legendDraw(gd, mockLegend);
// Position the hover
@@ -38321,9 +38597,11 @@ var isUnifiedHover = _dereq_('./helpers').isUnifiedHover;
module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts) {
opts = opts || {};
+ var hasLegend = contOut.legend;
+
function inheritFontAttr(attr) {
if(!opts.font[attr]) {
- opts.font[attr] = contOut.legend ? contOut.legend.font[attr] : contOut.font[attr];
+ opts.font[attr] = hasLegend ? contOut.legend.font[attr] : contOut.font[attr];
}
}
@@ -38334,7 +38612,7 @@ module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts
inheritFontAttr('family');
inheritFontAttr('color');
- if(contOut.legend) {
+ if(hasLegend) {
if(!opts.bgcolor) opts.bgcolor = Color.combine(contOut.legend.bgcolor, contOut.paper_bgcolor);
if(!opts.bordercolor) opts.bordercolor = contOut.legend.bordercolor;
} else {
@@ -38443,11 +38721,13 @@ function castHoverinfo(trace, fullLayout, ptNumber) {
var constants = _dereq_('./constants');
-var fontAttrs = _dereq_('../../plots/font_attributes')({
+var fontAttrs = _dereq_('../../plots/font_attributes');
+
+var font = fontAttrs({
editType: 'none',
});
-fontAttrs.family.dflt = constants.HOVERFONT;
-fontAttrs.size.dflt = constants.HOVERFONTSIZE;
+font.family.dflt = constants.HOVERFONT;
+font.size.dflt = constants.HOVERFONTSIZE;
module.exports = {
clickmode: {
@@ -38503,7 +38783,10 @@ module.exports = {
valType: 'color',
editType: 'none',
},
- font: fontAttrs,
+ font: font,
+ grouptitlefont: fontAttrs({
+ editType: 'none',
+ }),
align: {
valType: 'enumerated',
values: ['left', 'right', 'auto'],
@@ -38516,6 +38799,7 @@ module.exports = {
dflt: 15,
editType: 'none',
},
+
editType: 'none'
},
selectdirection: {
@@ -38563,6 +38847,8 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {
}
handleHoverLabelDefaults(layoutIn, layoutOut, coerce);
+
+ Lib.coerceFont(coerce, 'hoverlabel.grouptitlefont', layoutOut.hoverlabel.font);
};
},{"../../lib":287,"./hoverlabel_defaults":195,"./hovermode_defaults":196,"./layout_attributes":198}],200:[function(_dereq_,module,exports){
@@ -39446,6 +39732,9 @@ module.exports = {
font: fontAttrs({
editType: 'legend',
}),
+ grouptitlefont: fontAttrs({
+ editType: 'legend',
+ }),
orientation: {
valType: 'enumerated',
values: ['v', 'h'],
@@ -39569,6 +39858,7 @@ var Registry = _dereq_('../../registry');
var Lib = _dereq_('../../lib');
var Template = _dereq_('../../plot_api/plot_template');
+var plotsAttrs = _dereq_('../../plots/attributes');
var attributes = _dereq_('./attributes');
var basePlotLayoutAttributes = _dereq_('../../plots/layout_attributes');
var helpers = _dereq_('./helpers');
@@ -39576,13 +39866,30 @@ var helpers = _dereq_('./helpers');
module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
var containerIn = layoutIn.legend || {};
+ var containerOut = Template.newContainer(layoutOut, 'legend');
+
+ function coerce(attr, dflt) {
+ return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);
+ }
+
+ var trace;
+ var traceCoerce = function(attr, dflt) {
+ var traceIn = trace._input;
+ var traceOut = trace;
+ return Lib.coerce(traceIn, traceOut, plotsAttrs, attr, dflt);
+ };
+
+ var globalFont = layoutOut.font || {};
+ var grouptitlefont = Lib.coerceFont(coerce, 'grouptitlefont', Lib.extendFlat({}, globalFont, {
+ size: Math.round(globalFont.size * 1.1)
+ }));
var legendTraceCount = 0;
var legendReallyHasATrace = false;
var defaultOrder = 'normal';
for(var i = 0; i < fullData.length; i++) {
- var trace = fullData[i];
+ trace = fullData[i];
if(!trace.visible) continue;
@@ -39609,6 +39916,8 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
legendTraceCount++;
}
}
+
+ Lib.coerceFont(traceCoerce, 'legendgrouptitle.font', grouptitlefont);
}
if((Registry.traceIs(trace, 'bar') && layoutOut.barmode === 'stack') ||
@@ -39627,14 +39936,11 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
basePlotLayoutAttributes, 'showlegend',
legendReallyHasATrace && legendTraceCount > 1);
+ // delete legend
+ if(showLegend === false) layoutOut.legend = undefined;
+
if(showLegend === false && !containerIn.uirevision) return;
- var containerOut = Template.newContainer(layoutOut, 'legend');
-
- function coerce(attr, dflt) {
- return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);
- }
-
coerce('uirevision', layoutOut.uirevision);
if(showLegend === false) return;
@@ -39695,7 +40001,7 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
}
};
-},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/layout_attributes":369,"../../registry":378,"./attributes":207,"./helpers":213}],210:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/attributes":330,"../../plots/layout_attributes":369,"../../registry":378,"./attributes":207,"./helpers":213}],210:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -41668,7 +41974,7 @@ function dimAttr(v, dflt, max) {
return v;
}
-},{"../../lib":287,"../../registry":378,"../../traces/pie/helpers":491,"../../traces/pie/style_one":497,"../../traces/scatter/subtypes":524,"../color":157,"../colorscale/helpers":168,"../drawing":179,"./constants":208,"@plotly/d3":20}],216:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378,"../../traces/pie/helpers":492,"../../traces/pie/style_one":498,"../../traces/scatter/subtypes":525,"../color":157,"../colorscale/helpers":168,"../drawing":179,"./constants":208,"@plotly/d3":20}],216:[function(_dereq_,module,exports){
'use strict';
var constants = _dereq_('./constants');
@@ -42902,7 +43208,7 @@ function fillCustomButton(customButtons) {
return customButtons;
}
-},{"../../plots/cartesian/axis_ids":338,"../../registry":378,"../../traces/scatter/subtypes":524,"../fx/helpers":193,"./buttons":217,"./constants":218,"./modebar":222}],222:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axis_ids":338,"../../registry":378,"../../traces/scatter/subtypes":525,"../fx/helpers":193,"./buttons":217,"./constants":218,"./modebar":222}],222:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -44831,7 +45137,7 @@ module.exports = templatedArray('shape', {
editType: 'arraydraw'
});
-},{"../../constants/axis_placeable_objects":263,"../../lib/extend":281,"../../plot_api/plot_template":323,"../../traces/scatter/attributes":499,"../annotations/attributes":140,"../drawing/attributes":178}],238:[function(_dereq_,module,exports){
+},{"../../constants/axis_placeable_objects":263,"../../lib/extend":281,"../../plot_api/plot_template":323,"../../traces/scatter/attributes":500,"../annotations/attributes":140,"../drawing/attributes":178}],238:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -48147,8 +48453,10 @@ function draw(gd, titleClass, options) {
var elShouldExist = txt || editable;
+ var hColorbarMoveTitle;
if(!group) {
group = Lib.ensureSingle(fullLayout._infolayer, 'g', 'g-' + titleClass);
+ hColorbarMoveTitle = fullLayout._hColorbarMoveTitle;
}
var el = group.selectAll('text')
@@ -48172,13 +48480,17 @@ function draw(gd, titleClass, options) {
function drawTitle(titleEl) {
var transformVal;
+ if(!transform && hColorbarMoveTitle) {
+ transform = {};
+ }
+
if(transform) {
transformVal = '';
if(transform.rotate) {
transformVal += 'rotate(' + [transform.rotate, attributes.x, attributes.y] + ')';
}
- if(transform.offset) {
- transformVal += strTranslate(0, transform.offset);
+ if(transform.offset || hColorbarMoveTitle) {
+ transformVal += strTranslate(0, (transform.offset || 0) - (hColorbarMoveTitle || 0));
}
} else {
transformVal = null;
@@ -49975,7 +50287,7 @@ exports.Fx = {
exports.Snapshot = _dereq_('./snapshot');
exports.PlotSchema = _dereq_('./plot_api/plot_schema');
-},{"../build/plotcss":1,"./components/annotations":148,"./components/annotations3d":153,"./components/colorbar":163,"./components/colorscale":169,"./components/errorbars":185,"./components/fx":197,"./components/grid":201,"./components/images":206,"./components/legend":214,"./components/modebar":220,"./components/rangeselector":228,"./components/rangeslider":235,"./components/shapes":249,"./components/sliders":254,"./components/updatemenus":260,"./fonts/ploticon":270,"./locale-en":314,"./locale-en-us":313,"./plot_api":318,"./plot_api/plot_schema":322,"./plots/plots":371,"./registry":378,"./snapshot":383,"./traces/scatter":511,"./version":551,"native-promise-only":72}],270:[function(_dereq_,module,exports){
+},{"../build/plotcss":1,"./components/annotations":148,"./components/annotations3d":153,"./components/colorbar":163,"./components/colorscale":169,"./components/errorbars":185,"./components/fx":197,"./components/grid":201,"./components/images":206,"./components/legend":214,"./components/modebar":220,"./components/rangeselector":228,"./components/rangeslider":235,"./components/shapes":249,"./components/sliders":254,"./components/updatemenus":260,"./fonts/ploticon":270,"./locale-en":314,"./locale-en-us":313,"./plot_api":318,"./plot_api/plot_schema":322,"./plots/plots":371,"./registry":378,"./snapshot":383,"./traces/scatter":512,"./version":552,"native-promise-only":72}],270:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -59636,7 +59948,7 @@ function cleanDeprecatedAttributeKeys(aobj) {
if((key === 'title' || oldAxisTitleRegex.test(key) || colorbarRegex.test(key)) &&
(typeof value === 'string' || typeof value === 'number')) {
replace(key, key.replace('title', 'title.text'));
- } else if(key.indexOf('titlefont') > -1) {
+ } else if(key.indexOf('titlefont') > -1 && key.indexOf('grouptitlefont') === -1) {
replace(key, key.replace('titlefont', 'title.font'));
} else if(key.indexOf('titleposition') > -1) {
replace(key, key.replace('titleposition', 'title.position'));
@@ -60313,7 +60625,8 @@ function findUIPattern(key, patternSpecs) {
var spec = patternSpecs[i];
var match = key.match(spec.pattern);
if(match) {
- return {head: match[1], attr: spec.attr};
+ var head = match[1] || '';
+ return {head: head, tail: key.substr(head.length + 1), attr: spec.attr};
}
}
}
@@ -60365,26 +60678,54 @@ function valsMatch(v1, v2) {
function applyUIRevisions(data, layout, oldFullData, oldFullLayout) {
var layoutPreGUI = oldFullLayout._preGUI;
- var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal;
+ var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal, head, tail;
var bothInheritAutorange = [];
+ var newAutorangeIn = {};
var newRangeAccepted = {};
for(key in layoutPreGUI) {
match = findUIPattern(key, layoutUIControlPatterns);
if(match) {
- revAttr = match.attr || (match.head + '.uirevision');
+ head = match.head;
+ tail = match.tail;
+ revAttr = match.attr || (head + '.uirevision');
oldRev = nestedProperty(oldFullLayout, revAttr).get();
newRev = oldRev && getNewRev(revAttr, layout);
+
if(newRev && (newRev === oldRev)) {
preGUIVal = layoutPreGUI[key];
if(preGUIVal === null) preGUIVal = undefined;
newNP = nestedProperty(layout, key);
newVal = newNP.get();
+
if(valsMatch(newVal, preGUIVal)) {
- if(newVal === undefined && key.substr(key.length - 9) === 'autorange') {
- bothInheritAutorange.push(key.substr(0, key.length - 10));
+ if(newVal === undefined && tail === 'autorange') {
+ bothInheritAutorange.push(head);
}
newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get()));
continue;
+ } else if(tail === 'autorange' || tail.substr(0, 6) === 'range[') {
+ // Special case for (auto)range since we push it back into the layout
+ // so all null should be treated equivalently to autorange: true with any range
+ var pre0 = layoutPreGUI[head + '.range[0]'];
+ var pre1 = layoutPreGUI[head + '.range[1]'];
+ var preAuto = layoutPreGUI[head + '.autorange'];
+ if(preAuto || (preAuto === null && pre0 === null && pre1 === null)) {
+ // Only read the input layout once and stash the result,
+ // so we get it before we start modifying it
+ if(!(head in newAutorangeIn)) {
+ var newContainer = nestedProperty(layout, head).get();
+ newAutorangeIn[head] = newContainer && (
+ newContainer.autorange ||
+ (newContainer.autorange !== false && (
+ !newContainer.range || newContainer.range.length !== 2)
+ )
+ );
+ }
+ if(newAutorangeIn[head]) {
+ newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get()));
+ continue;
+ }
+ }
}
}
} else {
@@ -60395,12 +60736,12 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) {
// so remove it from _preGUI for next time.
delete layoutPreGUI[key];
- if(key.substr(key.length - 8, 6) === 'range[') {
- newRangeAccepted[key.substr(0, key.length - 9)] = 1;
+ if(match && match.tail.substr(0, 6) === 'range[') {
+ newRangeAccepted[match.head] = 1;
}
}
- // Special logic for `autorange`, since it interacts with `range`:
+ // More special logic for `autorange`, since it interacts with `range`:
// If the new figure's matching `range` was kept, and `autorange`
// wasn't supplied explicitly in either the original or the new figure,
// we shouldn't alter that - but we may just have done that, so fix it.
@@ -64332,7 +64673,7 @@ function toImage(gd, opts) {
module.exports = toImage;
-},{"../lib":287,"../plots/plots":371,"../snapshot/helpers":382,"../snapshot/svgtoimg":384,"../snapshot/tosvg":386,"../version":551,"./plot_api":320,"fast-isnumeric":33}],327:[function(_dereq_,module,exports){
+},{"../lib":287,"../plots/plots":371,"../snapshot/helpers":382,"../snapshot/svgtoimg":384,"../snapshot/tosvg":386,"../version":552,"./plot_api":320,"fast-isnumeric":33}],327:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../lib');
@@ -77475,6 +77816,9 @@ module.exports = function(opts) {
// TODO - that's uber hacky... better solution?
};
+ if(opts.autoSize) attrs.size.dflt = 'auto';
+ if(opts.autoColor) attrs.color.dflt = 'auto';
+
if(opts.arrayOk) {
attrs.family.arrayOk = true;
attrs.size.arrayOk = true;
@@ -77834,6 +78178,7 @@ module.exports = {
valType: 'boolean',
editType: 'legend',
},
+
colorway: {
valType: 'colorlist',
dflt: colorAttrs.defaults,
@@ -79246,13 +79591,7 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac
);
coerce('legendgroup');
- var titleText = coerce('legendgrouptitle.text');
- if(titleText) {
- Lib.coerceFont(coerce, 'legendgrouptitle.font', Lib.extendFlat({}, layout.font, {
- size: Math.round(layout.font.size * 1.1) // default to larger font size
- }));
- }
-
+ coerce('legendgrouptitle.text');
coerce('legendrank');
traceOut._dfltShowLegend = true;
@@ -79400,16 +79739,14 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) {
coerce('autotypenumbers');
- var globalFont = Lib.coerceFont(coerce, 'font');
+ var font = Lib.coerceFont(coerce, 'font');
+ var fontSize = font.size;
+
+ Lib.coerceFont(coerce, 'title.font', Lib.extendFlat({}, font, {
+ size: Math.round(fontSize * 1.4)
+ }));
coerce('title.text', layoutOut._dfltTitle.plot);
-
- Lib.coerceFont(coerce, 'title.font', {
- family: globalFont.family,
- size: Math.round(globalFont.size * 1.4),
- color: globalFont.color
- });
-
coerce('title.xref');
coerce('title.yref');
coerce('title.x');
@@ -83977,7 +84314,7 @@ module.exports = {
}
};
-},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":499,"./constants":390}],389:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":500,"./constants":390}],389:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../../plots/cartesian/axes');
@@ -84052,7 +84389,7 @@ module.exports = function calc(gd, trace) {
return cd;
};
-},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../scatter/calc_selection":501,"./arrays_to_calcdata":387}],390:[function(_dereq_,module,exports){
+},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../scatter/calc_selection":502,"./arrays_to_calcdata":387}],390:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -85019,7 +85356,7 @@ module.exports = {
handleText: handleText
};
-},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/constraints":342,"../../registry":378,"../scatter/period_defaults":519,"../scatter/xy_defaults":526,"./attributes":388,"./style_defaults":403}],393:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/constraints":342,"../../registry":378,"../scatter/period_defaults":520,"../scatter/xy_defaults":527,"./attributes":388,"./style_defaults":403}],393:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt, trace) {
@@ -85364,7 +85701,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../scatter/marker_colorbar":517,"./arrays_to_calcdata":387,"./attributes":388,"./calc":389,"./cross_trace_calc":391,"./defaults":392,"./event_data":393,"./hover":395,"./layout_attributes":397,"./layout_defaults":398,"./plot":399,"./select":400,"./style":402}],397:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../scatter/marker_colorbar":518,"./arrays_to_calcdata":387,"./attributes":388,"./calc":389,"./cross_trace_calc":391,"./defaults":392,"./event_data":393,"./hover":395,"./layout_attributes":397,"./layout_defaults":398,"./plot":399,"./select":400,"./style":402}],397:[function(_dereq_,module,exports){
'use strict';
@@ -85879,7 +86216,7 @@ function appendBarText(gd, plotinfo, bar, cd, i, x0, x1, y0, y1, opts, makeOnCom
}
transform.fontSize = font.size;
- recordMinTextSize(trace.type, transform, fullLayout);
+ recordMinTextSize(trace.type === 'histogram' ? 'bar' : trace.type, transform, fullLayout);
calcBar.transform = transform;
transition(textSelection, fullLayout, opts, makeOnCompleteCallback)
@@ -86910,7 +87247,7 @@ module.exports = {
}
};
-},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"../scatter/attributes":499}],406:[function(_dereq_,module,exports){
+},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"../scatter/attributes":500}],406:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -87891,7 +88228,7 @@ module.exports = {
handlePointsDefaults: handlePointsDefaults
};
-},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/axis_autotype":335,"../../registry":378,"../bar/defaults":392,"../scatter/period_defaults":519,"./attributes":405}],409:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/axis_autotype":335,"../../registry":378,"../bar/defaults":392,"../scatter/period_defaults":520,"./attributes":405}],409:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt) {
@@ -88772,6 +89109,10 @@ module.exports = extendFlat({
yhoverformat: axisHoverFormat('y'),
zhoverformat: axisHoverFormat('z', 1),
hovertemplate: heatmapAttrs.hovertemplate,
+ texttemplate: extendFlat({}, heatmapAttrs.texttemplate, {
+ }),
+ textfont: extendFlat({}, heatmapAttrs.textfont, {
+ }),
hoverongaps: heatmapAttrs.hoverongaps,
connectgaps: extendFlat({}, heatmapAttrs.connectgaps, {
}),
@@ -88887,7 +89228,7 @@ module.exports = extendFlat({
})
);
-},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../constants/filter_ops":265,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../heatmap/attributes":439,"../scatter/attributes":499}],418:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../constants/filter_ops":265,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../heatmap/attributes":439,"../scatter/attributes":500}],418:[function(_dereq_,module,exports){
'use strict';
var Colorscale = _dereq_('../../components/colorscale');
@@ -89406,6 +89747,7 @@ var handlePeriodDefaults = _dereq_('../scatter/period_defaults');
var handleConstraintDefaults = _dereq_('./constraint_defaults');
var handleContoursDefaults = _dereq_('./contours_defaults');
var handleStyleDefaults = _dereq_('./style_defaults');
+var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults');
var attributes = _dereq_('./attributes');
@@ -89430,8 +89772,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
coerce('text');
coerce('hovertext');
- coerce('hovertemplate');
coerce('hoverongaps');
+ coerce('hovertemplate');
var isConstraint = (coerce('contours.type') === 'constraint');
coerce('connectgaps', Lib.isArray1D(traceOut.z));
@@ -89442,9 +89784,16 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
handleContoursDefaults(traceIn, traceOut, coerce, coerce2);
handleStyleDefaults(traceIn, traceOut, coerce, layout);
}
+
+ if(
+ traceOut.contours &&
+ traceOut.contours.coloring === 'heatmap'
+ ) {
+ handleHeatmapLabelDefaults(coerce, layout);
+ }
};
-},{"../../lib":287,"../heatmap/xyz_defaults":453,"../scatter/period_defaults":519,"./attributes":417,"./constraint_defaults":422,"./contours_defaults":424,"./style_defaults":438}],427:[function(_dereq_,module,exports){
+},{"../../lib":287,"../heatmap/label_defaults":449,"../heatmap/xyz_defaults":454,"../scatter/period_defaults":520,"./attributes":417,"./constraint_defaults":422,"./contours_defaults":424,"./style_defaults":438}],427:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -90718,7 +91067,7 @@ function makeClipMask(cd0) {
return z;
}
-},{"../../components/colorscale":169,"../../components/drawing":179,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../plots/cartesian/set_convert":356,"../heatmap/plot":450,"./close_boundaries":419,"./constants":421,"./convert_to_constraints":425,"./empty_pathinfo":427,"./find_all_paths":429,"./make_crossings":434,"@plotly/d3":20}],436:[function(_dereq_,module,exports){
+},{"../../components/colorscale":169,"../../components/drawing":179,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../plots/cartesian/set_convert":356,"../heatmap/plot":451,"./close_boundaries":419,"./constants":421,"./convert_to_constraints":425,"./empty_pathinfo":427,"./find_all_paths":429,"./make_crossings":434,"@plotly/d3":20}],436:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../../plots/cartesian/axes');
@@ -90886,7 +91235,7 @@ module.exports = function style(gd) {
heatmapStyle(gd);
};
-},{"../../components/drawing":179,"../heatmap/style":451,"./make_color_map":433,"@plotly/d3":20}],438:[function(_dereq_,module,exports){
+},{"../../components/drawing":179,"../heatmap/style":452,"./make_color_map":433,"@plotly/d3":20}],438:[function(_dereq_,module,exports){
'use strict';
var colorscaleDefaults = _dereq_('../../components/colorscale/defaults');
@@ -90927,8 +91276,10 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, layout,
var scatterAttrs = _dereq_('../scatter/attributes');
var baseAttrs = _dereq_('../../plots/attributes');
+var fontAttrs = _dereq_('../../plots/font_attributes');
var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs;
+var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs;
var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
var extendFlat = _dereq_('../../lib/extend').extendFlat;
@@ -91007,6 +91358,19 @@ module.exports = extendFlat({
zhoverformat: axisHoverFormat('z', 1),
hovertemplate: hovertemplateAttrs(),
+ texttemplate: texttemplateAttrs({
+ arrayOk: false,
+ editType: 'plot'
+ }, {
+ keys: ['x', 'y', 'z', 'text']
+ }),
+ textfont: fontAttrs({
+ editType: 'plot',
+ autoSize: true,
+ autoColor: true,
+ colorEditType: 'style',
+ }),
+
showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false})
}, {
transforms: undefined
@@ -91014,7 +91378,7 @@ module.exports = extendFlat({
colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false})
);
-},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../scatter/attributes":499}],440:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":500}],440:[function(_dereq_,module,exports){
'use strict';
var Registry = _dereq_('../../registry');
@@ -91215,7 +91579,7 @@ function dropZonBreaks(x, y, z) {
return newZ;
}
-},{"../../components/colorscale/calc":165,"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../../registry":378,"../histogram2d/calc":468,"./clean_2d_array":441,"./convert_column_xyz":443,"./find_empties":445,"./interp2d":448,"./make_bound_array":449}],441:[function(_dereq_,module,exports){
+},{"../../components/colorscale/calc":165,"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../../registry":378,"../histogram2d/calc":469,"./clean_2d_array":441,"./convert_column_xyz":443,"./find_empties":445,"./interp2d":448,"./make_bound_array":450}],441:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -91379,6 +91743,7 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name,
var Lib = _dereq_('../../lib');
var handleXYZDefaults = _dereq_('./xyz_defaults');
+var handleHeatmapLabelDefaults = _dereq_('./label_defaults');
var handlePeriodDefaults = _dereq_('../scatter/period_defaults');
var handleStyleDefaults = _dereq_('./style_defaults');
var colorscaleDefaults = _dereq_('../../components/colorscale/defaults');
@@ -91404,6 +91769,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
coerce('hovertext');
coerce('hovertemplate');
+ handleHeatmapLabelDefaults(coerce, layout);
handleStyleDefaults(traceIn, traceOut, coerce, layout);
coerce('hoverongaps');
@@ -91412,7 +91778,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'});
};
-},{"../../components/colorscale/defaults":167,"../../lib":287,"../scatter/period_defaults":519,"./attributes":439,"./style_defaults":452,"./xyz_defaults":453}],445:[function(_dereq_,module,exports){
+},{"../../components/colorscale/defaults":167,"../../lib":287,"../scatter/period_defaults":520,"./attributes":439,"./label_defaults":449,"./style_defaults":453,"./xyz_defaults":454}],445:[function(_dereq_,module,exports){
'use strict';
var maxRowLength = _dereq_('../../lib').maxRowLength;
@@ -91662,7 +92028,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"./attributes":439,"./calc":440,"./colorbar":442,"./defaults":444,"./hover":446,"./plot":450,"./style":451}],448:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"./attributes":439,"./calc":440,"./colorbar":442,"./defaults":444,"./hover":446,"./plot":451,"./style":452}],448:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -91790,6 +92156,21 @@ function iterateInterp2d(z, emptyPoints, overshoot) {
},{"../../lib":287}],449:[function(_dereq_,module,exports){
'use strict';
+var Lib = _dereq_('../../lib');
+
+module.exports = function handleHeatmapLabelDefaults(coerce, layout) {
+ coerce('texttemplate');
+
+ var fontDflt = Lib.extendFlat({}, layout.font, {
+ color: 'auto',
+ size: 'auto'
+ });
+ Lib.coerceFont(coerce, 'textfont', fontDflt);
+};
+
+},{"../../lib":287}],450:[function(_dereq_,module,exports){
+'use strict';
+
var Registry = _dereq_('../../registry');
var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray;
@@ -91867,16 +92248,34 @@ module.exports = function makeBoundArray(trace, arrayIn, v0In, dvIn, numbricks,
return arrayOut;
};
-},{"../../lib":287,"../../registry":378}],450:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378}],451:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
var tinycolor = _dereq_('tinycolor2');
var Registry = _dereq_('../../registry');
+var Drawing = _dereq_('../../components/drawing');
+var Axes = _dereq_('../../plots/cartesian/axes');
var Lib = _dereq_('../../lib');
+var svgTextUtils = _dereq_('../../lib/svg_text_utils');
+var formatLabels = _dereq_('../scatter/format_labels');
+var Color = _dereq_('../../components/color');
+var extractOpts = _dereq_('../../components/colorscale').extractOpts;
var makeColorScaleFuncFromTrace = _dereq_('../../components/colorscale').makeColorScaleFuncFromTrace;
var xmlnsNamespaces = _dereq_('../../constants/xmlns_namespaces');
+var alignmentConstants = _dereq_('../../constants/alignment');
+var LINE_SPACING = alignmentConstants.LINE_SPACING;
+
+var labelClass = 'heatmap-label';
+
+function selectLabels(plotGroup) {
+ return plotGroup.selectAll('g.' + labelClass);
+}
+
+function removeLabels(plotGroup) {
+ selectLabels(plotGroup).remove();
+}
module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
var xa = plotinfo.xaxis;
@@ -91886,6 +92285,8 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
var plotGroup = d3.select(this);
var cd0 = cd[0];
var trace = cd0.trace;
+ var xGap = trace.xgap || 0;
+ var yGap = trace.ygap || 0;
var z = cd0.z;
var x = cd0.x;
@@ -91901,7 +92302,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
var xrev = false;
var yrev = false;
- var left, right, temp, top, bottom, i;
+ var left, right, temp, top, bottom, i, j, k;
// TODO: if there are multiple overlapping categorical heatmaps,
// or if we allow category sorting, then the categories may not be
@@ -91982,6 +92383,8 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
if(isOffScreen) {
var noImage = plotGroup.selectAll('image').data([]);
noImage.exit().remove();
+
+ removeLabels(plotGroup);
return;
}
@@ -92037,7 +92440,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
var gcount = 0;
var bcount = 0;
- var xb, j, xi, v, row, c;
+ var xb, xi, v, row, c;
function setColor(v, pixsize) {
if(v !== undefined) {
@@ -92148,8 +92551,6 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
} else { // zsmooth = false -> filling potentially large bricks works fastest with fillRect
// gaps do not need to be exact integers, but if they *are* we will get
// cleaner edges by rounding at least one edge
- var xGap = trace.xgap;
- var yGap = trace.ygap;
var xGapLeft = Math.floor(xGap / 2);
var yGapTop = Math.floor(yGap / 2);
@@ -92202,6 +92603,185 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
y: top,
'xlink:href': canvas.toDataURL('image/png')
});
+
+ removeLabels(plotGroup);
+
+ var texttemplate = trace.texttemplate;
+ if(texttemplate) {
+ // dummy axis for formatting the z value
+ var cOpts = extractOpts(trace);
+ var dummyAx = {
+ type: 'linear',
+ range: [cOpts.min, cOpts.max],
+ _separators: xa._separators,
+ _numFormat: xa._numFormat
+ };
+
+ var aHistogram2dContour = trace.type === 'histogram2dcontour';
+ var aContour = trace.type === 'contour';
+ var iStart = aContour ? 1 : 0;
+ var iStop = aContour ? m - 1 : m;
+ var jStart = aContour ? 1 : 0;
+ var jStop = aContour ? n - 1 : n;
+
+ var textData = [];
+ for(i = iStart; i < iStop; i++) {
+ var yVal;
+ if(aContour) {
+ yVal = cd0.y[i];
+ } else if(aHistogram2dContour) {
+ if(i === 0 || i === m - 1) continue;
+ yVal = cd0.y[i];
+ } else if(cd0.yCenter) {
+ yVal = cd0.yCenter[i];
+ } else {
+ if(i + 1 === m && cd0.y[i + 1] === undefined) continue;
+ yVal = (cd0.y[i] + cd0.y[i + 1]) / 2;
+ }
+
+ var _y = Math.round(ya.c2p(yVal));
+ if(0 > _y || _y > ya._length) continue;
+
+ for(j = jStart; j < jStop; j++) {
+ var xVal;
+ if(aContour) {
+ xVal = cd0.x[j];
+ } else if(aHistogram2dContour) {
+ if(j === 0 || j === n - 1) continue;
+ xVal = cd0.x[j];
+ } else if(cd0.xCenter) {
+ xVal = cd0.xCenter[j];
+ } else {
+ if(j + 1 === n && cd0.x[j + 1] === undefined) continue;
+ xVal = (cd0.x[j] + cd0.x[j + 1]) / 2;
+ }
+
+ var _x = Math.round(xa.c2p(xVal));
+ if(0 > _x || _x > xa._length) continue;
+
+ var obj = formatLabels({
+ x: xVal,
+ y: yVal
+ }, trace, gd._fullLayout);
+
+ obj.x = xVal;
+ obj.y = yVal;
+
+ var zVal = cd0.z[i][j];
+ if(zVal === undefined) {
+ obj.z = '';
+ obj.zLabel = '';
+ } else {
+ obj.z = zVal;
+ obj.zLabel = Axes.tickText(dummyAx, zVal, 'hover').text;
+ }
+
+ var theText = cd0.text && cd0.text[i] && cd0.text[i][j];
+ if(theText === undefined || theText === false) theText = '';
+ obj.text = theText;
+
+ var _t = Lib.texttemplateString(texttemplate, obj, gd._fullLayout._d3locale, obj, trace._meta || {});
+ if(!_t) continue;
+
+ var lines = _t.split('
');
+ var nL = lines.length;
+ var nC = 0;
+ for(k = 0; k < nL; k++) {
+ nC = Math.max(nC, lines[k].length);
+ }
+
+ textData.push({
+ l: nL, // number of lines
+ c: nC, // maximum number of chars in a line
+ t: _t, // text
+ x: _x,
+ y: _y,
+ z: zVal
+ });
+ }
+ }
+
+ var font = trace.textfont;
+ var fontFamily = font.family;
+ var fontSize = font.size;
+
+ if(!fontSize || fontSize === 'auto') {
+ var minW = Infinity;
+ var minH = Infinity;
+ var maxL = 0;
+ var maxC = 0;
+
+ for(k = 0; k < textData.length; k++) {
+ var d = textData[k];
+ maxL = Math.max(maxL, d.l);
+ maxC = Math.max(maxC, d.c);
+
+ if(k < textData.length - 1) {
+ var nextD = textData[k + 1];
+ var dx = Math.abs(nextD.x - d.x);
+ var dy = Math.abs(nextD.y - d.y);
+
+ if(dx) minW = Math.min(minW, dx);
+ if(dy) minH = Math.min(minH, dy);
+ }
+ }
+
+ if(
+ !isFinite(minW) ||
+ !isFinite(minH)
+ ) {
+ fontSize = 12;
+ } else {
+ minW -= xGap;
+ minH -= yGap;
+
+ minW /= maxC;
+ minH /= maxL;
+
+ minW /= LINE_SPACING / 2;
+ minH /= LINE_SPACING;
+
+ fontSize = Math.min(
+ Math.floor(minW),
+ Math.floor(minH)
+ );
+ }
+ }
+ if(fontSize <= 0 || !isFinite(fontSize)) return;
+
+ var xFn = function(d) { return d.x; };
+ var yFn = function(d) {
+ return d.y - fontSize * ((d.l * LINE_SPACING) / 2 - 1);
+ };
+
+ var labels = selectLabels(plotGroup).data(textData);
+
+ labels
+ .enter()
+ .append('g')
+ .classed(labelClass, 1)
+ .append('text')
+ .attr('text-anchor', 'middle')
+ .each(function(d) {
+ var thisLabel = d3.select(this);
+
+ var fontColor = font.color;
+ if(!fontColor || fontColor === 'auto') {
+ fontColor = Color.contrast(
+ 'rgba(' +
+ sclFunc(d.z).join() +
+ ')'
+ );
+ }
+
+ thisLabel
+ .attr('data-notex', 1)
+ .call(svgTextUtils.positionText, xFn(d), yFn(d))
+ .call(Drawing.font, fontFamily, fontSize, fontColor)
+ .text(d.t)
+ .call(svgTextUtils.convertToTspans, gd);
+ });
+ }
});
};
@@ -92263,7 +92843,7 @@ function putColor(pixels, pxIndex, c) {
pixels[pxIndex + 3] = Math.round(c[3] * 255);
}
-},{"../../components/colorscale":169,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../registry":378,"@plotly/d3":20,"tinycolor2":121}],451:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../components/colorscale":169,"../../components/drawing":179,"../../constants/alignment":262,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../registry":378,"../scatter/format_labels":509,"@plotly/d3":20,"tinycolor2":121}],452:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -92275,7 +92855,7 @@ module.exports = function style(gd) {
});
};
-},{"@plotly/d3":20}],452:[function(_dereq_,module,exports){
+},{"@plotly/d3":20}],453:[function(_dereq_,module,exports){
'use strict';
module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) {
@@ -92289,7 +92869,7 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) {
coerce('zhoverformat');
};
-},{}],453:[function(_dereq_,module,exports){
+},{}],454:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -92380,12 +92960,14 @@ function isValidZ(z) {
return (allRowsAreArrays && oneRowIsFilled && hasOneNumber);
}
-},{"../../lib":287,"../../registry":378,"fast-isnumeric":33}],454:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378,"fast-isnumeric":33}],455:[function(_dereq_,module,exports){
'use strict';
var barAttrs = _dereq_('../bar/attributes');
var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs;
+var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs;
+var fontAttrs = _dereq_('../../plots/font_attributes');
var makeBinAttrs = _dereq_('./bin_attributes');
var constants = _dereq_('./constants');
var extendFlat = _dereq_('../../lib/extend').extendFlat;
@@ -92480,6 +93062,41 @@ module.exports = {
keys: constants.eventDataKeys
}),
+ texttemplate: texttemplateAttrs({
+ arrayOk: false,
+ editType: 'plot'
+ }, {
+ keys: ['label', 'value']
+ }),
+
+ textposition: extendFlat({}, barAttrs.textposition, {
+ arrayOk: false
+ }),
+
+ textfont: fontAttrs({
+ arrayOk: false,
+ editType: 'plot',
+ colorEditType: 'style',
+ }),
+
+ outsidetextfont: fontAttrs({
+ arrayOk: false,
+ editType: 'plot',
+ colorEditType: 'style',
+ }),
+
+ insidetextfont: fontAttrs({
+ arrayOk: false,
+ editType: 'plot',
+ colorEditType: 'style',
+ }),
+
+ insidetextanchor: barAttrs.insidetextanchor,
+
+ textangle: barAttrs.textangle,
+ cliponaxis: barAttrs.cliponaxis,
+ constraintext: barAttrs.constraintext,
+
marker: barAttrs.marker,
offsetgroup: barAttrs.offsetgroup,
@@ -92493,7 +93110,7 @@ module.exports = {
}
};
-},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"./bin_attributes":456,"./constants":460}],455:[function(_dereq_,module,exports){
+},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../bar/attributes":388,"./bin_attributes":457,"./constants":461}],456:[function(_dereq_,module,exports){
'use strict';
@@ -92509,7 +93126,7 @@ module.exports = function doAvg(size, counts) {
return total;
};
-},{}],456:[function(_dereq_,module,exports){
+},{}],457:[function(_dereq_,module,exports){
'use strict';
module.exports = function makeBinAttrs(axLetter, match) {
@@ -92530,7 +93147,7 @@ module.exports = function makeBinAttrs(axLetter, match) {
};
};
-},{}],457:[function(_dereq_,module,exports){
+},{}],458:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -92595,7 +93212,7 @@ module.exports = {
}
};
-},{"fast-isnumeric":33}],458:[function(_dereq_,module,exports){
+},{"fast-isnumeric":33}],459:[function(_dereq_,module,exports){
'use strict';
var numConstants = _dereq_('../../constants/numerical');
@@ -92762,7 +93379,7 @@ function dateParts(v, pa, calendar) {
return parts;
}
-},{"../../constants/numerical":267,"../../plots/cartesian/axes":334}],459:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../plots/cartesian/axes":334}],460:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -93333,14 +93950,14 @@ module.exports = {
calcAllAutoBins: calcAllAutoBins
};
-},{"../../lib":287,"../../plots/cartesian/axes":334,"../../registry":378,"../bar/arrays_to_calcdata":387,"./average":455,"./bin_functions":457,"./bin_label_vals":458,"./norm_functions":466,"fast-isnumeric":33}],460:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axes":334,"../../registry":378,"../bar/arrays_to_calcdata":387,"./average":456,"./bin_functions":458,"./bin_label_vals":459,"./norm_functions":467,"fast-isnumeric":33}],461:[function(_dereq_,module,exports){
'use strict';
module.exports = {
eventDataKeys: ['binNumber']
};
-},{}],461:[function(_dereq_,module,exports){
+},{}],462:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -93609,13 +94226,14 @@ module.exports = function crossTraceDefaults(fullData, fullLayout) {
}
};
-},{"../../lib":287,"../../plots/cartesian/axis_ids":338,"../../plots/cartesian/constraints":342,"../../registry":378,"../bar/defaults":392}],462:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axis_ids":338,"../../plots/cartesian/constraints":342,"../../registry":378,"../bar/defaults":392}],463:[function(_dereq_,module,exports){
'use strict';
var Registry = _dereq_('../../registry');
var Lib = _dereq_('../../lib');
var Color = _dereq_('../../components/color');
+var handleText = _dereq_('../bar/defaults').handleText;
var handleStyleDefaults = _dereq_('../bar/style_defaults');
var attributes = _dereq_('./attributes');
@@ -93634,6 +94252,16 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
}
coerce('text');
+ var textposition = coerce('textposition');
+ handleText(traceIn, traceOut, layout, coerce, textposition, {
+ moduleHasSelected: true,
+ moduleHasUnselected: true,
+ moduleHasConstrain: true,
+ moduleHasCliponaxis: true,
+ moduleHasTextangle: true,
+ moduleHasInsideanchor: true
+ });
+
coerce('hovertext');
coerce('hovertemplate');
coerce('xhoverformat');
@@ -93677,7 +94305,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {axis: 'x', inherit: 'y'});
};
-},{"../../components/color":157,"../../lib":287,"../../registry":378,"../bar/style_defaults":403,"./attributes":454}],463:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287,"../../registry":378,"../bar/defaults":392,"../bar/style_defaults":403,"./attributes":455}],464:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt, trace, cd, pointNumber) {
@@ -93718,7 +94346,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) {
return out;
};
-},{}],464:[function(_dereq_,module,exports){
+},{}],465:[function(_dereq_,module,exports){
'use strict';
var barHover = _dereq_('../bar/hover').hoverPoints;
@@ -93742,7 +94370,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {
return pts;
};
-},{"../../plots/cartesian/axes":334,"../bar/hover":395}],465:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axes":334,"../bar/hover":395}],466:[function(_dereq_,module,exports){
'use strict';
/**
@@ -93783,7 +94411,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../bar/cross_trace_calc":391,"../bar/layout_attributes":397,"../bar/layout_defaults":398,"../bar/plot":399,"../bar/select":400,"../bar/style":402,"../scatter/marker_colorbar":517,"./attributes":454,"./calc":459,"./cross_trace_defaults":461,"./defaults":462,"./event_data":463,"./hover":464}],466:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../bar/cross_trace_calc":391,"../bar/layout_attributes":397,"../bar/layout_defaults":398,"../bar/plot":399,"../bar/select":400,"../bar/style":402,"../scatter/marker_colorbar":518,"./attributes":455,"./calc":460,"./cross_trace_defaults":462,"./defaults":463,"./event_data":464,"./hover":465}],467:[function(_dereq_,module,exports){
'use strict';
@@ -93809,7 +94437,7 @@ module.exports = {
}
};
-},{}],467:[function(_dereq_,module,exports){
+},{}],468:[function(_dereq_,module,exports){
'use strict';
var histogramAttrs = _dereq_('../histogram/attributes');
@@ -93818,6 +94446,7 @@ var heatmapAttrs = _dereq_('../heatmap/attributes');
var baseAttrs = _dereq_('../../plots/attributes');
var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs;
+var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs;
var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
var extendFlat = _dereq_('../../lib/extend').extendFlat;
@@ -93862,12 +94491,19 @@ module.exports = extendFlat(
yhoverformat: axisHoverFormat('y'),
zhoverformat: axisHoverFormat('z', 1),
hovertemplate: hovertemplateAttrs({}, {keys: 'z'}),
+ texttemplate: texttemplateAttrs({
+ arrayOk: false,
+ editType: 'plot'
+ }, {
+ keys: 'z'
+ }),
+ textfont: heatmapAttrs.textfont,
showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false})
},
colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false})
);
-},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../heatmap/attributes":439,"../histogram/attributes":454,"../histogram/bin_attributes":456}],468:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../heatmap/attributes":439,"../histogram/attributes":455,"../histogram/bin_attributes":457}],469:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94078,7 +94714,7 @@ function getRanges(edges, uniqueVals, gapLow, gapHigh, ax, calendar) {
return out;
}
-},{"../../lib":287,"../../plots/cartesian/axes":334,"../histogram/average":455,"../histogram/bin_functions":457,"../histogram/bin_label_vals":458,"../histogram/calc":459,"../histogram/norm_functions":466}],469:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axes":334,"../histogram/average":456,"../histogram/bin_functions":458,"../histogram/bin_label_vals":459,"../histogram/calc":460,"../histogram/norm_functions":467}],470:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94086,6 +94722,7 @@ var Lib = _dereq_('../../lib');
var handleSampleDefaults = _dereq_('./sample_defaults');
var handleStyleDefaults = _dereq_('../heatmap/style_defaults');
var colorscaleDefaults = _dereq_('../../components/colorscale/defaults');
+var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults');
var attributes = _dereq_('./attributes');
@@ -94100,11 +94737,14 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
handleStyleDefaults(traceIn, traceOut, coerce, layout);
colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'});
coerce('hovertemplate');
+
+ handleHeatmapLabelDefaults(coerce, layout);
+
coerce('xhoverformat');
coerce('yhoverformat');
};
-},{"../../components/colorscale/defaults":167,"../../lib":287,"../heatmap/style_defaults":452,"./attributes":467,"./sample_defaults":472}],470:[function(_dereq_,module,exports){
+},{"../../components/colorscale/defaults":167,"../../lib":287,"../heatmap/label_defaults":449,"../heatmap/style_defaults":453,"./attributes":468,"./sample_defaults":473}],471:[function(_dereq_,module,exports){
'use strict';
var heatmapHover = _dereq_('../heatmap/hover');
@@ -94130,7 +94770,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {
return pts;
};
-},{"../../plots/cartesian/axes":334,"../heatmap/hover":446}],471:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axes":334,"../heatmap/hover":446}],472:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -94153,7 +94793,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../heatmap/calc":440,"../heatmap/colorbar":442,"../heatmap/plot":450,"../heatmap/style":451,"../histogram/cross_trace_defaults":461,"../histogram/event_data":463,"./attributes":467,"./defaults":469,"./hover":470}],472:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../heatmap/calc":440,"../heatmap/colorbar":442,"../heatmap/plot":451,"../heatmap/style":452,"../histogram/cross_trace_defaults":462,"../histogram/event_data":464,"./attributes":468,"./defaults":470,"./hover":471}],473:[function(_dereq_,module,exports){
'use strict';
var Registry = _dereq_('../../registry');
@@ -94190,7 +94830,7 @@ module.exports = function handleSampleDefaults(traceIn, traceOut, coerce, layout
coerce('autobiny');
};
-},{"../../lib":287,"../../registry":378}],473:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378}],474:[function(_dereq_,module,exports){
'use strict';
var histogram2dAttrs = _dereq_('../histogram2d/attributes');
@@ -94234,7 +94874,9 @@ module.exports = extendFlat({
xhoverformat: axisHoverFormat('x'),
yhoverformat: axisHoverFormat('y'),
zhoverformat: axisHoverFormat('z', 1),
- hovertemplate: histogram2dAttrs.hovertemplate
+ hovertemplate: histogram2dAttrs.hovertemplate,
+ texttemplate: contourAttrs.texttemplate,
+ textfont: contourAttrs.textfont
},
colorScaleAttrs('', {
cLetter: 'z',
@@ -94242,7 +94884,7 @@ module.exports = extendFlat({
})
);
-},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../contour/attributes":417,"../histogram2d/attributes":467}],474:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../contour/attributes":417,"../histogram2d/attributes":468}],475:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94250,6 +94892,7 @@ var Lib = _dereq_('../../lib');
var handleSampleDefaults = _dereq_('../histogram2d/sample_defaults');
var handleContoursDefaults = _dereq_('../contour/contours_defaults');
var handleStyleDefaults = _dereq_('../contour/style_defaults');
+var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults');
var attributes = _dereq_('./attributes');
@@ -94267,12 +94910,18 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
handleContoursDefaults(traceIn, traceOut, coerce, coerce2);
handleStyleDefaults(traceIn, traceOut, coerce, layout);
- coerce('hovertemplate');
coerce('xhoverformat');
coerce('yhoverformat');
+ coerce('hovertemplate');
+ if(
+ traceOut.contours &&
+ traceOut.contours.coloring === 'heatmap'
+ ) {
+ handleHeatmapLabelDefaults(coerce, layout);
+ }
};
-},{"../../lib":287,"../contour/contours_defaults":424,"../contour/style_defaults":438,"../histogram2d/sample_defaults":472,"./attributes":473}],475:[function(_dereq_,module,exports){
+},{"../../lib":287,"../contour/contours_defaults":424,"../contour/style_defaults":438,"../heatmap/label_defaults":449,"../histogram2d/sample_defaults":473,"./attributes":474}],476:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -94294,7 +94943,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../contour/calc":418,"../contour/colorbar":420,"../contour/hover":430,"../contour/plot":435,"../contour/style":437,"../histogram/cross_trace_defaults":461,"./attributes":473,"./defaults":474}],476:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../contour/calc":418,"../contour/colorbar":420,"../contour/hover":430,"../contour/plot":435,"../contour/style":437,"../histogram/cross_trace_defaults":462,"./attributes":474,"./defaults":475}],477:[function(_dereq_,module,exports){
'use strict';
var baseAttrs = _dereq_('../../plots/attributes');
@@ -94390,7 +95039,7 @@ module.exports = extendFlat({
transforms: undefined
});
-},{"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"./constants":478}],477:[function(_dereq_,module,exports){
+},{"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"./constants":479}],478:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94480,7 +95129,7 @@ function makeScaler(trace) {
};
}
-},{"../../lib":287,"../../plots/cartesian/axes":334,"./constants":478,"./helpers":481,"fast-isnumeric":33}],478:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axes":334,"./constants":479,"./helpers":482,"fast-isnumeric":33}],479:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -94546,7 +95195,7 @@ module.exports = {
].join('; ')
};
-},{}],479:[function(_dereq_,module,exports){
+},{}],480:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94596,7 +95245,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) {
traceOut._length = null;
};
-},{"../../lib":287,"../../snapshot/helpers":382,"./attributes":476,"./constants":478}],480:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../snapshot/helpers":382,"./attributes":477,"./constants":479}],481:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt) {
@@ -94610,7 +95259,7 @@ module.exports = function eventData(out, pt) {
return out;
};
-},{}],481:[function(_dereq_,module,exports){
+},{}],482:[function(_dereq_,module,exports){
'use strict';
var probeSync = _dereq_('probe-image-size/sync');
@@ -94623,7 +95272,7 @@ exports.getImageSize = function(src) {
return probeSync(buff);
};
-},{"../../snapshot/helpers":382,"buffer/":28,"probe-image-size/sync":97}],482:[function(_dereq_,module,exports){
+},{"../../snapshot/helpers":382,"buffer/":28,"probe-image-size/sync":97}],483:[function(_dereq_,module,exports){
'use strict';
var Fx = _dereq_('../../components/fx');
@@ -94715,7 +95364,7 @@ module.exports = function hoverPoints(pointData, xval, yval) {
})];
};
-},{"../../components/fx":197,"../../lib":287,"./constants":478}],483:[function(_dereq_,module,exports){
+},{"../../components/fx":197,"../../lib":287,"./constants":479}],484:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -94736,7 +95385,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"./attributes":476,"./calc":477,"./defaults":479,"./event_data":480,"./hover":482,"./plot":484,"./style":485}],484:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"./attributes":477,"./calc":478,"./defaults":480,"./event_data":481,"./hover":483,"./plot":485,"./style":486}],485:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -94959,7 +95608,7 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) {
});
};
-},{"../../constants/xmlns_namespaces":268,"../../lib":287,"./constants":478,"@plotly/d3":20}],485:[function(_dereq_,module,exports){
+},{"../../constants/xmlns_namespaces":268,"../../lib":287,"./constants":479,"@plotly/d3":20}],486:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -94971,7 +95620,7 @@ module.exports = function style(gd) {
});
};
-},{"@plotly/d3":20}],486:[function(_dereq_,module,exports){
+},{"@plotly/d3":20}],487:[function(_dereq_,module,exports){
'use strict';
var baseAttrs = _dereq_('../../plots/attributes');
@@ -95186,7 +95835,7 @@ module.exports = {
}
};
-},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/domain":364,"../../plots/font_attributes":365,"../../plots/template_attributes":373}],487:[function(_dereq_,module,exports){
+},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/domain":364,"../../plots/font_attributes":365,"../../plots/template_attributes":373}],488:[function(_dereq_,module,exports){
'use strict';
var plots = _dereq_('../../plots/plots');
@@ -95201,7 +95850,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout)
plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout);
};
-},{"../../plots/plots":371}],488:[function(_dereq_,module,exports){
+},{"../../plots/plots":371}],489:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -95243,7 +95892,6 @@ function calc(gd, trace) {
v = vals[i];
if(!isNumeric(v)) continue;
v = +v;
- if(v < 0) continue;
} else v = 1;
label = labels[i];
@@ -95280,6 +95928,9 @@ function calc(gd, trace) {
}
}
+ // Drop aggregate sums of value 0 or less
+ cd = cd.filter(function(elem) { return elem.v >= 0; });
+
var shouldSort = (trace.type === 'funnelarea') ? isAggregated : trace.sort;
if(shouldSort) cd.sort(function(a, b) { return b.v - a.v; });
@@ -95376,7 +96027,7 @@ module.exports = {
generateExtendedColors: generateExtendedColors
};
-},{"../../components/color":157,"fast-isnumeric":33,"tinycolor2":121}],489:[function(_dereq_,module,exports){
+},{"../../components/color":157,"fast-isnumeric":33,"tinycolor2":121}],490:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -95499,7 +96150,7 @@ module.exports = {
supplyDefaults: supplyDefaults
};
-},{"../../lib":287,"../../plots/domain":364,"../bar/defaults":392,"./attributes":486,"fast-isnumeric":33}],490:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/domain":364,"../bar/defaults":392,"./attributes":487,"fast-isnumeric":33}],491:[function(_dereq_,module,exports){
'use strict';
var appendArrayMultiPointValues = _dereq_('../../components/fx/helpers').appendArrayMultiPointValues;
@@ -95541,7 +96192,7 @@ module.exports = function eventData(pt, trace) {
return out;
};
-},{"../../components/fx/helpers":193}],491:[function(_dereq_,module,exports){
+},{"../../components/fx/helpers":193}],492:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -95581,7 +96232,7 @@ exports.getRotationAngle = function(rotation) {
return (rotation === 'auto' ? 0 : rotation) * Math.PI / 180;
};
-},{"../../lib":287}],492:[function(_dereq_,module,exports){
+},{"../../lib":287}],493:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -95605,7 +96256,7 @@ module.exports = {
}
};
-},{"./attributes":486,"./base_plot":487,"./calc":488,"./defaults":489,"./layout_attributes":493,"./layout_defaults":494,"./plot":495,"./style":496,"./style_one":497}],493:[function(_dereq_,module,exports){
+},{"./attributes":487,"./base_plot":488,"./calc":489,"./defaults":490,"./layout_attributes":494,"./layout_defaults":495,"./plot":496,"./style":497,"./style_one":498}],494:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -95624,7 +96275,7 @@ module.exports = {
}
};
-},{}],494:[function(_dereq_,module,exports){
+},{}],495:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -95641,7 +96292,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {
coerce('extendpiecolors');
};
-},{"../../lib":287,"./layout_attributes":493}],495:[function(_dereq_,module,exports){
+},{"../../lib":287,"./layout_attributes":494}],496:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -96821,7 +97472,7 @@ module.exports = {
computeTransform: computeTransform
};
-},{"../../components/color":157,"../../components/drawing":179,"../../components/fx":197,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/plots":371,"../bar/constants":390,"../bar/uniform_text":404,"./event_data":490,"./helpers":491,"@plotly/d3":20}],496:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../components/drawing":179,"../../components/fx":197,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/plots":371,"../bar/constants":390,"../bar/uniform_text":404,"./event_data":491,"./helpers":492,"@plotly/d3":20}],497:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -96846,7 +97497,7 @@ module.exports = function style(gd) {
});
};
-},{"../bar/uniform_text":404,"./style_one":497,"@plotly/d3":20}],497:[function(_dereq_,module,exports){
+},{"../bar/uniform_text":404,"./style_one":498,"@plotly/d3":20}],498:[function(_dereq_,module,exports){
'use strict';
var Color = _dereq_('../../components/color');
@@ -96862,7 +97513,7 @@ module.exports = function styleOne(s, pt, trace) {
.call(Color.stroke, lineColor);
};
-},{"../../components/color":157,"./helpers":491}],498:[function(_dereq_,module,exports){
+},{"../../components/color":157,"./helpers":492}],499:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -96905,7 +97556,7 @@ module.exports = function arraysToCalcdata(cd, trace) {
}
};
-},{"../../lib":287}],499:[function(_dereq_,module,exports){
+},{"../../lib":287}],500:[function(_dereq_,module,exports){
'use strict';
var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
@@ -97255,7 +97906,7 @@ module.exports = {
}),
};
-},{"../../components/colorscale/attributes":164,"../../components/drawing":179,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"./constants":503}],500:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../components/drawing":179,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"./constants":504}],501:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -97552,7 +98203,7 @@ module.exports = {
getStackOpts: getStackOpts
};
-},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"./arrays_to_calcdata":498,"./calc_selection":501,"./colorscale_calc":502,"./subtypes":524,"fast-isnumeric":33}],501:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"./arrays_to_calcdata":499,"./calc_selection":502,"./colorscale_calc":503,"./subtypes":525,"fast-isnumeric":33}],502:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -97563,7 +98214,7 @@ module.exports = function calcSelection(cd, trace) {
}
};
-},{"../../lib":287}],502:[function(_dereq_,module,exports){
+},{"../../lib":287}],503:[function(_dereq_,module,exports){
'use strict';
var hasColorscale = _dereq_('../../components/colorscale/helpers').hasColorscale;
@@ -97598,7 +98249,7 @@ module.exports = function calcMarkerColorscale(gd, trace) {
}
};
-},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"./subtypes":524}],503:[function(_dereq_,module,exports){
+},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"./subtypes":525}],504:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -97618,7 +98269,7 @@ module.exports = {
eventDataKeys: []
};
-},{}],504:[function(_dereq_,module,exports){
+},{}],505:[function(_dereq_,module,exports){
'use strict';
var calc = _dereq_('./calc');
@@ -97790,7 +98441,7 @@ function getInterp(calcTrace, index, position, posAttr) {
return pt0.s + (pt1.s - pt0.s) * (position - pt0[posAttr]) / (pt1[posAttr] - pt0[posAttr]);
}
-},{"./calc":500}],505:[function(_dereq_,module,exports){
+},{"./calc":501}],506:[function(_dereq_,module,exports){
'use strict';
@@ -97820,7 +98471,7 @@ module.exports = function crossTraceDefaults(fullData) {
}
};
-},{}],506:[function(_dereq_,module,exports){
+},{}],507:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -97907,7 +98558,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
Lib.coerceSelectionMarkerOpacity(traceOut, coerce);
};
-},{"../../lib":287,"../../registry":378,"./attributes":499,"./constants":503,"./fillcolor_defaults":507,"./line_defaults":512,"./line_shape_defaults":514,"./marker_defaults":518,"./period_defaults":519,"./stack_defaults":522,"./subtypes":524,"./text_defaults":525,"./xy_defaults":526}],507:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378,"./attributes":500,"./constants":504,"./fillcolor_defaults":508,"./line_defaults":513,"./line_shape_defaults":515,"./marker_defaults":519,"./period_defaults":520,"./stack_defaults":523,"./subtypes":525,"./text_defaults":526,"./xy_defaults":527}],508:[function(_dereq_,module,exports){
'use strict';
var Color = _dereq_('../../components/color');
@@ -97935,7 +98586,7 @@ module.exports = function fillColorDefaults(traceIn, traceOut, defaultColor, coe
));
};
-},{"../../components/color":157,"../../lib":287}],508:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287}],509:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../../plots/cartesian/axes');
@@ -97953,7 +98604,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) {
return labels;
};
-},{"../../plots/cartesian/axes":334}],509:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axes":334}],510:[function(_dereq_,module,exports){
'use strict';
var Color = _dereq_('../../components/color');
@@ -97993,7 +98644,7 @@ module.exports = function getTraceColor(trace, di) {
}
};
-},{"../../components/color":157,"./subtypes":524}],510:[function(_dereq_,module,exports){
+},{"../../components/color":157,"./subtypes":525}],511:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -98204,7 +98855,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
}
};
-},{"../../components/color":157,"../../components/fx":197,"../../lib":287,"../../registry":378,"./get_trace_color":509}],511:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../components/fx":197,"../../lib":287,"../../registry":378,"./get_trace_color":510}],512:[function(_dereq_,module,exports){
'use strict';
var subtypes = _dereq_('./subtypes');
@@ -98241,7 +98892,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"./arrays_to_calcdata":498,"./attributes":499,"./calc":500,"./cross_trace_calc":504,"./cross_trace_defaults":505,"./defaults":506,"./format_labels":508,"./hover":510,"./marker_colorbar":517,"./plot":520,"./select":521,"./style":523,"./subtypes":524}],512:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"./arrays_to_calcdata":499,"./attributes":500,"./calc":501,"./cross_trace_calc":505,"./cross_trace_defaults":506,"./defaults":507,"./format_labels":509,"./hover":511,"./marker_colorbar":518,"./plot":521,"./select":522,"./style":524,"./subtypes":525}],513:[function(_dereq_,module,exports){
'use strict';
var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray;
@@ -98264,7 +98915,7 @@ module.exports = function lineDefaults(traceIn, traceOut, defaultColor, layout,
if(!(opts || {}).noDash) coerce('line.dash');
};
-},{"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"../../lib":287}],513:[function(_dereq_,module,exports){
+},{"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"../../lib":287}],514:[function(_dereq_,module,exports){
'use strict';
var numConstants = _dereq_('../../constants/numerical');
@@ -98716,7 +99367,7 @@ module.exports = function linePoints(d, opts) {
return segments;
};
-},{"../../constants/numerical":267,"../../lib":287,"./constants":503}],514:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../lib":287,"./constants":504}],515:[function(_dereq_,module,exports){
'use strict';
@@ -98726,7 +99377,7 @@ module.exports = function handleLineShapeDefaults(traceIn, traceOut, coerce) {
if(shape === 'spline') coerce('line.smoothing');
};
-},{}],515:[function(_dereq_,module,exports){
+},{}],516:[function(_dereq_,module,exports){
'use strict';
var LINKEDFILLS = {tonextx: 1, tonexty: 1, tonext: 1};
@@ -98808,7 +99459,7 @@ module.exports = function linkTraces(gd, plotinfo, cdscatter) {
return cdscatterSorted;
};
-},{}],516:[function(_dereq_,module,exports){
+},{}],517:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -98844,7 +99495,7 @@ module.exports = function makeBubbleSizeFn(trace, factor) {
};
};
-},{"fast-isnumeric":33}],517:[function(_dereq_,module,exports){
+},{"fast-isnumeric":33}],518:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -98853,7 +99504,7 @@ module.exports = {
max: 'cmax'
};
-},{}],518:[function(_dereq_,module,exports){
+},{}],519:[function(_dereq_,module,exports){
'use strict';
var Color = _dereq_('../../components/color');
@@ -98926,7 +99577,7 @@ module.exports = function markerDefaults(traceIn, traceOut, defaultColor, layout
}
};
-},{"../../components/color":157,"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"./subtypes":524}],519:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"./subtypes":525}],520:[function(_dereq_,module,exports){
'use strict';
var dateTick0 = _dereq_('../../lib').dateTick0;
@@ -98965,7 +99616,7 @@ module.exports = function handlePeriodDefaults(traceIn, traceOut, layout, coerce
}
};
-},{"../../constants/numerical":267,"../../lib":287}],520:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../lib":287}],521:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -99517,7 +100168,7 @@ function selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll) {
});
}
-},{"../../components/drawing":179,"../../lib":287,"../../lib/polygon":299,"../../registry":378,"./line_points":513,"./link_traces":515,"./subtypes":524,"@plotly/d3":20}],521:[function(_dereq_,module,exports){
+},{"../../components/drawing":179,"../../lib":287,"../../lib/polygon":299,"../../registry":378,"./line_points":514,"./link_traces":516,"./subtypes":525,"@plotly/d3":20}],522:[function(_dereq_,module,exports){
'use strict';
var subtypes = _dereq_('./subtypes');
@@ -99562,7 +100213,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) {
return selection;
};
-},{"./subtypes":524}],522:[function(_dereq_,module,exports){
+},{"./subtypes":525}],523:[function(_dereq_,module,exports){
'use strict';
var perStackAttrs = ['orientation', 'groupnorm', 'stackgaps'];
@@ -99659,7 +100310,7 @@ module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce)
}
};
-},{}],523:[function(_dereq_,module,exports){
+},{}],524:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -99721,7 +100372,7 @@ module.exports = {
styleOnSelect: styleOnSelect
};
-},{"../../components/drawing":179,"../../registry":378,"@plotly/d3":20}],524:[function(_dereq_,module,exports){
+},{"../../components/drawing":179,"../../registry":378,"@plotly/d3":20}],525:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -99751,7 +100402,7 @@ module.exports = {
}
};
-},{"../../lib":287}],525:[function(_dereq_,module,exports){
+},{"../../lib":287}],526:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -99772,7 +100423,7 @@ module.exports = function(traceIn, traceOut, layout, coerce, opts) {
}
};
-},{"../../lib":287}],526:[function(_dereq_,module,exports){
+},{"../../lib":287}],527:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -99808,7 +100459,7 @@ module.exports = function handleXYDefaults(traceIn, traceOut, layout, coerce) {
return len;
};
-},{"../../lib":287,"../../registry":378}],527:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378}],528:[function(_dereq_,module,exports){
'use strict';
var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs;
@@ -99900,7 +100551,7 @@ module.exports = {
hovertemplate: hovertemplateAttrs(),
};
-},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"../scatter/attributes":499}],528:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"../scatter/attributes":500}],529:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -99972,7 +100623,7 @@ module.exports = function calc(gd, trace) {
return cd;
};
-},{"../scatter/arrays_to_calcdata":498,"../scatter/calc":500,"../scatter/calc_selection":501,"../scatter/colorscale_calc":502,"fast-isnumeric":33}],529:[function(_dereq_,module,exports){
+},{"../scatter/arrays_to_calcdata":499,"../scatter/calc":501,"../scatter/calc_selection":502,"../scatter/colorscale_calc":503,"fast-isnumeric":33}],530:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100067,7 +100718,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
Lib.coerceSelectionMarkerOpacity(traceOut, coerce);
};
-},{"../../lib":287,"../scatter/constants":503,"../scatter/fillcolor_defaults":507,"../scatter/line_defaults":512,"../scatter/line_shape_defaults":514,"../scatter/marker_defaults":518,"../scatter/subtypes":524,"../scatter/text_defaults":525,"./attributes":527}],530:[function(_dereq_,module,exports){
+},{"../../lib":287,"../scatter/constants":504,"../scatter/fillcolor_defaults":508,"../scatter/line_defaults":513,"../scatter/line_shape_defaults":515,"../scatter/marker_defaults":519,"../scatter/subtypes":525,"../scatter/text_defaults":526,"./attributes":528}],531:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt, trace, cd, pointNumber) {
@@ -100091,7 +100742,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) {
return out;
};
-},{}],531:[function(_dereq_,module,exports){
+},{}],532:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../../plots/cartesian/axes');
@@ -100107,7 +100758,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) {
return labels;
};
-},{"../../plots/cartesian/axes":334}],532:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axes":334}],533:[function(_dereq_,module,exports){
'use strict';
var scatterHover = _dereq_('../scatter/hover');
@@ -100173,7 +100824,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
return scatterPointData;
};
-},{"../scatter/hover":510}],533:[function(_dereq_,module,exports){
+},{"../scatter/hover":511}],534:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -100197,7 +100848,7 @@ module.exports = {
}
};
-},{"../../plots/ternary":374,"../scatter/marker_colorbar":517,"../scatter/select":521,"../scatter/style":523,"./attributes":527,"./calc":528,"./defaults":529,"./event_data":530,"./format_labels":531,"./hover":532,"./plot":534}],534:[function(_dereq_,module,exports){
+},{"../../plots/ternary":374,"../scatter/marker_colorbar":518,"../scatter/select":522,"../scatter/style":524,"./attributes":528,"./calc":529,"./defaults":530,"./event_data":531,"./format_labels":532,"./hover":533,"./plot":535}],535:[function(_dereq_,module,exports){
'use strict';
var scatterPlot = _dereq_('../scatter/plot');
@@ -100221,7 +100872,7 @@ module.exports = function plot(gd, ternary, moduleCalcData) {
scatterPlot(gd, plotinfo, moduleCalcData, scatterLayer);
};
-},{"../scatter/plot":520}],535:[function(_dereq_,module,exports){
+},{"../scatter/plot":521}],536:[function(_dereq_,module,exports){
'use strict';
var boxAttrs = _dereq_('../box/attributes');
@@ -100377,7 +101028,7 @@ module.exports = {
}
};
-},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../box/attributes":405}],536:[function(_dereq_,module,exports){
+},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../box/attributes":405}],537:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100545,7 +101196,7 @@ function calcSpan(trace, cdi, valAxis, bandwidth) {
return spanOut;
}
-},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/axes":334,"../box/calc":406,"./helpers":539}],537:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/axes":334,"../box/calc":406,"./helpers":540}],538:[function(_dereq_,module,exports){
'use strict';
var setPositionOffset = _dereq_('../box/cross_trace_calc').setPositionOffset;
@@ -100580,7 +101231,7 @@ module.exports = function crossTraceCalc(gd, plotinfo) {
}
};
-},{"../box/cross_trace_calc":407}],538:[function(_dereq_,module,exports){
+},{"../box/cross_trace_calc":407}],539:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100633,7 +101284,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
if(!meanLineVisible) traceOut.meanline = {visible: false};
};
-},{"../../components/color":157,"../../lib":287,"../box/defaults":408,"./attributes":535}],539:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287,"../box/defaults":408,"./attributes":536}],540:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100698,7 +101349,7 @@ exports.getKdeValue = function(calcItem, trace, valueDist) {
exports.extractVal = function(o) { return o.v; };
-},{"../../lib":287}],540:[function(_dereq_,module,exports){
+},{"../../lib":287}],541:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100805,7 +101456,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {
return closeData;
};
-},{"../../lib":287,"../../plots/cartesian/axes":334,"../box/hover":410,"./helpers":539}],541:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axes":334,"../box/hover":410,"./helpers":540}],542:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -100830,7 +101481,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../box/defaults":408,"../box/select":415,"../scatter/style":523,"./attributes":535,"./calc":536,"./cross_trace_calc":537,"./defaults":538,"./hover":540,"./layout_attributes":542,"./layout_defaults":543,"./plot":544,"./style":545}],542:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../box/defaults":408,"../box/select":415,"../scatter/style":524,"./attributes":536,"./calc":537,"./cross_trace_calc":538,"./defaults":539,"./hover":541,"./layout_attributes":543,"./layout_defaults":544,"./plot":545,"./style":546}],543:[function(_dereq_,module,exports){
'use strict';
var boxLayoutAttrs = _dereq_('../box/layout_attributes');
@@ -100845,7 +101496,7 @@ module.exports = {
})
};
-},{"../../lib":287,"../box/layout_attributes":412}],543:[function(_dereq_,module,exports){
+},{"../../lib":287,"../box/layout_attributes":412}],544:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100859,7 +101510,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
boxLayoutDefaults._supply(layoutIn, layoutOut, fullData, coerce, 'violin');
};
-},{"../../lib":287,"../box/layout_defaults":413,"./layout_attributes":542}],544:[function(_dereq_,module,exports){
+},{"../../lib":287,"../box/layout_defaults":413,"./layout_attributes":543}],545:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -101041,7 +101692,7 @@ module.exports = function plot(gd, plotinfo, cdViolins, violinLayer) {
});
};
-},{"../../components/drawing":179,"../../lib":287,"../box/plot":414,"../scatter/line_points":513,"./helpers":539,"@plotly/d3":20}],545:[function(_dereq_,module,exports){
+},{"../../components/drawing":179,"../../lib":287,"../box/plot":414,"../scatter/line_points":514,"./helpers":540,"@plotly/d3":20}],546:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -101088,7 +101739,7 @@ module.exports = function style(gd) {
});
};
-},{"../../components/color":157,"../scatter/style":523,"@plotly/d3":20}],546:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../scatter/style":524,"@plotly/d3":20}],547:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../plots/cartesian/axes');
@@ -101492,7 +102143,7 @@ function last(array, indices) {
return array[indices[indices.length - 1]];
}
-},{"../constants/numerical":267,"../lib":287,"../plot_api/plot_schema":322,"../plots/cartesian/axes":334,"./helpers":549}],547:[function(_dereq_,module,exports){
+},{"../constants/numerical":267,"../lib":287,"../plot_api/plot_schema":322,"../plots/cartesian/axes":334,"./helpers":550}],548:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../lib');
@@ -101752,7 +102403,7 @@ function getFilterFunc(opts, d2c, targetCalendar) {
}
}
-},{"../constants/filter_ops":265,"../lib":287,"../plots/cartesian/axes":334,"../registry":378,"./helpers":549}],548:[function(_dereq_,module,exports){
+},{"../constants/filter_ops":265,"../lib":287,"../plots/cartesian/axes":334,"../registry":378,"./helpers":550}],549:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../lib');
@@ -101996,7 +102647,7 @@ function transformOne(trace, state) {
return newData;
}
-},{"../lib":287,"../plot_api/plot_schema":322,"../plots/plots":371,"./helpers":549}],549:[function(_dereq_,module,exports){
+},{"../lib":287,"../plot_api/plot_schema":322,"../plots/plots":371,"./helpers":550}],550:[function(_dereq_,module,exports){
'use strict';
exports.pointsAccessorFunction = function(transforms, opts) {
@@ -102014,7 +102665,7 @@ exports.pointsAccessorFunction = function(transforms, opts) {
return originalPointsAccessor;
};
-},{}],550:[function(_dereq_,module,exports){
+},{}],551:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../lib');
@@ -102152,11 +102803,11 @@ function getSortFunc(opts, d2c) {
}
}
-},{"../constants/numerical":267,"../lib":287,"../plots/cartesian/axes":334,"./helpers":549}],551:[function(_dereq_,module,exports){
+},{"../constants/numerical":267,"../lib":287,"../plots/cartesian/axes":334,"./helpers":550}],552:[function(_dereq_,module,exports){
'use strict';
// package version injected by `npm run preprocess`
-exports.version = '2.6.3';
+exports.version = '2.8.0';
},{}]},{},[15])(15)
});
diff --git a/static/babybuddy/js/graph.aec8efcce748.js.gz b/static/babybuddy/js/graph.aec8efcce748.js.gz
new file mode 100644
index 00000000..42fed2c8
Binary files /dev/null and b/static/babybuddy/js/graph.aec8efcce748.js.gz differ
diff --git a/static/babybuddy/js/graph.c70d07f5822f.js.gz b/static/babybuddy/js/graph.c70d07f5822f.js.gz
deleted file mode 100644
index 10f2bea1..00000000
Binary files a/static/babybuddy/js/graph.c70d07f5822f.js.gz and /dev/null differ
diff --git a/static/babybuddy/js/graph.js b/static/babybuddy/js/graph.js
index 0d8b924e..a23be3b0 100644
--- a/static/babybuddy/js/graph.js
+++ b/static/babybuddy/js/graph.js
@@ -1,5 +1,5 @@
/**
-* plotly.js (cartesian) v2.6.3
+* plotly.js (cartesian) v2.8.0
* Copyright 2012-2021, Plotly, Inc.
* All rights reserved.
* Licensed under the MIT license
@@ -77,7 +77,7 @@ for(var selector in rules) {
module.exports = _dereq_('../src/transforms/aggregate');
-},{"../src/transforms/aggregate":546}],3:[function(_dereq_,module,exports){
+},{"../src/transforms/aggregate":547}],3:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/bar');
@@ -107,12 +107,12 @@ module.exports = _dereq_('../src/core');
module.exports = _dereq_('../src/transforms/filter');
-},{"../src/transforms/filter":547}],9:[function(_dereq_,module,exports){
+},{"../src/transforms/filter":548}],9:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/transforms/groupby');
-},{"../src/transforms/groupby":548}],10:[function(_dereq_,module,exports){
+},{"../src/transforms/groupby":549}],10:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/heatmap');
@@ -122,22 +122,22 @@ module.exports = _dereq_('../src/traces/heatmap');
module.exports = _dereq_('../src/traces/histogram');
-},{"../src/traces/histogram":465}],12:[function(_dereq_,module,exports){
+},{"../src/traces/histogram":466}],12:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/histogram2d');
-},{"../src/traces/histogram2d":471}],13:[function(_dereq_,module,exports){
+},{"../src/traces/histogram2d":472}],13:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/histogram2dcontour');
-},{"../src/traces/histogram2dcontour":475}],14:[function(_dereq_,module,exports){
+},{"../src/traces/histogram2dcontour":476}],14:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/image');
-},{"../src/traces/image":483}],15:[function(_dereq_,module,exports){
+},{"../src/traces/image":484}],15:[function(_dereq_,module,exports){
'use strict';
var Plotly = _dereq_('./core');
@@ -173,22 +173,22 @@ module.exports = Plotly;
module.exports = _dereq_('../src/traces/pie');
-},{"../src/traces/pie":492}],17:[function(_dereq_,module,exports){
+},{"../src/traces/pie":493}],17:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/scatterternary');
-},{"../src/traces/scatterternary":533}],18:[function(_dereq_,module,exports){
+},{"../src/traces/scatterternary":534}],18:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/transforms/sort');
-},{"../src/transforms/sort":550}],19:[function(_dereq_,module,exports){
+},{"../src/transforms/sort":551}],19:[function(_dereq_,module,exports){
'use strict';
module.exports = _dereq_('../src/traces/violin');
-},{"../src/traces/violin":541}],20:[function(_dereq_,module,exports){
+},{"../src/traces/violin":542}],20:[function(_dereq_,module,exports){
!function() {
var d3 = {
version: "3.8.0"
@@ -16525,15 +16525,18 @@ var SIG_EXIF = str2arr('Exif\0\0');
module.exports = function (data) {
if (data.length < 2) return;
- // first marker of the file MUST be 0xFFD8
- if (data[0] !== 0xFF || data[1] !== 0xD8) return;
+ // first marker of the file MUST be 0xFFD8,
+ // following by either 0xFFE0, 0xFFE2 or 0xFFE3
+ if (data[0] !== 0xFF || data[1] !== 0xD8 || data[2] !== 0xFF) return;
var offset = 2;
for (;;) {
- if (data.length - offset < 2) return;
- // not a JPEG marker
- if (data[offset++] !== 0xFF) return;
+ // skip until we see 0xFF, see https://github.com/nodeca/probe-image-size/issues/68
+ for (;;) {
+ if (data.length - offset < 2) return;
+ if (data[offset++] === 0xFF) break;
+ }
var code = data[offset++];
var length;
@@ -30723,13 +30726,11 @@ var overrideAll = _dereq_('../../plot_api/edit_types').overrideAll;
module.exports = overrideAll({
-// TODO: only right is supported currently
-// orient: {
-// valType: 'enumerated',
-// values: ['left', 'right', 'top', 'bottom'],
-// dflt: 'right',
-//
-// },
+ orientation: {
+ valType: 'enumerated',
+ values: ['h', 'v'],
+ dflt: 'v',
+ },
thicknessmode: {
valType: 'enumerated',
values: ['fraction', 'pixels'],
@@ -30752,14 +30753,12 @@ module.exports = overrideAll({
},
x: {
valType: 'number',
- dflt: 1.02,
min: -2,
max: 3,
},
xanchor: {
valType: 'enumerated',
values: ['left', 'center', 'right'],
- dflt: 'left',
},
xpad: {
valType: 'number',
@@ -30768,14 +30767,12 @@ module.exports = overrideAll({
},
y: {
valType: 'number',
- dflt: 0.5,
min: -2,
max: 3,
},
yanchor: {
valType: 'enumerated',
values: ['top', 'middle', 'bottom'],
- dflt: 'middle',
},
ypad: {
valType: 'number',
@@ -30807,15 +30804,21 @@ module.exports = overrideAll({
ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}),
ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, {
}),
+
+ // ticklabelposition: not used directly, as values depend on orientation
+ // left/right options are for x axes, and top/bottom options are for y axes
ticklabelposition: {
valType: 'enumerated',
values: [
'outside', 'inside',
'outside top', 'inside top',
+ 'outside left', 'inside left',
+ 'outside right', 'inside right',
'outside bottom', 'inside bottom'
],
dflt: 'outside',
},
+
ticklen: axesAttrs.ticklen,
tickwidth: axesAttrs.tickwidth,
tickcolor: axesAttrs.tickcolor,
@@ -30842,7 +30845,6 @@ module.exports = overrideAll({
side: {
valType: 'enumerated',
values: ['right', 'top', 'bottom'],
- dflt: 'top',
}
},
@@ -30901,23 +30903,30 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) {
return Lib.coerce(colorbarIn, colorbarOut, attributes, attr, dflt);
}
+ var margin = layout.margin || {t: 0, b: 0, l: 0, r: 0};
+ var w = layout.width - margin.l - margin.r;
+ var h = layout.height - margin.t - margin.b;
+
+ var orientation = coerce('orientation');
+ var isVertical = orientation === 'v';
+
var thicknessmode = coerce('thicknessmode');
coerce('thickness', (thicknessmode === 'fraction') ?
- 30 / (layout.width - layout.margin.l - layout.margin.r) :
+ 30 / (isVertical ? w : h) :
30
);
var lenmode = coerce('lenmode');
coerce('len', (lenmode === 'fraction') ?
1 :
- layout.height - layout.margin.t - layout.margin.b
+ isVertical ? h : w
);
- coerce('x');
- coerce('xanchor');
+ coerce('x', isVertical ? 1.02 : 0.5);
+ coerce('xanchor', isVertical ? 'left' : 'center');
coerce('xpad');
- coerce('y');
- coerce('yanchor');
+ coerce('y', isVertical ? 0.5 : 1.02);
+ coerce('yanchor', isVertical ? 'middle' : 'bottom');
coerce('ypad');
Lib.noneOrAll(colorbarIn, colorbarOut, ['x', 'y']);
@@ -30927,7 +30936,22 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) {
coerce('borderwidth');
coerce('bgcolor');
- var ticklabelposition = coerce('ticklabelposition');
+ var ticklabelposition = Lib.coerce(colorbarIn, colorbarOut, {
+ ticklabelposition: {
+ valType: 'enumerated',
+ dflt: 'outside',
+ values: isVertical ? [
+ 'outside', 'inside',
+ 'outside top', 'inside top',
+ 'outside bottom', 'inside bottom'
+ ] : [
+ 'outside', 'inside',
+ 'outside left', 'inside left',
+ 'outside right', 'inside right'
+ ]
+ }
+ }, 'ticklabelposition');
+
coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : 'hide past div');
handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear');
@@ -30949,7 +30973,7 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) {
size: Lib.bigFont(tickFont.size)
});
Lib.coerceFont(coerce, 'title.font', dfltTitleFont);
- coerce('title.side');
+ coerce('title.side', isVertical ? 'top' : 'right');
};
},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/cartesian/prefix_suffix_defaults":353,"../../plots/cartesian/tick_label_defaults":358,"../../plots/cartesian/tick_mark_defaults":359,"../../plots/cartesian/tick_value_defaults":360,"./attributes":158}],161:[function(_dereq_,module,exports){
@@ -31122,18 +31146,20 @@ function makeColorBarData(gd) {
}
function drawColorBar(g, opts, gd) {
+ var isVertical = opts.orientation === 'v';
var len = opts.len;
var lenmode = opts.lenmode;
var thickness = opts.thickness;
var thicknessmode = opts.thicknessmode;
var outlinewidth = opts.outlinewidth;
var borderwidth = opts.borderwidth;
+ var bgcolor = opts.bgcolor;
var xanchor = opts.xanchor;
var yanchor = opts.yanchor;
var xpad = opts.xpad;
var ypad = opts.ypad;
var optsX = opts.x;
- var optsY = opts.y;
+ var optsY = isVertical ? opts.y : 1 - opts.y;
var fullLayout = gd._fullLayout;
var gs = fullLayout._size;
@@ -31164,23 +31190,35 @@ function drawColorBar(g, opts, gd) {
// when the colorbar itself is pushing the margins.
// but then the fractional size is calculated based on the
// actual graph size, so that the axes will size correctly.
- var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? gs.w : 1));
- var thickFrac = thickPx / gs.w;
- var lenPx = Math.round(len * (lenmode === 'fraction' ? gs.h : 1));
- var lenFrac = lenPx / gs.h;
- var xpadFrac = xpad / gs.w;
- var yExtraPx = (borderwidth + outlinewidth) / 2;
- var ypadFrac = ypad / gs.h;
+ var thickPx = Math.round(thickness * (thicknessmode === 'fraction' ? (isVertical ? gs.w : gs.h) : 1));
+ var thickFrac = thickPx / (isVertical ? gs.w : gs.h);
+ var lenPx = Math.round(len * (lenmode === 'fraction' ? (isVertical ? gs.h : gs.w) : 1));
+ var lenFrac = lenPx / (isVertical ? gs.h : gs.w);
// x positioning: do it initially just for left anchor,
// then fix at the end (since we don't know the width yet)
- var uPx = Math.round(optsX * gs.w + xpad);
- // for dragging... this is getting a little muddled...
- var uFrac = optsX - thickFrac * ({center: 0.5, right: 1}[xanchor] || 0);
+ var uPx = Math.round(isVertical ?
+ optsX * gs.w + xpad :
+ optsY * gs.h + ypad
+ );
- // y positioning we can do correctly from the start
- var vFrac = optsY + lenFrac * (({top: -0.5, bottom: 0.5}[yanchor] || 0) - 0.5);
- var vPx = Math.round(gs.h * (1 - vFrac));
+ var xRatio = {center: 0.5, right: 1}[xanchor] || 0;
+ var yRatio = {top: 1, middle: 0.5}[yanchor] || 0;
+
+ // for dragging... this is getting a little muddled...
+ var uFrac = isVertical ?
+ optsX - xRatio * thickFrac :
+ optsY - yRatio * thickFrac;
+
+ // y/x positioning (for v/h) we can do correctly from the start
+ var vFrac = isVertical ?
+ optsY - yRatio * lenFrac :
+ optsX - xRatio * lenFrac;
+
+ var vPx = Math.round(isVertical ?
+ gs.h * (1 - vFrac) :
+ gs.w * vFrac
+ );
// stash a few things for makeEditable
opts._lenFrac = lenFrac;
@@ -31193,12 +31231,23 @@ function drawColorBar(g, opts, gd) {
// position can't go in through supplyDefaults
// because that restricts it to [0,1]
- ax.position = optsX + xpadFrac + thickFrac;
+ ax.position = thickFrac + (isVertical ?
+ optsX + xpad / gs.w :
+ optsY + ypad / gs.h
+ );
- if(['top', 'bottom'].indexOf(titleSide) !== -1) {
+ var topOrBottom = ['top', 'bottom'].indexOf(titleSide) !== -1;
+
+ if(isVertical && topOrBottom) {
ax.title.side = titleSide;
- ax.titlex = optsX + xpadFrac;
- ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypadFrac : ypadFrac);
+ ax.titlex = optsX + xpad / gs.w;
+ ax.titley = vFrac + (title.side === 'top' ? lenFrac - ypad / gs.h : ypad / gs.h);
+ }
+
+ if(!isVertical && !topOrBottom) {
+ ax.title.side = titleSide;
+ ax.titley = optsY + ypad / gs.h;
+ ax.titlex = vFrac + xpad / gs.w; // right side
}
if(line.color && opts.tickmode === 'auto') {
@@ -31223,9 +31272,12 @@ function drawColorBar(g, opts, gd) {
// set domain after init, because we may want to
// allow it outside [0,1]
- ax.domain = [
- vFrac + ypadFrac,
- vFrac + lenFrac - ypadFrac
+ ax.domain = isVertical ? [
+ vFrac + ypad / gs.h,
+ vFrac + lenFrac - ypad / gs.h
+ ] : [
+ vFrac + xpad / gs.w,
+ vFrac + lenFrac - xpad / gs.w
];
ax.setScale();
@@ -31235,9 +31287,13 @@ function drawColorBar(g, opts, gd) {
var titleCont = g.select('.' + cn.cbtitleunshift)
.attr('transform', strTranslate(-Math.round(gs.l), -Math.round(gs.t)));
+ var ticklabelposition = ax.ticklabelposition;
+ var titleFontSize = ax.title.font.size;
+
var axLayer = g.select('.' + cn.cbaxis);
var titleEl;
var titleHeight = 0;
+ var titleWidth = 0;
function drawTitle(titleClass, titleOpts) {
var dfltTitleOpts = {
@@ -31262,54 +31318,98 @@ function drawColorBar(g, opts, gd) {
}
function drawDummyTitle() {
- if(['top', 'bottom'].indexOf(titleSide) !== -1) {
- // draw the title so we know how much room it needs
- // when we squish the axis. This one only applies to
- // top or bottom titles, not right side.
- var x = gs.l + (optsX + xpadFrac) * gs.w;
- var fontSize = ax.title.font.size;
- var y;
+ // draw the title so we know how much room it needs
+ // when we squish the axis.
+ // On vertical colorbars this only applies to top or bottom titles, not right side.
+ // On horizontal colorbars this only applies to right, etc.
+
+ if(
+ (isVertical && topOrBottom) ||
+ (!isVertical && !topOrBottom)
+ ) {
+ var x, y;
if(titleSide === 'top') {
- y = (1 - (vFrac + lenFrac - ypadFrac)) * gs.h +
- gs.t + 3 + fontSize * 0.75;
- } else {
- y = (1 - (vFrac + ypadFrac)) * gs.h +
- gs.t - 3 - fontSize * 0.25;
+ x = xpad + gs.l + gs.w * optsX;
+ y = ypad + gs.t + gs.h * (1 - vFrac - lenFrac) + 3 + titleFontSize * 0.75;
}
+
+ if(titleSide === 'bottom') {
+ x = xpad + gs.l + gs.w * optsX;
+ y = ypad + gs.t + gs.h * (1 - vFrac) - 3 - titleFontSize * 0.25;
+ }
+
+ if(titleSide === 'right') {
+ y = ypad + gs.t + gs.h * optsY + 3 + titleFontSize * 0.75;
+ x = xpad + gs.l + gs.w * vFrac;
+ }
+
drawTitle(ax._id + 'title', {
- attributes: {x: x, y: y, 'text-anchor': 'start'}
+ attributes: {x: x, y: y, 'text-anchor': isVertical ? 'start' : 'middle'}
});
}
}
function drawCbTitle() {
- if(['top', 'bottom'].indexOf(titleSide) === -1) {
- var fontSize = ax.title.font.size;
- var y = ax._offset + ax._length / 2;
- var x = gs.l + (ax.position || 0) * gs.w + ((ax.side === 'right') ?
- 10 + fontSize * ((ax.showticklabels ? 1 : 0.5)) :
- -10 - fontSize * ((ax.showticklabels ? 0.5 : 0)));
+ if(
+ (isVertical && !topOrBottom) ||
+ (!isVertical && topOrBottom)
+ ) {
+ var pos = ax.position || 0;
+ var mid = ax._offset + ax._length / 2;
+ var x, y;
- // the 'h' + is a hack to get around the fact that
- // convertToTspans rotates any 'y...' class by 90 degrees.
- // TODO: find a better way to control this.
- drawTitle('h' + ax._id + 'title', {
+ if(titleSide === 'right') {
+ y = mid;
+ x = gs.l + gs.w * pos + 10 + titleFontSize * (
+ ax.showticklabels ? 1 : 0.5
+ );
+ } else {
+ x = mid;
+
+ if(titleSide === 'bottom') {
+ y = gs.t + gs.h * pos + 10 + (
+ ticklabelposition.indexOf('inside') === -1 ?
+ ax.tickfont.size :
+ 0
+ ) + (
+ ax.ticks !== 'intside' ?
+ opts.ticklen || 0 :
+ 0
+ );
+ }
+
+ if(titleSide === 'top') {
+ var nlines = title.text.split('
').length;
+ y = gs.t + gs.h * pos + 10 - thickPx - LINE_SPACING * titleFontSize * nlines;
+ }
+ }
+
+ drawTitle((isVertical ?
+ // the 'h' + is a hack to get around the fact that
+ // convertToTspans rotates any 'y...' class by 90 degrees.
+ // TODO: find a better way to control this.
+ 'h' :
+ 'v'
+ ) + ax._id + 'title', {
avoid: {
selection: d3.select(gd).selectAll('g.' + ax._id + 'tick'),
side: titleSide,
- offsetLeft: gs.l,
- offsetTop: 0,
- maxShift: fullLayout.width
+ offsetTop: isVertical ? 0 : gs.t,
+ offsetLeft: isVertical ? gs.l : 0,
+ maxShift: isVertical ? fullLayout.width : fullLayout.height
},
attributes: {x: x, y: y, 'text-anchor': 'middle'},
- transform: {rotate: '-90', offset: 0}
+ transform: {rotate: isVertical ? -90 : 0, offset: 0}
});
}
}
function drawAxis() {
- if(['top', 'bottom'].indexOf(titleSide) !== -1) {
+ if(
+ (!isVertical && !topOrBottom) ||
+ (isVertical && topOrBottom)
+ ) {
// squish the axis top to make room for the title
var titleGroup = g.select('.' + cn.cbtitle);
var titleText = titleGroup.select('text');
@@ -31321,39 +31421,63 @@ function drawColorBar(g, opts, gd) {
if(titleText.node()) {
lineSize = parseInt(titleText.node().style.fontSize, 10) * LINE_SPACING;
}
+
+ var bb;
if(mathJaxNode) {
- titleHeight = Drawing.bBox(mathJaxNode).height;
+ bb = Drawing.bBox(mathJaxNode);
+ titleWidth = bb.width;
+ titleHeight = bb.height;
if(titleHeight > lineSize) {
// not entirely sure how mathjax is doing
// vertical alignment, but this seems to work.
titleTrans[1] -= (titleHeight - lineSize) / 2;
}
} else if(titleText.node() && !titleText.classed(cn.jsPlaceholder)) {
- titleHeight = Drawing.bBox(titleText.node()).height;
+ bb = Drawing.bBox(titleText.node());
+ titleWidth = bb.width;
+ titleHeight = bb.height;
}
- if(titleHeight) {
- // buffer btwn colorbar and title
- // TODO: configurable
- titleHeight += 5;
- if(titleSide === 'top') {
- ax.domain[1] -= titleHeight / gs.h;
- titleTrans[1] *= -1;
- } else {
- ax.domain[0] += titleHeight / gs.h;
- var nlines = svgTextUtils.lineCount(titleText);
- titleTrans[1] += (1 - nlines) * lineSize;
+ if(isVertical) {
+ if(titleHeight) {
+ // buffer btwn colorbar and title
+ // TODO: configurable
+ titleHeight += 5;
+
+ if(titleSide === 'top') {
+ ax.domain[1] -= titleHeight / gs.h;
+ titleTrans[1] *= -1;
+ } else {
+ ax.domain[0] += titleHeight / gs.h;
+ var nlines = svgTextUtils.lineCount(titleText);
+ titleTrans[1] += (1 - nlines) * lineSize;
+ }
+
+ titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));
+ ax.setScale();
}
+ } else { // horizontal colorbars
+ if(titleWidth) {
+ if(titleSide === 'right') {
+ ax.domain[0] += (titleWidth + titleFontSize / 2) / gs.w;
+ }
- titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));
- ax.setScale();
+ titleGroup.attr('transform', strTranslate(titleTrans[0], titleTrans[1]));
+ ax.setScale();
+ }
}
}
g.selectAll('.' + cn.cbfills + ',.' + cn.cblines)
- .attr('transform', strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))));
+ .attr('transform', isVertical ?
+ strTranslate(0, Math.round(gs.h * (1 - ax.domain[1]))) :
+ strTranslate(Math.round(gs.w * ax.domain[0]), 0)
+ );
- axLayer.attr('transform', strTranslate(0, Math.round(-gs.t)));
+ axLayer.attr('transform', isVertical ?
+ strTranslate(0, Math.round(-gs.t)) :
+ strTranslate(Math.round(-gs.l), 0)
+ );
var fills = g.select('.' + cn.cbfills)
.selectAll('rect.' + cn.cbfill)
@@ -31379,20 +31503,22 @@ function drawColorBar(g, opts, gd) {
// offset the side adjoining the next rectangle so they
// overlap, to prevent antialiasing gaps
- z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]);
-
+ if(isVertical) {
+ z[1] = Lib.constrain(z[1] + (z[1] > z[0]) ? 1 : -1, zBounds[0], zBounds[1]);
+ } /* else {
+ // TODO: horizontal case
+ } */
// Colorbar cannot currently support opacities so we
// use an opaque fill even when alpha channels present
- var fillEl = d3.select(this).attr({
- x: uPx,
- width: Math.max(thickPx, 2),
- y: d3.min(z),
- height: Math.max(d3.max(z) - d3.min(z), 2),
- });
+ var fillEl = d3.select(this)
+ .attr(isVertical ? 'x' : 'y', uPx)
+ .attr(isVertical ? 'y' : 'x', d3.min(z))
+ .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2))
+ .attr(isVertical ? 'height' : 'width', Math.max(d3.max(z) - d3.min(z), 2));
if(opts._fillgradient) {
- Drawing.gradient(fillEl, gd, opts._id, 'vertical', opts._fillgradient, 'fill');
+ Drawing.gradient(fillEl, gd, opts._id, isVertical ? 'vertical' : 'horizontalreversed', opts._fillgradient, 'fill');
} else {
// tinycolor can't handle exponents and
// at this scale, removing it makes no difference.
@@ -31408,9 +31534,15 @@ function drawColorBar(g, opts, gd) {
.classed(cn.cbline, true);
lines.exit().remove();
lines.each(function(d) {
+ var a = uPx;
+ var b = (Math.round(ax.c2p(d)) + (line.width / 2) % 1);
+
d3.select(this)
- .attr('d', 'M' + uPx + ',' +
- (Math.round(ax.c2p(d)) + (line.width / 2) % 1) + 'h' + thickPx)
+ .attr('d', 'M' +
+ (isVertical ? a + ',' + b : b + ',' + a) +
+ (isVertical ? 'h' : 'v') +
+ thickPx
+ )
.call(Drawing.lineGroupStyle, line.width, lineColormap(d), line.dash);
});
@@ -31443,82 +31575,211 @@ function drawColorBar(g, opts, gd) {
// TODO: why are we redrawing multiple times now with this?
// I guess autoMargin doesn't like being post-promise?
function positionCB() {
+ var bb;
var innerThickness = thickPx + outlinewidth / 2;
- if(ax.ticklabelposition.indexOf('inside') === -1) {
- innerThickness += Drawing.bBox(axLayer.node()).width;
+ if(ticklabelposition.indexOf('inside') === -1) {
+ bb = Drawing.bBox(axLayer.node());
+ innerThickness += isVertical ? bb.width : bb.height;
}
titleEl = titleCont.select('text');
+ var titleWidth = 0;
+
+ var topSideVertical = isVertical && titleSide === 'top';
+ var rightSideHorizontal = !isVertical && titleSide === 'right';
+
+ var moveY = 0;
+
if(titleEl.node() && !titleEl.classed(cn.jsPlaceholder)) {
+ var _titleHeight;
+
var mathJaxNode = titleCont.select('.h' + ax._id + 'title-math-group').node();
- var titleWidth;
- if(mathJaxNode && ['top', 'bottom'].indexOf(titleSide) !== -1) {
- titleWidth = Drawing.bBox(mathJaxNode).width;
+ if(mathJaxNode && (
+ (isVertical && topOrBottom) ||
+ (!isVertical && !topOrBottom)
+ )) {
+ bb = Drawing.bBox(mathJaxNode);
+ titleWidth = bb.width;
+ _titleHeight = bb.height;
} else {
// note: the formula below works for all title sides,
// (except for top/bottom mathjax, above)
// but the weird gs.l is because the titleunshift
// transform gets removed by Drawing.bBox
- titleWidth = Drawing.bBox(titleCont.node()).right - uPx - gs.l;
+ bb = Drawing.bBox(titleCont.node());
+ titleWidth = bb.right - gs.l - (isVertical ? uPx : vPx);
+ _titleHeight = bb.bottom - gs.t - (isVertical ? vPx : uPx);
+
+ if(
+ !isVertical && titleSide === 'top'
+ ) {
+ innerThickness += bb.height;
+ moveY = bb.height;
+ }
}
- innerThickness = Math.max(innerThickness, titleWidth);
+
+ if(rightSideHorizontal) {
+ titleEl.attr('transform', strTranslate(titleWidth / 2 + titleFontSize / 2, 0));
+
+ titleWidth *= 2;
+ }
+
+ innerThickness = Math.max(innerThickness,
+ isVertical ? titleWidth : _titleHeight
+ );
}
- var outerThickness = 2 * xpad + innerThickness + borderwidth + outlinewidth / 2;
+ var outerThickness = (isVertical ?
+ xpad :
+ ypad
+ ) * 2 + innerThickness + borderwidth + outlinewidth / 2;
- g.select('.' + cn.cbbg).attr({
- x: uPx - xpad - (borderwidth + outlinewidth) / 2,
- y: vPx - lenPx - yExtraPx,
- width: Math.max(outerThickness, 2),
- height: Math.max(lenPx + 2 * yExtraPx, 2)
- })
- .call(Color.fill, opts.bgcolor)
+ var hColorbarMoveTitle = 0;
+ if(!isVertical && title.text && yanchor === 'bottom' && optsY <= 0) {
+ hColorbarMoveTitle = outerThickness / 2;
+
+ outerThickness += hColorbarMoveTitle;
+ moveY += hColorbarMoveTitle;
+ }
+ fullLayout._hColorbarMoveTitle = hColorbarMoveTitle;
+ fullLayout._hColorbarMoveCBTitle = moveY;
+
+ var extraW = borderwidth + outlinewidth;
+
+ g.select('.' + cn.cbbg)
+ .attr('x', (isVertical ? uPx : vPx) - extraW / 2 - (isVertical ? xpad : 0))
+ .attr('y', (isVertical ? vPx : uPx) - (isVertical ? lenPx : ypad + moveY - hColorbarMoveTitle))
+ .attr(isVertical ? 'width' : 'height', Math.max(outerThickness - hColorbarMoveTitle, 2))
+ .attr(isVertical ? 'height' : 'width', Math.max(lenPx + extraW, 2))
+ .call(Color.fill, bgcolor)
.call(Color.stroke, opts.bordercolor)
.style('stroke-width', borderwidth);
- g.selectAll('.' + cn.cboutline).attr({
- x: uPx,
- y: vPx - lenPx + ypad + (titleSide === 'top' ? titleHeight : 0),
- width: Math.max(thickPx, 2),
- height: Math.max(lenPx - 2 * ypad - titleHeight, 2)
- })
+ var moveX = rightSideHorizontal ? Math.max(titleWidth - 10, 0) : 0;
+
+ g.selectAll('.' + cn.cboutline)
+ .attr('x', (isVertical ? uPx : vPx + xpad) + moveX)
+ .attr('y', (isVertical ? vPx + ypad - lenPx : uPx) + (topSideVertical ? titleHeight : 0))
+ .attr(isVertical ? 'width' : 'height', Math.max(thickPx, 2))
+ .attr(isVertical ? 'height' : 'width', Math.max(lenPx - (isVertical ?
+ 2 * ypad + titleHeight :
+ 2 * xpad + moveX
+ ), 2))
.call(Color.stroke, opts.outlinecolor)
.style({
fill: 'none',
'stroke-width': outlinewidth
});
- // fix positioning for xanchor!='left'
- var xoffset = ({center: 0.5, right: 1}[xanchor] || 0) * outerThickness;
- g.attr('transform', strTranslate(gs.l - xoffset, gs.t));
+ g.attr('transform', strTranslate(
+ gs.l - (isVertical ? xRatio * outerThickness : 0),
+ gs.t - (isVertical ? 0 : (1 - yRatio) * outerThickness - moveY)
+ ));
+
+ if(!isVertical && (
+ borderwidth || (
+ tinycolor(bgcolor).getAlpha() &&
+ !tinycolor.equals(fullLayout.paper_bgcolor, bgcolor)
+ )
+ )) {
+ // for horizontal colorbars when there is a border line or having different background color
+ // hide/adjust x positioning for the first/last tick labels if they go outside the border
+ var tickLabels = axLayer.selectAll('text');
+ var numTicks = tickLabels[0].length;
+
+ var border = g.select('.' + cn.cbbg).node();
+ var oBb = Drawing.bBox(border);
+ var oTr = Drawing.getTranslate(g);
+
+ var TEXTPAD = 2;
+
+ tickLabels.each(function(d, i) {
+ var first = 0;
+ var last = numTicks - 1;
+ if(i === first || i === last) {
+ var iBb = Drawing.bBox(this);
+ var iTr = Drawing.getTranslate(this);
+ var deltaX;
+
+ if(i === last) {
+ var iRight = iBb.right + iTr.x;
+ var oRight = oBb.right + oTr.x + vPx - borderwidth - TEXTPAD + optsX;
+
+ deltaX = oRight - iRight;
+ if(deltaX > 0) deltaX = 0;
+ } else if(i === first) {
+ var iLeft = iBb.left + iTr.x;
+ var oLeft = oBb.left + oTr.x + vPx + borderwidth + TEXTPAD;
+
+ deltaX = oLeft - iLeft;
+ if(deltaX < 0) deltaX = 0;
+ }
+
+ if(deltaX) {
+ if(numTicks < 3) { // adjust position
+ this.setAttribute('transform',
+ 'translate(' + deltaX + ',0) ' +
+ this.getAttribute('transform')
+ );
+ } else { // hide
+ this.setAttribute('visibility', 'hidden');
+ }
+ }
+ }
+ });
+ }
// auto margin adjustment
var marginOpts = {};
- var tFrac = FROM_TL[yanchor];
- var bFrac = FROM_BR[yanchor];
- if(lenmode === 'pixels') {
- marginOpts.y = optsY;
- marginOpts.t = lenPx * tFrac;
- marginOpts.b = lenPx * bFrac;
- } else {
- marginOpts.t = marginOpts.b = 0;
- marginOpts.yt = optsY + len * tFrac;
- marginOpts.yb = optsY - len * bFrac;
- }
-
var lFrac = FROM_TL[xanchor];
var rFrac = FROM_BR[xanchor];
- if(thicknessmode === 'pixels') {
- marginOpts.x = optsX;
- marginOpts.l = outerThickness * lFrac;
- marginOpts.r = outerThickness * rFrac;
- } else {
- var extraThickness = outerThickness - thickPx;
- marginOpts.l = extraThickness * lFrac;
- marginOpts.r = extraThickness * rFrac;
- marginOpts.xl = optsX - thickness * lFrac;
- marginOpts.xr = optsX + thickness * rFrac;
+ var tFrac = FROM_TL[yanchor];
+ var bFrac = FROM_BR[yanchor];
+
+ var extraThickness = outerThickness - thickPx;
+ if(isVertical) {
+ if(lenmode === 'pixels') {
+ marginOpts.y = optsY;
+ marginOpts.t = lenPx * tFrac;
+ marginOpts.b = lenPx * bFrac;
+ } else {
+ marginOpts.t = marginOpts.b = 0;
+ marginOpts.yt = optsY + len * tFrac;
+ marginOpts.yb = optsY - len * bFrac;
+ }
+
+ if(thicknessmode === 'pixels') {
+ marginOpts.x = optsX;
+ marginOpts.l = outerThickness * lFrac;
+ marginOpts.r = outerThickness * rFrac;
+ } else {
+ marginOpts.l = extraThickness * lFrac;
+ marginOpts.r = extraThickness * rFrac;
+ marginOpts.xl = optsX - thickness * lFrac;
+ marginOpts.xr = optsX + thickness * rFrac;
+ }
+ } else { // horizontal colorbars
+ if(lenmode === 'pixels') {
+ marginOpts.x = optsX;
+ marginOpts.l = lenPx * lFrac;
+ marginOpts.r = lenPx * rFrac;
+ } else {
+ marginOpts.l = marginOpts.r = 0;
+ marginOpts.xl = optsX + len * lFrac;
+ marginOpts.xr = optsX - len * rFrac;
+ }
+
+ if(thicknessmode === 'pixels') {
+ marginOpts.y = 1 - optsY;
+ marginOpts.t = outerThickness * tFrac;
+ marginOpts.b = outerThickness * bFrac;
+ } else {
+ marginOpts.t = extraThickness * tFrac;
+ marginOpts.b = extraThickness * bFrac;
+ marginOpts.yt = optsY - thickness * tFrac;
+ marginOpts.yb = optsY + thickness * bFrac;
+ }
}
Plots.autoMargin(gd, opts._id, marginOpts);
@@ -31535,6 +31796,7 @@ function drawColorBar(g, opts, gd) {
}
function makeEditable(g, opts, gd) {
+ var isVertical = opts.orientation === 'v';
var fullLayout = gd._fullLayout;
var gs = fullLayout._size;
var t0, xf, yf;
@@ -31549,9 +31811,13 @@ function makeEditable(g, opts, gd) {
moveFn: function(dx, dy) {
g.attr('transform', t0 + strTranslate(dx, dy));
- xf = dragElement.align(opts._uFrac + (dx / gs.w), opts._thickFrac,
+ xf = dragElement.align(
+ (isVertical ? opts._uFrac : opts._vFrac) + (dx / gs.w),
+ isVertical ? opts._thickFrac : opts._lenFrac,
0, 1, opts.xanchor);
- yf = dragElement.align(opts._vFrac - (dy / gs.h), opts._lenFrac,
+ yf = dragElement.align(
+ (isVertical ? opts._vFrac : (1 - opts._uFrac)) - (dy / gs.h),
+ isVertical ? opts._lenFrac : opts._thickFrac,
0, 1, opts.yanchor);
var csr = dragElement.getCursor(xf, yf, opts.xanchor, opts.yanchor);
@@ -31628,6 +31894,8 @@ function calcLevels(gd, opts, zrange) {
function mockColorBarAxis(gd, opts, zrange) {
var fullLayout = gd._fullLayout;
+ var isVertical = opts.orientation === 'v';
+
var cbAxisIn = {
type: 'linear',
range: zrange,
@@ -31658,17 +31926,19 @@ function mockColorBarAxis(gd, opts, zrange) {
title: opts.title,
showline: true,
anchor: 'free',
- side: 'right',
+ side: isVertical ? 'right' : 'bottom',
position: 1
};
+ var letter = isVertical ? 'y' : 'x';
+
var cbAxisOut = {
type: 'linear',
- _id: 'y' + opts._id
+ _id: letter + opts._id
};
var axisOptions = {
- letter: 'y',
+ letter: letter,
font: fullLayout.font,
noHover: true,
noTickson: true,
@@ -34130,7 +34400,7 @@ var TEXTOFFSETSIGN = {
start: 1, end: -1, middle: 0, bottom: 1, top: -1
};
-function textPointPosition(s, textPosition, fontSize, markerRadius) {
+function textPointPosition(s, textPosition, fontSize, markerRadius, dontTouchParent) {
var group = d3.select(s.node().parentNode);
var v = textPosition.indexOf('top') !== -1 ?
@@ -34152,7 +34422,9 @@ function textPointPosition(s, textPosition, fontSize, markerRadius) {
// fix the overall text group position
s.attr('text-anchor', h);
- group.attr('transform', strTranslate(dx, dy));
+ if(!dontTouchParent) {
+ group.attr('transform', strTranslate(dx, dy));
+ }
}
function extracTextFontSize(d, trace) {
@@ -34222,7 +34494,8 @@ drawing.selectedTextStyle = function(s, trace) {
var fontSize = extracTextFontSize(d, trace);
Color.fill(tx, tc);
- textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc);
+ var dontTouchParent = Registry.traceIs(trace, 'bar-like');
+ textPointPosition(tx, tp, fontSize, d.mrc2 || d.mrc, dontTouchParent);
});
};
@@ -34644,7 +34917,7 @@ drawing.setTextPointsScale = function(selection, xScale, yScale) {
});
};
-},{"../../components/fx/helpers":193,"../../constants/alignment":262,"../../constants/interactions":266,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../registry":378,"../../traces/scatter/make_bubble_size_func":516,"../../traces/scatter/subtypes":524,"../color":157,"../colorscale":169,"./symbol_defs":180,"@plotly/d3":20,"fast-isnumeric":33,"tinycolor2":121}],180:[function(_dereq_,module,exports){
+},{"../../components/fx/helpers":193,"../../constants/alignment":262,"../../constants/interactions":266,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../registry":378,"../../traces/scatter/make_bubble_size_func":517,"../../traces/scatter/subtypes":525,"../color":157,"../colorscale":169,"./symbol_defs":180,"@plotly/d3":20,"fast-isnumeric":33,"tinycolor2":121}],180:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -35743,7 +36016,7 @@ function errorCoords(d, xa, ya) {
return out;
}
-},{"../../traces/scatter/subtypes":524,"../drawing":179,"@plotly/d3":20,"fast-isnumeric":33}],187:[function(_dereq_,module,exports){
+},{"../../traces/scatter/subtypes":525,"../drawing":179,"@plotly/d3":20,"fast-isnumeric":33}],187:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -37278,7 +37551,9 @@ function createHoverText(hoverData, opts) {
orientation: 'v'
}
};
- var mockLayoutOut = {};
+ var mockLayoutOut = {
+ font: font
+ };
legendSupplyDefaults(mockLayoutIn, mockLayoutOut, gd._fullData);
var mockLegend = mockLayoutOut.legend;
@@ -37319,7 +37594,8 @@ function createHoverText(hoverData, opts) {
// Draw unified hover label
mockLegend._inHover = true;
- mockLegend._groupTitleFont = font;
+ mockLegend._groupTitleFont = hoverlabel.grouptitlefont;
+
legendDraw(gd, mockLegend);
// Position the hover
@@ -38321,9 +38597,11 @@ var isUnifiedHover = _dereq_('./helpers').isUnifiedHover;
module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts) {
opts = opts || {};
+ var hasLegend = contOut.legend;
+
function inheritFontAttr(attr) {
if(!opts.font[attr]) {
- opts.font[attr] = contOut.legend ? contOut.legend.font[attr] : contOut.font[attr];
+ opts.font[attr] = hasLegend ? contOut.legend.font[attr] : contOut.font[attr];
}
}
@@ -38334,7 +38612,7 @@ module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts
inheritFontAttr('family');
inheritFontAttr('color');
- if(contOut.legend) {
+ if(hasLegend) {
if(!opts.bgcolor) opts.bgcolor = Color.combine(contOut.legend.bgcolor, contOut.paper_bgcolor);
if(!opts.bordercolor) opts.bordercolor = contOut.legend.bordercolor;
} else {
@@ -38443,11 +38721,13 @@ function castHoverinfo(trace, fullLayout, ptNumber) {
var constants = _dereq_('./constants');
-var fontAttrs = _dereq_('../../plots/font_attributes')({
+var fontAttrs = _dereq_('../../plots/font_attributes');
+
+var font = fontAttrs({
editType: 'none',
});
-fontAttrs.family.dflt = constants.HOVERFONT;
-fontAttrs.size.dflt = constants.HOVERFONTSIZE;
+font.family.dflt = constants.HOVERFONT;
+font.size.dflt = constants.HOVERFONTSIZE;
module.exports = {
clickmode: {
@@ -38503,7 +38783,10 @@ module.exports = {
valType: 'color',
editType: 'none',
},
- font: fontAttrs,
+ font: font,
+ grouptitlefont: fontAttrs({
+ editType: 'none',
+ }),
align: {
valType: 'enumerated',
values: ['left', 'right', 'auto'],
@@ -38516,6 +38799,7 @@ module.exports = {
dflt: 15,
editType: 'none',
},
+
editType: 'none'
},
selectdirection: {
@@ -38563,6 +38847,8 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {
}
handleHoverLabelDefaults(layoutIn, layoutOut, coerce);
+
+ Lib.coerceFont(coerce, 'hoverlabel.grouptitlefont', layoutOut.hoverlabel.font);
};
},{"../../lib":287,"./hoverlabel_defaults":195,"./hovermode_defaults":196,"./layout_attributes":198}],200:[function(_dereq_,module,exports){
@@ -39446,6 +39732,9 @@ module.exports = {
font: fontAttrs({
editType: 'legend',
}),
+ grouptitlefont: fontAttrs({
+ editType: 'legend',
+ }),
orientation: {
valType: 'enumerated',
values: ['v', 'h'],
@@ -39569,6 +39858,7 @@ var Registry = _dereq_('../../registry');
var Lib = _dereq_('../../lib');
var Template = _dereq_('../../plot_api/plot_template');
+var plotsAttrs = _dereq_('../../plots/attributes');
var attributes = _dereq_('./attributes');
var basePlotLayoutAttributes = _dereq_('../../plots/layout_attributes');
var helpers = _dereq_('./helpers');
@@ -39576,13 +39866,30 @@ var helpers = _dereq_('./helpers');
module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
var containerIn = layoutIn.legend || {};
+ var containerOut = Template.newContainer(layoutOut, 'legend');
+
+ function coerce(attr, dflt) {
+ return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);
+ }
+
+ var trace;
+ var traceCoerce = function(attr, dflt) {
+ var traceIn = trace._input;
+ var traceOut = trace;
+ return Lib.coerce(traceIn, traceOut, plotsAttrs, attr, dflt);
+ };
+
+ var globalFont = layoutOut.font || {};
+ var grouptitlefont = Lib.coerceFont(coerce, 'grouptitlefont', Lib.extendFlat({}, globalFont, {
+ size: Math.round(globalFont.size * 1.1)
+ }));
var legendTraceCount = 0;
var legendReallyHasATrace = false;
var defaultOrder = 'normal';
for(var i = 0; i < fullData.length; i++) {
- var trace = fullData[i];
+ trace = fullData[i];
if(!trace.visible) continue;
@@ -39609,6 +39916,8 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
legendTraceCount++;
}
}
+
+ Lib.coerceFont(traceCoerce, 'legendgrouptitle.font', grouptitlefont);
}
if((Registry.traceIs(trace, 'bar') && layoutOut.barmode === 'stack') ||
@@ -39627,14 +39936,11 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
basePlotLayoutAttributes, 'showlegend',
legendReallyHasATrace && legendTraceCount > 1);
+ // delete legend
+ if(showLegend === false) layoutOut.legend = undefined;
+
if(showLegend === false && !containerIn.uirevision) return;
- var containerOut = Template.newContainer(layoutOut, 'legend');
-
- function coerce(attr, dflt) {
- return Lib.coerce(containerIn, containerOut, attributes, attr, dflt);
- }
-
coerce('uirevision', layoutOut.uirevision);
if(showLegend === false) return;
@@ -39695,7 +40001,7 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) {
}
};
-},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/layout_attributes":369,"../../registry":378,"./attributes":207,"./helpers":213}],210:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plot_api/plot_template":323,"../../plots/attributes":330,"../../plots/layout_attributes":369,"../../registry":378,"./attributes":207,"./helpers":213}],210:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -41668,7 +41974,7 @@ function dimAttr(v, dflt, max) {
return v;
}
-},{"../../lib":287,"../../registry":378,"../../traces/pie/helpers":491,"../../traces/pie/style_one":497,"../../traces/scatter/subtypes":524,"../color":157,"../colorscale/helpers":168,"../drawing":179,"./constants":208,"@plotly/d3":20}],216:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378,"../../traces/pie/helpers":492,"../../traces/pie/style_one":498,"../../traces/scatter/subtypes":525,"../color":157,"../colorscale/helpers":168,"../drawing":179,"./constants":208,"@plotly/d3":20}],216:[function(_dereq_,module,exports){
'use strict';
var constants = _dereq_('./constants');
@@ -42902,7 +43208,7 @@ function fillCustomButton(customButtons) {
return customButtons;
}
-},{"../../plots/cartesian/axis_ids":338,"../../registry":378,"../../traces/scatter/subtypes":524,"../fx/helpers":193,"./buttons":217,"./constants":218,"./modebar":222}],222:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axis_ids":338,"../../registry":378,"../../traces/scatter/subtypes":525,"../fx/helpers":193,"./buttons":217,"./constants":218,"./modebar":222}],222:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -44831,7 +45137,7 @@ module.exports = templatedArray('shape', {
editType: 'arraydraw'
});
-},{"../../constants/axis_placeable_objects":263,"../../lib/extend":281,"../../plot_api/plot_template":323,"../../traces/scatter/attributes":499,"../annotations/attributes":140,"../drawing/attributes":178}],238:[function(_dereq_,module,exports){
+},{"../../constants/axis_placeable_objects":263,"../../lib/extend":281,"../../plot_api/plot_template":323,"../../traces/scatter/attributes":500,"../annotations/attributes":140,"../drawing/attributes":178}],238:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -48147,8 +48453,10 @@ function draw(gd, titleClass, options) {
var elShouldExist = txt || editable;
+ var hColorbarMoveTitle;
if(!group) {
group = Lib.ensureSingle(fullLayout._infolayer, 'g', 'g-' + titleClass);
+ hColorbarMoveTitle = fullLayout._hColorbarMoveTitle;
}
var el = group.selectAll('text')
@@ -48172,13 +48480,17 @@ function draw(gd, titleClass, options) {
function drawTitle(titleEl) {
var transformVal;
+ if(!transform && hColorbarMoveTitle) {
+ transform = {};
+ }
+
if(transform) {
transformVal = '';
if(transform.rotate) {
transformVal += 'rotate(' + [transform.rotate, attributes.x, attributes.y] + ')';
}
- if(transform.offset) {
- transformVal += strTranslate(0, transform.offset);
+ if(transform.offset || hColorbarMoveTitle) {
+ transformVal += strTranslate(0, (transform.offset || 0) - (hColorbarMoveTitle || 0));
}
} else {
transformVal = null;
@@ -49975,7 +50287,7 @@ exports.Fx = {
exports.Snapshot = _dereq_('./snapshot');
exports.PlotSchema = _dereq_('./plot_api/plot_schema');
-},{"../build/plotcss":1,"./components/annotations":148,"./components/annotations3d":153,"./components/colorbar":163,"./components/colorscale":169,"./components/errorbars":185,"./components/fx":197,"./components/grid":201,"./components/images":206,"./components/legend":214,"./components/modebar":220,"./components/rangeselector":228,"./components/rangeslider":235,"./components/shapes":249,"./components/sliders":254,"./components/updatemenus":260,"./fonts/ploticon":270,"./locale-en":314,"./locale-en-us":313,"./plot_api":318,"./plot_api/plot_schema":322,"./plots/plots":371,"./registry":378,"./snapshot":383,"./traces/scatter":511,"./version":551,"native-promise-only":72}],270:[function(_dereq_,module,exports){
+},{"../build/plotcss":1,"./components/annotations":148,"./components/annotations3d":153,"./components/colorbar":163,"./components/colorscale":169,"./components/errorbars":185,"./components/fx":197,"./components/grid":201,"./components/images":206,"./components/legend":214,"./components/modebar":220,"./components/rangeselector":228,"./components/rangeslider":235,"./components/shapes":249,"./components/sliders":254,"./components/updatemenus":260,"./fonts/ploticon":270,"./locale-en":314,"./locale-en-us":313,"./plot_api":318,"./plot_api/plot_schema":322,"./plots/plots":371,"./registry":378,"./snapshot":383,"./traces/scatter":512,"./version":552,"native-promise-only":72}],270:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -59636,7 +59948,7 @@ function cleanDeprecatedAttributeKeys(aobj) {
if((key === 'title' || oldAxisTitleRegex.test(key) || colorbarRegex.test(key)) &&
(typeof value === 'string' || typeof value === 'number')) {
replace(key, key.replace('title', 'title.text'));
- } else if(key.indexOf('titlefont') > -1) {
+ } else if(key.indexOf('titlefont') > -1 && key.indexOf('grouptitlefont') === -1) {
replace(key, key.replace('titlefont', 'title.font'));
} else if(key.indexOf('titleposition') > -1) {
replace(key, key.replace('titleposition', 'title.position'));
@@ -60313,7 +60625,8 @@ function findUIPattern(key, patternSpecs) {
var spec = patternSpecs[i];
var match = key.match(spec.pattern);
if(match) {
- return {head: match[1], attr: spec.attr};
+ var head = match[1] || '';
+ return {head: head, tail: key.substr(head.length + 1), attr: spec.attr};
}
}
}
@@ -60365,26 +60678,54 @@ function valsMatch(v1, v2) {
function applyUIRevisions(data, layout, oldFullData, oldFullLayout) {
var layoutPreGUI = oldFullLayout._preGUI;
- var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal;
+ var key, revAttr, oldRev, newRev, match, preGUIVal, newNP, newVal, head, tail;
var bothInheritAutorange = [];
+ var newAutorangeIn = {};
var newRangeAccepted = {};
for(key in layoutPreGUI) {
match = findUIPattern(key, layoutUIControlPatterns);
if(match) {
- revAttr = match.attr || (match.head + '.uirevision');
+ head = match.head;
+ tail = match.tail;
+ revAttr = match.attr || (head + '.uirevision');
oldRev = nestedProperty(oldFullLayout, revAttr).get();
newRev = oldRev && getNewRev(revAttr, layout);
+
if(newRev && (newRev === oldRev)) {
preGUIVal = layoutPreGUI[key];
if(preGUIVal === null) preGUIVal = undefined;
newNP = nestedProperty(layout, key);
newVal = newNP.get();
+
if(valsMatch(newVal, preGUIVal)) {
- if(newVal === undefined && key.substr(key.length - 9) === 'autorange') {
- bothInheritAutorange.push(key.substr(0, key.length - 10));
+ if(newVal === undefined && tail === 'autorange') {
+ bothInheritAutorange.push(head);
}
newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get()));
continue;
+ } else if(tail === 'autorange' || tail.substr(0, 6) === 'range[') {
+ // Special case for (auto)range since we push it back into the layout
+ // so all null should be treated equivalently to autorange: true with any range
+ var pre0 = layoutPreGUI[head + '.range[0]'];
+ var pre1 = layoutPreGUI[head + '.range[1]'];
+ var preAuto = layoutPreGUI[head + '.autorange'];
+ if(preAuto || (preAuto === null && pre0 === null && pre1 === null)) {
+ // Only read the input layout once and stash the result,
+ // so we get it before we start modifying it
+ if(!(head in newAutorangeIn)) {
+ var newContainer = nestedProperty(layout, head).get();
+ newAutorangeIn[head] = newContainer && (
+ newContainer.autorange ||
+ (newContainer.autorange !== false && (
+ !newContainer.range || newContainer.range.length !== 2)
+ )
+ );
+ }
+ if(newAutorangeIn[head]) {
+ newNP.set(undefinedToNull(nestedProperty(oldFullLayout, key).get()));
+ continue;
+ }
+ }
}
}
} else {
@@ -60395,12 +60736,12 @@ function applyUIRevisions(data, layout, oldFullData, oldFullLayout) {
// so remove it from _preGUI for next time.
delete layoutPreGUI[key];
- if(key.substr(key.length - 8, 6) === 'range[') {
- newRangeAccepted[key.substr(0, key.length - 9)] = 1;
+ if(match && match.tail.substr(0, 6) === 'range[') {
+ newRangeAccepted[match.head] = 1;
}
}
- // Special logic for `autorange`, since it interacts with `range`:
+ // More special logic for `autorange`, since it interacts with `range`:
// If the new figure's matching `range` was kept, and `autorange`
// wasn't supplied explicitly in either the original or the new figure,
// we shouldn't alter that - but we may just have done that, so fix it.
@@ -64332,7 +64673,7 @@ function toImage(gd, opts) {
module.exports = toImage;
-},{"../lib":287,"../plots/plots":371,"../snapshot/helpers":382,"../snapshot/svgtoimg":384,"../snapshot/tosvg":386,"../version":551,"./plot_api":320,"fast-isnumeric":33}],327:[function(_dereq_,module,exports){
+},{"../lib":287,"../plots/plots":371,"../snapshot/helpers":382,"../snapshot/svgtoimg":384,"../snapshot/tosvg":386,"../version":552,"./plot_api":320,"fast-isnumeric":33}],327:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../lib');
@@ -77475,6 +77816,9 @@ module.exports = function(opts) {
// TODO - that's uber hacky... better solution?
};
+ if(opts.autoSize) attrs.size.dflt = 'auto';
+ if(opts.autoColor) attrs.color.dflt = 'auto';
+
if(opts.arrayOk) {
attrs.family.arrayOk = true;
attrs.size.arrayOk = true;
@@ -77834,6 +78178,7 @@ module.exports = {
valType: 'boolean',
editType: 'legend',
},
+
colorway: {
valType: 'colorlist',
dflt: colorAttrs.defaults,
@@ -79246,13 +79591,7 @@ plots.supplyTraceDefaults = function(traceIn, traceOut, colorIndex, layout, trac
);
coerce('legendgroup');
- var titleText = coerce('legendgrouptitle.text');
- if(titleText) {
- Lib.coerceFont(coerce, 'legendgrouptitle.font', Lib.extendFlat({}, layout.font, {
- size: Math.round(layout.font.size * 1.1) // default to larger font size
- }));
- }
-
+ coerce('legendgrouptitle.text');
coerce('legendrank');
traceOut._dfltShowLegend = true;
@@ -79400,16 +79739,14 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) {
coerce('autotypenumbers');
- var globalFont = Lib.coerceFont(coerce, 'font');
+ var font = Lib.coerceFont(coerce, 'font');
+ var fontSize = font.size;
+
+ Lib.coerceFont(coerce, 'title.font', Lib.extendFlat({}, font, {
+ size: Math.round(fontSize * 1.4)
+ }));
coerce('title.text', layoutOut._dfltTitle.plot);
-
- Lib.coerceFont(coerce, 'title.font', {
- family: globalFont.family,
- size: Math.round(globalFont.size * 1.4),
- color: globalFont.color
- });
-
coerce('title.xref');
coerce('title.yref');
coerce('title.x');
@@ -83977,7 +84314,7 @@ module.exports = {
}
};
-},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":499,"./constants":390}],389:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":500,"./constants":390}],389:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../../plots/cartesian/axes');
@@ -84052,7 +84389,7 @@ module.exports = function calc(gd, trace) {
return cd;
};
-},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../scatter/calc_selection":501,"./arrays_to_calcdata":387}],390:[function(_dereq_,module,exports){
+},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../scatter/calc_selection":502,"./arrays_to_calcdata":387}],390:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -85019,7 +85356,7 @@ module.exports = {
handleText: handleText
};
-},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/constraints":342,"../../registry":378,"../scatter/period_defaults":519,"../scatter/xy_defaults":526,"./attributes":388,"./style_defaults":403}],393:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/constraints":342,"../../registry":378,"../scatter/period_defaults":520,"../scatter/xy_defaults":527,"./attributes":388,"./style_defaults":403}],393:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt, trace) {
@@ -85364,7 +85701,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../scatter/marker_colorbar":517,"./arrays_to_calcdata":387,"./attributes":388,"./calc":389,"./cross_trace_calc":391,"./defaults":392,"./event_data":393,"./hover":395,"./layout_attributes":397,"./layout_defaults":398,"./plot":399,"./select":400,"./style":402}],397:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../scatter/marker_colorbar":518,"./arrays_to_calcdata":387,"./attributes":388,"./calc":389,"./cross_trace_calc":391,"./defaults":392,"./event_data":393,"./hover":395,"./layout_attributes":397,"./layout_defaults":398,"./plot":399,"./select":400,"./style":402}],397:[function(_dereq_,module,exports){
'use strict';
@@ -85879,7 +86216,7 @@ function appendBarText(gd, plotinfo, bar, cd, i, x0, x1, y0, y1, opts, makeOnCom
}
transform.fontSize = font.size;
- recordMinTextSize(trace.type, transform, fullLayout);
+ recordMinTextSize(trace.type === 'histogram' ? 'bar' : trace.type, transform, fullLayout);
calcBar.transform = transform;
transition(textSelection, fullLayout, opts, makeOnCompleteCallback)
@@ -86910,7 +87247,7 @@ module.exports = {
}
};
-},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"../scatter/attributes":499}],406:[function(_dereq_,module,exports){
+},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"../scatter/attributes":500}],406:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -87891,7 +88228,7 @@ module.exports = {
handlePointsDefaults: handlePointsDefaults
};
-},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/axis_autotype":335,"../../registry":378,"../bar/defaults":392,"../scatter/period_defaults":519,"./attributes":405}],409:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287,"../../plots/cartesian/axis_autotype":335,"../../registry":378,"../bar/defaults":392,"../scatter/period_defaults":520,"./attributes":405}],409:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt) {
@@ -88772,6 +89109,10 @@ module.exports = extendFlat({
yhoverformat: axisHoverFormat('y'),
zhoverformat: axisHoverFormat('z', 1),
hovertemplate: heatmapAttrs.hovertemplate,
+ texttemplate: extendFlat({}, heatmapAttrs.texttemplate, {
+ }),
+ textfont: extendFlat({}, heatmapAttrs.textfont, {
+ }),
hoverongaps: heatmapAttrs.hoverongaps,
connectgaps: extendFlat({}, heatmapAttrs.connectgaps, {
}),
@@ -88887,7 +89228,7 @@ module.exports = extendFlat({
})
);
-},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../constants/filter_ops":265,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../heatmap/attributes":439,"../scatter/attributes":499}],418:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../constants/filter_ops":265,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../heatmap/attributes":439,"../scatter/attributes":500}],418:[function(_dereq_,module,exports){
'use strict';
var Colorscale = _dereq_('../../components/colorscale');
@@ -89406,6 +89747,7 @@ var handlePeriodDefaults = _dereq_('../scatter/period_defaults');
var handleConstraintDefaults = _dereq_('./constraint_defaults');
var handleContoursDefaults = _dereq_('./contours_defaults');
var handleStyleDefaults = _dereq_('./style_defaults');
+var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults');
var attributes = _dereq_('./attributes');
@@ -89430,8 +89772,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
coerce('text');
coerce('hovertext');
- coerce('hovertemplate');
coerce('hoverongaps');
+ coerce('hovertemplate');
var isConstraint = (coerce('contours.type') === 'constraint');
coerce('connectgaps', Lib.isArray1D(traceOut.z));
@@ -89442,9 +89784,16 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
handleContoursDefaults(traceIn, traceOut, coerce, coerce2);
handleStyleDefaults(traceIn, traceOut, coerce, layout);
}
+
+ if(
+ traceOut.contours &&
+ traceOut.contours.coloring === 'heatmap'
+ ) {
+ handleHeatmapLabelDefaults(coerce, layout);
+ }
};
-},{"../../lib":287,"../heatmap/xyz_defaults":453,"../scatter/period_defaults":519,"./attributes":417,"./constraint_defaults":422,"./contours_defaults":424,"./style_defaults":438}],427:[function(_dereq_,module,exports){
+},{"../../lib":287,"../heatmap/label_defaults":449,"../heatmap/xyz_defaults":454,"../scatter/period_defaults":520,"./attributes":417,"./constraint_defaults":422,"./contours_defaults":424,"./style_defaults":438}],427:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -90718,7 +91067,7 @@ function makeClipMask(cd0) {
return z;
}
-},{"../../components/colorscale":169,"../../components/drawing":179,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../plots/cartesian/set_convert":356,"../heatmap/plot":450,"./close_boundaries":419,"./constants":421,"./convert_to_constraints":425,"./empty_pathinfo":427,"./find_all_paths":429,"./make_crossings":434,"@plotly/d3":20}],436:[function(_dereq_,module,exports){
+},{"../../components/colorscale":169,"../../components/drawing":179,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../plots/cartesian/set_convert":356,"../heatmap/plot":451,"./close_boundaries":419,"./constants":421,"./convert_to_constraints":425,"./empty_pathinfo":427,"./find_all_paths":429,"./make_crossings":434,"@plotly/d3":20}],436:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../../plots/cartesian/axes');
@@ -90886,7 +91235,7 @@ module.exports = function style(gd) {
heatmapStyle(gd);
};
-},{"../../components/drawing":179,"../heatmap/style":451,"./make_color_map":433,"@plotly/d3":20}],438:[function(_dereq_,module,exports){
+},{"../../components/drawing":179,"../heatmap/style":452,"./make_color_map":433,"@plotly/d3":20}],438:[function(_dereq_,module,exports){
'use strict';
var colorscaleDefaults = _dereq_('../../components/colorscale/defaults');
@@ -90927,8 +91276,10 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, layout,
var scatterAttrs = _dereq_('../scatter/attributes');
var baseAttrs = _dereq_('../../plots/attributes');
+var fontAttrs = _dereq_('../../plots/font_attributes');
var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs;
+var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs;
var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
var extendFlat = _dereq_('../../lib/extend').extendFlat;
@@ -91007,6 +91358,19 @@ module.exports = extendFlat({
zhoverformat: axisHoverFormat('z', 1),
hovertemplate: hovertemplateAttrs(),
+ texttemplate: texttemplateAttrs({
+ arrayOk: false,
+ editType: 'plot'
+ }, {
+ keys: ['x', 'y', 'z', 'text']
+ }),
+ textfont: fontAttrs({
+ editType: 'plot',
+ autoSize: true,
+ autoColor: true,
+ colorEditType: 'style',
+ }),
+
showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false})
}, {
transforms: undefined
@@ -91014,7 +91378,7 @@ module.exports = extendFlat({
colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false})
);
-},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../scatter/attributes":499}],440:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../scatter/attributes":500}],440:[function(_dereq_,module,exports){
'use strict';
var Registry = _dereq_('../../registry');
@@ -91215,7 +91579,7 @@ function dropZonBreaks(x, y, z) {
return newZ;
}
-},{"../../components/colorscale/calc":165,"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../../registry":378,"../histogram2d/calc":468,"./clean_2d_array":441,"./convert_column_xyz":443,"./find_empties":445,"./interp2d":448,"./make_bound_array":449}],441:[function(_dereq_,module,exports){
+},{"../../components/colorscale/calc":165,"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"../../registry":378,"../histogram2d/calc":469,"./clean_2d_array":441,"./convert_column_xyz":443,"./find_empties":445,"./interp2d":448,"./make_bound_array":450}],441:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -91379,6 +91743,7 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name,
var Lib = _dereq_('../../lib');
var handleXYZDefaults = _dereq_('./xyz_defaults');
+var handleHeatmapLabelDefaults = _dereq_('./label_defaults');
var handlePeriodDefaults = _dereq_('../scatter/period_defaults');
var handleStyleDefaults = _dereq_('./style_defaults');
var colorscaleDefaults = _dereq_('../../components/colorscale/defaults');
@@ -91404,6 +91769,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
coerce('hovertext');
coerce('hovertemplate');
+ handleHeatmapLabelDefaults(coerce, layout);
handleStyleDefaults(traceIn, traceOut, coerce, layout);
coerce('hoverongaps');
@@ -91412,7 +91778,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'});
};
-},{"../../components/colorscale/defaults":167,"../../lib":287,"../scatter/period_defaults":519,"./attributes":439,"./style_defaults":452,"./xyz_defaults":453}],445:[function(_dereq_,module,exports){
+},{"../../components/colorscale/defaults":167,"../../lib":287,"../scatter/period_defaults":520,"./attributes":439,"./label_defaults":449,"./style_defaults":453,"./xyz_defaults":454}],445:[function(_dereq_,module,exports){
'use strict';
var maxRowLength = _dereq_('../../lib').maxRowLength;
@@ -91662,7 +92028,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"./attributes":439,"./calc":440,"./colorbar":442,"./defaults":444,"./hover":446,"./plot":450,"./style":451}],448:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"./attributes":439,"./calc":440,"./colorbar":442,"./defaults":444,"./hover":446,"./plot":451,"./style":452}],448:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -91790,6 +92156,21 @@ function iterateInterp2d(z, emptyPoints, overshoot) {
},{"../../lib":287}],449:[function(_dereq_,module,exports){
'use strict';
+var Lib = _dereq_('../../lib');
+
+module.exports = function handleHeatmapLabelDefaults(coerce, layout) {
+ coerce('texttemplate');
+
+ var fontDflt = Lib.extendFlat({}, layout.font, {
+ color: 'auto',
+ size: 'auto'
+ });
+ Lib.coerceFont(coerce, 'textfont', fontDflt);
+};
+
+},{"../../lib":287}],450:[function(_dereq_,module,exports){
+'use strict';
+
var Registry = _dereq_('../../registry');
var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray;
@@ -91867,16 +92248,34 @@ module.exports = function makeBoundArray(trace, arrayIn, v0In, dvIn, numbricks,
return arrayOut;
};
-},{"../../lib":287,"../../registry":378}],450:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378}],451:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
var tinycolor = _dereq_('tinycolor2');
var Registry = _dereq_('../../registry');
+var Drawing = _dereq_('../../components/drawing');
+var Axes = _dereq_('../../plots/cartesian/axes');
var Lib = _dereq_('../../lib');
+var svgTextUtils = _dereq_('../../lib/svg_text_utils');
+var formatLabels = _dereq_('../scatter/format_labels');
+var Color = _dereq_('../../components/color');
+var extractOpts = _dereq_('../../components/colorscale').extractOpts;
var makeColorScaleFuncFromTrace = _dereq_('../../components/colorscale').makeColorScaleFuncFromTrace;
var xmlnsNamespaces = _dereq_('../../constants/xmlns_namespaces');
+var alignmentConstants = _dereq_('../../constants/alignment');
+var LINE_SPACING = alignmentConstants.LINE_SPACING;
+
+var labelClass = 'heatmap-label';
+
+function selectLabels(plotGroup) {
+ return plotGroup.selectAll('g.' + labelClass);
+}
+
+function removeLabels(plotGroup) {
+ selectLabels(plotGroup).remove();
+}
module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
var xa = plotinfo.xaxis;
@@ -91886,6 +92285,8 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
var plotGroup = d3.select(this);
var cd0 = cd[0];
var trace = cd0.trace;
+ var xGap = trace.xgap || 0;
+ var yGap = trace.ygap || 0;
var z = cd0.z;
var x = cd0.x;
@@ -91901,7 +92302,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
var xrev = false;
var yrev = false;
- var left, right, temp, top, bottom, i;
+ var left, right, temp, top, bottom, i, j, k;
// TODO: if there are multiple overlapping categorical heatmaps,
// or if we allow category sorting, then the categories may not be
@@ -91982,6 +92383,8 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
if(isOffScreen) {
var noImage = plotGroup.selectAll('image').data([]);
noImage.exit().remove();
+
+ removeLabels(plotGroup);
return;
}
@@ -92037,7 +92440,7 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
var gcount = 0;
var bcount = 0;
- var xb, j, xi, v, row, c;
+ var xb, xi, v, row, c;
function setColor(v, pixsize) {
if(v !== undefined) {
@@ -92148,8 +92551,6 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
} else { // zsmooth = false -> filling potentially large bricks works fastest with fillRect
// gaps do not need to be exact integers, but if they *are* we will get
// cleaner edges by rounding at least one edge
- var xGap = trace.xgap;
- var yGap = trace.ygap;
var xGapLeft = Math.floor(xGap / 2);
var yGapTop = Math.floor(yGap / 2);
@@ -92202,6 +92603,185 @@ module.exports = function(gd, plotinfo, cdheatmaps, heatmapLayer) {
y: top,
'xlink:href': canvas.toDataURL('image/png')
});
+
+ removeLabels(plotGroup);
+
+ var texttemplate = trace.texttemplate;
+ if(texttemplate) {
+ // dummy axis for formatting the z value
+ var cOpts = extractOpts(trace);
+ var dummyAx = {
+ type: 'linear',
+ range: [cOpts.min, cOpts.max],
+ _separators: xa._separators,
+ _numFormat: xa._numFormat
+ };
+
+ var aHistogram2dContour = trace.type === 'histogram2dcontour';
+ var aContour = trace.type === 'contour';
+ var iStart = aContour ? 1 : 0;
+ var iStop = aContour ? m - 1 : m;
+ var jStart = aContour ? 1 : 0;
+ var jStop = aContour ? n - 1 : n;
+
+ var textData = [];
+ for(i = iStart; i < iStop; i++) {
+ var yVal;
+ if(aContour) {
+ yVal = cd0.y[i];
+ } else if(aHistogram2dContour) {
+ if(i === 0 || i === m - 1) continue;
+ yVal = cd0.y[i];
+ } else if(cd0.yCenter) {
+ yVal = cd0.yCenter[i];
+ } else {
+ if(i + 1 === m && cd0.y[i + 1] === undefined) continue;
+ yVal = (cd0.y[i] + cd0.y[i + 1]) / 2;
+ }
+
+ var _y = Math.round(ya.c2p(yVal));
+ if(0 > _y || _y > ya._length) continue;
+
+ for(j = jStart; j < jStop; j++) {
+ var xVal;
+ if(aContour) {
+ xVal = cd0.x[j];
+ } else if(aHistogram2dContour) {
+ if(j === 0 || j === n - 1) continue;
+ xVal = cd0.x[j];
+ } else if(cd0.xCenter) {
+ xVal = cd0.xCenter[j];
+ } else {
+ if(j + 1 === n && cd0.x[j + 1] === undefined) continue;
+ xVal = (cd0.x[j] + cd0.x[j + 1]) / 2;
+ }
+
+ var _x = Math.round(xa.c2p(xVal));
+ if(0 > _x || _x > xa._length) continue;
+
+ var obj = formatLabels({
+ x: xVal,
+ y: yVal
+ }, trace, gd._fullLayout);
+
+ obj.x = xVal;
+ obj.y = yVal;
+
+ var zVal = cd0.z[i][j];
+ if(zVal === undefined) {
+ obj.z = '';
+ obj.zLabel = '';
+ } else {
+ obj.z = zVal;
+ obj.zLabel = Axes.tickText(dummyAx, zVal, 'hover').text;
+ }
+
+ var theText = cd0.text && cd0.text[i] && cd0.text[i][j];
+ if(theText === undefined || theText === false) theText = '';
+ obj.text = theText;
+
+ var _t = Lib.texttemplateString(texttemplate, obj, gd._fullLayout._d3locale, obj, trace._meta || {});
+ if(!_t) continue;
+
+ var lines = _t.split('
');
+ var nL = lines.length;
+ var nC = 0;
+ for(k = 0; k < nL; k++) {
+ nC = Math.max(nC, lines[k].length);
+ }
+
+ textData.push({
+ l: nL, // number of lines
+ c: nC, // maximum number of chars in a line
+ t: _t, // text
+ x: _x,
+ y: _y,
+ z: zVal
+ });
+ }
+ }
+
+ var font = trace.textfont;
+ var fontFamily = font.family;
+ var fontSize = font.size;
+
+ if(!fontSize || fontSize === 'auto') {
+ var minW = Infinity;
+ var minH = Infinity;
+ var maxL = 0;
+ var maxC = 0;
+
+ for(k = 0; k < textData.length; k++) {
+ var d = textData[k];
+ maxL = Math.max(maxL, d.l);
+ maxC = Math.max(maxC, d.c);
+
+ if(k < textData.length - 1) {
+ var nextD = textData[k + 1];
+ var dx = Math.abs(nextD.x - d.x);
+ var dy = Math.abs(nextD.y - d.y);
+
+ if(dx) minW = Math.min(minW, dx);
+ if(dy) minH = Math.min(minH, dy);
+ }
+ }
+
+ if(
+ !isFinite(minW) ||
+ !isFinite(minH)
+ ) {
+ fontSize = 12;
+ } else {
+ minW -= xGap;
+ minH -= yGap;
+
+ minW /= maxC;
+ minH /= maxL;
+
+ minW /= LINE_SPACING / 2;
+ minH /= LINE_SPACING;
+
+ fontSize = Math.min(
+ Math.floor(minW),
+ Math.floor(minH)
+ );
+ }
+ }
+ if(fontSize <= 0 || !isFinite(fontSize)) return;
+
+ var xFn = function(d) { return d.x; };
+ var yFn = function(d) {
+ return d.y - fontSize * ((d.l * LINE_SPACING) / 2 - 1);
+ };
+
+ var labels = selectLabels(plotGroup).data(textData);
+
+ labels
+ .enter()
+ .append('g')
+ .classed(labelClass, 1)
+ .append('text')
+ .attr('text-anchor', 'middle')
+ .each(function(d) {
+ var thisLabel = d3.select(this);
+
+ var fontColor = font.color;
+ if(!fontColor || fontColor === 'auto') {
+ fontColor = Color.contrast(
+ 'rgba(' +
+ sclFunc(d.z).join() +
+ ')'
+ );
+ }
+
+ thisLabel
+ .attr('data-notex', 1)
+ .call(svgTextUtils.positionText, xFn(d), yFn(d))
+ .call(Drawing.font, fontFamily, fontSize, fontColor)
+ .text(d.t)
+ .call(svgTextUtils.convertToTspans, gd);
+ });
+ }
});
};
@@ -92263,7 +92843,7 @@ function putColor(pixels, pxIndex, c) {
pixels[pxIndex + 3] = Math.round(c[3] * 255);
}
-},{"../../components/colorscale":169,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../registry":378,"@plotly/d3":20,"tinycolor2":121}],451:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../components/colorscale":169,"../../components/drawing":179,"../../constants/alignment":262,"../../constants/xmlns_namespaces":268,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/cartesian/axes":334,"../../registry":378,"../scatter/format_labels":509,"@plotly/d3":20,"tinycolor2":121}],452:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -92275,7 +92855,7 @@ module.exports = function style(gd) {
});
};
-},{"@plotly/d3":20}],452:[function(_dereq_,module,exports){
+},{"@plotly/d3":20}],453:[function(_dereq_,module,exports){
'use strict';
module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) {
@@ -92289,7 +92869,7 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) {
coerce('zhoverformat');
};
-},{}],453:[function(_dereq_,module,exports){
+},{}],454:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -92380,12 +92960,14 @@ function isValidZ(z) {
return (allRowsAreArrays && oneRowIsFilled && hasOneNumber);
}
-},{"../../lib":287,"../../registry":378,"fast-isnumeric":33}],454:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378,"fast-isnumeric":33}],455:[function(_dereq_,module,exports){
'use strict';
var barAttrs = _dereq_('../bar/attributes');
var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs;
+var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs;
+var fontAttrs = _dereq_('../../plots/font_attributes');
var makeBinAttrs = _dereq_('./bin_attributes');
var constants = _dereq_('./constants');
var extendFlat = _dereq_('../../lib/extend').extendFlat;
@@ -92480,6 +93062,41 @@ module.exports = {
keys: constants.eventDataKeys
}),
+ texttemplate: texttemplateAttrs({
+ arrayOk: false,
+ editType: 'plot'
+ }, {
+ keys: ['label', 'value']
+ }),
+
+ textposition: extendFlat({}, barAttrs.textposition, {
+ arrayOk: false
+ }),
+
+ textfont: fontAttrs({
+ arrayOk: false,
+ editType: 'plot',
+ colorEditType: 'style',
+ }),
+
+ outsidetextfont: fontAttrs({
+ arrayOk: false,
+ editType: 'plot',
+ colorEditType: 'style',
+ }),
+
+ insidetextfont: fontAttrs({
+ arrayOk: false,
+ editType: 'plot',
+ colorEditType: 'style',
+ }),
+
+ insidetextanchor: barAttrs.insidetextanchor,
+
+ textangle: barAttrs.textangle,
+ cliponaxis: barAttrs.cliponaxis,
+ constraintext: barAttrs.constraintext,
+
marker: barAttrs.marker,
offsetgroup: barAttrs.offsetgroup,
@@ -92493,7 +93110,7 @@ module.exports = {
}
};
-},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../bar/attributes":388,"./bin_attributes":456,"./constants":460}],455:[function(_dereq_,module,exports){
+},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"../bar/attributes":388,"./bin_attributes":457,"./constants":461}],456:[function(_dereq_,module,exports){
'use strict';
@@ -92509,7 +93126,7 @@ module.exports = function doAvg(size, counts) {
return total;
};
-},{}],456:[function(_dereq_,module,exports){
+},{}],457:[function(_dereq_,module,exports){
'use strict';
module.exports = function makeBinAttrs(axLetter, match) {
@@ -92530,7 +93147,7 @@ module.exports = function makeBinAttrs(axLetter, match) {
};
};
-},{}],457:[function(_dereq_,module,exports){
+},{}],458:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -92595,7 +93212,7 @@ module.exports = {
}
};
-},{"fast-isnumeric":33}],458:[function(_dereq_,module,exports){
+},{"fast-isnumeric":33}],459:[function(_dereq_,module,exports){
'use strict';
var numConstants = _dereq_('../../constants/numerical');
@@ -92762,7 +93379,7 @@ function dateParts(v, pa, calendar) {
return parts;
}
-},{"../../constants/numerical":267,"../../plots/cartesian/axes":334}],459:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../plots/cartesian/axes":334}],460:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -93333,14 +93950,14 @@ module.exports = {
calcAllAutoBins: calcAllAutoBins
};
-},{"../../lib":287,"../../plots/cartesian/axes":334,"../../registry":378,"../bar/arrays_to_calcdata":387,"./average":455,"./bin_functions":457,"./bin_label_vals":458,"./norm_functions":466,"fast-isnumeric":33}],460:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axes":334,"../../registry":378,"../bar/arrays_to_calcdata":387,"./average":456,"./bin_functions":458,"./bin_label_vals":459,"./norm_functions":467,"fast-isnumeric":33}],461:[function(_dereq_,module,exports){
'use strict';
module.exports = {
eventDataKeys: ['binNumber']
};
-},{}],461:[function(_dereq_,module,exports){
+},{}],462:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -93609,13 +94226,14 @@ module.exports = function crossTraceDefaults(fullData, fullLayout) {
}
};
-},{"../../lib":287,"../../plots/cartesian/axis_ids":338,"../../plots/cartesian/constraints":342,"../../registry":378,"../bar/defaults":392}],462:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axis_ids":338,"../../plots/cartesian/constraints":342,"../../registry":378,"../bar/defaults":392}],463:[function(_dereq_,module,exports){
'use strict';
var Registry = _dereq_('../../registry');
var Lib = _dereq_('../../lib');
var Color = _dereq_('../../components/color');
+var handleText = _dereq_('../bar/defaults').handleText;
var handleStyleDefaults = _dereq_('../bar/style_defaults');
var attributes = _dereq_('./attributes');
@@ -93634,6 +94252,16 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
}
coerce('text');
+ var textposition = coerce('textposition');
+ handleText(traceIn, traceOut, layout, coerce, textposition, {
+ moduleHasSelected: true,
+ moduleHasUnselected: true,
+ moduleHasConstrain: true,
+ moduleHasCliponaxis: true,
+ moduleHasTextangle: true,
+ moduleHasInsideanchor: true
+ });
+
coerce('hovertext');
coerce('hovertemplate');
coerce('xhoverformat');
@@ -93677,7 +94305,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {axis: 'x', inherit: 'y'});
};
-},{"../../components/color":157,"../../lib":287,"../../registry":378,"../bar/style_defaults":403,"./attributes":454}],463:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287,"../../registry":378,"../bar/defaults":392,"../bar/style_defaults":403,"./attributes":455}],464:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt, trace, cd, pointNumber) {
@@ -93718,7 +94346,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) {
return out;
};
-},{}],464:[function(_dereq_,module,exports){
+},{}],465:[function(_dereq_,module,exports){
'use strict';
var barHover = _dereq_('../bar/hover').hoverPoints;
@@ -93742,7 +94370,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {
return pts;
};
-},{"../../plots/cartesian/axes":334,"../bar/hover":395}],465:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axes":334,"../bar/hover":395}],466:[function(_dereq_,module,exports){
'use strict';
/**
@@ -93783,7 +94411,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../bar/cross_trace_calc":391,"../bar/layout_attributes":397,"../bar/layout_defaults":398,"../bar/plot":399,"../bar/select":400,"../bar/style":402,"../scatter/marker_colorbar":517,"./attributes":454,"./calc":459,"./cross_trace_defaults":461,"./defaults":462,"./event_data":463,"./hover":464}],466:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../bar/cross_trace_calc":391,"../bar/layout_attributes":397,"../bar/layout_defaults":398,"../bar/plot":399,"../bar/select":400,"../bar/style":402,"../scatter/marker_colorbar":518,"./attributes":455,"./calc":460,"./cross_trace_defaults":462,"./defaults":463,"./event_data":464,"./hover":465}],467:[function(_dereq_,module,exports){
'use strict';
@@ -93809,7 +94437,7 @@ module.exports = {
}
};
-},{}],467:[function(_dereq_,module,exports){
+},{}],468:[function(_dereq_,module,exports){
'use strict';
var histogramAttrs = _dereq_('../histogram/attributes');
@@ -93818,6 +94446,7 @@ var heatmapAttrs = _dereq_('../heatmap/attributes');
var baseAttrs = _dereq_('../../plots/attributes');
var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs;
+var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs;
var colorScaleAttrs = _dereq_('../../components/colorscale/attributes');
var extendFlat = _dereq_('../../lib/extend').extendFlat;
@@ -93862,12 +94491,19 @@ module.exports = extendFlat(
yhoverformat: axisHoverFormat('y'),
zhoverformat: axisHoverFormat('z', 1),
hovertemplate: hovertemplateAttrs({}, {keys: 'z'}),
+ texttemplate: texttemplateAttrs({
+ arrayOk: false,
+ editType: 'plot'
+ }, {
+ keys: 'z'
+ }),
+ textfont: heatmapAttrs.textfont,
showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false})
},
colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false})
);
-},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../heatmap/attributes":439,"../histogram/attributes":454,"../histogram/bin_attributes":456}],468:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/cartesian/axis_format_attributes":337,"../../plots/template_attributes":373,"../heatmap/attributes":439,"../histogram/attributes":455,"../histogram/bin_attributes":457}],469:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94078,7 +94714,7 @@ function getRanges(edges, uniqueVals, gapLow, gapHigh, ax, calendar) {
return out;
}
-},{"../../lib":287,"../../plots/cartesian/axes":334,"../histogram/average":455,"../histogram/bin_functions":457,"../histogram/bin_label_vals":458,"../histogram/calc":459,"../histogram/norm_functions":466}],469:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axes":334,"../histogram/average":456,"../histogram/bin_functions":458,"../histogram/bin_label_vals":459,"../histogram/calc":460,"../histogram/norm_functions":467}],470:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94086,6 +94722,7 @@ var Lib = _dereq_('../../lib');
var handleSampleDefaults = _dereq_('./sample_defaults');
var handleStyleDefaults = _dereq_('../heatmap/style_defaults');
var colorscaleDefaults = _dereq_('../../components/colorscale/defaults');
+var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults');
var attributes = _dereq_('./attributes');
@@ -94100,11 +94737,14 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
handleStyleDefaults(traceIn, traceOut, coerce, layout);
colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'});
coerce('hovertemplate');
+
+ handleHeatmapLabelDefaults(coerce, layout);
+
coerce('xhoverformat');
coerce('yhoverformat');
};
-},{"../../components/colorscale/defaults":167,"../../lib":287,"../heatmap/style_defaults":452,"./attributes":467,"./sample_defaults":472}],470:[function(_dereq_,module,exports){
+},{"../../components/colorscale/defaults":167,"../../lib":287,"../heatmap/label_defaults":449,"../heatmap/style_defaults":453,"./attributes":468,"./sample_defaults":473}],471:[function(_dereq_,module,exports){
'use strict';
var heatmapHover = _dereq_('../heatmap/hover');
@@ -94130,7 +94770,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {
return pts;
};
-},{"../../plots/cartesian/axes":334,"../heatmap/hover":446}],471:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axes":334,"../heatmap/hover":446}],472:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -94153,7 +94793,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../heatmap/calc":440,"../heatmap/colorbar":442,"../heatmap/plot":450,"../heatmap/style":451,"../histogram/cross_trace_defaults":461,"../histogram/event_data":463,"./attributes":467,"./defaults":469,"./hover":470}],472:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../heatmap/calc":440,"../heatmap/colorbar":442,"../heatmap/plot":451,"../heatmap/style":452,"../histogram/cross_trace_defaults":462,"../histogram/event_data":464,"./attributes":468,"./defaults":470,"./hover":471}],473:[function(_dereq_,module,exports){
'use strict';
var Registry = _dereq_('../../registry');
@@ -94190,7 +94830,7 @@ module.exports = function handleSampleDefaults(traceIn, traceOut, coerce, layout
coerce('autobiny');
};
-},{"../../lib":287,"../../registry":378}],473:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378}],474:[function(_dereq_,module,exports){
'use strict';
var histogram2dAttrs = _dereq_('../histogram2d/attributes');
@@ -94234,7 +94874,9 @@ module.exports = extendFlat({
xhoverformat: axisHoverFormat('x'),
yhoverformat: axisHoverFormat('y'),
zhoverformat: axisHoverFormat('z', 1),
- hovertemplate: histogram2dAttrs.hovertemplate
+ hovertemplate: histogram2dAttrs.hovertemplate,
+ texttemplate: contourAttrs.texttemplate,
+ textfont: contourAttrs.textfont
},
colorScaleAttrs('', {
cLetter: 'z',
@@ -94242,7 +94884,7 @@ module.exports = extendFlat({
})
);
-},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../contour/attributes":417,"../histogram2d/attributes":467}],474:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../contour/attributes":417,"../histogram2d/attributes":468}],475:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94250,6 +94892,7 @@ var Lib = _dereq_('../../lib');
var handleSampleDefaults = _dereq_('../histogram2d/sample_defaults');
var handleContoursDefaults = _dereq_('../contour/contours_defaults');
var handleStyleDefaults = _dereq_('../contour/style_defaults');
+var handleHeatmapLabelDefaults = _dereq_('../heatmap/label_defaults');
var attributes = _dereq_('./attributes');
@@ -94267,12 +94910,18 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
handleContoursDefaults(traceIn, traceOut, coerce, coerce2);
handleStyleDefaults(traceIn, traceOut, coerce, layout);
- coerce('hovertemplate');
coerce('xhoverformat');
coerce('yhoverformat');
+ coerce('hovertemplate');
+ if(
+ traceOut.contours &&
+ traceOut.contours.coloring === 'heatmap'
+ ) {
+ handleHeatmapLabelDefaults(coerce, layout);
+ }
};
-},{"../../lib":287,"../contour/contours_defaults":424,"../contour/style_defaults":438,"../histogram2d/sample_defaults":472,"./attributes":473}],475:[function(_dereq_,module,exports){
+},{"../../lib":287,"../contour/contours_defaults":424,"../contour/style_defaults":438,"../heatmap/label_defaults":449,"../histogram2d/sample_defaults":473,"./attributes":474}],476:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -94294,7 +94943,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../contour/calc":418,"../contour/colorbar":420,"../contour/hover":430,"../contour/plot":435,"../contour/style":437,"../histogram/cross_trace_defaults":461,"./attributes":473,"./defaults":474}],476:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../contour/calc":418,"../contour/colorbar":420,"../contour/hover":430,"../contour/plot":435,"../contour/style":437,"../histogram/cross_trace_defaults":462,"./attributes":474,"./defaults":475}],477:[function(_dereq_,module,exports){
'use strict';
var baseAttrs = _dereq_('../../plots/attributes');
@@ -94390,7 +95039,7 @@ module.exports = extendFlat({
transforms: undefined
});
-},{"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"./constants":478}],477:[function(_dereq_,module,exports){
+},{"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"./constants":479}],478:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94480,7 +95129,7 @@ function makeScaler(trace) {
};
}
-},{"../../lib":287,"../../plots/cartesian/axes":334,"./constants":478,"./helpers":481,"fast-isnumeric":33}],478:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axes":334,"./constants":479,"./helpers":482,"fast-isnumeric":33}],479:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -94546,7 +95195,7 @@ module.exports = {
].join('; ')
};
-},{}],479:[function(_dereq_,module,exports){
+},{}],480:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -94596,7 +95245,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) {
traceOut._length = null;
};
-},{"../../lib":287,"../../snapshot/helpers":382,"./attributes":476,"./constants":478}],480:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../snapshot/helpers":382,"./attributes":477,"./constants":479}],481:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt) {
@@ -94610,7 +95259,7 @@ module.exports = function eventData(out, pt) {
return out;
};
-},{}],481:[function(_dereq_,module,exports){
+},{}],482:[function(_dereq_,module,exports){
'use strict';
var probeSync = _dereq_('probe-image-size/sync');
@@ -94623,7 +95272,7 @@ exports.getImageSize = function(src) {
return probeSync(buff);
};
-},{"../../snapshot/helpers":382,"buffer/":28,"probe-image-size/sync":97}],482:[function(_dereq_,module,exports){
+},{"../../snapshot/helpers":382,"buffer/":28,"probe-image-size/sync":97}],483:[function(_dereq_,module,exports){
'use strict';
var Fx = _dereq_('../../components/fx');
@@ -94715,7 +95364,7 @@ module.exports = function hoverPoints(pointData, xval, yval) {
})];
};
-},{"../../components/fx":197,"../../lib":287,"./constants":478}],483:[function(_dereq_,module,exports){
+},{"../../components/fx":197,"../../lib":287,"./constants":479}],484:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -94736,7 +95385,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"./attributes":476,"./calc":477,"./defaults":479,"./event_data":480,"./hover":482,"./plot":484,"./style":485}],484:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"./attributes":477,"./calc":478,"./defaults":480,"./event_data":481,"./hover":483,"./plot":485,"./style":486}],485:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -94959,7 +95608,7 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) {
});
};
-},{"../../constants/xmlns_namespaces":268,"../../lib":287,"./constants":478,"@plotly/d3":20}],485:[function(_dereq_,module,exports){
+},{"../../constants/xmlns_namespaces":268,"../../lib":287,"./constants":479,"@plotly/d3":20}],486:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -94971,7 +95620,7 @@ module.exports = function style(gd) {
});
};
-},{"@plotly/d3":20}],486:[function(_dereq_,module,exports){
+},{"@plotly/d3":20}],487:[function(_dereq_,module,exports){
'use strict';
var baseAttrs = _dereq_('../../plots/attributes');
@@ -95186,7 +95835,7 @@ module.exports = {
}
};
-},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/domain":364,"../../plots/font_attributes":365,"../../plots/template_attributes":373}],487:[function(_dereq_,module,exports){
+},{"../../components/color/attributes":156,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/domain":364,"../../plots/font_attributes":365,"../../plots/template_attributes":373}],488:[function(_dereq_,module,exports){
'use strict';
var plots = _dereq_('../../plots/plots');
@@ -95201,7 +95850,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout)
plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout);
};
-},{"../../plots/plots":371}],488:[function(_dereq_,module,exports){
+},{"../../plots/plots":371}],489:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -95243,7 +95892,6 @@ function calc(gd, trace) {
v = vals[i];
if(!isNumeric(v)) continue;
v = +v;
- if(v < 0) continue;
} else v = 1;
label = labels[i];
@@ -95280,6 +95928,9 @@ function calc(gd, trace) {
}
}
+ // Drop aggregate sums of value 0 or less
+ cd = cd.filter(function(elem) { return elem.v >= 0; });
+
var shouldSort = (trace.type === 'funnelarea') ? isAggregated : trace.sort;
if(shouldSort) cd.sort(function(a, b) { return b.v - a.v; });
@@ -95376,7 +96027,7 @@ module.exports = {
generateExtendedColors: generateExtendedColors
};
-},{"../../components/color":157,"fast-isnumeric":33,"tinycolor2":121}],489:[function(_dereq_,module,exports){
+},{"../../components/color":157,"fast-isnumeric":33,"tinycolor2":121}],490:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -95499,7 +96150,7 @@ module.exports = {
supplyDefaults: supplyDefaults
};
-},{"../../lib":287,"../../plots/domain":364,"../bar/defaults":392,"./attributes":486,"fast-isnumeric":33}],490:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/domain":364,"../bar/defaults":392,"./attributes":487,"fast-isnumeric":33}],491:[function(_dereq_,module,exports){
'use strict';
var appendArrayMultiPointValues = _dereq_('../../components/fx/helpers').appendArrayMultiPointValues;
@@ -95541,7 +96192,7 @@ module.exports = function eventData(pt, trace) {
return out;
};
-},{"../../components/fx/helpers":193}],491:[function(_dereq_,module,exports){
+},{"../../components/fx/helpers":193}],492:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -95581,7 +96232,7 @@ exports.getRotationAngle = function(rotation) {
return (rotation === 'auto' ? 0 : rotation) * Math.PI / 180;
};
-},{"../../lib":287}],492:[function(_dereq_,module,exports){
+},{"../../lib":287}],493:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -95605,7 +96256,7 @@ module.exports = {
}
};
-},{"./attributes":486,"./base_plot":487,"./calc":488,"./defaults":489,"./layout_attributes":493,"./layout_defaults":494,"./plot":495,"./style":496,"./style_one":497}],493:[function(_dereq_,module,exports){
+},{"./attributes":487,"./base_plot":488,"./calc":489,"./defaults":490,"./layout_attributes":494,"./layout_defaults":495,"./plot":496,"./style":497,"./style_one":498}],494:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -95624,7 +96275,7 @@ module.exports = {
}
};
-},{}],494:[function(_dereq_,module,exports){
+},{}],495:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -95641,7 +96292,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) {
coerce('extendpiecolors');
};
-},{"../../lib":287,"./layout_attributes":493}],495:[function(_dereq_,module,exports){
+},{"../../lib":287,"./layout_attributes":494}],496:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -96821,7 +97472,7 @@ module.exports = {
computeTransform: computeTransform
};
-},{"../../components/color":157,"../../components/drawing":179,"../../components/fx":197,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/plots":371,"../bar/constants":390,"../bar/uniform_text":404,"./event_data":490,"./helpers":491,"@plotly/d3":20}],496:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../components/drawing":179,"../../components/fx":197,"../../lib":287,"../../lib/svg_text_utils":310,"../../plots/plots":371,"../bar/constants":390,"../bar/uniform_text":404,"./event_data":491,"./helpers":492,"@plotly/d3":20}],497:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -96846,7 +97497,7 @@ module.exports = function style(gd) {
});
};
-},{"../bar/uniform_text":404,"./style_one":497,"@plotly/d3":20}],497:[function(_dereq_,module,exports){
+},{"../bar/uniform_text":404,"./style_one":498,"@plotly/d3":20}],498:[function(_dereq_,module,exports){
'use strict';
var Color = _dereq_('../../components/color');
@@ -96862,7 +97513,7 @@ module.exports = function styleOne(s, pt, trace) {
.call(Color.stroke, lineColor);
};
-},{"../../components/color":157,"./helpers":491}],498:[function(_dereq_,module,exports){
+},{"../../components/color":157,"./helpers":492}],499:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -96905,7 +97556,7 @@ module.exports = function arraysToCalcdata(cd, trace) {
}
};
-},{"../../lib":287}],499:[function(_dereq_,module,exports){
+},{"../../lib":287}],500:[function(_dereq_,module,exports){
'use strict';
var axisHoverFormat = _dereq_('../../plots/cartesian/axis_format_attributes').axisHoverFormat;
@@ -97255,7 +97906,7 @@ module.exports = {
}),
};
-},{"../../components/colorscale/attributes":164,"../../components/drawing":179,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"./constants":503}],500:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../components/drawing":179,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../../plots/font_attributes":365,"../../plots/template_attributes":373,"./constants":504}],501:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -97552,7 +98203,7 @@ module.exports = {
getStackOpts: getStackOpts
};
-},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"./arrays_to_calcdata":498,"./calc_selection":501,"./colorscale_calc":502,"./subtypes":524,"fast-isnumeric":33}],501:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/align_period":331,"../../plots/cartesian/axes":334,"./arrays_to_calcdata":499,"./calc_selection":502,"./colorscale_calc":503,"./subtypes":525,"fast-isnumeric":33}],502:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -97563,7 +98214,7 @@ module.exports = function calcSelection(cd, trace) {
}
};
-},{"../../lib":287}],502:[function(_dereq_,module,exports){
+},{"../../lib":287}],503:[function(_dereq_,module,exports){
'use strict';
var hasColorscale = _dereq_('../../components/colorscale/helpers').hasColorscale;
@@ -97598,7 +98249,7 @@ module.exports = function calcMarkerColorscale(gd, trace) {
}
};
-},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"./subtypes":524}],503:[function(_dereq_,module,exports){
+},{"../../components/colorscale/calc":165,"../../components/colorscale/helpers":168,"./subtypes":525}],504:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -97618,7 +98269,7 @@ module.exports = {
eventDataKeys: []
};
-},{}],504:[function(_dereq_,module,exports){
+},{}],505:[function(_dereq_,module,exports){
'use strict';
var calc = _dereq_('./calc');
@@ -97790,7 +98441,7 @@ function getInterp(calcTrace, index, position, posAttr) {
return pt0.s + (pt1.s - pt0.s) * (position - pt0[posAttr]) / (pt1[posAttr] - pt0[posAttr]);
}
-},{"./calc":500}],505:[function(_dereq_,module,exports){
+},{"./calc":501}],506:[function(_dereq_,module,exports){
'use strict';
@@ -97820,7 +98471,7 @@ module.exports = function crossTraceDefaults(fullData) {
}
};
-},{}],506:[function(_dereq_,module,exports){
+},{}],507:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -97907,7 +98558,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
Lib.coerceSelectionMarkerOpacity(traceOut, coerce);
};
-},{"../../lib":287,"../../registry":378,"./attributes":499,"./constants":503,"./fillcolor_defaults":507,"./line_defaults":512,"./line_shape_defaults":514,"./marker_defaults":518,"./period_defaults":519,"./stack_defaults":522,"./subtypes":524,"./text_defaults":525,"./xy_defaults":526}],507:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378,"./attributes":500,"./constants":504,"./fillcolor_defaults":508,"./line_defaults":513,"./line_shape_defaults":515,"./marker_defaults":519,"./period_defaults":520,"./stack_defaults":523,"./subtypes":525,"./text_defaults":526,"./xy_defaults":527}],508:[function(_dereq_,module,exports){
'use strict';
var Color = _dereq_('../../components/color');
@@ -97935,7 +98586,7 @@ module.exports = function fillColorDefaults(traceIn, traceOut, defaultColor, coe
));
};
-},{"../../components/color":157,"../../lib":287}],508:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287}],509:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../../plots/cartesian/axes');
@@ -97953,7 +98604,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) {
return labels;
};
-},{"../../plots/cartesian/axes":334}],509:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axes":334}],510:[function(_dereq_,module,exports){
'use strict';
var Color = _dereq_('../../components/color');
@@ -97993,7 +98644,7 @@ module.exports = function getTraceColor(trace, di) {
}
};
-},{"../../components/color":157,"./subtypes":524}],510:[function(_dereq_,module,exports){
+},{"../../components/color":157,"./subtypes":525}],511:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -98204,7 +98855,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
}
};
-},{"../../components/color":157,"../../components/fx":197,"../../lib":287,"../../registry":378,"./get_trace_color":509}],511:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../components/fx":197,"../../lib":287,"../../registry":378,"./get_trace_color":510}],512:[function(_dereq_,module,exports){
'use strict';
var subtypes = _dereq_('./subtypes');
@@ -98241,7 +98892,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"./arrays_to_calcdata":498,"./attributes":499,"./calc":500,"./cross_trace_calc":504,"./cross_trace_defaults":505,"./defaults":506,"./format_labels":508,"./hover":510,"./marker_colorbar":517,"./plot":520,"./select":521,"./style":523,"./subtypes":524}],512:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"./arrays_to_calcdata":499,"./attributes":500,"./calc":501,"./cross_trace_calc":505,"./cross_trace_defaults":506,"./defaults":507,"./format_labels":509,"./hover":511,"./marker_colorbar":518,"./plot":521,"./select":522,"./style":524,"./subtypes":525}],513:[function(_dereq_,module,exports){
'use strict';
var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray;
@@ -98264,7 +98915,7 @@ module.exports = function lineDefaults(traceIn, traceOut, defaultColor, layout,
if(!(opts || {}).noDash) coerce('line.dash');
};
-},{"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"../../lib":287}],513:[function(_dereq_,module,exports){
+},{"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"../../lib":287}],514:[function(_dereq_,module,exports){
'use strict';
var numConstants = _dereq_('../../constants/numerical');
@@ -98716,7 +99367,7 @@ module.exports = function linePoints(d, opts) {
return segments;
};
-},{"../../constants/numerical":267,"../../lib":287,"./constants":503}],514:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../lib":287,"./constants":504}],515:[function(_dereq_,module,exports){
'use strict';
@@ -98726,7 +99377,7 @@ module.exports = function handleLineShapeDefaults(traceIn, traceOut, coerce) {
if(shape === 'spline') coerce('line.smoothing');
};
-},{}],515:[function(_dereq_,module,exports){
+},{}],516:[function(_dereq_,module,exports){
'use strict';
var LINKEDFILLS = {tonextx: 1, tonexty: 1, tonext: 1};
@@ -98808,7 +99459,7 @@ module.exports = function linkTraces(gd, plotinfo, cdscatter) {
return cdscatterSorted;
};
-},{}],516:[function(_dereq_,module,exports){
+},{}],517:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -98844,7 +99495,7 @@ module.exports = function makeBubbleSizeFn(trace, factor) {
};
};
-},{"fast-isnumeric":33}],517:[function(_dereq_,module,exports){
+},{"fast-isnumeric":33}],518:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -98853,7 +99504,7 @@ module.exports = {
max: 'cmax'
};
-},{}],518:[function(_dereq_,module,exports){
+},{}],519:[function(_dereq_,module,exports){
'use strict';
var Color = _dereq_('../../components/color');
@@ -98926,7 +99577,7 @@ module.exports = function markerDefaults(traceIn, traceOut, defaultColor, layout
}
};
-},{"../../components/color":157,"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"./subtypes":524}],519:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../components/colorscale/defaults":167,"../../components/colorscale/helpers":168,"./subtypes":525}],520:[function(_dereq_,module,exports){
'use strict';
var dateTick0 = _dereq_('../../lib').dateTick0;
@@ -98965,7 +99616,7 @@ module.exports = function handlePeriodDefaults(traceIn, traceOut, layout, coerce
}
};
-},{"../../constants/numerical":267,"../../lib":287}],520:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../lib":287}],521:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -99517,7 +100168,7 @@ function selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll) {
});
}
-},{"../../components/drawing":179,"../../lib":287,"../../lib/polygon":299,"../../registry":378,"./line_points":513,"./link_traces":515,"./subtypes":524,"@plotly/d3":20}],521:[function(_dereq_,module,exports){
+},{"../../components/drawing":179,"../../lib":287,"../../lib/polygon":299,"../../registry":378,"./line_points":514,"./link_traces":516,"./subtypes":525,"@plotly/d3":20}],522:[function(_dereq_,module,exports){
'use strict';
var subtypes = _dereq_('./subtypes');
@@ -99562,7 +100213,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) {
return selection;
};
-},{"./subtypes":524}],522:[function(_dereq_,module,exports){
+},{"./subtypes":525}],523:[function(_dereq_,module,exports){
'use strict';
var perStackAttrs = ['orientation', 'groupnorm', 'stackgaps'];
@@ -99659,7 +100310,7 @@ module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce)
}
};
-},{}],523:[function(_dereq_,module,exports){
+},{}],524:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -99721,7 +100372,7 @@ module.exports = {
styleOnSelect: styleOnSelect
};
-},{"../../components/drawing":179,"../../registry":378,"@plotly/d3":20}],524:[function(_dereq_,module,exports){
+},{"../../components/drawing":179,"../../registry":378,"@plotly/d3":20}],525:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -99751,7 +100402,7 @@ module.exports = {
}
};
-},{"../../lib":287}],525:[function(_dereq_,module,exports){
+},{"../../lib":287}],526:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -99772,7 +100423,7 @@ module.exports = function(traceIn, traceOut, layout, coerce, opts) {
}
};
-},{"../../lib":287}],526:[function(_dereq_,module,exports){
+},{"../../lib":287}],527:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -99808,7 +100459,7 @@ module.exports = function handleXYDefaults(traceIn, traceOut, layout, coerce) {
return len;
};
-},{"../../lib":287,"../../registry":378}],527:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../registry":378}],528:[function(_dereq_,module,exports){
'use strict';
var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs;
@@ -99900,7 +100551,7 @@ module.exports = {
hovertemplate: hovertemplateAttrs(),
};
-},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"../scatter/attributes":499}],528:[function(_dereq_,module,exports){
+},{"../../components/colorscale/attributes":164,"../../components/drawing/attributes":178,"../../lib/extend":281,"../../plots/attributes":330,"../../plots/template_attributes":373,"../scatter/attributes":500}],529:[function(_dereq_,module,exports){
'use strict';
var isNumeric = _dereq_('fast-isnumeric');
@@ -99972,7 +100623,7 @@ module.exports = function calc(gd, trace) {
return cd;
};
-},{"../scatter/arrays_to_calcdata":498,"../scatter/calc":500,"../scatter/calc_selection":501,"../scatter/colorscale_calc":502,"fast-isnumeric":33}],529:[function(_dereq_,module,exports){
+},{"../scatter/arrays_to_calcdata":499,"../scatter/calc":501,"../scatter/calc_selection":502,"../scatter/colorscale_calc":503,"fast-isnumeric":33}],530:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100067,7 +100718,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
Lib.coerceSelectionMarkerOpacity(traceOut, coerce);
};
-},{"../../lib":287,"../scatter/constants":503,"../scatter/fillcolor_defaults":507,"../scatter/line_defaults":512,"../scatter/line_shape_defaults":514,"../scatter/marker_defaults":518,"../scatter/subtypes":524,"../scatter/text_defaults":525,"./attributes":527}],530:[function(_dereq_,module,exports){
+},{"../../lib":287,"../scatter/constants":504,"../scatter/fillcolor_defaults":508,"../scatter/line_defaults":513,"../scatter/line_shape_defaults":515,"../scatter/marker_defaults":519,"../scatter/subtypes":525,"../scatter/text_defaults":526,"./attributes":528}],531:[function(_dereq_,module,exports){
'use strict';
module.exports = function eventData(out, pt, trace, cd, pointNumber) {
@@ -100091,7 +100742,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) {
return out;
};
-},{}],531:[function(_dereq_,module,exports){
+},{}],532:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../../plots/cartesian/axes');
@@ -100107,7 +100758,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) {
return labels;
};
-},{"../../plots/cartesian/axes":334}],532:[function(_dereq_,module,exports){
+},{"../../plots/cartesian/axes":334}],533:[function(_dereq_,module,exports){
'use strict';
var scatterHover = _dereq_('../scatter/hover');
@@ -100173,7 +100824,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) {
return scatterPointData;
};
-},{"../scatter/hover":510}],533:[function(_dereq_,module,exports){
+},{"../scatter/hover":511}],534:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -100197,7 +100848,7 @@ module.exports = {
}
};
-},{"../../plots/ternary":374,"../scatter/marker_colorbar":517,"../scatter/select":521,"../scatter/style":523,"./attributes":527,"./calc":528,"./defaults":529,"./event_data":530,"./format_labels":531,"./hover":532,"./plot":534}],534:[function(_dereq_,module,exports){
+},{"../../plots/ternary":374,"../scatter/marker_colorbar":518,"../scatter/select":522,"../scatter/style":524,"./attributes":528,"./calc":529,"./defaults":530,"./event_data":531,"./format_labels":532,"./hover":533,"./plot":535}],535:[function(_dereq_,module,exports){
'use strict';
var scatterPlot = _dereq_('../scatter/plot');
@@ -100221,7 +100872,7 @@ module.exports = function plot(gd, ternary, moduleCalcData) {
scatterPlot(gd, plotinfo, moduleCalcData, scatterLayer);
};
-},{"../scatter/plot":520}],535:[function(_dereq_,module,exports){
+},{"../scatter/plot":521}],536:[function(_dereq_,module,exports){
'use strict';
var boxAttrs = _dereq_('../box/attributes');
@@ -100377,7 +101028,7 @@ module.exports = {
}
};
-},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../box/attributes":405}],536:[function(_dereq_,module,exports){
+},{"../../lib/extend":281,"../../plots/cartesian/axis_format_attributes":337,"../box/attributes":405}],537:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100545,7 +101196,7 @@ function calcSpan(trace, cdi, valAxis, bandwidth) {
return spanOut;
}
-},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/axes":334,"../box/calc":406,"./helpers":539}],537:[function(_dereq_,module,exports){
+},{"../../constants/numerical":267,"../../lib":287,"../../plots/cartesian/axes":334,"../box/calc":406,"./helpers":540}],538:[function(_dereq_,module,exports){
'use strict';
var setPositionOffset = _dereq_('../box/cross_trace_calc').setPositionOffset;
@@ -100580,7 +101231,7 @@ module.exports = function crossTraceCalc(gd, plotinfo) {
}
};
-},{"../box/cross_trace_calc":407}],538:[function(_dereq_,module,exports){
+},{"../box/cross_trace_calc":407}],539:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100633,7 +101284,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
if(!meanLineVisible) traceOut.meanline = {visible: false};
};
-},{"../../components/color":157,"../../lib":287,"../box/defaults":408,"./attributes":535}],539:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../../lib":287,"../box/defaults":408,"./attributes":536}],540:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100698,7 +101349,7 @@ exports.getKdeValue = function(calcItem, trace, valueDist) {
exports.extractVal = function(o) { return o.v; };
-},{"../../lib":287}],540:[function(_dereq_,module,exports){
+},{"../../lib":287}],541:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100805,7 +101456,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) {
return closeData;
};
-},{"../../lib":287,"../../plots/cartesian/axes":334,"../box/hover":410,"./helpers":539}],541:[function(_dereq_,module,exports){
+},{"../../lib":287,"../../plots/cartesian/axes":334,"../box/hover":410,"./helpers":540}],542:[function(_dereq_,module,exports){
'use strict';
module.exports = {
@@ -100830,7 +101481,7 @@ module.exports = {
}
};
-},{"../../plots/cartesian":348,"../box/defaults":408,"../box/select":415,"../scatter/style":523,"./attributes":535,"./calc":536,"./cross_trace_calc":537,"./defaults":538,"./hover":540,"./layout_attributes":542,"./layout_defaults":543,"./plot":544,"./style":545}],542:[function(_dereq_,module,exports){
+},{"../../plots/cartesian":348,"../box/defaults":408,"../box/select":415,"../scatter/style":524,"./attributes":536,"./calc":537,"./cross_trace_calc":538,"./defaults":539,"./hover":541,"./layout_attributes":543,"./layout_defaults":544,"./plot":545,"./style":546}],543:[function(_dereq_,module,exports){
'use strict';
var boxLayoutAttrs = _dereq_('../box/layout_attributes');
@@ -100845,7 +101496,7 @@ module.exports = {
})
};
-},{"../../lib":287,"../box/layout_attributes":412}],543:[function(_dereq_,module,exports){
+},{"../../lib":287,"../box/layout_attributes":412}],544:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../../lib');
@@ -100859,7 +101510,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
boxLayoutDefaults._supply(layoutIn, layoutOut, fullData, coerce, 'violin');
};
-},{"../../lib":287,"../box/layout_defaults":413,"./layout_attributes":542}],544:[function(_dereq_,module,exports){
+},{"../../lib":287,"../box/layout_defaults":413,"./layout_attributes":543}],545:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -101041,7 +101692,7 @@ module.exports = function plot(gd, plotinfo, cdViolins, violinLayer) {
});
};
-},{"../../components/drawing":179,"../../lib":287,"../box/plot":414,"../scatter/line_points":513,"./helpers":539,"@plotly/d3":20}],545:[function(_dereq_,module,exports){
+},{"../../components/drawing":179,"../../lib":287,"../box/plot":414,"../scatter/line_points":514,"./helpers":540,"@plotly/d3":20}],546:[function(_dereq_,module,exports){
'use strict';
var d3 = _dereq_('@plotly/d3');
@@ -101088,7 +101739,7 @@ module.exports = function style(gd) {
});
};
-},{"../../components/color":157,"../scatter/style":523,"@plotly/d3":20}],546:[function(_dereq_,module,exports){
+},{"../../components/color":157,"../scatter/style":524,"@plotly/d3":20}],547:[function(_dereq_,module,exports){
'use strict';
var Axes = _dereq_('../plots/cartesian/axes');
@@ -101492,7 +102143,7 @@ function last(array, indices) {
return array[indices[indices.length - 1]];
}
-},{"../constants/numerical":267,"../lib":287,"../plot_api/plot_schema":322,"../plots/cartesian/axes":334,"./helpers":549}],547:[function(_dereq_,module,exports){
+},{"../constants/numerical":267,"../lib":287,"../plot_api/plot_schema":322,"../plots/cartesian/axes":334,"./helpers":550}],548:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../lib');
@@ -101752,7 +102403,7 @@ function getFilterFunc(opts, d2c, targetCalendar) {
}
}
-},{"../constants/filter_ops":265,"../lib":287,"../plots/cartesian/axes":334,"../registry":378,"./helpers":549}],548:[function(_dereq_,module,exports){
+},{"../constants/filter_ops":265,"../lib":287,"../plots/cartesian/axes":334,"../registry":378,"./helpers":550}],549:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../lib');
@@ -101996,7 +102647,7 @@ function transformOne(trace, state) {
return newData;
}
-},{"../lib":287,"../plot_api/plot_schema":322,"../plots/plots":371,"./helpers":549}],549:[function(_dereq_,module,exports){
+},{"../lib":287,"../plot_api/plot_schema":322,"../plots/plots":371,"./helpers":550}],550:[function(_dereq_,module,exports){
'use strict';
exports.pointsAccessorFunction = function(transforms, opts) {
@@ -102014,7 +102665,7 @@ exports.pointsAccessorFunction = function(transforms, opts) {
return originalPointsAccessor;
};
-},{}],550:[function(_dereq_,module,exports){
+},{}],551:[function(_dereq_,module,exports){
'use strict';
var Lib = _dereq_('../lib');
@@ -102152,11 +102803,11 @@ function getSortFunc(opts, d2c) {
}
}
-},{"../constants/numerical":267,"../lib":287,"../plots/cartesian/axes":334,"./helpers":549}],551:[function(_dereq_,module,exports){
+},{"../constants/numerical":267,"../lib":287,"../plots/cartesian/axes":334,"./helpers":550}],552:[function(_dereq_,module,exports){
'use strict';
// package version injected by `npm run preprocess`
-exports.version = '2.6.3';
+exports.version = '2.8.0';
},{}]},{},[15])(15)
});
diff --git a/static/babybuddy/js/graph.js.gz b/static/babybuddy/js/graph.js.gz
index 10f2bea1..42fed2c8 100644
Binary files a/static/babybuddy/js/graph.js.gz and b/static/babybuddy/js/graph.js.gz differ
diff --git a/static/import_export/import.87299a479910.css b/static/import_export/import.358144dd8713.css
similarity index 67%
rename from static/import_export/import.87299a479910.css
rename to static/import_export/import.358144dd8713.css
index 739311c4..bb20ba2a 100644
--- a/static/import_export/import.87299a479910.css
+++ b/static/import_export/import.358144dd8713.css
@@ -79,37 +79,3 @@ table.import-preview tr.update {
font-weight: bold;
font-size: 0.85em;
}
-
-@media (prefers-color-scheme: dark) {
- table.import-preview tr.skip {
- background-color: #2d2d2d;
- }
-
- table.import-preview tr.new {
- background-color: #42274d;
- }
-
- table.import-preview tr.delete {
- background-color: #064140;
- }
-
- table.import-preview tr.update {
- background-color: #020230;
- }
-
- .validation-error-container {
- background-color: #003e3e;
- }
-
- /*
- these declarations are necessary to forcibly override the
- formatting applied by the diff-match-patch python library
- */
- table.import-preview td ins {
- background-color: #190019 !important;
- }
-
- table.import-preview td del {
- background-color: #001919 !important;
- }
-}
\ No newline at end of file
diff --git a/static/import_export/import.358144dd8713.css.gz b/static/import_export/import.358144dd8713.css.gz
new file mode 100644
index 00000000..dce505a1
Binary files /dev/null and b/static/import_export/import.358144dd8713.css.gz differ
diff --git a/static/import_export/import.87299a479910.css.gz b/static/import_export/import.87299a479910.css.gz
deleted file mode 100644
index 125c3158..00000000
Binary files a/static/import_export/import.87299a479910.css.gz and /dev/null differ
diff --git a/static/import_export/import.css b/static/import_export/import.css
index 739311c4..bb20ba2a 100644
--- a/static/import_export/import.css
+++ b/static/import_export/import.css
@@ -79,37 +79,3 @@ table.import-preview tr.update {
font-weight: bold;
font-size: 0.85em;
}
-
-@media (prefers-color-scheme: dark) {
- table.import-preview tr.skip {
- background-color: #2d2d2d;
- }
-
- table.import-preview tr.new {
- background-color: #42274d;
- }
-
- table.import-preview tr.delete {
- background-color: #064140;
- }
-
- table.import-preview tr.update {
- background-color: #020230;
- }
-
- .validation-error-container {
- background-color: #003e3e;
- }
-
- /*
- these declarations are necessary to forcibly override the
- formatting applied by the diff-match-patch python library
- */
- table.import-preview td ins {
- background-color: #190019 !important;
- }
-
- table.import-preview td del {
- background-color: #001919 !important;
- }
-}
\ No newline at end of file
diff --git a/static/import_export/import.css.gz b/static/import_export/import.css.gz
index 125c3158..dce505a1 100644
Binary files a/static/import_export/import.css.gz and b/static/import_export/import.css.gz differ
diff --git a/static/staticfiles.json b/static/staticfiles.json
index 17899b11..f481b749 100644
--- a/static/staticfiles.json
+++ b/static/staticfiles.json
@@ -1 +1 @@
-{"paths": {"admin/js/vendor/select2/i18n/bg.js": "admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js", "admin/js/vendor/select2/i18n/en.js": "admin/js/vendor/select2/i18n/en.cf932ba09a98.js", "admin/js/vendor/select2/i18n/lt.js": "admin/js/vendor/select2/i18n/lt.23c7ce903300.js", "admin/js/vendor/select2/i18n/zh-TW.js": "admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js", "admin/js/vendor/select2/i18n/is.js": "admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js", "admin/js/vendor/select2/i18n/vi.js": "admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js", "admin/js/vendor/select2/i18n/sk.js": "admin/js/vendor/select2/i18n/sk.33d02cef8d11.js", "admin/js/vendor/select2/i18n/cs.js": "admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js", "admin/js/vendor/select2/i18n/ps.js": "admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js", "admin/js/vendor/select2/i18n/hy.js": "admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js", "admin/js/vendor/select2/i18n/eu.js": "admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js", "admin/js/vendor/select2/i18n/nl.js": "admin/js/vendor/select2/i18n/nl.997868a37ed8.js", "admin/js/vendor/select2/i18n/tk.js": "admin/js/vendor/select2/i18n/tk.7c572a68c78f.js", "admin/js/vendor/select2/i18n/sr-Cyrl.js": "admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js", "admin/js/vendor/select2/i18n/az.js": "admin/js/vendor/select2/i18n/az.270c257daf81.js", "admin/js/vendor/select2/i18n/he.js": "admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js", "admin/js/vendor/select2/i18n/af.js": "admin/js/vendor/select2/i18n/af.4f6fcd73488c.js", "admin/js/vendor/select2/i18n/ms.js": "admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js", "admin/js/vendor/select2/i18n/uk.js": "admin/js/vendor/select2/i18n/uk.8cede7f4803c.js", "admin/js/vendor/select2/i18n/sr.js": "admin/js/vendor/select2/i18n/sr.5ed85a48f483.js", "admin/js/vendor/select2/i18n/sv.js": "admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js", "admin/js/vendor/select2/i18n/es.js": "admin/js/vendor/select2/i18n/es.66dbc2652fb1.js", "admin/js/vendor/select2/i18n/ka.js": "admin/js/vendor/select2/i18n/ka.2083264a54f0.js", "admin/js/vendor/select2/i18n/dsb.js": "admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js", "admin/js/vendor/select2/i18n/hi.js": "admin/js/vendor/select2/i18n/hi.70640d41628f.js", "admin/js/vendor/select2/i18n/tr.js": "admin/js/vendor/select2/i18n/tr.b5a0643d1545.js", "admin/js/vendor/select2/i18n/ne.js": "admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js", "admin/js/vendor/select2/i18n/ru.js": "admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js", "admin/js/vendor/select2/i18n/sl.js": "admin/js/vendor/select2/i18n/sl.131a78bc0752.js", "admin/js/vendor/select2/i18n/hsb.js": "admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js", "admin/js/vendor/select2/i18n/id.js": "admin/js/vendor/select2/i18n/id.04debded514d.js", "admin/js/vendor/select2/i18n/de.js": "admin/js/vendor/select2/i18n/de.8a1c222b0204.js", "admin/js/vendor/select2/i18n/bs.js": "admin/js/vendor/select2/i18n/bs.91624382358e.js", "admin/js/vendor/select2/i18n/th.js": "admin/js/vendor/select2/i18n/th.f38c20b0221b.js", "admin/js/vendor/select2/i18n/mk.js": "admin/js/vendor/select2/i18n/mk.dabbb9087130.js", "admin/js/vendor/select2/i18n/zh-CN.js": "admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js", "admin/js/vendor/select2/i18n/km.js": "admin/js/vendor/select2/i18n/km.c23089cb06ca.js", "admin/js/vendor/select2/i18n/ca.js": "admin/js/vendor/select2/i18n/ca.a166b745933a.js", "admin/js/vendor/select2/i18n/hr.js": "admin/js/vendor/select2/i18n/hr.a2b092cc1147.js", "admin/js/vendor/select2/i18n/ar.js": "admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js", "admin/js/vendor/select2/i18n/pl.js": "admin/js/vendor/select2/i18n/pl.6031b4f16452.js", "admin/js/vendor/select2/i18n/pt.js": "admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js", "admin/js/vendor/select2/i18n/hu.js": "admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js", "admin/js/vendor/select2/i18n/ja.js": "admin/js/vendor/select2/i18n/ja.170ae885d74f.js", "admin/js/vendor/select2/i18n/fr.js": "admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js", "admin/js/vendor/select2/i18n/ko.js": "admin/js/vendor/select2/i18n/ko.e7be6c20e673.js", "admin/js/vendor/select2/i18n/el.js": "admin/js/vendor/select2/i18n/el.27097f071856.js", "admin/js/vendor/select2/i18n/fi.js": "admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js", "admin/js/vendor/select2/i18n/da.js": "admin/js/vendor/select2/i18n/da.766346afe4dd.js", "admin/js/vendor/select2/i18n/gl.js": "admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js", "admin/js/vendor/select2/i18n/lv.js": "admin/js/vendor/select2/i18n/lv.08e62128eac1.js", "admin/js/vendor/select2/i18n/ro.js": "admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js", "admin/js/vendor/select2/i18n/it.js": "admin/js/vendor/select2/i18n/it.be4fe8d365b5.js", "admin/js/vendor/select2/i18n/fa.js": "admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js", "admin/js/vendor/select2/i18n/nb.js": "admin/js/vendor/select2/i18n/nb.da2fce143f27.js", "admin/js/vendor/select2/i18n/pt-BR.js": "admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js", "admin/js/vendor/select2/i18n/bn.js": "admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js", "admin/js/vendor/select2/i18n/sq.js": "admin/js/vendor/select2/i18n/sq.5636b60d29c9.js", "admin/js/vendor/select2/i18n/et.js": "admin/js/vendor/select2/i18n/et.2b96fd98289d.js", "admin/js/vendor/xregexp/xregexp.min.js": "admin/js/vendor/xregexp/xregexp.min.b0439563a5d3.js", "admin/js/vendor/xregexp/xregexp.js": "admin/js/vendor/xregexp/xregexp.efda034b9537.js", "admin/js/vendor/xregexp/LICENSE.txt": "admin/js/vendor/xregexp/LICENSE.bf79e414957a.txt", "admin/js/vendor/select2/LICENSE.md": "admin/js/vendor/select2/LICENSE.f94142512c91.md", "admin/js/vendor/select2/select2.full.js": "admin/js/vendor/select2/select2.full.c2afdeda3058.js", "admin/js/vendor/select2/select2.full.min.js": "admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js", "admin/js/vendor/jquery/jquery.min.js": "admin/js/vendor/jquery/jquery.min.dc5e7f18c8d3.js", "admin/js/vendor/jquery/jquery.js": "admin/js/vendor/jquery/jquery.23c7c5d2d131.js", "admin/js/vendor/jquery/LICENSE.txt": "admin/js/vendor/jquery/LICENSE.75308107741f.txt", "admin/css/vendor/select2/select2.css": "admin/css/vendor/select2/select2.a2194c262648.css", "admin/css/vendor/select2/LICENSE-SELECT2.md": "admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md", "admin/css/vendor/select2/select2.min.css": "admin/css/vendor/select2/select2.min.9f54e6414f87.css", "babybuddy/img/core/child-placeholder.png": "babybuddy/img/core/child-placeholder.7c0a81f0d7f0.png", "rest_framework/docs/js/api.js": "rest_framework/docs/js/api.c9743eab7a4f.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.3208b6cc4466.css", "admin/js/admin/RelatedObjectLookups.js": "admin/js/admin/RelatedObjectLookups.b4d76b6aaf0b.js", "admin/js/admin/DateTimeShortcuts.js": "admin/js/admin/DateTimeShortcuts.5548f99471bf.js", "admin/img/gis/move_vertex_off.svg": "admin/img/gis/move_vertex_off.7a23bf31ef8a.svg", "admin/img/gis/move_vertex_on.svg": "admin/img/gis/move_vertex_on.0047eba25b67.svg", "babybuddy/font/babybuddy.svg": "babybuddy/font/babybuddy.92b0e8730a39.svg", "babybuddy/font/babybuddy.ttf": "babybuddy/font/babybuddy.5b508a0e4073.ttf", "babybuddy/font/babybuddy.woff": "babybuddy/font/babybuddy.ecc1b92002b6.woff", "babybuddy/font/babybuddy.eot": "babybuddy/font/babybuddy.62cc646af202.eot", "babybuddy/font/babybuddy.woff2": "babybuddy/font/babybuddy.34582a429c60.woff2", "babybuddy/logo/icon-brand.png": "babybuddy/logo/icon-brand.32cbedf6aee3.png", "babybuddy/logo/icon.png": "babybuddy/logo/icon.df80640f0465.png", "babybuddy/logo/logo.png": "babybuddy/logo/logo.62870041cc83.png", "babybuddy/js/graph.js": "babybuddy/js/graph.c70d07f5822f.js", "babybuddy/js/app.js": "babybuddy/js/app.6477a025d778.js", "babybuddy/js/vendor.js": "babybuddy/js/vendor.f939b61597b3.js", "babybuddy/root/favicon.svg": "babybuddy/root/favicon.12fe726d0bac.svg", "babybuddy/css/app.css": "babybuddy/css/app.d83022714670.css", "rest_framework/js/jquery-3.5.1.min.js": "rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.969930007329.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.0ea6e6052ab5.js", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.46ed116b0edd.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.66b84a04375e.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.77017a69879a.css", "admin/js/SelectFilter2.js": "admin/js/SelectFilter2.d250dcb52a9a.js", "admin/js/popup_response.js": "admin/js/popup_response.c6cc78ea5551.js", "admin/js/prepopulate_init.js": "admin/js/prepopulate_init.e056047b7a7e.js", "admin/js/jquery.init.js": "admin/js/jquery.init.b7781a0897fc.js", "admin/js/nav_sidebar.js": "admin/js/nav_sidebar.7605597ddf52.js", "admin/js/prepopulate.js": "admin/js/prepopulate.bd2361dfd64d.js", "admin/js/SelectBox.js": "admin/js/SelectBox.8161741c7647.js", "admin/js/core.js": "admin/js/core.ccd84108ec57.js", "admin/js/cancel.js": "admin/js/cancel.ecc4c5ca7b32.js", "admin/js/change_form.js": "admin/js/change_form.9d8ca4f96b75.js", "admin/js/collapse.js": "admin/js/collapse.f84e7410290f.js", "admin/js/autocomplete.js": "admin/js/autocomplete.b6b77d0e5906.js", "admin/js/urlify.js": "admin/js/urlify.25cc3eac8123.js", "admin/js/actions.js": "admin/js/actions.a6d23e8853fd.js", "admin/js/calendar.js": "admin/js/calendar.f8a5d055eb33.js", "admin/js/inlines.js": "admin/js/inlines.7596b7fd289e.js", "admin/fonts/README.txt": "admin/fonts/README.ab99e6b541ea.txt", "admin/fonts/Roboto-Light-webfont.woff": "admin/fonts/Roboto-Light-webfont.c73eb1ceba33.woff", "admin/fonts/Roboto-Regular-webfont.woff": "admin/fonts/Roboto-Regular-webfont.35b07eb2f871.woff", "admin/fonts/Roboto-Bold-webfont.woff": "admin/fonts/Roboto-Bold-webfont.50d75e48e0a3.woff", "admin/fonts/LICENSE.txt": "admin/fonts/LICENSE.d273d63619c9.txt", "admin/img/README.txt": "admin/img/README.a70711a38d87.txt", "admin/img/icon-alert.svg": "admin/img/icon-alert.034cc7d8a67f.svg", "admin/img/tooltag-add.svg": "admin/img/tooltag-add.e59d620a9742.svg", "admin/img/icon-calendar.svg": "admin/img/icon-calendar.ac7aea671bea.svg", "admin/img/calendar-icons.svg": "admin/img/calendar-icons.39b290681a8b.svg", "admin/img/icon-addlink.svg": "admin/img/icon-addlink.d519b3bab011.svg", "admin/img/icon-deletelink.svg": "admin/img/icon-deletelink.564ef9dc3854.svg", "admin/img/icon-clock.svg": "admin/img/icon-clock.e1d4dfac3f2b.svg", "admin/img/tooltag-arrowright.svg": "admin/img/tooltag-arrowright.bbfb788a849e.svg", "admin/img/icon-unknown-alt.svg": "admin/img/icon-unknown-alt.81536e128bb6.svg", "admin/img/selector-icons.svg": "admin/img/selector-icons.b4555096cea2.svg", "admin/img/LICENSE": "admin/img/LICENSE.2c54f4e1ca1c", "admin/img/icon-unknown.svg": "admin/img/icon-unknown.a18cb4398978.svg", "admin/img/icon-changelink.svg": "admin/img/icon-changelink.18d2fd706348.svg", "admin/img/search.svg": "admin/img/search.7cf54ff789c6.svg", "admin/img/sorting-icons.svg": "admin/img/sorting-icons.3a097b59f104.svg", "admin/img/icon-no.svg": "admin/img/icon-no.439e821418cd.svg", "admin/img/inline-delete.svg": "admin/img/inline-delete.fec1b761f254.svg", "admin/img/icon-yes.svg": "admin/img/icon-yes.d2f9f035226a.svg", "admin/img/icon-viewlink.svg": "admin/img/icon-viewlink.41eb31f7826e.svg", "admin/css/dashboard.css": "admin/css/dashboard.be83f13e4369.css", "admin/css/base.css": "admin/css/base.1f418065fc2c.css", "admin/css/widgets.css": "admin/css/widgets.694d845b2cb1.css", "admin/css/responsive.css": "admin/css/responsive.b128bdf0edef.css", "admin/css/autocomplete.css": "admin/css/autocomplete.4a81fc4242d0.css", "admin/css/fonts.css": "admin/css/fonts.168bab448fee.css", "admin/css/nav_sidebar.css": "admin/css/nav_sidebar.0fd434145f4d.css", "admin/css/changelists.css": "admin/css/changelists.c70d77c47e69.css", "admin/css/forms.css": "admin/css/forms.1d89ec6432f5.css", "admin/css/responsive_rtl.css": "admin/css/responsive_rtl.e13ae754cceb.css", "admin/css/rtl.css": "admin/css/rtl.4bc23eb90919.css", "admin/css/login.css": "admin/css/login.c35adf41bb6e.css", "import_export/action_formats.js": "import_export/action_formats.11c3e817b80a.js", "import_export/import.css": "import_export/import.87299a479910.css"}, "version": "1.0"}
\ No newline at end of file
+{"paths": {"admin/js/vendor/select2/i18n/pt.js": "admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js", "admin/js/vendor/select2/i18n/hsb.js": "admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js", "admin/js/vendor/select2/i18n/vi.js": "admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js", "admin/js/vendor/select2/i18n/lv.js": "admin/js/vendor/select2/i18n/lv.08e62128eac1.js", "admin/js/vendor/select2/i18n/gl.js": "admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js", "admin/js/vendor/select2/i18n/pl.js": "admin/js/vendor/select2/i18n/pl.6031b4f16452.js", "admin/js/vendor/select2/i18n/el.js": "admin/js/vendor/select2/i18n/el.27097f071856.js", "admin/js/vendor/select2/i18n/dsb.js": "admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js", "admin/js/vendor/select2/i18n/et.js": "admin/js/vendor/select2/i18n/et.2b96fd98289d.js", "admin/js/vendor/select2/i18n/is.js": "admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js", "admin/js/vendor/select2/i18n/sl.js": "admin/js/vendor/select2/i18n/sl.131a78bc0752.js", "admin/js/vendor/select2/i18n/ko.js": "admin/js/vendor/select2/i18n/ko.e7be6c20e673.js", "admin/js/vendor/select2/i18n/hr.js": "admin/js/vendor/select2/i18n/hr.a2b092cc1147.js", "admin/js/vendor/select2/i18n/ms.js": "admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js", "admin/js/vendor/select2/i18n/fi.js": "admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js", "admin/js/vendor/select2/i18n/th.js": "admin/js/vendor/select2/i18n/th.f38c20b0221b.js", "admin/js/vendor/select2/i18n/ru.js": "admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js", "admin/js/vendor/select2/i18n/eu.js": "admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js", "admin/js/vendor/select2/i18n/mk.js": "admin/js/vendor/select2/i18n/mk.dabbb9087130.js", "admin/js/vendor/select2/i18n/sq.js": "admin/js/vendor/select2/i18n/sq.5636b60d29c9.js", "admin/js/vendor/select2/i18n/ja.js": "admin/js/vendor/select2/i18n/ja.170ae885d74f.js", "admin/js/vendor/select2/i18n/ka.js": "admin/js/vendor/select2/i18n/ka.2083264a54f0.js", "admin/js/vendor/select2/i18n/he.js": "admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js", "admin/js/vendor/select2/i18n/bg.js": "admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js", "admin/js/vendor/select2/i18n/hy.js": "admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js", "admin/js/vendor/select2/i18n/sr-Cyrl.js": "admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js", "admin/js/vendor/select2/i18n/ne.js": "admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js", "admin/js/vendor/select2/i18n/af.js": "admin/js/vendor/select2/i18n/af.4f6fcd73488c.js", "admin/js/vendor/select2/i18n/id.js": "admin/js/vendor/select2/i18n/id.04debded514d.js", "admin/js/vendor/select2/i18n/az.js": "admin/js/vendor/select2/i18n/az.270c257daf81.js", "admin/js/vendor/select2/i18n/ca.js": "admin/js/vendor/select2/i18n/ca.a166b745933a.js", "admin/js/vendor/select2/i18n/nb.js": "admin/js/vendor/select2/i18n/nb.da2fce143f27.js", "admin/js/vendor/select2/i18n/zh-CN.js": "admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js", "admin/js/vendor/select2/i18n/zh-TW.js": "admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js", "admin/js/vendor/select2/i18n/pt-BR.js": "admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js", "admin/js/vendor/select2/i18n/da.js": "admin/js/vendor/select2/i18n/da.766346afe4dd.js", "admin/js/vendor/select2/i18n/fa.js": "admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js", "admin/js/vendor/select2/i18n/de.js": "admin/js/vendor/select2/i18n/de.8a1c222b0204.js", "admin/js/vendor/select2/i18n/en.js": "admin/js/vendor/select2/i18n/en.cf932ba09a98.js", "admin/js/vendor/select2/i18n/bs.js": "admin/js/vendor/select2/i18n/bs.91624382358e.js", "admin/js/vendor/select2/i18n/tk.js": "admin/js/vendor/select2/i18n/tk.7c572a68c78f.js", "admin/js/vendor/select2/i18n/sv.js": "admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js", "admin/js/vendor/select2/i18n/hi.js": "admin/js/vendor/select2/i18n/hi.70640d41628f.js", "admin/js/vendor/select2/i18n/uk.js": "admin/js/vendor/select2/i18n/uk.8cede7f4803c.js", "admin/js/vendor/select2/i18n/cs.js": "admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js", "admin/js/vendor/select2/i18n/km.js": "admin/js/vendor/select2/i18n/km.c23089cb06ca.js", "admin/js/vendor/select2/i18n/fr.js": "admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js", "admin/js/vendor/select2/i18n/nl.js": "admin/js/vendor/select2/i18n/nl.997868a37ed8.js", "admin/js/vendor/select2/i18n/sr.js": "admin/js/vendor/select2/i18n/sr.5ed85a48f483.js", "admin/js/vendor/select2/i18n/hu.js": "admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js", "admin/js/vendor/select2/i18n/lt.js": "admin/js/vendor/select2/i18n/lt.23c7ce903300.js", "admin/js/vendor/select2/i18n/ar.js": "admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js", "admin/js/vendor/select2/i18n/sk.js": "admin/js/vendor/select2/i18n/sk.33d02cef8d11.js", "admin/js/vendor/select2/i18n/it.js": "admin/js/vendor/select2/i18n/it.be4fe8d365b5.js", "admin/js/vendor/select2/i18n/es.js": "admin/js/vendor/select2/i18n/es.66dbc2652fb1.js", "admin/js/vendor/select2/i18n/bn.js": "admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js", "admin/js/vendor/select2/i18n/ro.js": "admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js", "admin/js/vendor/select2/i18n/ps.js": "admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js", "admin/js/vendor/select2/i18n/tr.js": "admin/js/vendor/select2/i18n/tr.b5a0643d1545.js", "admin/css/vendor/select2/select2.min.css": "admin/css/vendor/select2/select2.min.9f54e6414f87.css", "admin/css/vendor/select2/LICENSE-SELECT2.md": "admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md", "admin/css/vendor/select2/select2.css": "admin/css/vendor/select2/select2.a2194c262648.css", "admin/js/vendor/jquery/jquery.min.js": "admin/js/vendor/jquery/jquery.min.dc5e7f18c8d3.js", "admin/js/vendor/jquery/LICENSE.txt": "admin/js/vendor/jquery/LICENSE.75308107741f.txt", "admin/js/vendor/jquery/jquery.js": "admin/js/vendor/jquery/jquery.23c7c5d2d131.js", "admin/js/vendor/xregexp/xregexp.min.js": "admin/js/vendor/xregexp/xregexp.min.b0439563a5d3.js", "admin/js/vendor/xregexp/xregexp.js": "admin/js/vendor/xregexp/xregexp.efda034b9537.js", "admin/js/vendor/xregexp/LICENSE.txt": "admin/js/vendor/xregexp/LICENSE.bf79e414957a.txt", "admin/js/vendor/select2/LICENSE.md": "admin/js/vendor/select2/LICENSE.f94142512c91.md", "admin/js/vendor/select2/select2.full.min.js": "admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js", "admin/js/vendor/select2/select2.full.js": "admin/js/vendor/select2/select2.full.c2afdeda3058.js", "babybuddy/img/core/child-placeholder.png": "babybuddy/img/core/child-placeholder.7c0a81f0d7f0.png", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.3208b6cc4466.css", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/js/api.js": "rest_framework/docs/js/api.c9743eab7a4f.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "admin/js/admin/RelatedObjectLookups.js": "admin/js/admin/RelatedObjectLookups.b4d76b6aaf0b.js", "admin/js/admin/DateTimeShortcuts.js": "admin/js/admin/DateTimeShortcuts.5548f99471bf.js", "admin/img/gis/move_vertex_on.svg": "admin/img/gis/move_vertex_on.0047eba25b67.svg", "admin/img/gis/move_vertex_off.svg": "admin/img/gis/move_vertex_off.7a23bf31ef8a.svg", "babybuddy/css/app.css": "babybuddy/css/app.d83022714670.css", "babybuddy/js/graph.js": "babybuddy/js/graph.aec8efcce748.js", "babybuddy/js/vendor.js": "babybuddy/js/vendor.f939b61597b3.js", "babybuddy/js/app.js": "babybuddy/js/app.6477a025d778.js", "babybuddy/logo/icon.png": "babybuddy/logo/icon.df80640f0465.png", "babybuddy/logo/icon-brand.png": "babybuddy/logo/icon-brand.32cbedf6aee3.png", "babybuddy/logo/logo.png": "babybuddy/logo/logo.62870041cc83.png", "babybuddy/root/favicon.svg": "babybuddy/root/favicon.12fe726d0bac.svg", "babybuddy/font/babybuddy.svg": "babybuddy/font/babybuddy.92b0e8730a39.svg", "babybuddy/font/babybuddy.woff": "babybuddy/font/babybuddy.ecc1b92002b6.woff", "babybuddy/font/babybuddy.woff2": "babybuddy/font/babybuddy.34582a429c60.woff2", "babybuddy/font/babybuddy.ttf": "babybuddy/font/babybuddy.5b508a0e4073.ttf", "babybuddy/font/babybuddy.eot": "babybuddy/font/babybuddy.62cc646af202.eot", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.77017a69879a.css", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.46ed116b0edd.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.66b84a04375e.css", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.0ea6e6052ab5.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.969930007329.js", "rest_framework/js/jquery-3.5.1.min.js": "rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "admin/css/widgets.css": "admin/css/widgets.694d845b2cb1.css", "admin/css/login.css": "admin/css/login.c35adf41bb6e.css", "admin/css/dashboard.css": "admin/css/dashboard.be83f13e4369.css", "admin/css/nav_sidebar.css": "admin/css/nav_sidebar.0fd434145f4d.css", "admin/css/responsive.css": "admin/css/responsive.b128bdf0edef.css", "admin/css/autocomplete.css": "admin/css/autocomplete.4a81fc4242d0.css", "admin/css/responsive_rtl.css": "admin/css/responsive_rtl.e13ae754cceb.css", "admin/css/forms.css": "admin/css/forms.1d89ec6432f5.css", "admin/css/fonts.css": "admin/css/fonts.168bab448fee.css", "admin/css/rtl.css": "admin/css/rtl.4bc23eb90919.css", "admin/css/base.css": "admin/css/base.1f418065fc2c.css", "admin/css/changelists.css": "admin/css/changelists.c70d77c47e69.css", "admin/js/urlify.js": "admin/js/urlify.25cc3eac8123.js", "admin/js/core.js": "admin/js/core.ccd84108ec57.js", "admin/js/collapse.js": "admin/js/collapse.f84e7410290f.js", "admin/js/actions.js": "admin/js/actions.3edba334d0a4.js", "admin/js/prepopulate.js": "admin/js/prepopulate.bd2361dfd64d.js", "admin/js/cancel.js": "admin/js/cancel.ecc4c5ca7b32.js", "admin/js/nav_sidebar.js": "admin/js/nav_sidebar.7605597ddf52.js", "admin/js/autocomplete.js": "admin/js/autocomplete.b6b77d0e5906.js", "admin/js/inlines.js": "admin/js/inlines.7596b7fd289e.js", "admin/js/change_form.js": "admin/js/change_form.9d8ca4f96b75.js", "admin/js/SelectFilter2.js": "admin/js/SelectFilter2.d250dcb52a9a.js", "admin/js/jquery.init.js": "admin/js/jquery.init.b7781a0897fc.js", "admin/js/popup_response.js": "admin/js/popup_response.c6cc78ea5551.js", "admin/js/SelectBox.js": "admin/js/SelectBox.8161741c7647.js", "admin/js/calendar.js": "admin/js/calendar.f8a5d055eb33.js", "admin/js/prepopulate_init.js": "admin/js/prepopulate_init.e056047b7a7e.js", "admin/img/search.svg": "admin/img/search.7cf54ff789c6.svg", "admin/img/icon-calendar.svg": "admin/img/icon-calendar.ac7aea671bea.svg", "admin/img/icon-clock.svg": "admin/img/icon-clock.e1d4dfac3f2b.svg", "admin/img/icon-no.svg": "admin/img/icon-no.439e821418cd.svg", "admin/img/tooltag-add.svg": "admin/img/tooltag-add.e59d620a9742.svg", "admin/img/inline-delete.svg": "admin/img/inline-delete.fec1b761f254.svg", "admin/img/LICENSE": "admin/img/LICENSE.2c54f4e1ca1c", "admin/img/icon-changelink.svg": "admin/img/icon-changelink.18d2fd706348.svg", "admin/img/icon-unknown.svg": "admin/img/icon-unknown.a18cb4398978.svg", "admin/img/sorting-icons.svg": "admin/img/sorting-icons.3a097b59f104.svg", "admin/img/icon-viewlink.svg": "admin/img/icon-viewlink.41eb31f7826e.svg", "admin/img/icon-yes.svg": "admin/img/icon-yes.d2f9f035226a.svg", "admin/img/icon-addlink.svg": "admin/img/icon-addlink.d519b3bab011.svg", "admin/img/icon-unknown-alt.svg": "admin/img/icon-unknown-alt.81536e128bb6.svg", "admin/img/icon-deletelink.svg": "admin/img/icon-deletelink.564ef9dc3854.svg", "admin/img/README.txt": "admin/img/README.a70711a38d87.txt", "admin/img/selector-icons.svg": "admin/img/selector-icons.b4555096cea2.svg", "admin/img/calendar-icons.svg": "admin/img/calendar-icons.39b290681a8b.svg", "admin/img/tooltag-arrowright.svg": "admin/img/tooltag-arrowright.bbfb788a849e.svg", "admin/img/icon-alert.svg": "admin/img/icon-alert.034cc7d8a67f.svg", "admin/fonts/Roboto-Light-webfont.woff": "admin/fonts/Roboto-Light-webfont.c73eb1ceba33.woff", "admin/fonts/Roboto-Bold-webfont.woff": "admin/fonts/Roboto-Bold-webfont.50d75e48e0a3.woff", "admin/fonts/Roboto-Regular-webfont.woff": "admin/fonts/Roboto-Regular-webfont.35b07eb2f871.woff", "admin/fonts/README.txt": "admin/fonts/README.ab99e6b541ea.txt", "admin/fonts/LICENSE.txt": "admin/fonts/LICENSE.d273d63619c9.txt", "import_export/import.css": "import_export/import.358144dd8713.css", "import_export/action_formats.js": "import_export/action_formats.11c3e817b80a.js"}, "version": "1.0"}
\ No newline at end of file