dattatable 2.10.73 → 2.10.75

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.
Files changed (67) hide show
  1. package/build/common/listCfg.d.ts +3 -1
  2. package/build/common/listCfg.js +45 -31
  3. package/dist/dattatable.js +1 -1
  4. package/dist/dattatable.min.js +1 -1
  5. package/docs/classes/Accordion.html +2 -2
  6. package/docs/classes/AuditLog.html +2 -2
  7. package/docs/classes/CanvasForm.html +2 -2
  8. package/docs/classes/Comments.html +2 -2
  9. package/docs/classes/Dashboard.html +4 -4
  10. package/docs/classes/DataTable.html +3 -3
  11. package/docs/classes/Documents.html +6 -6
  12. package/docs/classes/FilterSlideout.html +2 -2
  13. package/docs/classes/Footer.html +2 -2
  14. package/docs/classes/Header.html +2 -2
  15. package/docs/classes/InstallationRequired.html +2 -2
  16. package/docs/classes/ItemForm.html +4 -4
  17. package/docs/classes/List.html +4 -4
  18. package/docs/classes/ListConfig.html +2 -2
  19. package/docs/classes/ListSecurity.html +2 -2
  20. package/docs/classes/LoadingDialog.html +2 -2
  21. package/docs/classes/Modal.html +2 -2
  22. package/docs/classes/Navigation.html +3 -3
  23. package/docs/classes/Tiles.html +2 -2
  24. package/docs/classes/Timeout.html +2 -2
  25. package/docs/enums/ActionButtonTypes.html +2 -2
  26. package/docs/functions/formatBytes.html +1 -1
  27. package/docs/functions/formatDateValue.html +1 -1
  28. package/docs/functions/formatTimeValue.html +1 -1
  29. package/docs/functions/getContextInfo.html +1 -1
  30. package/docs/functions/getFileExt.html +1 -1
  31. package/docs/functions/waitForTheme.html +1 -1
  32. package/docs/interfaces/IAccordion.html +2 -2
  33. package/docs/interfaces/IAccordionProps.html +2 -2
  34. package/docs/interfaces/IAuditLogItem.html +2 -2
  35. package/docs/interfaces/IAuditLogItemCreation.html +2 -2
  36. package/docs/interfaces/IAuditLogProps.html +2 -2
  37. package/docs/interfaces/IAuditLogViewProps.html +2 -2
  38. package/docs/interfaces/ICommentsItem.html +2 -2
  39. package/docs/interfaces/ICreateLookupData.html +2 -2
  40. package/docs/interfaces/IDashboardProps.html +2 -2
  41. package/docs/interfaces/IDataTable.html +2 -2
  42. package/docs/interfaces/IDataTableProps.html +2 -2
  43. package/docs/interfaces/IDocumentsProps.html +2 -2
  44. package/docs/interfaces/IFilterItem.html +2 -2
  45. package/docs/interfaces/IFilterProps.html +2 -2
  46. package/docs/interfaces/IFooterProps.html +2 -2
  47. package/docs/interfaces/IGenerateLookupDataProps.html +2 -2
  48. package/docs/interfaces/IHeaderProps.html +2 -2
  49. package/docs/interfaces/IInstallProps.html +2 -2
  50. package/docs/interfaces/IItemFormCreateProps.html +2 -2
  51. package/docs/interfaces/IItemFormEditProps.html +2 -2
  52. package/docs/interfaces/IItemFormTab.html +2 -2
  53. package/docs/interfaces/IItemFormTabInfo.html +2 -2
  54. package/docs/interfaces/IItemFormViewProps.html +2 -2
  55. package/docs/interfaces/IListConfig.html +2 -2
  56. package/docs/interfaces/IListConfigProps.html +2 -2
  57. package/docs/interfaces/IListProps.html +2 -2
  58. package/docs/interfaces/IListSecurity.html +2 -2
  59. package/docs/interfaces/IListSecurityItem.html +2 -2
  60. package/docs/interfaces/ILookupData.html +2 -2
  61. package/docs/interfaces/IShowDialogProps.html +2 -2
  62. package/docs/interfaces/ITiles.html +2 -2
  63. package/docs/interfaces/ITilesProps.html +2 -2
  64. package/docs/interfaces/IValidateLookupsProps.html +2 -2
  65. package/docs/variables/DattaTable.html +1 -1
  66. package/docs/variables/ListSecurityDefaultGroups.html +1 -1
  67. package/package.json +1 -1
