bug fixed

This commit is contained in:
richard-loafle 2020-04-01 17:18:28 +09:00
parent 12c7550b03
commit 7a39d2e4aa
9 changed files with 120 additions and 78 deletions

10
package-lock.json generated
View File

@ -2272,8 +2272,9 @@
"dev": true
},
"@ucap/ng-i18n": {
"version": "file:pack/ucap-ng-i18n-0.0.5.tgz",
"integrity": "sha512-P+MUurrVyLeRl4l7b4aLMG3/nPpZ54U1U2VQnAGb7OHNvZG/BJVzZqc2Z+YvnNXTe8PhMqkRfRysOZeu1AGj5A=="
"version": "file:pack/ucap-ng-i18n-0.0.6.tgz",
"integrity": "sha512-0vnoC3tAbXmcnsL1xy5Otswu75ZBht8wrI5Zz1mfSgYT/mnR9QoNkpCHiHfl/ILAJlKD0iBn+BBOrwTIprsJ/Q==",
"dev": true
},
"@ucap/ng-logger": {
"version": "file:pack/ucap-ng-logger-0.0.1.tgz",
@ -2401,9 +2402,8 @@
"dev": true
},
"@ucap/ng-ui-authentication": {
"version": "file:pack/ucap-ng-ui-authentication-0.0.5.tgz",
"integrity": "sha512-NwsISychSVyCxVO3j13jNRtHbZpvKY2pb/WBATGPnkYrhaB4x7a+b4gXhWUCmO5QZoYrb2uBV4K9hXANr2Ergg==",
"dev": true
"version": "file:pack/ucap-ng-ui-authentication-0.0.8.tgz",
"integrity": "sha512-n6pV113DuSD5TV4jAwrY/JJlhcBtNLHEFTTxrQ8QhFIMz9hgbRC6x4R/LF8q9kzx0BWQcgxGdfgY1oN3YoqGtg=="
},
"@ucap/ng-ui-organization": {
"version": "file:pack/ucap-ng-ui-organization-0.0.1.tgz",

View File

@ -144,7 +144,7 @@
"@ucap/ng-api-prompt": "file:pack/ucap-ng-api-prompt-0.0.1.tgz",
"@ucap/ng-api-public": "file:pack/ucap-ng-api-public-0.0.1.tgz",
"@ucap/ng-core": "file:pack/ucap-ng-core-0.0.1.tgz",
"@ucap/ng-i18n": "file:pack/ucap-ng-i18n-0.0.5.tgz",
"@ucap/ng-i18n": "file:pack/ucap-ng-i18n-0.0.6.tgz",
"@ucap/ng-logger": "file:pack/ucap-ng-logger-0.0.1.tgz",
"@ucap/ng-native": "file:pack/ucap-ng-native-0.0.1.tgz",
"@ucap/ng-native-browser": "file:pack/ucap-ng-native-browser-0.0.1.tgz",
@ -170,7 +170,7 @@
"@ucap/ng-store-group": "file:pack/ucap-ng-store-group-0.0.3.tgz",
"@ucap/ng-store-organization": "file:pack/ucap-ng-store-organization-0.0.3.tgz",
"@ucap/ng-ui": "file:pack/ucap-ng-ui-0.0.3.tgz",
"@ucap/ng-ui-authentication": "file:pack/ucap-ng-ui-authentication-0.0.5.tgz",
"@ucap/ng-ui-authentication": "file:pack/ucap-ng-ui-authentication-0.0.8.tgz",
"@ucap/ng-ui-organization": "file:pack/ucap-ng-ui-organization-0.0.1.tgz",
"@ucap/ng-ui-skin-default": "file:pack/ucap-ng-ui-skin-default-0.0.1.tgz",
"@ucap/ng-web-storage": "file:pack/ucap-ng-web-storage-0.0.1.tgz",

View File

@ -1,6 +1,6 @@
{
"name": "@ucap/ng-i18n",
"version": "0.0.5",
"version": "0.0.6",
"publishConfig": {
"registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/"
},

View File

@ -13,6 +13,7 @@ import { StringMap, TOptions } from 'i18next';
import { I18nService } from '../services/i18n.service';
import { UCAP_I18N_NAMESPACE } from '../types/token';
import { ObjectUtil } from '../utils/object.util';
@Pipe({ name: 'ucapI18n', pure: false })
export class I18nPipe implements PipeTransform, OnDestroy {
@ -36,6 +37,13 @@ export class I18nPipe implements PipeTransform, OnDestroy {
key: string | string[],
options?: TOptions<StringMap>
): string {
if (
ObjectUtil.equals(key, this.lastKey) &&
ObjectUtil.equals(options, this.lastOptions)
) {
return this.value;
}
options = options || {};
if (!!this.ns) {

View File

@ -0,0 +1,83 @@
export class ObjectUtil {
static equals(o1: any, o2: any): boolean {
if (o1 === o2) {
return true;
}
if (o1 === null || o2 === null) {
return false;
}
if (o1 !== o1 && o2 !== o2) {
return true; // NaN === NaN
}
const t1 = typeof o1;
const t2 = typeof o2;
let length: number;
let key: any;
let keySet: any;
if (t1 === t2 && t1 === 'object') {
if (Array.isArray(o1)) {
if (!Array.isArray(o2)) {
return false;
}
length = o1.length;
if (length === o2.length) {
for (key = 0; key < length; key++) {
if (!ObjectUtil.equals(o1[key], o2[key])) {
return false;
}
}
return true;
}
} else {
if (Array.isArray(o2)) {
return false;
}
keySet = Object.create(null);
for (key in o1) {
if (o1.hasOwnProperty(key)) {
if (!ObjectUtil.equals(o1[key], o2[key])) {
return false;
}
keySet[key] = true;
}
}
for (key in o2) {
if (!(key in keySet) && typeof o2[key] !== 'undefined') {
return false;
}
}
return true;
}
}
return false;
}
static isDefined(value: any): boolean {
return typeof value !== 'undefined' && value !== null;
}
static isObject(item: any): boolean {
return item && typeof item === 'object' && !Array.isArray(item);
}
static mergeDeep(target: any, source: any): any {
const output = Object.assign({}, target);
if (ObjectUtil.isObject(target) && ObjectUtil.isObject(source)) {
Object.keys(source).forEach((key: any) => {
if (ObjectUtil.isObject(source[key])) {
if (!(key in target)) {
Object.assign(output, { [key]: source[key] });
} else {
output[key] = ObjectUtil.mergeDeep(target[key], source[key]);
}
} else {
Object.assign(output, { [key]: source[key] });
}
});
}
return output;
}
}

View File

@ -1,6 +1,6 @@
{
"name": "@ucap/ng-ui-authentication",
"version": "0.0.5",
"version": "0.0.8",
"publishConfig": {
"registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/"
},

View File

@ -9,6 +9,7 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { MatSelectModule } from '@angular/material/select';
import { UiModule } from '@ucap/ng-ui';
@ -46,6 +47,7 @@ export class AuthenticationUiRootModule {}
MatFormFieldModule,
MatIconModule,
MatInputModule,
MatProgressSpinnerModule,
MatSelectModule,
I18nModule,

View File

@ -3,7 +3,7 @@
<form name="loginForm" [formGroup]="loginForm" novalidate>
<mat-form-field
[style.display]="!!curCompanyCode ? 'none' : 'block'"
[style.display]="!!fixedCompanyCode ? 'none' : 'block'"
class="login-company"
>
<mat-label>{{ 'login.fields.company' | ucapI18n }}</mat-label>
@ -106,36 +106,15 @@
mat-raised-button
class="submit-button bg-accent-dark"
aria-label="LOG IN"
[disabled]="loginForm.invalid || !loginBtnEnable"
[disabled]="loginForm.invalid || disable"
(click)="onClickLogin()"
>
{{ loginBtnText }}
<ng-container *ngIf="!processing">
{{ 'login.labels.doLogin' | ucapI18n }}
</ng-container>
<mat-spinner *ngIf="processing"> </mat-spinner>
</button>
<div
class="remember-forgot-password"
fxLayout="row"
fxLayout.xs="column"
fxLayoutAlign="space-between center"
>
<mat-checkbox
*ngIf="useRememberMe"
class="remember-me"
formControlName="rememberMe"
aria-label="Remember Me"
>
{{ 'login.labels.rememberMe' | ucapI18n }}
</mat-checkbox>
<mat-checkbox
*ngIf="useAutoLogin"
class="auto-login"
formControlName="autoLogin"
aria-label="Auto Login"
>
{{ 'login.labels.autoLogin' | ucapI18n }}
</mat-checkbox>
</div>
</form>
<ng-content select="[ucapAuthenticationLogin='footer']"></ng-content>

View File

@ -25,40 +25,29 @@ import { Company } from '@ucap/api-external';
export class LoginComponent implements OnInit {
@Input()
companyList: Company[];
@Input()
curCompanyCode: string;
@Input()
loginBtnText: string;
@Input()
loginBtnEnable: boolean;
@Input()
notiText: string;
fixedCompanyCode: string;
@Input()
companyCode: string;
@Input()
loginId: string;
@Input()
rememberMe: boolean;
@Input()
autoLogin: boolean;
@Input()
useRememberMe: boolean;
loginId: string;
@Input()
useAutoLogin: boolean;
disable = false;
@Input()
processing = false;
@Output()
login = new EventEmitter<{
companyCode: string;
loginId: string;
loginPw: string;
rememberMe: boolean;
autoLogin: boolean;
notValid: () => void;
}>();
@Output()
notiClick = new EventEmitter();
@ViewChild('loginPw', { static: true }) loginPwElementRef: ElementRef;
@ -75,8 +64,8 @@ export class LoginComponent implements OnInit {
ngOnInit() {
const companyCodeValidators: ValidatorFn[] = [Validators.required];
this.companyCodeFormControl.setValidators(companyCodeValidators);
if (!!this.curCompanyCode) {
this.companyCodeFormControl.setValue(this.curCompanyCode);
if (!!this.fixedCompanyCode) {
this.companyCodeFormControl.setValue(this.fixedCompanyCode);
}
const loginIdValidators: ValidatorFn[] = [Validators.required];
this.loginIdFormControl.setValidators(loginIdValidators);
@ -89,22 +78,9 @@ export class LoginComponent implements OnInit {
this.loginForm = this.formBuilder.group({
companyCodeFormControl: this.companyCodeFormControl,
loginIdFormControl: this.loginIdFormControl,
loginPwFormControl: this.loginPwFormControl,
rememberMe: [false],
autoLogin: [false]
loginPwFormControl: this.loginPwFormControl
});
if (!!this.rememberMe && this.rememberMe) {
this.loginForm.get('rememberMe').setValue(true);
}
if (!!this.autoLogin && this.autoLogin) {
this.loginForm.get('autoLogin').setValue(true);
}
if (!this.loginBtnText || this.loginBtnText.trim().length === 0) {
this.loginBtnText = 'LOGIN';
}
this.changeDetectorRef.detectChanges();
}
@ -113,15 +89,9 @@ export class LoginComponent implements OnInit {
companyCode: this.loginForm.get('companyCodeFormControl').value,
loginId: this.loginForm.get('loginIdFormControl').value,
loginPw: this.loginForm.get('loginPwFormControl').value,
rememberMe: this.loginForm.get('rememberMe').value,
autoLogin: this.loginForm.get('autoLogin').value,
notValid: () => {
this.loginPwElementRef.nativeElement.focus();
}
});
}
onClickNoti(): void {
this.notiClick.emit();
}
}