@reltio/components 1.4.1385 → 1.4.1387

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.
@@ -60,7 +60,7 @@ var areRelatedEntitiesChanged = function (initial, actual) {
60
60
  };
61
61
  var RelationEditor = function (_a) {
62
62
  var _b;
63
- var connection = _a.connection, modifiedEntity = _a.modifiedEntity, allModifiedEntities = _a.allModifiedEntities, dispatch = _a.dispatch, config = _a.config, mode = _a.mode, metadata = _a.metadata, globalSearchRequestOptions = _a.globalSearchRequestOptions, error = _a.error, highlightedError = _a.highlightedError;
63
+ var connection = _a.connection, modifiedEntity = _a.modifiedEntity, initialConnection = _a.initialConnection, initialModifiedEntity = _a.initialModifiedEntity, allModifiedEntities = _a.allModifiedEntities, dispatch = _a.dispatch, config = _a.config, mode = _a.mode, metadata = _a.metadata, globalSearchRequestOptions = _a.globalSearchRequestOptions, error = _a.error, highlightedError = _a.highlightedError;
64
64
  var _c = connection.relation, relationUri = _c.relationUri, relationType = _c.relationType, direction = _c.direction;
65
65
  var isNew = connection.isNew;
66
66
  var styles = (0, styles_1.useStyles)();
@@ -76,17 +76,23 @@ var RelationEditor = function (_a) {
76
76
  }, [config, direction, relationType, mode, metadata, connection.parentEntityUri]), _f = _e.inRelations, inRelationTypes = _f === void 0 ? [] : _f, _g = _e.outRelations, outRelationTypes = _g === void 0 ? [] : _g;
77
77
  var firstLevelRelationAttrTypes = (0, react_1.useMemo)(function () { return (0, mdm_sdk_1.getRelationAttributesList)(metadata, relationType); }, [relationType, metadata]);
78
78
  var attributeListEntity = (0, react_1.useMemo)(function () { return (__assign({ attributes: __assign({}, mdm_module_1.profile.relations.selectors.getRelationAttributesFromConnection(connection)) }, (0, mdm_sdk_1.getActivenessAttributes)(connection.relation))); }, [connection]);
79
- var initialConnection = (0, react_1.useRef)(connection);
80
- var initialModifiedEntity = (0, react_1.useRef)(modifiedEntity);
81
79
  var relatedTempEntities = (0, react_1.useMemo)(function () { return (0, mdm_sdk_1.findRelatedTemporaryEntities)(allModifiedEntities, modifiedEntity); }, [allModifiedEntities, modifiedEntity]);
82
80
  var relatedTempEntitiesUrisHistory = (0, react_1.useRef)([]);
81
+ var setInitialInfo = (0, react_1.useCallback)(function (entity, connection) {
82
+ dispatch(mdm_module_1.profile.relations.actions.setInitialInfo(config.id, relationUri, entity, connection));
83
+ }, [dispatch]);
84
+ (0, react_1.useEffect)(function () {
85
+ if (!initialConnection) {
86
+ setInitialInfo(modifiedEntity, connection);
87
+ }
88
+ }, []);
83
89
  (0, react_1.useEffect)(function () {
84
90
  relatedTempEntitiesUrisHistory.current = (0, ramda_1.pipe)((0, ramda_1.concat)(relatedTempEntities.map((0, ramda_1.prop)('uri'))), ramda_1.uniq)(relatedTempEntitiesUrisHistory.current);
85
91
  }, [relatedTempEntities]);
86
92
  var initialRelatedTempEntities = (0, react_1.useRef)(relatedTempEntities);
87
93
  var defaultRelationType = (0, mdm_sdk_1.getDefaultRelationTypeObject)(inRelationTypes, outRelationTypes);
