i18n is working
This commit is contained in:
parent
6d95d26d94
commit
2c1278f31f
|
@ -1,7 +1,17 @@
|
||||||
{
|
{
|
||||||
"accounts": {
|
"accounts": {
|
||||||
|
"instructionsOfLogin": "LOGIN TO YOUR ACCOUNT",
|
||||||
"login": "Login",
|
"login": "Login",
|
||||||
"logout": "Logout",
|
"logout": "Logout",
|
||||||
|
"fieldCompany": "Company",
|
||||||
|
"fieldLoginId": "Login ID",
|
||||||
|
"fieldLoginPw": "Login password",
|
||||||
|
"fieldPassword": "Password",
|
||||||
|
"fieldCurrentPassword": "Current password",
|
||||||
|
"fieldNewPassword": "New password",
|
||||||
|
"fieldNewPasswordConfirm": "New password confirm",
|
||||||
|
"rememberMe": "Remember me",
|
||||||
|
"autoLogin": "Auto login",
|
||||||
"consentOfPrivacy": "Agreement of ",
|
"consentOfPrivacy": "Agreement of ",
|
||||||
"changePassword": "Change password",
|
"changePassword": "Change password",
|
||||||
"resetPassword": "Reset password",
|
"resetPassword": "Reset password",
|
||||||
|
@ -12,6 +22,22 @@
|
||||||
"changedPassword": "Password changed. Please log in again."
|
"changedPassword": "Password changed. Please log in again."
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
|
"requireLoginId": "Login ID is required.",
|
||||||
|
"requireLoginPw": "Login password is required.",
|
||||||
|
"requireCompany": "Company is required.",
|
||||||
|
"requireCurrentPassword": "Current password is required.",
|
||||||
|
"notSameWithCurrentPassword": "Does not match current password",
|
||||||
|
"sameWithCurrentPassword": "Same as current password",
|
||||||
|
"requireNewPassword": "New password is required.",
|
||||||
|
"requireNewPasswordConfirm": "New password confirm is required.",
|
||||||
|
"notSameWithNewPassword": "Does not match new password and new password confirm.",
|
||||||
|
"notContainSpacesForPassword": "Passwords cannot contain spaces",
|
||||||
|
"notContainUseridForPassword": "User ID cannot be included in the password",
|
||||||
|
"notContainPhonenumberForPassword": "Your mobile phone number cannot be included in your password",
|
||||||
|
"notAllowedAlphaNumOver3TimesForPassword": "You can't use numbers or letters over 3 times.",
|
||||||
|
"notAllowedConsecutiveAlphaNumOver3TimesForPassword": "You cannot use consecutive numbers or letters more than 3 times.",
|
||||||
|
"notSatisfiedCombineForPassword": "Combination of two or more kinds of letters, numbers and special characters.",
|
||||||
|
"minLengthCombineForPassword": "Password must be {{lengthOfPassword}} characters if {{countOfCombine}} combination.",
|
||||||
"failToChangePassword": "Failed to change password."
|
"failToChangePassword": "Failed to change password."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -64,6 +90,7 @@
|
||||||
"chat": {
|
"chat": {
|
||||||
"label": "Chat",
|
"label": "Chat",
|
||||||
"room": "Chat room",
|
"room": "Chat room",
|
||||||
|
"send": "Send",
|
||||||
"searchRoomByName": "Search by room name",
|
"searchRoomByName": "Search by room name",
|
||||||
"searchEventByText": "Search by chat",
|
"searchEventByText": "Search by chat",
|
||||||
"nameOfRoom": "Name of chat room",
|
"nameOfRoom": "Name of chat room",
|
||||||
|
@ -212,6 +239,7 @@
|
||||||
"downloadSelected": "Download selected",
|
"downloadSelected": "Download selected",
|
||||||
"openDownloadFolder": "Open download folder",
|
"openDownloadFolder": "Open download folder",
|
||||||
"selectFiles": "Select files",
|
"selectFiles": "Select files",
|
||||||
|
"dropZoneForUpload": "Drop files here to upload.",
|
||||||
"type": {
|
"type": {
|
||||||
"label": "Type of file",
|
"label": "Type of file",
|
||||||
"images": "Images",
|
"images": "Images",
|
||||||
|
@ -229,7 +257,9 @@
|
||||||
"failToSave": "File save failed.",
|
"failToSave": "File save failed.",
|
||||||
"failToSaveSomeOfAll": "Some of file(s) save failed",
|
"failToSaveSomeOfAll": "Some of file(s) save failed",
|
||||||
"failToSpecifyPath": "Specifing of save path failed.",
|
"failToSpecifyPath": "Specifing of save path failed.",
|
||||||
"expired": "This file has expired"
|
"expired": "This file has expired",
|
||||||
|
"noPreview": "This file does not support preview.",
|
||||||
|
"notSupporedType": "File format is not supported."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"clipboard": {
|
"clipboard": {
|
||||||
|
@ -250,10 +280,13 @@
|
||||||
"modify": "Modify",
|
"modify": "Modify",
|
||||||
"remove": "Remove",
|
"remove": "Remove",
|
||||||
"apply": "Apply",
|
"apply": "Apply",
|
||||||
"Minimize window": "창 최소화",
|
"minimizeWindow": "Minimize window",
|
||||||
"Maxmize window": "창 최대화",
|
"maxmizeWindow": "Maxmize window",
|
||||||
"Restore window": "창 이전 크기",
|
"restoreWindow": "Restore window",
|
||||||
"Close window": "창 닫기"
|
"Close window": "Close window",
|
||||||
|
"zoomOut": "Zoom out",
|
||||||
|
"zoomIn": "Zoom in",
|
||||||
|
"zoomReset": "Zoom reset"
|
||||||
},
|
},
|
||||||
"paginator": {
|
"paginator": {
|
||||||
"itemsPerPage": "Items per page",
|
"itemsPerPage": "Items per page",
|
||||||
|
@ -262,10 +295,20 @@
|
||||||
"firstPage": "First page",
|
"firstPage": "First page",
|
||||||
"lastPage": "Last page"
|
"lastPage": "Last page"
|
||||||
},
|
},
|
||||||
|
"player": {
|
||||||
|
"play": "Play",
|
||||||
|
"stop": "Stop"
|
||||||
|
},
|
||||||
"pronoun": {
|
"pronoun": {
|
||||||
"me": "Me",
|
"me": "Me",
|
||||||
"all": "All"
|
"all": "All"
|
||||||
},
|
},
|
||||||
|
"translations": {
|
||||||
|
"targetLanguage": "Traget language",
|
||||||
|
"noTranslation": "No translation",
|
||||||
|
"simpleView": "Simple View",
|
||||||
|
"preview": "Preview"
|
||||||
|
},
|
||||||
"timezone": {
|
"timezone": {
|
||||||
"Africa/Abidjan": "Africa/Abidjan",
|
"Africa/Abidjan": "Africa/Abidjan",
|
||||||
"Africa/Accra": "Africa/Accra",
|
"Africa/Accra": "Africa/Accra",
|
||||||
|
|
|
@ -1,7 +1,17 @@
|
||||||
{
|
{
|
||||||
"accounts": {
|
"accounts": {
|
||||||
|
"instructionsOfLogin": "계정에 로그인 하세요.",
|
||||||
"login": "로그인",
|
"login": "로그인",
|
||||||
"logout": "로그아웃",
|
"logout": "로그아웃",
|
||||||
|
"fieldCompany": "회사",
|
||||||
|
"fieldLoginId": "로그인 아이디",
|
||||||
|
"fieldLoginPw": "로그인 비밀번호",
|
||||||
|
"fieldPassword": "비밀번호",
|
||||||
|
"fieldCurrentPassword": "현재 비밀번호",
|
||||||
|
"fieldNewPassword": "신규 비밀번호",
|
||||||
|
"fieldNewPasswordConfirm": "신규 비밀번호 확인",
|
||||||
|
"rememberMe": "아이디 저장",
|
||||||
|
"autoLogin": "자동 로그인",
|
||||||
"consentOfPrivacy": "개인정보 동의",
|
"consentOfPrivacy": "개인정보 동의",
|
||||||
"changePassword": "비밀번호 변경",
|
"changePassword": "비밀번호 변경",
|
||||||
"resetPassword": "비밀번호 초기화",
|
"resetPassword": "비밀번호 초기화",
|
||||||
|
@ -12,6 +22,22 @@
|
||||||
"changedPassword": "비밀번호가 변경되었습니다. 다시 로그인하여 주십시오"
|
"changedPassword": "비밀번호가 변경되었습니다. 다시 로그인하여 주십시오"
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
|
"requireLoginId": "로그인 아이디를 입력해 주세요.",
|
||||||
|
"requireLoginPw": "로그인 비밀번호를 입력해 주세요.",
|
||||||
|
"requireCompany": "회사를 입력해 주세요.",
|
||||||
|
"requireCurrentPassword": "현재 비밀번호를 입력해 주세요",
|
||||||
|
"notSameWithCurrentPassword": "현재 비밀번호와 일치하지 않습니다",
|
||||||
|
"sameWithCurrentPassword": "현재 비밀번호와 동일합니다",
|
||||||
|
"requireNewPassword": "신규 비밀번호를 입력해 주세요",
|
||||||
|
"requireNewPasswordConfirm": "신규 비밀번호 확인을 입력해 주세요",
|
||||||
|
"notSameWithNewPassword": "신규 비밀번호와 신규 비밀번호 확인이 다릅니다",
|
||||||
|
"notContainSpacesForPassword": "비밀번호에는 공백을 입력할 수 없습니다",
|
||||||
|
"notContainUseridForPassword": "사용자 ID를 비밀번호에 포함할 수 없습니다",
|
||||||
|
"notContainPhonenumberForPassword": "사용자 휴대폰번호를 비밀번호에 포함할 수 없습니다",
|
||||||
|
"notAllowedAlphaNumOver3TimesForPassword": "숫자나 문자를 3번이상 반복적으로 사용할 수 없습니다",
|
||||||
|
"notAllowedConsecutiveAlphaNumOver3TimesForPassword": "연속되는 숫자나 문자를 3번이상 사용할 수 없습니다",
|
||||||
|
"notSatisfiedCombineForPassword": "문자, 숫자, 특수문자 중 2종류 이상 조합을 해야 합니다",
|
||||||
|
"minLengthCombineForPassword": "비밀번호는 {{countOfCombine}}가지가 조합된 경우 {{lengthOfPassword}}자를 넘어야 합니다",
|
||||||
"failToChangePassword": "비밀번호 변경에 실패하였습니다."
|
"failToChangePassword": "비밀번호 변경에 실패하였습니다."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -64,6 +90,7 @@
|
||||||
"chat": {
|
"chat": {
|
||||||
"label": "대화",
|
"label": "대화",
|
||||||
"room": "대화방",
|
"room": "대화방",
|
||||||
|
"send": "보내기",
|
||||||
"searchRoomByName": "대화방 이름 검색",
|
"searchRoomByName": "대화방 이름 검색",
|
||||||
"searchEventByText": "대화 내용 검색",
|
"searchEventByText": "대화 내용 검색",
|
||||||
"nameOfRoom": "대화방 이름",
|
"nameOfRoom": "대화방 이름",
|
||||||
|
@ -212,6 +239,7 @@
|
||||||
"downloadSelected": "선택된 파일 다운로드",
|
"downloadSelected": "선택된 파일 다운로드",
|
||||||
"openDownloadFolder": "다운로드 폴더 열기",
|
"openDownloadFolder": "다운로드 폴더 열기",
|
||||||
"selectFiles": "파일을 선택하세요",
|
"selectFiles": "파일을 선택하세요",
|
||||||
|
"dropZoneForUpload": "여기에 파일을 Drop하시면 업로드 됩니다.",
|
||||||
"type": {
|
"type": {
|
||||||
"label": "파일 종류",
|
"label": "파일 종류",
|
||||||
"images": "이미지",
|
"images": "이미지",
|
||||||
|
@ -229,7 +257,9 @@
|
||||||
"failToSave": "파일 저장에 실패하였습니다.",
|
"failToSave": "파일 저장에 실패하였습니다.",
|
||||||
"failToSaveSomeOfAll": "파일 저장 중 일부 파일이 실패하였습니다.",
|
"failToSaveSomeOfAll": "파일 저장 중 일부 파일이 실패하였습니다.",
|
||||||
"failToSpecifyPath": "저장경로 지정에 실패하였습니다.",
|
"failToSpecifyPath": "저장경로 지정에 실패하였습니다.",
|
||||||
"expired": "기간이 만료된 파일입니다"
|
"expired": "기간이 만료된 파일입니다",
|
||||||
|
"noPreview": "미리보기를 지원하지 않는 파일입니다.",
|
||||||
|
"notSupporedType": "지원하지 않는 파일형식입니다."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"clipboard": {
|
"clipboard": {
|
||||||
|
@ -253,7 +283,10 @@
|
||||||
"minimizeWindow": "창 최소화",
|
"minimizeWindow": "창 최소화",
|
||||||
"maxmizeWindow": "창 최대화",
|
"maxmizeWindow": "창 최대화",
|
||||||
"restoreWindow": "창 이전 크기",
|
"restoreWindow": "창 이전 크기",
|
||||||
"closeWindow": "창 닫기"
|
"closeWindow": "창 닫기",
|
||||||
|
"zoomOut": "축소",
|
||||||
|
"zoomIn": "확대",
|
||||||
|
"zoomReset": "원본 비율"
|
||||||
},
|
},
|
||||||
"paginator": {
|
"paginator": {
|
||||||
"itemsPerPage": "페이지별 갯수",
|
"itemsPerPage": "페이지별 갯수",
|
||||||
|
@ -262,10 +295,20 @@
|
||||||
"firstPage": "처음 페이지",
|
"firstPage": "처음 페이지",
|
||||||
"lastPage": "마지막 페이지"
|
"lastPage": "마지막 페이지"
|
||||||
},
|
},
|
||||||
|
"player": {
|
||||||
|
"play": "재생",
|
||||||
|
"stop": "멈춤"
|
||||||
|
},
|
||||||
"pronoun": {
|
"pronoun": {
|
||||||
"me": "나",
|
"me": "나",
|
||||||
"all": "전체"
|
"all": "전체"
|
||||||
},
|
},
|
||||||
|
"translations": {
|
||||||
|
"targetLanguage": "대상 언어",
|
||||||
|
"noTranslation": "번역 없음",
|
||||||
|
"simpleView": "간략 보기",
|
||||||
|
"preview": "미리 보기"
|
||||||
|
},
|
||||||
"timezone": {
|
"timezone": {
|
||||||
"Africa/Abidjan": "아프리카/아비 장",
|
"Africa/Abidjan": "아프리카/아비 장",
|
||||||
"Africa/Accra": "아프리카/아크라",
|
"Africa/Accra": "아프리카/아크라",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="change-password-form">
|
<div class="change-password-form">
|
||||||
<form name="changePasswordForm" [formGroup]="changePasswordForm" novalidate>
|
<form name="changePasswordForm" [formGroup]="changePasswordForm" novalidate>
|
||||||
<mat-form-field>
|
<mat-form-field>
|
||||||
<mat-label>현재 패스워드</mat-label>
|
<mat-label>{{ 'accounts.fieldCurrentPassword' | translate }}</mat-label>
|
||||||
<input
|
<input
|
||||||
matInput
|
matInput
|
||||||
type="password"
|
type="password"
|
||||||
|
@ -9,11 +9,13 @@
|
||||||
/>
|
/>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
<mat-form-field>
|
<mat-form-field>
|
||||||
<mat-label>신규 패스워드</mat-label>
|
<mat-label>{{ 'accounts.fieldNewPassword' | translate }}</mat-label>
|
||||||
<input matInput type="password" [formControl]="newLoginPwFormControl" />
|
<input matInput type="password" [formControl]="newLoginPwFormControl" />
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
<mat-form-field>
|
<mat-form-field>
|
||||||
<mat-label>신규 패스워드 확인</mat-label>
|
<mat-label>{{
|
||||||
|
'accounts.fieldNewPasswordConfirm' | translate
|
||||||
|
}}</mat-label>
|
||||||
<input
|
<input
|
||||||
matInput
|
matInput
|
||||||
type="password"
|
type="password"
|
||||||
|
@ -28,7 +30,7 @@
|
||||||
currentLoginPwFormControl.hasError('required')
|
currentLoginPwFormControl.hasError('required')
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
현재 비밀번호를 입력해 주세요
|
{{ 'accounts.errors.requireCurrentPassword' | translate }}
|
||||||
</mat-error>
|
</mat-error>
|
||||||
<mat-error
|
<mat-error
|
||||||
*ngIf="
|
*ngIf="
|
||||||
|
@ -36,7 +38,7 @@
|
||||||
currentLoginPwFormControl.hasError('ucapPasswordSame')
|
currentLoginPwFormControl.hasError('ucapPasswordSame')
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
현재 비밀번호와 일치하지 않습니다
|
{{ 'accounts.errors.notSameWithCurrentPassword' | translate }}
|
||||||
</mat-error>
|
</mat-error>
|
||||||
|
|
||||||
<mat-error
|
<mat-error
|
||||||
|
@ -45,7 +47,7 @@
|
||||||
newLoginPwFormControl.hasError('required')
|
newLoginPwFormControl.hasError('required')
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
신규 비밀번호를 입력해 주세요
|
{{ 'accounts.errors.requireNewPassword' | translate }}
|
||||||
</mat-error>
|
</mat-error>
|
||||||
<mat-error
|
<mat-error
|
||||||
*ngIf="
|
*ngIf="
|
||||||
|
@ -53,7 +55,7 @@
|
||||||
newLoginPwFormControl.hasError('ucapNotSameWith')
|
newLoginPwFormControl.hasError('ucapNotSameWith')
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
현재 비밀번호와 동일합니다
|
{{ 'accounts.errors.sameWithCurrentPassword' | translate }}
|
||||||
</mat-error>
|
</mat-error>
|
||||||
<mat-error
|
<mat-error
|
||||||
*ngIf="
|
*ngIf="
|
||||||
|
@ -67,46 +69,60 @@
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<ng-container *ngSwitchCase="PasswordValidationResult.IncludeSpace">
|
<ng-container *ngSwitchCase="PasswordValidationResult.IncludeSpace">
|
||||||
비밀번호에는 공백을 입력할 수 없습니다
|
{{ 'accounts.errors.notContainSpacesForPassword' | translate }}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngSwitchCase="PasswordValidationResult.IncludeUserId">
|
<ng-container *ngSwitchCase="PasswordValidationResult.IncludeUserId">
|
||||||
사용자 ID를 비밀번호에 포함할 수 없습니다
|
{{ 'accounts.errors.notContainUseridForPassword' | translate }}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
*ngSwitchCase="PasswordValidationResult.IncludePhoneNumber"
|
*ngSwitchCase="PasswordValidationResult.IncludePhoneNumber"
|
||||||
>
|
>
|
||||||
사용자 휴대폰번호를 비밀번호에 포함할 수 없습니다
|
{{ 'accounts.errors.notContainPhonenumberForPassword' | translate }}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
*ngSwitchCase="PasswordValidationResult.IncludeRepeated"
|
*ngSwitchCase="PasswordValidationResult.IncludeRepeated"
|
||||||
>
|
>
|
||||||
숫자나 문자를 3번이상 반복적으로 사용할 수 없습니다
|
{{
|
||||||
|
'accounts.errors.notAllowedAlphaNumOver3TimesForPassword'
|
||||||
|
| translate
|
||||||
|
}}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
*ngSwitchCase="PasswordValidationResult.IncludeIncrements"
|
*ngSwitchCase="PasswordValidationResult.IncludeIncrements"
|
||||||
>
|
>
|
||||||
연속되는 숫자나 문자를 3번이상 사용할 수 없습니다
|
{{
|
||||||
|
'accounts.errors.notAllowedConsecutiveAlphaNumOver3TimesForPassword'
|
||||||
|
| translate
|
||||||
|
}}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
*ngSwitchCase="PasswordValidationResult.IncludeDecrements"
|
*ngSwitchCase="PasswordValidationResult.IncludeDecrements"
|
||||||
>
|
>
|
||||||
연속되는 숫자나 문자를 3번이상 사용할 수 없습니다
|
{{
|
||||||
|
'accounts.errors.notAllowedConsecutiveAlphaNumOver3TimesForPassword'
|
||||||
|
| translate
|
||||||
|
}}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
*ngSwitchCase="PasswordValidationResult.LackOfCombination"
|
*ngSwitchCase="PasswordValidationResult.LackOfCombination"
|
||||||
>
|
>
|
||||||
문자, 숫자, 특수문자 중 2종류 이상 조합을 해야 합니다
|
{{ 'accounts.errors.notSatisfiedCombineForPassword' | translate }}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
*ngSwitchCase="PasswordValidationResult.TooShortCombinationLength"
|
*ngSwitchCase="PasswordValidationResult.TooShortCombinationLength"
|
||||||
>
|
>
|
||||||
비밀번호는{{
|
{{
|
||||||
newLoginPwFormControl.getError('ucapPassword').result.extra
|
'accounts.errors.minLengthCombineForPassword'
|
||||||
.combinationCount
|
| translate
|
||||||
}}가지가 조합된 경우{{
|
: {
|
||||||
newLoginPwFormControl.getError('ucapPassword').result.extra
|
countOfCombine: newLoginPwFormControl.getError(
|
||||||
.minPwLen
|
'ucapPassword'
|
||||||
}}자를 넘어야 합니다
|
).result.extra.combinationCount,
|
||||||
|
lengthOfPassword: newLoginPwFormControl.getError(
|
||||||
|
'ucapPassword'
|
||||||
|
).result.extra.minPwLen
|
||||||
|
}
|
||||||
|
}}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</mat-error>
|
</mat-error>
|
||||||
|
@ -116,7 +132,7 @@
|
||||||
newConfirmLoginPwFormControl.hasError('required')
|
newConfirmLoginPwFormControl.hasError('required')
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
신규 비밀번호 확인을 입력해 주세요
|
{{ 'accounts.errors.requireNewPassword' | translate }}
|
||||||
</mat-error>
|
</mat-error>
|
||||||
<mat-error
|
<mat-error
|
||||||
*ngIf="
|
*ngIf="
|
||||||
|
@ -124,7 +140,7 @@
|
||||||
newConfirmLoginPwFormControl.hasError('ucapSameWith')
|
newConfirmLoginPwFormControl.hasError('ucapSameWith')
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
신규 비밀번호와 신규 비밀번호 확인이 다릅니다
|
{{ 'accounts.errors.notSameWithNewPassword' | translate }}
|
||||||
</mat-error>
|
</mat-error>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -135,7 +151,7 @@
|
||||||
[disabled]="changePasswordForm.invalid"
|
[disabled]="changePasswordForm.invalid"
|
||||||
(click)="onClickChangePassword()"
|
(click)="onClickChangePassword()"
|
||||||
>
|
>
|
||||||
패스워드 변경
|
{{ 'accounts.changePassword' | translate }}
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
class="mat-title"
|
class="mat-title"
|
||||||
style="background-image: url(./assets/images/logo/bg_login_w160.png);"
|
style="background-image: url(./assets/images/logo/bg_login_w160.png);"
|
||||||
>
|
>
|
||||||
LOGIN TO YOUR ACCOUNT
|
{{ 'accounts.instructionsOfLogin' | translate }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form name="loginForm" [formGroup]="loginForm" novalidate>
|
<form name="loginForm" [formGroup]="loginForm" novalidate>
|
||||||
<mat-form-field [style.display]="!!curCompanyCode ? 'none' : 'block'">
|
<mat-form-field [style.display]="!!curCompanyCode ? 'none' : 'block'">
|
||||||
<mat-label>Company</mat-label>
|
<mat-label>{{ 'accounts.fieldCompany' | translate }}</mat-label>
|
||||||
<mat-select formControlName="companyCode" required>
|
<mat-select formControlName="companyCode" required>
|
||||||
<mat-option
|
<mat-option
|
||||||
*ngFor="let company of companyList"
|
*ngFor="let company of companyList"
|
||||||
|
@ -17,26 +17,23 @@
|
||||||
</mat-option>
|
</mat-option>
|
||||||
</mat-select>
|
</mat-select>
|
||||||
<mat-error *ngIf="loginForm.get('companyCode').hasError('required')">
|
<mat-error *ngIf="loginForm.get('companyCode').hasError('required')">
|
||||||
Company is required
|
{{ 'accounts.errors.requireCompany' | translate }}
|
||||||
</mat-error>
|
</mat-error>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
|
||||||
<mat-form-field>
|
<mat-form-field>
|
||||||
<mat-label>Login ID</mat-label>
|
<mat-label>{{ 'accounts.fieldLoginId' | translate }}</mat-label>
|
||||||
<input matInput formControlName="loginId" />
|
<input matInput formControlName="loginId" />
|
||||||
<mat-error *ngIf="loginForm.get('loginId').hasError('required')">
|
<mat-error *ngIf="loginForm.get('loginId').hasError('required')">
|
||||||
Login ID is required
|
{{ 'accounts.errors.requireLoginId' | translate }}
|
||||||
</mat-error>
|
|
||||||
<mat-error *ngIf="!loginForm.get('loginId').hasError('required')">
|
|
||||||
Please enter a valid login id
|
|
||||||
</mat-error>
|
</mat-error>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
|
||||||
<mat-form-field>
|
<mat-form-field>
|
||||||
<mat-label>Password</mat-label>
|
<mat-label>{{ 'accounts.fieldLoginPw' | translate }}</mat-label>
|
||||||
<input matInput type="password" formControlName="loginPw" #loginPw />
|
<input matInput type="password" formControlName="loginPw" #loginPw />
|
||||||
<mat-error>
|
<mat-error>
|
||||||
Password is required
|
{{ 'accounts.errors.requireLoginPw' | translate }}
|
||||||
</mat-error>
|
</mat-error>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
|
|
||||||
|
@ -62,7 +59,7 @@
|
||||||
formControlName="rememberMe"
|
formControlName="rememberMe"
|
||||||
aria-label="Remember Me"
|
aria-label="Remember Me"
|
||||||
>
|
>
|
||||||
아이디 저장
|
{{ 'accounts.rememberMe' | translate }}
|
||||||
</mat-checkbox>
|
</mat-checkbox>
|
||||||
|
|
||||||
<mat-checkbox
|
<mat-checkbox
|
||||||
|
@ -71,7 +68,7 @@
|
||||||
formControlName="autoLogin"
|
formControlName="autoLogin"
|
||||||
aria-label="Auto Login"
|
aria-label="Auto Login"
|
||||||
>
|
>
|
||||||
자동 로그인
|
{{ 'accounts.autoLogin' | translate }}
|
||||||
</mat-checkbox>
|
</mat-checkbox>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -15,6 +15,7 @@ import { ChangePasswordComponent } from './components/change-password.component'
|
||||||
import { LoginComponent } from './components/login.component';
|
import { LoginComponent } from './components/login.component';
|
||||||
|
|
||||||
import { AccountService } from './services/account.service';
|
import { AccountService } from './services/account.service';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
|
||||||
const COMPONENTS = [ChangePasswordComponent, LoginComponent];
|
const COMPONENTS = [ChangePasswordComponent, LoginComponent];
|
||||||
const SERVICES = [AccountService];
|
const SERVICES = [AccountService];
|
||||||
|
@ -31,7 +32,9 @@ const SERVICES = [AccountService];
|
||||||
MatFormFieldModule,
|
MatFormFieldModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatInputModule,
|
MatInputModule,
|
||||||
MatSelectModule
|
MatSelectModule,
|
||||||
|
|
||||||
|
TranslateModule
|
||||||
],
|
],
|
||||||
exports: [...COMPONENTS],
|
exports: [...COMPONENTS],
|
||||||
declarations: [...COMPONENTS]
|
declarations: [...COMPONENTS]
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="date">
|
<div class="date">
|
||||||
<!-- {{ roomInfo.finalEventDate | dateToStringChatList }}
|
|
||||||
.. -->
|
|
||||||
{{ roomInfo.finalEventDate | ucapDate: 'C' }}
|
{{ roomInfo.finalEventDate | ucapDate: 'C' }}
|
||||||
</div>
|
</div>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
|
@ -3,11 +3,20 @@
|
||||||
<div fxLayout="row" class="file-upload-info">
|
<div fxLayout="row" class="file-upload-info">
|
||||||
<!--<mat-icon>image</mat-icon>-->
|
<!--<mat-icon>image</mat-icon>-->
|
||||||
<!--파일이미지 svg-->
|
<!--파일이미지 svg-->
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none"
|
<svg
|
||||||
stroke="currentColor" stroke-width="1.5" stroke-linecap="butt" stroke-linejoin="round">
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="16"
|
||||||
|
height="16"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke-linecap="butt"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
>
|
||||||
<path
|
<path
|
||||||
d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48">
|
d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"
|
||||||
</path>
|
></path>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
<div class="file-upload-name">{{ fileUploadItem.file.name }}</div>
|
<div class="file-upload-name">{{ fileUploadItem.file.name }}</div>
|
||||||
|
@ -17,13 +26,16 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div fxLayout="row" class="file-upload-progress">
|
<div fxLayout="row" class="file-upload-progress">
|
||||||
<mat-progress-bar mode="determinate" [value]="fileUploadItem.uploadingProgress$ | async">
|
<mat-progress-bar
|
||||||
|
mode="determinate"
|
||||||
|
[value]="fileUploadItem.uploadingProgress$ | async"
|
||||||
|
>
|
||||||
</mat-progress-bar>
|
</mat-progress-bar>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="uploadItems" fxLayout="column">
|
<div *ngIf="uploadItems" fxLayout="column">
|
||||||
<div>여기에 파일을 Drop하시면 업로드 됩니다.</div>
|
<div>{{ 'common.file.dropZoneForUpload' | translate }}</div>
|
||||||
<div></div>
|
<div></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-binary-viewer-action"
|
class="ucap-binary-viewer-action"
|
||||||
matTooltip="다운로드"
|
matTooltip="{{ 'common.file.download' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
(click)="onClickDownload()"
|
(click)="onClickDownload()"
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="guide-msg">
|
<div class="guide-msg">
|
||||||
미리보기를 지원하지 않는 파일입니다.
|
{{ 'common.file.errors.noPreview' | translate }}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
|
@ -101,7 +101,7 @@
|
||||||
aria-label=""
|
aria-label=""
|
||||||
(click)="onClickDownload()"
|
(click)="onClickDownload()"
|
||||||
>
|
>
|
||||||
Download
|
{{ 'common.file.download' | translate }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-image-viewer-action"
|
class="ucap-image-viewer-action"
|
||||||
matTooltip="이미지 크기 재설정"
|
matTooltip="{{ 'common.messages.zoomReset' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
>
|
>
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-image-viewer-action"
|
class="ucap-image-viewer-action"
|
||||||
matTooltip="축소"
|
matTooltip="{{ 'common.messages.zoomOut' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
>
|
>
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-image-viewer-action"
|
class="ucap-image-viewer-action"
|
||||||
matTooltip="확대"
|
matTooltip="{{ 'common.messages.zoomIn' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
>
|
>
|
||||||
|
@ -97,7 +97,7 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-image-viewer-action"
|
class="ucap-image-viewer-action"
|
||||||
matTooltip="다운로드"
|
matTooltip="{{ 'common.file.download' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
(click)="onClickDownload()"
|
(click)="onClickDownload()"
|
||||||
|
@ -124,7 +124,7 @@
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
color="warn"
|
color="warn"
|
||||||
class="ucap-image-viewer-action btn-close"
|
class="ucap-image-viewer-action btn-close"
|
||||||
matTooltip="뷰어닫기"
|
matTooltip="{{ 'common.messages.close' | translate }}"
|
||||||
(click)="onClickClose()"
|
(click)="onClickClose()"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-image-viewer-action"
|
class="ucap-image-viewer-action"
|
||||||
matTooltip="다운로드"
|
matTooltip="{{ 'common.file.download' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
(click)="onClickDownload()"
|
(click)="onClickDownload()"
|
||||||
|
@ -33,6 +33,7 @@
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
color="warn"
|
color="warn"
|
||||||
class="ucap-image-viewer-action btn-close"
|
class="ucap-image-viewer-action btn-close"
|
||||||
|
matTooltip="{{ 'common.messages.close' | translate }}"
|
||||||
(click)="onClickClose()"
|
(click)="onClickClose()"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
@ -125,7 +126,9 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-sound-viewer-action"
|
class="ucap-sound-viewer-action"
|
||||||
[matTooltip]="playing ? '멈춤' : '재생'"
|
matTooltip="{{
|
||||||
|
(playing ? 'common.player.stop' : 'common.player.play') | translate
|
||||||
|
}}"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
(click)="onClickPlayOrPause()"
|
(click)="onClickPlayOrPause()"
|
||||||
>
|
>
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-video-viewer-action"
|
class="ucap-video-viewer-action"
|
||||||
matTooltip="다운로드"
|
matTooltip="{{ 'common.file.download' | translate }}"
|
||||||
matTooltipPosition="below"
|
matTooltipPosition="below"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
(click)="onClickDownload()"
|
(click)="onClickDownload()"
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
color="warn"
|
color="warn"
|
||||||
class="ucap-image-viewer-action btn-close"
|
class="ucap-image-viewer-action btn-close"
|
||||||
matTooltip="뷰어닫기"
|
matTooltip="{{ 'common.messages.close' | translate }}"
|
||||||
(click)="onClickClose()"
|
(click)="onClickClose()"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
@ -130,7 +130,9 @@
|
||||||
<button
|
<button
|
||||||
mat-icon-button
|
mat-icon-button
|
||||||
class="ucap-video-viewer-action"
|
class="ucap-video-viewer-action"
|
||||||
[matTooltip]="playing ? '멈춤' : '재생'"
|
matTooltip="{{
|
||||||
|
(playing ? 'common.player.stop' : 'common.player.play') | translate
|
||||||
|
}}"
|
||||||
aria-label=""
|
aria-label=""
|
||||||
(click)="onClickPlayOrPause()"
|
(click)="onClickPlayOrPause()"
|
||||||
>
|
>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
mat-stroked-button
|
mat-stroked-button
|
||||||
(click)="onClickSendTranslationMessage(translationPreviewInfo)"
|
(click)="onClickSendTranslationMessage(translationPreviewInfo)"
|
||||||
>
|
>
|
||||||
Send
|
{{ 'chat.send' | translate }}
|
||||||
</button>
|
</button>
|
||||||
<span class="btn-close">
|
<span class="btn-close">
|
||||||
<button
|
<button
|
||||||
|
@ -32,12 +32,16 @@
|
||||||
<div>
|
<div>
|
||||||
<form name="translationForm" [formGroup]="translationForm">
|
<form name="translationForm" [formGroup]="translationForm">
|
||||||
<mat-form-field>
|
<mat-form-field>
|
||||||
<mat-label>Dest Type</mat-label>
|
<mat-label>{{
|
||||||
|
'common.translations.targetLanguage' | translate
|
||||||
|
}}</mat-label>
|
||||||
<mat-select
|
<mat-select
|
||||||
formControlName="destType"
|
formControlName="destType"
|
||||||
(selectionChange)="onChangeSelection($event)"
|
(selectionChange)="onChangeSelection($event)"
|
||||||
>
|
>
|
||||||
<mat-option value="">번역없음</mat-option>
|
<mat-option value="">{{
|
||||||
|
'common.translations.noTranslation' | translate
|
||||||
|
}}</mat-option>
|
||||||
<mat-option *ngFor="let dest of translationDestList" [value]="dest.key"
|
<mat-option *ngFor="let dest of translationDestList" [value]="dest.key"
|
||||||
>{{ dest.text }}
|
>{{ dest.text }}
|
||||||
</mat-option>
|
</mat-option>
|
||||||
|
@ -47,13 +51,13 @@
|
||||||
labelPosition="before"
|
labelPosition="before"
|
||||||
[checked]="simpleView"
|
[checked]="simpleView"
|
||||||
(change)="onChangToggleSimpleview($event)"
|
(change)="onChangToggleSimpleview($event)"
|
||||||
>Simple View</mat-slide-toggle
|
>{{ 'common.translations.simpleView' | translate }}</mat-slide-toggle
|
||||||
>
|
>
|
||||||
<mat-slide-toggle
|
<mat-slide-toggle
|
||||||
labelPosition="before"
|
labelPosition="before"
|
||||||
[checked]="preView"
|
[checked]="preView"
|
||||||
(change)="onChangTogglePreview($event)"
|
(change)="onChangTogglePreview($event)"
|
||||||
>Preview</mat-slide-toggle
|
>{{ 'common.translations.preview' | translate }}</mat-slide-toggle
|
||||||
>
|
>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
<mat-card-actions class="button-farm flex-row">
|
<mat-card-actions class="button-farm flex-row">
|
||||||
<button mat-stroked-button (click)="onClickConfirm()" class="mat-primary">
|
<button mat-stroked-button (click)="onClickConfirm()" class="mat-primary">
|
||||||
Confirm
|
{{ 'common.messages.confirm' | translate }}
|
||||||
</button>
|
</button>
|
||||||
</mat-card-actions>
|
</mat-card-actions>
|
||||||
</mat-card>
|
</mat-card>
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
<mat-card class="confirm-card mat-elevation-z">
|
<mat-card class="confirm-card mat-elevation-z">
|
||||||
<mat-card-header cdkDrag cdkDragRootElement=".cdk-overlay-pane" cdkDragHandle class="card-header">
|
<mat-card-header
|
||||||
<mat-card-title >{{ data.title }}</mat-card-title>
|
cdkDrag
|
||||||
|
cdkDragRootElement=".cdk-overlay-pane"
|
||||||
|
cdkDragHandle
|
||||||
|
class="card-header"
|
||||||
|
>
|
||||||
|
<mat-card-title>{{ data.title }}</mat-card-title>
|
||||||
<!-- <mat-card-subtitle>Confirm</mat-card-subtitle> -->
|
<!-- <mat-card-subtitle>Confirm</mat-card-subtitle> -->
|
||||||
</mat-card-header>
|
</mat-card-header>
|
||||||
<mat-card-content>
|
<mat-card-content>
|
||||||
|
@ -14,10 +19,10 @@
|
||||||
(click)="onClickChoice(false)"
|
(click)="onClickChoice(false)"
|
||||||
class="mat-primary"
|
class="mat-primary"
|
||||||
>
|
>
|
||||||
No
|
{{ 'common.messages.no' | translate }}
|
||||||
</button>
|
</button>
|
||||||
<button mat-flat-button (click)="onClickChoice(true)" class="mat-primary">
|
<button mat-flat-button (click)="onClickChoice(true)" class="mat-primary">
|
||||||
Yes
|
{{ 'common.messages.yes' | translate }}
|
||||||
</button>
|
</button>
|
||||||
</mat-card-actions>
|
</mat-card-actions>
|
||||||
</mat-card>
|
</mat-card>
|
||||||
|
|
|
@ -32,7 +32,7 @@ export class ClickDebounceDirective implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
@HostListener('click', ['$event'])
|
@HostListener('click', ['$event'])
|
||||||
clickEvent(event) {
|
clickEvent(event: Event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
this.clicks.next(event);
|
this.clicks.next(event);
|
||||||
|
|
|
@ -19,6 +19,7 @@ import {
|
||||||
AlertDialogResult,
|
AlertDialogResult,
|
||||||
AlertDialogData
|
AlertDialogData
|
||||||
} from '../dialogs/alert.dialog.component';
|
} from '../dialogs/alert.dialog.component';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
selector: 'input[ucapFileUploadFor], div[ucapFileUploadFor]'
|
selector: 'input[ucapFileUploadFor], div[ucapFileUploadFor]'
|
||||||
|
@ -45,6 +46,7 @@ export class FileUploadForDirective implements AfterViewInit {
|
||||||
private commonApiService: CommonApiService,
|
private commonApiService: CommonApiService,
|
||||||
private elementRef: ElementRef,
|
private elementRef: ElementRef,
|
||||||
private logger: NGXLogger,
|
private logger: NGXLogger,
|
||||||
|
private translateService: TranslateService,
|
||||||
private dialogService: DialogService
|
private dialogService: DialogService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
@ -126,7 +128,9 @@ export class FileUploadForDirective implements AfterViewInit {
|
||||||
>(AlertDialogComponent, {
|
>(AlertDialogComponent, {
|
||||||
data: {
|
data: {
|
||||||
title: 'Alert',
|
title: 'Alert',
|
||||||
html: `지원하지 않는 파일형식입니다.${
|
html: `${this.translateService.instant(
|
||||||
|
'common.file.errors.notSupporedType'
|
||||||
|
)} ${
|
||||||
checkExt.reject.length > 0
|
checkExt.reject.length > 0
|
||||||
? '<br/>(' + checkExt.reject.join(',') + ')'
|
? '<br/>(' + checkExt.reject.join(',') + ')'
|
||||||
: ''
|
: ''
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
import { Pipe, PipeTransform } from '@angular/core';
|
|
||||||
import { StringUtil } from '../utils/string.util';
|
|
||||||
import moment from 'moment';
|
|
||||||
|
|
||||||
@Pipe({
|
|
||||||
name: 'dateToStringChatList'
|
|
||||||
})
|
|
||||||
export class DateToStringForChatRoomListPipe implements PipeTransform {
|
|
||||||
transform(value: any): string {
|
|
||||||
const curDate = new Date();
|
|
||||||
const yesterDate = new Date(curDate.getTime() - 1 * 24 * 60 * 60 * 1000);
|
|
||||||
let date: Date;
|
|
||||||
if (typeof value === 'string') {
|
|
||||||
date = moment(value.toString()).toDate();
|
|
||||||
} else if (value instanceof Date) {
|
|
||||||
date = value;
|
|
||||||
} else {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
curDate.getFullYear() === date.getFullYear() &&
|
|
||||||
curDate.getMonth() === date.getMonth() &&
|
|
||||||
curDate.getDate() === date.getDate()
|
|
||||||
) {
|
|
||||||
// 당일
|
|
||||||
return StringUtil.dateFormat(date, 'a/p HH:mm');
|
|
||||||
} else if (
|
|
||||||
yesterDate.getFullYear() === date.getFullYear() &&
|
|
||||||
yesterDate.getMonth() === date.getMonth() &&
|
|
||||||
yesterDate.getDate() === date.getDate()
|
|
||||||
) {
|
|
||||||
// 어제
|
|
||||||
return '어제';
|
|
||||||
} else {
|
|
||||||
return StringUtil.dateFormat(date, 'MM.dd');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Pipe({
|
|
||||||
name: 'dateToStringFormat'
|
|
||||||
})
|
|
||||||
export class DateToStringFormatPipe implements PipeTransform {
|
|
||||||
transform(value: any, format?: string): string {
|
|
||||||
const date = moment(value.toString()).toDate();
|
|
||||||
|
|
||||||
if (!!format) {
|
|
||||||
return StringUtil.dateFormat(date, format);
|
|
||||||
} else {
|
|
||||||
return StringUtil.dateFormat(date, 'YYYY.MM.DD');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Pipe({
|
|
||||||
name: 'dateDistanceToDay'
|
|
||||||
})
|
|
||||||
export class DateDistanceToDatePipe implements PipeTransform {
|
|
||||||
transform(value: any, distanceDay?: number): Date {
|
|
||||||
distanceDay = distanceDay || 0;
|
|
||||||
const date: Date = moment(value.toString()).toDate();
|
|
||||||
date.setDate(date.getDate() + distanceDay);
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -27,6 +27,8 @@ import {
|
||||||
|
|
||||||
import { DragDropModule } from '@angular/cdk/drag-drop';
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
||||||
|
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
|
||||||
import { FileUploadQueueComponent } from './components/file-upload-queue.component';
|
import { FileUploadQueueComponent } from './components/file-upload-queue.component';
|
||||||
import { FloatActionButtonComponent } from './components/float-action-button.component';
|
import { FloatActionButtonComponent } from './components/float-action-button.component';
|
||||||
import { FileViewerComponent } from './components/file-viewer.component';
|
import { FileViewerComponent } from './components/file-viewer.component';
|
||||||
|
@ -62,11 +64,6 @@ import { ConfirmDialogComponent } from './dialogs/confirm.dialog.component';
|
||||||
|
|
||||||
import { BytesPipe } from './pipes/bytes.pipe';
|
import { BytesPipe } from './pipes/bytes.pipe';
|
||||||
import { LinefeedToHtmlPipe, HtmlToLinefeedPipe } from './pipes/linefeed.pipe';
|
import { LinefeedToHtmlPipe, HtmlToLinefeedPipe } from './pipes/linefeed.pipe';
|
||||||
import {
|
|
||||||
DateToStringForChatRoomListPipe,
|
|
||||||
DateToStringFormatPipe,
|
|
||||||
DateDistanceToDatePipe
|
|
||||||
} from './pipes/dates.pipe';
|
|
||||||
import { SecondsToMinutesPipe } from './pipes/seconds-to-minutes.pipe';
|
import { SecondsToMinutesPipe } from './pipes/seconds-to-minutes.pipe';
|
||||||
import { LinkyPipe } from './pipes/linky.pipe';
|
import { LinkyPipe } from './pipes/linky.pipe';
|
||||||
import { TranslatePipe } from './pipes/translate.pipe';
|
import { TranslatePipe } from './pipes/translate.pipe';
|
||||||
|
@ -109,9 +106,6 @@ const PIPES = [
|
||||||
BytesPipe,
|
BytesPipe,
|
||||||
LinefeedToHtmlPipe,
|
LinefeedToHtmlPipe,
|
||||||
HtmlToLinefeedPipe,
|
HtmlToLinefeedPipe,
|
||||||
DateToStringForChatRoomListPipe,
|
|
||||||
DateToStringFormatPipe,
|
|
||||||
DateDistanceToDatePipe,
|
|
||||||
SecondsToMinutesPipe,
|
SecondsToMinutesPipe,
|
||||||
LinkyPipe,
|
LinkyPipe,
|
||||||
TranslatePipe,
|
TranslatePipe,
|
||||||
|
@ -152,7 +146,8 @@ const SERVICES = [
|
||||||
MatDatepickerModule,
|
MatDatepickerModule,
|
||||||
MatSelectModule,
|
MatSelectModule,
|
||||||
MatSlideToggleModule,
|
MatSlideToggleModule,
|
||||||
DragDropModule
|
DragDropModule,
|
||||||
|
TranslateModule
|
||||||
],
|
],
|
||||||
exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES],
|
exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES],
|
||||||
declarations: [...COMPONENTS, ...DIALOGS, ...DIRECTIVES, ...PIPES],
|
declarations: [...COMPONENTS, ...DIALOGS, ...DIRECTIVES, ...PIPES],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user