@lingk/sync 0.0.52 → 0.0.54

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/build/main.js CHANGED
@@ -4386,13 +4386,13 @@ module.exports =
4386
4386
  module.exports = require("react");
4387
4387
 
4388
4388
  /***/ },
4389
- /* 3 */
4389
+ /* 3 */,
4390
+ /* 4 */
4390
4391
  /***/ function(module, exports) {
4391
4392
 
4392
4393
  module.exports = require("redux-form");
4393
4394
 
4394
4395
  /***/ },
4395
- /* 4 */,
4396
4396
  /* 5 */
4397
4397
  /***/ function(module, exports, __webpack_require__) {
4398
4398
 
@@ -4447,7 +4447,8 @@ module.exports =
4447
4447
  return props.reset();
4448
4448
  }, 100);
4449
4449
  },
4450
- style: { float: 'right', marginRight: 14 }
4450
+ style: { float: 'right', marginRight: 14 },
4451
+ disabled: props.finishDisabled
4451
4452
  },
4452
4453
  props.nav.last ? 'Finish' : 'Save And Exit'
4453
4454
  )
@@ -4521,28 +4522,43 @@ module.exports =
4521
4522
  if (wizard.savedBundles && wizard.savedBundles.bundles) {
4522
4523
  var resourceGroups = wizard.savedBundles.bundles.map(function (bundle, index) {
4523
4524
 
4524
- //get bundle resource and destinationKey
4525
+ console.log(bundle);
4526
+
4527
+ // get bundle resource
4525
4528
  var bundleResource = wizard.destinationMetadata.find(function (rsc) {
4526
4529
  return rsc.type === bundle.name;
4527
4530
  });
4528
- var bundleProperty = bundleResource.properties.find(function (prop) {
4529
- return prop.name === bundle.destinationKey;
4531
+ //get bundle destinationKeys
4532
+ var destinationKeys = bundle.destinationKeys.map(function (dk) {
4533
+ var bundleProperty = bundleResource.properties.find(function (prop) {
4534
+ return prop.name === dk;
4535
+ });
4536
+ return bundleProperty && bundleProperty.label || 'externalId';
4530
4537
  });
4531
4538
 
4532
- //get resource and sourceKey from first rsc in bundle (check both metadatas)
4533
- var primaryResourceProvider = bundle.resources[0].provider.charAt(0).toUpperCase() + bundle.resources[0].provider.slice(1).replace('Reader', '');
4534
- var primaryDataSourceMetadata = primaryResourceProvider === step.destinationProvider ? wizard.destinationMetadata : wizard.sourceMetadata;
4535
- var sourceKeyResource = primaryDataSourceMetadata.find(function (r) {
4536
- return r.type === bundle.resources[0].resourceName;
4537
- });
4538
- var sourceKeyProperty = sourceKeyResource.properties.find(function (prop) {
4539
- return prop.name === bundle.sourceKey;
4539
+ var sourceKeysObjects = [];
4540
+ var sourceKeys = bundle.sourceKeys.map(function (sk, i) {
4541
+ var sourceKeyResourceObj = bundle.resources.find(function (r) {
4542
+ return r.resourceName === bundle.sourceKeysObjects[i];
4543
+ });
4544
+ var sourceKeyResourceProvider = sourceKeyResourceObj.provider.slice(1).replace('Reader', '');
4545
+ var primaryDataSourceMetadata = sourceKeyResourceProvider === step.destinationProvider ? wizard.destinationMetadata : wizard.sourceMetadata;
4546
+ var sourceKeyResource = primaryDataSourceMetadata.find(function (r) {
4547
+ return r.type === bundle.sourceKeysObjects[i];
4548
+ });
4549
+ sourceKeysObjects.push(sourceKeyResource.name);
4550
+ var sourceKeyProperty = sourceKeyResource.properties.find(function (prop) {
4551
+ return prop.name === sk;
4552
+ });
4553
+ return sourceKeyProperty.label;
4540
4554
  });
4541
4555
 
4542
4556
  return {
4543
4557
  name: bundleResource.name,
4544
- sourceKey: sourceKeyProperty.label,
4545
- destinationKey: bundleProperty.label,
4558
+ sourceKeys: sourceKeys,
4559
+ sourceKeysObjects: sourceKeysObjects,
4560
+ destinationKeys: destinationKeys,
4561
+ customExternalKeys: bundle.customExternalKeys,
4546
4562
  provider: bundle.provider.charAt(0).toUpperCase() + bundle.provider.slice(1),
4547
4563
  resources: bundle.resources && bundle.resources.map(function (rsc) {
4548
4564
 
@@ -4556,7 +4572,9 @@ module.exports =
4556
4572
  return prop.name === rsc.joinKeyName;
4557
4573
  });
4558
4574
 
4559
- //get resource and primaryKey for first resource in bundle (check both metadatas, already have correct one)
4575
+ //get resource and primaryKey for first resource in bundle (check both metadatas)
4576
+ var primaryResourceProvider = bundle.resources[0].provider.charAt(0).toUpperCase() + bundle.resources[0].provider.slice(1).replace('Reader', '');
4577
+ var primaryDataSourceMetadata = primaryResourceProvider === step.destinationProvider ? wizard.destinationMetadata : wizard.sourceMetadata;
4560
4578
  var rscPrimaryResource = primaryDataSourceMetadata.find(function (r) {
4561
4579
  return r.type === bundle.resources[0].resourceName;
4562
4580
  });
@@ -4593,7 +4611,7 @@ module.exports =
4593
4611
  resourceToName: destinationResource.name,
4594
4612
  propertyToName: destinationProperty.label,
4595
4613
  transformations: m.transformations && m.transformations.length > 0 ? m.transformations : [{ type: 'none' }]
4596
- }, m.isDestinationResource && { dataSourceIsDestinationEntity: true });
4614
+ }, m.isDestinationResource && { dataSourceIsDestinationEntity: true }, m.isExternalKeyMapping && { isExternalKeyMapping: true });
4597
4615
  })
4598
4616
  };
4599
4617
  });
@@ -5636,9 +5654,9 @@ module.exports =
5636
5654
  isBundleStep ? _react2.default.createElement(
5637
5655
  'div',
5638
5656
  { style: { position: 'absolute', right: 0, top: -2, zIndex: 99 } },
5639
- _react2.default.createElement(Select, { label: 'Target', type: 'brand', style: { height: 40 }, menuAlign: 'right',
5640
- onSelect: this.addDefaultResourceGroup, values: destinationSchema, title: 'Add Sync Operation',
5641
- minWidth: 260
5657
+ _react2.default.createElement(Select, { label: '' + step.destinationProvider, type: 'brand', style: { height: 40 }, menuAlign: 'right',
5658
+ onSelect: this.addDefaultResourceGroup, values: destinationSchema, title: 'Add Target Object',
5659
+ minWidth: 260, fieldPropLabel: 'name'
5642
5660
  })
5643
5661
  ) : null
5644
5662
  ),
@@ -16976,7 +16994,7 @@ module.exports =
16976
16994
  };
16977
16995
  }
16978
16996
 
