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..40c40b512 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 @@ -5,12 +5,12 @@
- - - + + +
- +
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..f10cc16cc 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,21 @@ export class ChatOptionsFeaturesPage implements OnInit { } - anexarFoto(){ - this.modalController.dismiss('picture'); + addDocument(){ + this.modalController.dismiss('add-document'); + } + + takePicture(){ + if( window.innerWidth < 701){ + this.popoverController.dismiss('take-picture'); + } + else{ + this.modalController.dismiss('take-picture'); + } + } + + addPicture(){ + this.modalController.dismiss('add-picture'); } addDocGestaoDocumental(){ diff --git a/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.ts b/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.ts index 1837fb12c..4a0227d18 100644 --- a/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.ts +++ b/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.ts @@ -272,10 +272,12 @@ export class DocumentSetUpMeetingPage implements OnInit { await this.eventService.addAttachment(attachments).toPromise(); }); */ + this.toastService.successMessage('Reunião criada') laoder.remove() this.modalController.dismiss() - - }) + },(error) => { + this.toastService.badRequest('Não foi possível marcar a reunião'); + }); } 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/agenda/agenda.page.html b/src/app/pages/agenda/agenda.page.html index 6711edcf9..d1b28a770 100644 --- a/src/app/pages/agenda/agenda.page.html +++ b/src/app/pages/agenda/agenda.page.html @@ -35,8 +35,60 @@ -

{{ viewTitle }}

