Skip to content

Commit

Permalink
Bump to make it easier to consume.
Browse files Browse the repository at this point in the history
  • Loading branch information
scatcher committed Jan 11, 2017
1 parent 5af669c commit 720ddf2
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 143 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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": {
Expand Down
4 changes: 2 additions & 2 deletions src/dataContainer.ts
Original file line number Diff line number Diff line change
@@ -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 = [];

Expand Down
123 changes: 62 additions & 61 deletions src/groupManager.ts
Original file line number Diff line number Diff line change
@@ -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'];
Expand All @@ -13,18 +14,18 @@ export class GroupManagerController {
groups = new DataContainer();
groupsTable: INgTableParams<any>;
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() {
Expand All @@ -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];
Expand Down Expand Up @@ -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
Expand All @@ -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() {
Expand All @@ -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);
});
Expand 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));

Expand All @@ -162,7 +163,7 @@ export class GroupManagerController {
return deferred.promise;
}

groupDetailsLink(group: IXMLGroup) {
groupDetailsLink(group: XMLGroup) {
this.users.filter = group;
this.updateTab('Users');
}
Expand All @@ -188,23 +189,23 @@ 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);
});

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');
this.apDataService.getCollection({
webURL: this.siteUrl,
groupName: group.Name,
operation: 'GetUserCollectionFromGroup'
}).then((response: IXMLUser[]) => {
}).then((response: XMLUser[]) => {
this.buildInputs(response, 'users');
deferred.resolve(response);
}, (err) => {
Expand All @@ -224,16 +225,16 @@ export class GroupManagerController {
* @param {array} groupsArray
* @returns {Promise.promise|*}
*/
updatePermissions(operation: string, usersArray: IXMLUser[], groupsArray: IXMLGroup[]): ng.IPromise<Object[]> {
updatePermissions(operation: string, usersArray: XMLUser[], groupsArray: XMLGroup[]): ng.IPromise<Object[]> {
let deferredPermissionsUpdate = this.$q.defer();

if (!usersArray.length) {
toastr.warning('Please make a selection');
} 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({
Expand Down
Loading

0 comments on commit 720ddf2

Please sign in to comment.