|
@@ -1,4 +1,4 @@
|
|
-import { IPromise, IQService, ITimeoutService } from 'angular';
|
|
|
|
|
|
+import { IPromise, IQService } from 'angular';
|
|
import Person from '../models/person.model';
|
|
import Person from '../models/person.model';
|
|
import { IPeopleService } from './people.service';
|
|
import { IPeopleService } from './people.service';
|
|
import OrgChartData from '../models/orgchart-data.model';
|
|
import OrgChartData from '../models/orgchart-data.model';
|
|
@@ -7,11 +7,12 @@ var peopleData = require('./people.data');
|
|
|
|
|
|
export default class PeopleService implements IPeopleService {
|
|
export default class PeopleService implements IPeopleService {
|
|
private people: Person[];
|
|
private people: Person[];
|
|
- static $inject = ['$q'];
|
|
|
|
|
|
|
|
|
|
+ static $inject = ['$q'];
|
|
constructor(private $q: IQService) {
|
|
constructor(private $q: IQService) {
|
|
this.people = peopleData.map((person) => new Person(person));
|
|
this.people = peopleData.map((person) => new Person(person));
|
|
}
|
|
}
|
|
|
|
+
|
|
autoComplete(query: string): IPromise<Person[]> {
|
|
autoComplete(query: string): IPromise<Person[]> {
|
|
return this.search(query)
|
|
return this.search(query)
|
|
.then((people: Person[]) => {
|
|
.then((people: Person[]) => {
|
|
@@ -28,7 +29,7 @@ export default class PeopleService implements IPeopleService {
|
|
}
|
|
}
|
|
|
|
|
|
getDirectReports(id: string): angular.IPromise<Person[]> {
|
|
getDirectReports(id: string): angular.IPromise<Person[]> {
|
|
- var people = this.people.filter((person: Person) => person.detail['manager']['typeMetaData'].userKey == id);
|
|
|
|
|
|
+ var people = this.findDirectReports(id);
|
|
|
|
|
|
return this.$q.resolve(people);
|
|
return this.$q.resolve(people);
|
|
}
|
|
}
|
|
@@ -39,7 +40,7 @@ export default class PeopleService implements IPeopleService {
|
|
if (person) {
|
|
if (person) {
|
|
var managementChain: Person[] = [];
|
|
var managementChain: Person[] = [];
|
|
|
|
|
|
- while (person = this.findPerson(person.detail['manager']['typeMetaData'].userKey)) {
|
|
|
|
|
|
+ while (person = this.findManager(person)) {
|
|
managementChain.push(person);
|
|
managementChain.push(person);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -55,10 +56,8 @@ export default class PeopleService implements IPeopleService {
|
|
}
|
|
}
|
|
|
|
|
|
var self = this.findPerson(personId);
|
|
var self = this.findPerson(personId);
|
|
- var manager = self.detail['manager'];
|
|
|
|
- var children = this.people.filter((person: Person) => {
|
|
|
|
- return self.detail['manager']['typeMetaData'].userKey == personId;
|
|
|
|
- });
|
|
|
|
|
|
+ var manager = this.findManager(self);
|
|
|
|
+ var children = this.findDirectReports(personId);
|
|
|
|
|
|
var orgChartData = new OrgChartData(manager, children, self);
|
|
var orgChartData = new OrgChartData(manager, children, self);
|
|
|
|
|
|
@@ -99,6 +98,14 @@ export default class PeopleService implements IPeopleService {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private findDirectReports(id: string): Person[] {
|
|
|
|
+ return this.people.filter((person: Person) => person.detail['manager']['typeMetaData'].userKey == id);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private findManager(person: Person): Person {
|
|
|
|
+ return this.findPerson(person.detail['manager']['typeMetaData'].userKey);
|
|
|
|
+ }
|
|
|
|
+
|
|
private findPerson(id: string): Person {
|
|
private findPerson(id: string): Person {
|
|
var people = this.people.filter((person: Person) => person.userKey == id);
|
|
var people = this.people.filter((person: Person) => person.userKey == id);
|
|
|
|
|