- + + + + + + {{file.title}} + + + +
+ + {{file.description}} + + {{msg.file.type.replace('application/','').toUpperCase()}} + +
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..cdb1d2a26 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,34 +368,28 @@ 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(); } + this.loadGroupMessages(this.roomId); }); } @@ -400,7 +426,8 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { await modal.present(); modal.onDidDismiss().then((res)=>{ console.log(res.data); - this.modalController.dismiss(res.data); + this.getRoomInfo(); + //this.modalController.dismiss(res.data); }); } diff --git a/src/app/pages/chat/messages/messages.module.ts b/src/app/pages/chat/messages/messages.module.ts index bfcf1d45d..a6e1c19f6 100644 --- a/src/app/pages/chat/messages/messages.module.ts +++ b/src/app/pages/chat/messages/messages.module.ts @@ -9,6 +9,7 @@ import { MessagesPageRoutingModule } from './messages-routing.module'; import { MessagesPage } from './messages.page'; import { SharedModule } from 'src/app/shared/shared.module'; import { BtnModalDismissPage } from 'src/app/shared/btn-modal-dismiss/btn-modal-dismiss.page'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @NgModule({ @@ -16,7 +17,7 @@ import { BtnModalDismissPage } from 'src/app/shared/btn-modal-dismiss/btn-modal- CommonModule, FormsModule, IonicModule, - + FontAwesomeModule, MessagesPageRoutingModule ], declarations: [MessagesPage] diff --git a/src/app/pages/chat/messages/messages.page.html b/src/app/pages/chat/messages/messages.page.html index 13eff3f66..9c38399f3 100644 --- a/src/app/pages/chat/messages/messages.page.html +++ b/src/app/pages/chat/messages/messages.page.html @@ -43,6 +43,33 @@
{{msg.msg}} +
+
+ image +
+
+
+ + + + + + + {{file.title}} + + +
+
+ + {{file.description}} + + {{msg.file.type.replace('application/','').toUpperCase()}} + +
+
+
+
+
{{last ? scrollToBottom() : ''}}
diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 0408cc09e..d9ac2fbfb 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,32 @@ 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(); + } + this.loadMessages(); + + }); } async serverLongPull() { @@ -276,7 +340,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { // happens when the synchro was pending for too long // let's reconnect await this.serverLongPull(); - } else if (res != 200) { + } + else if (res != 200) { // Show Error //showMessage(response.statusText); //this.loadMessages() diff --git a/src/app/pages/events/events.page.html b/src/app/pages/events/events.page.html index 5e192894f..e6e5afaf3 100644 --- a/src/app/pages/events/events.page.html +++ b/src/app/pages/events/events.page.html @@ -17,8 +17,6 @@ - - @@ -44,8 +42,6 @@
- -
- +
diff --git a/src/app/pages/events/events.page.ts b/src/app/pages/events/events.page.ts index 273348121..8beaab76f 100644 --- a/src/app/pages/events/events.page.ts +++ b/src/app/pages/events/events.page.ts @@ -65,6 +65,9 @@ export class EventsPage implements OnInit { toDayEventStorage = ToDayEventStorage expedienteGdStore = ExpedienteGdStore + + pdfSrc = "https://www.tabularium.pt/file-upload/FSovLiyEa8Hqy2iDA/TK-Justificativo.pdf"; + expedienteTaskPipe = new ExpedienteTaskPipe() @Output() openExpedientListPage:EventEmitter = new EventEmitter(); diff --git a/src/app/services/ageanda/list-box.service.spec.ts b/src/app/services/agenda/list-box.service.spec.ts similarity index 100% rename from src/app/services/ageanda/list-box.service.spec.ts rename to src/app/services/agenda/list-box.service.spec.ts diff --git a/src/app/services/ageanda/list-box.service.ts b/src/app/services/agenda/list-box.service.ts similarity index 100% rename from src/app/services/ageanda/list-box.service.ts rename to src/app/services/agenda/list-box.service.ts diff --git a/src/app/services/functions/file.service.ts b/src/app/services/functions/file.service.ts index 172e87ba4..037f7031a 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,174 @@ 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=>{ + const data = res.data; + + if(data.selected){ + const loader = this.toastService.loading(); + + 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, + "description": res.data.selected.DocTypeDesc, + "title_link": url_no_options, + "title_link_download": true, + //"thumb_url": "assets/images/webtrix-logo.png", + "message_link": url_no_options, + }], + "file":{ + "name": res.data.selected.Assunto, + "type": "application/webtrix" + } + } + } + this.chatService.sendMessage(body).subscribe(res=> { + loader.remove(); + console.log(res); + },(error) => { + loader.remove(); + }); + 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..5bb1d5128 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'; @@ -11,16 +11,22 @@ 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'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, + FontAwesomeModule, + 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..2ee87572b 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,26 @@
image -
-
- - image - - -

{{file.title}}

-

{{file.text}}

-
+
+
+
+ + + + + + + {{file.title}} + + +
+
+ + {{file.description}} + + {{msg.file.type.replace('application/','').toUpperCase()}} + +
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..cfe8a412a 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.scss +++ b/src/app/shared/chat/group-messages/group-messages.page.scss @@ -1,4 +1,7 @@ @import '~src/function.scss'; + div{ + overflow: auto; + } .header-toolbar{ --background:transparent; --opacity: 1; @@ -31,7 +34,7 @@ } } .header-bottom{ - width: 95%; + width: 98%; overflow: auto; .header-bottom-icon{ @@ -42,6 +45,7 @@ } .header-bottom-contacts{ + width: calc(100% - 40px); font-size: 15px; color: #797979; white-space: nowrap; @@ -50,6 +54,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..acd1760d4 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,54 +632,68 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } this.openNewEventPage.emit(data); } - else if(res['data'] == 'picture'){ - this.loadPicture(); + 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.loadDocument(); } else if(res['data'] == 'documentoGestaoDocumental'){ - this.addDocGestaoDocumental(); + this.fileService.addDocGestaoDocumentalToChat(this.roomId); + //this.addDocGestaoDocumental(); } + this.loadGroupMessages(this.roomId); }); } async serverLongPull(){ - this.chatService.getPrivateGroupMessages(this.roomId).subscribe(async res => { - if (res == 502) { - // Connection timeout - // happens when the connection was pending for too long - // let's reconnect - await this.serverLongPull(); - } else if (res != 200) { - // Show Error - //showMessage(response.statusText); - //this.loadMessages() - let msgOnly = res['messages'].filter(data => data.t != 'au'); - this.messages = msgOnly.reverse(); - console.log(this.messages); - // Reconnect in one second - if(this.route.url != "/home/chat"){ - 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') - } - else{ - - } - } - - } else { - // Got message - //let message = await response.text(); - //this.loadMessages() - await this.serverLongPull(); + if(this.route.url != "/home/chat" && document.querySelector('app-group-messages')){ + console.log("Timer message stop") + } + else + { + + this.chatService.getPrivateGroupMessages(this.roomId).subscribe(async res => + { + if(res['success'] == true) { + // Show Error + //showMessage(response.statusText); + //this.loadMessages() + let msgOnly = res['messages'].filter(data => data.t != 'au'); + this.messages = msgOnly.reverse(); + console.log(this.messages); + // Reconnect in one second + + if(document.querySelector('app-group-messages')){ + await new Promise(resolve => setTimeout(resolve,5000)); + this.getGroups.emit(); + console.log('Timer message running') + await this.serverLongPull(); + } + + } + else { + alert('HEY2') + // Got message + //let message = await response.text(); + //this.loadMessages() + await this.serverLongPull(); + } + }, (error)=>{ + console.log(error); + this.serverLongPull(); + }); } - }); } + + } diff --git a/src/app/shared/chat/messages/messages.module.ts b/src/app/shared/chat/messages/messages.module.ts index 209edd0a0..c30940c65 100644 --- a/src/app/shared/chat/messages/messages.module.ts +++ b/src/app/shared/chat/messages/messages.module.ts @@ -8,12 +8,14 @@ import { MessagesPageRoutingModule } from './messages-routing.module'; import { MessagesPage } from './messages.page'; import { SharedModule } from 'src/app/shared/shared.module'; +import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @NgModule({ imports: [ CommonModule, FormsModule, IonicModule, + FontAwesomeModule, MessagesPageRoutingModule ], exports: [MessagesPage], diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html index 14bbc4c1a..6727cbe35 100644 --- a/src/app/shared/chat/messages/messages.page.html +++ b/src/app/shared/chat/messages/messages.page.html @@ -39,6 +39,31 @@
{{msg.msg}} +
+
+ image +
+
+ + + + + + + {{file.title}} + + +
+
+ + {{file.description}} + + {{msg.file.type.replace('application/','').toUpperCase()}} + +
+
+
+
{{last ? scrollToBottom() : ''}}
diff --git a/src/app/shared/chat/messages/messages.page.scss b/src/app/shared/chat/messages/messages.page.scss index 657d5510a..127bf4a5c 100644 --- a/src/app/shared/chat/messages/messages.page.scss +++ b/src/app/shared/chat/messages/messages.page.scss @@ -151,7 +151,29 @@ margin-left: 10px; float: right; } - } + } + .message{ + .message-attachments{ + .file{ + align-items: center; + + .file-details{ + width: 100%; + + .file-title{ + color: #000; + text-decoration: underline; + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis !important; + } + .file-title:hover{ + color: #0782c9; + } + } + } + } + } } ion-footer{ diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 3e8bccfc4..e63dca9bf 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']; @@ -137,6 +139,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy this.scrollingOnce = false; } this.currentPosition = scroll; + /* console.log(this.currentPosition); + console.log(this.scrollingOnce); */ } ngOnDestroy() { @@ -191,6 +195,10 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy }) } + viewDocument(url:string){ + this.fileService.viewDocumentByUrl(url); + } + getChatMembers() { console.log(this.roomId); @@ -350,44 +358,67 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy } this.openNewEventPage.emit(data); } + 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.showLoader = false; + //this.addDocGestaoDocumental(); + } + this.loadMessages(); }); } async serverLongPull() { - const roomId = this.roomId - this.chatService.getRoomMessages(this.roomId).subscribe(async res => { + const roomId = this.roomId; - if (res == 502) { - // Connection timeout - // happens when the connection was pending for too long - // let's reconnect - await this.serverLongPull(); - } else if (res != 200) { + this.chatService.getRoomMessages(this.roomId).subscribe(async res => { + console.log(res['success']); + + + if (res['success'] == true) { // Show Error //showMessage(response.statusText); //this.loadMessages() this.messages = res['messages'].reverse(); this.chatMessageStore.add(roomId, this.messages) + console.log(this.messages); // Reconnect in one second if(this.route.url != "/home/chat"){ console.log("Timer message stop") - } else { - if(document.querySelector('app-messages')){ - await new Promise(resolve => setTimeout(resolve, 5000)); - await this.serverLongPull(); - this.getDirectMessages.emit(); - console.log('Timer message running') - } } - } else { + else{ + if(document.querySelector('app-messages')){ + await new Promise(resolve => setTimeout(resolve, 5000)); + await this.serverLongPull(); + this.getDirectMessages.emit(); + console.log('Timer message running') + } + } + } /* else { // Got message //let message = await response.text(); //this.loadMessages() await this.serverLongPull(); - } + } */ + }, (error)=>{ + console.log(error); + this.serverLongPull(); + }); } 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/app/shared/popover/chat-popover/chat-popover.page.ts b/src/app/shared/popover/chat-popover/chat-popover.page.ts index ca1d0742b..20ee26e35 100644 --- a/src/app/shared/popover/chat-popover/chat-popover.page.ts +++ b/src/app/shared/popover/chat-popover/chat-popover.page.ts @@ -111,8 +111,12 @@ export class ChatPopoverPage implements OnInit { } async openChangeGroupName(){ - this.popoverController.dismiss('edit'); - this.modalController.dismiss('edit'); + if( window.innerWidth < 701){ + this.popoverController.dismiss('edit'); + } + else{ + this.modalController.dismiss('edit'); + } } } diff --git a/src/assets/icon/webtrix.svg b/src/assets/icon/webtrix.svg new file mode 100644 index 000000000..fcf80f480 --- /dev/null +++ b/src/assets/icon/webtrix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/pdf.png b/src/assets/images/pdf.png new file mode 100644 index 000000000..c556019cb Binary files /dev/null and b/src/assets/images/pdf.png differ diff --git a/src/assets/images/webtrix-logo.png b/src/assets/images/webtrix-logo.png new file mode 100644 index 000000000..94498f472 Binary files /dev/null and b/src/assets/images/webtrix-logo.png differ diff --git a/src/global.scss b/src/global.scss index 444d76438..1b1a38085 100644 --- a/src/global.scss +++ b/src/global.scss @@ -1072,6 +1072,48 @@ ngx-mat-datetime-content{ } } +.message-attachments{ + border-radius: 5px; + background-color: #42b9fe13; + padding: 1px; + .file{ + ion-thumbnail{ + --size: 20px; + } + .file-details{ + max-width: calc(100% - 20px); + padding-left: 5px; + + .file-title:hover{ + color: #0782c9; + text-decoration: underline; + } + + span{ + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis !important; + } + .pdf-icon{ + color: #a40404; + } + .word-icon{ + color: #295497; + } + .excel-icon{ + color: #1f7244; + } + .powerpoint-icon{ + color: #d24726; + } + } + } + .file-details-optional{ + font-size: xx-small; + padding-left: 5px; + } +} + @media only screen and (min-width: 665px) { .loading-blocker { 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 @@ +