Merge branch 'master' of https://git.loafle.net/ucap-web/next-ucap-messenger
This commit is contained in:
commit
21405df9bb
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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": "페이지별 갯수",
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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']}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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)"
|
||||||
|
|
|
@ -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],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user