dattatable 2.9.0 → 2.9.2

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 (52) hide show
  1. package/build/common/listSecurity.d.ts +10 -3
  2. package/build/common/listSecurity.js +91 -34
  3. package/dist/dattatable.js +1 -1
  4. package/dist/dattatable.min.js +1 -1
  5. package/docs/assets/search.js +1 -1
  6. package/docs/classes/AuditLog.html +13 -13
  7. package/docs/classes/CanvasForm.html +17 -17
  8. package/docs/classes/Comments.html +12 -12
  9. package/docs/classes/Dashboard.html +20 -20
  10. package/docs/classes/DataTable.html +12 -12
  11. package/docs/classes/Documents.html +45 -45
  12. package/docs/classes/FilterSlideout.html +14 -14
  13. package/docs/classes/Footer.html +4 -4
  14. package/docs/classes/Header.html +4 -4
  15. package/docs/classes/InstallationRequired.html +12 -12
  16. package/docs/classes/ItemForm.html +47 -47
  17. package/docs/classes/List.html +47 -47
  18. package/docs/classes/ListSecurity.html +69 -15
  19. package/docs/classes/LoadingDialog.html +12 -12
  20. package/docs/classes/Modal.html +26 -26
  21. package/docs/classes/Navigation.html +6 -6
  22. package/docs/classes/Timeout.html +7 -7
  23. package/docs/enums/ActionButtonTypes.html +6 -6
  24. package/docs/functions/formatBytes.html +1 -1
  25. package/docs/functions/formatDateValue.html +1 -1
  26. package/docs/functions/formatTimeValue.html +1 -1
  27. package/docs/functions/getFileExt.html +1 -1
  28. package/docs/interfaces/IAuditLogItem.html +9 -9
  29. package/docs/interfaces/IAuditLogItemCreation.html +7 -7
  30. package/docs/interfaces/IAuditLogProps.html +5 -5
  31. package/docs/interfaces/IAuditLogViewProps.html +6 -6
  32. package/docs/interfaces/ICommentsItem.html +6 -6
  33. package/docs/interfaces/IDashboardProps.html +14 -14
  34. package/docs/interfaces/IDataTable.html +8 -8
  35. package/docs/interfaces/IDataTableProps.html +6 -6
  36. package/docs/interfaces/IDocumentsProps.html +25 -25
  37. package/docs/interfaces/IFilterItem.html +5 -5
  38. package/docs/interfaces/IFilterProps.html +4 -4
  39. package/docs/interfaces/IFooterProps.html +6 -6
  40. package/docs/interfaces/IHeaderProps.html +5 -5
  41. package/docs/interfaces/IInstallProps.html +4 -4
  42. package/docs/interfaces/IItemFormCreateProps.html +14 -14
  43. package/docs/interfaces/IItemFormEditProps.html +15 -15
  44. package/docs/interfaces/IItemFormTab.html +8 -8
  45. package/docs/interfaces/IItemFormTabInfo.html +3 -3
  46. package/docs/interfaces/IItemFormViewProps.html +12 -12
  47. package/docs/interfaces/IListProps.html +11 -11
  48. package/docs/interfaces/IListSecurity.html +29 -6
  49. package/docs/interfaces/IListSecurityItem.html +4 -4
  50. package/docs/interfaces/IShowDialogProps.html +7 -7
  51. package/docs/variables/DattaTable.html +5 -5
  52. package/package.json +1 -1
@@ -4,6 +4,9 @@ export interface IListSecurity {
4
4
  listItems: IListSecurityItem[];
5
5
  onGroupCreating?: (props: Types.SP.GroupCreationInformation) => Types.SP.GroupCreationInformation;
6
6
  onGroupCreated?: (group: Types.SP.Group) => void;
7
+ onGroupsLoaded?: (groups?: {
8
+ [key: string]: Types.SP.Group;
9
+ }) => void;
7
10
  webUrl?: string;
8
11
  }