16979
- function callGenerateRecipe(tenantId, appId, typeGuid, title, piGuid, mappingGuidDeleteThis) {
16997
+ function callGenerateRecipe(tenantId, appId, typeGuid, title, piGuid, mappingGuid, destinationMetadata) {
16980
16998
  return function (dispatch, getState, api) {
16981
16999
  var _getState6 = getState(),
16982
17000
  config = _getState6.config;
@@ -16989,7 +17007,8 @@ module.exports =
16989
17007
  "integrationTypeId": 2, // 1 = Lingk, 2 = Salesforce
16990
17008
  "name": title,
16991
17009
  "integrationTypeGuid": typeGuid,
16992
- "schemaMappingGuid": mappingGuidDeleteThis
17010
+ "schemaMappingGuid": mappingGuid,
17011
+ "destinationMetadata": destinationMetadata
16993
17012
  }
16994
17013
  }).then(function (res) {
16995
17014
  return res;
@@ -16997,16 +17016,17 @@ module.exports =
16997
17016
  };
16998
17017
  }
16999
17018
 
17000
- function submitWizardData(tenantId, appId, bundles, mappings, configuration, title, deployment, typeGuid, onGenerate, onFinish) {
17019
+ function submitWizardData(tenantId, appId, bundles, mappings, configuration, title, deployment, typeGuid, onGenerate, onFinish, destinationMetadata) {
17001
17020
  return function (dispatch) {
17002
17021
  dispatch(callPostBundles(tenantId, appId, bundles)).then(function (bundlePack) {
17003
17022
  dispatch(callPostMapping(tenantId, appId, mappings)).then(function (map) {
17004
17023
  dispatch(callPostProductizedIntegration(tenantId, appId, map.schemaMappingGuid, bundlePack.bundlePackGuid, configuration, title, typeGuid)).then(function (pi) {
17005
17024
  if (map.mappings && map.mappings.length > 0 && deployment) {
17006
- dispatch(callGenerateRecipe(tenantId, appId, typeGuid, title, pi.productizedIntegrationGuid, map.schemaMappingGuid)).then(function (generatedRecipe) {
17025
+ dispatch(callGenerateRecipe(tenantId, appId, typeGuid, title, pi.productizedIntegrationGuid, map.schemaMappingGuid, destinationMetadata)).then(function (generatedRecipe) {
17007
17026
  onGenerate();
17008
17027
  if (deployment) {
17009
17028
  if (deployment.type === 'once') {
17029
+ dispatch(callDeployTrigger(generatedRecipe, pi.productizedIntegrationGuid, map.schemaMappingGuid)); //deploy anyway, so user can schedule later
17010
17030
  dispatch(callExecuteTransformer(generatedRecipe.Id)).then(function (response) {
17011
17031
  dispatch(callLookupLogData(response.externalExecutionId, 0, onFinish, generatedRecipe, pi.productizedIntegrationGuid, map.schemaMappingGuid));
17012
17032
  });
@@ -17119,11 +17139,13 @@ module.exports =
17119
17139
 
17120
17140
  var TRANS_API_URL = config.TRANS_API_URL;
17121
17141
 
17122
- return api.put('transformer/deploy/' + generatedRecipe.BaseId, {
17142
+ return api.put('transformer/deploy/' + generatedRecipe.Id, {
17123
17143
  endpoint: TRANS_API_URL,
17124
17144
  data: { deployed: true }
17125
17145
  }).then(function () {
17126
- onFinish(generatedRecipe, piGuid, mapGuid);
17146
+ if (onFinish) {
17147
+ onFinish(generatedRecipe, piGuid, mapGuid);
17148
+ }
17127
17149
  });
17128
17150
  };
17129
17151
  }
@@ -17156,10 +17178,13 @@ module.exports =
17156
17178
  return api.get(tenantId + '/productizedintegrations', {
17157
17179
  endpoint: TRANS_API_URL
17158
17180
  }).then(function (data) {
17181
+ var PI = data.find(function (pi) {
17182
+ return pi.ProductizedIntegrationGuid === piGuid;
17183
+ });
17159
17184
  var config = {};
17160
17185
  var savedSourceEndpoint = null;
17161
17186
  var savedDestinationEndpoint = null;
17162
- data[0].Configuration.forEach(function (c) {
17187
+ PI.Configuration.forEach(function (c) {
17163
17188
  config[c.Key] = c.Value;
17164
17189
  if (c.Key === 'sourceEndpoint') {
17165
17190
  savedSourceEndpoint = c.Value;
@@ -17172,7 +17197,7 @@ module.exports =
17172
17197
  type: types.SET_WIZARD_SAVED_CONFIGURATION,
17173
17198
  data: config
17174
17199
  });
17175
- return Promise.all([dispatch(tryGetMetadata(tenantId, accountId, 'source', providers.source, metadataEndpoints.source, savedSourceEndpoint)), dispatch(tryGetMetadata(tenantId, accountId, 'destination', providers.destination, metadataEndpoints.destination, savedDestinationEndpoint)), dispatch(callGetMapping(tenantId, accountId, data[0].SchemaMappingGuid)), dispatch(callGetBundles(tenantId, accountId, data[0].BundlePackGuid)), dispatch(callGetTrigger(data[0].TransformerBaseId))]);
17200
+ return Promise.all([dispatch(tryGetMetadata(tenantId, accountId, 'source', providers.source, metadataEndpoints.source, savedSourceEndpoint)), dispatch(tryGetMetadata(tenantId, accountId, 'destination', providers.destination, metadataEndpoints.destination, savedDestinationEndpoint)), dispatch(callGetMapping(tenantId, accountId, PI.SchemaMappingGuid)), dispatch(callGetBundles(tenantId, accountId, PI.BundlePackGuid)), dispatch(callGetTrigger(PI.TransformerBaseId))]);
17176
17201
  });
17177
17202
  };
17178
17203
  } else return function (dispatch) {
@@ -18285,7 +18310,7 @@ module.exports =
18285
18310
 
18286
18311
  var _react2 = _interopRequireDefault(_react);
18287
18312
 
18288
- var _reduxForm = __webpack_require__(3);
18313
+ var _reduxForm = __webpack_require__(4);
18289
18314
 
18290
18315
  var _validate = __webpack_require__(6);
18291
18316
 
@@ -18369,7 +18394,7 @@ module.exports =
18369
18394
 
18370
18395
  var _react2 = _interopRequireDefault(_react);
18371
18396
 
18372
- var _reduxForm = __webpack_require__(3);
18397
+ var _reduxForm = __webpack_require__(4);
18373
18398
 
18374
18399
  var _validate = __webpack_require__(6);
18375
18400
 
@@ -18572,7 +18597,7 @@ module.exports =
18572
18597
 
18573
18598
  var _react2 = _interopRequireDefault(_react);
18574
18599
 
18575
- var _reduxForm = __webpack_require__(3);
18600
+ var _reduxForm = __webpack_require__(4);
18576
18601
 
18577
18602
  var _navButtons = __webpack_require__(5);
18578
18603
 
@@ -18602,8 +18627,6 @@ module.exports =
18602
18627
 
18603
18628
  _this.defaultResourceMapping = [{
18604
18629
  name: 'Contact',
18605
- sourceKey: 'ExternalId',
18606
- destinationKey: 'Account ID',
18607
18630
  provider: 'Salesforce',
18608
18631
  resources: [{
18609
18632
  name: 'Applicant',
@@ -18753,7 +18776,7 @@ module.exports =
18753
18776
 
18754
18777
  var _react2 = _interopRequireDefault(_react);
18755
18778
 
18756
- var _reduxForm = __webpack_require__(3);
18779
+ var _reduxForm = __webpack_require__(4);
18757
18780
 
18758
18781
  var _validate = __webpack_require__(6);
18759
18782
 
@@ -18861,7 +18884,26 @@ module.exports =
18861
18884
  nav = _props3.nav,
18862
18885
  reset = _props3.reset,
18863
18886
  step = _props3.step,
18864
- formValues = _props3.formValues;
18887
+ formValues = _props3.formValues,
18888
+ change = _props3.change;
18889
+
18890
+
18891
+ var disable = true;
18892
+ if (step.options && formValues.deployment) {
18893
+ if (formValues.deployment.type === 'daily') {
18894
+ if (formValues.deployment.dailySchedule) {
18895
+ disable = false;
18896
+ }
18897
+ } else if (formValues.deployment.type === 'repeating') {
18898
+ var f = parseInt(formValues.deployment.frequency, 10);
18899
+ var u = formValues.deployment.frequencyUnit;
18900
+ if (u && f && (u === 'Minutes' && f > 14 && f <= 60 || u === 'Hours' && f > 0 && f <= 24)) {
18901
+ disable = false;
18902
+ }
18903
+ } else if (formValues.deployment.type === 'once') {
18904
+ disable = false;
18905
+ }
18906
+ }
18865
18907
 
18866
18908
  return _react2.default.createElement(
18867
18909
  'form',
@@ -18922,7 +18964,11 @@ module.exports =
18922
18964
  _react2.default.createElement(
18923
18965
  'div',
18924
18966
  { style: { width: 100, display: 'inline-block', verticalAlign: 'top' } },
18925
- _react2.default.createElement(_reduxForm.Field, { name: 'deployment.frequency', type: 'number', component: inputs.rfInput, label: 'Frequency' })
18967
+ _react2.default.createElement(inputs.Input, { type: 'number', value: formValues.deployment.frequency,
18968
+ onChange: function onChange(e) {
18969
+ return change('deployment.frequency', e.target.value);
18970
+ }, label: 'Frequency'
18971
+ })
18926
18972
  ),
18927
18973
  _react2.default.createElement(
18928
18974
  'div',
@@ -18935,7 +18981,7 @@ module.exports =
18935
18981
  ) : null
18936
18982
  ),
18937
18983
  _react2.default.createElement('br', null),
18938
- _react2.default.createElement(_navButtons2.default, { handleSubmit: handleSubmit, nav: nav, reset: reset, inputs: inputs }),
18984
+ _react2.default.createElement(_navButtons2.default, { finishDisabled: disable, handleSubmit: handleSubmit, nav: nav, reset: reset, inputs: inputs }),
18939
18985
  _react2.default.createElement('br', null),
18940
18986
  _react2.default.createElement('br', null)
18941
18987
  );
@@ -18971,7 +19017,7 @@ module.exports =
18971
19017
 
18972
19018
  var _react2 = _interopRequireDefault(_react);
18973
19019
 
18974
- var _reduxForm = __webpack_require__(3);
19020
+ var _reduxForm = __webpack_require__(4);
18975
19021
 
18976
19022
  var _validate = __webpack_require__(6);
18977
19023
 
@@ -19248,7 +19294,7 @@ module.exports =
19248
19294
 
19249
19295
  var _react2 = _interopRequireDefault(_react);
19250
19296
 
19251
- var _reduxForm = __webpack_require__(3);
19297
+ var _reduxForm = __webpack_require__(4);
19252
19298
 
19253
19299
  var _validate = __webpack_require__(6);
19254
19300
 
@@ -19349,7 +19395,7 @@ module.exports =
19349
19395
 
19350
19396
  var _react2 = _interopRequireDefault(_react);
19351
19397
 
19352
- var _reduxForm = __webpack_require__(3);
19398
+ var _reduxForm = __webpack_require__(4);
19353
19399
 
19354
19400
  var _validate = __webpack_require__(6);
19355
19401
 
@@ -19592,7 +19638,7 @@ module.exports =
19592
19638
 
19593
19639
  var _react2 = _interopRequireDefault(_react);
19594
19640
 
19595
- var _reduxForm = __webpack_require__(3);
19641
+ var _reduxForm = __webpack_require__(4);
19596
19642
 
19597
19643
  var _validate = __webpack_require__(6);
19598
19644
 
@@ -19708,7 +19754,7 @@ module.exports =
19708
19754
 
19709
19755
  var _react2 = _interopRequireDefault(_react);
19710
19756
 
19711
- var _reduxForm = __webpack_require__(3);
19757
+ var _reduxForm = __webpack_require__(4);
19712
19758
 
19713
19759
  var _validate = __webpack_require__(6);
19714
19760
 
@@ -19806,7 +19852,7 @@ module.exports =
19806
19852
 
19807
19853
  var _react2 = _interopRequireDefault(_react);
19808
19854
 
19809
- var _reduxForm = __webpack_require__(3);
19855
+ var _reduxForm = __webpack_require__(4);
19810
19856
 
19811
19857
  var _validate = __webpack_require__(6);
19812
19858
 
@@ -19941,7 +19987,7 @@ module.exports =
19941
19987
 
19942
19988
  var _react2 = _interopRequireDefault(_react);
19943
19989
 
19944
- var _reduxForm = __webpack_require__(3);
19990
+ var _reduxForm = __webpack_require__(4);
19945
19991
 
19946
19992
  var _validate = __webpack_require__(6);
19947
19993
 
@@ -20182,6 +20228,8 @@ module.exports =
20182
20228
  }, {
20183
20229
  key: 'render',
20184
20230
  value: function render() {
20231
+ var _this2 = this;
20232
+
20185
20233
  var _props10 = this.props,
20186
20234
  inputs = _props10.inputs,
20187
20235
  handleSubmit = _props10.handleSubmit,
@@ -20207,14 +20255,19 @@ module.exports =
20207
20255
  _react2.default.createElement(
20208
20256
  'div',
20209
20257
  { style: { fontSize: 20, display: 'inline-block' } },
20210
- 'Build Sync Operations'
20258
+ 'Map ',
20259
+ step.sourceProvider,
20260
+ ' Objects to ',
20261
+ step.destinationProvider
20211
20262
  ),
20212
20263
  _react2.default.createElement('br', null),
20213
20264
  _react2.default.createElement('br', null),
20214
20265
  _react2.default.createElement(
20215
20266
  'p',
20216
20267
  null,
20217
- 'Build Sync Operations by mapping one or many data sources to a single Salesforce target object.'
20268
+ 'Map one or many data sources to a single ',
20269
+ step.destinationProvider,
20270
+ ' target object.'
20218
20271
  ),
20219
20272
  _react2.default.createElement('br', null),
20220
20273
  resourceGroups && resourceGroups.length > 0 ? _react2.default.createElement(
@@ -20241,7 +20294,10 @@ module.exports =
20241
20294
  ) : null,
20242
20295
  resourceGroups && resourceGroups.length > 0 && this.state.showModal && _react2.default.createElement(_connectModal2.default, { inputs: inputs, hideModal: this.hideModal, bundle: this.state.selectedBundle,
20243
20296
  opened: this.state.showModal, change: change, resourceGroups: resourceGroups, step: step,
20244
- bundleIndex: this.state.selectedBundleIndex, sourceSchema: sourceSchema, destinationSchema: destinationSchema
20297
+ bundleIndex: this.state.selectedBundleIndex, sourceSchema: sourceSchema, destinationSchema: destinationSchema,
20298
+ update: function update() {
20299
+ return _this2.forceUpdate();
20300
+ }
20245
20301
  }),
20246
20302
  _react2.default.createElement('br', null),
20247
20303
  _react2.default.createElement(_navButtons2.default, { handleSubmit: handleSubmit, nav: nav, reset: reset, inputs: inputs,
@@ -20279,7 +20335,7 @@ module.exports =
20279
20335
 
20280
20336
  var _react2 = _interopRequireDefault(_react);
20281
20337
 
20282
- var _reduxForm = __webpack_require__(3);
20338
+ var _reduxForm = __webpack_require__(4);
20283
20339
 
20284
20340
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20285
20341
 
@@ -20375,10 +20431,10 @@ module.exports =
20375
20431
 
20376
20432
  var _react2 = _interopRequireDefault(_react);
20377
20433
 
20378
- var _reduxForm = __webpack_require__(3);
20379
-
20380
20434
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20381
20435
 
20436
+ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
20437
+
20382
20438
  var ConnectModal = function ConnectModal(props) {
20383
20439
  var inputs = props.inputs,
20384
20440
  opened = props.opened,
@@ -20388,71 +20444,310 @@ module.exports =
20388
20444
  hideModal = props.hideModal,
20389
20445
  step = props.step,
20390
20446
  sourceSchema = props.sourceSchema,
20391
- destinationSchema = props.destinationSchema;
20447
+ destinationSchema = props.destinationSchema,
20448
+ change = props.change;
20392
20449
 
20393
20450
  var Modal = inputs.Modal;
20451
+ var Select = inputs.Select;
20452
+ var Button = inputs.Button;
20453
+
20454
+ var closeModal = function closeModal() {
20455
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20456
+ var group = rgs[bundleIndex];
20457
+ group.mappings = group.mappings && group.mappings.filter(function (m) {
20458
+ return !m.isExternalKeyMapping;
20459
+ });
20460
+ group.sourceKeys && group.sourceKeys.forEach(function (sk, i) {
20461
+ if (group.customExternalKeys && sk && group.destinationKeys && group.destinationKeys[i] || !group.customExternalKeys && sk) {
20462
+ var map = {
20463
+ isExternalKeyMapping: true,
20464
+ resourceFromName: group.sourceKeysObjects[i],
20465
+ propertyFromName: sk,
20466
+ resourceToName: group.name,
20467
+ propertyToName: group.customExternalKeys ? group.destinationKeys[i] : 'externalId'
20468
+ };
20469
+ if (group.mappings) {
20470
+ group.mappings.push(map);
20471
+ } else {
20472
+ group.mappings = [map];
20473
+ }
20474
+ }
20475
+ });
20476
+ change('resourceGroups', rgs);
20477
+ hideModal();
20478
+ };
20479
+
20480
+ var clickTab = function clickTab(bool) {
20481
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20482
+ var group = rgs[bundleIndex];
20483
+ group.customExternalKeys = bool;
20484
+ change('resourceGroups', rgs);
20485
+ props.update();
20486
+ };
20487
+
20488
+ var addRow = function addRow() {
20489
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20490
+ var group = rgs[bundleIndex];
20491
+ group.sourceKeys.push('');
20492
+ group.destinationKeys.push('');
20493
+ change('resourceGroups', rgs);
20494
+ props.update();
20495
+ };
20496
+
20497
+ var deleteRow = function deleteRow(i) {
20498
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20499
+ var group = rgs[bundleIndex];
20500
+ group.sourceKeys.splice(i, 1);
20501
+ group.destinationKeys.splice(i, 1);
20502
+ change('resourceGroups', rgs);
20503
+ props.update();
20504
+ };
20505
+
20506
+ var selectSourceKeyForLingk = function selectSourceKeyForLingk(key, section) {
20507
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20508
+ var group = rgs[bundleIndex];
20509
+ group.sourceKeys = [key];
20510
+ group.sourceKeysObjects = [section];
20511
+ change('resourceGroups', rgs);
20512
+ props.update();
20513
+ };
20514
+
20515
+ var selectCustomSourceKey = function selectCustomSourceKey(key, section, i) {
20516
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20517
+ var group = rgs[bundleIndex];
20518
+ if (i === 0) {
20519
+ group.sourceKeys = [key];
20520
+ group.sourceKeysObjects = [section];
20521
+ } else {
20522
+ group.sourceKeys[i] = key;
20523
+ group.sourceKeysObjects[i] = section;
20524
+ }
20525
+ change('resourceGroups', rgs);
20526
+ props.update();
20527
+ };
20528
+
20529
+ var selectCustomDestinationKey = function selectCustomDestinationKey(key, i) {
20530
+ var rgs = [].concat(_toConsumableArray(resourceGroups));
20531
+ var group = rgs[bundleIndex];
20532
+ if (i === 0) {
20533
+ group.destinationKeys = [key];
20534
+ } else {
20535
+ group.destinationKeys[i] = key;
20536
+ }
20537
+ change('resourceGroups', rgs);
20538
+ props.update();
20539
+ };
20540
+
20541
+ var sectionLabels = [];
20542
+ var sectionProviders = [];
20543
+ var vals = bundle.resources.map(function (br, i) {
20544
+ sectionLabels.push(br.name);
20545
+ sectionProviders.push(br.provider);
20546
+ return bundle.resources[i].provider === step.destinationProvider ? destinationSchema && destinationSchema.find(function (defaultRsc) {
20547
+ return defaultRsc.name === bundle.resources[i].name;
20548
+ }) && destinationSchema.find(function (defaultRsc) {
20549
+ return defaultRsc.name === bundle.resources[i].name;
20550
+ }).properties : sourceSchema && sourceSchema.find(function (defaultRsc) {
20551
+ return defaultRsc.name === bundle.resources[i].name;
20552
+ }) && sourceSchema.find(function (defaultRsc) {
20553
+ return defaultRsc.name === bundle.resources[i].name;
20554
+ }).properties;
20555
+ });
20556
+
20557
+ var sourceKeys = resourceGroups[bundleIndex].sourceKeys || [''];
20394
20558
 
20395
20559
  return _react2.default.createElement(
20396
20560
  Modal,
20397
- { opened: opened, hideModal: hideModal, title: 'Connect Source to Target' },
20561
+ { opened: opened, hideModal: closeModal, title: 'Connect Source to Target' },
20398
20562
  _react2.default.createElement(
20399
20563
  'div',
20400
20564
  null,
20401
- _react2.default.createElement(
20402
- 'p',
20403
- null,
20404
- 'Choose a Unique Key from both the Data Source and the Data Target.'
20405
- ),
20406
- _react2.default.createElement(
20407
- 'p',
20408
- null,
20409
- 'The chosen Source Key will be saved into ',
20410
- step.destinationProvider,
20411
- ' to prevent duplicate records.'
20412
- ),
20413
- _react2.default.createElement('br', null),
20414
20565
  _react2.default.createElement(
20415
20566
  'div',
20416
- { style: { display: 'inline-block', width: '50%' } },
20567
+ { className: 'connect-modal-tabs' },
20417
20568
  _react2.default.createElement(
20418
20569
  'div',
20419
- { className: 'labelz' },
20420
- 'Data Source Unique Key'
20570
+ { onClick: function onClick() {
20571
+ return clickTab(false);
20572
+ },
20573
+ className: 'connect-modal-tab' + (!resourceGroups[bundleIndex].customExternalKeys ? ' connect-modal-tab-selected' : '') },
20574
+ 'Use Lingk Unique ID',
20575
+ _react2.default.createElement('div', { className: 'connect-modal-tab-bar' })
20421
20576
  ),
20422
- _react2.default.createElement(_reduxForm.Field, { component: inputs.rfSelect, type: 'input', colorType: 'brand',
20423
- defaultLabel: bundle.resources[0].provider === step.destinationProvider ? 'Choose Key From ' + bundle.resources[0].name + ' (' + step.destinationProvider + ')' : 'Choose Key From ' + bundle.resources[0].name, buttonLabel: 'Choose Key',
20424
- name: 'resourceGroups.' + bundleIndex + '.sourceKey', selectedValue: resourceGroups[bundleIndex].sourceKey,
20425
- values: bundle.resources[0].provider === step.destinationProvider ? destinationSchema && destinationSchema.find(function (defaultRsc) {
20426
- return defaultRsc.name === bundle.resources[0].name;
20427
- }) && destinationSchema.find(function (defaultRsc) {
20428
- return defaultRsc.name === bundle.resources[0].name;
20429
- }).properties : sourceSchema && sourceSchema.find(function (defaultRsc) {
20430
- return defaultRsc.name === bundle.resources[0].name;
20431
- }) && sourceSchema.find(function (defaultRsc) {
20432
- return defaultRsc.name === bundle.resources[0].name;
20433
- }).properties
20434
- })
20577
+ _react2.default.createElement(
20578
+ 'div',
20579
+ { onClick: function onClick() {
20580
+ return clickTab(true);
20581
+ },
20582
+ className: 'connect-modal-tab' + (resourceGroups[bundleIndex].customExternalKeys ? ' connect-modal-tab-selected' : '') },
20583
+ 'Use Custom Unique IDs',
20584
+ _react2.default.createElement('div', { className: 'connect-modal-tab-bar' })
20585
+ )
20435
20586
  ),
20436
- _react2.default.createElement(
20587
+ resourceGroups[bundleIndex].customExternalKeys ? _react2.default.createElement(
20437
20588
  'div',
20438
- { style: { display: 'inline-block', width: '50%' } },
20589
+ { style: { padding: '1em' } },
20590
+ _react2.default.createElement(
20591
+ 'p',
20592
+ null,
20593
+ 'Choose one or more Unique Keys from both the Data Source and the Data Target. These keys will be used to keep records synchronized.'
20594
+ ),
20439
20595
  _react2.default.createElement(
20440
20596
  'div',
20441
- { className: 'labelz' },
20442
- 'Data Target Unique Key'
20597
+ null,
20598
+ _react2.default.createElement(
20599
+ 'div',
20600
+ { className: 'external-keys-row' },
20601
+ _react2.default.createElement(
20602
+ 'div',
20603
+ { className: 'external-keys-column' },
20604
+ _react2.default.createElement(
20605
+ 'div',
20606
+ { className: 'labelz' },
20607
+ 'Data Source Unique Key'
20608
+ )
20609
+ ),
20610
+ _react2.default.createElement('div', { style: { width: '6%', height: 1, display: 'inline-block' } }),
20611
+ _react2.default.createElement(
20612
+ 'div',
20613
+ { className: 'external-keys-column' },
20614
+ _react2.default.createElement(
20615
+ 'div',
20616
+ { className: 'labelz' },
20617
+ 'Data Target Unique Key'
20618
+ )
20619
+ )
20620
+ ),
20621
+ sourceKeys.map(function (sk, i) {
20622
+ return _react2.default.createElement(
20623
+ 'div',
20624
+ { className: 'external-keys-row', key: i },
20625
+ _react2.default.createElement(
20626
+ 'div',
20627
+ { className: 'external-keys-column' },
20628
+ _react2.default.createElement(Select, { label: sk || 'Choose Key', menuItemStyle: { height: 20, padding: '1px 8px' },
20629
+ onSelect: function onSelect(v, iii, rtid, section) {
20630
+ return selectCustomSourceKey(v, section, i);
20631
+ },
20632
+ type: 'brand', fieldPropLabel: 'label',
20633
+ values: vals, sectionLabels: sectionLabels, sectionLabelSuffix: 'Fields',
20634
+ selectedValues: resourceGroups[bundleIndex].sourceKeys && resourceGroups[bundleIndex].sourceKeys.map(function (ks) {
20635
+ return { label: ks };
20636
+ })
20637
+ })
20638
+ ),
20639
+ _react2.default.createElement(
20640
+ 'div',
20641
+ { style: { width: '6%', textAlign: 'center', display: 'inline-block' } },
20642
+ '\u2192'
20643
+ ),
20644
+ _react2.default.createElement(
20645
+ 'div',
20646
+ { className: 'external-keys-column' },
20647
+ _react2.default.createElement(Select, { label: resourceGroups[bundleIndex].destinationKeys && resourceGroups[bundleIndex].destinationKeys[i] || 'Choose Key',
20648
+ menuItemStyle: { height: 20, padding: '1px 8px' },
20649
+ onSelect: function onSelect(v, iii, rtid, section) {
20650
+ return selectCustomDestinationKey(v, i);
20651
+ }, type: 'brand',
20652
+ values: [destinationSchema && destinationSchema.find(function (defaultRsc) {
20653
+ return defaultRsc.name === bundle.name;
20654
+ }) && destinationSchema.find(function (defaultRsc) {
20655
+ return defaultRsc.name === bundle.name;
20656
+ }).properties],
20657
+ sectionLabels: [bundle.name], sectionLabelSuffix: 'Fields', fieldPropLabel: 'label',
20658
+ selectedValues: resourceGroups[bundleIndex].destinationKeys && resourceGroups[bundleIndex].destinationKeys.map(function (ks) {
20659
+ return { label: ks };
20660
+ })
20661
+ })
20662
+ ),
20663
+ i !== 0 && _react2.default.createElement(
20664
+ 'div',
20665
+ { className: 'delete-external-key-row', onClick: function onClick() {
20666
+ return deleteRow(i);
20667
+ } },
20668
+ _react2.default.createElement(
20669
+ 'svg',
20670
+ { xmlns: 'http://www.w3.org/2000/svg', className: 'delete-external-key-svg',
20671
+ style: { width: 18, height: 18 }, viewBox: '0 0 60 60' },
20672
+ _react2.default.createElement('path', { style: { strokeWidth: 5, strokeLinecap: 'round' },
20673
+ d: 'M 15.674663,15.572746 L 44.587629,44.485711 M 45.118838,15.420972 L 15.522889,45.016920' })
20674
+ )
20675
+ )
20676
+ );
20677
+ }),
20678
+ sourceKeys && sourceKeys.length < 5 && _react2.default.createElement(
20679
+ 'div',
20680
+ { style: { paddingTop: 10, width: '47%', textAlign: 'center' } },
20681
+ _react2.default.createElement(
20682
+ Button,
20683
+ { type: 'neutral', onClick: addRow },
20684
+ 'Add More Keys'
20685
+ )
20686
+ )
20687
+ )
20688
+ ) : _react2.default.createElement(
20689
+ 'div',
20690
+ { style: { padding: '1em' } },
20691
+ _react2.default.createElement(
20692
+ 'p',
20693
+ null,
20694
+ 'Choose a Unique Key from a data source object. A corresponding unique external id field will be created in the ',
20695
+ step.destinationProvider,
20696
+ ' ',
20697
+ bundle.name,
20698
+ ' object to keep records synchronized.'
20443
20699
  ),
20444
- _react2.default.createElement(_reduxForm.Field, { component: inputs.rfSelect, type: 'input', colorType: 'brand',
20445
- defaultLabel: 'Choose Key From ' + bundle.name, buttonLabel: 'Choose Key',
20446
- name: 'resourceGroups.' + bundleIndex + '.destinationKey',
20447
- selectedValue: resourceGroups[bundleIndex].destinationKey,
20448
- values: destinationSchema && destinationSchema.find(function (defaultRsc) {
20449
- return defaultRsc.name === bundle.name;
20450
- }) && destinationSchema.find(function (defaultRsc) {
20451
- return defaultRsc.name === bundle.name;
20452
- }).properties
20453
- })
20700
+ _react2.default.createElement(
20701
+ 'div',
20702
+ { className: 'external-keys-row' },
20703
+ _react2.default.createElement(
20704
+ 'div',
20705
+ { className: 'external-keys-column' },
20706
+ _react2.default.createElement(
20707
+ 'div',
20708
+ { className: 'labelz' },
20709
+ 'Data Source Unique Key'
20710
+ )
20711
+ ),
20712
+ _react2.default.createElement('div', { style: { width: '6%', height: 1, display: 'inline-block' } }),
20713
+ _react2.default.createElement(
20714
+ 'div',
20715
+ { className: 'external-keys-column' },
20716
+ _react2.default.createElement(
20717
+ 'div',
20718
+ { className: 'labelz' },
20719
+ 'Data Target Unique Key'
20720
+ )
20721
+ )
20722
+ ),
20723
+ _react2.default.createElement(
20724
+ 'div',
20725
+ { className: 'external-keys-row' },
20726
+ _react2.default.createElement(
20727
+ 'div',
20728
+ { className: 'external-keys-column' },
20729
+ _react2.default.createElement(Select, { label: resourceGroups[bundleIndex].sourceKeys && resourceGroups[bundleIndex].sourceKeys[0] || 'Choose Key', menuItemStyle: { height: 20, padding: '1px 8px' },
20730
+ onSelect: function onSelect(v, i, rtid, section) {
20731
+ return selectSourceKeyForLingk(v, section);
20732
+ }, type: 'brand',
20733
+ values: vals, sectionLabels: sectionLabels, sectionLabelSuffix: 'Fields', fieldPropLabel: 'label',
20734
+ selectedValues: resourceGroups[bundleIndex].sourceKeys && resourceGroups[bundleIndex].sourceKeys.map(function (ks) {
20735
+ return { label: ks };
20736
+ })
20737
+ })
20738
+ ),
20739
+ _react2.default.createElement(
20740
+ 'div',
20741
+ { style: { width: '6%', textAlign: 'center', display: 'inline-block' } },
20742
+ '\u2192'
20743
+ ),
20744
+ _react2.default.createElement(
20745
+ 'div',
20746
+ { className: 'external-keys-column' },
20747
+ 'Lingk External ID'
20748
+ )
20749
+ )
20454
20750
  ),
20455
- _react2.default.createElement('br', null),
20456
20751
  _react2.default.createElement('br', null)
20457
20752
  )
20458
20753
  );
@@ -20538,6 +20833,11 @@ module.exports =
20538
20833
  var resourceGroups = [].concat(_toConsumableArray(formValues['resourceGroups']));
20539
20834
  var rscGroup = resourceGroups[resourceGroupIndex];
20540
20835
 
20836
+ //cant overwrite externalKey mapping
20837
+ if (rscGroup.mappings && rscGroup.mappings.find(function (m) {
20838
+ return m.propertyToName === field && m.isExternalKeyMapping;
20839
+ })) return;
20840
+
20541
20841
  //cant map multiple to same destination field
20542
20842
  rscGroup.mappings = rscGroup.mappings && rscGroup.mappings.filter(function (m) {
20543
20843
  return m.propertyToName !== field;
@@ -20657,7 +20957,11 @@ module.exports =
20657
20957
  _react2.default.createElement('div', { style: { height: 9 } }),
20658
20958
  schema && schema.find(function (r) {
20659
20959
  return r.name === rsc.name;
20660
- }).properties.map(function (field, ii) {
20960
+ }).properties.sort(function (a, b) {
20961
+ if (a.label < b.label) return -1;
20962
+ if (a.label > b.label) return 1;
20963
+ return 0;
20964
+ }).map(function (field, ii) {
20661
20965
  var style = {
20662
20966
  paddingLeft: 5,
20663
20967
  background: selectedField && selectedField === field.label ? '#dfe0e0' : 'initial',
@@ -20707,7 +21011,11 @@ module.exports =
20707
21011
  { className: 'scrolly', style: { height: 256, padding: '8px 12px' } },
20708
21012
  destinationSchema && destinationSchema.find(function (r) {
20709
21013
  return r.name === group.name;
20710
- }).properties.map(function (field, i) {
21014
+ }).properties.sort(function (a, b) {
21015
+ if (a.label < b.label) return -1;
21016
+ if (a.label > b.label) return 1;
21017
+ return 0;
21018
+ }).map(function (field, i) {
20711
21019
  return _react2.default.createElement(
20712
21020
  'div',
20713
21021
  { key: i, className: selectedField ? "wizard-map-field" : '', style: {
@@ -20739,7 +21047,7 @@ module.exports =
20739
21047
  /* 192 */
20740
21048
  /***/ function(module, exports, __webpack_require__) {
20741
21049
 
20742
- "use strict";
21050
+ 'use strict';
20743
21051
 
20744
21052
  Object.defineProperty(exports, "__esModule", {
20745
21053
  value: true
@@ -20756,24 +21064,26 @@ module.exports =
20756
21064
  var group = props.group;
20757
21065
 
20758
21066
  return _react2.default.createElement(
20759
- "div",
21067
+ 'div',
20760
21068
  { style: {
20761
21069
  minHeight: group.resources.length * 19
20762
21070
  } },
20763
21071
  group.resources && group.resources.map(function (rsc, ii) {
20764
21072
  var mapz = group.mappings && group.mappings.filter(function (m) {
20765
21073
  return m.resourceFromName === rsc.name;
21074
+ }).sort(function (a) {
21075
+ if (a.isExternalKeyMapping) return -1;else return 1;
20766
21076
  });
20767
21077
  var fieldNum = mapz ? mapz.length : 0;
20768
21078
  return _react2.default.createElement(
20769
- "div",
21079
+ 'div',
20770
21080
  { key: ii, style: {
20771
21081
  marginTop: ii !== 0 ? 10 : 0,
20772
21082
  height: fieldNum * 19,
20773
21083
  minHeight: 18
20774
21084
  } },
20775
21085
  _react2.default.createElement(
20776
- "strong",
21086
+ 'strong',
20777
21087
  null,
20778
21088
  rsc.name
20779
21089
  )
@@ -20788,34 +21098,36 @@ module.exports =
20788
21098
  clearOneMapping = props.clearOneMapping;
20789
21099
 
20790
21100
  return _react2.default.createElement(
20791
- "div",
21101
+ 'div',
20792
21102
  null,
20793
21103
  group.resources && group.resources.map(function (rsc, iii) {
20794
21104
  var mapz = group.mappings && group.mappings.filter(function (m) {
20795
21105
  return m.resourceFromName === rsc.name;
21106
+ }).sort(function (a) {
21107
+ if (a.isExternalKeyMapping) return -1;else return 1;
20796
21108
  });
20797
21109
  return _react2.default.createElement(
20798
- "div",
21110
+ 'div',
20799
21111
  { key: iii, style: {
20800
21112
  marginTop: iii !== 0 ? 10 : 0,
20801
21113
  minHeight: 18
20802
21114
  } },
20803
21115
  mapz && mapz.map(function (m, iv) {
20804
21116
  return _react2.default.createElement(
20805
- "div",
21117
+ 'div',
20806
21118
  { key: iv, style: { height: 19 } },
20807
- _react2.default.createElement(
20808
- "div",
20809
- { className: "x-clear-mapping",
21119
+ !m.isExternalKeyMapping ? _react2.default.createElement(
21120
+ 'div',
21121
+ { className: 'x-clear-mapping',
20810
21122
  onClick: function onClick() {
20811
21123
  clearOneMapping(i, m);
20812
21124
  } },
20813
- "x"
20814
- ),
21125
+ 'x'
21126
+ ) : _react2.default.createElement('div', { style: { width: 30, display: 'inline-block' } }),
20815
21127
  _react2.default.createElement(
20816
- "div",
20817
- { className: "mapping-entry" },
20818
- m.propertyFromName + " \u2192 " + m.propertyToName
21128
+ 'div',
21129
+ { className: 'mapping-entry' },
21130
+ m.propertyFromName + ' \u2192 ' + m.propertyToName
20819
21131
  )
20820
21132
  );
20821
21133
  })
@@ -20831,79 +21143,85 @@ module.exports =
20831
21143
 
20832
21144
  var icons = {
20833
21145
  none: _react2.default.createElement(
20834
- "svg",
20835
- { fill: "#CCCCCC", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20836
- _react2.default.createElement("path", { d: "M12 8V4l8 8-8 8v-4H4V8z" }),
20837
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" })
21146
+ 'svg',
21147
+ { fill: '#CCCCCC', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21148
+ _react2.default.createElement('path', { d: 'M12 8V4l8 8-8 8v-4H4V8z' }),
21149
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' })
20838
21150
  ),
20839
21151
  trim: _react2.default.createElement(
20840
- "svg",
20841
- { fill: "#000000", height: "16", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20842
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20843
- _react2.default.createElement("circle", { cx: "6", cy: "18", fill: "none", r: "2" }),
20844
- _react2.default.createElement("circle", { cx: "12", cy: "12", fill: "none", r: ".5" }),
20845
- _react2.default.createElement("circle", { cx: "6", cy: "6", fill: "none", r: "2" }),
20846
- _react2.default.createElement("path", { d: "M9.64 7.64c.23-.5.36-1.05.36-1.64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3z" })
21152
+ 'svg',
21153
+ { fill: '#000000', height: '16', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21154
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21155
+ _react2.default.createElement('circle', { cx: '6', cy: '18', fill: 'none', r: '2' }),
21156
+ _react2.default.createElement('circle', { cx: '12', cy: '12', fill: 'none', r: '.5' }),
21157
+ _react2.default.createElement('circle', { cx: '6', cy: '6', fill: 'none', r: '2' }),
21158
+ _react2.default.createElement('path', { d: 'M9.64 7.64c.23-.5.36-1.05.36-1.64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3z' })
20847
21159
  ),
20848
21160
  split: _react2.default.createElement(
20849
- "svg",
20850
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20851
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20852
- _react2.default.createElement("path", { d: "M14 4l2.29 2.29-2.88 2.88 1.42 1.42 2.88-2.88L20 10V4zm-4 0H4v6l2.29-2.29 4.71 4.7V20h2v-8.41l-5.29-5.3z" })
21161
+ 'svg',
21162
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21163
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21164
+ _react2.default.createElement('path', { d: 'M14 4l2.29 2.29-2.88 2.88 1.42 1.42 2.88-2.88L20 10V4zm-4 0H4v6l2.29-2.29 4.71 4.7V20h2v-8.41l-5.29-5.3z' })
20853
21165
  ),
20854
21166
  merge: _react2.default.createElement(
20855
- "svg",
20856
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20857
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20858
- _react2.default.createElement("path", { d: "M17 20.41L18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z" })
21167
+ 'svg',
21168
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21169
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21170
+ _react2.default.createElement('path', { d: 'M17 20.41L18.41 19 15 15.59 13.59 17 17 20.41zM7.5 8H11v5.59L5.59 19 7 20.41l6-6V8h3.5L12 3.5 7.5 8z' })
20859
21171
  ),
20860
21172
  date: _react2.default.createElement(
20861
- "svg",
20862
- { fill: "#000000", height: "18", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20863
- _react2.default.createElement("path", { d: "M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z" }),
20864
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" })
21173
+ 'svg',
21174
+ { fill: '#000000', height: '18', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21175
+ _react2.default.createElement('path', { d: 'M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z' }),
21176
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' })
20865
21177
  ),
20866
21178
  sigma: _react2.default.createElement(
20867
- "svg",
20868
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20869
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20870
- _react2.default.createElement("path", { d: "M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7z" })
21179
+ 'svg',
21180
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21181
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21182
+ _react2.default.createElement('path', { d: 'M18 4H6v2l6.5 6L6 18v2h12v-3h-7l5-5-5-5h7z' })
20871
21183
  ),
20872
21184
  link: _react2.default.createElement(
20873
- "svg",
20874
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20875
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" }),
20876
- _react2.default.createElement("path", { d: "M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z" })
21185
+ 'svg',
21186
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21187
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' }),
21188
+ _react2.default.createElement('path', { d: 'M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z' })
20877
21189
  ),
20878
21190
  swap: _react2.default.createElement(
20879
- "svg",
20880
- { fill: "#000000", height: "19", viewBox: "0 0 24 24", width: "24", xmlns: "http://www.w3.org/2000/svg" },
20881
- _react2.default.createElement("path", { d: "M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z" }),
20882
- _react2.default.createElement("path", { d: "M0 0h24v24H0z", fill: "none" })
21191
+ 'svg',
21192
+ { fill: '#000000', height: '19', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
21193
+ _react2.default.createElement('path', { d: 'M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z' }),
21194
+ _react2.default.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' })
20883
21195
  )
20884
21196
  };
20885
21197
 
20886
21198
  return _react2.default.createElement(
20887
- "div",
21199
+ 'div',
20888
21200
  null,
20889
21201
  group.resources && group.resources.map(function (rsc, iii) {
20890
21202
  var mapz = group.mappings && group.mappings.filter(function (m) {
20891
21203
  return m.resourceFromName === rsc.name;
21204
+ }).sort(function (a) {
21205
+ if (a.isExternalKeyMapping) return -1;else return 1;
20892
21206
  });
20893
21207
  return _react2.default.createElement(
20894
- "div",
21208
+ 'div',
20895
21209
  { key: iii, style: {
20896
21210
  marginTop: iii !== 0 ? 10 : 0,
20897
21211
  minHeight: 18
20898
21212
  } },
20899
21213
  mapz && mapz.map(function (m, iv) {
20900
- return _react2.default.createElement(
20901
- "div",
20902
- { key: iv, className: "map-table-transform-icon", onClick: function onClick() {
20903
- return selectMapping(i, m);
20904
- } },
20905
- m.transformations && m.transformations[0] && icons[m.transformations[0].type] || icons['none']
20906
- );
21214
+ if (!m.isExternalKeyMapping) {
21215
+ return _react2.default.createElement(
21216
+ 'div',
21217
+ { key: iv, className: 'map-table-transform-icon', onClick: function onClick() {
21218
+ return selectMapping(i, m);
21219
+ } },
21220
+ m.transformations && m.transformations[0] && icons[m.transformations[0].type] || icons['none']
21221
+ );
21222
+ } else {
21223
+ return _react2.default.createElement('div', { key: iv, style: { height: 19, width: 24 } });
21224
+ }
20907
21225
  })
20908
21226
  );
20909
21227
  })
@@ -20912,7 +21230,7 @@ module.exports =
20912
21230
 
20913
21231
  var MapTableDestinationRow = exports.MapTableDestinationRow = function MapTableDestinationRow(props) {
20914
21232
  return _react2.default.createElement(
20915
- "strong",
21233
+ 'strong',
20916
21234
  { style: { fontSize: 16, whiteSpace: 'wrap' } },
20917
21235
  props.group.name
20918
21236
  );
@@ -20953,7 +21271,7 @@ module.exports =
20953
21271
 
20954
21272
  var _reactDraggable2 = _interopRequireDefault(_reactDraggable);
20955
21273
 
20956
- var _reduxForm = __webpack_require__(3);
21274
+ var _reduxForm = __webpack_require__(4);
20957
21275
 
20958
21276
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20959
21277
 
@@ -21323,8 +21641,10 @@ module.exports =
21323
21641
  onSelect: function onSelect(v, i, rtid, section) {
21324
21642
  return addDefaultEntity(resourceGroupIndex, v, i, section);
21325
21643
  }, type: 'neutral',
21326
- selectedValues: resourceGroups && resourceGroups[resourceGroupIndex] && resourceGroups[resourceGroupIndex].resources, values: [sourceSchema, filteredDestinationSchema],
21327
- sectionLabels: [step.sourceProvider, step.destinationProvider]
21644
+ selectedValues: resourceGroups && resourceGroups[resourceGroupIndex] && resourceGroups[resourceGroupIndex].resources,
21645
+ values: [sourceSchema, filteredDestinationSchema],
21646
+ sectionLabels: [step.sourceProvider, step.destinationProvider],
21647
+ sectionLabelSuffix: 'Objects', fieldPropLabel: 'name'
21328
21648
  })
21329
21649
  ) : null
21330
21650
  ) : null
@@ -21356,7 +21676,7 @@ module.exports =
21356
21676
 
21357
21677
  var _react2 = _interopRequireDefault(_react);
21358
21678
 
21359
- var _reduxForm = __webpack_require__(3);
21679
+ var _reduxForm = __webpack_require__(4);
21360
21680
 
21361
21681
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21362
21682
 
@@ -21445,7 +21765,7 @@ module.exports =
21445
21765
  { opened: opened, hideModal: hideModal, title: 'Transform Data' },
21446
21766
  _react2.default.createElement(
21447
21767
  'div',
21448
- null,
21768
+ { style: { padding: '1em' } },
21449
21769
  _react2.default.createElement(
21450
21770
  'div',
21451
21771
  null,
@@ -21560,7 +21880,7 @@ module.exports =
21560
21880
 
21561
21881
  var _react2 = _interopRequireDefault(_react);
21562
21882
 
21563
- var _reduxForm = __webpack_require__(3);
21883
+ var _reduxForm = __webpack_require__(4);
21564
21884
 
21565
21885
  var _reactRedux = __webpack_require__(141);
21566
21886
 
@@ -21685,23 +22005,37 @@ module.exports =
21685
22005
  var mappings = [];
21686
22006
  bundles.forEach(function (group, index) {
21687
22007
 
21688
- // get resource + name + destinationKey
22008
+ // get resource + name + destinationKeys
21689
22009
  var destinationResource = _this2.props.wizard.destinationMetadata ? _this2.props.wizard.destinationMetadata.find(function (rsc) {
21690
22010
  return rsc.name === group.name;
21691
22011
  }) : group;
21692
22012
  group.name = destinationResource.type;
21693
- group.destinationKey = destinationResource && destinationResource.properties && destinationResource.properties.find(function (prop) {
21694
- return prop.label === group.destinationKey;
21695
- }).name;
21696
-
21697
- // get sourceKey (check both metadatas)
21698
- var dataSourceMetadata = group.resources[0].provider === _this2.props.providers['destination'] ? _this2.props.wizard.destinationMetadata : _this2.props.wizard.sourceMetadata;
21699
- var sourceResource = dataSourceMetadata.find(function (metaRsc) {
21700
- return metaRsc.name === group.resources[0].name;
22013
+ if (group.destinationKeys) {
22014
+ group.destinationKeys = group.destinationKeys.map(function (dk) {
22015
+ return destinationResource && destinationResource.properties && destinationResource.properties.find(function (prop) {
22016
+ return prop.label === dk;
22017
+ }).name || "lingk__externalId__c";
22018
+ });
22019
+ } else {
22020
+ group.destinationKeys = ["lingk__externalId__c"];
22021
+ }
22022
+
22023
+ // get resource + name + sourceKeys
22024
+ var sourceKeysObjects = [];
22025
+ group.sourceKeys = group.sourceKeys.map(function (sk, i) {
22026
+ var sourceKeyResourceProvider = group.resources.find(function (r) {
22027
+ return r.name === group.sourceKeysObjects[i];
22028
+ }).provider;
22029
+ var dataSourceMetadata = sourceKeyResourceProvider === _this2.props.providers['destination'] ? _this2.props.wizard.destinationMetadata : _this2.props.wizard.sourceMetadata;
22030
+ var sourceResource = dataSourceMetadata.find(function (metaRsc) {
22031
+ return metaRsc.name === group.sourceKeysObjects[i];
22032
+ });
22033
+ sourceKeysObjects.push(sourceResource.type);
22034
+ return sourceResource && sourceResource.properties && sourceResource.properties.find(function (prop) {
22035
+ return prop.label === sk;
22036
+ }).name;
21701
22037
  });
21702
- group.sourceKey = sourceResource && sourceResource.properties && sourceResource.properties.find(function (prop) {
21703
- return prop.label === group.sourceKey;
21704
- }).name;
22038
+ group.sourceKeysObjects = sourceKeysObjects;
21705
22039
 
21706
22040
  if (group.mappings) {
21707
22041
  group.mappings.forEach(function (singleMapping) {
@@ -21740,7 +22074,7 @@ module.exports =
21740
22074
  resourceToName: destinationResource.type,
21741
22075
  propertyToName: destinationProperty.name,
21742
22076
  bundleIndex: index
21743
- }, singleMapping.dataSourceIsDestinationEntity && { isDestinationResource: true }, singleMapping.transformations && singleMapping.transformations.length > 0 && !singleMapping.transformations.every(function (t) {
22077
+ }, singleMapping.isExternalKeyMapping && { isExternalKeyMapping: true }, singleMapping.dataSourceIsDestinationEntity && { isDestinationResource: true }, singleMapping.transformations && singleMapping.transformations.length > 0 && !singleMapping.transformations.every(function (t) {
21744
22078
  return t.type === 'none';
21745
22079
  }) && { transformations: singleMapping.transformations }));
21746
22080
  }
@@ -21808,7 +22142,7 @@ module.exports =
21808
22142
  tenantId = _props2.tenantId;
21809
22143
 
21810
22144
  if (true) {
21811
- actions.submitWizardData(tenantId, accountId, bundles, mappings, configuration, formValues.title || 'Banner for Salesforce', formValues.deployment || null, typeGuid, onGenerate, onFinish);
22145
+ actions.submitWizardData(tenantId, accountId, bundles, mappings, configuration, formValues.title || 'Banner for Salesforce', formValues.deployment || null, typeGuid, onGenerate, onFinish, this.props.wizard.destinationMetadata || []);
21812
22146
  onSubmit({ complete: formValues.hasOwnProperty('deployment') });
21813
22147
  }
21814
22148
  actions.setWizardLoaded(false); // so wizard reloads config on 'restart'
@@ -22075,7 +22409,7 @@ module.exports =
22075
22409
  mode: 'destination'
22076
22410
  }, {
22077
22411
  type: 'schema',
22078
- title: 'Build Sync Operations',
22412
+ title: 'Object Mapping',
22079
22413
  mode: 'source'
22080
22414
  }, {
22081
22415
  type: 'filter',