Improve responsiveness and add doc to task

This commit is contained in:
Peter Maquiran
2021-04-29 15:25:14 +01:00
parent 4a33f8c4c6
commit 63f1e09fea
35 changed files with 1919 additions and 241 deletions
+1 -1
View File
@@ -134,7 +134,7 @@
</mfp:windows10>
<mfp:appChecksum>0</mfp:appChecksum>
</mfp:windows>
<mfp:platformVersion>8.0.0.00-20210214-154410</mfp:platformVersion>
<mfp:platformVersion>8.0.0.00-20210308-063916</mfp:platformVersion>
<mfp:clientCustomInit enabled="false" />
<mfp:server runtime="mfp" url="http://gpr-dev-10.gabinetedigital.local:9080" />
<mfp:serverUri url="" />
+1514 -1
View File
File diff suppressed because it is too large Load Diff
+7 -1
View File
@@ -83,10 +83,14 @@
"cordova-plugin-androidx-adapter": "^1.1.3",
"cordova-plugin-compat": "^1.2.0",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-dialogs": "^2.0.2",
"cordova-plugin-fcm-with-dependecy-updated": "^7.2.0",
"cordova-plugin-file": "^6.0.2",
"cordova-plugin-globalization": "^1.11.0",
"cordova-plugin-inappbrowser": "^4.0.0",
"cordova-plugin-ionic-keyboard": "^2.2.0",
"cordova-plugin-ionic-webview": "^4.2.1",
"cordova-plugin-mfp": "^8.0.2021031007",
"cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-whitelist": "^1.3.4",
@@ -113,7 +117,9 @@
},
"cordova-plugin-ionic-keyboard": {},
"cordova-plugin-inappbrowser": {},
"cordova-plugin-camera": {},
"cordova-plugin-camera": {
"ANDROID_SUPPORT_V4_VERSION": "27.+"
},
"cordova-sqlite-storage": {},
"cordova-plugin-compat": {},
"cordova-plugin-mfp": {},
+2 -2
View File
@@ -29,7 +29,7 @@ import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MessagesPage } from './pages/chat/messages/messages.page';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
// import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
@NgModule({
@@ -57,7 +57,7 @@ import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
//File,
WebView,
FilePath,
FCM
//FCM
],
bootstrap: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
+38 -38
View File
@@ -9,7 +9,7 @@ import { ModalController, AlertController, AnimationController, Platform } from
/* import { Plugins, PushNotification, PushNotificationToken, PushNotificationActionPerformed, Modals } from '@capacitor/core'; */
import { Router } from '@angular/router';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
// import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
import { ViewEventPage } from '../pages/agenda/view-event/view-event.page';
import { ExpedienteDetailPage } from '../pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { ViewPublicationsPage } from '../pages/publications/view-publications/view-publications.page';
@@ -59,7 +59,7 @@ export class HomePage implements OnInit {
private router: Router,
private modalController: ModalController,
public modalCtrl: AlertController,
private fcm: FCM,
// private fcm: FCM,
private animationController: AnimationController,
private notificatinsservice: NotificationsService,
private platform: Platform) {
@@ -103,51 +103,51 @@ export class HomePage implements OnInit {
}
pushCordova() {
// pushCordova() {
if(this.platform.is('desktop')) {
console.log('Notifications not supported')
} else {
// if(this.platform.is('desktop')) {
// console.log('Notifications not supported')
// } else {
this.fcm.onNotification().subscribe(data => {
this.viewEventDetail(data.IdObject)
if (data.wasTapped === true) {
console.log("Received in background: ", data);
// this.fcm.onNotification().subscribe(data => {
// this.viewEventDetail(data.IdObject)
// if (data.wasTapped === true) {
// console.log("Received in background: ", data);
if (data.Service === "agenda") {
//this.router.navigate(['/home/', service, IdObject, 'home']);
this.viewEventDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
console.log('expediante 1')
this.viewExpedientDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
// this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', IdObject])})
this.openApproveModal(data.IdObject);
}
else if (data.Service === "accoes" && data.Object === "accao") {
this.viewPublications(data.IdObject)
alert(data.IdObject)
}
else if (data.Service === "accoes" && data.Object === "publicacao") {
this.viewPublicationDetail(data.IdObject)
}
// if (data.Service === "agenda") {
// //this.router.navigate(['/home/', service, IdObject, 'home']);
// this.viewEventDetail(data.IdObject)
// }
// else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
// console.log('expediante 1')
// this.viewExpedientDetail(data.IdObject)
// }
// else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
// // this.ngZone.run(() => {this.router.navigate(['/home/gabinete-digital/event-list', IdObject])})
// this.openApproveModal(data.IdObject);
// }
// else if (data.Service === "accoes" && data.Object === "accao") {
// this.viewPublications(data.IdObject)
// alert(data.IdObject)
// }
// else if (data.Service === "accoes" && data.Object === "publicacao") {
// this.viewPublicationDetail(data.IdObject)
// }
} else {
console.log("Received in foreground: ", data);
// } else {
// console.log("Received in foreground: ", data);
console.log(data.Service)
console.log(data.Object)
console.log(data.IdObject)
// console.log(data.Service)
// console.log(data.Object)
// console.log(data.IdObject)
};
});
}
// };
// });
// }
}
// }
async viewEventDetail(eventId: any) {
console.log(this.profile);
@@ -206,7 +206,8 @@ export class NewEventPage implements OnInit {
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect'
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true
}
});
await modal.present();
@@ -37,16 +37,16 @@
<div class="main-content d-flex height-100">
<div class="content d-flex flex-column width-100">
<div class="main-header">
<div class="title-content">
<div class="title-content d-flex justify-between">
<div class="left">
<button class="btn-no-color" (click)="close()">
<button class="btn-no-color d-flex align-center" (click)="close()">
<ion-icon slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
</button>
</div>
<div class="middle">
<div class="middle d-flex align-center flex-grow-1">
<ion-label class="title">{{loadedEvent.Subject}}</ion-label>
</div>
<div class="div-icon">
<div class="div-icon d-flex">
<button class="btn-no-color" (click)="editEvent()">
<ion-icon class="edit" slot="end" src="assets/images/icons-edit.svg" ></ion-icon>
</button>
@@ -43,9 +43,7 @@ ion-menu{
overflow: auto;
}
.div-icon{
width: 92px;
float: right;
overflow: auto;
padding: 1px;
}
.div-icon .edit{
+1 -1
View File
@@ -264,7 +264,7 @@ export class EventsPage implements OnInit {
async viewEventDetail(eventId:any) {
let classs;
if( window.innerWidth <= 800){
classs = 'modal'
classs = 'modal modal-desktop'
} else {
classs = 'modal modal-desktop showAsideOptions'
}
@@ -1,11 +1,11 @@
<ion-header class="ion-no-border">
<div class="header-content mx-20 d-flex justify-start">
<div class="header-content mx-20 d-flex justify-between">
<div class="header-icon-left">
<button class="btn-no-color" (click)="close()">
<ion-icon src="assets/images/icons-arrow-arrow-left.svg"></ion-icon>
</button>
</div>
<div class="header-title flex-md-grow-1">
<div class="header-title flex-grow-1">
<label>{{loadedEvent.workflowInstanceDataFields.Subject}}</label>
</div>
<div class="header-icon-right">
@@ -38,23 +38,24 @@
</ion-menu>
<ion-content id="main-content">
<div class="upper-content">
<div class="content-location">
<div class="location-detail">
<div class="upper-content d-flex width-100">
<div class="content-location d-flex justify-between width-100">
<div class="location-detail flex-grow-1">
<ion-label >{{loadedEvent.workflowInstanceDataFields.Location}}</ion-label>
<div class="content-details">
<ion-label>
<p>1 {{customDate}}</p>
<p>2 das {{loadedEvent.workflowInstanceDataFields.StartDate | date: 'hh:mm'}} às {{loadedEvent.workflowInstanceDataFields.EndDate | date: 'hh:mm'}}</p>
<p *ngIf="!loadedEvent.workflowInstanceDataFields.IsRecurring">3 (Não se repete)</p>
<p *ngIf="loadedEvent.workflowInstanceDataFields.IsRecurring">4 Repete</p>
</ion-label>
</div>
<div class="button-calendar-type">
</div>
<div class="button-calendar-type d-flex flex-grow-1 justify-end">
<ion-button class="button-calendar-type" slot="end">{{loadedEvent.workflowInstanceDataFields.Agenda}}</ion-button>
</div>
</div>
<div class="content-details">
<ion-label>
<p>{{customDate}}</p>
<p>das {{loadedEvent.workflowInstanceDataFields.StartDate | date: 'hh:mm'}} às {{loadedEvent.workflowInstanceDataFields.EndDate | date: 'hh:mm'}}</p>
<p *ngIf="!loadedEvent.workflowInstanceDataFields.IsRecurring">(Não se repete)</p>
<p *ngIf="loadedEvent.workflowInstanceDataFields.IsRecurring">Repete</p>
</ion-label>
</div>
</div>
<div class="middle-content">
<div *ngIf="loadedEvent.workflowInstanceDataFields.Participants">
@@ -18,7 +18,6 @@ ion-menu{
float: left;
}
.header-title{
width: 264px;
font-family: Roboto;
font-size: 25px;
margin: 0 5px 0 5px;
@@ -33,19 +32,17 @@ ion-menu{
overflow: auto;
}
.upper-content{
margin-left: 50px;
padding-left: 50px;
overflow: auto;
font-size: 18px;
.content-location{
width: 360px;
margin: 0 auto;
padding: 0;
overflow: auto;
}
.location-detail{
width: 210px;
font-weight: 700;
font-size: 18px;
float: left;
@@ -79,7 +76,6 @@ ion-menu{
}
.bottom-content{
width: 360px;
margin: 0 auto;
.bottom-content h3{
@@ -1,9 +1,9 @@
<ion-header class="ion-no-border">
<div *ngIf="loadedEvent" class="header-content">
<div *ngIf="loadedEvent" class="header-content d-flex justify-between">
<div class="header-icon-left">
<ion-icon (click)="close()" src="assets/images/icons-arrow-arrow-left.svg"></ion-icon>
</div>
<div class="header-title">
<div class="header-title flex-grow-1">
<label>{{loadedEvent.workflowInstanceDataFields.Subject}}</label>
</div>
<div class="header-icon-right">
@@ -55,7 +55,7 @@
</div>
</div>
<div class="line"></div>
<div class="middle-content" *ngIf="loadedEvent">
<div class="middle-content overflow-y-auto" *ngIf="loadedEvent">
<h5>Intervenientes</h5>
<ion-item>
<ion-label>
@@ -155,7 +155,7 @@
</div>
</div>
<div hidden class="ion-item-container-no-border">
<div class="ion-item-container-no-border">
<ion-label>
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
@@ -146,3 +146,25 @@
padding: 20px;
overflow: auto;
}
.attach-icon{
width: 37px;
font-size: 35px;
float: left;
}
.attach-title-item{
width: 100%;
font-size: 15px;
color:#0d89d1;
}
/* SPAN */
.span-left{
float: left;
font-size: 15x;
}
.span-right{
text-align: right;
float: right;
font-size: 13px;
}
@@ -10,6 +10,7 @@ import { EventPerson } from 'src/app/models/eventperson.model';
import { EventsService } from 'src/app/services/events.service';
import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart-expedient-modal.page';
import { AttachmentsService } from 'src/app/services/attachments.service';
import { SearchPage } from 'src/app/pages/search/search.page';
@Component({
selector: 'app-book-meeting-modal',
@@ -221,6 +222,38 @@ export class BookMeetingModalPage implements OnInit {
modal.onDidDismiss();
}
async getDoc(){
const modal = await this.modalController.create({
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true
}
});
await modal.present();
modal.onDidDismiss().then((res)=> {
const data = res.data;
//data.selected
const DocumentToSave = {
SourceTitle: data.selected.Assunto,
ParentId: 'this.postEvent.EventId',
Source: '1',
SourceId: data.selected.Id,
ApplicationId: data.selected.ApplicationType.toString(),
Id: '0',
Link: '',
SerialNumber: '',
};
this.attachmentsService.setEventAttachmentById(DocumentToSave).subscribe( ()=>{
this.getAttachments();
});
});
}
validateFormInputs(){
let formLocation = this.postData.Location.trim();
if(!this.postData.Location && formLocation.length <= 0){
@@ -89,8 +89,8 @@
</div>
</div>
<div hidden class="ion-item-container-no-border">
<ion-label>
<div class="ion-item-container-no-border" (click)="getDoc()">
<ion-label class="d-flex ">
<div class="attach-icon">
<ion-icon src="assets/images/icons-attach-doc.svg"></ion-icon>
</div>
@@ -126,3 +126,26 @@
display: block;
}
}
.attach-icon{
width: 37px;
font-size: 35px;
float: left;
}
.attach-title-item{
width: 100%;
font-size: 15px;
color:#0d89d1;
}
/* SPAN */
.span-left{
float: left;
font-size: 15x;
}
.span-right{
text-align: right;
float: right;
font-size: 13px;
}
@@ -14,6 +14,7 @@ import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart
import { AttachmentsService } from 'src/app/services/attachments.service';
import { ExpedienteDetailPage } from '../expediente-detail/expediente-detail.page';
import { AlertService } from 'src/app/services/alert.service';
import { SearchPage } from 'src/app/pages/search/search.page';
@Component({
selector: 'app-expedient-task-modal',
@@ -53,6 +54,8 @@ export class ExpedientTaskModalPage implements OnInit {
emptyTextDescription = "Sem intervenientes selecionados";
showEmptyContainer = true;
taskResult: any = {}
constructor(
private modalController: ModalController,
private router:Router,
@@ -124,7 +127,8 @@ export class ExpedientTaskModalPage implements OnInit {
this.modalController.dismiss(null);
}
saveTask(){
async saveTask(){
if(this.postData.Priority=='99999861'){
this.dispatchFolder.DeadlineType = 'Normal';
@@ -160,7 +164,7 @@ export class ExpedientTaskModalPage implements OnInit {
DispatchFolder: this.dispatchFolder,
}
console.log('this.postData', this.postData, this.taskType);
this.processes.postDespatcho(this.postData);
this.taskResult = await this.processes.postDespatcho(this.postData);
break;
case '1':
this.postData = {
@@ -173,7 +177,7 @@ export class ExpedientTaskModalPage implements OnInit {
DispatchFolder: this.dispatchFolder,
}
console.log(this.postData);
this.processes.postParecer(this.postData);
this.taskResult = await this.processes.postParecer(this.postData);
break;
case '2':
this.postData = {
@@ -186,7 +190,7 @@ export class ExpedientTaskModalPage implements OnInit {
DispatchFolder: this.dispatchFolder,
}
console.log(this.postData);
this.processes.postDeferimento(this.postData);
this.taskResult = await this.processes.postDeferimento(this.postData);
break;
}
@@ -363,6 +367,35 @@ export class ExpedientTaskModalPage implements OnInit {
}
async getDoc(){
const modal = await this.modalController.create({
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true
}
});
await modal.present();
modal.onDidDismiss().then((res)=>{
const data = res.data;
//data.selected
const DocumentToSave = {
SourceTitle: data.selected.Assunto,
ParentId: 'this.postEvent.EventId', // instance
Source: '1',
SourceId: data.selected.Id,
ApplicationId: data.selected.ApplicationType.toString(),
Id: '0',
Link: '',
SerialNumber: '',
};
this.attachmentsService.setEventAttachmentById(DocumentToSave).subscribe( ()=>{
this.getAttachments();
});
});
}
}
@@ -58,10 +58,10 @@
<ion-content>
<div class="main-content d-flex height-100">
<div class="content d-flex flex-column" *ngIf="task">
<div class="main-header">
<div class="title-content d-flex">
<div class="main-header" style="overflow: unset !important;">
<div class="title-content d-flex justify-between">
<app-btn-modal-dismiss></app-btn-modal-dismiss>
<div class="middle">
<div class="middle flex-grow-1">
<ion-label class="title">{{ task.Folio}}</ion-label>
</div>
<div class="div-icon">
@@ -71,7 +71,7 @@
</div>
</div>
</div>
<div class="upper-content">
<div class="upper-content" style="overflow: unset !important;">
<div class="content-details">
<ion-label>
<p><span class="date">{{customDate}}</span><span class="label">Expediente</span></p>
@@ -80,6 +80,8 @@
</div>
</div>
<div class="line"></div>
<div class="overflow-y-auto">
<div class="middle-content">
<h5 *ngIf="intervenientes">Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding">
@@ -128,7 +130,7 @@
(click)="viewEventDetail(event.EventId)"
>
<!-- [routerLink]="['/home/events', event.EventId, 'events']" -->
<div class="content-{{profile}}-{{event.CalendarName}}">
<div class="content-{{profile}}-{{event.CalendarName}} width-100 ">
<div class="approve-event-time">
<p>{{event.StartDate | date: 'hh:mm'}}</p>
<p>{{event.EndDate | date: 'hh:mm'}}</p>
@@ -144,8 +146,9 @@
</div>
</ion-list>
</div>
</div>
</div>
<div class="aside-right flex-column height-100">
<div class="buttons">
<button (click)="openExpedientActionsModal('0',fulltask)" class="btn-ok" shape="round" >Efectuar Despacho</button>
@@ -201,6 +204,7 @@
</ion-button>
</ion-list>
</div>
</div>
</ion-content>
@@ -20,7 +20,7 @@
</div>
<div class="aside overflow-y-auto d-flex flex-wrap width-100">
<div [class.active]="selectedElement == 'approval'" (click)="openEventsToApprovePage('MDGPR');selectedElement='approval'" class="exp-card d-flex flex-column" >
<div [class.active]="selectedElementF('approval')" (click)="openEventsToApprovePage('MDGPR');selectedElement='approval'" class="exp-card d-flex flex-column" >
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-agenda.svg"></ion-icon>
</div>
@@ -28,7 +28,7 @@
<p class="text-center exp-card-content">{{count_ev_md+count_ev_pr}} <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == 'Correspondence'" (click)="openExpedientListPage(); selectedElement='Correspondence'" class="exp-card d-flex flex-column justify-center" >
<div [class.active]="selectedElementF('Correspondence')" (click)="openExpedientListPage(); selectedElement='Correspondence'" class="exp-card d-flex flex-column justify-center" >
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-correspondencia.svg"></ion-icon>
</div>
@@ -36,7 +36,7 @@
<p class="text-center exp-card-content">{{count_exp_dailywork}} <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == 'Pending'" (click)="notImplemented()" class="exp-card d-flex flex-column justify-center" >
<div [class.active]="selectedElementF('Pending')" (click)="notImplemented()" class="exp-card d-flex flex-column justify-center" >
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-pendente.svg"></ion-icon>
</div>
@@ -45,7 +45,7 @@
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == 'Dispatches'" class="exp-card d-flex flex-column justify-center" (click)="openDespachosPage(); selectedElement='Dispatches'">
<div [class.active]="selectedElementF('Dispatches') " class="exp-card d-flex flex-column justify-center" (click)="openDespachosPage(); selectedElement='Dispatches'">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-despachos-presidente.svg"></ion-icon>
</div>
@@ -53,7 +53,7 @@
<p class="text-center exp-card-content">{{count_desp_dailywork}}<span class="title1">Documentos</span> </p>
</div>
<div [class.active]="selectedElement == 'RequestsForOpinion'" class="exp-card d-flex flex-column justify-center" (click)="openPedidosPage('parecer'); selectedElement='RequestsForOpinion'">
<div [class.active]="selectedElementF('RequestsForOpinion')" class="exp-card d-flex flex-column justify-center" (click)="openPedidosPage('parecer'); selectedElement='RequestsForOpinion'">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-parecer.svg"></ion-icon>
</div>
@@ -61,14 +61,16 @@
<p class="text-center exp-card-content">{{count_par_dailywork}} <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == 'RequestForApproval'" class="exp-card d-flex flex-column justify-center" (click)="openPedidosPage('deferimento'); selectedElement = 'RequestForApproval'">
<div [class.active]="selectedElementF('RequestForApproval')" class="exp-card d-flex flex-column justify-center" (click)="openPedidosPage('deferimento'); selectedElement = 'RequestForApproval'">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-deferimento.svg"></ion-icon>
</div>
<p class="text-center exp-card-title ">Pedidos de Deferimento</p>
<p class="text-center exp-card-content">{{count_def_dailywork}} <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card d-flex d-none flex-column justify-center" (click)="notImplemented()">
<!-- Desktop -->
<div [class.active]="selectedElementF('£££££££')" class="exp-card d-md-flex d-none flex-column justify-center" (click)="notImplemented()">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-presidente.svg"></ion-icon>
</div>
@@ -76,7 +78,8 @@
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span></p>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card d-flex d-none flex-column justify-center" (click)="notImplemented()">
<!-- Desktop -->
<div [class.active]="selectedElementF('£££££££')" class="exp-card d-md-flex d-none flex-column justify-center" (click)="notImplemented()">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-despachos-presidente.svg"></ion-icon>
</div>
@@ -84,7 +87,8 @@
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span> </p>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card-long justify-center width-100" (click)="notImplemented()">
<div [class.active]="selectedElementF('£££££££')" class="exp-card-long justify-center width-90 ma-0 my-5 background-white" (click)="notImplemented()"
style=" box-shadow: 0 0 10px 0 rgb(0 0 0 / 7%);">
<div class="center-div">
<div class="exp-card-icon">
<ion-icon src="assets/images/icons-expediente-presidente.svg"></ion-icon>
@@ -96,7 +100,8 @@
</div>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card-long width-100" (click)="notImplemented()">
<div [class.active]="selectedElementF('£££££££')" class="exp-card-long width-90 ma-0 my-5 background-white" (click)="notImplemented()"
style="box-shadow: 0 0 10px 0 rgb(0 0 0 / 7%);">
<div class="center-div">
<div class="exp-card-icon">
<ion-icon src="assets/images/icons-despachos-presidente.svg"></ion-icon>
@@ -108,7 +113,7 @@
</div>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card d-flex flex-column justify-center" (click)="notImplemented()">
<div [class.active]="selectedElementF('£££££££')" class="exp-card d-flex flex-column justify-center" (click)="notImplemented()">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-expediente-diploma.svg"></ion-icon>
</div>
@@ -116,7 +121,7 @@
<p class="text-center exp-card-content"><span class="number">-</span> <span class="title1">Documentos</span> </p>
</div>
<div [class.active]="selectedElement == '£££££££'" class="exp-card d-flex flex-column justify-center" (click)="notImplemented()">
<div [class.active]="selectedElementF('£££££££')" class="exp-card d-flex flex-column justify-center" (click)="notImplemented()">
<div class="d-flex justify-center">
<ion-icon src="assets/images/icons-diplomas-assinados-presidente.svg"></ion-icon>
</div>
@@ -266,4 +266,11 @@ export class GabineteDigitalPage implements OnInit {
}
selectedElementF(element:string) {
if (window.innerWidth >= 800) {
return element == this.selectedElement
}
return false;
}
}
+1 -1
View File
@@ -82,7 +82,7 @@ export class LoginPage implements OnInit {
}
getToken() {
this.notificatinsservice.getAndpostToken(this.username);
// this.notificatinsservice.getAndpostToken(this.username);
}
+2 -2
View File
@@ -4,7 +4,7 @@
<ion-progress-bar type="indeterminate" class="loader" *ngIf="showLoader"></ion-progress-bar>
<div class="d-flex ion-justify-content-between">
<ion-form [class.d-md-none]="!select">
<ion-form [class.d-none]="!showSearchInput">
<div class="d-flex search-input-container ion-justify-content-between" >
<div class="icon">
<button class="btn-no-color" (click)="basicSearch()">
@@ -26,7 +26,7 @@
<div *ngIf="!showAdvanceSearch" class="icon-z icon-most-searched-word-open" (click)="showHideAdvanceSearch(true)">
<ion-icon src="assets/images/icons-most-searched-words-open.svg" class="icon" slot="end"></ion-icon>
</div>
<div *ngIf="showAdvanceSearch" class="icon-z icon-most-searched-word-open align-md-baseline" (click)="showHideAdvanceSearch(false)" >
<div *ngIf="showAdvanceSearch" class="icon-z icon-most-searched-word-open align-md-baseline pl-10" (click)="showHideAdvanceSearch(false)" >
<ion-icon src="assets/images/advance-search-show-modal.svg" class="icon" slot="end"></ion-icon>
</div>
+7
View File
@@ -55,6 +55,8 @@ export class SearchPage implements OnInit {
type : "Agenda" | "Correspondencia" | "AccoesPresidenciais" | "ArquivoDespachoElect" | "AccoesPresidenciais & ArquivoDespachoElect" = "Agenda";
select: boolean = false;
showSearchInput = false
constructor(private modalController: ModalController,
private search: SearchService,
private modalCtrl: ModalController,
@@ -64,6 +66,10 @@ export class SearchPage implements OnInit {
this.type = this.navParams.get('type');
this.type = this.navParams.get('type');
this.showSearchInput = this.navParams.get('showSearchInput');
if(this.type == null || this.type == undefined) {
@@ -86,6 +92,7 @@ export class SearchPage implements OnInit {
}
selectItem(item: SearchDocument) {
if(this.select){
this.modalController.dismiss({
+56 -56
View File
@@ -4,7 +4,7 @@ import { environment } from 'src/environments/environment';
import { StorageService } from 'src/app/services/storage.service';
import { AuthConnstants } from 'src/app/config/auth-constants';
import { Token } from '../models/token.model';
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
// import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx';
/* import { AgendaPage } from '../pages/agenda/agenda.page'
import { ExpedientePage } from '../pages/gabinete-digital/expediente/expediente.page'
import { EventListPage } from '../pages/gabinete-digital/event-list/event-list.page';
@@ -27,7 +27,7 @@ export class NotificationsService {
constructor(
private http: HttpClient,
private fcm: FCM,
// private fcm: FCM,
private storageService: StorageService,
private modalController: ModalController,
public modalCtrl: AlertController,
@@ -45,71 +45,71 @@ export class NotificationsService {
return this.http.get<Token[]>(`${geturl}`);
}
getAndpostToken(username) {
if(this.platform.is('desktop')) {
console.log('Notifications not supported')
} else {
// getAndpostToken(username) {
// if(this.platform.is('desktop')) {
// console.log('Notifications not supported')
// } else {
const geturl = environment.apiURL + 'notifications/token';
// const geturl = environment.apiURL + 'notifications/token';
return this.fcm.getToken().then(token => {
console.log('token: ', token)
this.storageService.store(username, token);
this.storageService.get(username).then(value => {
console.log('STORAGE TOKEN', value)
this.storageService.get(AuthConnstants.USER).then(res => {
console.log('USERID', res);
const headers = { 'Authorization': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
const body = {
UserId: res.UserId,
TokenId: token,
Status: 1,
Service: 1
};
// return this.fcm.getToken().then(token => {
// console.log('token: ', token)
// this.storageService.store(username, token);
// this.storageService.get(username).then(value => {
// console.log('STORAGE TOKEN', value)
// this.storageService.get(AuthConnstants.USER).then(res => {
// console.log('USERID', res);
// const headers = { 'Authorization': 'Basic cGF1bG8ucGludG9AZ2FiaW5ldGVkaWdpdGFsLmxvY2FsOnRhYnRlc3RlQDAwNg==' };
// const body = {
// UserId: res.UserId,
// TokenId: token,
// Status: 1,
// Service: 1
// };
this.http.post<Token>(`${geturl}`, body, { headers }).subscribe(data => {
console.log('TOKEN USER MIDLE', data);
})
});
// this.http.post<Token>(`${geturl}`, body, { headers }).subscribe(data => {
// console.log('TOKEN USER MIDLE', data);
// })
// });
});
});
}
// });
// });
// }
}
// }
async onReceviNotification(viewEventDetail, viewExpedientDetail, openApproveModal, viewPublications, viewPublicationDetail) {
this.fcm.onNotification().subscribe(data => {
if (data.click_action) {
console.log("Received in background: ", data);
// this.fcm.onNotification().subscribe(data => {
// if (data.click_action) {
// console.log("Received in background: ", data);
if (data.Service === "agenda") {
viewEventDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
console.log('expediante 1')
viewExpedientDetail(data.IdObject)
}
else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
openApproveModal(data.IdObject);
}
else if (data.Service === "accoes" && data.Object === "accao") {
viewPublications(data.IdObject)
}
else if (data.Service === "accoes" && data.Object === "publicacao") {
viewPublicationDetail(data.IdObject)
}
// if (data.Service === "agenda") {
// viewEventDetail(data.IdObject)
// }
// else if (data.Service === "gabinete-digital" && data.Object === "expediente") {
// console.log('expediante 1')
// viewExpedientDetail(data.IdObject)
// }
// else if (data.Service === "gabinete-digital" && data.Object === "event-list") {
// openApproveModal(data.IdObject);
// }
// else if (data.Service === "accoes" && data.Object === "accao") {
// viewPublications(data.IdObject)
// }
// else if (data.Service === "accoes" && data.Object === "publicacao") {
// viewPublicationDetail(data.IdObject)
// }
} /* else {
console.log("Received in foreground: ", data);
// } /* else {
// console.log("Received in foreground: ", data);
console.log(data.Service)
console.log(data.Object)
console.log(data.IdObject)
this.openApproveModal(data.IdObject);
// console.log(data.Service)
// console.log(data.Object)
// console.log(data.IdObject)
// this.openApproveModal(data.IdObject);
}; */
});
// }; */
// });
}
platformVerify() {
@@ -66,6 +66,7 @@
</div>
</div>
<div class="line"></div>
<div class="middle-content">
<div *ngIf="loadedEvent.workflowInstanceDataFields.ParticipantsList">
<h5>Intervenientes</h5>
@@ -95,6 +96,11 @@
</ion-list>
</div>
</div>
<div class="overflow-y-auto">
</div>
<div *ngIf="showAside" class="aside-right flex-column height-100">
<div class="aside-buttons">
<button hidden full class="btn-ok" shape="round" >Editar evento</button>
@@ -104,8 +110,10 @@
<button (click)="rejectTask(loadedEvent.serialNumber)" full class="btn-delete" shape="round" >Rejeitar</button>
</div>
</div>
</div>
</ion-content>
<ion-footer class="display-none-{{showAside}}">
<div class="buttons">
<button class="btn-cancel" shape="round" (click)="emendTask(loadedEvent.serialNumber)">Adicionar Nota</button>
@@ -207,7 +207,8 @@ export class EditEventComponent implements OnInit {
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect'
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true
}
});
await modal.present();
@@ -210,6 +210,7 @@
</ion-item>
</ion-list>
</div>
</div>
</ion-content>
<ion-footer class="ion-no-border px-20">
@@ -132,7 +132,8 @@ export class NewEventPage implements OnInit {
component: SearchPage,
cssClass: 'modal-width-100-width-background modal',
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect'
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: true
}
});
await modal.present();
@@ -35,7 +35,7 @@
<ion-header class="ion-no-border">
<ion-toolbar class="header-toolbar">
<div class="main-header px-20">
<div class="main-header px-20" style="overflow: unset !important;">
<div class="title-content d-flex" >
<div class="left">
<button class="btn-no-color" (click)="close()">
@@ -46,7 +46,7 @@
<ion-label class="title">{{loadedEvent.Subject}}</ion-label>
</div>
<div class="div-icon">
<div class="div-icon d-flex">
<button class="btn-no-color" (click)="editEvent()">
<ion-icon class="edit" slot="end" src="assets/images/icons-edit.svg" ></ion-icon>
</button>
@@ -102,10 +102,10 @@
<ion-list class="width-100">
<ion-item *ngFor="let attach of loadedAttachments; let i = index" class="width-100" lines="none" class="ion-no-margin ion-no-padding">
<ion-label class="width-100 d-flex " >
<div class="flex-grow-1" (click)="viewDocument(attach.SourceId)">
<p class="attach-title-item">{{attach.SourceName}}</p>
<p class="flex-grow-1" (click)="viewDocument(attach.SourceId)">
<span class="attach-title-item">{{attach.SourceName}}</span>
<span class="span-left">{{attach.Stakeholders}}</span>
</div>
</p>
<div class="d-flex align-end">
<span class="span-right">{{ attach.CreateDate | date: 'dd-MM-yy' }}</span>
@@ -19,7 +19,6 @@ ion-menu{
border-top-left-radius: 25px;
border-top-right-radius: 25px;
background-color: #fff;
overflow:hidden;
padding: 30px 0px 0px 0px;
color:#000;
transform: translate3d(0, 1px, 0);
@@ -36,7 +35,6 @@ ion-menu{
overflow: hidden;
}
.middle{
width: 230px;
padding: 0!important;
float: left;
margin: 2.5px 0 0 0;
@@ -45,12 +43,10 @@ ion-menu{
width: 45px;
font-size: 45px;
float: right;
overflow: auto;
}
.div-icon{
width: 92px;
float: right;
overflow: auto;
padding: 1px;
}
.div-icon .edit{
@@ -87,7 +83,7 @@ ion-menu{
width: 100%;
margin: 0 auto;
padding: 0;
overflow: auto;
.date{
float: left;
@@ -77,7 +77,7 @@
<div class="exp-remetente">
<ion-label>{{task.Senders}}</ion-label>
</div>
<div class="exp-icon">
<div class="exp-icon d-flex align-center">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
<label>{{task.DocumentsQty}}</label>
+16 -1
View File
@@ -41,17 +41,32 @@ export class HeaderPage implements OnInit {
async openSearch() {
let classs;
let classs, showSearchInput, type;
if(window.innerWidth < 1366) {
classs = 'modal modal-width-100 modal-padding-top'
showSearchInput = true
} else {
classs = 'modal modal-width-100 modal-padding-top modal-desktop-shadow modal-desktop-remove-background'
showSearchInput = false
}
if(window.location.pathname == '/home/agenda') {
type = "Agenda"
} else if (window.location.pathname =='/home/gabinete-digital') {
type = "AccoesPresidenciais & ArquivoDespachoElect"
} else if (window.location.pathname == '/home/publications') {
type = "AccoesPresidenciais"
}
const modal = await this.modalController.create({
component: SearchPage,
cssClass: classs,
componentProps: {
type: 'AccoesPresidenciais & ArquivoDespachoElect',
showSearchInput: showSearchInput
}
});
return await modal.present();
+7
View File
@@ -660,3 +660,10 @@ ion-content {
max-height: 160px;
min-height: 160px;
}
.monthview-secondary-with-event, .text-muted {
.day {
color: #cecece;
}
}