diff --git a/readme.md b/readme.md index 09df7201d..1410e0477 100644 --- a/readme.md +++ b/readme.md @@ -20,6 +20,7 @@ npm install -g cordova-res ## Mobile first dependencies cordova plugin add cordova-plugin-mfp-jsonstore cordova plugin add cordova-plugin-mfp +ionic cordova plugin add cordova-plugin-network-information ## memory leak set NODE_OPTIONS=--max_old_space_size=10096 diff --git a/src/app/modals/document-detail/document-detail.page.html b/src/app/modals/document-detail/document-detail.page.html index 58f777140..0c5240aa5 100644 --- a/src/app/modals/document-detail/document-detail.page.html +++ b/src/app/modals/document-detail/document-detail.page.html @@ -79,8 +79,8 @@
- - + +
diff --git a/src/app/models/fileType.ts b/src/app/models/fileType.ts new file mode 100644 index 000000000..2a7fdf744 --- /dev/null +++ b/src/app/models/fileType.ts @@ -0,0 +1,11 @@ +export let FileType: +"image/apng" | +"image/bmp" | +"image/gif" | +"image/jpeg" | +"image/pjpeg" | +"image/png" | +"image/svg+xml" | +"image/tiff" | +"image/webp" | +"image/x-icon" \ No newline at end of file diff --git a/src/app/models/synchro.ts b/src/app/models/synchro.ts new file mode 100644 index 000000000..69ccd1e8d --- /dev/null +++ b/src/app/models/synchro.ts @@ -0,0 +1,12 @@ +export interface wss{ + + url: string, + type: 'reflect' | 'emit' + header: { + id: string + bluePrint: string, + jwt: string + } + + } + \ No newline at end of file diff --git a/src/app/pages/agenda/event-actions-popover/event-actions-popover.page.html b/src/app/pages/agenda/event-actions-popover/event-actions-popover.page.html index 2be952653..23cf62d3b 100644 --- a/src/app/pages/agenda/event-actions-popover/event-actions-popover.page.html +++ b/src/app/pages/agenda/event-actions-popover/event-actions-popover.page.html @@ -6,7 +6,7 @@
- +
diff --git a/src/app/pages/agenda/view-event/view-event.page.ts b/src/app/pages/agenda/view-event/view-event.page.ts index 602b61ae7..401e4462e 100644 --- a/src/app/pages/agenda/view-event/view-event.page.ts +++ b/src/app/pages/agenda/view-event/view-event.page.ts @@ -130,7 +130,7 @@ export class ViewEventPage implements OnInit { }, (error)=>{ if(error.status == 0) { - this.toastService.badRequest('não é possível vizualizar este event no modo offline') + this.toastService.badRequest('Não é possível vizualizar este evento no modo offline') } else { this.toastService.badRequest('Este evento já não existe na sua agenda') } diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 6efe623ee..8cea9c12e 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -22,7 +22,7 @@ import { EditGroupPage } from 'src/app/shared/chat/edit-group/edit-group.page'; import * as Rx from "rxjs/Rx"; import { Message } from 'src/app/models/message.model'; import { Observable, Subject } from "rxjs/Rx"; -import { Router } from '@angular/router'; +import { NavigationStart, NavigationEnd, Router } from '@angular/router'; import { EventPerson } from 'src/app/models/eventperson.model'; import { removeDuplicate } from 'src/plugin/removeDuplicate.js' import { environment } from 'src/environments/environment'; @@ -119,6 +119,7 @@ export class ChatPage implements OnInit { ){ this.loggedUserChat = authService.ValidatedUserChat['data']; this.headers = new HttpHeaders(); + } ngOnInit() { @@ -142,6 +143,23 @@ export class ChatPage implements OnInit { //Teste let t = this.showDateDuration(new Date()); console.log(t); + + this.setStatus('away'); +} + +ngOnDestroy(){ + this.setStatus('offline'); + console.log('On Destroy') +} + +setStatus(status:string){ + let body = { + message: '', + status: status, + } + this.chatService.setUserStatus(body).subscribe(res => { + console.log(res); + }) } hideRefreshButton(){ 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 d102fd9b4..3e336a143 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.html +++ b/src/app/pages/chat/group-messages/group-messages.page.html @@ -39,7 +39,7 @@ Esta conversa passou a grupo
A conversa original mantêm-se como chat individual
-
+
{{msg.u.name}} @@ -47,6 +47,7 @@
{{msg.msg}} + {{last ? scrollToBottom() : ''}}
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 512c3397f..7b388bd9e 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.ts +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, OnInit, ViewChild, AfterViewChecked } from '@angular/core'; +import { Component, ElementRef, OnInit, ViewChild, AfterViewChecked, AfterViewInit, OnDestroy } from '@angular/core'; import { ActionSheetController, MenuController, ModalController, NavParams, PopoverController } from '@ionic/angular'; import { AlertService } from 'src/app/services/alert.service'; import { AuthService } from 'src/app/services/auth.service'; @@ -16,7 +16,7 @@ import { EditGroupPage } from '../edit-group/edit-group.page'; templateUrl: './group-messages.page.html', styleUrls: ['./group-messages.page.scss'], }) -export class GroupMessagesPage implements OnInit, AfterViewChecked { +export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { showLoader: boolean; isGroupCreated:boolean; loggedUser: any; @@ -33,6 +33,11 @@ export class GroupMessagesPage implements OnInit, AfterViewChecked { loggedUserChat:any; eventSelectedDate: Date = new Date(); + scrollingOnce:boolean = true; + private scrollChangeCallback: () => void; + currentPosition: any; + startPosition: number; + @ViewChild('scrollMe') private myScrollContainer: ElementRef; constructor( @@ -57,15 +62,48 @@ export class GroupMessagesPage implements OnInit, AfterViewChecked { this.getRoomInfo(); this.scrollToBottom(); this.serverLongPull(); + this.setStatus('online'); } - ngAfterViewChecked() { - //this.scrollToBottom(); + setStatus(status:string){ + let body = { + message: '', + status: status, + } + this.chatService.setUserStatus(body).subscribe(res => { + console.log(res); + }) + } + + ngAfterViewInit() { + this.scrollChangeCallback = () => this.onContentScrolled(event); + window.addEventListener('scroll', this.scrollChangeCallback, true); + } + + onContentScrolled(e) { + this.startPosition = e.srcElement.scrollTop; + let scroll = e.srcElement.scrollTop; + if (scroll > this.currentPosition) { + //this.showButton = false; + //alert('BOTTOM'); + } else { + //this.showButton = true; + //alert('UP'); + this.scrollingOnce = false; + } + this.currentPosition = scroll; + } + + ngOnDestroy() { + window.removeEventListener('scroll', this.scrollChangeCallback, true); } scrollToBottom(): void { try { - this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + if(this.scrollingOnce){ + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + //this.scrollingOnce = false; + } } catch(err) { } } @@ -181,6 +219,7 @@ export class GroupMessagesPage implements OnInit, AfterViewChecked { this.chatService.sendMessage(body).subscribe(res=> { this.getRoomInfo(); + this.scrollingOnce = true; },(error) => { @@ -302,7 +341,8 @@ export class GroupMessagesPage implements OnInit, AfterViewChecked { // Show Error //showMessage(response.statusText); //this.loadMessages() - this.messages = res['messages'].filter(data => data.t != 'au'); + 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"){ diff --git a/src/app/pages/chat/messages/messages.page.html b/src/app/pages/chat/messages/messages.page.html index c458eae00..8ededb7ad 100644 --- a/src/app/pages/chat/messages/messages.page.html +++ b/src/app/pages/chat/messages/messages.page.html @@ -36,13 +36,14 @@
-
+
{{msg.u.name}} {{showDateDuration(msg._updatedAt)}}
{{msg.msg}} + {{last ? scrollToBottom() : ''}}
diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index 524a9532c..52fcb613a 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -1,4 +1,4 @@ -import { AfterViewChecked, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; +import { AfterViewChecked, AfterViewInit, Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router' import { ModalController, NavParams, PopoverController } from '@ionic/angular'; import { ContactsPage } from 'src/app/pages/chat/messages/contacts/contacts.page'; @@ -15,7 +15,7 @@ import { MessagesOptionsPage } from 'src/app/shared/popover/messages-options/mes templateUrl: './messages.page.html', styleUrls: ['./messages.page.scss'], }) -export class MessagesPage implements OnInit, AfterViewChecked { +export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { showLoader: boolean; @ViewChild('scrollMe') private myScrollContainer: ElementRef; @@ -29,8 +29,13 @@ export class MessagesPage implements OnInit, AfterViewChecked { roomId:string; el:any; members:any; + scrollingOnce:boolean = true; - connection = connection + connection = connection; + + private scrollChangeCallback: () => void; + currentPosition: any; + startPosition: number; constructor( public popoverController: PopoverController, @@ -54,14 +59,23 @@ export class MessagesPage implements OnInit, AfterViewChecked { ngOnInit() { - this.scrollToBottom(); - /* setInterval(()=>{ */ this.load(); /* }, 9000); */ /* this.el = document.getElementById("scrollToBottom"); this.el.scrollTop = this.el.scrollHeight - this.el.scrollTop; */ + this.setStatus('online'); + } + + setStatus(status:string){ + let body = { + message: '', + status: status, + } + this.chatService.setUserStatus(body).subscribe(res => { + console.log(res); + }) } notImplemented(){ @@ -82,16 +96,40 @@ export class MessagesPage implements OnInit, AfterViewChecked { ev.target.complete(); } - ngAfterViewChecked() { - //this.scrollToBottom(); - } - scrollToBottom(): void { try { - this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + if(this.scrollingOnce){ + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + //this.scrollingOnce = false; + } } catch(err) { } } + ngAfterViewInit() { + this.scrollChangeCallback = () => this.onContentScrolled(event); + window.addEventListener('scroll', this.scrollChangeCallback, true); + } + + onContentScrolled(e) { + this.startPosition = e.srcElement.scrollTop; + let scroll = e.srcElement.scrollTop; + if (scroll > this.currentPosition) { + //this.showButton = false; + //alert('BOTTOM'); + } else { + //this.showButton = true; + //alert('UP'); + this.scrollingOnce = false; + } + this.currentPosition = scroll; + } + + ngOnDestroy() { + window.removeEventListener('scroll', this.scrollChangeCallback, true); + } + + + sendMessage() { let body = { "message": @@ -100,7 +138,8 @@ export class MessagesPage implements OnInit, AfterViewChecked { } } this.chatService.sendMessage(body).subscribe(res=> { - this.loadMessages(); + //this.loadMessages(); + this.scrollingOnce = true; }); this.message = ""; } diff --git a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.html b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.html index 965dd11cc..52b14f8ef 100644 --- a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.html +++ b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.html @@ -85,7 +85,7 @@
Outras opções
- + diff --git a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts index e1d290589..d321ef1db 100644 --- a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts +++ b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts @@ -3,8 +3,8 @@ import { ProcessesService } from 'src/app/services/processes.service'; import { AttachmentsService } from 'src/app/services/attachments.service'; import { EventsService } from 'src/app/services/events.service'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; -import { DailyWorkTask, fullTask } from '../../../../models/dailyworktask.model'; -import { ActivatedRoute, NavigationExtras, Router } from '@angular/router'; +import { fullTask } from '../../../../models/dailyworktask.model'; +import { ActivatedRoute, Router } from '@angular/router'; import { Event } from '../../../../models/event.model'; import { MenuController, ModalController, PopoverController } from '@ionic/angular'; @@ -293,8 +293,9 @@ export class DespachoPrPage implements OnInit { sendExpedienteToPending(){ this.processes.SetTaskToPending(this.serialNumber).subscribe(res=>{ - this.goBack(); + this.popoverController.dismiss('close') this.toastService.successMessage('Processo enviado para pendentes') + this.goBack() },()=>{ this.toastService.badRequest('Processo não encontrado') @@ -486,8 +487,6 @@ export class DespachoPrPage implements OnInit { } - console.log('alert ...'+ JSON.stringify(res)) - })) } diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html index c8836cf9f..310721a0b 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html @@ -27,7 +27,7 @@
- +
Intervenientes
@@ -88,7 +88,7 @@
- +
@@ -98,7 +98,7 @@
- +
@@ -107,7 +107,7 @@
- +
diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts index 2aa472aef..e35fa01ae 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts @@ -239,7 +239,7 @@ export class DespachoPage implements OnInit { this.despachoService.sendExpedienteToPending(this.serialnumber).subscribe(res=>{ this.goBack(); - this.toastService.successMessage('Processo enviado para despacho') + this.toastService.successMessage() }, error => { this.toastService.badRequest("Processo não enviado para despacho") diff --git a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html index 4dbed3ce7..0e22a2fe3 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html +++ b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html @@ -124,6 +124,6 @@
- +
diff --git a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html index 0efea4138..0f3428793 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html +++ b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html @@ -26,18 +26,18 @@

{{loadedEvent.workflowInstanceDataFields.Location}} - + {{loadedEvent.workflowInstanceDataFields.Agenda}} - + {{loadedEvent.workflowInstanceDataFields.Agenda}} - + {{loadedEvent.workflowInstanceDataFields.Agenda}} - + {{loadedEvent.workflowInstanceDataFields.Agenda}} @@ -54,7 +54,7 @@

- +
@@ -72,12 +72,12 @@
- +
Documentos Anexados

{{attach.SourceName}}

@@ -91,8 +91,8 @@
- - + +
diff --git a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html index e484d578e..112d7f4de 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html +++ b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html @@ -93,13 +93,13 @@
Solicitar revisão
Outras opções
- + - +
@@ -107,7 +107,7 @@
- +
diff --git a/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.html b/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.html index c613e0d65..05f4a3b9f 100644 --- a/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.html +++ b/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.html @@ -116,7 +116,7 @@
- +
diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.scss b/src/app/pages/gabinete-digital/gabinete-digital.page.scss index 09467c78e..85eb31969 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.scss +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.scss @@ -4,7 +4,6 @@ ion-content{ --padding-start:15px; */ /* --padding-bottom:15px; */ /* --background:#ecf8ff; */ - --background: #ecf8ff; } ion-segment{ overflow: auto; @@ -121,6 +120,8 @@ ion-segment-button{ background:#ecf8ff; overflow:hidden; padding: 0 !important; + border-top-left-radius: 25px; + border-top-right-radius: 25px; .aside-wrapper{ overflow: hidden; diff --git a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.html b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.html index 6753b7446..f9a7c35d0 100644 --- a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.html +++ b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.html @@ -84,8 +84,8 @@
- - + + @@ -94,8 +94,8 @@
- - + + @@ -104,8 +104,8 @@
- - + + @@ -121,8 +121,8 @@
- - + + diff --git a/src/app/pages/gabinete-digital/pedidos/pedidos.page.ts b/src/app/pages/gabinete-digital/pedidos/pedidos.page.ts index d8053e699..ae7ac0da9 100644 --- a/src/app/pages/gabinete-digital/pedidos/pedidos.page.ts +++ b/src/app/pages/gabinete-digital/pedidos/pedidos.page.ts @@ -1,5 +1,5 @@ import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; -import { ActivatedRoute, NavigationEnd, NavigationExtras, NavigationStart, Router } from '@angular/router'; +import { ActivatedRoute, NavigationStart, Router } from '@angular/router'; import { CalendarComponent } from 'ionic2-calendar'; import { customTask, DailyWorkTask } from '../../../models/dailyworktask.model'; import { ProcessesService } from 'src/app/services/processes.service'; @@ -88,15 +88,15 @@ export class PedidosPage implements OnInit { // this.LoadList(); } */ - goToPedido(serialNumber:any){ + goToPedido(serialNumber:any) { this.router.navigate(['/home/gabinete-digital/pedidos',serialNumber,'gabinete-digital']); } - notImplemented(){ + notImplemented() { this.alertService.presentAlert('Funcionalidade em desenvolvimento'); } - openExpedientDetailPage(data){ + openExpedientDetailPage(data) { console.log(data); this.openExpedientDetail.emit(data); } diff --git a/src/app/pages/publications/new-publication/new-publication.page.html b/src/app/pages/publications/new-publication/new-publication.page.html index 74e54add6..a361030ee 100644 --- a/src/app/pages/publications/new-publication/new-publication.page.html +++ b/src/app/pages/publications/new-publication/new-publication.page.html @@ -42,6 +42,20 @@ -->
+
+
+ image +
+
+
{{publication.OriginalFileName}}.{{publication.FileExtension}}
+
75 Kb
+
+
+
X
+
+ +
+
@@ -53,8 +67,8 @@
-
- +
-
diff --git a/src/app/pages/publications/new-publication/new-publication.page.scss b/src/app/pages/publications/new-publication/new-publication.page.scss index c4a9f8a30..f4dbabc70 100644 --- a/src/app/pages/publications/new-publication/new-publication.page.scss +++ b/src/app/pages/publications/new-publication/new-publication.page.scss @@ -134,4 +134,32 @@ font-size: 25px; line-height: normal; letter-spacing: normal; color: #000; - } \ No newline at end of file + } + + + + + + +.picture{ + .post-img{ + width: 60px; + } + .picture-file-name{ + font-size: 15px; + color: #0d89d1; + } + .size{ + color: #cecece; + font-size: 13px; + } +} + +.container-title{ + font-size: 15px; + font-weight: bold; +} +.hide-desktop{ + display: block; +} + diff --git a/src/app/pages/publications/new-publication/new-publication.page.ts b/src/app/pages/publications/new-publication/new-publication.page.ts index e80885009..aec77b737 100644 --- a/src/app/pages/publications/new-publication/new-publication.page.ts +++ b/src/app/pages/publications/new-publication/new-publication.page.ts @@ -15,6 +15,8 @@ import { ToastService } from 'src/app/services/toast.service'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { ThemePalette } from '@angular/material/core'; import { formatDate } from 'src/plugin/momentG.js' +import { FileLoaderService } from 'src/app/services/file/file-loader.service'; +import { FileToBase64Service } from 'src/app/services/file/file-to-base64.service'; @Component({ selector: 'app-new-publication', @@ -66,6 +68,8 @@ export class NewPublicationPage implements OnInit { private publications: PublicationsService, private camera: Camera, private toastService: ToastService, + private fileLoaderService: FileLoaderService, + private fileToBase64Service: FileToBase64Service ) { this.publicationType = this.navParams.get('publicationType'); @@ -100,6 +104,22 @@ export class NewPublicationPage implements OnInit { }); } + + laodPicture() { + const input = this.fileLoaderService.createInput({ + accept: ['image/apng', 'image/jpeg', 'image/png'] + }) + + input.onchange = async () => { + const file = this.fileLoaderService.getFirstFile(input) + + const imageData = await this.fileToBase64Service.convert(file) + this.capturedImage = imageData; + this.capturedImageTitle = file.name + }; + + } + getPicture() { const options: CameraOptions = { quality: 90, diff --git a/src/app/pages/publications/view-publications/view-publications.page.ts b/src/app/pages/publications/view-publications/view-publications.page.ts index 7465e4a73..1888cb060 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.ts +++ b/src/app/pages/publications/view-publications/view-publications.page.ts @@ -30,13 +30,13 @@ export class ViewPublicationsPage implements OnInit { publicationEventFolderStorage = PublicationEventFolderStorage publicationTravelFolderService = PublicationTravelFolderStore + publicationPipe = new PublicationPipe() + constructor( private modalController: ModalController, private publications: PublicationsService, private activatedRoute: ActivatedRoute, - private router: Router, - private publicationPipe: PublicationPipe ) - { + private router: Router) { this.item = new PublicationFolder(); this.activatedRoute.paramMap.subscribe(params => { diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index 0107c2930..8d21e8119 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -140,12 +140,20 @@ export class ChatService { return this.http.get(environment.apiChatUrl+'users.info', opts); } + setUserStatus(body:any){ + let opts = { + headers: this.headers, + } + return this.http.post(environment.apiChatUrl+'users.setStatus', body, this.options); + } + removeChatRoom(body:any){ let opts = { headers: this.headers, } return this.http.post(environment.apiChatUrl+'im.close', body, this.options); } + createRoom(body:any){ return this.http.post(environment.apiChatUrl+'im.create', body, this.options); } @@ -164,6 +172,7 @@ export class ChatService { addGroup(body:any){ return this.http.post(environment.apiChatUrl+'groups.create', body, this.options); } + getGroupMembers(roomId:string){ let params = new HttpParams(); let url=environment.apiChatUrl+'groups.members'; diff --git a/src/app/services/file/file-loader.service.spec.ts b/src/app/services/file/file-loader.service.spec.ts new file mode 100644 index 000000000..b3d2db03e --- /dev/null +++ b/src/app/services/file/file-loader.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { FileLoaderService } from './file-loader.service'; + +describe('FileLoaderService', () => { + let service: FileLoaderService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(FileLoaderService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/file/file-loader.service.ts b/src/app/services/file/file-loader.service.ts new file mode 100644 index 000000000..ca3a0f897 --- /dev/null +++ b/src/app/services/file/file-loader.service.ts @@ -0,0 +1,43 @@ +import { Injectable } from '@angular/core'; +import { FileType } from 'src/app/models/fileType'; + + +interface createInput { + type?: string + accept: typeof FileType[] +} + +@Injectable({ + providedIn: 'root' +}) +export class FileLoaderService { + + nice : typeof FileType + constructor() { } + + + createInput(param:createInput): HTMLInputElement { + + let input = document.createElement('input'); + input.type = param.type || 'file'; + input.accept = param.accept.join(', ') + + + // input.onchange = () => { + // // you can use this method to get file and perform respective operations + // let files = Array.from(input.files); + // console.log(files); + // }; + + input.click(); + + return input + + } + + getFirstFile(input: HTMLInputElement) { + let files = Array.from(input.files); + return files[0] + } + +} diff --git a/src/app/services/file/file-to-base64.service.spec.ts b/src/app/services/file/file-to-base64.service.spec.ts new file mode 100644 index 000000000..727e8e7c8 --- /dev/null +++ b/src/app/services/file/file-to-base64.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { FileToBase64Service } from './file-to-base64.service'; + +describe('FileToBase64Service', () => { + let service: FileToBase64Service; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(FileToBase64Service); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/file/file-to-base64.service.ts b/src/app/services/file/file-to-base64.service.ts new file mode 100644 index 000000000..53d7675b6 --- /dev/null +++ b/src/app/services/file/file-to-base64.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class FileToBase64Service { + + constructor() { } + + convert(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => resolve(reader.result); + reader.onerror = error => reject(error); + }); + + } +} diff --git a/src/app/services/rules/publication.service.spec.ts b/src/app/services/rules/publication.service.spec.ts new file mode 100644 index 000000000..3d3effb95 --- /dev/null +++ b/src/app/services/rules/publication.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { PublicationService } from './publication.service'; + +describe('PublicationService', () => { + let service: PublicationService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(PublicationService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/rules/publication.service.ts b/src/app/services/rules/publication.service.ts new file mode 100644 index 000000000..0470a7dfa --- /dev/null +++ b/src/app/services/rules/publication.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class PublicationService { + + constructor() { } +} diff --git a/src/app/services/socket/synchro.service.ts b/src/app/services/socket/synchro.service.ts index efc75daf3..3d9d261eb 100644 --- a/src/app/services/socket/synchro.service.ts +++ b/src/app/services/socket/synchro.service.ts @@ -24,9 +24,14 @@ export class SynchroService { public conected = false private url: string = '' callback = function(){} + private _connected = false; constructor(){} + get connected() { + return this._connected + } + setUrl() { let header ={ @@ -61,6 +66,7 @@ export class SynchroService { document.body.style.setProperty(`--color4`, "#0782c9f0"); document.body.style.setProperty(`--color5`, "#45BAFF"); console.log('open ======================= welcome to socket server') + this._connected = true } @@ -95,7 +101,9 @@ export class SynchroService { document.body.style.setProperty(`--color3`, "#ffb703"); document.body.style.setProperty(`--color4`, "#ffb703"); document.body.style.setProperty(`--color5`, "#ffb703"); + this._connected = false this.connect() + } }, 100); } 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 7aa32ec80..3db44986d 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.html +++ b/src/app/shared/chat/group-messages/group-messages.page.html @@ -38,7 +38,7 @@ Esta conversa passou a grupo
A conversa original mantêm-se como chat individual
-
+
{{msg.u.name}} @@ -46,6 +46,7 @@
{{msg.msg}} + {{last ? scrollToBottom() : ''}}
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 65b79f34e..362468177 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.ts +++ b/src/app/shared/chat/group-messages/group-messages.page.ts @@ -1,4 +1,4 @@ -import { Component, OnChanges, OnInit, Input, SimpleChanges, Output, EventEmitter, ViewChild, ElementRef, AfterViewChecked} from '@angular/core'; +import { Component, OnChanges, OnInit, Input, SimpleChanges, Output, EventEmitter, ViewChild, ElementRef, AfterViewChecked, AfterViewInit, OnDestroy} from '@angular/core'; import { ActionSheetController, AnimationController, MenuController, ModalController, PopoverController } from '@ionic/angular'; import { AlertService } from 'src/app/services/alert.service'; import { AuthService } from 'src/app/services/auth.service'; @@ -16,7 +16,7 @@ import { ChatOptionsFeaturesPage } from 'src/app/modals/chat-options-features/ch templateUrl: './group-messages.page.html', styleUrls: ['./group-messages.page.scss'], }) -export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { +export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy { showLoader: boolean; isGroupCreated:boolean; loggedUser: any; @@ -30,6 +30,11 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { members:any; loggedUserChat:any; + scrollingOnce:boolean = true; + private scrollChangeCallback: () => void; + currentPosition: any; + startPosition: number; + @Input() roomId:string; @Output() closeAllDesktopComponents:EventEmitter = new EventEmitter(); @Output() showEmptyContainer:EventEmitter = new EventEmitter(); @@ -54,8 +59,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { this.isGroupCreated = true; } ngOnChanges(changes: SimpleChanges): void { - this.getRoomInfo(); - this.scrollToBottom(); + //this.getRoomInfo(); + //this.scrollToBottom(); } ngOnInit() { @@ -63,18 +68,49 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { this.getRoomInfo(); this.serverLongPull(); console.log(this.roomId); + this.setStatus('online'); } - ngAfterViewChecked() { - //this.scrollToBottom(); + setStatus(status:string){ + let body = { + message: '', + status: status, + } + this.chatService.setUserStatus(body).subscribe(res => { + console.log(res); + }) } scrollToBottom(): void { try { - this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + if(this.scrollingOnce){ + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + } } catch(err) { } - finally { + } + + ngAfterViewInit() { + this.scrollChangeCallback = () => this.onContentScrolled(event); + window.addEventListener('scroll', this.scrollChangeCallback, true); + } + + onContentScrolled(e) { + this.startPosition = e.srcElement.scrollTop; + let scroll = e.srcElement.scrollTop; + if (scroll > this.currentPosition) { + //this.showButton = false; + //alert('BOTTOM'); + } else { + //this.showButton = true; + //alert('UP'); + this.scrollingOnce = false; } + this.currentPosition = scroll; + } + + ngOnDestroy() { + this.setStatus('away'); + window.removeEventListener('scroll', this.scrollChangeCallback, true); } openGroupContactsPage(){ @@ -101,9 +137,9 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { get watch(){ this.getRoomInfo(); console.log('here watching'); - return this.roomId; } + getRoomInfo(){ this.showLoader = true; this.chatService.getRoomInfo(this.roomId).subscribe(room=>{ @@ -112,7 +148,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { this.roomName = this.room.name.split('-').join(' '); } this.getGroupContacts(this.room); - this.loadGroupMessages(this.room); + //this.loadGroupMessages(this.room); this.showLoader = false; }); } @@ -136,13 +172,14 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { }); } } - loadGroupMessages(room:any){ - console.log('here'+room.t); + + loadGroupMessages(roomId){ + //console.log('here'+room.t); this.showLoader = true; //If group is private call getGroupMembers - if(room.t === 'p'){ - console.log('private'); + /* if(room.t === 'p'){ + console.log('private'); */ this.chatService.getPrivateGroupMessages(this.roomId).subscribe(res=>{ console.log(res); @@ -152,15 +189,16 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { this.showLoader = false; }); - } + /* } */ //Otherwise call getChannelMembers for públic groups - else{ + /* else{ this.chatService.getPublicGroupMessages(this.roomId).subscribe(res=>{ console.log(res); this.messages = res['messages'].reverse(); }); - } + } */ } + sendMessage(){ let body = { @@ -172,7 +210,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { this.chatService.sendMessage(body).subscribe(res=> { /* this.loadGroupMessages(); */ - this.getRoomInfo(); + //this.getRoomInfo(); + this.scrollingOnce = true; }); this.message = ""; } @@ -244,7 +283,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { this.roomName = res.data.name.split('-').join(' '); console.log(this.roomName); - this.getRoomInfo(); + //this.getRoomInfo(); + this.loadGroupMessages(this.roomId); //this.modalController.dismiss(); }; @@ -277,7 +317,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { popover.onDidDismiss().then(res=>{ console.log(res); if(res.data){ - this.getRoomInfo(); + this.loadGroupMessages(this.roomId); + //this.getRoomInfo(); //this.modalController.dismiss(); }; @@ -314,7 +355,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { await modal.present(); modal.onDidDismiss().then(()=>{ - this.getRoomInfo(); + //this.getRoomInfo(); + this.loadGroupMessages(this.roomId) }); } @@ -407,7 +449,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewChecked { // Show Error //showMessage(response.statusText); //this.loadMessages() - this.messages = res['messages'].filter(data => data.t != 'au'); + 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"){ diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html index 49ccb9cdd..4eaf095fc 100644 --- a/src/app/shared/chat/messages/messages.page.html +++ b/src/app/shared/chat/messages/messages.page.html @@ -31,7 +31,7 @@
-
+
{{msg.u.name}} @@ -39,6 +39,7 @@
{{msg.msg}} + {{last ? scrollToBottom() : ''}}
diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 2d5347fb3..ed7d4f333 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -1,4 +1,4 @@ -import { AfterViewChecked, Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'; +import { AfterViewChecked, AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'; import { AnimationController, ModalController, PopoverController } from '@ionic/angular'; import { AlertService } from 'src/app/services/alert.service'; import { AuthService } from 'src/app/services/auth.service'; @@ -16,7 +16,7 @@ import { ChatOptionsFeaturesPage } from 'src/app/modals/chat-options-features/ch templateUrl: './messages.page.html', styleUrls: ['./messages.page.scss'], }) -export class MessagesPage implements OnInit, AfterViewChecked, OnChanges { +export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy { showLoader: boolean; @ViewChild('scrollMe') private myScrollContainer: ElementRef; @@ -37,7 +37,11 @@ export class MessagesPage implements OnInit, AfterViewChecked, OnChanges { @Output() openNewEventPage:EventEmitter = new EventEmitter(); - connection = connection + connection = connection; + scrollingOnce:boolean = true; + private scrollChangeCallback: () => void; + currentPosition: any; + startPosition: number; constructor( public popoverController: PopoverController, @@ -70,11 +74,17 @@ export class MessagesPage implements OnInit, AfterViewChecked, OnChanges { console.log(this.roomId); console.log("Chat route", this.route.url) + this.setStatus('online'); } - ngOnDestroy(){ - this.checktimeOut = false; - console.log('On Destroy') + setStatus(status:string){ + let body = { + message: '', + status: status, + } + this.chatService.setUserStatus(body).subscribe(res => { + console.log(res); + }) } notImplemented(){ @@ -93,16 +103,38 @@ export class MessagesPage implements OnInit, AfterViewChecked, OnChanges { ev.target.complete(); } - ngAfterViewChecked() { - //this.scrollToBottom(); - } - scrollToBottom(): void { try { - this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + if(this.scrollingOnce){ + this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight; + //this.scrollingOnce = false; + } } catch(err) { } - finally { + } + + ngAfterViewInit() { + this.scrollChangeCallback = () => this.onContentScrolled(event); + window.addEventListener('scroll', this.scrollChangeCallback, true); + } + + onContentScrolled(e) { + this.startPosition = e.srcElement.scrollTop; + let scroll = e.srcElement.scrollTop; + if (scroll > this.currentPosition) { + //this.showButton = false; + //alert('BOTTOM'); + } else { + //this.showButton = true; + //alert('UP'); + this.scrollingOnce = false; } + this.currentPosition = scroll; + } + + ngOnDestroy() { + this.checktimeOut = false; + this.setStatus('away'); + window.removeEventListener('scroll', this.scrollChangeCallback, true); } openBookMeetingComponent(){ @@ -125,6 +157,7 @@ export class MessagesPage implements OnInit, AfterViewChecked, OnChanges { } this.chatService.sendMessage(body).subscribe(res=> { + this.scrollingOnce = true; }); this.message = ""; } diff --git a/src/app/shared/popover/despachos-options/despachos-options.page.html b/src/app/shared/popover/despachos-options/despachos-options.page.html index 2a5d61f06..362b2db56 100644 --- a/src/app/shared/popover/despachos-options/despachos-options.page.html +++ b/src/app/shared/popover/despachos-options/despachos-options.page.html @@ -9,7 +9,7 @@
- +
@@ -19,7 +19,7 @@
- +
@@ -28,7 +28,7 @@
- +
diff --git a/src/app/shared/popover/despachos-options/despachos-options.page.ts b/src/app/shared/popover/despachos-options/despachos-options.page.ts index 3456398ce..cacb43cf9 100644 --- a/src/app/shared/popover/despachos-options/despachos-options.page.ts +++ b/src/app/shared/popover/despachos-options/despachos-options.page.ts @@ -62,7 +62,7 @@ export class DespachosOptionsPage implements OnInit { cssClass: classs, }); await modal.present(); - modal.onDidDismiss().then(res=>{ + modal.onDidDismiss().then( res => { this.goBack(); }); } @@ -70,6 +70,7 @@ export class DespachosOptionsPage implements OnInit { sendExpedienteToPending(){ this.popoverController.dismiss(); this.processes.SetTaskToPending(this.task.SerialNumber).subscribe(res=>{ + this.toastService.successMessage() console.log(res); this.close(); },()=>{ diff --git a/src/app/shared/popover/despachos-pr-options/despachos-pr-options.page.html b/src/app/shared/popover/despachos-pr-options/despachos-pr-options.page.html index 8b4952619..191626ccf 100644 --- a/src/app/shared/popover/despachos-pr-options/despachos-pr-options.page.html +++ b/src/app/shared/popover/despachos-pr-options/despachos-pr-options.page.html @@ -13,13 +13,13 @@ - +
- +
diff --git a/src/app/shared/popover/despachos-pr-options/despachos-pr-options.page.ts b/src/app/shared/popover/despachos-pr-options/despachos-pr-options.page.ts index 11881ffb2..843591d9e 100644 --- a/src/app/shared/popover/despachos-pr-options/despachos-pr-options.page.ts +++ b/src/app/shared/popover/despachos-pr-options/despachos-pr-options.page.ts @@ -97,7 +97,8 @@ export class DespachosPrOptionsPage implements OnInit { sendExpedienteToPending() { this.processes.SetTaskToPending(this.serialNumber).subscribe(res=>{ console.log(res); - this.close(); + this.toastService.successMessage() + this.popoverController.dismiss('close') },()=>{ this.toastService.badRequest('Processo não encontrado') diff --git a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.html b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.html index e2f80ef8f..cf9e5f9d6 100644 --- a/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.html +++ b/src/app/shared/popover/opts-expediente-pr/opts-expediente-pr.page.html @@ -11,14 +11,14 @@
- +
- - + +
diff --git a/src/app/shared/popover/opts-expediente/opts-expediente.page.html b/src/app/shared/popover/opts-expediente/opts-expediente.page.html index a2cf25007..774c57043 100644 --- a/src/app/shared/popover/opts-expediente/opts-expediente.page.html +++ b/src/app/shared/popover/opts-expediente/opts-expediente.page.html @@ -12,7 +12,7 @@ - +
@@ -20,12 +20,12 @@ - +
- +
diff --git a/src/app/shared/popover/request-options/request-options.page.html b/src/app/shared/popover/request-options/request-options.page.html index 4213a7996..7105a6e4f 100644 --- a/src/app/shared/popover/request-options/request-options.page.html +++ b/src/app/shared/popover/request-options/request-options.page.html @@ -10,8 +10,8 @@
- - + + @@ -20,8 +20,8 @@
- - + + @@ -30,8 +30,8 @@
- - + + @@ -48,8 +48,8 @@
- - + + diff --git a/src/app/shared/popover/request-options/request-options.page.ts b/src/app/shared/popover/request-options/request-options.page.ts index 7e4c141b8..cf4b91daf 100644 --- a/src/app/shared/popover/request-options/request-options.page.ts +++ b/src/app/shared/popover/request-options/request-options.page.ts @@ -31,7 +31,6 @@ export class RequestOptionsPage implements OnInit { private navParams: NavParams, private processes: ProcessesService, private activatedRoute: ActivatedRoute, - private animationController: AnimationController, private toastService: ToastService, private router: Router, public p: PermissionService, @@ -78,6 +77,7 @@ export class RequestOptionsPage implements OnInit { sendExpedienteToPending() { this.processes.SetTaskToPending(this.task.SerialNumber).subscribe(res=>{ console.log(res); + this.toastService.successMessage() this.close(); },()=>{ diff --git a/src/app/shared/popover/searched-document-options/searched-document-options.page.html b/src/app/shared/popover/searched-document-options/searched-document-options.page.html index 113e1d03a..a712dbd6e 100644 --- a/src/app/shared/popover/searched-document-options/searched-document-options.page.html +++ b/src/app/shared/popover/searched-document-options/searched-document-options.page.html @@ -1,7 +1,7 @@
- - + +
diff --git a/src/app/shared/publication/new-action/new-action.page.html b/src/app/shared/publication/new-action/new-action.page.html index 361402fbd..7a8b68999 100644 --- a/src/app/shared/publication/new-action/new-action.page.html +++ b/src/app/shared/publication/new-action/new-action.page.html @@ -31,13 +31,12 @@
@@ -46,7 +45,6 @@ @@ -76,7 +74,6 @@ displayFormat="D MMM YYYY H:mm" minuteValues="0,15,30,45" monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez" - min="{{minDate}}" max="2025"> @@ -84,7 +81,6 @@ diff --git a/src/app/shared/publication/new-action/new-action.page.ts b/src/app/shared/publication/new-action/new-action.page.ts index 79587e598..733434a1b 100644 --- a/src/app/shared/publication/new-action/new-action.page.ts +++ b/src/app/shared/publication/new-action/new-action.page.ts @@ -24,8 +24,6 @@ export class NewActionPage implements OnInit { public showSeconds = false; public touchUi = false; public enableMeridian = false; - public minDate = new Date().toISOString().slice(0,10) - public maxDate: any; public stepHour = 1; public stepMinute = 5; public stepSecond = 5; diff --git a/src/app/shared/publication/new-publication/new-publication.page.html b/src/app/shared/publication/new-publication/new-publication.page.html index 783d56d80..dd7ea02b5 100644 --- a/src/app/shared/publication/new-publication/new-publication.page.html +++ b/src/app/shared/publication/new-publication/new-publication.page.html @@ -4,7 +4,7 @@
-->
- {{publicationTitle}} + {{ publicationTitle }}
@@ -16,7 +16,7 @@
-
+
@@ -29,7 +29,7 @@
Fotografia Anexada
-
+
image
@@ -43,26 +43,32 @@
- - - + - - +
diff --git a/src/app/shared/publication/new-publication/new-publication.page.ts b/src/app/shared/publication/new-publication/new-publication.page.ts index db2e9b480..dc0322bc3 100644 --- a/src/app/shared/publication/new-publication/new-publication.page.ts +++ b/src/app/shared/publication/new-publication/new-publication.page.ts @@ -8,7 +8,8 @@ import { PhotoService } from 'src/app/services/photo.service'; import { Camera, CameraOptions } from '@ionic-native/camera/ngx'; import { ToastService } from 'src/app/services/toast.service'; import { FormControl, FormGroup, Validators } from '@angular/forms'; - +import { FileLoaderService } from 'src/app/services/file/file-loader.service' +import { FileToBase64Service } from 'src/app/services/file/file-to-base64.service'; @Component({ selector: 'app-new-publication', templateUrl: './new-publication.page.html', @@ -45,15 +46,15 @@ export class NewPublicationPage implements OnInit { capturedImageTitle:any; constructor( - private modalController: ModalController, public photoService: PhotoService, private publications: PublicationsService, private camera: Camera, - private animationController: AnimationController, private toastService: ToastService, - ) { - this.publicationTitle = 'Nova Publicação'; - } + private fileLoaderService: FileLoaderService, + private fileToBase64Service: FileToBase64Service + ) { + this.publicationTitle = 'Nova Publicação'; + } ngOnInit() { if(this.publicationType == '3'){ @@ -68,7 +69,7 @@ export class NewPublicationPage implements OnInit { this.showLoader = true; //console.log(this.publicationId); /* console.log(this.folderId); */ - this.publications.GetPublicationById(this.publicationId).subscribe(res=>{ + this.publications.GetPublicationById(this.publicationId).subscribe( res =>{ //console.log(res); /* this.publication = res; */ this.publication = { @@ -88,7 +89,7 @@ export class NewPublicationPage implements OnInit { } - takePicture(){ + takePicture() { const options: CameraOptions = { quality: 90, destinationType: this.camera.DestinationType.DATA_URL, @@ -99,9 +100,7 @@ export class NewPublicationPage implements OnInit { } this.camera.getPicture(options).then((imageData) => { - // imageData is either a base64 encoded string or a file URI - // If it's base64 (DATA_URL): - let base64Image = 'data:image/jpeg;base64,' + imageData; + this.capturedImage = imageData; this.capturedImageTitle = new Date().getTime() + '.jpeg'; }, (err) => { @@ -109,27 +108,20 @@ export class NewPublicationPage implements OnInit { }); } - getPicture(){ - const options: CameraOptions = { - quality: 90, - sourceType: this.camera.PictureSourceType.PHOTOLIBRARY, - destinationType: this.camera.DestinationType.DATA_URL, - encodingType: this.camera.EncodingType.JPEG, - mediaType: this.camera.MediaType.PICTURE, - targetWidth: 720, - targetHeight: 720, - } - this.camera.getPicture(options).then((imageData) => { - // imageData is either a base64 encoded string or a file URI - // If it's base64 (DATA_URL): - let base64Image = 'data:image/jpeg;base64,' + imageData; - this.capturedImage = imageData; - this.capturedImageTitle = new Date().getTime() + '.jpeg'; - }, (err) => { - console.log(err); - }); - } + laodPicture() { + const input = this.fileLoaderService.createInput({ + accept: ['image/apng', 'image/jpeg', 'image/png'] + }) + + input.onchange = async () => { + const file = this.fileLoaderService.getFirstFile(input) + const imageData = await this.fileToBase64Service.convert(file) + this.capturedImage = imageData; + this.capturedImageTitle = file.name + }; + + } runValidation() { @@ -190,7 +182,7 @@ export class NewPublicationPage implements OnInit { } } - else if (!this.publication.OriginalFileName) { + else if (!this.publication.OriginalFileName) { // this.publication = { DateIndex: this.publication.DateIndex, DocumentId:this.publication.DocumentId, @@ -198,6 +190,7 @@ export class NewPublicationPage implements OnInit { Title: this.pub.Title, Message: this.pub.Message, DatePublication: this.publication.DatePublication, + OriginalFileName: this.capturedImageTitle, // OriginalFileName: this.publication.OriginalFileName, // FileBase64: this.publication.FileBase64, // FileExtension: 'jpeg', @@ -278,6 +271,27 @@ export class NewPublicationPage implements OnInit { } } + getPicture() { + const options: CameraOptions = { + quality: 90, + sourceType: this.camera.PictureSourceType.PHOTOLIBRARY, + destinationType: this.camera.DestinationType.DATA_URL, + encodingType: this.camera.EncodingType.JPEG, + mediaType: this.camera.MediaType.PICTURE, + targetWidth: 720, + targetHeight: 720, + } + + this.camera.getPicture(options).then((imageData) => { + // imageData is either a base64 encoded string or a file URI + // If it's base64 (DATA_URL): + let base64Image = 'data:image/jpeg;base64,' + imageData; + this.capturedImage = imageData; + this.capturedImageTitle = new Date().getTime() + '.jpeg'; + }, (err) => { + /* console.log(err); */ + }); + } close(){ this.goBack(); @@ -286,10 +300,10 @@ export class NewPublicationPage implements OnInit { this.capturedImage = ''; } setTitle(){ - if(this.publicationType == '1'){ + if(this.publicationType == '1') { this.publicationTitle = 'Nova Publicação Rápida'; } - else if(this.publicationType == '2'){ + else if(this.publicationType == '2') { this.publicationTitle = 'Nova Publicação'; } else if(this.publicationType == '3') { @@ -309,33 +323,4 @@ export class NewPublicationPage implements OnInit { } - /* async openGallery() { - const modal = await this.modalController.create({ - component: GalleryPage, - componentProps:{ - }, - cssClass: 'new-publication', - backdropDismiss: false - }); - await modal.present(); - modal.onDidDismiss(); - } */ - - /* async takePicture(){ - const image = await Plugins.Camera.getPhoto({ - quality: 100, - allowEditing: false, - resultType: CameraResultType.DataUrl, - source: CameraSource.Camera - }); - console.log(image); - - this.photo = this.sanitizer.bypassSecurityTrustResourceUrl(image && (image.dataUrl)); - } */ - - - - - - } diff --git a/src/app/shared/publication/view-publications/view-publications.page.ts b/src/app/shared/publication/view-publications/view-publications.page.ts index 93b6c5c8a..3cf0268f5 100644 --- a/src/app/shared/publication/view-publications/view-publications.page.ts +++ b/src/app/shared/publication/view-publications/view-publications.page.ts @@ -37,11 +37,12 @@ export class ViewPublicationsPage implements OnInit { publicationEventFolderStorage = PublicationEventFolderStorage publicationTravelFolderService = PublicationTravelFolderStore + publicationPipe = new PublicationPipe() + constructor( private loadingController: LoadingService, private modalController: ModalController, - private publications: PublicationsService, - private publicationPipe: PublicationPipe + private publications: PublicationsService ) { this.item = new PublicationFolder(); } diff --git a/src/theme/variables.scss b/src/theme/variables.scss index c8ee5391d..06f7d8ceb 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -520,6 +520,12 @@ $app-theme: mat-light-theme(( color: #061b52 !important; margin: 0 auto !important; } + +.btn-cancel:hover, .btn-delete:hover{ + background-color: #42b9fe; + color: #ffffff !important; +} + .btn-ok-medium{ width: 130px !important; height: 45px !important;