-
+
+ Recommend!
{{ node.data.title }} {{node.data.key}}
diff --git a/src/packages/sensor/component/setting/sensor-item-selector/sensor-item-selector.component.ts b/src/packages/sensor/component/setting/sensor-item-selector/sensor-item-selector.component.ts
index fb3cb20..ee060ca 100644
--- a/src/packages/sensor/component/setting/sensor-item-selector/sensor-item-selector.component.ts
+++ b/src/packages/sensor/component/setting/sensor-item-selector/sensor-item-selector.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit, OnChanges, Input, Output, EventEmitter, ViewChild, AfterViewInit } from '@angular/core';
+import { Component, OnInit, OnChanges, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';
import { Router } from '@angular/router';
import { Store, select } from '@ngrx/store';
import { RPCError } from 'packages/core/rpc/error';
@@ -14,14 +14,13 @@ import { ITreeOptions } from 'angular-tree-component';
templateUrl: './sensor-item-selector.component.html',
styleUrls: ['./sensor-item-selector.component.scss']
})
-export class SensorItemSelectorComponent implements OnInit, AfterViewInit, OnChanges {
+export class SensorItemSelectorComponent implements OnInit, OnChanges {
@Input() selectedCrawler: MetaCrawler;
- @Output() selectedItems = new EventEmitter
();
+ @Output() itemSelectEvent = new EventEmitter>();
items$ = this.listStore.pipe(select(ReadAllSensorDisplayItemByCrawlerSelector.select('list')));
- sensorDisplayItems: MetaSensorDisplayItem[];
- @ViewChild('tree') tree;
nodes;
+ checkedSet: Set;
constructor(
private router: Router,
@@ -29,13 +28,10 @@ export class SensorItemSelectorComponent implements OnInit, AfterViewInit, OnCha
) { }
ngOnInit() {
+ this.checkedSet = new Set();
this.items$.subscribe(
(list: MetaSensorDisplayItem[]) => {
if (list !== null) {
- console.log('###Display Items###');
- console.log(list);
- console.log('###################');
- this.sensorDisplayItems = list;
this.generateTreeNode(list);
}
},
@@ -45,9 +41,6 @@ export class SensorItemSelectorComponent implements OnInit, AfterViewInit, OnCha
);
}
- ngAfterViewInit() {
- }
-
ngOnChanges() {
this.listStore.dispatch(new ListStore.ReadAllByCrawler(this.selectedCrawler));
}
@@ -62,20 +55,21 @@ export class SensorItemSelectorComponent implements OnInit, AfterViewInit, OnCha
const node = {
title: item.itemType.name,
children: childrenNode,
- isExpanded: true
};
this.nodes.push(node);
} else {
categoryNode.children.push(this.getChildNode(item));
}
}
+ this.itemSelectEvent.emit(this.checkedSet);
}
getChildNode(item) {
const childNode = {
title: item.displayName,
key: ' - ' + item.key,
- default: item.default
+ default: item.default,
+ displayItem: item
};
return childNode;
}
@@ -92,16 +86,16 @@ export class SensorItemSelectorComponent implements OnInit, AfterViewInit, OnCha
checkItem(node) {
node.toggleActivated(true);
- console.log(node);
- // if (node.isActive) {
- // if (this.checkedSet.has(node.data) === false) {
- // this.checkedSet.add(node.data);
- // }
- // } else {
- // if (this.checkedSet.has(node.data)) {
- // this.checkedSet.delete(node.data);
- // }
- // }
+ if (node.isActive) {
+ if (this.checkedSet.has(node.data.displayItem) === false) {
+ this.checkedSet.add(node.data.displayItem);
+ }
+ } else {
+ if (this.checkedSet.has(node.data.displayItem)) {
+ this.checkedSet.delete(node.data.displayItem);
+ }
+ }
+ this.itemSelectEvent.emit(this.checkedSet);
}
onTreeDataLoad(tree) {
diff --git a/src/packages/sensor/component/setting/setting.component.html b/src/packages/sensor/component/setting/setting.component.html
index 4bfbe80..b1d39cd 100644
--- a/src/packages/sensor/component/setting/setting.component.html
+++ b/src/packages/sensor/component/setting/setting.component.html
@@ -1,5 +1,5 @@
-
+
diff --git a/src/packages/sensor/component/setting/setting.component.ts b/src/packages/sensor/component/setting/setting.component.ts
index 768943f..a878037 100644
--- a/src/packages/sensor/component/setting/setting.component.ts
+++ b/src/packages/sensor/component/setting/setting.component.ts
@@ -1,9 +1,9 @@
import { Component, OnInit, Input, Inject } from '@angular/core';
-import { AfterContentInit } from '@angular/core/src/metadata/lifecycle_hooks';
import { Target } from '../../../target/model';
import { MAT_DIALOG_DATA } from '@angular/material';
import { Infra } from '../../../infra/model';
import { MetaCrawler } from '../../../meta/crawler/model/MetaCrawler';
+import { MetaSensorDisplayItem } from '../../../meta/sensor-display-item/model/MetaSensorDisplayItem';
@Component({
@@ -11,10 +11,11 @@ import { MetaCrawler } from '../../../meta/crawler/model/MetaCrawler';
templateUrl: './setting.component.html',
styleUrls: ['./setting.component.scss']
})
-export class SettingComponent implements OnInit, AfterContentInit {
+export class SettingComponent implements OnInit {
selectedTarget: Target = null;
selectedCrawler: MetaCrawler = null;
+ selectedSensorDisplayItems: Set = null;
step = 1;
constructor(
@@ -25,16 +26,30 @@ export class SettingComponent implements OnInit, AfterContentInit {
}
}
-
ngOnInit() {
}
- ngAfterContentInit() {
-
+ onNext() {
+ const valid = this.validateSelection();
+ if (valid !== null) {
+ alert(valid);
+ return;
+ }
+ this.step += 1;
}
- onNext() {
- this.step += 1;
+ validateSelection() {
+ let message = null;
+ if (this.selectedTarget === null) {
+ message = 'Target is not selected.';
+ }
+ if (this.selectedCrawler === null) {
+ message = 'Crawler is not selected.';
+ }
+ if (this.selectedSensorDisplayItems === null || this.selectedSensorDisplayItems.size === 0) {
+ message = 'SensorItem is not selected.';
+ }
+ return message;
}
onPrev() {
@@ -51,4 +66,7 @@ export class SettingComponent implements OnInit, AfterContentInit {
handleCrawlerSelection(c: MetaCrawler) {
this.selectedCrawler = c;
}
+ handleItemSelection(itemSet: Set) {
+ this.selectedSensorDisplayItems = itemSet;
+ }
}
diff --git a/src/packages/settings/member/component/totp/totp.component.ts b/src/packages/settings/member/component/totp/totp.component.ts
index b9ed48f..98adae1 100644
--- a/src/packages/settings/member/component/totp/totp.component.ts
+++ b/src/packages/settings/member/component/totp/totp.component.ts
@@ -3,9 +3,12 @@ import { ActivatedRoute, Router } from '@angular/router';
import * as TotpStore from '../../store/totp';
import { Store, select } from '@ngrx/store';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
+
+import { AuthSelector } from 'packages/member/store';
+
+
import { TotpSelector } from '../../store';
-import {AuthSelector} from "../../../../member/store/index";
-import {Member} from "../../../../member/model/Member";
+import { Member } from 'packages/member/model/Member';
@Component({
selector: 'of-totp',
@@ -51,6 +54,29 @@ export class TotpComponent implements OnInit {
});
}
+ // ngAfterContentInit() {
+ //
+ // this.listStore.select(AuthSelector.select('member')).subscribe(
+ // (member: Member) => {
+ // this.store.dispatch(new TotpRegistStore.createTotp(member));
+ // },
+ // (error) => {
+ // console.log(error);
+ // }
+ // );
+ //
+ // this.probes$.subscribe(
+ // (probes: boo) => {
+ // console.log(probes);
+ // this.dataSource = new MatTableDataSource(probes);
+ // this.dataSource.sort = this.sort;
+ // },
+ // (error: RPCError) => {
+ // console.log(error.response.message);
+ // }
+ // );
+ //
+ // }
registClick() {
const code = this.totpForm.value['code'];
const secretCode = 'X6AWAK573M5372NM';
diff --git a/src/packages/settings/member/service/member-totp.service.ts b/src/packages/settings/member/service/member-totp.service.ts
index 36aff5b..d3629fc 100644
--- a/src/packages/settings/member/service/member-totp.service.ts
+++ b/src/packages/settings/member/service/member-totp.service.ts
@@ -16,7 +16,7 @@ export class MemberTotpService {
public createTotp(member: Member): Observable {
// Todo Store get member object
- return this.rpcClient.call('MemberTotpService.createTotp', {Member: {id:1}});
+ return this.rpcClient.call('MemberTotpService.createTotp', {Member: member});
}
public regist(member: Member, secretCode: string, code: string): Observable {
@@ -27,4 +27,8 @@ export class MemberTotpService {
// };
return this.rpcClient.call('MemberTotpService.regist', member, secretCode, code);
}
+
+ public checkCodeForMember(member: Member, code: string): Observable {
+ return this.rpcClient.call('MemberTotpService.checkCodeForMember', member, code);
+ }
}
diff --git a/src/packages/settings/member/store/totp/totp.action.ts b/src/packages/settings/member/store/totp/totp.action.ts
index 6797de9..4315eb6 100644
--- a/src/packages/settings/member/store/totp/totp.action.ts
+++ b/src/packages/settings/member/store/totp/totp.action.ts
@@ -5,13 +5,17 @@ import { RESTError } from 'packages/core/rest/error';
import { Member } from '../../../../member/model';
export enum ActionType {
- CreateTotp = '[member.totp] CreateTotp',
- CreateTotpSuccess = '[member.totp] CreateTotpSuccess',
- CreateTotpFailure = '[member.totp] CreateTotpFailure',
+ CreateTotp = '[member.totp] CreateTotp',
+ CreateTotpSuccess = '[member.totp] CreateTotpSuccess',
+ CreateTotpFailure = '[member.totp] CreateTotpFailure',
- Regist = '[member.totp] Regist',
- RegistSuccess = '[member.totp] RegistSuccess',
- RegistFailure = '[member.totp] RegistFailure',
+ Regist = '[member.totp] Regist',
+ RegistSuccess = '[member.totp] RegistSuccess',
+ RegistFailure = '[member.totp] RegistFailure',
+
+ CheckCodeForMember = '[member.totp] CheckCodeForMember',
+ CheckCodeForMemberSuccess = '[member.totp] CheckCodeForMemberSuccess',
+ CheckCodeForMemberFailure = '[member.totp] CheckCodeForMemberFailure',
}
export class CreateTotp implements Action {
@@ -52,6 +56,26 @@ export class RegistFailure implements Action {
constructor(public payload: RESTError) {}
}
+// ----------------------------------------------------------------------------------------
+
+export class CheckCodeForMember implements Action {
+ readonly type = ActionType.CheckCodeForMember;
+
+ constructor(public payload: {member: Member, code: string}) {}
+}
+
+export class CheckCodeForMemberSuccess implements Action {
+ readonly type = ActionType.CheckCodeForMemberSuccess;
+
+ constructor(public payload: void) {}
+}
+
+export class CheckCodeForMemberFailure implements Action {
+ readonly type = ActionType.CheckCodeForMemberFailure;
+
+ constructor(public payload: RESTError) {}
+}
+
export type Actions =
| CreateTotp
| CreateTotpSuccess
@@ -59,4 +83,7 @@ export type Actions =
| Regist
| RegistSuccess
| RegistFailure
+ | CheckCodeForMember
+ | CheckCodeForMemberSuccess
+ | CheckCodeForMemberFailure
;
diff --git a/src/packages/settings/member/store/totp/totp.effect.ts b/src/packages/settings/member/store/totp/totp.effect.ts
index 792f8ee..357b832 100644
--- a/src/packages/settings/member/store/totp/totp.effect.ts
+++ b/src/packages/settings/member/store/totp/totp.effect.ts
@@ -26,6 +26,10 @@ import {
RegistSuccess,
RegistFailure,
+ CheckCodeForMember,
+ CheckCodeForMemberSuccess,
+ CheckCodeForMemberFailure,
+
ActionType,
} from './totp.action';
@@ -56,14 +60,6 @@ export class Effects {
return of(new CreateTotpFailure(error));
});
- @Effect({ dispatch: false })
- createTotpSuccess$ = this.actions$
- .ofType(ActionType.CreateTotpSuccess)
- .do(() => {
- // Todo TOTP View Print
- this.router.navigateByUrl(this._returnURL);
- });
-
@Effect()
regist: Observable = this.actions$
.ofType(ActionType.Regist)
@@ -78,4 +74,20 @@ export class Effects {
.catch((error: RESTError) => {
return of(new RegistFailure(error));
});
+
+
+ @Effect()
+ checkCodeForMember: Observable = this.actions$
+ .ofType(ActionType.CheckCodeForMember)
+ .map((action: Regist) => action.payload)
+ .switchMap((payload) => {
+ // this._returnURL = payload.returnURL;
+ return this.memberTotpService.checkCodeForMember(payload.member, payload.code);
+ })
+ .map((result: any) => {
+ return new CheckCodeForMemberSuccess(result);
+ })
+ .catch((error: RESTError) => {
+ return of(new CheckCodeForMemberFailure(error));
+ });
}