modify message-box for file, attach-file, image, video
This commit is contained in:
parent
c270e40621
commit
b4823bfd9c
|
@ -36,7 +36,7 @@
|
||||||
<div fxFlex="1 1 auto" class="chat-content" #messageBoxContainer>
|
<div fxFlex="1 1 auto" class="chat-content" #messageBoxContainer>
|
||||||
<!-- CHAT MESSAGES -->
|
<!-- CHAT MESSAGES -->
|
||||||
<ucap-chat-messages [messages]="eventList$ | async" [userInfos]="userInfoList$ | async" [loginRes]="loginRes"
|
<ucap-chat-messages [messages]="eventList$ | async" [userInfos]="userInfoList$ | async" [loginRes]="loginRes"
|
||||||
(massDetail)="onMassDetail($event)">
|
(massDetail)="onMassDetail($event)" (save)="onSave($event)" (imageViewer)="onImageViewer($event)">
|
||||||
</ucap-chat-messages>
|
</ucap-chat-messages>
|
||||||
<!-- CHAT MESSAGES -->
|
<!-- CHAT MESSAGES -->
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,6 +21,7 @@ import { SessionStorageService } from '@ucap-webmessenger/web-storage';
|
||||||
import { LoginInfo, KEY_LOGIN_INFO } from '@app/types';
|
import { LoginInfo, KEY_LOGIN_INFO } from '@app/types';
|
||||||
import { RoomInfo, UserInfo } from '@ucap-webmessenger/protocol-room';
|
import { RoomInfo, UserInfo } from '@ucap-webmessenger/protocol-room';
|
||||||
import { tap } from 'rxjs/operators';
|
import { tap } from 'rxjs/operators';
|
||||||
|
import { FileInfo } from '@ucap-webmessenger/ui-chat';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-layout-messenger-messages',
|
selector: 'app-layout-messenger-messages',
|
||||||
|
@ -128,4 +129,13 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewChecked {
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onImageViewer(value: FileInfo) {
|
||||||
|
this.logger.debug('imageViewer', value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** File Save, Save As */
|
||||||
|
onSave(value: { fileInfo: FileInfo; type: string }) {
|
||||||
|
this.logger.debug('fileSave', value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
{{ fileInfo.FileName }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{ fileInfo.AttSize }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{ fileInfo.FileExt }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<span *ngIf="fileInfo && fileInfo.AttSEQ">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<button mat-button (click)="onClickSave()">Save</button>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<button mat-button (click)="onClickSaveAs()">Save As</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</span>
|
|
@ -0,0 +1,28 @@
|
||||||
|
/* tslint:disable:no-unused-variable */
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { By } from '@angular/platform-browser';
|
||||||
|
import { DebugElement } from '@angular/core';
|
||||||
|
|
||||||
|
import { AttachFileComponent } from './attach-file.component';
|
||||||
|
|
||||||
|
describe('AttachFileComponent', () => {
|
||||||
|
let component: AttachFileComponent;
|
||||||
|
let fixture: ComponentFixture<AttachFileComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ AttachFileComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(AttachFileComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,26 @@
|
||||||
|
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
|
||||||
|
import { FileInfo } from '../../models/file-info.json';
|
||||||
|
import { NGXLogger } from 'ngx-logger';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ucap-chat-message-box-attach-file',
|
||||||
|
templateUrl: './attach-file.component.html',
|
||||||
|
styleUrls: ['./attach-file.component.scss']
|
||||||
|
})
|
||||||
|
export class AttachFileComponent implements OnInit {
|
||||||
|
@Input()
|
||||||
|
fileInfo: FileInfo;
|
||||||
|
@Output()
|
||||||
|
save = new EventEmitter<string>();
|
||||||
|
|
||||||
|
constructor(private logger: NGXLogger) {}
|
||||||
|
|
||||||
|
ngOnInit() {}
|
||||||
|
|
||||||
|
onClickSave() {
|
||||||
|
this.save.emit('save');
|
||||||
|
}
|
||||||
|
onClickSaveAs() {
|
||||||
|
this.save.emit('saveAs');
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,9 @@
|
||||||
<p>
|
<ng-container *ngIf="fileInfo && fileInfo.FileType" [ngSwitch]="fileInfo.FileType">
|
||||||
file
|
<ucap-chat-message-box-attach-file *ngSwitchCase="FileType.File" [fileInfo]="fileInfo" (save)="onSave($event)">
|
||||||
</p>
|
</ucap-chat-message-box-attach-file>
|
||||||
|
<ucap-chat-message-box-image *ngSwitchCase="FileType.Image" [fileInfo]="fileInfo"
|
||||||
|
(click)="onClickImageViewer(fileInfo)"></ucap-chat-message-box-image>
|
||||||
|
<ucap-chat-message-box-video *ngSwitchCase="FileType.Video" [fileInfo]="fileInfo"
|
||||||
|
(click)="onClickImageViewer(fileInfo)"></ucap-chat-message-box-video>
|
||||||
|
<ucap-chat-message-box-text *ngSwitchDefault [message]="message"></ucap-chat-message-box-text>
|
||||||
|
</ng-container>
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';
|
||||||
|
import { Info } from '@ucap-webmessenger/protocol-event';
|
||||||
|
import { StatusCode } from '@ucap-webmessenger/api';
|
||||||
|
import { FileType } from '@ucap-webmessenger/protocol-file';
|
||||||
|
import { NGXLogger } from 'ngx-logger';
|
||||||
|
import { FileInfo } from '../../models/file-info.json';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ucap-chat-message-box-file',
|
selector: 'ucap-chat-message-box-file',
|
||||||
|
@ -6,7 +11,34 @@ import { Component, OnInit } from '@angular/core';
|
||||||
styleUrls: ['./file.component.scss']
|
styleUrls: ['./file.component.scss']
|
||||||
})
|
})
|
||||||
export class FileComponent implements OnInit {
|
export class FileComponent implements OnInit {
|
||||||
constructor() {}
|
@Input()
|
||||||
|
message: Info;
|
||||||
|
|
||||||
ngOnInit() {}
|
@Output()
|
||||||
|
save = new EventEmitter<{ fileInfo: FileInfo; type: string }>();
|
||||||
|
@Output()
|
||||||
|
imageViewer = new EventEmitter<FileInfo>();
|
||||||
|
|
||||||
|
fileInfo?: FileInfo;
|
||||||
|
errorMessage?: string;
|
||||||
|
FileType = FileType;
|
||||||
|
|
||||||
|
constructor(private logger: NGXLogger) {}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
const contentJson: FileInfo = JSON.parse(this.message.sentMessage);
|
||||||
|
if (contentJson.StatusCode === StatusCode.Success) {
|
||||||
|
this.fileInfo = contentJson;
|
||||||
|
} else {
|
||||||
|
this.errorMessage = contentJson.ErrorMessage || '[Error] System Error!!';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClickImageViewer(fileInfo: FileInfo) {
|
||||||
|
this.imageViewer.emit(this.fileInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
onSave(value: string) {
|
||||||
|
this.save.emit({ fileInfo: this.fileInfo, type: value });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<img [src]="fileInfo.ThumbURL">
|
|
@ -1,4 +1,6 @@
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit, Input } from '@angular/core';
|
||||||
|
import { NGXLogger } from 'ngx-logger';
|
||||||
|
import { FileInfo } from '../../models/file-info.json';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ucap-chat-message-box-image',
|
selector: 'ucap-chat-message-box-image',
|
||||||
|
@ -6,7 +8,10 @@ import { Component, OnInit } from '@angular/core';
|
||||||
styleUrls: ['./image.component.scss']
|
styleUrls: ['./image.component.scss']
|
||||||
})
|
})
|
||||||
export class ImageComponent implements OnInit {
|
export class ImageComponent implements OnInit {
|
||||||
constructor() {}
|
@Input()
|
||||||
|
fileInfo: FileInfo;
|
||||||
|
|
||||||
|
constructor(private logger: NGXLogger) {}
|
||||||
|
|
||||||
ngOnInit() {}
|
ngOnInit() {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
|
||||||
import { Info } from '@ucap-webmessenger/protocol-event';
|
import { Info } from '@ucap-webmessenger/protocol-event';
|
||||||
import { NGXLogger } from 'ngx-logger';
|
import { NGXLogger } from 'ngx-logger';
|
||||||
import { StatusCode } from '@ucap-webmessenger/api';
|
import { StatusCode } from '@ucap-webmessenger/api';
|
||||||
|
import { MassTextInfo } from '../../models/mass-talk-info.json';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ucap-chat-message-box-mass',
|
selector: 'ucap-chat-message-box-mass',
|
||||||
|
@ -46,12 +47,3 @@ export class MassComponent implements OnInit {
|
||||||
this.massDetail.emit(this.eventMassSeq);
|
this.massDetail.emit(this.eventMassSeq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MassTextInfo {
|
|
||||||
StatusCode?: StatusCode;
|
|
||||||
ErrorMessage?: string;
|
|
||||||
EventMassSeq?: number;
|
|
||||||
RoomID?: string;
|
|
||||||
RegDate?: Date;
|
|
||||||
Content?: string;
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
{{ fileInfo.FileName }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{ fileInfo.AttSize }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{ fileInfo.FileExt }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
|
@ -1,4 +1,6 @@
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit, Input } from '@angular/core';
|
||||||
|
import { NGXLogger } from 'ngx-logger';
|
||||||
|
import { FileInfo } from '../../models/file-info.json';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ucap-chat-message-box-video',
|
selector: 'ucap-chat-message-box-video',
|
||||||
|
@ -6,7 +8,10 @@ import { Component, OnInit } from '@angular/core';
|
||||||
styleUrls: ['./video.component.scss']
|
styleUrls: ['./video.component.scss']
|
||||||
})
|
})
|
||||||
export class VideoComponent implements OnInit {
|
export class VideoComponent implements OnInit {
|
||||||
constructor() {}
|
@Input()
|
||||||
|
fileInfo: FileInfo;
|
||||||
|
|
||||||
|
constructor(private logger: NGXLogger) {}
|
||||||
|
|
||||||
ngOnInit() {}
|
ngOnInit() {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,14 +20,13 @@
|
||||||
<ucap-chat-message-box-mass *ngSwitchCase="EventType.MassText" [message]="message"
|
<ucap-chat-message-box-mass *ngSwitchCase="EventType.MassText" [message]="message"
|
||||||
(massDetail)="onMassDetail($event)">
|
(massDetail)="onMassDetail($event)">
|
||||||
</ucap-chat-message-box-mass>
|
</ucap-chat-message-box-mass>
|
||||||
|
<ucap-chat-message-box-file *ngSwitchCase="EventType.File" [message]="message" (save)="onSave($event)"
|
||||||
|
(imageViewer)="onImageViewer($event)">
|
||||||
|
</ucap-chat-message-box-file>
|
||||||
<div *ngSwitchCase="EventType.Join">Join</div>
|
<div *ngSwitchCase="EventType.Join">Join</div>
|
||||||
<div *ngSwitchDefault>
|
<div *ngSwitchDefault>
|
||||||
date splitter
|
date splitter
|
||||||
<ucap-chat-message-box-date-splitter></ucap-chat-message-box-date-splitter>
|
<ucap-chat-message-box-date-splitter></ucap-chat-message-box-date-splitter>
|
||||||
file
|
|
||||||
<ucap-chat-message-box-file></ucap-chat-message-box-file>
|
|
||||||
image
|
|
||||||
<ucap-chat-message-box-image></ucap-chat-message-box-image>
|
|
||||||
information
|
information
|
||||||
<ucap-chat-message-box-information></ucap-chat-message-box-information>
|
<ucap-chat-message-box-information></ucap-chat-message-box-information>
|
||||||
mass-translation
|
mass-translation
|
||||||
|
@ -41,8 +40,6 @@
|
||||||
<ucap-chat-message-box-sticker></ucap-chat-message-box-sticker>
|
<ucap-chat-message-box-sticker></ucap-chat-message-box-sticker>
|
||||||
translation
|
translation
|
||||||
<ucap-chat-message-box-translation></ucap-chat-message-box-translation>
|
<ucap-chat-message-box-translation></ucap-chat-message-box-translation>
|
||||||
video
|
|
||||||
<ucap-chat-message-box-video></ucap-chat-message-box-video>
|
|
||||||
video-conference
|
video-conference
|
||||||
<ucap-chat-message-box-video-conference></ucap-chat-message-box-video-conference>
|
<ucap-chat-message-box-video-conference></ucap-chat-message-box-video-conference>
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import {
|
||||||
import { NGXLogger } from 'ngx-logger';
|
import { NGXLogger } from 'ngx-logger';
|
||||||
import { SessionStorageService } from '@ucap-webmessenger/web-storage';
|
import { SessionStorageService } from '@ucap-webmessenger/web-storage';
|
||||||
import { KEY_VER_INFO, VerInfo2 } from '@app/types/ver-info.type';
|
import { KEY_VER_INFO, VerInfo2 } from '@app/types/ver-info.type';
|
||||||
|
import { FileInfo } from '../models/file-info.json';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ucap-chat-messages',
|
selector: 'ucap-chat-messages',
|
||||||
|
@ -24,6 +25,10 @@ export class MessagesComponent implements OnInit {
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
massDetail = new EventEmitter<number>();
|
massDetail = new EventEmitter<number>();
|
||||||
|
@Output()
|
||||||
|
imageViewer = new EventEmitter<FileInfo>();
|
||||||
|
@Output()
|
||||||
|
save = new EventEmitter<{ fileInfo: FileInfo; type: string }>();
|
||||||
|
|
||||||
EventType = EventType;
|
EventType = EventType;
|
||||||
profileImageRoot: string;
|
profileImageRoot: string;
|
||||||
|
@ -68,4 +73,12 @@ export class MessagesComponent implements OnInit {
|
||||||
onMassDetail(value: number) {
|
onMassDetail(value: number) {
|
||||||
this.massDetail.emit(value);
|
this.massDetail.emit(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onImageViewer(value: FileInfo) {
|
||||||
|
this.imageViewer.emit(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
onSave(value: { fileInfo: FileInfo; type: string }) {
|
||||||
|
this.save.emit(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
import { StatusCode } from '@ucap-webmessenger/api';
|
||||||
|
import { FileType } from '@ucap-webmessenger/protocol-file';
|
||||||
|
|
||||||
|
export interface FileInfo {
|
||||||
|
StatusCode?: StatusCode;
|
||||||
|
ErrorMessage?: string;
|
||||||
|
RoomID?: number;
|
||||||
|
FileName?: string;
|
||||||
|
FileExt?: string;
|
||||||
|
FileType?: FileType;
|
||||||
|
ThumbURL?: string;
|
||||||
|
AttSEQ?: number;
|
||||||
|
AttSize?: number;
|
||||||
|
AttRegDate?: Date;
|
||||||
|
ImageWidth?: number;
|
||||||
|
ImageHeight?: number;
|
||||||
|
CompanyCode?: string;
|
||||||
|
VoiceTime?: string;
|
||||||
|
SynappKey?: string;
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
import { StatusCode } from '@ucap-webmessenger/api';
|
||||||
|
|
||||||
|
export interface MassTextInfo {
|
||||||
|
StatusCode?: StatusCode;
|
||||||
|
ErrorMessage?: string;
|
||||||
|
EventMassSeq?: number;
|
||||||
|
RoomID?: string;
|
||||||
|
RegDate?: Date;
|
||||||
|
Content?: string;
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ import { MessagesComponent } from './components/messages.component';
|
||||||
|
|
||||||
import { DateSplitterComponent as MBDateSplitterComponent } from './components/message-box/date-splitter.component';
|
import { DateSplitterComponent as MBDateSplitterComponent } from './components/message-box/date-splitter.component';
|
||||||
import { FileComponent as MBFileComponent } from './components/message-box/file.component';
|
import { FileComponent as MBFileComponent } from './components/message-box/file.component';
|
||||||
|
import { AttachFileComponent as MAttachFileComponent } from './components/message-box/attach-file.component';
|
||||||
import { ImageComponent as MBImageComponent } from './components/message-box/image.component';
|
import { ImageComponent as MBImageComponent } from './components/message-box/image.component';
|
||||||
import { InformationComponent as MBInformationComponent } from './components/message-box/information.component';
|
import { InformationComponent as MBInformationComponent } from './components/message-box/information.component';
|
||||||
import { MassTranslationComponent as MBMassTranslationComponent } from './components/message-box/mass-translation.component';
|
import { MassTranslationComponent as MBMassTranslationComponent } from './components/message-box/mass-translation.component';
|
||||||
|
@ -33,6 +34,7 @@ const COMPONENTS = [
|
||||||
|
|
||||||
MBDateSplitterComponent,
|
MBDateSplitterComponent,
|
||||||
MBFileComponent,
|
MBFileComponent,
|
||||||
|
MAttachFileComponent,
|
||||||
MBImageComponent,
|
MBImageComponent,
|
||||||
MBInformationComponent,
|
MBInformationComponent,
|
||||||
MBMassTranslationComponent,
|
MBMassTranslationComponent,
|
||||||
|
|
|
@ -20,4 +20,7 @@ export * from './lib/components/message-box/video.component';
|
||||||
export * from './lib/components/form.component';
|
export * from './lib/components/form.component';
|
||||||
export * from './lib/components/messages.component';
|
export * from './lib/components/messages.component';
|
||||||
|
|
||||||
|
export * from './lib/models/mass-talk-info.json';
|
||||||
|
export * from './lib/models/file-info.json';
|
||||||
|
|
||||||
export * from './lib/ucap-ui-chat.module';
|
export * from './lib/ucap-ui-chat.module';
|
||||||
|
|
Loading…
Reference in New Issue
Block a user