diff --git a/package-lock.json b/package-lock.json index 327dd8601..144fbd3af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6732,6 +6732,14 @@ } } }, + "@rkusa/linebreak": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rkusa/linebreak/-/linebreak-1.0.0.tgz", + "integrity": "sha512-yCSm87XA1aYMgfcABSxcIkk3JtCw3AihNceHY+DnZGLvVP/g2z3UWZbi0xIoYpZWAJEVPr5Zt3QE37Q80wF1pA==", + "requires": { + "unicode-trie": "^0.3.0" + } + }, "@scarf/scarf": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.1.0.tgz", @@ -22250,6 +22258,15 @@ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" }, + "opentype.js": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.3.tgz", + "integrity": "sha512-/qIY/+WnKGlPIIPhbeNjynfD2PO15G9lA/xqlX2bDH+4lc3Xz5GCQ68mqxj3DdUv6AJqCeaPvuAoH8mVL0zcuA==", + "requires": { + "string.prototype.codepointat": "^0.2.1", + "tiny-inflate": "^1.0.3" + } + }, "openurl": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", @@ -22626,6 +22643,41 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, + "pdfjs": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/pdfjs/-/pdfjs-2.4.6.tgz", + "integrity": "sha512-bVANz4AmxgNdKd9kjAuJj/KgINaV7ZMDsRjDe6VgwQMpu9lcQMh6QjyaajSx0IGlAwAD59K8kbJA3wuVHNicwQ==", + "requires": { + "@rkusa/linebreak": "^1.0.0", + "opentype.js": "^1.3.3", + "pako": "^2.0.3", + "readable-stream": "^3.6.0", + "unorm": "^1.6.0", + "uuid": "^8.3.1" + }, + "dependencies": { + "pako": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, "pdfjs-dist": { "version": "2.7.570", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.7.570.tgz", @@ -27046,8 +27098,7 @@ "string.prototype.codepointat": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", - "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", - "dev": true + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" }, "string.prototype.trimend": { "version": "1.0.3", @@ -27591,6 +27642,11 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -29056,6 +29112,22 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + } + } + }, "union": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", @@ -29120,8 +29192,7 @@ "unorm": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", - "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", - "dev": true + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==" }, "unpipe": { "version": "1.0.0", diff --git a/package.json b/package.json index bdbab333f..3284cc68a 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ "moment": "^2.29.1", "ng2-pdf-viewer": "^7.0.1", "ngx-socket-io": "^3.2.0", + "pdfjs": "^2.4.6", "puppeteer": "^10.1.0", "rxjs": "~6.6.3", "rxjs-compat": "^6.6.7", @@ -192,4 +193,4 @@ "url": "git+https://Kayaya@bitbucket.org/equilibriumito/gabinete-digital.git" }, "license": "ISC" -} \ No newline at end of file +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts index ea7ce1aef..0f7eca23f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -88,7 +88,7 @@ import { PdfViewerModule } from 'ng2-pdf-viewer'; MatSelectModule, MatDialogModule, // - PdfViewerModule + PdfViewerModule, ], providers: [ { provide: MAT_DATE_LOCALE, useValue: 'pt' }, diff --git a/src/app/modals/chat-options-features/chat-options-features.page.html b/src/app/modals/chat-options-features/chat-options-features.page.html index d21bc3f28..5660e9d17 100644 --- a/src/app/modals/chat-options-features/chat-options-features.page.html +++ b/src/app/modals/chat-options-features/chat-options-features.page.html @@ -6,11 +6,11 @@
- - + +
- +
diff --git a/src/app/modals/chat-options-features/chat-options-features.page.ts b/src/app/modals/chat-options-features/chat-options-features.page.ts index 3951f5120..ca9c464cf 100644 --- a/src/app/modals/chat-options-features/chat-options-features.page.ts +++ b/src/app/modals/chat-options-features/chat-options-features.page.ts @@ -68,8 +68,12 @@ export class ChatOptionsFeaturesPage implements OnInit { } - anexarFoto(){ - this.modalController.dismiss('picture'); + addDocument(){ + this.modalController.dismiss('add-document'); + } + + addPicture(){ + this.modalController.dismiss('add-picture'); } addDocGestaoDocumental(){ diff --git a/src/app/models/fileType.ts b/src/app/models/fileType.ts index 2a7fdf744..f232cc228 100644 --- a/src/app/models/fileType.ts +++ b/src/app/models/fileType.ts @@ -8,4 +8,7 @@ export let FileType: "image/svg+xml" | "image/tiff" | "image/webp" | -"image/x-icon" \ No newline at end of file +"image/x-icon" | +".doc" | +".docx" | +".pdf" diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 7aebfece6..c3496e88e 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -280,8 +280,6 @@ hideRefreshButton(){ } openGroupMessagesPage(rid) { - console.log(rid); - if( window.innerWidth < 701){ this.openGroupMessagesModal(rid); } @@ -386,27 +384,27 @@ hideRefreshButton(){ this.chatService.getAllDirectMessages().subscribe(async (res:any)=>{ if(res != 200){ - console.log(res.ims); + //console.log(res.ims); this.userDirectMessages = res.ims.sort((a,b)=>{ var dateA = new Date(a._updatedAt).getTime(); var dateB = new Date(b._updatedAt).getTime(); return dateB - dateA; }); - console.log(this.userDirectMessages); + //console.log(this.userDirectMessages); if(this.route.url != "/home/chat"){ - console.log("Timer message stop") + //console.log("Timer message stop") } else { - console.log('TIMER'); + //console.log('TIMER'); //Check if modal is opened if(this.segment == "Contactos" && this.showMessages != true){ await new Promise(resolve => setTimeout(resolve, 2000)); await this.getDirectMessages(); - console.log('Timer contactos list running') + //console.log('Timer contactos list running') } else{ - console.log('No timer!'); + //console.log('No timer!'); } } @@ -445,7 +443,7 @@ hideRefreshButton(){ var dateB = new Date(b._updatedAt).getTime(); return dateB - dateA; }); - console.log(this.allGroups); + //console.log(this.allGroups); /* }); */ if(this.route.url != "/home/chat"){ console.log("Timer message stop") @@ -455,7 +453,7 @@ hideRefreshButton(){ if(this.segment == "Grupos" && this.showGroupMessages != true){ await new Promise(resolve => setTimeout(resolve, 2000)); await this.getGroups(); - console.log('Timer groups list running') + //console.log('Timer groups list running') } } diff --git a/src/app/pages/chat/group-messages/group-messages.page.html b/src/app/pages/chat/group-messages/group-messages.page.html index 5e699a578..2d3cb7834 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.html +++ b/src/app/pages/chat/group-messages/group-messages.page.html @@ -17,7 +17,7 @@
- + {{member.name}},
diff --git a/src/app/pages/chat/group-messages/group-messages.page.scss b/src/app/pages/chat/group-messages/group-messages.page.scss index d6640a5ee..2bf46c1ae 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.scss +++ b/src/app/pages/chat/group-messages/group-messages.page.scss @@ -46,7 +46,7 @@ } .header-bottom-contacts{ - width: 275px; + width: calc(100% - 40px); font-size: 15px; color: #797979; white-space: nowrap; @@ -55,6 +55,12 @@ float: left; padding: 5px; margin: 1px; + + .contacts-list{ + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis !important; + } } } diff --git a/src/app/pages/chat/group-messages/group-messages.page.ts b/src/app/pages/chat/group-messages/group-messages.page.ts index 98ff6ebe2..c364febdd 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.ts +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -15,6 +15,9 @@ import { FileLoaderService } from 'src/app/services/file/file-loader.service'; import { FileToBase64Service } from 'src/app/services/file/file-to-base64.service'; import { FileService } from 'src/app/services/functions/file.service'; import { ToastService } from 'src/app/services/toast.service'; +import { environment } from 'src/environments/environment'; +import { NewEventPage } from '../../agenda/new-event/new-event.page'; +import { EventPerson } from 'src/app/models/eventperson.model'; @Component({ selector: 'app-group-messages', @@ -45,6 +48,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { capturedImage:any; capturedImageTitle:any; + attendees: EventPerson[] = []; @ViewChild('scrollMe') private myScrollContainer: ElementRef; @@ -320,6 +324,34 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { this.fileService.viewDocumentByUrl(url); } + async bookMeeting() { + this.attendees = this.members.map((val)=>{ + return { + Name: val.name, + EmailAddress: val.username+"@"+environment.domain, + IsRequired: "true", + } + }); + console.log(this.attendees); + this.popoverController.dismiss(); + if( window.innerWidth <= 1024){ + const modal = await this.modalController.create({ + component: NewEventPage, + componentProps:{ + attendees: this.attendees, + }, + cssClass: 'modal modal-desktop', + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss().then((data) => { + if(data){ + + } + }); + } + } + async openChatOptions(ev?: any) { console.log(this.members); @@ -336,33 +368,26 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { }); await popover.present(); await popover.onDidDismiss().then((res)=>{ - if(res['data'] == "loadPicture"){ - this.loadPicture(); + console.log(res['data']); + if(res['data'] == 'meeting'){ + this.bookMeeting(); } - else if(res['data'] == "takePicture"){ - let data = this.fileService.takePicture(); - if(data.name != null){ - let body = { - "message": - { - "rid": this.roomId, - "msg": "", - "attachments": [{ - "title": data.name, - "title_link_download": false, - "image_url": data.image, - }] - } - } - this.chatService.sendMessage(body).subscribe(res=> { - console.log(res); - },(error) => { + else if(res['data'] == 'take-picture'){ + this.fileService.addCameraPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-picture'){ + this.fileService.addPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-document'){ + this.fileService.addDocumentToChat(this.roomId); + //this.loadDocument(); + } + else if(res['data'] == 'documentoGestaoDocumental'){ - }); - } - else{ - this.toastService.badRequest("Não foi possível adicionar a fotografia!"); - } + this.fileService.addDocGestaoDocumentalToChat(this.roomId); + //this.addDocGestaoDocumental(); } }); } diff --git a/src/app/pages/chat/messages/messages.page.html b/src/app/pages/chat/messages/messages.page.html index 13eff3f66..c43e03ac0 100644 --- a/src/app/pages/chat/messages/messages.page.html +++ b/src/app/pages/chat/messages/messages.page.html @@ -43,6 +43,23 @@
{{msg.msg}} +
+
+ image +
+
+ + image + + + +

{{file.title}}

+

{{file.text}}

+
+
+
+
+
{{last ? scrollToBottom() : ''}}
diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 0408cc09e..0febfe9c7 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -2,16 +2,20 @@ import { AfterViewChecked, AfterViewInit, Component, ElementRef, OnDestroy, OnIn import {ActivatedRoute, Router} from '@angular/router' import { ModalController, NavParams, PopoverController } from '@ionic/angular'; import { map } from 'rxjs/operators'; +import { EventPerson } from 'src/app/models/eventperson.model'; import { ContactsPage } from 'src/app/pages/chat/messages/contacts/contacts.page'; import { AlertService } from 'src/app/services/alert.service'; import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; +import { FileService } from 'src/app/services/functions/file.service'; import { synchro } from 'src/app/services/socket/synchro.service'; import { ToastService } from 'src/app/services/toast.service'; +import { NewEventPage } from 'src/app/shared/agenda/new-event/new-event.page'; import { ChatOptionsPopoverPage } from 'src/app/shared/popover/chat-options-popover/chat-options-popover.page'; import { MessagesOptionsPage } from 'src/app/shared/popover/messages-options/messages-options.page'; import { ChatMessageStore } from 'src/app/store/chat/chat-message.service'; import { ChatUserStorage } from 'src/app/store/chat/chat-user.service'; +import { environment } from 'src/environments/environment'; @Component({ selector: 'app-messages', @@ -41,6 +45,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { private scrollChangeCallback: () => void; currentPosition: any; startPosition: number; + attendees: EventPerson[] = []; constructor( public popoverController: PopoverController, @@ -52,6 +57,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { private toastService: ToastService, private route: Router, private activatedRoute: ActivatedRoute, + private fileService: FileService, ) { /* this.activatedRoute.paramMap.subscribe(params => { if(params["params"].SerialNumber) { @@ -157,7 +163,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { loadMessages() { this.showLoader = true; - const roomId = this.roomId + const roomId = this.roomId; this.chatService.getRoomMessages(this.roomId).subscribe(res => { /* console.log(res); */ @@ -167,6 +173,11 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { this.showLoader = false; }) } + + viewDocument(url:string){ + this.fileService.viewDocumentByUrl(url); + } + getChatMembers() { this.showLoader = true; this.chatService.getMembers(this.roomId).subscribe(res=> { @@ -241,6 +252,34 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { modal.onDidDismiss(); } + async bookMeeting() { + this.attendees = this.members.map((val)=>{ + return { + Name: val.name, + EmailAddress: val.username+"@"+environment.domain, + IsRequired: "true", + } + }); + console.log(this.attendees); + this.popoverController.dismiss(); + if( window.innerWidth <= 1024){ + const modal = await this.modalController.create({ + component: NewEventPage, + componentProps:{ + attendees: this.attendees, + }, + cssClass: 'modal modal-desktop', + backdropDismiss: false + }); + await modal.present(); + modal.onDidDismiss().then((data) => { + if(data){ + + } + }); + } + } + async openChatOptions(ev?: any) { console.log(this.members); @@ -255,7 +294,31 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }, translucent: true }); - return await popover.present(); + await popover.present(); + popover.onDidDismiss().then((res)=>{ + console.log(res['data']); + if(res['data'] == 'meeting'){ + this.bookMeeting(); + } + else if(res['data'] == 'take-picture'){ + this.fileService.addCameraPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-picture'){ + this.fileService.addPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-document'){ + this.fileService.addDocumentToChat(this.roomId); + //this.loadDocument(); + } + else if(res['data'] == 'documentoGestaoDocumental'){ + + this.fileService.addDocGestaoDocumentalToChat(this.roomId); + //this.addDocGestaoDocumental(); + } + + }); } async serverLongPull() { diff --git a/src/app/services/functions/file.service.ts b/src/app/services/functions/file.service.ts index 172e87ba4..4b9757981 100644 --- a/src/app/services/functions/file.service.ts +++ b/src/app/services/functions/file.service.ts @@ -4,6 +4,12 @@ import { FileToBase64Service } from '../file/file-to-base64.service'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; //Cordova import { Camera, CameraOptions } from '@ionic-native/camera/ngx'; +import { ChatService } from '../chat.service'; +import { ModalController } from '@ionic/angular'; +import { SearchPage } from 'src/app/pages/search/search.page'; +import { SearchList } from 'src/app/models/search-document'; +import { ProcessesService } from '../processes.service'; +import { ToastService } from '../toast.service'; @Injectable({ providedIn: 'root' @@ -12,12 +18,18 @@ export class FileService { capturedImage:any; capturedImageTitle:any; + documents:SearchList[] = []; + showLoader: boolean; constructor( private camera: Camera, private fileLoaderService: FileLoaderService, private fileToBase64Service: FileToBase64Service, private iab: InAppBrowser, + private chatService: ChatService, + private modalController: ModalController, + private processesService: ProcessesService, + private toastService: ToastService, ) { } takePicture() { @@ -71,6 +83,168 @@ export class FileService { }; } + addCameraPictureToChat(roomId){ + let data = this.takePicture(); + if(data.name != null){ + let body = { + "message": + { + "rid": roomId, + "msg": "", + "attachments": [{ + "title": data.name, + "title_link_download": false, + "image_url": data.image, + }] + } + } + this.chatService.sendMessage(body).subscribe(res=> { + console.log(res); + },(error) => { + + }); + } + else{ + this.toastService.badRequest("Não foi possível adicionar a fotografia!"); + } + } + + addPictureToChat(roomId:string) { + const input = this.fileLoaderService.createInput({ + accept: ['image/apng', 'image/jpeg', 'image/png'] + }) + + input.onchange = async () => { + + const file = this.fileLoaderService.getFirstFile(input) + + console.log(file); + const loader = this.toastService.loading(); + + const imageData = await this.fileToBase64Service.convert(file) + this.capturedImage = imageData; + this.capturedImageTitle = file.name; + + let body = { + "message": + { + "rid": roomId, + "msg": "", + "attachments": [{ + //"title": this.capturedImageTitle , + //"text": "description", + "title_link_download": false, + "image_url": this.capturedImage, + }] + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + loader.remove(); + //console.log(res); + },(error) => { + loader.remove(); + }); + //console.log(this.capturedImage) + }; + } + + addDocumentToChat(roomId:string) { + const input = this.fileLoaderService.createInput({ + accept: ['.doc', '.docx', '.pdf'] + }) + + input.onchange = async () => { + const loader = this.toastService.loading(); + const file = this.fileLoaderService.getFirstFile(input) + + console.log(file); + + const imageData = await this.fileToBase64Service.convert(file) + this.capturedImage = imageData; + this.capturedImageTitle = file.name; + + let body = { + "message": + { + "rid": roomId, + "msg": "", + "attachments": [{ + "title": this.capturedImageTitle, + "text": "", + "title_link": this.capturedImage, + "title_link_download": true, + "thumb_url": "https://static.ichimura.ed.jp/uploads/2017/10/pdf-icon.png", + "message_link": this.capturedImage, + }], + "file":{ + "name": this.capturedImageTitle, + "type": "application/pdf", + } + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + loader.remove(); + //console.log(res); + },(error) => { + loader.remove(); + }); + //console.log(this.capturedImage) + }; + } + + async addDocGestaoDocumentalToChat(roomId:string){ + const modal = await this.modalController.create({ + component: SearchPage, + cssClass: 'group-messages modal-desktop search-modal search-modal-to-desktop', + componentProps: { + type: 'AccoesPresidenciais & ArquivoDespachoElect', + select: true, + showSearchInput: true, + } + }); + await modal.present(); + modal.onDidDismiss().then(async res=>{ + if(res){ + const loader = this.toastService.loading(); + const data = res.data; + this.documents.push(data.selected); + console.log(res.data.selected); + console.log(res.data.selected.Id); + console.log(res.data.selected.ApplicationType); + + let url = await this.processesService.GetDocumentUrl(res.data.selected.Id, res.data.selected.ApplicationType).toPromise(); + let url_no_options: string = url.replace("webTRIX.Viewer","webTRIX.Viewer.Branch1"); + console.log(url_no_options); + console.log('Oie'); + + let body = { + "message": + { + "rid": roomId, + "msg": "", + "attachments": [{ + "title": res.data.selected.Assunto, + "text": res.data.selected.DocTypeDesc, + "title_link": url_no_options, + "title_link_download": true, + "thumb_url": "https://static.ichimura.ed.jp/uploads/2017/10/pdf-icon.png", + "message_link": url_no_options, + }] + } + } + this.chatService.sendMessage(body).subscribe(res=> { + loader.remove(); + console.log(res); + },(error) => { + loader.remove(); + }); + + } + }); + } + viewDocumentByUrl(url) { const browser = this.iab.create(url,"_blank"); browser.show(); diff --git a/src/app/shared/chat/group-messages/group-messages.module.ts b/src/app/shared/chat/group-messages/group-messages.module.ts index 0e76cfcae..adfdf76b5 100644 --- a/src/app/shared/chat/group-messages/group-messages.module.ts +++ b/src/app/shared/chat/group-messages/group-messages.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from '@angular/core'; +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; @@ -12,15 +12,21 @@ import { SharedModule } from 'src/app/shared/shared.module'; import { ChatPopoverPageModule } from '../../popover/chat-popover/chat-popover.module'; import { NewEventPageModule } from '../../agenda/new-event/new-event.module'; +import { PdfViewerModule } from 'ng2-pdf-viewer'; + @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, + PdfViewerModule, ChatPopoverPageModule, GroupMessagesPageRoutingModule, + + ], exports: [GroupMessagesPage], + schemas: [CUSTOM_ELEMENTS_SCHEMA], declarations: [GroupMessagesPage] }) export class GroupMessagesPageModule {} diff --git a/src/app/shared/chat/group-messages/group-messages.page.html b/src/app/shared/chat/group-messages/group-messages.page.html index 93e2c0972..faf23e61f 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.html +++ b/src/app/shared/chat/group-messages/group-messages.page.html @@ -16,7 +16,7 @@
- + {{member.name}},
@@ -25,7 +25,6 @@ - @@ -38,6 +37,7 @@ Esta conversa passou a grupo
A conversa original mantêm-se como chat individual +
@@ -49,15 +49,24 @@
image -
+
- + image +

{{file.title}}

{{file.text}}

+ +
diff --git a/src/app/shared/chat/group-messages/group-messages.page.scss b/src/app/shared/chat/group-messages/group-messages.page.scss index dbc4127ba..6dc562742 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.scss +++ b/src/app/shared/chat/group-messages/group-messages.page.scss @@ -31,7 +31,7 @@ } } .header-bottom{ - width: 95%; + width: 98%; overflow: auto; .header-bottom-icon{ @@ -42,6 +42,7 @@ } .header-bottom-contacts{ + width: calc(100% - 40px); font-size: 15px; color: #797979; white-space: nowrap; @@ -50,6 +51,12 @@ float: left; padding: 5px; margin: 1px; + + .contacts-list{ + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis !important; + } } } diff --git a/src/app/shared/chat/group-messages/group-messages.page.ts b/src/app/shared/chat/group-messages/group-messages.page.ts index c75650f5a..4216d8563 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.ts +++ b/src/app/shared/chat/group-messages/group-messages.page.ts @@ -18,6 +18,15 @@ import { SearchList } from 'src/app/models/search-document'; import { ProcessesService } from 'src/app/services/processes.service'; import { FileService } from 'src/app/services/functions/file.service'; + +/* +import * as pdfjsLib from 'pdfjs-dist'; +if( pdfjsLib !== undefined ){ + console.log( "set worker..."); + pdfjsLib.GlobalWorkerOptions.workerSrc = "https://npmcdn.com/pdfjs-dist@2.4.456/build/pdf.worker.js"; +} +*/ + @Component({ selector: 'app-group-messages', templateUrl: './group-messages.page.html', @@ -56,6 +65,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe @ViewChild('scrollMe') private myScrollContainer: ElementRef; + pdfurl = "http://www.africau.edu/images/default/sample.pdf"; + constructor( private menu: MenuController, private modalController: ModalController, @@ -74,6 +85,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe ) { this.loggedUserChat = authService.ValidatedUserChat['data']; this.isGroupCreated = true; + } ngOnChanges(changes: SimpleChanges): void { //this.getRoomInfo(); @@ -87,15 +99,54 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe console.log(this.roomId); this.setStatus('online'); this.getChatMembers(); + + /* pdfjs.Lib.getDocument('sample.pdf').promise.then((doc)=>{ + console.log(doc); + + }) */ + //this.loadPDF(); } + /* loadPDF() { + const loadingTask = pdfjsLib.getDocument( this.pdfurl ); + loadingTask.promise.then((pdf) => { + console.log( "pdf: ", pdf ); + console.log('PDF loaded'); + + // Fetch the first page + var pageNumber = 1; + pdf.getPage(pageNumber).then(function(page) { + console.log('Page loaded'); + + var scale = 1.5; + var viewport = page.getViewport({scale: scale}); + + // Prepare canvas using PDF page dimensions + var canvas: any = document.getElementById('pdf_canvas'); + var context = canvas.getContext('2d'); + canvas.height = viewport.height; + canvas.width = viewport.width; + + // Render PDF page into canvas context + var renderContext = { + canvasContext: context, + viewport: viewport + }; + var renderTask = page.render(renderContext); + renderTask.promise.then(function () { + console.log('Page rendered'); + }); + }); + }); + } */ + setStatus(status:string){ let body = { message: '', status: status, } this.chatService.setUserStatus(body).subscribe(res => { - console.log(res); + //console.log(res); }) } @@ -132,10 +183,10 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe async getChatMembers(){ //return await this.chatService.getMembers(roomId).toPromise(); this.chatService.getAllUsers().subscribe(res=> { - console.log(res); + //console.log(res); this.allUsers = res['users'].filter(data => data.username != this.loggedUserChat.me.username); - console.log(this.allUsers); + //console.log(this.allUsers); }); } @@ -187,7 +238,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe //If group is private call getGroupMembers if(room.t === 'p'){ this.chatService.getGroupMembers(this.roomId).subscribe(res=>{ - console.log(res); + //console.log(res); this.members = res['members']; this.showLoader = false; }); @@ -214,7 +265,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe console.log(res); let msgOnly = res['messages'].filter(data => data.t != 'au'); this.messages = msgOnly.reverse(); - console.log(res); + //console.log(res); this.showLoader = false; }); @@ -438,6 +489,49 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe }; } + loadDocument() { + const input = this.fileLoaderService.createInput({ + accept: ['.doc', '.docx', '.pdf'] + }) + + input.onchange = async () => { + const file = this.fileLoaderService.getFirstFile(input) + + console.log(file); + + const imageData = await this.fileToBase64Service.convert(file) + this.capturedImage = imageData; + this.capturedImageTitle = file.name; + + let body = { + "message": + { + "rid": this.roomId, + "msg": "", + "attachments": [{ + "title": this.capturedImageTitle, + "text": "", + "title_link": this.capturedImage, + "title_link_download": true, + "thumb_url": "https://static.ichimura.ed.jp/uploads/2017/10/pdf-icon.png", + "message_link": this.capturedImage, + }], + "file":{ + "name": this.capturedImageTitle, + "type": "application/pdf", + } + } + } + + this.chatService.sendMessage(body).subscribe(res=> { + //console.log(res); + },(error) => { + + }); + //console.log(this.capturedImage) + }; + } + async addDocGestaoDocumental(){ const modal = await this.modalController.create({ component: SearchPage, @@ -529,7 +623,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe await modal.present(); modal.onDidDismiss().then((res)=>{ - console.log(res['data']); + //console.log(res['data']); if(res['data'] == 'meeting'){ //this.closeAllDesktopComponents.emit(); let data = { @@ -538,9 +632,12 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } this.openNewEventPage.emit(data); } - else if(res['data'] == 'picture'){ + else if(res['data'] == 'add-picture'){ this.loadPicture(); } + else if(res['data'] == 'add-document'){ + this.loadDocument(); + } else if(res['data'] == 'documentoGestaoDocumental'){ this.addDocGestaoDocumental(); } @@ -565,13 +662,13 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe console.log(this.messages); // Reconnect in one second if(this.route.url != "/home/chat"){ - console.log("Timer message stop") + //console.log("Timer message stop") } else { if(document.querySelector('app-group-messages')){ await new Promise(resolve => setTimeout(resolve,3000)); await this.serverLongPull(); this.getGroups.emit(); - console.log('Timer message running') + //console.log('Timer message running') } else{ diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html index 14bbc4c1a..855ed613e 100644 --- a/src/app/shared/chat/messages/messages.page.html +++ b/src/app/shared/chat/messages/messages.page.html @@ -39,6 +39,23 @@
{{msg.msg}} +
+
+ image +
+
+ + image + + + +

{{file.title}}

+

{{file.text}}

+
+
+
+
+
{{last ? scrollToBottom() : ''}}
diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 3e8bccfc4..8fbf4ce18 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -13,6 +13,7 @@ import { ChatOptionsFeaturesPage } from 'src/app/modals/chat-options-features/ch import { ChatMessageStore } from 'src/app/store/chat/chat-message.service'; import { ChatUserStorage } from 'src/app/store/chat/chat-user.service'; import { TimeService } from 'src/app/services/functions/time.service'; +import { FileService } from 'src/app/services/functions/file.service'; @Component({ selector: 'app-messages', @@ -61,6 +62,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy private toastService: ToastService, private route: Router, private timeService: TimeService, + private fileService: FileService, ) { this.loggedUser = authService.ValidatedUserChat['data']; @@ -191,6 +193,10 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy }) } + viewDocument(url:string){ + this.fileService.viewDocumentByUrl(url); + } + getChatMembers() { console.log(this.roomId); @@ -350,6 +356,20 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy } this.openNewEventPage.emit(data); } + else if(res['data'] == 'add-picture'){ + this.fileService.addPictureToChat(this.roomId); + //this.loadPicture(); + } + else if(res['data'] == 'add-document'){ + this.fileService.addDocumentToChat(this.roomId); + //this.loadDocument(); + } + else if(res['data'] == 'documentoGestaoDocumental'){ + + this.fileService.addDocGestaoDocumentalToChat(this.roomId); + this.showLoader = false; + //this.addDocGestaoDocumental(); + } }); } diff --git a/src/app/shared/popover/chat-options-popover/chat-options-popover.page.html b/src/app/shared/popover/chat-options-popover/chat-options-popover.page.html index 733469865..9a1c3a09a 100644 --- a/src/app/shared/popover/chat-options-popover/chat-options-popover.page.html +++ b/src/app/shared/popover/chat-options-popover/chat-options-popover.page.html @@ -8,9 +8,9 @@ - +
- +
diff --git a/src/app/shared/popover/chat-options-popover/chat-options-popover.page.ts b/src/app/shared/popover/chat-options-popover/chat-options-popover.page.ts index ef47957ae..7aea36628 100644 --- a/src/app/shared/popover/chat-options-popover/chat-options-popover.page.ts +++ b/src/app/shared/popover/chat-options-popover/chat-options-popover.page.ts @@ -47,19 +47,28 @@ export class ChatOptionsPopoverPage implements OnInit { takePicture(){ if( window.innerWidth < 701){ - this.popoverController.dismiss('takePicture'); + this.popoverController.dismiss('take-picture'); } else{ - this.modalController.dismiss('takePicture'); + this.modalController.dismiss('take-picture'); } } anexarFoto(){ if( window.innerWidth < 701){ - this.popoverController.dismiss('loadPicture'); + this.popoverController.dismiss('add-picture'); } else{ - this.modalController.dismiss('loadPicture'); + this.modalController.dismiss('add-picture'); + } + } + + addDocGestaoDocumental(){ + if( window.innerWidth < 701){ + this.popoverController.dismiss('documentoGestaoDocumental'); + } + else{ + this.modalController.dismiss('documentoGestaoDocumental'); } } @@ -97,6 +106,7 @@ export class ChatOptionsPopoverPage implements OnInit { } } */ + async getDoc(){ const modal = await this.modalController.create({ component: SearchPage, diff --git a/src/index.html b/src/index.html index 553bfaa3f..b2adebd28 100644 --- a/src/index.html +++ b/src/index.html @@ -9,6 +9,7 @@ +