@pie-lib/plot 2.4.2 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +15 -0
- package/CHANGELOG.md +22 -0
- package/lib/label.js +135 -0
- package/lib/label.js.map +1 -0
- package/lib/root.js +120 -31
- package/lib/root.js.map +1 -1
- package/package.json +2 -2
- package/src/label.jsx +122 -0
- package/src/root.jsx +122 -26
package/CHANGELOG.json
CHANGED
|
@@ -333,5 +333,20 @@
|
|
|
333
333
|
"committerDate": "2021-03-26 12:18:14 +0200",
|
|
334
334
|
"isTagged": true,
|
|
335
335
|
"tag": "@pie-lib/plot@2.1.5"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"type": "fix",
|
|
339
|
+
"scope": "charting",
|
|
340
|
+
"subject": "fix conflicts",
|
|
341
|
+
"merge": null,
|
|
342
|
+
"header": "fix(charting): fix conflicts",
|
|
343
|
+
"body": null,
|
|
344
|
+
"footer": null,
|
|
345
|
+
"notes": [],
|
|
346
|
+
"hash": "2b3da1b4b87a518b5c18daf6f6c57db1ccc1c536",
|
|
347
|
+
"gitTags": "",
|
|
348
|
+
"committerDate": "2022-09-19 15:27:23 +0300",
|
|
349
|
+
"isTagged": true,
|
|
350
|
+
"tag": "@pie-lib/plot@2.5.0"
|
|
336
351
|
}
|
|
337
352
|
]
|
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [2.5.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@2.4.2...@pie-lib/plot@2.5.0) (2022-09-28)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **charting:** arrange the position of the checkboxes labels, fix style amd arrangement ([c5f2f7a](https://github.com/pie-framework/pie-lib/commit/c5f2f7acf60898e77ecc0b47b190256537605c8e))
|
|
12
|
+
* **charting:** change position for checbox labels in order to fit without overlapping the checboxes ([98a56cb](https://github.com/pie-framework/pie-lib/commit/98a56cbae47c4bcadd0d4087d6b7df3c4d5d3e2e))
|
|
13
|
+
* **charting:** fix conflicts ([2b3da1b](https://github.com/pie-framework/pie-lib/commit/2b3da1b4b87a518b5c18daf6f6c57db1ccc1c536))
|
|
14
|
+
* **charting:** prevent page scroll on devices when a charting category is dragged ([6fe37ff](https://github.com/pie-framework/pie-lib/commit/6fe37ffa0e2c387d7174d0daf5cfc1cf9e8abf80))
|
|
15
|
+
* **editable-html, graphing:** Add support to remove scrollbar from editable-html and removed scrollbar from graphing labels PD-1968 ([d04a0d3](https://github.com/pie-framework/pie-lib/commit/d04a0d3bc66d4b861f60b24198301459c15bd151))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* **charting:** refactor ability to edit chart title and labels, fix style ([6edcdfb](https://github.com/pie-framework/pie-lib/commit/6edcdfbfbd83806a8487c29c42ae447b11850ac7))
|
|
21
|
+
* **charting:** try to set up labels for charting, work in progress ([c6cd049](https://github.com/pie-framework/pie-lib/commit/c6cd049723dadab329748511da2f6c4f1fa943db))
|
|
22
|
+
* **graphing, plot:** moved graphing labels to plot package + fixed math input + added support for labels rotation PD-1962 ([a85ec39](https://github.com/pie-framework/pie-lib/commit/a85ec3911dd1f6bc89e4eb20a19ef8f957deebf1))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
## [2.4.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/plot@2.4.1...@pie-lib/plot@2.4.2) (2022-08-30)
|
|
7
29
|
|
|
8
30
|
|
package/lib/label.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
19
|
+
|
|
20
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
21
|
+
|
|
22
|
+
var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
|
|
23
|
+
|
|
24
|
+
var _styles = require("@material-ui/core/styles");
|
|
25
|
+
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
+
|
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
+
|
|
30
|
+
var LabelComponent = function LabelComponent(props) {
|
|
31
|
+
var _cn;
|
|
32
|
+
|
|
33
|
+
var classes = props.classes,
|
|
34
|
+
disabledLabel = props.disabledLabel,
|
|
35
|
+
graphHeight = props.graphHeight,
|
|
36
|
+
graphWidth = props.graphWidth,
|
|
37
|
+
isChartBottomLabel = props.isChartBottomLabel,
|
|
38
|
+
isChartLeftLabel = props.isChartLeftLabel,
|
|
39
|
+
placeholder = props.placeholder,
|
|
40
|
+
text = props.text,
|
|
41
|
+
side = props.side,
|
|
42
|
+
onChange = props.onChange;
|
|
43
|
+
|
|
44
|
+
var _useState = (0, _react.useState)(false),
|
|
45
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
46
|
+
rotatedToHorizontal = _useState2[0],
|
|
47
|
+
setRotatedToHorizontal = _useState2[1];
|
|
48
|
+
|
|
49
|
+
var activePlugins = ['bold', 'italic', 'underline', 'strikethrough', 'math' // 'languageCharacters'
|
|
50
|
+
];
|
|
51
|
+
var chartValue = side === 'left' && isChartLeftLabel && graphHeight - 148;
|
|
52
|
+
var defaultStyle = {
|
|
53
|
+
width: chartValue || (side === 'left' || side === 'right' ? graphHeight - 8 : graphWidth - 8),
|
|
54
|
+
top: chartValue || side === 'left' && "".concat(graphHeight - 8, "px") || side === 'bottom' && "".concat(graphHeight - 90, "px") || 0,
|
|
55
|
+
left: side === 'right' && "".concat(graphWidth - 8, "px") || (isChartLeftLabel || isChartBottomLabel) && '50px' || 0
|
|
56
|
+
};
|
|
57
|
+
var rotatedStyle = {
|
|
58
|
+
width: graphWidth - 8,
|
|
59
|
+
top: side === 'right' && "".concat(graphHeight - 22, "px") || 0,
|
|
60
|
+
left: 0
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
var rotateLabel = function rotateLabel() {
|
|
64
|
+
return !disabledLabel && (side === 'left' || side === 'right') && setRotatedToHorizontal(true);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return /*#__PURE__*/_react["default"].createElement(_renderUi.Readable, {
|
|
68
|
+
"false": true
|
|
69
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
70
|
+
className: (0, _classnames["default"])(classes.axisLabel, (_cn = {}, (0, _defineProperty2["default"])(_cn, classes.rotateLeftLabel, side === 'left' && !rotatedToHorizontal), (0, _defineProperty2["default"])(_cn, classes.rotateRightLabel, side === 'right' && !rotatedToHorizontal), (0, _defineProperty2["default"])(_cn, classes.editLabel, rotatedToHorizontal), (0, _defineProperty2["default"])(_cn, classes.customBottom, isChartBottomLabel), _cn)),
|
|
71
|
+
style: rotatedToHorizontal ? rotatedStyle : defaultStyle,
|
|
72
|
+
onClick: rotateLabel
|
|
73
|
+
}, disabledLabel ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
74
|
+
className: classes.disabledLabel,
|
|
75
|
+
dangerouslySetInnerHTML: {
|
|
76
|
+
__html: text || ''
|
|
77
|
+
}
|
|
78
|
+
}) : /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
79
|
+
markup: text || '',
|
|
80
|
+
onChange: onChange,
|
|
81
|
+
placeholder: !disabledLabel && placeholder,
|
|
82
|
+
toolbarOpts: {
|
|
83
|
+
position: side === 'bottom' ? 'top' : 'bottom',
|
|
84
|
+
noBorder: true
|
|
85
|
+
},
|
|
86
|
+
disableScrollbar: true,
|
|
87
|
+
activePlugins: activePlugins,
|
|
88
|
+
onDone: function onDone() {
|
|
89
|
+
return setRotatedToHorizontal(false);
|
|
90
|
+
}
|
|
91
|
+
})));
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
var _default = (0, _styles.withStyles)(function (theme) {
|
|
95
|
+
return {
|
|
96
|
+
label: {
|
|
97
|
+
fill: _renderUi.color.secondary()
|
|
98
|
+
},
|
|
99
|
+
axisLabel: {
|
|
100
|
+
fontSize: theme.typography.fontSize - 2,
|
|
101
|
+
textAlign: 'center',
|
|
102
|
+
margin: '4px',
|
|
103
|
+
padding: '4px 0'
|
|
104
|
+
},
|
|
105
|
+
disabledLabel: {
|
|
106
|
+
pointerEvents: 'none',
|
|
107
|
+
width: '100%'
|
|
108
|
+
},
|
|
109
|
+
editLabel: {
|
|
110
|
+
position: 'absolute',
|
|
111
|
+
backgroundColor: 'white',
|
|
112
|
+
borderRadius: '4px',
|
|
113
|
+
boxShadow: '0px 5px 8px rgba(0, 0, 0, 0.15)',
|
|
114
|
+
zIndex: 10
|
|
115
|
+
},
|
|
116
|
+
rotateLeftLabel: {
|
|
117
|
+
rotate: '-90deg',
|
|
118
|
+
transformOrigin: '0 0',
|
|
119
|
+
transformStyle: 'preserve-3d',
|
|
120
|
+
position: 'absolute'
|
|
121
|
+
},
|
|
122
|
+
rotateRightLabel: {
|
|
123
|
+
rotate: '90deg',
|
|
124
|
+
transformOrigin: '0 0',
|
|
125
|
+
transformStyle: 'preserve-3d',
|
|
126
|
+
position: 'absolute'
|
|
127
|
+
},
|
|
128
|
+
customBottom: {
|
|
129
|
+
position: 'absolute'
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
})(LabelComponent);
|
|
133
|
+
|
|
134
|
+
exports["default"] = _default;
|
|
135
|
+
//# sourceMappingURL=label.js.map
|
package/lib/label.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/label.jsx"],"names":["LabelComponent","props","classes","disabledLabel","graphHeight","graphWidth","isChartBottomLabel","isChartLeftLabel","placeholder","text","side","onChange","rotatedToHorizontal","setRotatedToHorizontal","activePlugins","chartValue","defaultStyle","width","top","left","rotatedStyle","rotateLabel","axisLabel","rotateLeftLabel","rotateRightLabel","editLabel","customBottom","__html","position","noBorder","theme","label","fill","color","secondary","fontSize","typography","textAlign","margin","padding","pointerEvents","backgroundColor","borderRadius","boxShadow","zIndex","rotate","transformOrigin","transformStyle"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { color, Readable } from '@pie-lib/render-ui';\nimport cn from 'classnames';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst LabelComponent = props => {\n const {\n classes,\n disabledLabel,\n graphHeight,\n graphWidth,\n isChartBottomLabel,\n isChartLeftLabel,\n placeholder,\n text,\n side,\n onChange\n } = props;\n const [rotatedToHorizontal, setRotatedToHorizontal] = useState(false);\n const activePlugins = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'math'\n // 'languageCharacters'\n ];\n\n const chartValue = side === 'left' && isChartLeftLabel && graphHeight - 148;\n const defaultStyle = {\n width: chartValue || (side === 'left' || side === 'right' ? graphHeight - 8 : graphWidth - 8),\n top:\n chartValue ||\n (side === 'left' && `${graphHeight - 8}px`) ||\n (side === 'bottom' && `${graphHeight - 90}px`) ||\n 0,\n left:\n (side === 'right' && `${graphWidth - 8}px`) ||\n ((isChartLeftLabel || isChartBottomLabel) && '50px') ||\n 0\n };\n\n const rotatedStyle = {\n width: graphWidth - 8,\n top: (side === 'right' && `${graphHeight - 22}px`) || 0,\n left: 0\n };\n\n const rotateLabel = () =>\n !disabledLabel && (side === 'left' || side === 'right') && setRotatedToHorizontal(true);\n\n return (\n <Readable false>\n <div\n className={cn(classes.axisLabel, {\n [classes.rotateLeftLabel]: side === 'left' && !rotatedToHorizontal,\n [classes.rotateRightLabel]: side === 'right' && !rotatedToHorizontal,\n [classes.editLabel]: rotatedToHorizontal,\n [classes.customBottom]: isChartBottomLabel\n })}\n style={rotatedToHorizontal ? rotatedStyle : defaultStyle}\n onClick={rotateLabel}\n >\n {disabledLabel ? (\n <div className={classes.disabledLabel} dangerouslySetInnerHTML={{ __html: text || '' }} />\n ) : (\n <EditableHtml\n markup={text || ''}\n onChange={onChange}\n placeholder={!disabledLabel && placeholder}\n toolbarOpts={{\n position: side === 'bottom' ? 'top' : 'bottom',\n noBorder: true\n }}\n disableScrollbar\n activePlugins={activePlugins}\n onDone={() => setRotatedToHorizontal(false)}\n />\n )}\n </div>\n </Readable>\n );\n};\n\nexport default withStyles(theme => ({\n label: {\n fill: color.secondary()\n },\n axisLabel: {\n fontSize: theme.typography.fontSize - 2,\n textAlign: 'center',\n margin: '4px',\n padding: '4px 0'\n },\n disabledLabel: {\n pointerEvents: 'none',\n width: '100%'\n },\n editLabel: {\n position: 'absolute',\n backgroundColor: 'white',\n borderRadius: '4px',\n boxShadow: '0px 5px 8px rgba(0, 0, 0, 0.15)',\n zIndex: 10\n },\n rotateLeftLabel: {\n rotate: '-90deg',\n transformOrigin: '0 0',\n transformStyle: 'preserve-3d',\n position: 'absolute'\n },\n rotateRightLabel: {\n rotate: '90deg',\n transformOrigin: '0 0',\n transformStyle: 'preserve-3d',\n position: 'absolute'\n },\n customBottom: {\n position: 'absolute'\n }\n}))(LabelComponent);\n"],"file":"label.js"}
|
package/lib/root.js
CHANGED
|
@@ -39,6 +39,12 @@ var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
|
|
|
39
39
|
|
|
40
40
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
41
41
|
|
|
42
|
+
var _label = _interopRequireDefault(require("./label"));
|
|
43
|
+
|
|
44
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
45
|
+
|
|
46
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
47
|
+
|
|
42
48
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
49
|
|
|
44
50
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -78,6 +84,24 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
78
84
|
};
|
|
79
85
|
onMouseMove(snapped);
|
|
80
86
|
});
|
|
87
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChangeLabel", function (newValue, side) {
|
|
88
|
+
var _this$props2 = _this.props,
|
|
89
|
+
labels = _this$props2.labels,
|
|
90
|
+
onChangeLabels = _this$props2.onChangeLabels,
|
|
91
|
+
isChart = _this$props2.isChart;
|
|
92
|
+
|
|
93
|
+
if (isChart) {
|
|
94
|
+
if (side === 'left') {
|
|
95
|
+
onChangeLabels('range', newValue);
|
|
96
|
+
} else {
|
|
97
|
+
onChangeLabels('domain', newValue);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
onChangeLabels(_objectSpread(_objectSpread({}, labels), {}, (0, _defineProperty2["default"])({}, side, newValue)));
|
|
104
|
+
});
|
|
81
105
|
return _this;
|
|
82
106
|
}
|
|
83
107
|
|
|
@@ -98,18 +122,23 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
98
122
|
value: function render() {
|
|
99
123
|
var _this2 = this;
|
|
100
124
|
|
|
101
|
-
var _this$
|
|
102
|
-
disabledTitle = _this$
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
125
|
+
var _this$props3 = this.props,
|
|
126
|
+
disabledTitle = _this$props3.disabledTitle,
|
|
127
|
+
disabledLabels = _this$props3.disabledLabels,
|
|
128
|
+
labels = _this$props3.labels,
|
|
129
|
+
labelsPlaceholders = _this$props3.labelsPlaceholders,
|
|
130
|
+
titlePlaceholder = _this$props3.titlePlaceholder,
|
|
131
|
+
graphProps = _this$props3.graphProps,
|
|
132
|
+
children = _this$props3.children,
|
|
133
|
+
classes = _this$props3.classes,
|
|
134
|
+
defineChart = _this$props3.defineChart,
|
|
135
|
+
onChangeTitle = _this$props3.onChangeTitle,
|
|
136
|
+
isChart = _this$props3.isChart,
|
|
137
|
+
showLabels = _this$props3.showLabels,
|
|
138
|
+
showPixelGuides = _this$props3.showPixelGuides,
|
|
139
|
+
showTitle = _this$props3.showTitle,
|
|
140
|
+
title = _this$props3.title,
|
|
141
|
+
rootRef = _this$props3.rootRef;
|
|
113
142
|
var _graphProps$size = graphProps.size,
|
|
114
143
|
_graphProps$size$widt = _graphProps$size.width,
|
|
115
144
|
width = _graphProps$size$widt === void 0 ? 500 : _graphProps$size$widt,
|
|
@@ -117,13 +146,13 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
117
146
|
height = _graphProps$size$heig === void 0 ? 500 : _graphProps$size$heig,
|
|
118
147
|
domain = graphProps.domain,
|
|
119
148
|
range = graphProps.range;
|
|
120
|
-
var
|
|
121
|
-
var
|
|
122
|
-
var finalWidth = width +
|
|
123
|
-
var finalHeight = height +
|
|
149
|
+
var topPadding = 40;
|
|
150
|
+
var leftPadding = showLabels ? 80 : 60;
|
|
151
|
+
var finalWidth = width + leftPadding * 2 + (domain.padding || 0) * 2;
|
|
152
|
+
var finalHeight = height + topPadding * 2 + (range.padding || 0) * 2;
|
|
124
153
|
var activeTitlePlugins = ['bold', 'italic', 'underline', 'strikethrough', 'math' // 'languageCharacters'
|
|
125
154
|
];
|
|
126
|
-
var actualHeight =
|
|
155
|
+
var actualHeight = defineChart && showPixelGuides ? height - 150 : height;
|
|
127
156
|
var nbOfVerticalLines = parseInt(width / 100);
|
|
128
157
|
var nbOfHorizontalLines = parseInt(actualHeight / 100);
|
|
129
158
|
var sideGridlinesPadding = parseInt(actualHeight % 100);
|
|
@@ -132,7 +161,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
132
161
|
}, showPixelGuides && /*#__PURE__*/_react["default"].createElement("div", {
|
|
133
162
|
className: classes.topPixelGuides,
|
|
134
163
|
style: {
|
|
135
|
-
marginLeft:
|
|
164
|
+
marginLeft: isChart ? 60 : showLabels ? 30 : 10
|
|
136
165
|
}
|
|
137
166
|
}, (0, _toConsumableArray2["default"])(Array(nbOfVerticalLines + 1).keys()).map(function (value) {
|
|
138
167
|
return /*#__PURE__*/_react["default"].createElement(_renderUi.Readable, {
|
|
@@ -141,22 +170,48 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
141
170
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
142
171
|
className: classes.topPixelIndicator
|
|
143
172
|
}, /*#__PURE__*/_react["default"].createElement("div", null, value * 100, "px"), /*#__PURE__*/_react["default"].createElement("div", null, "|")));
|
|
144
|
-
})), showTitle && /*#__PURE__*/_react["default"].createElement(
|
|
145
|
-
className: (0, _classnames["default"])(
|
|
173
|
+
})), showTitle && (disabledTitle ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
174
|
+
className: (0, _classnames["default"])(classes.graphTitle, classes.disabledTitle),
|
|
175
|
+
dangerouslySetInnerHTML: {
|
|
176
|
+
__html: title || ''
|
|
177
|
+
}
|
|
178
|
+
}) : /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
179
|
+
className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, classes.rightMargin, showPixelGuides), classes.graphTitle),
|
|
146
180
|
markup: title || '',
|
|
147
|
-
width: finalWidth,
|
|
148
181
|
onChange: onChangeTitle,
|
|
149
|
-
placeholder: !disabledTitle && 'Click here to add a title for this graph',
|
|
182
|
+
placeholder: defineChart && titlePlaceholder || !disabledTitle && 'Click here to add a title for this graph',
|
|
150
183
|
toolbarOpts: {
|
|
151
184
|
noBorder: true
|
|
152
185
|
},
|
|
153
|
-
activePlugins: activeTitlePlugins
|
|
186
|
+
activePlugins: activeTitlePlugins,
|
|
187
|
+
disableScrollbar: true
|
|
188
|
+
})), showLabels && !isChart && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
189
|
+
side: "top",
|
|
190
|
+
text: labels.top,
|
|
191
|
+
disabledLabel: disabledLabels,
|
|
192
|
+
placeholder: labelsPlaceholders === null || labelsPlaceholders === void 0 ? void 0 : labelsPlaceholders.top,
|
|
193
|
+
graphHeight: finalHeight,
|
|
194
|
+
graphWidth: finalWidth,
|
|
195
|
+
onChange: function onChange(value) {
|
|
196
|
+
return _this2.onChangeLabel(value, 'top');
|
|
197
|
+
}
|
|
154
198
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
155
199
|
className: classes.wrapper
|
|
156
|
-
}, /*#__PURE__*/_react["default"].createElement("
|
|
200
|
+
}, showLabels && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
201
|
+
side: "left",
|
|
202
|
+
text: labels.left,
|
|
203
|
+
disabledLabel: disabledLabels,
|
|
204
|
+
placeholder: labelsPlaceholders === null || labelsPlaceholders === void 0 ? void 0 : labelsPlaceholders.left,
|
|
205
|
+
graphHeight: finalHeight,
|
|
206
|
+
graphWidth: finalWidth,
|
|
207
|
+
isChartLeftLabel: isChart && defineChart,
|
|
208
|
+
onChange: function onChange(value) {
|
|
209
|
+
return _this2.onChangeLabel(value, 'left');
|
|
210
|
+
}
|
|
211
|
+
}), /*#__PURE__*/_react["default"].createElement("svg", {
|
|
157
212
|
width: finalWidth,
|
|
158
213
|
height: finalHeight,
|
|
159
|
-
className: classes.
|
|
214
|
+
className: defineChart ? classes.defineChart : classes.chart
|
|
160
215
|
}, /*#__PURE__*/_react["default"].createElement("g", {
|
|
161
216
|
ref: function ref(r) {
|
|
162
217
|
_this2.g = r;
|
|
@@ -166,12 +221,22 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
166
221
|
}
|
|
167
222
|
},
|
|
168
223
|
className: classes.graphBox,
|
|
169
|
-
transform: "translate(".concat(
|
|
170
|
-
}, children)),
|
|
224
|
+
transform: "translate(".concat(leftPadding, ", ").concat(topPadding, ")")
|
|
225
|
+
}, children)), showLabels && !isChart && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
226
|
+
side: "right",
|
|
227
|
+
text: labels.right,
|
|
228
|
+
disabledLabel: disabledLabels,
|
|
229
|
+
placeholder: labelsPlaceholders === null || labelsPlaceholders === void 0 ? void 0 : labelsPlaceholders.right,
|
|
230
|
+
graphHeight: finalHeight,
|
|
231
|
+
graphWidth: finalWidth,
|
|
232
|
+
onChange: function onChange(value) {
|
|
233
|
+
return _this2.onChangeLabel(value, 'right');
|
|
234
|
+
}
|
|
235
|
+
}), showPixelGuides && /*#__PURE__*/_react["default"].createElement("div", {
|
|
171
236
|
className: classes.sidePixelGuides,
|
|
172
237
|
style: {
|
|
173
238
|
paddingTop: sideGridlinesPadding,
|
|
174
|
-
marginTop:
|
|
239
|
+
marginTop: defineChart ? 25 : 31
|
|
175
240
|
}
|
|
176
241
|
}, (0, _toConsumableArray2["default"])(Array(nbOfHorizontalLines + 1).keys()).reverse().map(function (value) {
|
|
177
242
|
return /*#__PURE__*/_react["default"].createElement(_renderUi.Readable, {
|
|
@@ -180,7 +245,18 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
180
245
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
181
246
|
className: classes.sidePixelIndicator
|
|
182
247
|
}, "\u2501 ", value * 100, "px"));
|
|
183
|
-
})))
|
|
248
|
+
}))), showLabels && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
249
|
+
side: "bottom",
|
|
250
|
+
text: labels.bottom,
|
|
251
|
+
disabledLabel: disabledLabels,
|
|
252
|
+
placeholder: labelsPlaceholders === null || labelsPlaceholders === void 0 ? void 0 : labelsPlaceholders.bottom,
|
|
253
|
+
graphHeight: finalHeight,
|
|
254
|
+
graphWidth: finalWidth,
|
|
255
|
+
isChartBottomLabel: isChart && defineChart,
|
|
256
|
+
onChange: function onChange(value) {
|
|
257
|
+
return _this2.onChangeLabel(value, 'bottom');
|
|
258
|
+
}
|
|
259
|
+
}));
|
|
184
260
|
}
|
|
185
261
|
}]);
|
|
186
262
|
return Root;
|
|
@@ -206,12 +282,22 @@ var styles = function styles(theme) {
|
|
|
206
282
|
root: {
|
|
207
283
|
border: "solid 1px ".concat(_renderUi.color.primaryLight()),
|
|
208
284
|
color: _renderUi.color.text(),
|
|
209
|
-
backgroundColor: _renderUi.color.background()
|
|
285
|
+
backgroundColor: _renderUi.color.background(),
|
|
286
|
+
touchAction: 'none',
|
|
287
|
+
position: 'relative'
|
|
210
288
|
},
|
|
211
289
|
wrapper: {
|
|
212
|
-
display: 'flex'
|
|
290
|
+
display: 'flex',
|
|
291
|
+
position: 'relative'
|
|
213
292
|
},
|
|
214
293
|
svg: {},
|
|
294
|
+
defineChart: {
|
|
295
|
+
paddingLeft: '50px',
|
|
296
|
+
overflow: 'visible'
|
|
297
|
+
},
|
|
298
|
+
chart: {
|
|
299
|
+
overflow: 'visible'
|
|
300
|
+
},
|
|
215
301
|
graphBox: {
|
|
216
302
|
cursor: 'pointer',
|
|
217
303
|
userSelect: 'none'
|
|
@@ -225,6 +311,9 @@ var styles = function styles(theme) {
|
|
|
225
311
|
disabledTitle: {
|
|
226
312
|
pointerEvents: 'none'
|
|
227
313
|
},
|
|
314
|
+
rightMargin: {
|
|
315
|
+
marginRight: '74px'
|
|
316
|
+
},
|
|
228
317
|
topPixelGuides: {
|
|
229
318
|
display: 'flex',
|
|
230
319
|
paddingTop: '6px'
|
package/lib/root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/root.jsx"],"names":["Root","g","props","graphProps","onMouseMove","scale","snap","coords","_groups","x","invert","y","snapped","on","mouseMove","bind","disabledTitle","children","classes","onChangeTitle","thisIsChart","showLabels","showPixelGuides","showTitle","title","rootRef","size","width","height","domain","range","padding","extraPadding","finalWidth","finalHeight","activeTitlePlugins","actualHeight","nbOfVerticalLines","parseInt","nbOfHorizontalLines","sideGridlinesPadding","root","topPixelGuides","marginLeft","Array","keys","map","value","topPixelIndicator","graphTitle","noBorder","wrapper","svg","r","graphBox","sidePixelGuides","paddingTop","marginTop","reverse","sidePixelIndicator","React","Component","PropTypes","string","ChildrenType","bool","GraphPropsType","isRequired","func","object","styles","theme","border","color","primaryLight","text","backgroundColor","background","display","cursor","userSelect","fontSize","typography","textAlign","pointerEvents","flexDirection","alignItems","marginRight","marginBottom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { ChildrenType } from './types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { select, mouse } from 'd3-selection';\nimport PropTypes from 'prop-types';\nimport { GraphPropsType } from './types';\nimport { color, Readable } from '@pie-lib/render-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport cn from 'classnames';\n\nexport class Root extends React.Component {\n static propTypes = {\n title: PropTypes.string,\n children: ChildrenType,\n disabledTitle: PropTypes.bool,\n graphProps: GraphPropsType.isRequired,\n onChangeTitle: PropTypes.func,\n onMouseMove: PropTypes.func,\n classes: PropTypes.object.isRequired,\n showLabels: PropTypes.bool,\n showTitle: PropTypes.bool,\n showPixelGuides: PropTypes.bool,\n rootRef: PropTypes.func\n };\n\n mouseMove = g => {\n const { graphProps, onMouseMove } = this.props;\n\n if (!onMouseMove) {\n return;\n }\n\n const { scale, snap } = graphProps;\n const coords = mouse(g._groups[0][0]);\n const x = scale.x.invert(coords[0]);\n const y = scale.y.invert(coords[1]);\n\n const snapped = {\n x: snap.x(x),\n y: snap.y(y)\n };\n\n onMouseMove(snapped);\n };\n\n componentDidMount() {\n const g = select(this.g);\n g.on('mousemove', this.mouseMove.bind(this, g));\n }\n\n componentWillUnmount() {\n const g = select(this.g);\n g.on('mousemove', null);\n }\n\n render() {\n const {\n disabledTitle,\n graphProps,\n children,\n classes,\n onChangeTitle,\n thisIsChart,\n showLabels,\n showPixelGuides,\n showTitle,\n title,\n rootRef\n } = this.props;\n const {\n size: { width = 500, height = 500 },\n domain,\n range\n } = graphProps;\n\n const padding = showLabels ? 70 : 40;\n const extraPadding = showLabels ? 16 : 40;\n const finalWidth = width + padding * 2 + (domain.padding || 0) * 2 + extraPadding;\n const finalHeight = height + padding * 2 + (range.padding || 0) * 2;\n\n const activeTitlePlugins = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'math'\n // 'languageCharacters'\n ];\n\n const actualHeight = thisIsChart && showPixelGuides ? height - 80 : height;\n const nbOfVerticalLines = parseInt(width / 100);\n const nbOfHorizontalLines = parseInt(actualHeight / 100);\n const sideGridlinesPadding = parseInt(actualHeight % 100);\n\n return (\n <div className={classes.root}>\n {showPixelGuides && (\n <div className={classes.topPixelGuides} style={{ marginLeft: thisIsChart ? 10 : 20 }}>\n {[...Array(nbOfVerticalLines + 1).keys()].map(value => (\n <Readable false key={`top-guide-${value}`}>\n <div className={classes.topPixelIndicator}>\n <div>{value * 100}px</div>\n <div>|</div>\n </div>\n </Readable>\n ))}\n </div>\n )}\n {showTitle && (\n <EditableHtml\n className={cn(\n {\n [classes.disabledTitle]: disabledTitle\n },\n classes.graphTitle\n )}\n markup={title || ''}\n width={finalWidth}\n onChange={onChangeTitle}\n placeholder={!disabledTitle && 'Click here to add a title for this graph'}\n toolbarOpts={{ noBorder: true }}\n activePlugins={activeTitlePlugins}\n />\n )}\n <div className={classes.wrapper}>\n <svg width={finalWidth} height={finalHeight} className={classes.svg}>\n <g\n ref={r => {\n this.g = r;\n if (rootRef) {\n rootRef(r);\n }\n }}\n className={classes.graphBox}\n transform={`translate(${padding}, ${padding})`}\n >\n {children}\n </g>\n </svg>\n {showPixelGuides && (\n <div\n className={classes.sidePixelGuides}\n style={{\n paddingTop: sideGridlinesPadding,\n marginTop: thisIsChart ? 25 : 60\n }}\n >\n {[...Array(nbOfHorizontalLines + 1).keys()].reverse().map(value => (\n <Readable false key={`top-guide-${value}`}>\n <div className={classes.sidePixelIndicator}>━ {value * 100}px</div>\n </Readable>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n }\n}\nconst styles = theme => ({\n root: {\n border: `solid 1px ${color.primaryLight()}`,\n color: color.text(),\n backgroundColor: color.background()\n },\n wrapper: {\n display: 'flex'\n },\n svg: {},\n graphBox: {\n cursor: 'pointer',\n userSelect: 'none'\n },\n graphTitle: {\n color: color.text(),\n fontSize: theme.typography.fontSize + 2,\n padding: '12px 4px 0',\n textAlign: 'center'\n },\n disabledTitle: {\n pointerEvents: 'none'\n },\n topPixelGuides: {\n display: 'flex',\n paddingTop: '6px'\n },\n topPixelIndicator: {\n color: color.primaryLight(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100px',\n pointerEvents: 'none',\n userSelect: 'none'\n },\n sidePixelGuides: {\n width: '70px',\n display: 'flex',\n flexDirection: 'column',\n marginRight: '6px'\n },\n sidePixelIndicator: {\n color: color.primaryLight(),\n textAlign: 'right',\n height: '20px',\n pointerEvents: 'none',\n userSelect: 'none',\n\n '&:not(:last-child)': {\n marginBottom: '80px'\n }\n }\n});\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
|
|
1
|
+
{"version":3,"sources":["../src/root.jsx"],"names":["Root","g","props","graphProps","onMouseMove","scale","snap","coords","_groups","x","invert","y","snapped","newValue","side","labels","onChangeLabels","isChart","on","mouseMove","bind","disabledTitle","disabledLabels","labelsPlaceholders","titlePlaceholder","children","classes","defineChart","onChangeTitle","showLabels","showPixelGuides","showTitle","title","rootRef","size","width","height","domain","range","topPadding","leftPadding","finalWidth","padding","finalHeight","activeTitlePlugins","actualHeight","nbOfVerticalLines","parseInt","nbOfHorizontalLines","sideGridlinesPadding","root","topPixelGuides","marginLeft","Array","keys","map","value","topPixelIndicator","graphTitle","__html","rightMargin","noBorder","top","onChangeLabel","wrapper","left","chart","r","graphBox","right","sidePixelGuides","paddingTop","marginTop","reverse","sidePixelIndicator","bottom","React","Component","PropTypes","string","ChildrenType","bool","GraphPropsType","isRequired","func","object","styles","theme","border","color","primaryLight","text","backgroundColor","background","touchAction","position","display","svg","paddingLeft","overflow","cursor","userSelect","fontSize","typography","textAlign","pointerEvents","marginRight","flexDirection","alignItems","marginBottom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { ChildrenType } from './types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { select, mouse } from 'd3-selection';\nimport PropTypes from 'prop-types';\nimport { GraphPropsType } from './types';\nimport { color, Readable } from '@pie-lib/render-ui';\nimport EditableHtml from '@pie-lib/editable-html';\nimport cn from 'classnames';\nimport Label from './label';\n\nexport class Root extends React.Component {\n static propTypes = {\n title: PropTypes.string,\n children: ChildrenType,\n disabledTitle: PropTypes.bool,\n graphProps: GraphPropsType.isRequired,\n onChangeTitle: PropTypes.func,\n onMouseMove: PropTypes.func,\n classes: PropTypes.object.isRequired,\n showLabels: PropTypes.bool,\n showTitle: PropTypes.bool,\n showPixelGuides: PropTypes.bool,\n rootRef: PropTypes.func\n };\n\n mouseMove = g => {\n const { graphProps, onMouseMove } = this.props;\n\n if (!onMouseMove) {\n return;\n }\n\n const { scale, snap } = graphProps;\n const coords = mouse(g._groups[0][0]);\n const x = scale.x.invert(coords[0]);\n const y = scale.y.invert(coords[1]);\n\n const snapped = {\n x: snap.x(x),\n y: snap.y(y)\n };\n\n onMouseMove(snapped);\n };\n\n componentDidMount() {\n const g = select(this.g);\n g.on('mousemove', this.mouseMove.bind(this, g));\n }\n\n componentWillUnmount() {\n const g = select(this.g);\n g.on('mousemove', null);\n }\n\n onChangeLabel = (newValue, side) => {\n const { labels, onChangeLabels, isChart } = this.props;\n\n if (isChart) {\n if (side === 'left') {\n onChangeLabels('range', newValue);\n } else {\n onChangeLabels('domain', newValue);\n }\n\n return;\n }\n\n onChangeLabels({\n ...labels,\n [side]: newValue\n });\n };\n\n render() {\n const {\n disabledTitle,\n disabledLabels,\n labels,\n labelsPlaceholders,\n titlePlaceholder,\n graphProps,\n children,\n classes,\n defineChart,\n onChangeTitle,\n isChart,\n showLabels,\n showPixelGuides,\n showTitle,\n title,\n rootRef\n } = this.props;\n const {\n size: { width = 500, height = 500 },\n domain,\n range\n } = graphProps;\n\n const topPadding = 40;\n const leftPadding = showLabels ? 80 : 60;\n const finalWidth = width + leftPadding * 2 + (domain.padding || 0) * 2;\n const finalHeight = height + topPadding * 2 + (range.padding || 0) * 2;\n\n const activeTitlePlugins = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'math'\n // 'languageCharacters'\n ];\n\n const actualHeight = defineChart && showPixelGuides ? height - 150 : height;\n const nbOfVerticalLines = parseInt(width / 100);\n const nbOfHorizontalLines = parseInt(actualHeight / 100);\n const sideGridlinesPadding = parseInt(actualHeight % 100);\n\n return (\n <div className={classes.root}>\n {showPixelGuides && (\n <div\n className={classes.topPixelGuides}\n style={{ marginLeft: isChart ? 60 : showLabels ? 30 : 10 }}\n >\n {[...Array(nbOfVerticalLines + 1).keys()].map(value => (\n <Readable false key={`top-guide-${value}`}>\n <div className={classes.topPixelIndicator}>\n <div>{value * 100}px</div>\n <div>|</div>\n </div>\n </Readable>\n ))}\n </div>\n )}\n {showTitle &&\n (disabledTitle ? (\n <div\n className={cn(classes.graphTitle, classes.disabledTitle)}\n dangerouslySetInnerHTML={{ __html: title || '' }}\n />\n ) : (\n <EditableHtml\n className={cn({ [classes.rightMargin]: showPixelGuides }, classes.graphTitle)}\n markup={title || ''}\n onChange={onChangeTitle}\n placeholder={\n (defineChart && titlePlaceholder) ||\n (!disabledTitle && 'Click here to add a title for this graph')\n }\n toolbarOpts={{ noBorder: true }}\n activePlugins={activeTitlePlugins}\n disableScrollbar\n />\n ))}\n {showLabels && !isChart && (\n <Label\n side=\"top\"\n text={labels.top}\n disabledLabel={disabledLabels}\n placeholder={labelsPlaceholders?.top}\n graphHeight={finalHeight}\n graphWidth={finalWidth}\n onChange={value => this.onChangeLabel(value, 'top')}\n />\n )}\n <div className={classes.wrapper}>\n {showLabels && (\n <Label\n side=\"left\"\n text={labels.left}\n disabledLabel={disabledLabels}\n placeholder={labelsPlaceholders?.left}\n graphHeight={finalHeight}\n graphWidth={finalWidth}\n isChartLeftLabel={isChart && defineChart}\n onChange={value => this.onChangeLabel(value, 'left')}\n />\n )}\n <svg\n width={finalWidth}\n height={finalHeight}\n className={defineChart ? classes.defineChart : classes.chart}\n >\n <g\n ref={r => {\n this.g = r;\n if (rootRef) {\n rootRef(r);\n }\n }}\n className={classes.graphBox}\n transform={`translate(${leftPadding}, ${topPadding})`}\n >\n {children}\n </g>\n </svg>\n {showLabels && !isChart && (\n <Label\n side=\"right\"\n text={labels.right}\n disabledLabel={disabledLabels}\n placeholder={labelsPlaceholders?.right}\n graphHeight={finalHeight}\n graphWidth={finalWidth}\n onChange={value => this.onChangeLabel(value, 'right')}\n />\n )}\n {showPixelGuides && (\n <div\n className={classes.sidePixelGuides}\n style={{\n paddingTop: sideGridlinesPadding,\n marginTop: defineChart ? 25 : 31\n }}\n >\n {[...Array(nbOfHorizontalLines + 1).keys()].reverse().map(value => (\n <Readable false key={`top-guide-${value}`}>\n <div className={classes.sidePixelIndicator}>━ {value * 100}px</div>\n </Readable>\n ))}\n </div>\n )}\n </div>\n {showLabels && (\n <Label\n side=\"bottom\"\n text={labels.bottom}\n disabledLabel={disabledLabels}\n placeholder={labelsPlaceholders?.bottom}\n graphHeight={finalHeight}\n graphWidth={finalWidth}\n isChartBottomLabel={isChart && defineChart}\n onChange={value => this.onChangeLabel(value, 'bottom')}\n />\n )}\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n root: {\n border: `solid 1px ${color.primaryLight()}`,\n color: color.text(),\n backgroundColor: color.background(),\n touchAction: 'none',\n position: 'relative'\n },\n wrapper: {\n display: 'flex',\n position: 'relative'\n },\n svg: {},\n defineChart: {\n paddingLeft: '50px',\n overflow: 'visible'\n },\n chart: {\n overflow: 'visible'\n },\n graphBox: {\n cursor: 'pointer',\n userSelect: 'none'\n },\n graphTitle: {\n color: color.text(),\n fontSize: theme.typography.fontSize + 2,\n padding: '12px 4px 0',\n textAlign: 'center'\n },\n disabledTitle: {\n pointerEvents: 'none'\n },\n rightMargin: {\n marginRight: '74px'\n },\n topPixelGuides: {\n display: 'flex',\n paddingTop: '6px'\n },\n topPixelIndicator: {\n color: color.primaryLight(),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100px',\n pointerEvents: 'none',\n userSelect: 'none'\n },\n sidePixelGuides: {\n width: '70px',\n display: 'flex',\n flexDirection: 'column',\n marginRight: '6px'\n },\n sidePixelIndicator: {\n color: color.primaryLight(),\n textAlign: 'right',\n height: '20px',\n pointerEvents: 'none',\n userSelect: 'none',\n\n '&:not(:last-child)': {\n marginBottom: '80px'\n }\n }\n});\n\nexport default withStyles(styles)(Root);\n"],"file":"root.js"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.5.0",
|
|
7
7
|
"description": "Some underlying components for building charts/graphs",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"react",
|
|
@@ -38,6 +38,6 @@
|
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"react": "^16.8.1"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "7ad98ca33a39276da5e170339b3bd8bb626dd54b",
|
|
42
42
|
"scripts": {}
|
|
43
43
|
}
|
package/src/label.jsx
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { color, Readable } from '@pie-lib/render-ui';
|
|
3
|
+
import cn from 'classnames';
|
|
4
|
+
import EditableHtml from '@pie-lib/editable-html';
|
|
5
|
+
import { withStyles } from '@material-ui/core/styles';
|
|
6
|
+
|
|
7
|
+
const LabelComponent = props => {
|
|
8
|
+
const {
|
|
9
|
+
classes,
|
|
10
|
+
disabledLabel,
|
|
11
|
+
graphHeight,
|
|
12
|
+
graphWidth,
|
|
13
|
+
isChartBottomLabel,
|
|
14
|
+
isChartLeftLabel,
|
|
15
|
+
placeholder,
|
|
16
|
+
text,
|
|
17
|
+
side,
|
|
18
|
+
onChange
|
|
19
|
+
} = props;
|
|
20
|
+
const [rotatedToHorizontal, setRotatedToHorizontal] = useState(false);
|
|
21
|
+
const activePlugins = [
|
|
22
|
+
'bold',
|
|
23
|
+
'italic',
|
|
24
|
+
'underline',
|
|
25
|
+
'strikethrough',
|
|
26
|
+
'math'
|
|
27
|
+
// 'languageCharacters'
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
const chartValue = side === 'left' && isChartLeftLabel && graphHeight - 148;
|
|
31
|
+
const defaultStyle = {
|
|
32
|
+
width: chartValue || (side === 'left' || side === 'right' ? graphHeight - 8 : graphWidth - 8),
|
|
33
|
+
top:
|
|
34
|
+
chartValue ||
|
|
35
|
+
(side === 'left' && `${graphHeight - 8}px`) ||
|
|
36
|
+
(side === 'bottom' && `${graphHeight - 90}px`) ||
|
|
37
|
+
0,
|
|
38
|
+
left:
|
|
39
|
+
(side === 'right' && `${graphWidth - 8}px`) ||
|
|
40
|
+
((isChartLeftLabel || isChartBottomLabel) && '50px') ||
|
|
41
|
+
0
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const rotatedStyle = {
|
|
45
|
+
width: graphWidth - 8,
|
|
46
|
+
top: (side === 'right' && `${graphHeight - 22}px`) || 0,
|
|
47
|
+
left: 0
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const rotateLabel = () =>
|
|
51
|
+
!disabledLabel && (side === 'left' || side === 'right') && setRotatedToHorizontal(true);
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<Readable false>
|
|
55
|
+
<div
|
|
56
|
+
className={cn(classes.axisLabel, {
|
|
57
|
+
[classes.rotateLeftLabel]: side === 'left' && !rotatedToHorizontal,
|
|
58
|
+
[classes.rotateRightLabel]: side === 'right' && !rotatedToHorizontal,
|
|
59
|
+
[classes.editLabel]: rotatedToHorizontal,
|
|
60
|
+
[classes.customBottom]: isChartBottomLabel
|
|
61
|
+
})}
|
|
62
|
+
style={rotatedToHorizontal ? rotatedStyle : defaultStyle}
|
|
63
|
+
onClick={rotateLabel}
|
|
64
|
+
>
|
|
65
|
+
{disabledLabel ? (
|
|
66
|
+
<div className={classes.disabledLabel} dangerouslySetInnerHTML={{ __html: text || '' }} />
|
|
67
|
+
) : (
|
|
68
|
+
<EditableHtml
|
|
69
|
+
markup={text || ''}
|
|
70
|
+
onChange={onChange}
|
|
71
|
+
placeholder={!disabledLabel && placeholder}
|
|
72
|
+
toolbarOpts={{
|
|
73
|
+
position: side === 'bottom' ? 'top' : 'bottom',
|
|
74
|
+
noBorder: true
|
|
75
|
+
}}
|
|
76
|
+
disableScrollbar
|
|
77
|
+
activePlugins={activePlugins}
|
|
78
|
+
onDone={() => setRotatedToHorizontal(false)}
|
|
79
|
+
/>
|
|
80
|
+
)}
|
|
81
|
+
</div>
|
|
82
|
+
</Readable>
|
|
83
|
+
);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export default withStyles(theme => ({
|
|
87
|
+
label: {
|
|
88
|
+
fill: color.secondary()
|
|
89
|
+
},
|
|
90
|
+
axisLabel: {
|
|
91
|
+
fontSize: theme.typography.fontSize - 2,
|
|
92
|
+
textAlign: 'center',
|
|
93
|
+
margin: '4px',
|
|
94
|
+
padding: '4px 0'
|
|
95
|
+
},
|
|
96
|
+
disabledLabel: {
|
|
97
|
+
pointerEvents: 'none',
|
|
98
|
+
width: '100%'
|
|
99
|
+
},
|
|
100
|
+
editLabel: {
|
|
101
|
+
position: 'absolute',
|
|
102
|
+
backgroundColor: 'white',
|
|
103
|
+
borderRadius: '4px',
|
|
104
|
+
boxShadow: '0px 5px 8px rgba(0, 0, 0, 0.15)',
|
|
105
|
+
zIndex: 10
|
|
106
|
+
},
|
|
107
|
+
rotateLeftLabel: {
|
|
108
|
+
rotate: '-90deg',
|
|
109
|
+
transformOrigin: '0 0',
|
|
110
|
+
transformStyle: 'preserve-3d',
|
|
111
|
+
position: 'absolute'
|
|
112
|
+
},
|
|
113
|
+
rotateRightLabel: {
|
|
114
|
+
rotate: '90deg',
|
|
115
|
+
transformOrigin: '0 0',
|
|
116
|
+
transformStyle: 'preserve-3d',
|
|
117
|
+
position: 'absolute'
|
|
118
|
+
},
|
|
119
|
+
customBottom: {
|
|
120
|
+
position: 'absolute'
|
|
121
|
+
}
|
|
122
|
+
}))(LabelComponent);
|
package/src/root.jsx
CHANGED
|
@@ -7,6 +7,7 @@ import { GraphPropsType } from './types';
|
|
|
7
7
|
import { color, Readable } from '@pie-lib/render-ui';
|
|
8
8
|
import EditableHtml from '@pie-lib/editable-html';
|
|
9
9
|
import cn from 'classnames';
|
|
10
|
+
import Label from './label';
|
|
10
11
|
|
|
11
12
|
export class Root extends React.Component {
|
|
12
13
|
static propTypes = {
|
|
@@ -53,14 +54,38 @@ export class Root extends React.Component {
|
|
|
53
54
|
g.on('mousemove', null);
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
onChangeLabel = (newValue, side) => {
|
|
58
|
+
const { labels, onChangeLabels, isChart } = this.props;
|
|
59
|
+
|
|
60
|
+
if (isChart) {
|
|
61
|
+
if (side === 'left') {
|
|
62
|
+
onChangeLabels('range', newValue);
|
|
63
|
+
} else {
|
|
64
|
+
onChangeLabels('domain', newValue);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
onChangeLabels({
|
|
71
|
+
...labels,
|
|
72
|
+
[side]: newValue
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
|
|
56
76
|
render() {
|
|
57
77
|
const {
|
|
58
78
|
disabledTitle,
|
|
79
|
+
disabledLabels,
|
|
80
|
+
labels,
|
|
81
|
+
labelsPlaceholders,
|
|
82
|
+
titlePlaceholder,
|
|
59
83
|
graphProps,
|
|
60
84
|
children,
|
|
61
85
|
classes,
|
|
86
|
+
defineChart,
|
|
62
87
|
onChangeTitle,
|
|
63
|
-
|
|
88
|
+
isChart,
|
|
64
89
|
showLabels,
|
|
65
90
|
showPixelGuides,
|
|
66
91
|
showTitle,
|
|
@@ -73,10 +98,10 @@ export class Root extends React.Component {
|
|
|
73
98
|
range
|
|
74
99
|
} = graphProps;
|
|
75
100
|
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
const finalWidth = width +
|
|
79
|
-
const finalHeight = height +
|
|
101
|
+
const topPadding = 40;
|
|
102
|
+
const leftPadding = showLabels ? 80 : 60;
|
|
103
|
+
const finalWidth = width + leftPadding * 2 + (domain.padding || 0) * 2;
|
|
104
|
+
const finalHeight = height + topPadding * 2 + (range.padding || 0) * 2;
|
|
80
105
|
|
|
81
106
|
const activeTitlePlugins = [
|
|
82
107
|
'bold',
|
|
@@ -87,7 +112,7 @@ export class Root extends React.Component {
|
|
|
87
112
|
// 'languageCharacters'
|
|
88
113
|
];
|
|
89
114
|
|
|
90
|
-
const actualHeight =
|
|
115
|
+
const actualHeight = defineChart && showPixelGuides ? height - 150 : height;
|
|
91
116
|
const nbOfVerticalLines = parseInt(width / 100);
|
|
92
117
|
const nbOfHorizontalLines = parseInt(actualHeight / 100);
|
|
93
118
|
const sideGridlinesPadding = parseInt(actualHeight % 100);
|
|
@@ -95,7 +120,10 @@ export class Root extends React.Component {
|
|
|
95
120
|
return (
|
|
96
121
|
<div className={classes.root}>
|
|
97
122
|
{showPixelGuides && (
|
|
98
|
-
<div
|
|
123
|
+
<div
|
|
124
|
+
className={classes.topPixelGuides}
|
|
125
|
+
style={{ marginLeft: isChart ? 60 : showLabels ? 30 : 10 }}
|
|
126
|
+
>
|
|
99
127
|
{[...Array(nbOfVerticalLines + 1).keys()].map(value => (
|
|
100
128
|
<Readable false key={`top-guide-${value}`}>
|
|
101
129
|
<div className={classes.topPixelIndicator}>
|
|
@@ -106,24 +134,55 @@ export class Root extends React.Component {
|
|
|
106
134
|
))}
|
|
107
135
|
</div>
|
|
108
136
|
)}
|
|
109
|
-
{showTitle &&
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
{
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
137
|
+
{showTitle &&
|
|
138
|
+
(disabledTitle ? (
|
|
139
|
+
<div
|
|
140
|
+
className={cn(classes.graphTitle, classes.disabledTitle)}
|
|
141
|
+
dangerouslySetInnerHTML={{ __html: title || '' }}
|
|
142
|
+
/>
|
|
143
|
+
) : (
|
|
144
|
+
<EditableHtml
|
|
145
|
+
className={cn({ [classes.rightMargin]: showPixelGuides }, classes.graphTitle)}
|
|
146
|
+
markup={title || ''}
|
|
147
|
+
onChange={onChangeTitle}
|
|
148
|
+
placeholder={
|
|
149
|
+
(defineChart && titlePlaceholder) ||
|
|
150
|
+
(!disabledTitle && 'Click here to add a title for this graph')
|
|
151
|
+
}
|
|
152
|
+
toolbarOpts={{ noBorder: true }}
|
|
153
|
+
activePlugins={activeTitlePlugins}
|
|
154
|
+
disableScrollbar
|
|
155
|
+
/>
|
|
156
|
+
))}
|
|
157
|
+
{showLabels && !isChart && (
|
|
158
|
+
<Label
|
|
159
|
+
side="top"
|
|
160
|
+
text={labels.top}
|
|
161
|
+
disabledLabel={disabledLabels}
|
|
162
|
+
placeholder={labelsPlaceholders?.top}
|
|
163
|
+
graphHeight={finalHeight}
|
|
164
|
+
graphWidth={finalWidth}
|
|
165
|
+
onChange={value => this.onChangeLabel(value, 'top')}
|
|
123
166
|
/>
|
|
124
167
|
)}
|
|
125
168
|
<div className={classes.wrapper}>
|
|
126
|
-
|
|
169
|
+
{showLabels && (
|
|
170
|
+
<Label
|
|
171
|
+
side="left"
|
|
172
|
+
text={labels.left}
|
|
173
|
+
disabledLabel={disabledLabels}
|
|
174
|
+
placeholder={labelsPlaceholders?.left}
|
|
175
|
+
graphHeight={finalHeight}
|
|
176
|
+
graphWidth={finalWidth}
|
|
177
|
+
isChartLeftLabel={isChart && defineChart}
|
|
178
|
+
onChange={value => this.onChangeLabel(value, 'left')}
|
|
179
|
+
/>
|
|
180
|
+
)}
|
|
181
|
+
<svg
|
|
182
|
+
width={finalWidth}
|
|
183
|
+
height={finalHeight}
|
|
184
|
+
className={defineChart ? classes.defineChart : classes.chart}
|
|
185
|
+
>
|
|
127
186
|
<g
|
|
128
187
|
ref={r => {
|
|
129
188
|
this.g = r;
|
|
@@ -132,17 +191,28 @@ export class Root extends React.Component {
|
|
|
132
191
|
}
|
|
133
192
|
}}
|
|
134
193
|
className={classes.graphBox}
|
|
135
|
-
transform={`translate(${
|
|
194
|
+
transform={`translate(${leftPadding}, ${topPadding})`}
|
|
136
195
|
>
|
|
137
196
|
{children}
|
|
138
197
|
</g>
|
|
139
198
|
</svg>
|
|
199
|
+
{showLabels && !isChart && (
|
|
200
|
+
<Label
|
|
201
|
+
side="right"
|
|
202
|
+
text={labels.right}
|
|
203
|
+
disabledLabel={disabledLabels}
|
|
204
|
+
placeholder={labelsPlaceholders?.right}
|
|
205
|
+
graphHeight={finalHeight}
|
|
206
|
+
graphWidth={finalWidth}
|
|
207
|
+
onChange={value => this.onChangeLabel(value, 'right')}
|
|
208
|
+
/>
|
|
209
|
+
)}
|
|
140
210
|
{showPixelGuides && (
|
|
141
211
|
<div
|
|
142
212
|
className={classes.sidePixelGuides}
|
|
143
213
|
style={{
|
|
144
214
|
paddingTop: sideGridlinesPadding,
|
|
145
|
-
marginTop:
|
|
215
|
+
marginTop: defineChart ? 25 : 31
|
|
146
216
|
}}
|
|
147
217
|
>
|
|
148
218
|
{[...Array(nbOfHorizontalLines + 1).keys()].reverse().map(value => (
|
|
@@ -153,20 +223,43 @@ export class Root extends React.Component {
|
|
|
153
223
|
</div>
|
|
154
224
|
)}
|
|
155
225
|
</div>
|
|
226
|
+
{showLabels && (
|
|
227
|
+
<Label
|
|
228
|
+
side="bottom"
|
|
229
|
+
text={labels.bottom}
|
|
230
|
+
disabledLabel={disabledLabels}
|
|
231
|
+
placeholder={labelsPlaceholders?.bottom}
|
|
232
|
+
graphHeight={finalHeight}
|
|
233
|
+
graphWidth={finalWidth}
|
|
234
|
+
isChartBottomLabel={isChart && defineChart}
|
|
235
|
+
onChange={value => this.onChangeLabel(value, 'bottom')}
|
|
236
|
+
/>
|
|
237
|
+
)}
|
|
156
238
|
</div>
|
|
157
239
|
);
|
|
158
240
|
}
|
|
159
241
|
}
|
|
242
|
+
|
|
160
243
|
const styles = theme => ({
|
|
161
244
|
root: {
|
|
162
245
|
border: `solid 1px ${color.primaryLight()}`,
|
|
163
246
|
color: color.text(),
|
|
164
|
-
backgroundColor: color.background()
|
|
247
|
+
backgroundColor: color.background(),
|
|
248
|
+
touchAction: 'none',
|
|
249
|
+
position: 'relative'
|
|
165
250
|
},
|
|
166
251
|
wrapper: {
|
|
167
|
-
display: 'flex'
|
|
252
|
+
display: 'flex',
|
|
253
|
+
position: 'relative'
|
|
168
254
|
},
|
|
169
255
|
svg: {},
|
|
256
|
+
defineChart: {
|
|
257
|
+
paddingLeft: '50px',
|
|
258
|
+
overflow: 'visible'
|
|
259
|
+
},
|
|
260
|
+
chart: {
|
|
261
|
+
overflow: 'visible'
|
|
262
|
+
},
|
|
170
263
|
graphBox: {
|
|
171
264
|
cursor: 'pointer',
|
|
172
265
|
userSelect: 'none'
|
|
@@ -180,6 +273,9 @@ const styles = theme => ({
|
|
|
180
273
|
disabledTitle: {
|
|
181
274
|
pointerEvents: 'none'
|
|
182
275
|
},
|
|
276
|
+
rightMargin: {
|
|
277
|
+
marginRight: '74px'
|
|
278
|
+
},
|
|
183
279
|
topPixelGuides: {
|
|
184
280
|
display: 'flex',
|
|
185
281
|
paddingTop: '6px'
|