9
12
  export interface IListSecurityItem {
@@ -19,15 +22,19 @@ export declare class ListSecurity {
19
22
  private _ddlItems;
20
23
  private _permissionTypes;
21
24
  private _props;
25
+ private _groups;
26
+ getGroup(groupName: string): Types.SP.Group;
27
+ private setGroupId;
28
+ private _users;
22
29
  constructor(props: IListSecurity);
23
30
  private configureList;
24
31
  private configureLists;
25
32
  private createGroups;
26
- private _groups;
27
33
  private getGroupId;
28
- private setGroupId;
29
- private renderModal;
30
34
  private getPermissionTypes;
35
+ private isInGroup;
36
+ private loadGroups;
37
+ private renderModal;
31
38
  private resetPermissions;
32
39
  show(createFl?: boolean): void;
33
40
  }
@@ -14,13 +14,22 @@ var ListSecurity = /** @class */ (function () {
14
14
  this._ddlItems = null;
15
15
  this._permissionTypes = null;
16
16
  this._props = null;
17
- // Gets the group id
17
+ // Security group information
18
18
  this._groups = {};
19
19
  // Save the properties
20
20
  this._props = props;
21
21
  // Get the permission types
22
22
  this.getPermissionTypes();
23
+ // Load the groups
24
+ this.loadGroups();
23
25
  }
26
+ ListSecurity.prototype.getGroup = function (groupName) { return this._groups[groupName.toLowerCase()]; };
27
+ ListSecurity.prototype.setGroupId = function (key, group) {
28
+ // Save the info
29
+ this._groups[key] = group;
30
+ // Return the group id
31
+ return group.Id;
32
+ };
24
33
  // Configures a list
25
34
  ListSecurity.prototype.configureList = function (listInfo) {
26
35
  var _this = this;
@@ -135,6 +144,7 @@ var ListSecurity = /** @class */ (function () {
135
144
  });
136
145
  });
137
146
  };
147
+ // Gets the group id
138
148
  ListSecurity.prototype.getGroupId = function (groupName) {
139
149
  var _this = this;
140
150
  // Return a promise
@@ -168,12 +178,86 @@ var ListSecurity = /** @class */ (function () {
168
178
  }
169
179
  });
170
180
  };