88
- var hasChanges = initialConnection.current !== connection ||
89
- initialModifiedEntity.current !== modifiedEntity ||
94
+ var hasChanges = !(0, ramda_1.equals)((0, ramda_1.pick)(['entity', 'relation'], initialConnection || {}), (0, ramda_1.pick)(['entity', 'relation'], connection)) ||
95
+ !(0, ramda_1.equals)(initialModifiedEntity, modifiedEntity) ||
90
96
  areRelatedEntitiesChanged(initialRelatedTempEntities.current, relatedTempEntities) ||
91
97
  (connection.isNew && !(0, mdm_sdk_1.isEmptyValue)((0, ramda_1.path)(['relation', 'object', 'attributes'], connection)));
92
98
  var applyAction = isNew ? mdm_module_1.profile.relations.actions.addRelation : mdm_module_1.profile.relations.actions.editRelation;
@@ -116,13 +122,12 @@ var RelationEditor = function (_a) {
116
122
  return errors.length === 0;
117
123
  }, [connection, metadata, allModifiedEntities, dispatch]);
118
124
  var resetErrors = (0, react_1.useCallback)(function () { return dispatch(mdm_module_1.profile.errors.actions.errorsSet([])); }, [dispatch]);
119
- var onApply = (0, react_1.useCallback)((0, ramda_1.pipe)((0, ramda_1.always)(connection), (0, ramda_1.when)(validate, (0, ramda_1.pipe)(mdm_sdk_1.omitMarks, updateModifiedEntityLabel, applyAction(config.id), dispatch, (0, ramda_1.always)((0, ramda_1.differenceWith)(ramda_1.equals, relatedTempEntitiesUrisHistory.current, relatedTempEntities.map((0, ramda_1.prop)('uri')))), (0, ramda_1.forEach)(deleteModifiedEntity), handleClose))), [connection, config, dispatch, updateModifiedEntityLabel, validate, relatedTempEntities]);
125
+ var onApply = (0, react_1.useCallback)((0, ramda_1.pipe)((0, ramda_1.always)(connection), (0, ramda_1.when)(validate, (0, ramda_1.pipe)(mdm_sdk_1.omitMarks, updateModifiedEntityLabel, (0, ramda_1.omit)(['initial']), applyAction(config.id), dispatch, (0, ramda_1.always)((0, ramda_1.differenceWith)(ramda_1.equals, relatedTempEntitiesUrisHistory.current, relatedTempEntities.map((0, ramda_1.prop)('uri')))), (0, ramda_1.forEach)(deleteModifiedEntity), handleClose))), [connection, config, dispatch, updateModifiedEntityLabel, validate, relatedTempEntities]);
120
126
  var onCancel = (0, react_1.useCallback)(function () {
121
- var initialEntity = initialModifiedEntity.current;
122
- if (modifiedEntity !== initialEntity) {
123
- if (initialEntity) {
124
- setModifiedEntity(initialEntity);
125
- if (modifiedEntity && modifiedEntity.uri !== initialEntity.uri) {
127
+ if (modifiedEntity !== initialModifiedEntity) {
128
+ if (initialModifiedEntity) {
129
+ setModifiedEntity(initialModifiedEntity);
130
+ if (modifiedEntity && modifiedEntity.uri !== initialModifiedEntity.uri) {
126
131
  deleteModifiedEntity(modifiedEntity.uri);
127
132
  }
128
133
  }
@@ -136,7 +141,7 @@ var RelationEditor = function (_a) {
136
141
  initialTempEntities.forEach(setModifiedEntity);
137
142
  resetErrors();
138
143
  handleClose();
139
- }, [handleClose, setModifiedEntity, deleteModifiedEntity, resetErrors, modifiedEntity]);
144
+ }, [handleClose, setModifiedEntity, deleteModifiedEntity, resetErrors, modifiedEntity, initialModifiedEntity]);
140
145
  var onAddAttributes = (0, react_1.useCallback)(function (params) {
141
146
  return (0, ramda_1.pipe)(mdm_module_1.profile.actions.addAttributes, dispatch)(params.map(function (param) { return (__assign(__assign({}, param), { viewId: config.id })); }));
142
147
  }, [config.id, dispatch]);
@@ -183,6 +188,8 @@ var RelationEditor = function (_a) {
183
188
  RelationEditor.propTypes = {
184
189
  connection: mdm_sdk_1.ConnectionType,
185
190
  modifiedEntity: mdm_sdk_1.EntityType,
191
+ initialConnection: mdm_sdk_1.ConnectionType,
192
+ initialModifiedEntity: mdm_sdk_1.EntityType,
186
193
  allModifiedEntities: prop_types_1.default.object,
187
194
  dispatch: prop_types_1.default.func,
188
195
  config: mdm_sdk_1.RelationsConfigType,
@@ -33,10 +33,14 @@ var mdm_module_1 = __importStar(require("@reltio/mdm-module"));
33
33
  var react_redux_1 = require("react-redux");
34
34
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
35
35
  var getConnectionEntityUri = function (props) { return mdm_module_1.profile.relations.selectors.getEntityUriFromConnection(props.connection); };
36
+ var getConnectionRelationUri = function (props) { return mdm_module_1.profile.relations.selectors.getRelationUriFromConnection(props.connection); };
36
37
  var mapStateToProps = function (state, ownProps) {
37
38
  var entityUri = getConnectionEntityUri(ownProps);
39
+ var relationUri = getConnectionRelationUri(ownProps);
38
40
  var isTempEntity = (0, mdm_sdk_1.isTempUri)(entityUri);
39
41
  return {
42
+ initialConnection: mdm_module_1.default.selectors.getInitialConnection(state, ownProps.config.id, relationUri),
43
+ initialModifiedEntity: mdm_module_1.default.selectors.getInitialConnectionTempEntity(state, ownProps.config.id, relationUri),
40
44
  modifiedEntity: isTempEntity ? mdm_module_1.default.selectors.getModifiedEntity(state, entityUri) : null,
41
45
  allModifiedEntities: isTempEntity ? mdm_module_1.default.selectors.getModifiedEntities(state) : null,
42
46
  globalSearchRequestOptions: mdm_module_1.default.selectors.getGlobalSearchRequestOptions(state, ['ovOnly']),
@@ -13,7 +13,7 @@ import React, { useCallback, useEffect, useMemo, useRef } from 'react';
13
13
  import i18n from 'ui-i18n';
14
14
  import PropTypes from 'prop-types';
15
15
  import classnames from 'classnames';
16
- import { allPass, always, concat, differenceWith, equals, forEach, path, pipe, prop, when, uniq, propEq } from 'ramda';
16
+ import { allPass, always, concat, differenceWith, equals, forEach, omit, path, pick, pipe, prop, when, uniq, propEq } from 'ramda';
17
17
  import Button from '@material-ui/core/Button';
18
18
  import Divider from '@material-ui/core/Divider';
19
19
  import Typography from '@material-ui/core/Typography';
@@ -32,7 +32,7 @@ var areRelatedEntitiesChanged = function (initial, actual) {
32
32
  };
33
33
  var RelationEditor = function (_a) {
34
34
  var _b;
35
- var connection = _a.connection, modifiedEntity = _a.modifiedEntity, allModifiedEntities = _a.allModifiedEntities, dispatch = _a.dispatch, config = _a.config, mode = _a.mode, metadata = _a.metadata, globalSearchRequestOptions = _a.globalSearchRequestOptions, error = _a.error, highlightedError = _a.highlightedError;
35
+ var connection = _a.connection, modifiedEntity = _a.modifiedEntity, initialConnection = _a.initialConnection, initialModifiedEntity = _a.initialModifiedEntity, allModifiedEntities = _a.allModifiedEntities, dispatch = _a.dispatch, config = _a.config, mode = _a.mode, metadata = _a.metadata, globalSearchRequestOptions = _a.globalSearchRequestOptions, error = _a.error, highlightedError = _a.highlightedError;
36
36
  var _c = connection.relation, relationUri = _c.relationUri, relationType = _c.relationType, direction = _c.direction;
37
37
  var isNew = connection.isNew;
38
38
  var styles = useStyles();
@@ -48,17 +48,23 @@ var RelationEditor = function (_a) {
48
48
  }, [config, direction, relationType, mode, metadata, connection.parentEntityUri]), _f = _e.inRelations, inRelationTypes = _f === void 0 ? [] : _f, _g = _e.outRelations, outRelationTypes = _g === void 0 ? [] : _g;
49
49
  var firstLevelRelationAttrTypes = useMemo(function () { return getRelationAttributesList(metadata, relationType); }, [relationType, metadata]);
50
50
  var attributeListEntity = useMemo(function () { return (__assign({ attributes: __assign({}, profile.relations.selectors.getRelationAttributesFromConnection(connection)) }, getActivenessAttributes(connection.relation))); }, [connection]);
51
- var initialConnection = useRef(connection);
52
- var initialModifiedEntity = useRef(modifiedEntity);
53
51
  var relatedTempEntities = useMemo(function () { return findRelatedTemporaryEntities(allModifiedEntities, modifiedEntity); }, [allModifiedEntities, modifiedEntity]);
54
52
  var relatedTempEntitiesUrisHistory = useRef([]);
53
+ var setInitialInfo = useCallback(function (entity, connection) {
54
+ dispatch(profile.relations.actions.setInitialInfo(config.id, relationUri, entity, connection));
55
+ }, [dispatch]);
56
+ useEffect(function () {
57
+ if (!initialConnection) {
58
+ setInitialInfo(modifiedEntity, connection);
59
+ }
60
+ }, []);
55
61
  useEffect(function () {
56
62
  relatedTempEntitiesUrisHistory.current = pipe(concat(relatedTempEntities.map(prop('uri'))), uniq)(relatedTempEntitiesUrisHistory.current);
57
63
  }, [relatedTempEntities]);
58
64
  var initialRelatedTempEntities = useRef(relatedTempEntities);
59
65
  var defaultRelationType = getDefaultRelationTypeObject(inRelationTypes, outRelationTypes);
60
- var hasChanges = initialConnection.current !== connection ||
61
- initialModifiedEntity.current !== modifiedEntity ||
66
+ var hasChanges = !equals(pick(['entity', 'relation'], initialConnection || {}), pick(['entity', 'relation'], connection)) ||
67
+ !equals(initialModifiedEntity, modifiedEntity) ||
62
68
  areRelatedEntitiesChanged(initialRelatedTempEntities.current, relatedTempEntities) ||
63
69
  (connection.isNew && !isEmptyValue(path(['relation', 'object', 'attributes'], connection)));
64
70
  var applyAction = isNew ? profile.relations.actions.addRelation : profile.relations.actions.editRelation;
@@ -88,13 +94,12 @@ var RelationEditor = function (_a) {
88
94
  return errors.length === 0;
89
95
  }, [connection, metadata, allModifiedEntities, dispatch]);
90
96
  var resetErrors = useCallback(function () { return dispatch(profile.errors.actions.errorsSet([])); }, [dispatch]);
91
- var onApply = useCallback(pipe(always(connection), when(validate, pipe(omitMarks, updateModifiedEntityLabel, applyAction(config.id), dispatch, always(differenceWith(equals, relatedTempEntitiesUrisHistory.current, relatedTempEntities.map(prop('uri')))), forEach(deleteModifiedEntity), handleClose))), [connection, config, dispatch, updateModifiedEntityLabel, validate, relatedTempEntities]);
97
+ var onApply = useCallback(pipe(always(connection), when(validate, pipe(omitMarks, updateModifiedEntityLabel, omit(['initial']), applyAction(config.id), dispatch, always(differenceWith(equals, relatedTempEntitiesUrisHistory.current, relatedTempEntities.map(prop('uri')))), forEach(deleteModifiedEntity), handleClose))), [connection, config, dispatch, updateModifiedEntityLabel, validate, relatedTempEntities]);
92
98
  var onCancel = useCallback(function () {
93
- var initialEntity = initialModifiedEntity.current;
94
- if (modifiedEntity !== initialEntity) {
95
- if (initialEntity) {
96
- setModifiedEntity(initialEntity);
97
- if (modifiedEntity && modifiedEntity.uri !== initialEntity.uri) {
99
+ if (modifiedEntity !== initialModifiedEntity) {
100
+ if (initialModifiedEntity) {
101
+ setModifiedEntity(initialModifiedEntity);
102
+ if (modifiedEntity && modifiedEntity.uri !== initialModifiedEntity.uri) {
98
103
  deleteModifiedEntity(modifiedEntity.uri);
99
104
  }
100
105
  }
@@ -108,7 +113,7 @@ var RelationEditor = function (_a) {
108
113
  initialTempEntities.forEach(setModifiedEntity);
109
114
  resetErrors();
110
115
  handleClose();
111
- }, [handleClose, setModifiedEntity, deleteModifiedEntity, resetErrors, modifiedEntity]);
116
+ }, [handleClose, setModifiedEntity, deleteModifiedEntity, resetErrors, modifiedEntity, initialModifiedEntity]);
112
117
  var onAddAttributes = useCallback(function (params) {
113
118
  return pipe(profile.actions.addAttributes, dispatch)(params.map(function (param) { return (__assign(__assign({}, param), { viewId: config.id })); }));
114
119
  }, [config.id, dispatch]);
@@ -155,6 +160,8 @@ var RelationEditor = function (_a) {
155
160
  RelationEditor.propTypes = {
156
161
  connection: ConnectionType,
157
162
  modifiedEntity: EntityType,
163
+ initialConnection: ConnectionType,
164
+ initialModifiedEntity: EntityType,
158
165
  allModifiedEntities: PropTypes.object,
159
166
  dispatch: PropTypes.func,
160
167
  config: RelationsConfigType,
@@ -3,10 +3,14 @@ import mdmModule, { profile } from '@reltio/mdm-module';
3
3
  import { connect } from 'react-redux';
4
4
  import { getRelationEditorActiveError, isTempUri } from '@reltio/mdm-sdk';
5
5
  var getConnectionEntityUri = function (props) { return profile.relations.selectors.getEntityUriFromConnection(props.connection); };
6
+ var getConnectionRelationUri = function (props) { return profile.relations.selectors.getRelationUriFromConnection(props.connection); };
6
7
  var mapStateToProps = function (state, ownProps) {
7
8
  var entityUri = getConnectionEntityUri(ownProps);
9
+ var relationUri = getConnectionRelationUri(ownProps);
8
10
  var isTempEntity = isTempUri(entityUri);
9
11
  return {
12
+ initialConnection: mdmModule.selectors.getInitialConnection(state, ownProps.config.id, relationUri),
13
+ initialModifiedEntity: mdmModule.selectors.getInitialConnectionTempEntity(state, ownProps.config.id, relationUri),
10
14
  modifiedEntity: isTempEntity ? mdmModule.selectors.getModifiedEntity(state, entityUri) : null,
11
15
  allModifiedEntities: isTempEntity ? mdmModule.selectors.getModifiedEntities(state) : null,
12
16
  globalSearchRequestOptions: mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly']),
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1385",
3
+ "version": "1.4.1387",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
7
7
  "dependencies": {
8
8
  "@date-io/moment": "^1.3.5",
9
9
  "@react-google-maps/api": "2.7.0",
10
- "@reltio/mdm-module": "^1.4.1385",
11
- "@reltio/mdm-sdk": "^1.4.1385",
10
+ "@reltio/mdm-module": "^1.4.1387",
11
+ "@reltio/mdm-sdk": "^1.4.1387",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-cloud": "^1.2.5",
14
14
  "d3-geo": "^2.0.1",