This commit is contained in:
leejinho 2020-01-08 16:54:46 +09:00
commit 21405df9bb
20 changed files with 297 additions and 103 deletions

View File

@ -46,6 +46,7 @@
.responsive-chats-button { .responsive-chats-button {
display: none; display: none;
line-height: normal;
&:last-child { &:last-child {
display: block; display: block;
padding: 0; padding: 0;
@ -54,7 +55,6 @@
border-radius: 50%; border-radius: 50%;
color: #efefef; color: #efefef;
font-size: 16px; font-size: 16px;
line-height: 40px;
} }
} }
width: 50px; width: 50px;
@ -84,7 +84,7 @@
height: 20px; height: 20px;
span { span {
border-radius: 10px; border-radius: 10px;
padding: 2px 10px; padding: 1px 10px;
margin-right: 6px; margin-right: 6px;
font-size: 13px; font-size: 13px;
} }

View File

@ -111,6 +111,7 @@
"confirmRecallEvent": "Do you want to recall the chat?<br/>It is also retrieved from the other party's chat window.", "confirmRecallEvent": "Do you want to recall the chat?<br/>It is also retrieved from the other party's chat window.",
"typeReceived": "Received", "typeReceived": "Received",
"typeSent": "Sent", "typeSent": "Sent",
"sender": "Sender",
"sentDate": "Sent date", "sentDate": "Sent date",
"validityPeriod": "Validity period", "validityPeriod": "Validity period",
"forwardEventToMe": "Forward chat to me", "forwardEventToMe": "Forward chat to me",
@ -126,6 +127,24 @@
"ejectFromRoom": "Eject from room", "ejectFromRoom": "Eject from room",
"confirmEjectFromRoom": "Do you want to eject member[{{targetMember}}] from room?", "confirmEjectFromRoom": "Do you want to eject member[{{targetMember}}] from room?",
"badgeDescriptionForUnread": "There is an unconfirmed message.", "badgeDescriptionForUnread": "There is an unconfirmed message.",
"event": {
"inviteToRoomWith": "{{owner}} invited {{inviter}}.",
"exitFromRoomWith": "{{exitor}} has left.",
"ejectedFromRoomWith": "{{requester}} has eject {{ejected}}.",
"renamedRoomWith": "{{requester}} has changed their chat room name to '{{roomName}}'.",
"setTimerWith": "{{requester}} set a timer ({{timer}})",
"showMassTranslationOfOriginal": "Show original",
"showMassTranslationOfTranslated": "Show translated",
"showMassDetail": "Show detail",
"readToHere": "Read to here",
"recalled": "Recalled",
"scheduleTypeNew": "[Event] Registered",
"scheduleTypeUpdate": "[Event] Modified",
"scheduleTypeDelete": "[Event] Deleted",
"scheduleTypeDefault": "[Event] Processing..",
"showPreviousEvents": "Show previous",
"moreUnreadEventsWith": "There is unread messages<span class=\"text-warn-color\">({{countOfUnread}})</span>"
},
"albumBox": { "albumBox": {
"label": "Album box" "label": "Album box"
}, },
@ -223,6 +242,8 @@
"searchResult": "Search result", "searchResult": "Search result",
"useOnlyForSpecialCharacter": "Can only use Special characters: {{v}}", "useOnlyForSpecialCharacter": "Can only use Special characters: {{v}}",
"units": { "units": {
"date": "Date",
"time": "Time",
"hour": "hour", "hour": "hour",
"hourFrom": "hour", "hourFrom": "hour",
"minute": "minute", "minute": "minute",
@ -235,6 +256,7 @@
"download": "Download", "download": "Download",
"delete": "Delete", "delete": "Delete",
"save": "Save", "save": "Save",
"saveAs": "Save as",
"saveAll": "Save all", "saveAll": "Save all",
"downloadSelected": "Download selected", "downloadSelected": "Download selected",
"openDownloadFolder": "Open download folder", "openDownloadFolder": "Open download folder",
@ -286,7 +308,8 @@
"Close window": "Close window", "Close window": "Close window",
"zoomOut": "Zoom out", "zoomOut": "Zoom out",
"zoomIn": "Zoom in", "zoomIn": "Zoom in",
"zoomReset": "Zoom reset" "zoomReset": "Zoom reset",
"sirWith": "{{sir}}"
}, },
"paginator": { "paginator": {
"itemsPerPage": "Items per page", "itemsPerPage": "Items per page",

View File

@ -111,6 +111,7 @@
"confirmRecallEvent": "해당 대화를 회수하시겠습니까?<br/>상대방 대화창에서도 회수됩니다.", "confirmRecallEvent": "해당 대화를 회수하시겠습니까?<br/>상대방 대화창에서도 회수됩니다.",
"typeReceived": "수신", "typeReceived": "수신",
"typeSent": "발신", "typeSent": "발신",
"sender": "보낸 사람",
"sentDate": "보낸 날짜", "sentDate": "보낸 날짜",
"validityPeriod": "유효 기간", "validityPeriod": "유효 기간",
"forwardEventToMe": "대화 나에게 전달", "forwardEventToMe": "대화 나에게 전달",
@ -126,6 +127,24 @@
"ejectFromRoom": "강퇴", "ejectFromRoom": "강퇴",
"confirmEjectFromRoom": "{{targetMember}} 님을 대화방에서 퇴장 시키겠습니까?", "confirmEjectFromRoom": "{{targetMember}} 님을 대화방에서 퇴장 시키겠습니까?",
"badgeDescriptionForUnread": "확인하지 않은 메시지가 있습니다.", "badgeDescriptionForUnread": "확인하지 않은 메시지가 있습니다.",
"event": {
"inviteToRoomWith": "{{owner}}이 {{inviter}}을 초대했습니다.",
"exitFromRoomWith": "{{exitor}}님이 퇴장하셨습니다.",
"ejectedFromRoomWith": "{{requester}}님이 {{ejected}}님을 퇴장 시키셨습니다.",
"renamedRoomWith": "{{requester}}님이 대화방명을 '{{roomName}}'으로 변경하셨습니다.",
"setTimerWith": "{{requester}}님이 타이머를 설정하였습니다. ({{timer}})",
"showMassTranslationOfOriginal": "원본 보기",
"showMassTranslationOfTranslated": "번역 보기",
"showMassDetail": "전체 보기",
"readToHere": "여기까지 읽었습니다.",
"recalled": "회수된 메시지",
"scheduleTypeNew": "[이벤트] 등록",
"scheduleTypeUpdate": "[이벤트] 수정",
"scheduleTypeDelete": "[이벤트] 삭제",
"scheduleTypeDefault": "[이벤트] 조회중..",
"showPreviousEvents": "이전 대화 보기",
"moreUnreadEventsWith": "안읽은 메시지가 <span class=\"text-warn-color\">({{countOfUnread}})</span>개 더 있습니다."
},
"albumBox": { "albumBox": {
"label": "앨범함" "label": "앨범함"
}, },
@ -223,6 +242,8 @@
"searchResult": "검색 결과", "searchResult": "검색 결과",
"useOnlyForSpecialCharacter": "특수문자는 {{specialCharacter}}만 사용할 수 있습니다.", "useOnlyForSpecialCharacter": "특수문자는 {{specialCharacter}}만 사용할 수 있습니다.",
"units": { "units": {
"date": "날짜",
"time": "시간",
"hour": "시", "hour": "시",
"hourFrom": "시간", "hourFrom": "시간",
"minute": "분", "minute": "분",
@ -235,6 +256,7 @@
"download": "파일 다운로드", "download": "파일 다운로드",
"delete": "파일 삭제", "delete": "파일 삭제",
"save": "파일 저장", "save": "파일 저장",
"saveAs": "파일을 다른 이름으로 저장",
"saveAll": "파일 모두 저장", "saveAll": "파일 모두 저장",
"downloadSelected": "선택된 파일 다운로드", "downloadSelected": "선택된 파일 다운로드",
"openDownloadFolder": "다운로드 폴더 열기", "openDownloadFolder": "다운로드 폴더 열기",
@ -286,7 +308,8 @@
"closeWindow": "창 닫기", "closeWindow": "창 닫기",
"zoomOut": "축소", "zoomOut": "축소",
"zoomIn": "확대", "zoomIn": "확대",
"zoomReset": "원본 비율" "zoomReset": "원본 비율",
"sirWith": "{{sir}}님"
}, },
"paginator": { "paginator": {
"itemsPerPage": "페이지별 갯수", "itemsPerPage": "페이지별 갯수",

View File

@ -282,6 +282,10 @@ $daesang-grey: (
} }
} }
.load-container .loader:after {
background-color: mat-color($accent, 300);
}
.global-menu { .global-menu {
.mat-tab-label[aria-selected='true'] { .mat-tab-label[aria-selected='true'] {
.mat-tab-label-content { .mat-tab-label-content {

View File

@ -1,17 +1,19 @@
.wrapper-splash { .wrapper-splash {
position: absolute; position: absolute;
display: flex;
justify-content: center;
justify-items: center;
z-index: 99999; z-index: 99999;
width: 100%; width: 100%;
height: 100%; height: 100%;
pointer-events: none; pointer-events: none;
background-size: cover; background-size: cover;
height: 100%; height: 100%;
background: #eaeff1; /*background: linear-gradient(to top, #93a3af, #eaeff1);*/
background: linear-gradient(to top, #93a3af, #eaeff1);
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
.svg-img { /*.svg-img {
position: absolute; position: absolute;
width: 240px; width: 240px;
height: 120px; height: 120px;
@ -45,4 +47,93 @@
#loop-offset { #loop-offset {
display: none; display: none;
}*/
.load-container {
display: flex;
flex-flow: column;
justify-content: center;
justify-items: center;
transform: translateY(-60px);
}
.load-container .loader {
font-size: 10px;
margin: 50px auto;
text-indent: -9999em;
width: 11em;
height: 11em;
border-radius: 50%;
background: #ffffff;
background: -moz-linear-gradient(
left,
#ffffff 10%,
rgba(255, 255, 255, 0) 42%
);
background: -webkit-linear-gradient(
left,
#ffffff 10%,
rgba(255, 255, 255, 0) 42%
);
background: -o-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
background: -ms-linear-gradient(
left,
#ffffff 10%,
rgba(255, 255, 255, 0) 42%
);
background: linear-gradient(to right, #00b6d5 10%, #fb8c00, 42%);
position: relative;
-webkit-animation: load3 1.4s infinite linear;
animation: load3 1.4s infinite linear;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
}
.load-container .loader:before {
width: 50%;
height: 50%;
background: #ffffff;
border-radius: 100% 0 0 0;
position: absolute;
top: 0;
left: 0;
content: '';
}
.load-container .loader:after {
width: 75%;
height: 75%;
border-radius: 50%;
content: '';
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
.credit {
color: #ffffff;
margin: 0 auto;
font-size: 1.3em;
font-weight: 500;
}
@-webkit-keyframes load3 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes load3 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
} }

View File

@ -12,8 +12,8 @@
<body class="theme-default"> <body class="theme-default">
<app-root app-version="0.0.1"></app-root> <app-root app-version="0.0.1"></app-root>
<div class="wrapper-splash" id="splash-screen"> <div class="wrapper-splash bg-accent-light " id="splash-screen">
<svg <!--<svg
version="1.1" version="1.1"
id="preloader" id="preloader"
x="0px" x="0px"
@ -89,8 +89,11 @@
> >
<mpath xlink:href="#loop-offset" /> <mpath xlink:href="#loop-offset" />
</animateMotion> </animateMotion>
</svg> </svg>-->
<div class="credit">Welcome to DS Talk</div> <div class="load-container">
<div class="loader"></div>
<span class="credit">Welcome to DS Talk</span>
</div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -4,11 +4,11 @@
</div> </div>
<ul class="event-info"> <ul class="event-info">
<li class="event-sender bg-accent-brightest text-accent-darkest"> <li class="event-sender bg-accent-brightest text-accent-darkest">
<span class="bg-accent-dark"> 발송인</span> <span class="bg-accent-dark"> {{ 'chat.sender' | translate }} </span>
{{ message.sentMessageJson.sendName }} {{ message.sentMessageJson.sendName }}
</li> </li>
<li class="event-time bg-accent-brightest text-accent-darkest"> <li class="event-time bg-accent-brightest text-accent-darkest">
<span class="bg-accent-dark">발송시간</span> <span class="bg-accent-dark">{{ 'chat.sentDate' | translate }}</span>
{{ message.sentMessageJson.postDate | ucapDate: 'YYYY.MM.DD a hh:mm' }} {{ message.sentMessageJson.postDate | ucapDate: 'YYYY.MM.DD a hh:mm' }}
</li> </li>
<li class="event-content"> <li class="event-content">

View File

@ -18,14 +18,18 @@
</div> </div>
<div class="btn-box"> <div class="btn-box">
<ul *ngIf="expired" class="expired"> <ul *ngIf="expired" class="expired">
<li>기간이 만료된 파일입니다.</li> <li>{{ 'common.file.errors.expired' | translate }}</li>
</ul> </ul>
<ul *ngIf="!expired && fileInfo && fileInfo.attachmentSeq"> <ul *ngIf="!expired && fileInfo && fileInfo.attachmentSeq">
<li> <li>
<button mat-button (click)="onClickSave()">저장</button> <button mat-button (click)="onClickSave()">
{{ 'common.file.save' | translate }}
</button>
</li> </li>
<li> <li>
<button mat-button (click)="onClickSaveAs()">다른이름으로 저장</button> <button mat-button (click)="onClickSaveAs()">
{{ 'common.file.saveAs' | translate }}
</button>
</li> </li>
</ul> </ul>
</div> </div>

View File

@ -4,7 +4,7 @@
(mouseleave)="mouseLeave($event)" (mouseleave)="mouseLeave($event)"
> >
<div *ngIf="showExpired" class="expired-text"> <div *ngIf="showExpired" class="expired-text">
<span>기간이 만료된 파일입니다</span> <span>{{ 'common.file.errors.expired' | translate }}</span>
</div> </div>
<img [src]="fileInfo.thumbUrl" /> <img [src]="fileInfo.thumbUrl" />
</div> </div>

View File

@ -1 +1,53 @@
<div class="guest">{{ contents }}</div> <div class="guest">
<ng-container [ngSwitch]="message.type">
<ng-container *ngSwitchCase="EventType.Join">
{{
'chat.event.inviteToRoomWith'
| translate
: {
owner: message.sentMessageJson.owner,
inviter: getI18nForSir(message.sentMessageJson.inviter)
}
}}
</ng-container>
<ng-container *ngSwitchCase="EventType.Exit">
{{
'chat.event.exitFromRoomWith'
| translate: { exitor: message.sentMessage }
}}
</ng-container>
<ng-container *ngSwitchCase="EventType.ForcedExit">
{{
'chat.event.ejectedFromRoomWith'
| translate
: {
requester: message.exitForcingRequestUserName,
ejected: message.sentMessage
}
}}
</ng-container>
<ng-container *ngSwitchCase="EventType.RenameRoom">
{{
'chat.event.renamedRoomWith'
| translate
: {
requester: message.sentMessageJson.requester,
roomName: message.sentMessageJson.roomName
}
}}
</ng-container>
<ng-container *ngSwitchCase="EventType.NotificationForTimerRoom">
{{ message.sentMessage }}
</ng-container>
<ng-container *ngSwitchCase="EventType.GuideForRoomTimerChanged">
{{
'chat.event.setTimerWith'
| translate
: {
requester: senderName,
timer: getCalcTimer(message.sentMessageJson.time * 1000)
}
}}
</ng-container>
</ng-container>
</div>

View File

@ -9,6 +9,7 @@ import {
NotificationForTimerRoomEventJson, NotificationForTimerRoomEventJson,
GuideForRoomTimerChangedEventJson GuideForRoomTimerChangedEventJson
} from '@ucap-webmessenger/protocol-event'; } from '@ucap-webmessenger/protocol-event';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'ucap-chat-message-box-information', selector: 'ucap-chat-message-box-information',
@ -21,92 +22,67 @@ export class InformationComponent implements OnInit {
@Input() @Input()
senderName?: string; senderName?: string;
contents: string; EventType = EventType;
constructor(private logger: NGXLogger) {} constructor(
private translateService: TranslateService,
private logger: NGXLogger
) {}
ngOnInit() { ngOnInit() {}
switch (this.message.type) {
case EventType.Join:
{
const m = this.message as Info<JoinEventJson>;
const owner = m.sentMessageJson.owner + '님'; getI18nForSir(names: string | string[]) {
const inviter: string[] = []; if (Array.isArray(names)) {
const inviter: string[] = [];
m.sentMessageJson.inviter.forEach((userName, idx) => { names.forEach((userName, idx) => {
inviter.push(userName + '님'); inviter.push(
}); this.translateService.instant('common.messages.sirWith', {
sir: userName
})
);
});
this.contents = `${owner}${inviter.join(',')}을 초대했습니다.`; return inviter.join(',');
} } else {
break; return this.translateService.instant('common.messages.sirWith', {
case EventType.Exit: sir: names
{ });
const m = this.message as Info<JoinEventJson>;
this.contents = `${m.sentMessage}님이 퇴장하셨습니다.`;
}
break;
case EventType.ForcedExit:
{
const m = this.message as Info<JoinEventJson>;
this.contents = `${m.exitForcingRequestUserName} 님이 ${m.sentMessage} 님을 퇴장 시키셨습니다.`;
}
break;
case EventType.RenameRoom:
{
const m = this.message as Info<RenameRoomEventJson>;
this.contents = `${m.sentMessageJson.requester}님이 대화방명을 '${m.sentMessageJson.roomName}'으로 변경하셨습니다.`;
}
break;
case EventType.NotificationForTimerRoom:
{
const m = this.message as Info<NotificationForTimerRoomEventJson>;
/**
* , .
*/
this.contents = m.sentMessage;
}
break;
case EventType.GuideForRoomTimerChanged:
{
const m = this.message as Info<GuideForRoomTimerChangedEventJson>;
this.contents = `${
this.senderName
} .(${this.getCalcTimer(
m.sentMessageJson.time * 1000
)})`;
}
break;
} }
} }
getCalcTimer(millisec: number) { getCalcTimer(millisec: number) {
const langs = this.translateService.instant([
'common.units.hourFrom',
'common.units.minute',
'common.units.second'
]);
switch (millisec) { switch (millisec) {
case 5000: case 5000:
return '5 초'; return `5 ${langs['common.units.second']}`;
case 10000: case 10000:
return '10 초'; return `10 ${langs['common.units.second']}`;
case 30000: case 30000:
return '30 초'; return `30 ${langs['common.units.second']}`;
case 60000: case 60000:
return '1 분'; return `1 ${langs['common.units.minute']}`;
case 300000: case 300000:
return '5 분'; return `5 ${langs['common.units.minute']}`;
case 600000: case 600000:
return '10 분'; return `10 ${langs['common.units.minute']}`;
case 1800000: case 1800000:
return '30 분'; return `30 ${langs['common.units.minute']}`;
case 3600000: case 3600000:
return '1 시간'; return `1 ${langs['common.units.hourFrom']}`;
case 21600000: case 21600000:
return '6 시간'; return `6 ${langs['common.units.hourFrom']}`;
case 43200000: case 43200000:
return '12 시간'; return `12 ${langs['common.units.hourFrom']}`;
case 86400000: case 86400000:
return '24 시간'; return `24 ${langs['common.units.hourFrom']}`;
default: default:
return '0 초'; return `0 ${langs['common.units.second']}`;
} }
} }
} }

View File

@ -14,12 +14,14 @@
<div class="btn-box"> <div class="btn-box">
<ul> <ul>
<li> <li>
<button mat-button (click)="onClickMassDetail('O')">전체보기</button> <button mat-button (click)="onClickMassDetail('O')">
{{ 'chat.event.showMassTranslationOfOriginal' | translate }}
</button>
</li> </li>
<li> <li>
<button mat-button (click)="onClickMassDetail('T')"> <button mat-button (click)="onClickMassDetail('T')">
<span class="language">{{ message.sentMessageJson.destLocale }}</span <span class="language">{{ message.sentMessageJson.destLocale }}</span>
>번역보기 {{ 'chat.event.showMassTranslationOfTranslated' | translate }}
</button> </button>
</li> </li>
</ul> </ul>

View File

@ -5,5 +5,7 @@
</span> </span>
</div> </div>
<div *ngIf="detailButteonShow" class="btn-box"> <div *ngIf="detailButteonShow" class="btn-box">
<button mat-button (click)="onClickDetailView()">Detail View</button> <button mat-button (click)="onClickDetailView()">
{{ 'chat.event.showMassDetail' | translate }}
</button>
</div> </div>

View File

@ -1,5 +1,5 @@
<div class="read-here bg-warn-color "> <div class="read-here bg-warn-color ">
<!--<span class="line"></span>--> <!--<span class="line"></span>-->
<span>여기까지 읽었습니다.</span> <span>{{ 'chat.event.readToHere' | translate }}</span>
<!--<span class="line"></span>--> <!--<span class="line"></span>-->
</div> </div>

View File

@ -1,4 +1,4 @@
<div class="bubble-main"> <div class="bubble-main">
<span class="icon-recall"><i class="material-icons">redo</i></span> <span class="icon-recall"><i class="material-icons">redo</i></span>
<span class="recall-msg">회수된 메시지</span> <span class="recall-msg">{{ 'chat.event.recalled' | translate }}</span>
</div> </div>

View File

@ -5,27 +5,31 @@
> >
<ng-container [ngSwitch]="message.sentMessageJson.contents"> <ng-container [ngSwitch]="message.sentMessageJson.contents">
<ng-container *ngSwitchCase="PlanContentType.New"> <ng-container *ngSwitchCase="PlanContentType.New">
[이벤트] 등록 {{ 'chat.event.scheduleTypeNew' | translate }}
</ng-container> </ng-container>
<ng-container *ngSwitchCase="PlanContentType.Update"> <ng-container *ngSwitchCase="PlanContentType.Update">
[이벤트] 수정 {{ 'chat.event.scheduleTypeUpdate' | translate }}
</ng-container> </ng-container>
<ng-container *ngSwitchCase="PlanContentType.Delete"> <ng-container *ngSwitchCase="PlanContentType.Delete">
[이벤트] 삭제 {{ 'chat.event.scheduleTypeDelete' | translate }}
</ng-container> </ng-container>
<ng-container *ngSwitchDefault> <ng-container *ngSwitchDefault>
[이벤트] 조회중.. {{ 'chat.event.scheduleTypeDefault' | translate }}
</ng-container> </ng-container>
</ng-container> </ng-container>
</ng-container> </ng-container>
</div> </div>
<ul class="event-info"> <ul class="event-info">
<li class="event-date bg-accent-brightest"> <li class="event-date bg-accent-brightest">
<span class="text-accent-darkest">날짜</span <span class="text-accent-darkest">{{
'common.units.date' | translate
}}</span
>{{ date | ucapDate: 'YYYY.MM.DD' }} >{{ date | ucapDate: 'YYYY.MM.DD' }}
</li> </li>
<li class="event-time bg-accent-brightest"> <li class="event-time bg-accent-brightest">
<span class="text-accent-darkest">시간</span <span class="text-accent-darkest">{{
'common.units.time' | translate
}}</span
>{{ date | ucapDate: 'a hh:mm' }} >{{ date | ucapDate: 'a hh:mm' }}
</li> </li>
<li class="event-content"> <li class="event-content">

View File

@ -20,14 +20,18 @@
</div> </div>
<div class="btn-box"> <div class="btn-box">
<ul *ngIf="expired" class="expired"> <ul *ngIf="expired" class="expired">
<li>기간이 만료된 파일입니다.</li> <li>{{ 'common.file.errors.expired' | translate }}</li>
</ul> </ul>
<ul *ngIf="!expired && fileInfo && fileInfo.attachmentSeq"> <ul *ngIf="!expired && fileInfo && fileInfo.attachmentSeq">
<li> <li>
<button mat-button (click)="onClickSave()">저장</button> <button mat-button (click)="onClickSave()">
{{ 'common.file.save' | translate }}
</button>
</li> </li>
<li> <li>
<button mat-button (click)="onClickSaveAs()">다른이름으로 저장</button> <button mat-button (click)="onClickSaveAs()">
{{ 'common.file.saveAs' | translate }}
</button>
</li> </li>
</ul> </ul>
</div> </div>

View File

@ -19,7 +19,7 @@
<polyline class="st0" points="12.9,10 10,7.1 7.1,10 " /> <polyline class="st0" points="12.9,10 10,7.1 7.1,10 " />
<line class="st0" x1="10" y1="12.9" x2="10" y2="7.1" /> <line class="st0" x1="10" y1="12.9" x2="10" y2="7.1" />
</svg> </svg>
<span>이전 대화 보기</span> <span>{{ 'chat.event.showPreviousEvents' | translate }}</span>
</button> </button>
<div <div
class="unRead-count" class="unRead-count"
@ -31,10 +31,13 @@
> >
<span class="line"></span> <span class="line"></span>
<span class="count"> <span class="count">
안읽은 메시지가 {{
<span class="text-warn-color" 'chat.event.moreUnreadEventsWith'
>({{ firstEventSeq - (roomInfo.lastReadEventSeq + 1) }})</span | translate
>개 더 있습니다. : {
countOfUnread: firstEventSeq - (roomInfo.lastReadEventSeq + 1)
}
}}
</span> </span>
<span class="line"></span> <span class="line"></span>
</div> </div>

View File

@ -7,7 +7,7 @@
matInput matInput
#inputSearch #inputSearch
type="text" type="text"
placeholder="대화방 내용 검색" placeholder="{{ 'chat.searchEventByText' | translate }}"
value="" value=""
formControlName="searchInput" formControlName="searchInput"
(keydown.enter)="onKeyDownEnter($event, inputSearch.value)" (keydown.enter)="onKeyDownEnter($event, inputSearch.value)"

View File

@ -33,6 +33,7 @@ import { VideoComponent as MBVideoComponent } from './components/message-box/vid
import { VideoConferenceComponent as MBVideoConferenceComponent } from './components/message-box/video-conference.component'; import { VideoConferenceComponent as MBVideoConferenceComponent } from './components/message-box/video-conference.component';
import { AllimComponent as MBAllimComponent } from './components/message-box/allim.component'; import { AllimComponent as MBAllimComponent } from './components/message-box/allim.component';
import { SearchComponent } from './components/search.component'; import { SearchComponent } from './components/search.component';
import { TranslateModule } from '@ngx-translate/core';
const COMPONENTS = [ const COMPONENTS = [
FormComponent, FormComponent,
@ -72,6 +73,8 @@ const PROVIDERS = [DatePipe];
MatButtonModule, MatButtonModule,
MatMenuModule, MatMenuModule,
TranslateModule,
UCapUiModule UCapUiModule
], ],
exports: [...COMPONENTS], exports: [...COMPONENTS],