171
- // Saves the group information
172
- ListSecurity.prototype.setGroupId = function (key, group) {
173
- // Save the info
174
- this._groups[key] = group;
175
- // Return the group id
176
- return group.Id;
181
+ // Get the permission types
182
+ ListSecurity.prototype.getPermissionTypes = function () {
183
+ var _this = this;
184
+ // Return a promise
185
+ return new Promise(function (resolve) {
186
+ // Get the definitions
187
+ (0, gd_sprest_bs_1.Web)(_this._props.webUrl).RoleDefinitions().query({
188
+ OrderBy: ["Name"]
189
+ }).execute(function (roleDefs) {
190
+ // Clear the permissions and items
191
+ _this._ddlItems = [{ text: "No Permission" }];
192
+ _this._permissionTypes = {};
193
+ // Parse the role definitions
194
+ for (var i = 0; i < roleDefs.results.length; i++) {
195
+ var roleDef = roleDefs.results[i];
196
+ // Add the role and item
197
+ var value = roleDef.RoleTypeKind > 0 ? roleDef.RoleTypeKind : roleDef.Name;
198
+ _this._permissionTypes[value] = roleDef.Id;
199
+ _this._ddlItems.push({
200
+ data: roleDef,
201
+ text: roleDef.Name,
202
+ value: value.toString()
203
+ });
204
+ }
205
+ // Resolve the request
206
+ resolve();
207
+ });
208
+ });
209
+ };
210
+ // Method to see if a user is w/in a group
211
+ ListSecurity.prototype.isInGroup = function (userId, groupName) {
212
+ var _this = this;
213
+ // Return a promise
214
+ return new Promise(function (resolve) {
215
+ // See if we have the user information
216
+ if (_this._users[userId]) {
217
+ var isInGroup = false;
218
+ // Parse the groups
219
+ for (var i = 0; i < _this._users[userId].length; i++) {
220
+ var group = _this._users[userId][i];
221
+ // See if this is the group name
222
+ if (groupName == group.Title) {
223
+ // Set the flag
224
+ isInGroup = true;
225
+ break;
226
+ }
227
+ }
228
+ // Resolve the request
229
+ resolve(isInGroup);
230
+ return;
231
+ }
232
+ // Get the group information for this user
233
+ (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteUsers(userId).Groups().execute(
234
+ // Success
235
+ function (groups) {
236
+ // Save the user information
237
+ _this._users[userId] = groups.results;
238
+ // See if they are in the group
239
+ _this.isInGroup(userId, groupName).then(resolve);
240
+ },
241
+ // Error
242
+ function () {
243
+ // Log
244
+ console.error("Unable to get the user information for id: ".concat(userId));
245
+ // Error get the user information
246
+ resolve(false);
247
+ });
248
+ });
249
+ };
250
+ // Loads the security groups
251
+ ListSecurity.prototype.loadGroups = function () {
252
+ var _this = this;
253
+ // Parse the security groups
254
+ gd_sprest_bs_1.Helper.Executor(this._props.groups, function (group) {
255
+ // Load the group
256
+ return _this.getGroupId(group.Title);
257
+ }).then(function () {
258
+ // Call the event
259
+ _this._props.onGroupsLoaded ? _this._props.onGroupsLoaded() : null;
260
+ });
177
261
  };
178
262
  // Render the modal
179
263
  ListSecurity.prototype.renderModal = function () {
@@ -267,33 +351,6 @@ var ListSecurity = /** @class */ (function () {
267
351
  // Show the modal
268
352
  modal_1.Modal.show();
269
353
  };
270
- // Get the permission types
271
- ListSecurity.prototype.getPermissionTypes = function () {
272
- var _this = this;
273
- // Return a promise
274
- return new Promise(function (resolve) {
275
- // Get the definitions
276
- (0, gd_sprest_bs_1.Web)().RoleDefinitions().query({
277
- OrderBy: ["Name"]
278
- }).execute(function (roleDefs) {
279
- // Clear the permissions and items
280
- _this._ddlItems = [{ text: "No Permission" }];
281
- _this._permissionTypes = {};
282
- // Parse the role definitions
283
- for (var i = 0; i < roleDefs.results.length; i++) {
284
- var roleDef = roleDefs.results[i];
285
- // Add the role and item
286
- var value = roleDef.RoleTypeKind > 0 ? roleDef.RoleTypeKind : roleDef.Name;
287
- _this._permissionTypes[value] = roleDef.Id;
288
- _this._ddlItems.push({
289
- data: roleDef,
290
- text: roleDef.Name,
291
- value: value.toString()
292
- });
293
- }
294
- });
295
- });
296
- };
297
354
  // Reset list permissions
298
355
  ListSecurity.prototype.resetPermissions = function (listItems) {
299
356
  var _this = this;
@@ -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.ListSecurity = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.10.59/node_modules/gd-sprest-bs/build/index.js\");\r\nvar loadingDialog_1 = __webpack_require__(/*! ./loadingDialog */ \"./build/common/loadingDialog.js\");\r\nvar modal_1 = __webpack_require__(/*! ./modal */ \"./build/common/modal.js\");\r\n/**\r\n * List Security\r\n * This component is used for setting the security group/permissions for a list.\r\n */\r\nvar ListSecurity = /** @class */ (function () {\r\n // Constructor\r\n function ListSecurity(props) {\r\n this._ddlItems = null;\r\n this._permissionTypes = null;\r\n this._props = null;\r\n // Gets the group id\r\n this._groups = {};\r\n // Save the properties\r\n this._props = props;\r\n // Get the permission types\r\n this.getPermissionTypes();\r\n }\r\n // Configures a list\r\n ListSecurity.prototype.configureList = function (listInfo) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Ensure a permission exists\r\n var permissionId = _this._permissionTypes[listInfo.permission];\r\n if (permissionId > 0) {\r\n // Get the group id\r\n _this.getGroupId(listInfo.groupName).then(\r\n // Exists\r\n function (groupId) {\r\n // Add the group to the list\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).Lists(listInfo.listName).RoleAssignments().addRoleAssignment(groupId, permissionId).execute(resolve, function () {\r\n // Log to the console\r\n console.error(\"[\".concat(listInfo.listName, \"] Error adding the group '\").concat(listInfo.groupName, \"' with permission \").concat(listInfo.permission, \" to the list.\"));\r\n // Resolve the request\r\n resolve();\r\n });\r\n }, \r\n // Error\r\n function () {\r\n // Log to the console\r\n console.error(\"[\".concat(listInfo.listName, \"] Site Group '\").concat(listInfo.groupName, \"' doesn't exist\"));\r\n // Resolve the request\r\n resolve();\r\n });\r\n }\r\n else {\r\n // Resolve the request\r\n resolve();\r\n }\r\n });\r\n };\r\n // Configures the lists\r\n ListSecurity.prototype.configureLists = function (lists) {\r\n var _this = this;\r\n var counter = 0;\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Configuring Lists\");\r\n loadingDialog_1.LoadingDialog.setBody(\"This will close after the lists are configured...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Reset the lists\r\n this.resetPermissions(lists).then(function () {\r\n // Parse the lists\r\n gd_sprest_bs_1.Helper.Executor(lists, function (list) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Configuring \".concat(++counter, \" of \").concat(lists.length, \" lists...\"));\r\n // Configure the list\r\n _this.configureList(list).then(resolve);\r\n });\r\n });\r\n });\r\n };\r\n // Creates the security groups\r\n ListSecurity.prototype.createGroups = function (createFl) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // See if we aren't creating the groups\r\n if (!createFl) {\r\n // Resolve the request\r\n resolve();\r\n return;\r\n }\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Ensuring the security groups exist...\");\r\n // Parse the group names\r\n var groups = _this._props.groups || [];\r\n gd_sprest_bs_1.Helper.Executor(groups, function (groupInfo) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the group\r\n _this.getGroupId(groupInfo.Title).then(\r\n // Group exists\r\n function (group) {\r\n // Check the next group\r\n resolve(group);\r\n }, \r\n // Group doesn't exist\r\n function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Creating the security group: \".concat(groupInfo.Title));\r\n // Create the properties\r\n var props = {\r\n Title: groupInfo.Title\r\n };\r\n // Call the event if it exists\r\n props = _this._props.onGroupCreating ? _this._props.onGroupCreating(props) : props;\r\n // Create the group\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().add(props).execute(\r\n // Successfully created the group\r\n function (group) {\r\n // Set the group id\r\n _this.setGroupId(groupInfo.Title.toLowerCase(), group);\r\n // Call the event\r\n _this._props.onGroupCreated ? _this._props.onGroupCreated(group) : null;\r\n // Check the next group\r\n resolve(group);\r\n }, \r\n // Error creating the group\r\n function () {\r\n // Log to the console\r\n console.error(\"Site Group '\".concat(groupInfo.Title, \"' was unable to be created.\"));\r\n // Check the next group\r\n resolve(null);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n };\r\n ListSecurity.prototype.getGroupId = function (groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n var key = groupName.toLowerCase();\r\n // See if we have already have it\r\n if (_this._groups[key]) {\r\n // Resolve the request\r\n resolve(_this._groups[key].Id);\r\n return;\r\n }\r\n // Get the group information\r\n switch (key) {\r\n // Default owner's group\r\n case \"owner\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedOwnerGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default member's group\r\n case \"member\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedMemberGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default visitor's group\r\n case \"visitor\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedVisitorGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default\r\n default:\r\n // Get the group\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().getByName(groupName).execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n }\r\n });\r\n };\r\n // Saves the group information\r\n ListSecurity.prototype.setGroupId = function (key, group) {\r\n // Save the info\r\n this._groups[key] = group;\r\n // Return the group id\r\n return group.Id;\r\n };\r\n // Render the modal\r\n ListSecurity.prototype.renderModal = function () {\r\n var _this = this;\r\n // Clear the modal\r\n modal_1.Modal.clear();\r\n // Set the header\r\n modal_1.Modal.setHeader(\"List Security\");\r\n // Parse the lists\r\n var rows = [];\r\n for (var i = 0; i < this._props.listItems.length; i++) {\r\n var listItem = this._props.listItems[i];\r\n // Add the row\r\n rows.push({\r\n isAutoSized: true,\r\n columns: [\r\n {\r\n control: {\r\n name: \"listName_\" + i,\r\n label: \"List Name\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Readonly,\r\n value: listItem.listName\r\n }\r\n },\r\n {\r\n control: {\r\n name: \"groupName_\" + i,\r\n label: \"Group Name\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Readonly,\r\n value: listItem.groupName\r\n }\r\n },\r\n {\r\n control: {\r\n name: \"permission_\" + i,\r\n label: \"Permission\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Dropdown,\r\n items: this._ddlItems,\r\n required: true,\r\n value: listItem.permission\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n // Render the form\r\n var form = gd_sprest_bs_1.Components.Form({\r\n el: modal_1.Modal.BodyElement,\r\n rows: rows\r\n });\r\n // Render the footer\r\n gd_sprest_bs_1.Components.TooltipGroup({\r\n el: modal_1.Modal.FooterElement,\r\n tooltips: [\r\n {\r\n content: \"Closes the modal\",\r\n btnProps: {\r\n text: \"Cancel\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlineDanger,\r\n onClick: function () {\r\n // Close the modal\r\n modal_1.Modal.hide();\r\n }\r\n }\r\n },\r\n {\r\n content: \"Configures the security for the lists.\",\r\n btnProps: {\r\n text: \"Configure\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlinePrimary,\r\n onClick: function () {\r\n var lists = [];\r\n // Get the form values\r\n var tableData = form.getValues();\r\n // Parse the # of rows\r\n for (var i = 0; i < rows.length; i++) {\r\n // Add the list information\r\n lists.push({\r\n groupName: tableData[\"groupName_\" + i],\r\n listName: tableData[\"listName_\" + i],\r\n permission: tableData[\"permission_\" + i]\r\n });\r\n }\r\n // Configure the lists\r\n _this.configureLists(lists);\r\n }\r\n }\r\n }\r\n ]\r\n });\r\n // Show the modal\r\n modal_1.Modal.show();\r\n };\r\n // Get the permission types\r\n ListSecurity.prototype.getPermissionTypes = function () {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the definitions\r\n (0, gd_sprest_bs_1.Web)().RoleDefinitions().query({\r\n OrderBy: [\"Name\"]\r\n }).execute(function (roleDefs) {\r\n // Clear the permissions and items\r\n _this._ddlItems = [{ text: \"No Permission\" }];\r\n _this._permissionTypes = {};\r\n // Parse the role definitions\r\n for (var i = 0; i < roleDefs.results.length; i++) {\r\n var roleDef = roleDefs.results[i];\r\n // Add the role and item\r\n var value = roleDef.RoleTypeKind > 0 ? roleDef.RoleTypeKind : roleDef.Name;\r\n _this._permissionTypes[value] = roleDef.Id;\r\n _this._ddlItems.push({\r\n data: roleDef,\r\n text: roleDef.Name,\r\n value: value.toString()\r\n });\r\n }\r\n });\r\n });\r\n };\r\n // Reset list permissions\r\n ListSecurity.prototype.resetPermissions = function (listItems) {\r\n var _this = this;\r\n // Parse the lists\r\n var lists = {};\r\n for (var i = 0; i < listItems.length; i++) {\r\n // Add the list\r\n lists[listItems[i].listName] = true;\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Parse the list keys\r\n for (var listName in lists) {\r\n var list = (0, gd_sprest_bs_1.Web)(_this._props.webUrl).Lists(listName);\r\n // Reset the permissions\r\n list.resetRoleInheritance().execute();\r\n // Revert to the default\r\n list.breakRoleInheritance(false, true).execute(true);\r\n // Wait for the requests to complete\r\n list.done(resolve);\r\n }\r\n });\r\n };\r\n // Shows the modal\r\n ListSecurity.prototype.show = function (createFl) {\r\n var _this = this;\r\n if (createFl === void 0) { createFl = true; }\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Loading the Security Information\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Loading the security group information...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Create the groups\r\n this.createGroups(createFl).then(function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Waiting for the permission types to be loaded...\");\r\n // Ensure the permissions are loaded\r\n var loopId = setInterval(function () {\r\n // See if the permissions exist\r\n if (_this._ddlItems && _this._permissionTypes) {\r\n // Hide the loading dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Show the modal\r\n _this.renderModal();\r\n // Stop the loop\r\n clearInterval(loopId);\r\n }\r\n }, 10);\r\n });\r\n };\r\n return ListSecurity;\r\n}());\r\nexports.ListSecurity = ListSecurity;\r\n\n\n//# sourceURL=webpack://dattatable/./build/common/listSecurity.js?");
118
+ eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.ListSecurity = void 0;\r\nvar gd_sprest_bs_1 = __webpack_require__(/*! gd-sprest-bs */ \"./node_modules/.pnpm/gd-sprest-bs@10.10.59/node_modules/gd-sprest-bs/build/index.js\");\r\nvar loadingDialog_1 = __webpack_require__(/*! ./loadingDialog */ \"./build/common/loadingDialog.js\");\r\nvar modal_1 = __webpack_require__(/*! ./modal */ \"./build/common/modal.js\");\r\n/**\r\n * List Security\r\n * This component is used for setting the security group/permissions for a list.\r\n */\r\nvar ListSecurity = /** @class */ (function () {\r\n // Constructor\r\n function ListSecurity(props) {\r\n this._ddlItems = null;\r\n this._permissionTypes = null;\r\n this._props = null;\r\n // Security group information\r\n this._groups = {};\r\n // Save the properties\r\n this._props = props;\r\n // Get the permission types\r\n this.getPermissionTypes();\r\n // Load the groups\r\n this.loadGroups();\r\n }\r\n ListSecurity.prototype.getGroup = function (groupName) { return this._groups[groupName.toLowerCase()]; };\r\n ListSecurity.prototype.setGroupId = function (key, group) {\r\n // Save the info\r\n this._groups[key] = group;\r\n // Return the group id\r\n return group.Id;\r\n };\r\n // Configures a list\r\n ListSecurity.prototype.configureList = function (listInfo) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Ensure a permission exists\r\n var permissionId = _this._permissionTypes[listInfo.permission];\r\n if (permissionId > 0) {\r\n // Get the group id\r\n _this.getGroupId(listInfo.groupName).then(\r\n // Exists\r\n function (groupId) {\r\n // Add the group to the list\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).Lists(listInfo.listName).RoleAssignments().addRoleAssignment(groupId, permissionId).execute(resolve, function () {\r\n // Log to the console\r\n console.error(\"[\".concat(listInfo.listName, \"] Error adding the group '\").concat(listInfo.groupName, \"' with permission \").concat(listInfo.permission, \" to the list.\"));\r\n // Resolve the request\r\n resolve();\r\n });\r\n }, \r\n // Error\r\n function () {\r\n // Log to the console\r\n console.error(\"[\".concat(listInfo.listName, \"] Site Group '\").concat(listInfo.groupName, \"' doesn't exist\"));\r\n // Resolve the request\r\n resolve();\r\n });\r\n }\r\n else {\r\n // Resolve the request\r\n resolve();\r\n }\r\n });\r\n };\r\n // Configures the lists\r\n ListSecurity.prototype.configureLists = function (lists) {\r\n var _this = this;\r\n var counter = 0;\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Configuring Lists\");\r\n loadingDialog_1.LoadingDialog.setBody(\"This will close after the lists are configured...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Reset the lists\r\n this.resetPermissions(lists).then(function () {\r\n // Parse the lists\r\n gd_sprest_bs_1.Helper.Executor(lists, function (list) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Configuring \".concat(++counter, \" of \").concat(lists.length, \" lists...\"));\r\n // Configure the list\r\n _this.configureList(list).then(resolve);\r\n });\r\n });\r\n });\r\n };\r\n // Creates the security groups\r\n ListSecurity.prototype.createGroups = function (createFl) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n // See if we aren't creating the groups\r\n if (!createFl) {\r\n // Resolve the request\r\n resolve();\r\n return;\r\n }\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Ensuring the security groups exist...\");\r\n // Parse the group names\r\n var groups = _this._props.groups || [];\r\n gd_sprest_bs_1.Helper.Executor(groups, function (groupInfo) {\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the group\r\n _this.getGroupId(groupInfo.Title).then(\r\n // Group exists\r\n function (group) {\r\n // Check the next group\r\n resolve(group);\r\n }, \r\n // Group doesn't exist\r\n function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Creating the security group: \".concat(groupInfo.Title));\r\n // Create the properties\r\n var props = {\r\n Title: groupInfo.Title\r\n };\r\n // Call the event if it exists\r\n props = _this._props.onGroupCreating ? _this._props.onGroupCreating(props) : props;\r\n // Create the group\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().add(props).execute(\r\n // Successfully created the group\r\n function (group) {\r\n // Set the group id\r\n _this.setGroupId(groupInfo.Title.toLowerCase(), group);\r\n // Call the event\r\n _this._props.onGroupCreated ? _this._props.onGroupCreated(group) : null;\r\n // Check the next group\r\n resolve(group);\r\n }, \r\n // Error creating the group\r\n function () {\r\n // Log to the console\r\n console.error(\"Site Group '\".concat(groupInfo.Title, \"' was unable to be created.\"));\r\n // Check the next group\r\n resolve(null);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n };\r\n // Gets the group id\r\n ListSecurity.prototype.getGroupId = function (groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve, reject) {\r\n var key = groupName.toLowerCase();\r\n // See if we have already have it\r\n if (_this._groups[key]) {\r\n // Resolve the request\r\n resolve(_this._groups[key].Id);\r\n return;\r\n }\r\n // Get the group information\r\n switch (key) {\r\n // Default owner's group\r\n case \"owner\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedOwnerGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default member's group\r\n case \"member\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedMemberGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default visitor's group\r\n case \"visitor\":\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).AssociatedVisitorGroup().execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n // Default\r\n default:\r\n // Get the group\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteGroups().getByName(groupName).execute(function (group) { resolve(_this.setGroupId(key, group)); }, reject);\r\n break;\r\n }\r\n });\r\n };\r\n // Get the permission types\r\n ListSecurity.prototype.getPermissionTypes = function () {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Get the definitions\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).RoleDefinitions().query({\r\n OrderBy: [\"Name\"]\r\n }).execute(function (roleDefs) {\r\n // Clear the permissions and items\r\n _this._ddlItems = [{ text: \"No Permission\" }];\r\n _this._permissionTypes = {};\r\n // Parse the role definitions\r\n for (var i = 0; i < roleDefs.results.length; i++) {\r\n var roleDef = roleDefs.results[i];\r\n // Add the role and item\r\n var value = roleDef.RoleTypeKind > 0 ? roleDef.RoleTypeKind : roleDef.Name;\r\n _this._permissionTypes[value] = roleDef.Id;\r\n _this._ddlItems.push({\r\n data: roleDef,\r\n text: roleDef.Name,\r\n value: value.toString()\r\n });\r\n }\r\n // Resolve the request\r\n resolve();\r\n });\r\n });\r\n };\r\n // Method to see if a user is w/in a group\r\n ListSecurity.prototype.isInGroup = function (userId, groupName) {\r\n var _this = this;\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // See if we have the user information\r\n if (_this._users[userId]) {\r\n var isInGroup = false;\r\n // Parse the groups\r\n for (var i = 0; i < _this._users[userId].length; i++) {\r\n var group = _this._users[userId][i];\r\n // See if this is the group name\r\n if (groupName == group.Title) {\r\n // Set the flag\r\n isInGroup = true;\r\n break;\r\n }\r\n }\r\n // Resolve the request\r\n resolve(isInGroup);\r\n return;\r\n }\r\n // Get the group information for this user\r\n (0, gd_sprest_bs_1.Web)(_this._props.webUrl).SiteUsers(userId).Groups().execute(\r\n // Success\r\n function (groups) {\r\n // Save the user information\r\n _this._users[userId] = groups.results;\r\n // See if they are in the group\r\n _this.isInGroup(userId, groupName).then(resolve);\r\n }, \r\n // Error\r\n function () {\r\n // Log\r\n console.error(\"Unable to get the user information for id: \".concat(userId));\r\n // Error get the user information\r\n resolve(false);\r\n });\r\n });\r\n };\r\n // Loads the security groups\r\n ListSecurity.prototype.loadGroups = function () {\r\n var _this = this;\r\n // Parse the security groups\r\n gd_sprest_bs_1.Helper.Executor(this._props.groups, function (group) {\r\n // Load the group\r\n return _this.getGroupId(group.Title);\r\n }).then(function () {\r\n // Call the event\r\n _this._props.onGroupsLoaded ? _this._props.onGroupsLoaded() : null;\r\n });\r\n };\r\n // Render the modal\r\n ListSecurity.prototype.renderModal = function () {\r\n var _this = this;\r\n // Clear the modal\r\n modal_1.Modal.clear();\r\n // Set the header\r\n modal_1.Modal.setHeader(\"List Security\");\r\n // Parse the lists\r\n var rows = [];\r\n for (var i = 0; i < this._props.listItems.length; i++) {\r\n var listItem = this._props.listItems[i];\r\n // Add the row\r\n rows.push({\r\n isAutoSized: true,\r\n columns: [\r\n {\r\n control: {\r\n name: \"listName_\" + i,\r\n label: \"List Name\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Readonly,\r\n value: listItem.listName\r\n }\r\n },\r\n {\r\n control: {\r\n name: \"groupName_\" + i,\r\n label: \"Group Name\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Readonly,\r\n value: listItem.groupName\r\n }\r\n },\r\n {\r\n control: {\r\n name: \"permission_\" + i,\r\n label: \"Permission\",\r\n type: gd_sprest_bs_1.Components.FormControlTypes.Dropdown,\r\n items: this._ddlItems,\r\n required: true,\r\n value: listItem.permission\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n // Render the form\r\n var form = gd_sprest_bs_1.Components.Form({\r\n el: modal_1.Modal.BodyElement,\r\n rows: rows\r\n });\r\n // Render the footer\r\n gd_sprest_bs_1.Components.TooltipGroup({\r\n el: modal_1.Modal.FooterElement,\r\n tooltips: [\r\n {\r\n content: \"Closes the modal\",\r\n btnProps: {\r\n text: \"Cancel\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlineDanger,\r\n onClick: function () {\r\n // Close the modal\r\n modal_1.Modal.hide();\r\n }\r\n }\r\n },\r\n {\r\n content: \"Configures the security for the lists.\",\r\n btnProps: {\r\n text: \"Configure\",\r\n type: gd_sprest_bs_1.Components.ButtonTypes.OutlinePrimary,\r\n onClick: function () {\r\n var lists = [];\r\n // Get the form values\r\n var tableData = form.getValues();\r\n // Parse the # of rows\r\n for (var i = 0; i < rows.length; i++) {\r\n // Add the list information\r\n lists.push({\r\n groupName: tableData[\"groupName_\" + i],\r\n listName: tableData[\"listName_\" + i],\r\n permission: tableData[\"permission_\" + i]\r\n });\r\n }\r\n // Configure the lists\r\n _this.configureLists(lists);\r\n }\r\n }\r\n }\r\n ]\r\n });\r\n // Show the modal\r\n modal_1.Modal.show();\r\n };\r\n // Reset list permissions\r\n ListSecurity.prototype.resetPermissions = function (listItems) {\r\n var _this = this;\r\n // Parse the lists\r\n var lists = {};\r\n for (var i = 0; i < listItems.length; i++) {\r\n // Add the list\r\n lists[listItems[i].listName] = true;\r\n }\r\n // Return a promise\r\n return new Promise(function (resolve) {\r\n // Parse the list keys\r\n for (var listName in lists) {\r\n var list = (0, gd_sprest_bs_1.Web)(_this._props.webUrl).Lists(listName);\r\n // Reset the permissions\r\n list.resetRoleInheritance().execute();\r\n // Revert to the default\r\n list.breakRoleInheritance(false, true).execute(true);\r\n // Wait for the requests to complete\r\n list.done(resolve);\r\n }\r\n });\r\n };\r\n // Shows the modal\r\n ListSecurity.prototype.show = function (createFl) {\r\n var _this = this;\r\n if (createFl === void 0) { createFl = true; }\r\n // Show a loading dialog\r\n loadingDialog_1.LoadingDialog.setHeader(\"Loading the Security Information\");\r\n loadingDialog_1.LoadingDialog.setBody(\"Loading the security group information...\");\r\n loadingDialog_1.LoadingDialog.show();\r\n // Create the groups\r\n this.createGroups(createFl).then(function () {\r\n // Update the loading dialog\r\n loadingDialog_1.LoadingDialog.setBody(\"Waiting for the permission types to be loaded...\");\r\n // Ensure the permissions are loaded\r\n var loopId = setInterval(function () {\r\n // See if the permissions exist\r\n if (_this._ddlItems && _this._permissionTypes) {\r\n // Hide the loading dialog\r\n loadingDialog_1.LoadingDialog.hide();\r\n // Show the modal\r\n _this.renderModal();\r\n // Stop the loop\r\n clearInterval(loopId);\r\n }\r\n }, 10);\r\n });\r\n };\r\n return ListSecurity;\r\n}());\r\nexports.ListSecurity = ListSecurity;\r\n\n\n//# sourceURL=webpack://dattatable/./build/common/listSecurity.js?");
119
119
 
120
120
  /***/ }),
121
121