@elyra/canvas 12.10.1 → 12.11.1
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/dist/canvas-constants-7f93e705.js +2 -0
- package/dist/canvas-constants-7f93e705.js.map +1 -0
- package/dist/canvas-constants-ac5daafb.js +2 -0
- package/dist/canvas-constants-ac5daafb.js.map +1 -0
- package/dist/canvas-controller-09d0c333.js +2 -0
- package/dist/canvas-controller-09d0c333.js.map +1 -0
- package/dist/canvas-controller-c2793ca2.js +2 -0
- package/dist/canvas-controller-c2793ca2.js.map +1 -0
- package/dist/canvas-logger-815781bb.js +2 -0
- package/dist/canvas-logger-815781bb.js.map +1 -0
- package/dist/canvas-logger-a0f1beaa.js +2 -0
- package/dist/canvas-logger-a0f1beaa.js.map +1 -0
- package/dist/common-canvas-5b046a86.js +2 -0
- package/dist/common-canvas-5b046a86.js.map +1 -0
- package/dist/common-canvas-985cc0a2.js +2 -0
- package/dist/common-canvas-985cc0a2.js.map +1 -0
- package/dist/common-canvas.es.js +1 -1
- package/dist/common-canvas.es.js.map +1 -1
- package/dist/common-canvas.js +1 -1
- package/dist/common-canvas.js.map +1 -1
- package/dist/common-properties-4f471b2b.js +2 -0
- package/dist/common-properties-4f471b2b.js.map +1 -0
- package/dist/common-properties-9161cd27.js +2 -0
- package/dist/common-properties-9161cd27.js.map +1 -0
- package/dist/datarecord-metadata-v3-schema-bda88f2e.js +2 -0
- package/dist/datarecord-metadata-v3-schema-bda88f2e.js.map +1 -0
- package/dist/datarecord-metadata-v3-schema-d7ad05cd.js +2 -0
- package/dist/datarecord-metadata-v3-schema-d7ad05cd.js.map +1 -0
- package/dist/en-2ed89528.js +2 -0
- package/dist/en-2ed89528.js.map +1 -0
- package/dist/en-e93855cc.js +2 -0
- package/dist/en-e93855cc.js.map +1 -0
- package/dist/extends-39f57612.js +7 -0
- package/dist/extends-39f57612.js.map +1 -0
- package/dist/extends-51d9ddcc.js +7 -0
- package/dist/extends-51d9ddcc.js.map +1 -0
- package/dist/flexible-table-154a3359.js +2 -0
- package/dist/flexible-table-154a3359.js.map +1 -0
- package/dist/flexible-table-5e4a1e6d.js +2 -0
- package/dist/flexible-table-5e4a1e6d.js.map +1 -0
- package/dist/icon-811ffddd.js +2 -0
- package/dist/icon-811ffddd.js.map +1 -0
- package/dist/icon-d6909a68.js +2 -0
- package/dist/icon-d6909a68.js.map +1 -0
- package/dist/index-4fd90a14.js +2 -0
- package/dist/index-4fd90a14.js.map +1 -0
- package/dist/index-6d138021.js +2 -0
- package/dist/index-6d138021.js.map +1 -0
- package/dist/isArrayLikeObject-31e5e646.js +2 -0
- package/dist/isArrayLikeObject-31e5e646.js.map +1 -0
- package/dist/isArrayLikeObject-7c33c7fd.js +2 -0
- package/dist/isArrayLikeObject-7c33c7fd.js.map +1 -0
- package/dist/lib/canvas-controller.es.js +1 -1
- package/dist/lib/canvas-controller.js +1 -1
- package/dist/lib/canvas.es.js +1 -1
- package/dist/lib/canvas.js +1 -1
- package/dist/lib/context-menu.es.js +1 -1
- package/dist/lib/context-menu.es.js.map +1 -1
- package/dist/lib/context-menu.js +1 -1
- package/dist/lib/context-menu.js.map +1 -1
- package/dist/lib/properties/field-picker.es.js +1 -1
- package/dist/lib/properties/field-picker.js +1 -1
- package/dist/lib/properties/flexible-table.es.js +1 -1
- package/dist/lib/properties/flexible-table.js +1 -1
- package/dist/lib/properties.es.js +1 -1
- package/dist/lib/properties.js +1 -1
- package/dist/lib/tooltip.es.js +1 -1
- package/dist/lib/tooltip.es.js.map +1 -1
- package/dist/lib/tooltip.js +1 -1
- package/dist/lib/tooltip.js.map +1 -1
- package/dist/styles/common-canvas.min.css +1 -1
- package/dist/styles/common-canvas.min.css.map +1 -1
- package/dist/toolbar-335252dd.js +2 -0
- package/dist/toolbar-335252dd.js.map +1 -0
- package/dist/toolbar-85e6c77b.js +2 -0
- package/dist/toolbar-85e6c77b.js.map +1 -0
- package/locales/command-actions/locales/en.json +7 -1
- package/locales/command-actions/locales/eo.json +7 -1
- package/locales/command-actions/locales/index.js +3 -1
- package/locales/command-actions/locales/ko.json +9 -0
- package/locales/common-canvas/locales/en.json +1 -0
- package/locales/common-canvas/locales/eo.json +1 -0
- package/locales/common-canvas/locales/index.js +3 -1
- package/locales/common-canvas/locales/ko.json +32 -0
- package/locales/common-properties/locales/index.js +3 -1
- package/locales/common-properties/locales/ko.json +93 -0
- package/locales/palette/locales/index.js +3 -1
- package/locales/palette/locales/ko.json +10 -0
- package/locales/toolbar/locales/index.js +3 -1
- package/locales/toolbar/locales/ko.json +8 -0
- package/package.json +2 -1
- package/src/color-picker/color-picker-panel.jsx +61 -0
- package/src/color-picker/color-picker.jsx +37 -0
- package/src/color-picker/color-picker.scss +46 -0
- package/src/command-actions/colorSelectedObjectsAction.js +72 -0
- package/src/command-actions/deleteObjectsAction.js +16 -11
- package/src/command-actions/pasteAction.js +50 -21
- package/src/common-canvas/canvas-controller.js +32 -5
- package/src/common-canvas/cc-bottom-panel.jsx +34 -37
- package/src/common-canvas/cc-contents.jsx +110 -8
- package/src/common-canvas/cc-toolbar.jsx +3 -2
- package/src/common-canvas/common-canvas-utils.js +73 -90
- package/src/common-canvas/common-canvas.scss +28 -14
- package/src/common-canvas/constants/canvas-constants.js +17 -16
- package/src/common-canvas/label-util.js +1 -1
- package/src/common-canvas/svg-canvas-d3.js +20 -107
- package/src/common-canvas/svg-canvas-d3.scss +67 -6
- package/src/common-canvas/svg-canvas-pipeline.js +201 -0
- package/src/common-canvas/svg-canvas-renderer.js +325 -339
- package/src/common-canvas/svg-canvas-utils-links.js +3 -3
- package/src/common-canvas/svg-canvas-utils-nodes.js +22 -44
- package/src/common-properties/actions.js +4 -0
- package/src/common-properties/components/field-picker/field-picker.jsx +33 -36
- package/src/common-properties/components/field-picker/field-picker.scss +20 -23
- package/src/common-properties/components/flexible-table/flexible-table.jsx +46 -31
- package/src/common-properties/components/flexible-table/flexible-table.scss +14 -17
- package/src/common-properties/components/properties-buttons/properties-buttons.jsx +28 -21
- package/src/common-properties/components/table-buttons/table-buttons.jsx +3 -1
- package/src/common-properties/components/table-buttons/table-buttons.scss +8 -8
- package/src/common-properties/components/title-editor/title-editor.jsx +31 -4
- package/src/common-properties/components/title-editor/title-editor.scss +30 -5
- package/src/common-properties/components/virtualized-table/virtualized-table.jsx +119 -27
- package/src/common-properties/components/virtualized-table/virtualized-table.scss +72 -8
- package/src/common-properties/constants/constants.js +5 -1
- package/src/common-properties/constants/form-constants.js +1 -0
- package/src/common-properties/controls/abstract-table.jsx +12 -11
- package/src/common-properties/controls/abstract-table.scss +6 -2
- package/src/common-properties/controls/dropdown/dropdown.scss +4 -0
- package/src/common-properties/controls/expression/expression-builder/expression-select-field-function.jsx +2 -2
- package/src/common-properties/controls/expression/expression.scss +1 -1
- package/src/common-properties/controls/passwordfield/passwordfield.jsx +2 -2
- package/src/common-properties/controls/readonlytable/readonlytable.jsx +4 -2
- package/src/common-properties/controls/selectcolumns/selectcolumns.scss +0 -19
- package/src/common-properties/controls/someofselect/someofselect.scss +2 -2
- package/src/common-properties/form/ControlInfo.js +8 -0
- package/src/common-properties/form/EditorForm.js +4 -0
- package/src/common-properties/form/ParameterInfo.js +4 -0
- package/src/common-properties/panels/sub-panel/cell.jsx +18 -23
- package/src/common-properties/panels/sub-panel/sub-panel.scss +5 -22
- package/src/common-properties/properties-controller.js +18 -0
- package/src/common-properties/properties-main/properties-main.jsx +15 -9
- package/src/common-properties/properties-main/properties-main.scss +9 -2
- package/src/common-properties/properties-store.js +27 -1
- package/src/common-properties/reducers/properties-settings.js +17 -1
- package/src/context-menu/common-context-menu.jsx +74 -29
- package/src/context-menu/context-menu-wrapper.jsx +2 -2
- package/src/icons/icon.jsx +5 -46
- package/src/index.scss +1 -0
- package/src/object-model/api-pipeline.js +26 -43
- package/src/object-model/object-model.js +27 -3
- package/src/object-model/redux/canvas-store.js +68 -0
- package/src/object-model/redux/reducers/canvasinfo.js +36 -0
- package/src/object-model/redux/reducers/comments.js +58 -10
- package/src/object-model/redux/reducers/externalpipelineflows.js +1 -0
- package/src/object-model/redux/reducers/links.js +9 -7
- package/src/object-model/redux/reducers/selectioninfo.js +2 -1
- package/src/palette/palette-content-list-item.jsx +8 -1
- package/src/palette/palette-dialog-content-grid-node.jsx +8 -1
- package/src/palette/palette-flyout-utils.js +3 -3
- package/src/toolbar/toolbar-action-item.jsx +75 -11
- package/src/toolbar/toolbar-overflow-item.jsx +2 -3
- package/src/tooltip/tooltip.jsx +4 -1
- package/stats.html +1 -1
- package/dist/canvas-constants-af93267a.js +0 -2
- package/dist/canvas-constants-af93267a.js.map +0 -1
- package/dist/canvas-constants-ffce3b78.js +0 -2
- package/dist/canvas-constants-ffce3b78.js.map +0 -1
- package/dist/canvas-controller-27101eb5.js +0 -2
- package/dist/canvas-controller-27101eb5.js.map +0 -1
- package/dist/canvas-controller-a57e3b7a.js +0 -2
- package/dist/canvas-controller-a57e3b7a.js.map +0 -1
- package/dist/common-canvas-f409dcd4.js +0 -2
- package/dist/common-canvas-f409dcd4.js.map +0 -1
- package/dist/common-canvas-f6fc2fff.js +0 -2
- package/dist/common-canvas-f6fc2fff.js.map +0 -1
- package/dist/common-properties-653e50e3.js +0 -2
- package/dist/common-properties-653e50e3.js.map +0 -1
- package/dist/common-properties-e2c6def7.js +0 -2
- package/dist/common-properties-e2c6def7.js.map +0 -1
- package/dist/datarecord-metadata-v3-schema-10ddafaf.js +0 -2
- package/dist/datarecord-metadata-v3-schema-10ddafaf.js.map +0 -1
- package/dist/datarecord-metadata-v3-schema-1504c843.js +0 -2
- package/dist/datarecord-metadata-v3-schema-1504c843.js.map +0 -1
- package/dist/en-517f38fc.js +0 -2
- package/dist/en-517f38fc.js.map +0 -1
- package/dist/en-dc6f2e9f.js +0 -2
- package/dist/en-dc6f2e9f.js.map +0 -1
- package/dist/extends-5a45f92e.js +0 -7
- package/dist/extends-5a45f92e.js.map +0 -1
- package/dist/extends-a52336ca.js +0 -8
- package/dist/extends-a52336ca.js.map +0 -1
- package/dist/flexible-table-e6ccbe58.js +0 -2
- package/dist/flexible-table-e6ccbe58.js.map +0 -1
- package/dist/flexible-table-f60c1680.js +0 -2
- package/dist/flexible-table-f60c1680.js.map +0 -1
- package/dist/index-567978da.js +0 -2
- package/dist/index-567978da.js.map +0 -1
- package/dist/index-59486e9a.js +0 -2
- package/dist/index-59486e9a.js.map +0 -1
- package/dist/isEmpty-def8f509.js +0 -2
- package/dist/isEmpty-def8f509.js.map +0 -1
- package/dist/isEmpty-e171b734.js +0 -2
- package/dist/isEmpty-e171b734.js.map +0 -1
- package/dist/toolbar-404bf690.js +0 -2
- package/dist/toolbar-404bf690.js.map +0 -1
- package/dist/toolbar-611d8ab9.js +0 -2
- package/dist/toolbar-611d8ab9.js.map +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Elyra Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import React from "react";
|
|
18
|
+
import PropTypes from "prop-types";
|
|
19
|
+
import Logger from "../logging/canvas-logger.js";
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ColorPickerPanel extends React.Component {
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super(props);
|
|
25
|
+
this.logger = new Logger("CC-ContextMenu");
|
|
26
|
+
|
|
27
|
+
this.onClick = this.onClick.bind(this);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
onClick(evt) {
|
|
31
|
+
const color = evt.target.dataset.color;
|
|
32
|
+
this.props.clickActionHandler(color);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
render() {
|
|
36
|
+
this.logger.log("render");
|
|
37
|
+
return (
|
|
38
|
+
<div className="color-picker-panel" onClick={this.onClick}>
|
|
39
|
+
<div tabIndex="0" data-color={"bkg-col-white-0"} className="color-picker-item white-0" />
|
|
40
|
+
<div tabIndex="0" data-color={"bkg-col-yellow-20"} className="color-picker-item yellow-20" />
|
|
41
|
+
<div tabIndex="0" data-color={"bkg-col-gray-20"} className="color-picker-item gray-20" />
|
|
42
|
+
<div tabIndex="0" data-color={"bkg-col-green-20"} className="color-picker-item green-20" />
|
|
43
|
+
<div tabIndex="0" data-color={"bkg-col-teal-20"} className="color-picker-item teal-20" />
|
|
44
|
+
<div tabIndex="0" data-color={"bkg-col-cyan-20"} className="color-picker-item cyan-20" />
|
|
45
|
+
|
|
46
|
+
<div tabIndex="0" data-color={"bkg-col-red-50"} className="color-picker-item red-50" />
|
|
47
|
+
<div tabIndex="0" data-color={"bkg-col-orange-40"} className="color-picker-item orange-40" />
|
|
48
|
+
<div tabIndex="0" data-color={"bkg-col-gray-50"} className="color-picker-item gray-50" />
|
|
49
|
+
<div tabIndex="0" data-color={"bkg-col-green-50"} className="color-picker-item green-50" />
|
|
50
|
+
<div tabIndex="0" data-color={"bkg-col-teal-50"} className="color-picker-item teal-50" />
|
|
51
|
+
<div tabIndex="0" data-color={"bkg-col-cyan-50"} className="color-picker-item cyan-50" />
|
|
52
|
+
</div>);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
ColorPickerPanel.propTypes = {
|
|
57
|
+
clickActionHandler: PropTypes.func.isRequired,
|
|
58
|
+
closeMenu: PropTypes.func
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export default ColorPickerPanel;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Elyra Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import React from "react";
|
|
18
|
+
import PropTypes from "prop-types";
|
|
19
|
+
import { OverflowMenu } from "carbon-components-react";
|
|
20
|
+
import { ColorPalette32 } from "@carbon/icons-react";
|
|
21
|
+
import ColorPickerPanel from "./color-picker-panel";
|
|
22
|
+
|
|
23
|
+
class ColorPicker extends React.Component {
|
|
24
|
+
render() {
|
|
25
|
+
return (
|
|
26
|
+
<OverflowMenu renderIcon={ColorPalette32} className="color-menu">
|
|
27
|
+
<ColorPickerPanel clickActionHandler={this.props.clickActionHandler} />
|
|
28
|
+
</OverflowMenu>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
ColorPicker.propTypes = {
|
|
34
|
+
clickActionHandler: PropTypes.func.isRequired
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export default ColorPicker;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2017-2022 Elyra Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
@import "carbon-components/scss/globals/scss/_vars";
|
|
18
|
+
|
|
19
|
+
.color-picker-panel {
|
|
20
|
+
width: 100%;
|
|
21
|
+
height: 55px;
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-wrap: wrap;
|
|
24
|
+
|
|
25
|
+
.color-picker-item {
|
|
26
|
+
width: 20px;
|
|
27
|
+
height: 20px;
|
|
28
|
+
margin: 5px 0 0 5px;
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
&.white-0 {
|
|
31
|
+
background-color: $white-0;
|
|
32
|
+
border: 1px solid $gray-50;
|
|
33
|
+
}
|
|
34
|
+
&.yellow-20 { background-color: $yellow-20; }
|
|
35
|
+
&.gray-20 { background-color: $gray-20; }
|
|
36
|
+
&.green-20 { background-color: $green-20; }
|
|
37
|
+
&.teal-20 { background-color: $teal-20; }
|
|
38
|
+
&.cyan-20 { background-color: $cyan-20; }
|
|
39
|
+
&.red-50 { background-color: $red-50; }
|
|
40
|
+
&.orange-40 { background-color: $orange-40; }
|
|
41
|
+
&.gray-50 { background-color: $gray-50; }
|
|
42
|
+
&.green-50 { background-color: $green-50; }
|
|
43
|
+
&.teal-50 { background-color: $teal-50; }
|
|
44
|
+
&.cyan-50 { background-color: $cyan-50; }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Elyra Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import Action from "../command-stack/action.js";
|
|
17
|
+
import CanvasUtils from "../common-canvas/common-canvas-utils.js";
|
|
18
|
+
|
|
19
|
+
export default class ColorSelectedObjectsAction extends Action {
|
|
20
|
+
constructor(data, objectModel, labelUtil) {
|
|
21
|
+
super(data);
|
|
22
|
+
this.data = data;
|
|
23
|
+
this.objectModel = objectModel;
|
|
24
|
+
this.labelUtil = labelUtil;
|
|
25
|
+
this.apiPipeline = this.objectModel.getAPIPipeline(data.pipelineId);
|
|
26
|
+
this.oldIds = this.data.selectedObjects.map((o) => o.id); // Copy the IDs
|
|
27
|
+
this.oldColors = this.getOldColors();
|
|
28
|
+
this.actionLabel = this.createActionLabel();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Standard methods
|
|
32
|
+
do() {
|
|
33
|
+
this.apiPipeline.setObjectsColorClassName(this.oldIds, this.data.editParam.color);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
undo() {
|
|
37
|
+
this.apiPipeline.setObjectsColorClassName(this.oldIds, this.oldColors);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
redo() {
|
|
41
|
+
this.do();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
getLabel() {
|
|
45
|
+
return this.actionLabel;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
createActionLabel() {
|
|
49
|
+
return this.labelUtil.getActionLabel(this, "action.colorComments", {
|
|
50
|
+
comments_count: this.data.selectedObjectIds.length
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
getOldColors() {
|
|
55
|
+
const oldColors = [];
|
|
56
|
+
this.data.selectedObjects.forEach((o) => {
|
|
57
|
+
oldColors.push(this.getObjectColorClass(o));
|
|
58
|
+
});
|
|
59
|
+
return oldColors;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
getObjectColorClass(o) {
|
|
63
|
+
if (o.class_name) {
|
|
64
|
+
const classes = o.class_name.split(" ");
|
|
65
|
+
if (classes) {
|
|
66
|
+
const colorClass = classes.find((c) => CanvasUtils.getBkgColorClass(c));
|
|
67
|
+
return colorClass;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return "";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -172,16 +172,21 @@ export default class DeleteObjectsAction extends Action {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
createActionLabel() {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
175
|
+
const stringsList = [
|
|
176
|
+
{ label: "Nodes", val: this.nodesToDelete.length + this.supernodesToDelete.length },
|
|
177
|
+
{ label: "Comments", val: this.commentsToDelete.length },
|
|
178
|
+
{ label: "Links", val: this.linksToDelete.length }
|
|
179
|
+
];
|
|
180
|
+
const dynamicStringKey = "action.delete" + stringsList
|
|
181
|
+
.filter((v) => v.val)
|
|
182
|
+
.map((o) => o.label)
|
|
183
|
+
.join("");
|
|
184
|
+
|
|
185
|
+
return this.labelUtil.getActionLabel(this, dynamicStringKey,
|
|
186
|
+
{
|
|
187
|
+
nodes_count: this.nodesToDelete.length + this.supernodesToDelete.length,
|
|
188
|
+
comments_count: this.commentsToDelete.length,
|
|
189
|
+
links_count: this.linksToDelete.length
|
|
190
|
+
});
|
|
186
191
|
}
|
|
187
192
|
}
|
|
@@ -35,6 +35,14 @@ export default class PasteAction extends Action {
|
|
|
35
35
|
// with IDs the same as those already on the canvas.
|
|
36
36
|
this.clones = this.objectModel.cloneObjectsToPaste(
|
|
37
37
|
data.objects.nodes, data.objects.comments, data.objects.links);
|
|
38
|
+
|
|
39
|
+
const { nodes, pipelines } = this.objectModel.extractAddDataPipelines(this.clones.clonedNodes);
|
|
40
|
+
this.clones.clonedNodes = nodes;
|
|
41
|
+
this.pipelines = pipelines;
|
|
42
|
+
|
|
43
|
+
// Get the IDs of the objects to be selected after they are pasted. We
|
|
44
|
+
// automatically select pasted objects so they are easy to move by the user.
|
|
45
|
+
this.selectionIds = this.getSelectionIds(this.clones);
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
// Adjusts the positions of the cloned objects appropriately. If the data
|
|
@@ -121,6 +129,25 @@ export default class PasteAction extends Action {
|
|
|
121
129
|
}
|
|
122
130
|
}
|
|
123
131
|
|
|
132
|
+
// Return the IDs of the cloned objects to be selected after the
|
|
133
|
+
// paste is complete.
|
|
134
|
+
getSelectionIds(clones) {
|
|
135
|
+
const selectionIds = [];
|
|
136
|
+
|
|
137
|
+
clones.clonedNodes.forEach((cn) => {
|
|
138
|
+
selectionIds.push(cn.id);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
clones.clonedComments.forEach((cc) => {
|
|
142
|
+
selectionIds.push(cc.id);
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
if (this.areDetachableLinksInUse) {
|
|
146
|
+
clones.clonedLinks.forEach((cl) => selectionIds.push(cl.id));
|
|
147
|
+
}
|
|
148
|
+
return selectionIds;
|
|
149
|
+
}
|
|
150
|
+
|
|
124
151
|
// Return augmented command object which will be passed to the
|
|
125
152
|
// client app.
|
|
126
153
|
getData() {
|
|
@@ -132,31 +159,33 @@ export default class PasteAction extends Action {
|
|
|
132
159
|
|
|
133
160
|
// Standard methods
|
|
134
161
|
do() {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
this.
|
|
139
|
-
|
|
162
|
+
this.apiPipeline.addPastedObjects({
|
|
163
|
+
nodesToAdd: this.clones.clonedNodes,
|
|
164
|
+
commentsToAdd: this.clones.clonedComments,
|
|
165
|
+
linksToAdd: this.clones.clonedLinks,
|
|
166
|
+
pipelinesToAdd: this.pipelines,
|
|
167
|
+
selections: this.selectionIds
|
|
140
168
|
});
|
|
141
|
-
|
|
142
|
-
this.clones.clonedComments.forEach((cc) => {
|
|
143
|
-
this.apiPipeline.addComment(cc);
|
|
144
|
-
addedObjectIds.push(cc.id);
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
this.apiPipeline.addLinks(this.clones.clonedLinks);
|
|
149
|
-
if (this.areDetachableLinksInUse) {
|
|
150
|
-
this.clones.clonedLinks.forEach((cl) => addedObjectIds.push(cl.id));
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
this.objectModel.setSelections(addedObjectIds, this.apiPipeline.pipelineId);
|
|
154
169
|
}
|
|
155
170
|
|
|
156
171
|
undo() {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
172
|
+
// External pipelines may have been loaded in the do() function so we
|
|
173
|
+
// retrieve a full set of pipelines to delete from the object model.
|
|
174
|
+
const supernodes = CanvasUtils.filterSupernodes(this.clones.clonedNodes);
|
|
175
|
+
const pipelines = this.objectModel.getDescPipelinesToDelete(supernodes, this.data.pipelineId);
|
|
176
|
+
|
|
177
|
+
// We can also retrieve any external pipeline flows that might have been
|
|
178
|
+
// loaded while executing the do() method.
|
|
179
|
+
const oldExtPipelineFlows =
|
|
180
|
+
this.objectModel.getExternalPipelineFlowsForPipelines(pipelines);
|
|
181
|
+
|
|
182
|
+
this.apiPipeline.deletePastedObjects({
|
|
183
|
+
nodesToDelete: this.clones.clonedNodes,
|
|
184
|
+
commentsToDelete: this.clones.clonedComments,
|
|
185
|
+
linksToDelete: this.clones.clonedLinks,
|
|
186
|
+
pipelinesToDelete: pipelines,
|
|
187
|
+
extPipelineFlowsToDelete: oldExtPipelineFlows
|
|
188
|
+
});
|
|
160
189
|
}
|
|
161
190
|
|
|
162
191
|
redo() {
|
|
@@ -30,6 +30,7 @@ import CreateNodeOnLinkAction from "../command-actions/createNodeOnLinkAction.js
|
|
|
30
30
|
import CreateNodeAttachLinksAction from "../command-actions/createNodeAttachLinksAction.js";
|
|
31
31
|
import CreateSuperNodeAction from "../command-actions/createSuperNodeAction.js";
|
|
32
32
|
import CollapseSuperNodeInPlaceAction from "../command-actions/collapseSuperNodeInPlaceAction.js";
|
|
33
|
+
import ColorSelectedObjectsAction from "../command-actions/colorSelectedObjectsAction.js";
|
|
33
34
|
import DeconstructSuperNodeAction from "../command-actions/deconstructSuperNodeAction.js";
|
|
34
35
|
import DeleteLinkAction from "../command-actions/deleteLinkAction.js";
|
|
35
36
|
import DeleteObjectsAction from "../command-actions/deleteObjectsAction.js";
|
|
@@ -67,7 +68,8 @@ export default class CanvasController {
|
|
|
67
68
|
defaultMenuEntries: {
|
|
68
69
|
saveToPalette: false,
|
|
69
70
|
createSupernode: true,
|
|
70
|
-
displaySupernodeFullPage: true
|
|
71
|
+
displaySupernodeFullPage: true,
|
|
72
|
+
colorBackground: true
|
|
71
73
|
}
|
|
72
74
|
};
|
|
73
75
|
|
|
@@ -171,7 +173,10 @@ export default class CanvasController {
|
|
|
171
173
|
|
|
172
174
|
setContextMenuConfig(contextMenuConfig) {
|
|
173
175
|
this.logger.log("Setting Context Menu Config");
|
|
174
|
-
|
|
176
|
+
if (contextMenuConfig) {
|
|
177
|
+
const defaultMenuEntries = Object.assign(this.contextMenuConfig.defaultMenuEntries, contextMenuConfig.defaultMenuEntries);
|
|
178
|
+
this.contextMenuConfig = Object.assign(this.contextMenuConfig, contextMenuConfig, { defaultMenuEntries });
|
|
179
|
+
}
|
|
175
180
|
}
|
|
176
181
|
|
|
177
182
|
setKeyboardConfig(keyboardConfig) {
|
|
@@ -1583,8 +1588,19 @@ export default class CanvasController {
|
|
|
1583
1588
|
return null;
|
|
1584
1589
|
}
|
|
1585
1590
|
|
|
1586
|
-
|
|
1591
|
+
nodeTemplateDragStart(nodeTemplate) {
|
|
1587
1592
|
CanvasController.dragNodeTemplate = nodeTemplate;
|
|
1593
|
+
|
|
1594
|
+
if (this.canvasContents) {
|
|
1595
|
+
this.getSVGCanvasD3().nodeTemplateDragStart(CanvasController.dragNodeTemplate);
|
|
1596
|
+
}
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
nodeTemplateDragEnd() {
|
|
1600
|
+
if (this.canvasContents && CanvasController.dragNodeTemplate) {
|
|
1601
|
+
this.getSVGCanvasD3().nodeTemplateDragEnd(CanvasController.dragNodeTemplate);
|
|
1602
|
+
}
|
|
1603
|
+
CanvasController.dragNodeTemplate = null;
|
|
1588
1604
|
}
|
|
1589
1605
|
|
|
1590
1606
|
getDragNodeTemplate() {
|
|
@@ -1897,6 +1913,12 @@ export default class CanvasController {
|
|
|
1897
1913
|
menuDefinition = menuDefinition.concat({ divider: true });
|
|
1898
1914
|
}
|
|
1899
1915
|
}
|
|
1916
|
+
// Color objects
|
|
1917
|
+
if (source.type === "comment" &&
|
|
1918
|
+
get(this, "contextMenuConfig.defaultMenuEntries.colorBackground", true)) {
|
|
1919
|
+
menuDefinition = menuDefinition.concat({ submenu: true, menu: "colorPicker", label: this.labelUtil.getLabel("comment.colorBackground") });
|
|
1920
|
+
menuDefinition = menuDefinition.concat({ divider: true });
|
|
1921
|
+
}
|
|
1900
1922
|
// Edit submenu (cut, copy, paste)
|
|
1901
1923
|
if (source.type === "node" ||
|
|
1902
1924
|
source.type === "comment" ||
|
|
@@ -2099,10 +2121,10 @@ export default class CanvasController {
|
|
|
2099
2121
|
return { x: 0, y: 0 };
|
|
2100
2122
|
}
|
|
2101
2123
|
|
|
2102
|
-
contextMenuActionHandler(action) {
|
|
2124
|
+
contextMenuActionHandler(action, editParam) {
|
|
2103
2125
|
this.logger.log("contextMenuActionHandler - action: " + action);
|
|
2104
2126
|
this.logger.log(this.contextMenuSource);
|
|
2105
|
-
const data = Object.assign({}, this.contextMenuSource, { "editType": action, "editSource": "contextmenu" });
|
|
2127
|
+
const data = Object.assign({}, this.contextMenuSource, { "editType": action, "editParam": editParam, "editSource": "contextmenu" });
|
|
2106
2128
|
this.editActionHandler(data);
|
|
2107
2129
|
|
|
2108
2130
|
this.canvasContents.focusOnCanvas(); // Set focus on canvas so keybord events go there.
|
|
@@ -2357,6 +2379,11 @@ export default class CanvasController {
|
|
|
2357
2379
|
data = command.getData();
|
|
2358
2380
|
break;
|
|
2359
2381
|
}
|
|
2382
|
+
case "colorSelectedObjects": {
|
|
2383
|
+
command = new ColorSelectedObjectsAction(data, this.objectModel, this.labelUtil);
|
|
2384
|
+
this.commandStack.do(command);
|
|
2385
|
+
break;
|
|
2386
|
+
}
|
|
2360
2387
|
case "deleteSelectedObjects": {
|
|
2361
2388
|
command = new DeleteObjectsAction(data, this.objectModel, this.labelUtil, this.areDetachableLinksInUse());
|
|
2362
2389
|
this.commandStack.do(command);
|
|
@@ -14,12 +14,9 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
/* eslint no-shadow: ["error", { "allow": ["Node", "Comment"] }] */
|
|
18
|
-
|
|
19
17
|
import React from "react";
|
|
20
18
|
import PropTypes from "prop-types";
|
|
21
19
|
import { connect } from "react-redux";
|
|
22
|
-
import { injectIntl } from "react-intl";
|
|
23
20
|
import Logger from "../logging/canvas-logger.js";
|
|
24
21
|
|
|
25
22
|
class CanvasBottomPanel extends React.Component {
|
|
@@ -30,50 +27,55 @@ class CanvasBottomPanel extends React.Component {
|
|
|
30
27
|
panelHeight: 393
|
|
31
28
|
};
|
|
32
29
|
|
|
33
|
-
this.resizing = false;
|
|
34
30
|
this.logger = new Logger("CC-Bottom-Panel");
|
|
35
31
|
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
componentDidMount() {
|
|
42
|
-
// document.addEventListener("mouseup", this.stopResize, true);
|
|
32
|
+
this.onMouseUp = this.onMouseUp.bind(this);
|
|
33
|
+
this.onMouseDown = this.onMouseDown.bind(this);
|
|
34
|
+
this.onMouseMoveY = this.onMouseMoveY.bind(this);
|
|
43
35
|
}
|
|
44
36
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
37
|
+
onMouseDown(e) {
|
|
38
|
+
if (e.button === 0) {
|
|
39
|
+
document.addEventListener("mousemove", this.onMouseMoveY, true);
|
|
40
|
+
document.addEventListener("mouseup", this.onMouseUp, true);
|
|
41
|
+
this.poseY = e.clientY;
|
|
42
|
+
}
|
|
51
43
|
}
|
|
52
44
|
|
|
53
|
-
|
|
54
|
-
this.
|
|
45
|
+
onMouseUp(e) {
|
|
46
|
+
document.removeEventListener("mousemove", this.onMouseMoveY, true);
|
|
47
|
+
document.removeEventListener("mouseup", this.onMouseUp, true);
|
|
55
48
|
}
|
|
56
49
|
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
50
|
+
onMouseMoveY(e) {
|
|
51
|
+
if (e.clientY) {
|
|
52
|
+
const diff = e.clientY - this.poseY;
|
|
53
|
+
this.setState({
|
|
54
|
+
panelHeight: this.state.panelHeight - diff
|
|
55
|
+
});
|
|
56
|
+
this.poseY = e.clientY;
|
|
60
57
|
}
|
|
61
58
|
}
|
|
62
|
-
|
|
63
59
|
render() {
|
|
64
60
|
this.logger.log("render");
|
|
65
|
-
|
|
66
61
|
let bottomPanel = null;
|
|
67
62
|
|
|
68
|
-
const styleObj = {
|
|
69
|
-
height: this.state.panelHeight + "px"
|
|
70
|
-
// transition: transitionVariable,
|
|
71
|
-
};
|
|
72
|
-
|
|
73
63
|
if (this.props.bottomPanelIsOpen) {
|
|
64
|
+
const canvasContainer = document.querySelector(".common-canvas-drop-div");
|
|
65
|
+
const rectHeight = canvasContainer
|
|
66
|
+
? canvasContainer.getBoundingClientRect().height
|
|
67
|
+
: 0;
|
|
68
|
+
const marginTop = 60;
|
|
69
|
+
const height = this.state.panelHeight >= (rectHeight - marginTop)
|
|
70
|
+
? (rectHeight - marginTop)
|
|
71
|
+
: this.state.panelHeight;
|
|
72
|
+
|
|
74
73
|
bottomPanel = (
|
|
75
|
-
<div className=
|
|
76
|
-
{this.
|
|
74
|
+
<div className="bottom-panel" style={{ height }} >
|
|
75
|
+
<div className="bottom-panel-drag" onMouseDown={this.onMouseDown} />
|
|
76
|
+
<div className="bottom-panel-contents">
|
|
77
|
+
{this.props.bottomPanelContent}
|
|
78
|
+
</div>
|
|
77
79
|
</div>
|
|
78
80
|
);
|
|
79
81
|
}
|
|
@@ -83,10 +85,6 @@ class CanvasBottomPanel extends React.Component {
|
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
CanvasBottomPanel.propTypes = {
|
|
86
|
-
// Provided by CommonCanvas
|
|
87
|
-
intl: PropTypes.object.isRequired,
|
|
88
|
-
canvasController: PropTypes.object.isRequired,
|
|
89
|
-
|
|
90
88
|
// Provided by Redux
|
|
91
89
|
bottomPanelIsOpen: PropTypes.bool,
|
|
92
90
|
bottomPanelContent: PropTypes.object
|
|
@@ -96,5 +94,4 @@ const mapStateToProps = (state, ownProps) => ({
|
|
|
96
94
|
bottomPanelIsOpen: state.bottompanel.isOpen,
|
|
97
95
|
bottomPanelContent: state.bottompanel.content
|
|
98
96
|
});
|
|
99
|
-
|
|
100
|
-
export default connect(mapStateToProps)(injectIntl(CanvasBottomPanel));
|
|
97
|
+
export default connect(mapStateToProps)(CanvasBottomPanel);
|