@@ -16,7 +16,9 @@ export interface IListConfigProps {
16
16
  export interface ILookupData {
17
17
  field: string;
18
18
  list: string;
19
- items: string[];
19
+ items: {
20
+ [key: string]: string;
21
+ }[];
20
22
  }
21
23
  export interface IGenerateLookupDataProps {
22
24
  lookupFields: Types.SP.FieldLookup[];
@@ -45,31 +45,14 @@ var ListConfig = /** @class */ (function () {
45
45
  var dstList = (0, gd_sprest_bs_1.Web)(props.webUrl, { requestDigest: contextInfo.GetContextWebInformation.FormDigestValue }).Lists(lookupData.list);
46
46
  // Update the dialog
47
47
  props.showDialog ? loadingDialog_1.LoadingDialog.setBody("Importing the list data: " + lookupData.list) : null;
48
- var _loop_1 = function (i) {
49
- var addItem = true;
50
- var value = lookupData.items[i];
51
- // See if the items exists
52
- currItems.results.find(function (a) {
53
- // See if the item exists
54
- if (a[lookupData.field] == value) {
55
- // Set the flag
56
- addItem = false;
57
- }
58
- });
59
- // See if we are adding the item
60
- if (addItem) {
61
- // Create the item
62
- var dstItem = {};
63
- dstItem[lookupData.field] = value;
64
- dstList.Items().add(dstItem).batch(function (item) {
65
- // Log
66
- console.log("[" + lookupData.list + "] Item added: " + item[lookupData.field]);
67
- });
68
- }
69
- };
70
48
  // Parse the list items
71
49
  for (var i = 0; i < lookupData.items.length; i++) {
72
- _loop_1(i);
50
+ var lookupItem = lookupData.items[i];
51
+ // Create the item
52
+ dstList.Items().add(lookupItem).batch(function (item) {
53
+ // Log
54
+ console.log("[" + lookupData.list + "] Item added: " + item[lookupData.field]);
55
+ });
73
56
  }
74
57
  // Execute the batch job
75
58
  dstList.execute(function () {
@@ -332,7 +315,7 @@ var ListConfig = /** @class */ (function () {
332
315
  // Remove all properties, except for the TextField property
333
316
  var removeProps = [];
334
317
  var props_1 = schemaXml.querySelector("ArrayOfProperty");
335
- var _loop_2 = function (j) {
318
+ var _loop_1 = function (j) {
336
319
  // See if this isn't the text field property
337
320
  var prop = props_1.children[j];
338
321
  if (prop.querySelector("Name").innerHTML == "TextField") {
@@ -368,7 +351,7 @@ var ListConfig = /** @class */ (function () {
368
351
  }
369
352
  };
370
353
  for (var j = props_1.children.length - 1; j >= 0; j--) {
371
- _loop_2(j);
354
+ _loop_1(j);
372
355
  }
373
356
  // Remove the properties
374
357
  for (var i = 0; i < removeProps.length; i++) {
@@ -426,23 +409,54 @@ var ListConfig = /** @class */ (function () {
426
409
  return new Promise(function (resolve) {
427
410
  // Get the source list
428
411
  (0, gd_sprest_bs_1.Web)(props.srcWebUrl).Lists().getById(lookupField.LookupList).execute(function (list) {
412
+ var fields = [];
413
+ // Get the list content type fields
414
+ list.ContentTypes().query({ Expand: ["Fields"] }).execute(function (cts) {
415
+ // Parse the content type fields
416
+ for (var i = 0; i < cts.results[0].FieldLinks.results.length; i++) {
417
+ var field = cts.results[0].Fields.results[i];
418
+ // Add the field link
419
+ fields.push(field);
420
+ }
421
+ });
429
422
  // Get the list items
430
423
  list.Items().query({
431
424
  GetAllItems: true,
432
425
  Top: 5000,
433
426
  OrderBy: ["Id"]
434
427
  }).execute(function (items) {
435
- var values = [];
428
+ var lookupItems = [];
436
429
  // Parse the items
437
430
  for (var i = 0; i < items.results.length; i++) {
438
- // Add the value
439
- var value = items.results[i][lookupField.LookupField];
440
- value ? values.push(value) : null;
431
+ var lookupItem = {};
432
+ // Parse the field links
433
+ for (var j = 0; j < fields.length; j++) {
434
+ var field = fields[j];
435
+ var value = items.results[i][field.InternalName];
436
+ // Ensure a value exists
437
+ if (value == null) {
438
+ continue;
439
+ }
440
+ // Add the value, based on the type
441
+ switch (field.FieldTypeKind) {
442
+ case gd_sprest_bs_1.SPTypes.FieldType.URL:
443
+ lookupItem[field.InternalName] = {
444
+ Description: value.Description,
445
+ Url: value.Url
446
+ };
447
+ break;
448
+ default:
449
+ lookupItem[field.InternalName] = value;
450
+ break;
451
+ }
452
+ }
453
+ // Add the lookup item
454
+ lookupItems.push(lookupItem);
441
455
  }
442
456
  // Save the item data
443
457
  lookupListData.push({
444
458
  field: lookupField.LookupField,
445
- items: values.sort(),
459
+ items: lookupItems,
446
460
  list: list.Title
447
461
  });
448
462
  // Set the flag
@@ -453,7 +467,7 @@ var ListConfig = /** @class */ (function () {
453
467
  }, function () {
454
468
  // Check the next list
455
469
  resolve(null);
456
- });
470
+ }, true); // Set the flag to run this after the previous request completes
457
471
  });
458
472
  }).then(function () {
459
473
  // Resolve the request
@@ -115,7 +115,7 @@ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\n
115
115
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
116
116
 
117
117
  "use strict";
118
- eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ListConfig = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.11.88/node_modules/gd-sprest-bs/build/index.js\");\r\nvar loadingDialog_1 = __webpack_require__(/*! ./loadingDialog */ \"./build/common/loadingDialog.js\");\r\nvar list_1 = __webpack_require__(/*! ./list */ \"./build/common/list.js\");\r\n/**\r\n * List Configuration Generator\r\n */\r\nvar ListConfig = /** @class */ (function () {\r\n function ListConfig() {\r\n }\r\n // Generates the lookup list data\r\n ListConfig.createLookupListData = function (props) {\r\n // See if we are showing a loading dialog\r\n if (props.showDialog) {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Lookup List Data\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Updating the lookup list data...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Ensure data exists\r\n if (props.lookupData == null) {\r\n // Hide the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.hide() : null;\r\n resolve(null);\r\n return;\r\n }\r\n // Update the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the web context information...\") : null;\r\n // Get the web context info\r\n gd_sprest_bs_1.ContextInfo.getWeb(props.webUrl).execute(function (contextInfo) {\r\n // Parse the lookup list data\r\n gd_sprest_bs_1.Helper.Executor(props.lookupData, function (lookupData) {\r\n // Update the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the list: \" + lookupData.list) : null;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Update the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the current list data for: \" + lookupData.list) : null;\r\n // Get the current list items\r\n (0, gd_sprest_bs_1.Web)(props.webUrl).Lists(lookupData.list).Items().query({ Top: 5000, GetAllItems: true }).execute(function (currItems) {\r\n var dstList = (0, gd_sprest_bs_1.Web)(props.webUrl, { requestDigest: contextInfo.GetContextWebInformation.FormDigestValue }).Lists(lookupData.list);\r\n // Update the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Importing the list data: \" + lookupData.list) : null;\r\n var _loop_1 = function (i) {\r\n var addItem = true;\r\n var value = lookupData.items[i];\r\n // See if the items exists\r\n currItems.results.find(function (a) {\r\n // See if the item exists\r\n if (a[lookupData.field] == value) {\r\n // Set the flag\r\n addItem = false;\r\n }\r\n });\r\n // See if we are adding the item\r\n if (addItem) {\r\n // Create the item\r\n var dstItem = {};\r\n dstItem[lookupData.field] = value;\r\n dstList.Items().add(dstItem).batch(function (item) {\r\n // Log\r\n console.log(\"[\" + lookupData.list + \"] Item added: \" + item[lookupData.field]);\r\n });\r\n }\r\n };\r\n // Parse the list items\r\n for (var i = 0; i < lookupData.items.length; i++) {\r\n _loop_1(i);\r\n }\r\n // Execute the batch job\r\n dstList.execute(function () {\r\n // Check the next list\r\n resolve(null);\r\n });\r\n }, function () {\r\n // Error getting the list data\r\n console.error(\"Error getting the destination list: \" + lookupData.list);\r\n // Check the next lookup field\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Hide the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.hide() : null;\r\n // Resolve the request\r\n resolve();\r\n }, reject);\r\n });\r\n });\r\n };\r\n // Generates the list configuration\r\n ListConfig.generate = function (props) {\r\n var _this = this;\r\n // See if we are showing a loading dialog\r\n if (props.showDialog) {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Loading List\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Getting the source list configuration...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Get the list information\r\n var list = new list_1.List({\r\n listName: props.srcList.Title,\r\n webUrl: props.srcWebUrl,\r\n itemQuery: { Filter: \"Id eq 0\" },\r\n onInitError: function () {\r\n // Reject the request\r\n reject(\"Error loading the list information. Please check your permission to the source list.\");\r\n },\r\n onInitialized: function () {\r\n var calcFields = [];\r\n var fields = {};\r\n var lookupFields = [];\r\n var mmsFields = {};\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Analyzing the list information...\");\r\n // Create the configuration\r\n var cfgProps = {\r\n ListCfg: [{\r\n ListInformation: {\r\n AllowContentTypes: list.ListInfo.AllowContentTypes,\r\n BaseTemplate: list.ListInfo.BaseTemplate,\r\n ContentTypesEnabled: list.ListInfo.ContentTypesEnabled,\r\n Title: props.srcList.Title,\r\n Hidden: list.ListInfo.Hidden,\r\n NoCrawl: list.ListInfo.NoCrawl\r\n },\r\n ContentTypes: [],\r\n CustomFields: [],\r\n ViewInformation: []\r\n }]\r\n };\r\n // Parse the content types\r\n for (var i = 0; i < list.ListContentTypes.length; i++) {\r\n var ct = list.ListContentTypes[i];\r\n // Skip sealed content types\r\n if (ct.Sealed) {\r\n continue;\r\n }\r\n // Parse the content type fields\r\n var fieldRefs = [];\r\n for (var j = 0; j < ct.FieldLinks.results.length; j++) {\r\n var fieldLink = ct.FieldLinks.results[j];\r\n // Ignore the Taxonomy fields, they will get added automatically\r\n if (fieldLink.Name == \"TaxCatchAll\" || fieldLink.Name == \"TaxCatchAllLabel\") {\r\n continue;\r\n }\r\n // Get the field\r\n var field = list.getField(fieldLink.Name);\r\n // See if this is a lookup field\r\n if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Lookup) {\r\n // Ensure this isn't an associated lookup field\r\n if (field.IsDependentLookup != true) {\r\n // Append the field ref\r\n fieldRefs.push(field.InternalName);\r\n }\r\n }\r\n else {\r\n // Append the field ref\r\n fieldRefs.push(field.InternalName);\r\n }\r\n // Skip internal fields\r\n if (_this.InternalFields.indexOf(field.InternalName) >= 0) {\r\n continue;\r\n }\r\n // See if this is a calculated field\r\n if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Calculated) {\r\n // Add the field and continue the loop\r\n calcFields.push(field);\r\n }\r\n // Else, see if this is a lookup field\r\n else if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Lookup) {\r\n // Add the field\r\n lookupFields.push(field);\r\n }\r\n // Else, see if this is a MMS field\r\n else if (field.TypeDisplayName == \"Managed Metadata\") {\r\n // Add the field\r\n mmsFields[field.InternalName] = field;\r\n }\r\n // Else, ensure the field hasn't been added\r\n else if (fields[field.InternalName] == null) {\r\n // Add the field information\r\n fields[field.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: field.InternalName,\r\n schemaXml: field.SchemaXml\r\n });\r\n }\r\n }\r\n // Add the list content type\r\n cfgProps.ListCfg[0].ContentTypes.push({\r\n Name: ct.Name,\r\n Description: ct.Description,\r\n ParentName: ct.Parent.Name,\r\n FieldRefs: fieldRefs\r\n });\r\n }\r\n // Parse the views\r\n for (var i = 0; i < list.ListViews.length; i++) {\r\n var viewInfo = list.ListViews[i];\r\n // Skip hidden views\r\n if (viewInfo.Hidden) {\r\n continue;\r\n }\r\n // Parse the fields\r\n for (var j = 0; j < viewInfo.ViewFields.Items.results.length; j++) {\r\n var field = list.getField(viewInfo.ViewFields.Items.results[j]);\r\n // Ensure the field exists\r\n if (fields[field.InternalName] == null) {\r\n // See if this is a calculated field\r\n if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Calculated) {\r\n // Add the field and continue the loop\r\n calcFields.push(field);\r\n }\r\n // Else, see if this is a lookup field\r\n else if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Lookup) {\r\n // Add the field\r\n lookupFields.push(field);\r\n }\r\n // Else, see if this is a MMS field\r\n else if (field.TypeDisplayName == \"Managed Metadata\") {\r\n // Add the field\r\n mmsFields[field.InternalName] = field;\r\n }\r\n else {\r\n // Append the field\r\n fields[field.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: field.InternalName,\r\n schemaXml: field.SchemaXml\r\n });\r\n }\r\n }\r\n }\r\n // Add the view\r\n cfgProps.ListCfg[0].ViewInformation.push({\r\n Default: viewInfo.DefaultView,\r\n Hidden: viewInfo.Hidden,\r\n JSLink: viewInfo.JSLink,\r\n MobileDefaultView: viewInfo.MobileDefaultView,\r\n MobileView: viewInfo.MobileView,\r\n RowLimit: viewInfo.RowLimit,\r\n Tabular: viewInfo.TabularView,\r\n ViewName: viewInfo.Title,\r\n ViewFields: viewInfo.ViewFields.Items.results,\r\n ViewQuery: viewInfo.ViewQuery\r\n });\r\n }\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Analyzing the lookup fields...\");\r\n // Parse the lookup fields\r\n gd_sprest_bs_1.Helper.Executor(lookupFields, function (lookupField) {\r\n // Skip the field, if it was already added\r\n if (fields[lookupField.InternalName]) {\r\n return;\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the lookup list\r\n (0, gd_sprest_bs_1.Web)(props.srcWebUrl).Lists().getById(lookupField.LookupList).execute(function (list) {\r\n // Add the lookup list field\r\n fields[lookupField.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n description: lookupField.Description,\r\n fieldRef: lookupField.PrimaryFieldId,\r\n hidden: lookupField.Hidden,\r\n id: lookupField.Id,\r\n indexed: lookupField.Indexed,\r\n listName: list.Title,\r\n multi: lookupField.AllowMultipleValues,\r\n name: lookupField.InternalName,\r\n readOnly: lookupField.ReadOnlyField,\r\n relationshipBehavior: lookupField.RelationshipDeleteBehavior,\r\n required: lookupField.Required,\r\n showField: lookupField.LookupField,\r\n title: lookupField.Title,\r\n type: gd_sprest_bs_1.Helper.SPCfgFieldType.Lookup\r\n });\r\n // Check the next field\r\n resolve(null);\r\n }, function (err) {\r\n // Broken lookup field, don't add it\r\n console.log(\"Error trying to find lookup list for field '\" + lookupField.InternalName + \"' with id: \" + lookupField.LookupList);\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Analyzing the calculated fields...\");\r\n // Parse the calculated fields\r\n for (var i = 0; i < calcFields.length; i++) {\r\n var calcField = calcFields[i];\r\n if (fields[calcField.InternalName] == null) {\r\n var parser = new DOMParser();\r\n var schemaXml = parser.parseFromString(calcField.SchemaXml, \"application/xml\");\r\n // Get the formula\r\n var formula = schemaXml.querySelector(\"Formula\");\r\n // Parse the field refs\r\n var fieldRefs = schemaXml.querySelectorAll(\"FieldRef\");\r\n for (var j = 0; j < fieldRefs.length; j++) {\r\n var fieldRef = fieldRefs[j].getAttribute(\"Name\");\r\n // Ensure the field exists\r\n var field = list.getField(fieldRef);\r\n if (field) {\r\n // Calculated formulas are supposed to contain the display name\r\n // Replace any instance of the internal field w/ the correct format\r\n var regexp = new RegExp(fieldRef, \"g\");\r\n formula.innerHTML = formula.innerHTML.replace(regexp, \"[\" + field.Title + \"]\");\r\n }\r\n }\r\n // Append the field\r\n fields[calcField.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: calcField.InternalName,\r\n schemaXml: schemaXml.querySelector(\"Field\").outerHTML\r\n });\r\n }\r\n }\r\n // Parse the MMS fields\r\n for (var fieldName in mmsFields) {\r\n var mmsField = mmsFields[fieldName];\r\n // Get the schema xml\r\n var parser = new DOMParser();\r\n var schemaXml = parser.parseFromString(mmsField.SchemaXml, \"application/xml\");\r\n // Remove all properties, except for the TextField property\r\n var removeProps = [];\r\n var props_1 = schemaXml.querySelector(\"ArrayOfProperty\");\r\n var _loop_2 = function (j) {\r\n // See if this isn't the text field property\r\n var prop = props_1.children[j];\r\n if (prop.querySelector(\"Name\").innerHTML == \"TextField\") {\r\n // Find the hidden text field for this MMS field\r\n var field_1 = list.getFieldById(prop.querySelector(\"Value\").innerHTML);\r\n if (field_1) {\r\n // Ensure we haven't already added it\r\n if (fields[field_1.InternalName] != true) {\r\n // Append the field\r\n fields[field_1.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: field_1.InternalName,\r\n schemaXml: field_1.SchemaXml\r\n });\r\n }\r\n // Parse the content types\r\n gd_sprest_bs_1.Helper.Executor(cfgProps.ListCfg[0].ContentTypes, function (ct) {\r\n // Parse the field links\r\n for (var i = 0; i < ct.FieldRefs.length; i++) {\r\n // See if this is the target field\r\n if (ct.FieldRefs[i] == field_1.InternalName) {\r\n // Remove this from the content types\r\n ct.FieldRefs.splice(i, 1);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n // Remove it\r\n removeProps.push(prop);\r\n }\r\n };\r\n for (var j = props_1.children.length - 1; j >= 0; j--) {\r\n _loop_2(j);\r\n }\r\n // Remove the properties\r\n for (var i = 0; i < removeProps.length; i++) {\r\n // Remove the property\r\n props_1.removeChild(removeProps[i]);\r\n }\r\n // Append the field\r\n fields[mmsField.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: mmsField.InternalName,\r\n schemaXml: schemaXml.querySelector(\"Field\").outerHTML\r\n });\r\n }\r\n // Hide the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.hide() : null;\r\n // Resolve the request\r\n resolve({\r\n cfg: cfgProps,\r\n lookupFields: lookupFields\r\n });\r\n });\r\n }\r\n });\r\n });\r\n };\r\n // Generates the lookup list data\r\n ListConfig.generateLookupListData = function (props) {\r\n var lookupListData = [];\r\n // See if we are showing a loading dialog\r\n if (props.showDialog) {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Analyzing Lookup Lists\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Getting the lookup lists data...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n }\r\n // Keep track of the lookup lists we are searching for\r\n var lookupLists = {};\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Parse the lookup fields\r\n gd_sprest_bs_1.Helper.Executor(props.lookupFields, function (lookupField) {\r\n var _a;\r\n // Ensure this lookup isn't to the source list\r\n if (((_a = lookupField.LookupList) === null || _a === void 0 ? void 0 : _a.indexOf(props.srcList.Id)) >= 0) {\r\n return;\r\n }\r\n // See if we have already checked this list\r\n var listId = (lookupField.LookupList || \"\").replace(/{|}/g, '');\r\n if (lookupLists[listId]) {\r\n return;\r\n }\r\n // Updated the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the lookup list for: \" + lookupField.InternalName) : null;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the source list\r\n (0, gd_sprest_bs_1.Web)(props.srcWebUrl).Lists().getById(lookupField.LookupList).execute(function (list) {\r\n // Get the list items\r\n list.Items().query({\r\n GetAllItems: true,\r\n Top: 5000,\r\n OrderBy: [\"Id\"]\r\n }).execute(function (items) {\r\n var values = [];\r\n // Parse the items\r\n for (var i = 0; i < items.results.length; i++) {\r\n // Add the value\r\n var value = items.results[i][lookupField.LookupField];\r\n value ? values.push(value) : null;\r\n }\r\n // Save the item data\r\n lookupListData.push({\r\n field: lookupField.LookupField,\r\n items: values.sort(),\r\n list: list.Title\r\n });\r\n // Set the flag\r\n lookupLists[listId] = true;\r\n // Check the next list\r\n resolve(null);\r\n });\r\n }, function () {\r\n // Check the next list\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Resolve the request\r\n resolve(lookupListData);\r\n }, reject);\r\n });\r\n };\r\n // Validates the lookup fields\r\n ListConfig.validateLookups = function (props) {\r\n var _this = this;\r\n // See if we are showing a loading dialog\r\n if (props.showDialog) {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Validating Lookup Lists\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Validating the required lookup lists have been added...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n }\r\n // Keep track of the lookup lists we are searching for\r\n var lookupLists = {};\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Parse the lookup fields\r\n gd_sprest_bs_1.Helper.Executor(props.lookupFields, function (lookupField) {\r\n var _a;\r\n // Ensure this lookup isn't to the source list\r\n if (((_a = lookupField.LookupList) === null || _a === void 0 ? void 0 : _a.indexOf(props.srcList.Id)) >= 0) {\r\n return;\r\n }\r\n // See if we have already checked this list\r\n var listId = (lookupField.LookupList || \"\").replace(/{|}/g, '');\r\n if (lookupLists[listId]) {\r\n return;\r\n }\r\n // Updated the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the lookup list for: \" + lookupField.InternalName) : null;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Get the source list\r\n (0, gd_sprest_bs_1.Web)(props.srcWebUrl).Lists().getById(lookupField.LookupList).execute(function (list) {\r\n // Updated the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Checking the destination web for: \" + list.Title) : null;\r\n // Ensure the list exists in the destination\r\n (0, gd_sprest_bs_1.Web)(props.dstUrl).Lists(list.Title).execute(function () {\r\n // Set the flag\r\n lookupLists[list.Id] = true;\r\n // Check the next list\r\n resolve(null);\r\n }, function () {\r\n // Updated the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Generating the configuration for: \" + list.Title) : null;\r\n // Generate the lookup list configuration\r\n _this.generate({\r\n srcList: list,\r\n srcWebUrl: props.srcWebUrl,\r\n showDialog: false\r\n }).then(\r\n // Success\r\n function (cfg) {\r\n // Set the flag\r\n lookupLists[list.Id] = true;\r\n // Prepend the list configuration\r\n props.cfg.ListCfg.splice(props.cfg.ListCfg.length - 1, 0, cfg.cfg.ListCfg[0]);\r\n // Check the next list\r\n resolve(null);\r\n }, \r\n // Error\r\n function () {\r\n // Reject the reqeust\r\n reject(\"Lookup list '\" + list.Title + \"' for field '\" + lookupField.InternalName + \"' does not exist in the configuration. Please add the lists in the appropriate order.\");\r\n });\r\n });\r\n }, function () {\r\n // Reject the reqeust\r\n reject(\"Lookup list for field '\" + lookupField.InternalName + \"' does not exist in the source web. Please review the source list for any issues.\");\r\n });\r\n });\r\n }).then(function () {\r\n // Resolve the request\r\n resolve(props.cfg);\r\n }, reject);\r\n });\r\n };\r\n // Internal Fields\r\n ListConfig.InternalFields = [\r\n \"ContentType\", \"TaxCatchAll\", \"TaxCatchAllLabel\", \"Title\"\r\n ];\r\n return ListConfig;\r\n}());\r\nexports.ListConfig = ListConfig;\r\n\n\n//# sourceURL=webpack://dattatable/./build/common/listCfg.js?");
118
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ListConfig = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.11.88/node_modules/gd-sprest-bs/build/index.js\");\r\nvar loadingDialog_1 = __webpack_require__(/*! ./loadingDialog */ \"./build/common/loadingDialog.js\");\r\nvar list_1 = __webpack_require__(/*! ./list */ \"./build/common/list.js\");\r\n/**\r\n * List Configuration Generator\r\n */\r\nvar ListConfig = /** @class */ (function () {\r\n function ListConfig() {\r\n }\r\n // Generates the lookup list data\r\n ListConfig.createLookupListData = function (props) {\r\n // See if we are showing a loading dialog\r\n if (props.showDialog) {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Lookup List Data\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Updating the lookup list data...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Ensure data exists\r\n if (props.lookupData == null) {\r\n // Hide the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.hide() : null;\r\n resolve(null);\r\n return;\r\n }\r\n // Update the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the web context information...\") : null;\r\n // Get the web context info\r\n gd_sprest_bs_1.ContextInfo.getWeb(props.webUrl).execute(function (contextInfo) {\r\n // Parse the lookup list data\r\n gd_sprest_bs_1.Helper.Executor(props.lookupData, function (lookupData) {\r\n // Update the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the list: \" + lookupData.list) : null;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Update the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the current list data for: \" + lookupData.list) : null;\r\n // Get the current list items\r\n (0, gd_sprest_bs_1.Web)(props.webUrl).Lists(lookupData.list).Items().query({ Top: 5000, GetAllItems: true }).execute(function (currItems) {\r\n var dstList = (0, gd_sprest_bs_1.Web)(props.webUrl, { requestDigest: contextInfo.GetContextWebInformation.FormDigestValue }).Lists(lookupData.list);\r\n // Update the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Importing the list data: \" + lookupData.list) : null;\r\n // Parse the list items\r\n for (var i = 0; i < lookupData.items.length; i++) {\r\n var lookupItem = lookupData.items[i];\r\n // Create the item\r\n dstList.Items().add(lookupItem).batch(function (item) {\r\n // Log\r\n console.log(\"[\" + lookupData.list + \"] Item added: \" + item[lookupData.field]);\r\n });\r\n }\r\n // Execute the batch job\r\n dstList.execute(function () {\r\n // Check the next list\r\n resolve(null);\r\n });\r\n }, function () {\r\n // Error getting the list data\r\n console.error(\"Error getting the destination list: \" + lookupData.list);\r\n // Check the next lookup field\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Hide the dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.hide() : null;\r\n // Resolve the request\r\n resolve();\r\n }, reject);\r\n });\r\n });\r\n };\r\n // Generates the list configuration\r\n ListConfig.generate = function (props) {\r\n var _this = this;\r\n // See if we are showing a loading dialog\r\n if (props.showDialog) {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Loading List\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Getting the source list configuration...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Get the list information\r\n var list = new list_1.List({\r\n listName: props.srcList.Title,\r\n webUrl: props.srcWebUrl,\r\n itemQuery: { Filter: \"Id eq 0\" },\r\n onInitError: function () {\r\n // Reject the request\r\n reject(\"Error loading the list information. Please check your permission to the source list.\");\r\n },\r\n onInitialized: function () {\r\n var calcFields = [];\r\n var fields = {};\r\n var lookupFields = [];\r\n var mmsFields = {};\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Analyzing the list information...\");\r\n // Create the configuration\r\n var cfgProps = {\r\n ListCfg: [{\r\n ListInformation: {\r\n AllowContentTypes: list.ListInfo.AllowContentTypes,\r\n BaseTemplate: list.ListInfo.BaseTemplate,\r\n ContentTypesEnabled: list.ListInfo.ContentTypesEnabled,\r\n Title: props.srcList.Title,\r\n Hidden: list.ListInfo.Hidden,\r\n NoCrawl: list.ListInfo.NoCrawl\r\n },\r\n ContentTypes: [],\r\n CustomFields: [],\r\n ViewInformation: []\r\n }]\r\n };\r\n // Parse the content types\r\n for (var i = 0; i < list.ListContentTypes.length; i++) {\r\n var ct = list.ListContentTypes[i];\r\n // Skip sealed content types\r\n if (ct.Sealed) {\r\n continue;\r\n }\r\n // Parse the content type fields\r\n var fieldRefs = [];\r\n for (var j = 0; j < ct.FieldLinks.results.length; j++) {\r\n var fieldLink = ct.FieldLinks.results[j];\r\n // Ignore the Taxonomy fields, they will get added automatically\r\n if (fieldLink.Name == \"TaxCatchAll\" || fieldLink.Name == \"TaxCatchAllLabel\") {\r\n continue;\r\n }\r\n // Get the field\r\n var field = list.getField(fieldLink.Name);\r\n // See if this is a lookup field\r\n if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Lookup) {\r\n // Ensure this isn't an associated lookup field\r\n if (field.IsDependentLookup != true) {\r\n // Append the field ref\r\n fieldRefs.push(field.InternalName);\r\n }\r\n }\r\n else {\r\n // Append the field ref\r\n fieldRefs.push(field.InternalName);\r\n }\r\n // Skip internal fields\r\n if (_this.InternalFields.indexOf(field.InternalName) >= 0) {\r\n continue;\r\n }\r\n // See if this is a calculated field\r\n if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Calculated) {\r\n // Add the field and continue the loop\r\n calcFields.push(field);\r\n }\r\n // Else, see if this is a lookup field\r\n else if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Lookup) {\r\n // Add the field\r\n lookupFields.push(field);\r\n }\r\n // Else, see if this is a MMS field\r\n else if (field.TypeDisplayName == \"Managed Metadata\") {\r\n // Add the field\r\n mmsFields[field.InternalName] = field;\r\n }\r\n // Else, ensure the field hasn't been added\r\n else if (fields[field.InternalName] == null) {\r\n // Add the field information\r\n fields[field.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: field.InternalName,\r\n schemaXml: field.SchemaXml\r\n });\r\n }\r\n }\r\n // Add the list content type\r\n cfgProps.ListCfg[0].ContentTypes.push({\r\n Name: ct.Name,\r\n Description: ct.Description,\r\n ParentName: ct.Parent.Name,\r\n FieldRefs: fieldRefs\r\n });\r\n }\r\n // Parse the views\r\n for (var i = 0; i < list.ListViews.length; i++) {\r\n var viewInfo = list.ListViews[i];\r\n // Skip hidden views\r\n if (viewInfo.Hidden) {\r\n continue;\r\n }\r\n // Parse the fields\r\n for (var j = 0; j < viewInfo.ViewFields.Items.results.length; j++) {\r\n var field = list.getField(viewInfo.ViewFields.Items.results[j]);\r\n // Ensure the field exists\r\n if (fields[field.InternalName] == null) {\r\n // See if this is a calculated field\r\n if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Calculated) {\r\n // Add the field and continue the loop\r\n calcFields.push(field);\r\n }\r\n // Else, see if this is a lookup field\r\n else if (field.FieldTypeKind == gd_sprest_bs_1.SPTypes.FieldType.Lookup) {\r\n // Add the field\r\n lookupFields.push(field);\r\n }\r\n // Else, see if this is a MMS field\r\n else if (field.TypeDisplayName == \"Managed Metadata\") {\r\n // Add the field\r\n mmsFields[field.InternalName] = field;\r\n }\r\n else {\r\n // Append the field\r\n fields[field.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: field.InternalName,\r\n schemaXml: field.SchemaXml\r\n });\r\n }\r\n }\r\n }\r\n // Add the view\r\n cfgProps.ListCfg[0].ViewInformation.push({\r\n Default: viewInfo.DefaultView,\r\n Hidden: viewInfo.Hidden,\r\n JSLink: viewInfo.JSLink,\r\n MobileDefaultView: viewInfo.MobileDefaultView,\r\n MobileView: viewInfo.MobileView,\r\n RowLimit: viewInfo.RowLimit,\r\n Tabular: viewInfo.TabularView,\r\n ViewName: viewInfo.Title,\r\n ViewFields: viewInfo.ViewFields.Items.results,\r\n ViewQuery: viewInfo.ViewQuery\r\n });\r\n }\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Analyzing the lookup fields...\");\r\n // Parse the lookup fields\r\n gd_sprest_bs_1.Helper.Executor(lookupFields, function (lookupField) {\r\n // Skip the field, if it was already added\r\n if (fields[lookupField.InternalName]) {\r\n return;\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the lookup list\r\n (0, gd_sprest_bs_1.Web)(props.srcWebUrl).Lists().getById(lookupField.LookupList).execute(function (list) {\r\n // Add the lookup list field\r\n fields[lookupField.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n description: lookupField.Description,\r\n fieldRef: lookupField.PrimaryFieldId,\r\n hidden: lookupField.Hidden,\r\n id: lookupField.Id,\r\n indexed: lookupField.Indexed,\r\n listName: list.Title,\r\n multi: lookupField.AllowMultipleValues,\r\n name: lookupField.InternalName,\r\n readOnly: lookupField.ReadOnlyField,\r\n relationshipBehavior: lookupField.RelationshipDeleteBehavior,\r\n required: lookupField.Required,\r\n showField: lookupField.LookupField,\r\n title: lookupField.Title,\r\n type: gd_sprest_bs_1.Helper.SPCfgFieldType.Lookup\r\n });\r\n // Check the next field\r\n resolve(null);\r\n }, function (err) {\r\n // Broken lookup field, don't add it\r\n console.log(\"Error trying to find lookup list for field '\" + lookupField.InternalName + \"' with id: \" + lookupField.LookupList);\r\n resolve(null);\r\n });\r\n });\r\n }).then(function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Analyzing the calculated fields...\");\r\n // Parse the calculated fields\r\n for (var i = 0; i < calcFields.length; i++) {\r\n var calcField = calcFields[i];\r\n if (fields[calcField.InternalName] == null) {\r\n var parser = new DOMParser();\r\n var schemaXml = parser.parseFromString(calcField.SchemaXml, \"application/xml\");\r\n // Get the formula\r\n var formula = schemaXml.querySelector(\"Formula\");\r\n // Parse the field refs\r\n var fieldRefs = schemaXml.querySelectorAll(\"FieldRef\");\r\n for (var j = 0; j < fieldRefs.length; j++) {\r\n var fieldRef = fieldRefs[j].getAttribute(\"Name\");\r\n // Ensure the field exists\r\n var field = list.getField(fieldRef);\r\n if (field) {\r\n // Calculated formulas are supposed to contain the display name\r\n // Replace any instance of the internal field w/ the correct format\r\n var regexp = new RegExp(fieldRef, \"g\");\r\n formula.innerHTML = formula.innerHTML.replace(regexp, \"[\" + field.Title + \"]\");\r\n }\r\n }\r\n // Append the field\r\n fields[calcField.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: calcField.InternalName,\r\n schemaXml: schemaXml.querySelector(\"Field\").outerHTML\r\n });\r\n }\r\n }\r\n // Parse the MMS fields\r\n for (var fieldName in mmsFields) {\r\n var mmsField = mmsFields[fieldName];\r\n // Get the schema xml\r\n var parser = new DOMParser();\r\n var schemaXml = parser.parseFromString(mmsField.SchemaXml, \"application/xml\");\r\n // Remove all properties, except for the TextField property\r\n var removeProps = [];\r\n var props_1 = schemaXml.querySelector(\"ArrayOfProperty\");\r\n var _loop_1 = function (j) {\r\n // See if this isn't the text field property\r\n var prop = props_1.children[j];\r\n if (prop.querySelector(\"Name\").innerHTML == \"TextField\") {\r\n // Find the hidden text field for this MMS field\r\n var field_1 = list.getFieldById(prop.querySelector(\"Value\").innerHTML);\r\n if (field_1) {\r\n // Ensure we haven't already added it\r\n if (fields[field_1.InternalName] != true) {\r\n // Append the field\r\n fields[field_1.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: field_1.InternalName,\r\n schemaXml: field_1.SchemaXml\r\n });\r\n }\r\n // Parse the content types\r\n gd_sprest_bs_1.Helper.Executor(cfgProps.ListCfg[0].ContentTypes, function (ct) {\r\n // Parse the field links\r\n for (var i = 0; i < ct.FieldRefs.length; i++) {\r\n // See if this is the target field\r\n if (ct.FieldRefs[i] == field_1.InternalName) {\r\n // Remove this from the content types\r\n ct.FieldRefs.splice(i, 1);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n // Remove it\r\n removeProps.push(prop);\r\n }\r\n };\r\n for (var j = props_1.children.length - 1; j >= 0; j--) {\r\n _loop_1(j);\r\n }\r\n // Remove the properties\r\n for (var i = 0; i < removeProps.length; i++) {\r\n // Remove the property\r\n props_1.removeChild(removeProps[i]);\r\n }\r\n // Append the field\r\n fields[mmsField.InternalName] = true;\r\n cfgProps.ListCfg[0].CustomFields.push({\r\n name: mmsField.InternalName,\r\n schemaXml: schemaXml.querySelector(\"Field\").outerHTML\r\n });\r\n }\r\n // Hide the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.hide() : null;\r\n // Resolve the request\r\n resolve({\r\n cfg: cfgProps,\r\n lookupFields: lookupFields\r\n });\r\n });\r\n }\r\n });\r\n });\r\n };\r\n // Generates the lookup list data\r\n ListConfig.generateLookupListData = function (props) {\r\n var lookupListData = [];\r\n // See if we are showing a loading dialog\r\n if (props.showDialog) {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Analyzing Lookup Lists\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Getting the lookup lists data...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n }\r\n // Keep track of the lookup lists we are searching for\r\n var lookupLists = {};\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Parse the lookup fields\r\n gd_sprest_bs_1.Helper.Executor(props.lookupFields, function (lookupField) {\r\n var _a;\r\n // Ensure this lookup isn't to the source list\r\n if (((_a = lookupField.LookupList) === null || _a === void 0 ? void 0 : _a.indexOf(props.srcList.Id)) >= 0) {\r\n return;\r\n }\r\n // See if we have already checked this list\r\n var listId = (lookupField.LookupList || \"\").replace(/{|}/g, '');\r\n if (lookupLists[listId]) {\r\n return;\r\n }\r\n // Updated the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the lookup list for: \" + lookupField.InternalName) : null;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the source list\r\n (0, gd_sprest_bs_1.Web)(props.srcWebUrl).Lists().getById(lookupField.LookupList).execute(function (list) {\r\n var fields = [];\r\n // Get the list content type fields\r\n list.ContentTypes().query({ Expand: [\"Fields\"] }).execute(function (cts) {\r\n // Parse the content type fields\r\n for (var i = 0; i < cts.results[0].FieldLinks.results.length; i++) {\r\n var field = cts.results[0].Fields.results[i];\r\n // Add the field link\r\n fields.push(field);\r\n }\r\n });\r\n // Get the list items\r\n list.Items().query({\r\n GetAllItems: true,\r\n Top: 5000,\r\n OrderBy: [\"Id\"]\r\n }).execute(function (items) {\r\n var lookupItems = [];\r\n // Parse the items\r\n for (var i = 0; i < items.results.length; i++) {\r\n var lookupItem = {};\r\n // Parse the field links\r\n for (var j = 0; j < fields.length; j++) {\r\n var field = fields[j];\r\n var value = items.results[i][field.InternalName];\r\n // Ensure a value exists\r\n if (value == null) {\r\n continue;\r\n }\r\n // Add the value, based on the type\r\n switch (field.FieldTypeKind) {\r\n case gd_sprest_bs_1.SPTypes.FieldType.URL:\r\n lookupItem[field.InternalName] = {\r\n Description: value.Description,\r\n Url: value.Url\r\n };\r\n break;\r\n default:\r\n lookupItem[field.InternalName] = value;\r\n break;\r\n }\r\n }\r\n // Add the lookup item\r\n lookupItems.push(lookupItem);\r\n }\r\n // Save the item data\r\n lookupListData.push({\r\n field: lookupField.LookupField,\r\n items: lookupItems,\r\n list: list.Title\r\n });\r\n // Set the flag\r\n lookupLists[listId] = true;\r\n // Check the next list\r\n resolve(null);\r\n });\r\n }, function () {\r\n // Check the next list\r\n resolve(null);\r\n }, true); // Set the flag to run this after the previous request completes\r\n });\r\n }).then(function () {\r\n // Resolve the request\r\n resolve(lookupListData);\r\n }, reject);\r\n });\r\n };\r\n // Validates the lookup fields\r\n ListConfig.validateLookups = function (props) {\r\n var _this = this;\r\n // See if we are showing a loading dialog\r\n if (props.showDialog) {\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Validating Lookup Lists\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Validating the required lookup lists have been added...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n }\r\n // Keep track of the lookup lists we are searching for\r\n var lookupLists = {};\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Parse the lookup fields\r\n gd_sprest_bs_1.Helper.Executor(props.lookupFields, function (lookupField) {\r\n var _a;\r\n // Ensure this lookup isn't to the source list\r\n if (((_a = lookupField.LookupList) === null || _a === void 0 ? void 0 : _a.indexOf(props.srcList.Id)) >= 0) {\r\n return;\r\n }\r\n // See if we have already checked this list\r\n var listId = (lookupField.LookupList || \"\").replace(/{|}/g, '');\r\n if (lookupLists[listId]) {\r\n return;\r\n }\r\n // Updated the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Getting the lookup list for: \" + lookupField.InternalName) : null;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // Get the source list\r\n (0, gd_sprest_bs_1.Web)(props.srcWebUrl).Lists().getById(lookupField.LookupList).execute(function (list) {\r\n // Updated the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Checking the destination web for: \" + list.Title) : null;\r\n // Ensure the list exists in the destination\r\n (0, gd_sprest_bs_1.Web)(props.dstUrl).Lists(list.Title).execute(function () {\r\n // Set the flag\r\n lookupLists[list.Id] = true;\r\n // Check the next list\r\n resolve(null);\r\n }, function () {\r\n // Updated the loading dialog\r\n props.showDialog ? loadingDialog_1.LoadingDialog.setBody(\"Generating the configuration for: \" + list.Title) : null;\r\n // Generate the lookup list configuration\r\n _this.generate({\r\n srcList: list,\r\n srcWebUrl: props.srcWebUrl,\r\n showDialog: false\r\n }).then(\r\n // Success\r\n function (cfg) {\r\n // Set the flag\r\n lookupLists[list.Id] = true;\r\n // Prepend the list configuration\r\n props.cfg.ListCfg.splice(props.cfg.ListCfg.length - 1, 0, cfg.cfg.ListCfg[0]);\r\n // Check the next list\r\n resolve(null);\r\n }, \r\n // Error\r\n function () {\r\n // Reject the reqeust\r\n reject(\"Lookup list '\" + list.Title + \"' for field '\" + lookupField.InternalName + \"' does not exist in the configuration. Please add the lists in the appropriate order.\");\r\n });\r\n });\r\n }, function () {\r\n // Reject the reqeust\r\n reject(\"Lookup list for field '\" + lookupField.InternalName + \"' does not exist in the source web. Please review the source list for any issues.\");\r\n });\r\n });\r\n }).then(function () {\r\n // Resolve the request\r\n resolve(props.cfg);\r\n }, reject);\r\n });\r\n };\r\n // Internal Fields\r\n ListConfig.InternalFields = [\r\n \"ContentType\", \"TaxCatchAll\", \"TaxCatchAllLabel\", \"Title\"\r\n ];\r\n return ListConfig;\r\n}());\r\nexports.ListConfig = ListConfig;\r\n\n\n//# sourceURL=webpack://dattatable/./build/common/listCfg.js?");
119
119
 
120
120
  /***/ }),
121
121