diff --git a/package.json b/package.json index df4e62f..96d441f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-point-group-manager", - "version": "5.0.2", + "version": "5.0.3", "description": "angular-point tool to manage SharePoint users and groups.", "directories": { "test": "test" @@ -12,7 +12,7 @@ "angular": "~1.6.1", "angular-point": "^5.0.0", "lodash": "^4.17.4", - "ng-table": "^3.0.1", + "ng-table": "3.0.1", "toastr": "^2.1.2" }, "devDependencies": { diff --git a/src/dataContainer.ts b/src/dataContainer.ts index 5184497..136a32a 100644 --- a/src/dataContainer.ts +++ b/src/dataContainer.ts @@ -1,10 +1,10 @@ -import {IXMLGroup, IXMLUser} from 'angular-point'; +import {XMLGroup, XMLUser} from 'angular-point'; export class DataContainer { all = []; assigned = []; available = []; - filter: IXMLGroup | IXMLUser | any; + filter: XMLGroup | XMLUser | any; selectedAssigned = []; selectedAvailable = []; diff --git a/src/groupManager.ts b/src/groupManager.ts index 9653dfb..89e1bde 100644 --- a/src/groupManager.ts +++ b/src/groupManager.ts @@ -1,8 +1,9 @@ import * as toastr from 'toastr'; import * as _ from 'lodash'; -import {NgTableParams as INgTableParams} from 'ng-table'; -import {DataContainer} from './dataContainer'; -import {IXMLGroup, IXMLUser, DataService} from 'angular-point'; +import { NgTableParams as INgTableParams } from 'ng-table'; +import { XMLGroup, XMLUser, DataService } from 'angular-point'; + +import { DataContainer } from './dataContainer'; export class GroupManagerController { static $inject = ['NgTableParams', '$filter', '$timeout', '$q', 'apDataService']; @@ -13,18 +14,18 @@ export class GroupManagerController { groups = new DataContainer(); groupsTable: INgTableParams; siteUrl = ''; - sourceGroup: IXMLGroup; + sourceGroup: XMLGroup; tabContents = {}; - targetGroup: IXMLGroup; + targetGroup: XMLGroup; userFilter = ''; users = new DataContainer(); usersTable: Object; constructor(private NgTableParams, - private $filter: ng.IFilterService, - private $timeout: ng.ITimeoutService, - private $q: ng.IQService, - private apDataService: DataService) { + private $filter: ng.IFilterService, + private $timeout: ng.ITimeoutService, + private $q: ng.IQService, + private apDataService: DataService) { } $onInit() { @@ -38,9 +39,9 @@ export class GroupManagerController { this.buildTables(); } - buildInputs(assignedItems: IXMLGroup[] | IXMLUser[], type: 'groups' | 'users') { + buildInputs(assignedItems: XMLGroup[] | XMLUser[], type: 'groups' | 'users') { // Create a quick map to speed up checking in future - let map = _.map(assignedItems, (item: IXMLUser | IXMLGroup) => item.ID); + let map = _.map(assignedItems, (item: XMLUser | XMLGroup) => item.ID); let available = []; let assigned = []; let data = this[type]; @@ -74,30 +75,30 @@ export class GroupManagerController { title: 'asc' } }, { - total: this.groups.all.length, // length of data - getData: (params) => { - // use build-in angular filter - let orderedData = this.groups.all; - let filteredData = this.$filter('filter')(orderedData, (record) => { - let match = false; - - if (this.groupFilter === '') { - return true; - } - let textFields = ['ID', 'Name', 'Description']; - let searchStringLowerCase = this.groupFilter.toLowerCase(); - _.each(textFields, (fieldName) => { - if (record[fieldName].toLowerCase().indexOf(searchStringLowerCase) !== -1) { - match = true; + total: this.groups.all.length, // length of data + getData: (params) => { + // use build-in angular filter + let orderedData = this.groups.all; + let filteredData = this.$filter('filter')(orderedData, (record) => { + let match = false; + + if (this.groupFilter === '') { + return true; } + let textFields = ['ID', 'Name', 'Description']; + let searchStringLowerCase = this.groupFilter.toLowerCase(); + _.each(textFields, (fieldName) => { + if (record[fieldName].toLowerCase().indexOf(searchStringLowerCase) !== -1) { + match = true; + } + }); + return match; }); - return match; - }); - params.total(filteredData.length); - return filteredData.slice((params.page() - 1) * params.count(), params.page() * params.count()); - } - }); + params.total(filteredData.length); + return filteredData.slice((params.page() - 1) * params.count(), params.page() * params.count()); + } + }); this.usersTable = new this.NgTableParams({ page: 1, // show first page @@ -106,29 +107,29 @@ export class GroupManagerController { title: 'asc' } }, { - total: this.users.all.length, // length of data - getData: (params) => { - let orderedData = this.users.all; - let filteredData = this.$filter('filter')(orderedData, (record) => { - let match = false; - - if (this.userFilter === '') { - return true; - } - let textFields = ['ID', 'Name', 'Email']; - let searchStringLowerCase = this.userFilter.toLowerCase(); - _.each(textFields, (fieldName) => { - if (record[fieldName].toLowerCase().indexOf(searchStringLowerCase) !== -1) { - match = true; + total: this.users.all.length, // length of data + getData: (params) => { + let orderedData = this.users.all; + let filteredData = this.$filter('filter')(orderedData, (record) => { + let match = false; + + if (this.userFilter === '') { + return true; } + let textFields = ['ID', 'Name', 'Email']; + let searchStringLowerCase = this.userFilter.toLowerCase(); + _.each(textFields, (fieldName) => { + if (record[fieldName].toLowerCase().indexOf(searchStringLowerCase) !== -1) { + match = true; + } + }); + return match; }); - return match; - }); - params.total(orderedData.length); - return filteredData.slice((params.page() - 1) * params.count(), params.page() * params.count()); - } - }); + params.total(orderedData.length); + return filteredData.slice((params.page() - 1) * params.count(), params.page() * params.count()); + } + }); } initializeFilterFields() { @@ -141,7 +142,7 @@ export class GroupManagerController { this.apDataService.getCollection({ webURL: this.siteUrl, operation: 'GetGroupCollectionFromSite' - }).then((response: IXMLGroup[]) => { + }).then((response: XMLGroup[]) => { Array.prototype.push.apply(this.groups.all, response); deferred.resolve(this.groups.all); }); @@ -153,7 +154,7 @@ export class GroupManagerController { this.apDataService.getCollection({ webURL: this.siteUrl, operation: 'GetUserCollectionFromSite' - }).then((response: IXMLUser[]) => { + }).then((response: XMLUser[]) => { // Assume that valid users all have email addresses and services/groups don't _.each(response, user => this.users.all.push(user)); @@ -162,7 +163,7 @@ export class GroupManagerController { return deferred.promise; } - groupDetailsLink(group: IXMLGroup) { + groupDetailsLink(group: XMLGroup) { this.users.filter = group; this.updateTab('Users'); } @@ -188,7 +189,7 @@ export class GroupManagerController { webURL: this.siteUrl, operation: 'GetGroupCollectionFromUser', userLoginName: this.groups.filter.LoginName - }).then((response: IXMLGroup[]) => { + }).then((response: XMLGroup[]) => { this.buildInputs(response, 'groups'); deferred.resolve(response); }); @@ -196,7 +197,7 @@ export class GroupManagerController { return deferred.promise; } - updateAvailableUsers(group: IXMLGroup) { + updateAvailableUsers(group: XMLGroup) { let deferred = this.$q.defer(); toastr.info('Retrieving an updated list of users for the current group'); @@ -204,7 +205,7 @@ export class GroupManagerController { webURL: this.siteUrl, groupName: group.Name, operation: 'GetUserCollectionFromGroup' - }).then((response: IXMLUser[]) => { + }).then((response: XMLUser[]) => { this.buildInputs(response, 'users'); deferred.resolve(response); }, (err) => { @@ -224,7 +225,7 @@ export class GroupManagerController { * @param {array} groupsArray * @returns {Promise.promise|*} */ - updatePermissions(operation: string, usersArray: IXMLUser[], groupsArray: IXMLGroup[]): ng.IPromise { + updatePermissions(operation: string, usersArray: XMLUser[], groupsArray: XMLGroup[]): ng.IPromise { let deferredPermissionsUpdate = this.$q.defer(); if (!usersArray.length) { @@ -232,8 +233,8 @@ export class GroupManagerController { } else { toastr.info('Processing your request'); let queue = []; - _.each(usersArray, (user: IXMLUser) => { - _.each(groupsArray, (group: IXMLGroup) => { + _.each(usersArray, (user: XMLUser) => { + _.each(groupsArray, (group: XMLGroup) => { let deferred = this.$q.defer(); this.apDataService.serviceWrapper({ diff --git a/yarn.lock b/yarn.lock index 58ee9bd..85e08a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@types/angular@~1.5.19": +"@types/angular@^1.5.13", "@types/angular@~1.5.19": version "1.5.23" resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.5.23.tgz#ccd175556e341064da8e4d6a0c3e49f4b99a2182" dependencies: @@ -70,12 +70,11 @@ align-text@^0.1.1, align-text@^0.1.3: repeat-string "^1.5.2" angular-point@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/angular-point/-/angular-point-5.0.0.tgz#8cd1d5fec6e0261e08b2acfabf930dda3c338350" + version "5.0.2" + resolved "https://registry.yarnpkg.com/angular-point/-/angular-point-5.0.2.tgz#40f629e2fac177219020df2bcd4b3d9b21a5caa2" dependencies: angular "~1.6.1" error-stack-parser "^1.3.1" - jquery "^2.1.4" lodash "^4.17.4" moment "^2.17.1" toastr "^2.1.2" @@ -105,10 +104,6 @@ anymatch@^1.3.0: arrify "^1.0.0" micromatch "^2.1.5" -app-root-path@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" - aproba@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" @@ -183,8 +178,8 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" awesome-typescript-loader@^3.0.0-beta.17: - version "3.0.0-beta.17" - resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-3.0.0-beta.17.tgz#f22cfb9c4365d8131f5cb737025ffcb3e516a8ec" + version "3.0.0-beta.18" + resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-3.0.0-beta.18.tgz#7a72b1cca9a2dca59794ab2a4133f779a3a221e7" dependencies: colors "^1.1.2" enhanced-resolve "^2.3.0" @@ -441,16 +436,6 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -codelyzer@^2.0.0-beta.4: - version "2.0.0-beta.4" - resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-2.0.0-beta.4.tgz#644c5ffcdcc6c933991e3790a29c5085e80ae4ca" - dependencies: - app-root-path "^2.0.1" - css-selector-tokenizer "^0.7.0" - cssauron "^1.4.0" - source-map "^0.5.6" - sprintf-js "^1.0.3" - colors@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -553,24 +538,6 @@ crypto-browserify@^3.11.0: public-encrypt "^4.0.0" randombytes "^2.0.0" -css-selector-tokenizer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -cssauron@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" - dependencies: - through X.X.X - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -728,10 +695,6 @@ extsprintf@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" -fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - filename-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" @@ -1087,7 +1050,7 @@ is-obj@^1.0.0: is-posix-bracket@^0.1.0: version "0.1.1" - resolved "http://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" is-primitive@^2.0.0: version "2.0.0" @@ -1137,10 +1100,6 @@ jodid25519@^1.0.0: dependencies: jsbn "~0.1.0" -jquery@^2.1.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02" - js-tokens@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" @@ -1149,10 +1108,6 @@ jsbn@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -1326,6 +1281,12 @@ nan@^2.3.0: version "2.5.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8" +ng-table@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ng-table/-/ng-table-3.0.1.tgz#e0efa58887cf41805cb7973814da509dddb89368" + dependencies: + "@types/angular" "^1.5.13" + node-libs-browser@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-1.1.1.tgz#2a38243abedd7dffcd07a97c9aca5668975a6fea" @@ -1668,10 +1629,6 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - regex-cache@^0.4.2: version "0.4.3" resolved "http://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -1679,14 +1636,6 @@ regex-cache@^0.4.2: is-equal-shallow "^0.1.3" is-primitive "^2.0.0" -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - registry-auth-token@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" @@ -1699,16 +1648,6 @@ registry-url@^3.0.3: dependencies: rc "^1.0.1" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" @@ -1824,7 +1763,7 @@ source-map-support@^0.4.0: dependencies: source-map "^0.5.3" -source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -1953,10 +1892,6 @@ tar@~2.2.1: fstream "^1.0.2" inherits "2" -through@X.X.X: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - timed-out@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217"