profile picture done

This commit is contained in:
Eudes Inácio
2023-08-29 16:05:32 +01:00
64 changed files with 519 additions and 289 deletions
+2
View File
@@ -95,3 +95,5 @@ src/app/pipes/process.service.ts
/.angular /.angular
./.angular ./.angular
src/app/domain src/app/domain
_src/
-src
@@ -102,7 +102,7 @@ ion-button{
background: #ffb703; background: #ffb703;
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -60,15 +60,24 @@
<div> <div>
<div class="d-flex align-center flex-column" (click)="takePicture()"> <div class="d-flex align-center flex-column" (click)="takePicture()">
<ion-icon *ngIf="SessionStore.user.RoleDescription != 'Presidente da República' && SessionStore.user.RoleDescription != 'Ministro e Director do Gabinete do PR' && SessionStore.user.RoleDescription != 'Secretário Geral' " class="profile-pic" <div *ngIf="profilePicture == '' ">
src="assets/images/theme/gov/icons-profile.svg"></ion-icon> <ion-icon
*ngIf="SessionStore.user.RoleDescription != 'Presidente da República' && SessionStore.user.RoleDescription != 'Ministro e Director do Gabinete do PR' && SessionStore.user.RoleDescription != 'Secretário Geral' "
class="profile-pic" src="assets/images/theme/gov/icons-profile.svg"></ion-icon>
<img *ngIf="SessionStore.user.RoleDescription == 'Presidente da República' " class="profile-pic"
src='assets/images/presidente.png'>
<img *ngIf="SessionStore.user.RoleDescription == 'Ministro e Director do Gabinete do PR' "
class="profile-pic" src='assets/images/ministro.png'>
<img *ngIf="SessionStore.user.RoleDescription == 'Secretário Geral' " class="profile-pic"
src='assets/images/secretaria_geral.png'>
</div>
<div *ngIf="profilePicture != '' ">
<img class="profile-pic" src={{profilePicture}}>
</div>
<img *ngIf="SessionStore.user.RoleDescription == 'Presidente da República' " class="profile-pic"
src='assets/images/presidente.png'>
<img *ngIf="SessionStore.user.RoleDescription == 'Ministro e Director do Gabinete do PR' " class="profile-pic"
src='assets/images/ministro.png'>
<img *ngIf="SessionStore.user.RoleDescription == 'Secretário Geral' " class="profile-pic"
src='assets/images/secretaria_geral.png'>
<!-- <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="profile-pic" <!-- <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="profile-pic"
src="assets/images/icons-default-profile.svg"></ion-icon> src="assets/images/icons-default-profile.svg"></ion-icon>
@@ -76,9 +85,10 @@
src="assets/images/theme/gov/icons-profile.svg"></ion-icon> src="assets/images/theme/gov/icons-profile.svg"></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="profile-pic" <ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="profile-pic"
src="assets/images/theme/{{ThemeService.currentTheme}}/icons-profile.svg"></ion-icon> --> src="assets/images/theme/{{ThemeService.currentTheme}}/icons-profile.svg"></ion-icon> -->
<div style="background: black;width: 50px;height: 50px;position: relative;top: -33px;left: 38px;border-radius: 55px;overflow: hidden;border: 5px solid white;"> <div
<img src="assets/images/camera.png"> style="background: black;width: 50px;height: 50px;position: relative;top: -33px;left: 38px;border-radius: 55px;overflow: hidden;border: 5px solid white;">
</div> <img src="assets/images/camera.png">
</div>
</div> </div>
</div> </div>
@@ -9,6 +9,7 @@ import { ThemeService } from 'src/app/services/theme.service';
import { Camera, CameraResultType, CameraSource, Photo } from '@capacitor/camera'; import { Camera, CameraResultType, CameraSource, Photo } from '@capacitor/camera';
import { Filesystem, Directory } from '@capacitor/filesystem'; import { Filesystem, Directory } from '@capacitor/filesystem';
import { File } from '@awesome-cordova-plugins/file/ngx'; import { File } from '@awesome-cordova-plugins/file/ngx';
import { StorageService } from 'src/app/services/storage.service';
@Component({ @Component({
@@ -23,6 +24,7 @@ export class EditProfilePage implements OnInit {
environment = environment environment = environment
capturedImage = ''; capturedImage = '';
capturedImageTitle = ''; capturedImageTitle = '';
profilePicture = "";
constructor(private modalController: ModalController, constructor(private modalController: ModalController,
private animationController: AnimationController, private animationController: AnimationController,
@@ -30,9 +32,21 @@ export class EditProfilePage implements OnInit {
private BackgroundService: BackgroundService, private BackgroundService: BackgroundService,
public ThemeService: ThemeService, public ThemeService: ThemeService,
private file: File, private file: File,
private storageService: StorageService,
) { } ) { }
ngOnInit() { } ngOnInit() {
this.getProfilpicture()
}
getProfilpicture() {
this.storageService.get(this.SessionStore.user.RoleID.toString()).then((picture) => {
console.log(picture)
this.profilePicture = picture
}).catch((error ) => {
this.profilePicture = "";
})
}
close() { close() {
this.modalController.dismiss(); this.modalController.dismiss();
@@ -132,6 +146,8 @@ export class EditProfilePage implements OnInit {
async takePicture() { async takePicture() {
const capturedImage = await Camera.getPhoto({ const capturedImage = await Camera.getPhoto({
width: 188,
height: 188,
quality: 50, quality: 50,
// allowEditing: true, // allowEditing: true,
resultType: CameraResultType.Base64, resultType: CameraResultType.Base64,
@@ -139,12 +155,19 @@ export class EditProfilePage implements OnInit {
}); });
this.capturedImage = 'data:image/jpeg;base64,' + capturedImage.base64String; this.capturedImage = 'data:image/jpeg;base64,' + capturedImage.base64String;
console.log(this.SessionStore.user.RoleID.toString())
this.storageService.store(this.SessionStore.user.RoleID.toString(),this.capturedImage).then((value) => {
console.log('picture saved')
}).catch((error) => {
console.log('picture not saved')
})
this.getProfilpicture()
this.capturedImageTitle = SessionStore.user.Profile; this.capturedImageTitle = SessionStore.user.Profile;
this.saveFile(this.capturedImage,this.capturedImageTitle,'application/img'); /* this.saveFile(this.capturedImage,this.capturedImageTitle,'application/img'); */
} }
async saveFile(pdfString, filename, type) { /* async saveFile(pdfString, filename, type) {
const blob = this.b64toBlob(pdfString, type) const blob = this.b64toBlob(pdfString, type)
console.log(blob) console.log(blob)
let pathFile = '' let pathFile = ''
@@ -165,11 +188,8 @@ export class EditProfilePage implements OnInit {
}).then((dir) => { }).then((dir) => {
console.log('DIR ', dir) console.log('DIR ', dir)
}); });
} } */
getImagem() {
}
b64toBlob(b64Data, contentType) { b64toBlob(b64Data, contentType) {
contentType = contentType || ''; contentType = contentType || '';
+9 -1
View File
@@ -39,7 +39,8 @@
<div class="d-flex align-center"> <div class="d-flex align-center">
<ion-icon *ngIf="SessionStore.user.RoleDescription != 'Presidente da República' && SessionStore.user.RoleDescription != 'Ministro e Director do Gabinete do PR' && SessionStore.user.RoleDescription != 'Secretário Geral' " class="profile-pic" <div *ngIf="profilePicture == ''" class="profile-pic">
<ion-icon *ngIf="SessionStore.user.RoleDescription != 'Presidente da República' && SessionStore.user.RoleDescription != 'Ministro e Director do Gabinete do PR' && SessionStore.user.RoleDescription != 'Secretário Geral' " class="profile-pic"
src="assets/images/theme/gov/icons-profile.svg"></ion-icon> src="assets/images/theme/gov/icons-profile.svg"></ion-icon>
<img *ngIf="SessionStore.user.RoleDescription == 'Presidente da República' " class="profile-pic" <img *ngIf="SessionStore.user.RoleDescription == 'Presidente da República' " class="profile-pic"
@@ -48,6 +49,13 @@
src='assets/images/ministro.png'> src='assets/images/ministro.png'>
<img *ngIf="SessionStore.user.RoleDescription == 'Secretário Geral' " class="profile-pic" <img *ngIf="SessionStore.user.RoleDescription == 'Secretário Geral' " class="profile-pic"
src='assets/images/secretaria_geral.png'> src='assets/images/secretaria_geral.png'>
</div>
<div *ngIf="profilePicture != ''" class="profile-pic">
<img class="profile-pic"
src={{profilePicture}}>
</div>
<!-- <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="profile-pic" <!-- <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="profile-pic"
src="assets/images/icons-default-profile.svg"></ion-icon> src="assets/images/icons-default-profile.svg"></ion-icon>
+21 -5
View File
@@ -39,6 +39,7 @@ export class ProfilePage implements OnInit {
taskExist = true; taskExist = true;
taskNotExist = false; taskNotExist = false;
isloading = false; isloading = false;
profilePicture = "";
SessionStore = SessionStore; SessionStore = SessionStore;
@@ -53,7 +54,8 @@ export class ProfilePage implements OnInit {
public ThemeService: ThemeService, public ThemeService: ThemeService,
private notificationService: NotificationsService, private notificationService: NotificationsService,
private processesService: ProcessesService, private processesService: ProcessesService,
private eventsService: EventsService private eventsService: EventsService,
private storageService: StorageService,
) { ) {
@@ -62,18 +64,18 @@ export class ProfilePage implements OnInit {
this.logoutOut = true this.logoutOut = true
}); });
this.eventTriger.getObservable().subscribe((event) => { /* this.eventTriger.getObservable().subscribe((event) => {
if (event.notification == "recive") { if (event.notification == "recive") {
this.getNotificationData(); this.getNotificationData();
} else if (event.notification == "deleted") { } else if (event.notification == "deleted") {
console.log('header', event.notification) console.log('header', event.notification)
this.getNotificationData(); this.getNotificationData();
} }
}); }); */
this.notificationService.notificationReceived.subscribe(() => { /* this.notificationService.notificationReceived.subscribe(() => {
this.getNotificationData(); this.getNotificationData();
}); }); */
setTimeout(() => { setTimeout(() => {
this.hideImage = true this.hideImage = true
@@ -83,9 +85,19 @@ export class ProfilePage implements OnInit {
ngOnInit() { ngOnInit() {
this.getNotificationData(); this.getNotificationData();
this.getProfilpicture();
} }
getProfilpicture() {
this.storageService.get(this.SessionStore.user.RoleID.toString()).then((picture) => {
console.log(picture)
this.profilePicture = picture
}).catch((error ) => {
this.profilePicture = "";
})
}
close() { close() {
this.modalController.dismiss(); this.modalController.dismiss();
@@ -102,6 +114,8 @@ export class ProfilePage implements OnInit {
//if(keyExist) { //if(keyExist) {
await this.storageservice.get("Notifications").then((value) => { await this.storageservice.get("Notifications").then((value) => {
console.log('Getnotifications 111', value)
this.DataArray = [] this.DataArray = []
value.forEach((element, i) => { value.forEach((element, i) => {
console.log('Getnotifications', element, i) console.log('Getnotifications', element, i)
@@ -207,11 +221,13 @@ export class ProfilePage implements OnInit {
if (Service === "agenda" && Object === "event-list") { if (Service === "agenda" && Object === "event-list") {
this.isloading = true this.isloading = true
this.processesService.GetTask(IdObject).subscribe((task) => { this.processesService.GetTask(IdObject).subscribe((task) => {
console.log('evento exist')
this.zone.run(() => this.router.navigate(['/home/agenda/event-list/approve-event', IdObject, 'agenda'])); this.zone.run(() => this.router.navigate(['/home/agenda/event-list/approve-event', IdObject, 'agenda']));
this.deleteNotification(index); this.deleteNotification(index);
this.isloading = false this.isloading = false
}, (error) => { }, (error) => {
console.log('evento não existe')
this.notificationdata[i].read = true; this.notificationdata[i].read = true;
this.isloading = false this.isloading = false
}) })
@@ -297,5 +297,5 @@ ion-menu{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
} }
+26 -23
View File
@@ -14,11 +14,11 @@
<!-- Toolbar --> <!-- Toolbar -->
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar> <ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<div [class]="weeksToShow" > <div class="weeksToShow">
<!-- Calendar is here --> <!-- Calendar is here -->
<div class="calendar-segment-{{profile}}" [class.calendar-segment-pr-force]="SessionStore.user.Profile =='PR'"> <div class="calendar-segment-{{profile}}" [class.calendar-segment-pr-force]="SessionStore.user.Profile =='PR'">
<div class="calendar-container" [class]="calendarHeight"> <div class="calendar-container" class="calendarHeight" >
<ion-row class="ion-justify-content-between calendar-tool-tip"> <ion-row class="ion-justify-content-between calendar-tool-tip">
<ion-row class="ion-align-items-center first-row"> <ion-row class="ion-align-items-center first-row">
@@ -139,25 +139,28 @@
</thead> </thead>
</table> </table>
<calendar <div class="calendar-conteiner-height overflow-hidden" [style.height]="height">
class="calendar-component" <calendar
[eventSource]="listToPresent" class="calendar-component"
[calendarMode]="calendar.mode" [eventSource]="listToPresent"
[currentDate]="calendar.currentDate" [calendarMode]="calendar.mode"
(onEventSelected)="onEventSelected($event)" [currentDate]="calendar.currentDate"
(onTitleChanged)="onViewTitleChanged($event)" (onEventSelected)="onEventSelected($event)"
(onRangeChanged)="onRangeChanged($event)" (onTitleChanged)="onViewTitleChanged($event)"
(onCurrentDateChanged)="onCurrentChanged($event)" (onRangeChanged)="onRangeChanged($event)"
queryMode="remote" (onCurrentDateChanged)="onCurrentChanged($event)"
startHour="6" queryMode="remote"
endHour="20" startHour="6"
step="30" endHour="20"
startingDayMonth="1" step="30"
noEventsLabel="Sem Eventos" startingDayMonth="1"
allDayLabel="Todo o dia" noEventsLabel="Sem Eventos"
[monthviewDisplayEventTemplate]="template" allDayLabel="Todo o dia"
> [monthviewDisplayEventTemplate]="template"
</calendar> >
</calendar>
</div>
<!-- Adding a customized ng-template --> <!-- Adding a customized ng-template -->
<ng-template #template let-view="view" let-row="row" let-col="col"> <ng-template #template let-view="view" let-row="row" let-col="col">
@@ -182,12 +185,12 @@
<div class="calendar-title-container px-20 d-flex"> <div class="calendar-title-container px-20 d-flex">
<ion-row class="timeline-date align-center pr-10"> <ion-row class="timeline-date align-center pr-10">
<button class="no-color" *ngIf="showCalendar" (click)="calendarHeight=['height-75'];showCalendar=false"> <button class="no-color" *ngIf="showCalendar" (click)="height='0px';showCalendar=false">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="collaps font-25" src="assets/images/icons-collaps-up.svg" ></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="collaps font-25" src="assets/images/icons-collaps-up.svg" ></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="collaps font-25" src="assets/images/theme/gov/icons-collaps-up.svg" ></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="collaps font-25" src="assets/images/theme/gov/icons-collaps-up.svg" ></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="collaps font-25" src="assets/images/theme/{{ThemeService.currentTheme}}/icons-collaps-up.svg"></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="collaps font-25" src="assets/images/theme/{{ThemeService.currentTheme}}/icons-collaps-up.svg"></ion-icon>
</button> </button>
<button class="no-color" *ngIf="!showCalendar" (click)="calendarHeight=['height-356'];showCalendar=true"> <button class="no-color" *ngIf="!showCalendar" (click)="weekToShow();showCalendar=true">
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="collaps font-25" src="assets/images/icons-collaps-down.svg" ></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="collaps font-25" src="assets/images/icons-collaps-down.svg" ></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="collaps font-25" src="assets/images/theme/gov/icons-collaps-down.svg" ></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="collaps font-25" src="assets/images/theme/gov/icons-collaps-down.svg" ></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="collaps font-25" src="assets/images/theme/{{ThemeService.currentTheme}}/icons-collaps-down.svg" ></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="collaps font-25" src="assets/images/theme/{{ThemeService.currentTheme}}/icons-collaps-down.svg" ></ion-icon>
+12 -2
View File
@@ -242,7 +242,7 @@ label{
color: #e16817; color: #e16817;
} }
td.monthview-primary-with-event { td.monthview-primary-with-event {
background-color: red !important; background-color: white !important;
} }
.header-title{ .header-title{
font-family: Roboto; font-family: Roboto;
@@ -1031,7 +1031,7 @@ $font-size: rem(15);
} }
.height-356 { .height-356 {
height: 369px; height: 360px;
} }
} }
@@ -1066,3 +1066,13 @@ $font-size: rem(15);
} }
.calendar-conteiner-height {
height: 100%;
transition: 0.5s;
animation: 0.5s;
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-ms-transition: 0.5s;
-o-transition: 0.5s;
-webkit-animation: 0.5s;
}
+25 -20
View File
@@ -291,34 +291,37 @@ export class AgendaPage implements OnInit {
}, 1000) }, 1000)
} }
weeksToShow = [] height = '75px'
weekToShow() { weekToShow() {
setTimeout(() => { setTimeout(() => {
let num = 0; try {
let weekNum = 0;
function Week(a) { function Week(a) {
for(let b of a.querySelectorAll('td')) { for(let b of a.querySelectorAll('td')) {
if(!b.className.includes('text-muted')) { if(!b.className.includes('text-muted')) {
num++; weekNum++;
return true return true
}
} }
} }
const dayBoxHeight = document.querySelector('.monthview-container .swiper-container .swiper-slide-active table tbody tr td').clientHeight
const weeks = document.querySelectorAll('.monthview-container .swiper-container .swiper-slide-active table tbody tr');
for (let week of weeks as any ){
Week(week)
}
this.showCalendar = true
this.height = (weekNum * dayBoxHeight) +'px'
} catch (e) {
setTimeout(()=> {
this.weekToShow()
}, 100)
} }
for (let a of document.querySelectorAll('.monthview-container .swiper-container .swiper-slide-active table tbody tr') as any ){
Week(a)
}
if(num <= 5) {
this.weeksToShow = ["week-5"]
} else {
this.weeksToShow = ["week-6"]
}
}, 250) }, 250)
} }
@@ -588,6 +591,8 @@ export class AgendaPage implements OnInit {
this.showLoader = true; this.showLoader = true;
const selectedCalendarIds = this.getSelectedAgendaCalendars(); const selectedCalendarIds = this.getSelectedAgendaCalendars();
this.listToPresent = this.CalendarStore.getEventsByCalendarIds(selectedCalendarIds) this.listToPresent = this.CalendarStore.getEventsByCalendarIds(selectedCalendarIds)
// this.calendar.currentDate.setDate(1);
this.updateEventListBox() this.updateEventListBox()
try { try {
@@ -26,11 +26,7 @@ export class EmendMessageModalPage implements OnInit {
} }
save() { save() {
if(this.emendMessage != '') { this.modalController.dismiss({option:'save', note: this.emendMessage});
this.modalController.dismiss({option:'save', note: this.emendMessage});
} else {
this.toastService._badRequest('É necessário adicionar uma nota');
}
} }
@@ -108,7 +108,6 @@ export class EventActionsPopoverPage implements OnInit {
if(res.data.option == 'save') { if(res.data.option == 'save') {
if(res.data.note !== '') {
let body = { "serialNumber": this.serialNumber, let body = { "serialNumber": this.serialNumber,
"action": "Emendar", "action": "Emendar",
"dataFields": { "dataFields": {
@@ -130,10 +129,6 @@ export class EventActionsPopoverPage implements OnInit {
finally { finally {
loader.remove() loader.remove()
} }
}
else {
this.toastService._badRequest('É necessário adicionar uma nota');
}
} else { } else {
} }
@@ -298,7 +298,7 @@ ion-menu{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
} }
.text { .text {
@@ -112,7 +112,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -198,7 +198,7 @@ ion-item{
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -71,7 +71,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -177,7 +177,7 @@ ion-item{
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -137,7 +137,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -183,7 +183,7 @@ ion-item{
/* font-size: rem(12); */ /* font-size: rem(12); */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -177,7 +177,7 @@ ion-item{
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -124,7 +124,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -177,7 +177,7 @@ ion-item{
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -195,39 +195,35 @@ export class ApproveEventModalPage implements OnInit {
modal.onDidDismiss().then( async (res) => { modal.onDidDismiss().then( async (res) => {
if(res.data.option == 'save') { if(res.data.option == 'save') {
if(res.data.note !== '') {
let body = { let body = {
"serialNumber": serialNumber, "serialNumber": serialNumber,
"action": "Emendar", "action": "Emendar",
"dataFields": { "dataFields": {
"ReviewUserComment": res.data, "ReviewUserComment": res.data,
}
} }
//
const loader = this.toastService.loading()
try {
await this.processes.PostTaskAction(body).toPromise()
this.router.navigate(['/home/gabinete-digital/event-list']);
this.toastService._successMessage('Evento enviado para revisão');
} catch (error) {
if(error.status == 0) {
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
} else {
this.toastService._badRequest('Evento não enviado para revisão');
}
this.router.navigate(['/home/gabinete-digital/event-list']);
}
finally {
loader.remove()
}
} }
else {
this.toastService._badRequest('É necessário adicionar uma nota'); //
const loader = this.toastService.loading()
try {
await this.processes.PostTaskAction(body).toPromise()
this.router.navigate(['/home/gabinete-digital/event-list']);
this.toastService._successMessage('Evento enviado para revisão');
} catch (error) {
if(error.status == 0) {
this.toastService._badRequest('Sem acesso à internet. Por favor verifique sua conexão')
} else {
this.toastService._badRequest('Evento não enviado para revisão');
}
this.router.navigate(['/home/gabinete-digital/event-list']);
} }
finally {
loader.remove()
}
} }
}, (error) => { }, (error) => {
console.log(error) console.log(error)
@@ -190,37 +190,34 @@ export class ApproveEventPage implements OnInit {
.then(async (res) => { .then(async (res) => {
if(res.data.option == 'save') { if(res.data.option == 'save') {
if (res.data !== '') {
let body = { let body = {
"serialNumber": serialNumber, "serialNumber": serialNumber,
"action": "Emendar", "action": "Emendar",
"dataFields": { "dataFields": {
"ReviewUserComment": res.data, "ReviewUserComment": res.data,
}
} }
const loader = this.toastService.loading()
try {
await this.processes.PostTaskAction(body).toPromise()
.catch(() => {
this.offlineManager.storeRequestData('event-listRever', body);
});
this.httpErrorHandle.httpsSucessMessagge('Rever')
this.TaskService.loadEventosParaAprovacao();
this.goBack();
} catch (error) {
this.httpErrorHandle.httpStatusHandle(error)
} finally {
loader.remove()
}
} }
else {
this.toastService._badRequest('É necessário adicionar uma nota');
const loader = this.toastService.loading()
try {
await this.processes.PostTaskAction(body).toPromise()
.catch(() => {
this.offlineManager.storeRequestData('event-listRever', body);
});
this.httpErrorHandle.httpsSucessMessagge('Rever')
this.TaskService.loadEventosParaAprovacao();
this.goBack();
} catch (error) {
this.httpErrorHandle.httpStatusHandle(error)
} finally {
loader.remove()
} }
} }
}, (error) => { }, (error) => {
console.log(error) console.log(error)
@@ -307,33 +304,30 @@ export class ApproveEventPage implements OnInit {
modal.onDidDismiss().then(async (res) => { modal.onDidDismiss().then(async (res) => {
if(res.data.option == 'save') { if(res.data.option == 'save') {
if (res.data.note !== '') {
let body = { let body = {
"serialNumber": serialNumber, "serialNumber": serialNumber,
"action": "Emendar", "action": "Emendar",
"dataFields": { "dataFields": {
"ReviewUserComment": res.data, "ReviewUserComment": res.data,
}
} }
const loader = this.toastService.loading()
try {
await this.processes.PostTaskAction(body).toPromise();
this.goBack();
this.httpErrorHandle.httpsSucessMessagge('Rever')
this.TaskService.loadEventosParaAprovacao();
} catch (error) {
this.httpErrorHandle.httpStatusHandle(error)
} finally {
loader.remove()
}
} }
else {
this.toastService._badRequest('É necessário adicionar uma nota');
const loader = this.toastService.loading()
try {
await this.processes.PostTaskAction(body).toPromise();
this.goBack();
this.httpErrorHandle.httpsSucessMessagge('Rever')
this.TaskService.loadEventosParaAprovacao();
} catch (error) {
this.httpErrorHandle.httpStatusHandle(error)
} finally {
loader.remove()
} }
} else { } else {
} }
@@ -103,7 +103,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -173,7 +173,7 @@ ion-item{
/*font-size: rem(12); /*font-size: rem(12);
*/float: right; */float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
-webkit-border-radius: 15px; -webkit-border-radius: 15px;
-moz-border-radius: 15px; -moz-border-radius: 15px;
-ms-border-radius: 15px; -ms-border-radius: 15px;
@@ -102,7 +102,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -176,7 +176,7 @@ ion-item{
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -396,7 +396,7 @@ ion-list {
font-size: rem(12); font-size: rem(12);
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
@@ -68,7 +68,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -174,7 +174,7 @@ ion-item{
/* font-size: rem(12); */ /* font-size: rem(12); */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -172,7 +172,7 @@ ion-item{
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
+6 -2
View File
@@ -19,6 +19,8 @@ import { Platform } from '@ionic/angular';
import { FirstEnterService } from '../../services/first-enter.service'; import { FirstEnterService } from '../../services/first-enter.service';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { CPSession } from 'src/app/store/documentManagement'; import { CPSession } from 'src/app/store/documentManagement';
import { StorageService } from 'src/app/services/storage.service';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
templateUrl: './login.page.html', templateUrl: './login.page.html',
@@ -55,6 +57,7 @@ export class LoginPage implements OnInit {
private platform: Platform, private platform: Platform,
private FirstEnterService: FirstEnterService, private FirstEnterService: FirstEnterService,
private storage:Storage, private storage:Storage,
private storageService: StorageService,
) {} ) {}
ngOnInit() {} ngOnInit() {}
@@ -140,7 +143,8 @@ export class LoginPage implements OnInit {
} }
this.changeProfileService.runLogin(); this.changeProfileService.runLogin();
/* this.getToken(); */
this.getToken();
SessionStore.setInativity(true); SessionStore.setInativity(true);
this.goback(); this.goback();
@@ -169,7 +173,7 @@ export class LoginPage implements OnInit {
this.ChatService.setheader(); this.ChatService.setheader();
this.ChatSystemService.loadChat(); this.ChatSystemService.loadChat();
} }
this.storageService.remove("Notifications")
this.getToken(); this.getToken();
if(!this.platform.is('desktop') && !this.platform.is('mobileweb')) { if(!this.platform.is('desktop') && !this.platform.is('mobileweb')) {
@@ -194,8 +194,8 @@
*ngIf="desktopComponent.showAddNewPublication" *ngIf="desktopComponent.showAddNewPublication"
class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1" class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1"
[publicationType]="publicationType" [publicationType]="publicationType"
[publication]="publication"
[folderId]="folderId" [folderId]="folderId"
[documentId]="documentId"
(closeDesktopComponent)="closeDesktopComponent($event)" (closeDesktopComponent)="closeDesktopComponent($event)"
(goBacktoPublicationDetails)="goBacktoPublicationDetails()" (goBacktoPublicationDetails)="goBacktoPublicationDetails()"
@@ -48,6 +48,7 @@ export class PublicationsPage implements OnInit {
} }
folderId: string; folderId: string;
documentId: any
// data set from child component // data set from child component
publicationType: any; publicationType: any;
publicationId: string; publicationId: string;
@@ -386,6 +387,7 @@ export class PublicationsPage implements OnInit {
} }
this.publication = publication; this.publication = publication;
this.documentId = publication?.DocumentId
this.desktopComponent.showAddNewPublication = true; this.desktopComponent.showAddNewPublication = true;
} }
@@ -39,7 +39,7 @@
<div class="post-img"> <div class="post-img">
<img [lazyLoad]="publication.FileBase64"> <img [lazyLoad]="publication.FileBase64">
</div> </div>
<div class="post-content px-20"> <div class="post-content">
<div class="post-title-time"> <div class="post-title-time">
<div class="post-title font-15-em"> <div class="post-title font-15-em">
<ion-label>{{publication.Title}}</ion-label> <ion-label>{{publication.Title}}</ion-label>
+1 -5
View File
@@ -72,8 +72,6 @@ export class ListBoxService {
endTime: event.end endTime: event.end
}) })
const day = this.dateService.getDay(event.start) const day = this.dateService.getDay(event.start)
event['manyDays'] = !this.dateService.isSameDate(event.start, event.end) event['manyDays'] = !this.dateService.isSameDate(event.start, event.end)
@@ -89,8 +87,7 @@ export class ListBoxService {
if (this.dateService.notSameDate(startDate, endDate)) { if (this.dateService.notSameDate(startDate, endDate)) {
if (diffDays <= 150 ) {
if (diffDays <= 150 && !event.event.IsAllDayEvent ) {
if (diffDays >= 1) { if (diffDays >= 1) {
@@ -138,7 +135,6 @@ export class ListBoxService {
if(this.CanPush(event, selectedDate)) days[day].push(event) if(this.CanPush(event, selectedDate)) days[day].push(event)
} }
} else { } else {
if(this.CanPush(event, selectedDate)) days[day].push(event) if(this.CanPush(event, selectedDate)) days[day].push(event)
} }
} else { } else {
+9
View File
@@ -698,4 +698,13 @@ export class MessageService {
} catch (error) {} } catch (error) {}
} }
UIdata() {
this.incomingFromCurrentUser = this.u.username!= SessionStore.user.UserName
this.hasMessage = this.msg !=''
}
incomingFromCurrentUser = false
hasMessage = false
} }
+10
View File
@@ -851,12 +851,22 @@ export class EventsService {
const puturl = environment.apiURL + 'calendar/PutEvent'; const puturl = environment.apiURL + 'calendar/PutEvent';
let params = new HttpParams(); let params = new HttpParams();
// event.Organizer = {
// "Id": SessionStore.user.UserId,
// "EmailAddress": SessionStore.user.Email,
// "Name": SessionStore.user.UserName,
// "IsRequired": true,
// "UserType": "GD"
// }
// params = params.set("notifyUsers", true)
params = params.set("conflictResolutionMode", conflictResolutionMode.toString()); params = params.set("conflictResolutionMode", conflictResolutionMode.toString());
params = params.set("sendInvitationsOrCancellationsMode", sendInvitationsOrCancellationsMode.toString()); params = params.set("sendInvitationsOrCancellationsMode", sendInvitationsOrCancellationsMode.toString());
params.set('CalendarId', event.CalendarId) params.set('CalendarId', event.CalendarId)
params.set('CalendarName', event.CalendarName) params.set('CalendarName', event.CalendarName)
this.headers['CalendarId'] = event.CalendarId this.headers['CalendarId'] = event.CalendarId
this.headers['CalendarName'] = event.CalendarName this.headers['CalendarName'] = event.CalendarName
//params = params.set("CalendarName", event.CalendarName);
if (event.CalendarName == 'Oficial') { if (event.CalendarName == 'Oficial') {
if (SessionStore.user.Profile == 'MDGPR') { if (SessionStore.user.Profile == 'MDGPR') {
@@ -196,33 +196,26 @@ export class ApproveEventPage implements OnInit {
if(res.data.option == 'save') { if(res.data.option == 'save') {
if(res.data.note !== '') {
let body = { "serialNumber": serialNumber,
"action": "Emendar",
"dataFields": {
"ReviewUserComment": res.data,
}
}
const loader = this.toastService.loading(); let body = { "serialNumber": serialNumber,
"action": "Emendar",
try { "dataFields": {
await this.processes.PostTaskAction(body).toPromise(); "ReviewUserComment": res.data,
this.httpErroHandle.httpsSucessMessagge('Rever')
this.TaskService.loadEventosParaAprovacao();
this.close();
} catch (error) {
this.httpErroHandle.httpStatusHandle(error)
} finally {
loader.remove()
}
}
else {
if(res.data.option == 'save') {
this.toastService._badRequest('É necessário adicionar uma nota');
} }
} }
const loader = this.toastService.loading();
try {
await this.processes.PostTaskAction(body).toPromise();
this.httpErroHandle.httpsSucessMessagge('Rever')
this.TaskService.loadEventosParaAprovacao();
this.close();
} catch (error) {
this.httpErroHandle.httpStatusHandle(error)
} finally {
loader.remove()
}
} else { } else {
@@ -435,11 +435,10 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
if (recordData?.value?.recordDataBase64.includes('data:audio')) { if (recordData?.value?.recordDataBase64.includes('data:audio')) {
this.audioRecorded = recordData?.value?.recordDataBase64; this.audioRecorded = recordData?.value?.recordDataBase64;
} }
else if(recordData?.value?.mimeType && recordData?.value?.recordDataBase64) { else if (recordData?.value?.mimeType && recordData?.value?.recordDataBase64) {
this.audioRecorded = `data:${recordData.value.mimeType};base64,${recordData?.value?.recordDataBase64}`; this.audioRecorded = `data:${recordData.value.mimeType};base64,${recordData?.value?.recordDataBase64}`;
} }
//Converting base64 to blob //Converting base64 to blob
const encodedData = btoa(this.audioRecorded); const encodedData = btoa(this.audioRecorded);
const blob = this.fileService.base64toBlob(encodedData, recordData.value.mimeType) const blob = this.fileService.base64toBlob(encodedData, recordData.value.mimeType)
@@ -460,7 +459,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}], }],
temporaryData: formData, temporaryData: formData,
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: encodedData,
} }
}) })
@@ -748,22 +747,39 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
"title_link_download": false, "title_link_download": false,
}], }],
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: base64,
} }
}) })
} }
async takePicture() { async takePicture() {
// const roomId = this.roomId
// const image = await this.CameraService.takePicture();
// await this.fileService.saveImage(image)
// const lastphoto: any = await this.fileService.loadFiles();
// const { capturedImage, capturedImageTitle } = await this.fileService.loadFileData(lastphoto);
// const base64 = await fetch(capturedImage);
// const blob = await base64.blob();
// const formData = new FormData();
// formData.append("blobFile", blob);
const roomId = this.roomId const roomId = this.roomId
const image = await this.CameraService.takePicture(); const file = await Camera.getPhoto({
await this.fileService.saveImage(image) quality: 90,
const lastphoto: any = await this.fileService.loadFiles(); // allowEditing: true,
const { capturedImage, capturedImageTitle } = await this.fileService.loadFileData(lastphoto); resultType: CameraResultType.Base64,
source: CameraSource.Camera
});
const imageBase64 = 'data:image/jpeg;base64,' + file.base64String
const blob = this.dataURItoBlob(imageBase64)
console.log(imageBase64)
const base64 = await fetch(capturedImage);
const blob = await base64.blob();
const formData = new FormData(); const formData = new FormData();
formData.append("blobFile", blob); formData.append("blobFile", blob);
@@ -773,13 +789,13 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
"guid": '' "guid": ''
}, },
attachments: [{ attachments: [{
"title": capturedImageTitle, "title": 'file.jpg',
"text": "description", "text": "description",
"title_link_download": false, "title_link_download": false,
}], }],
temporaryData: formData, temporaryData: formData,
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: imageBase64,
} }
}) })
@@ -847,14 +863,13 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
quality: 90, quality: 90,
// allowEditing: true, // allowEditing: true,
resultType: CameraResultType.Base64, resultType: CameraResultType.Base64,
source: CameraSource.Photos source: CameraSource.Camera
}); });
//const imageData = await this.fileToBase64Service.convert(file) const imageBase64 = 'data:image/jpeg;base64,' + file.base64String
// const blob = this.dataURItoBlob(imageBase64)
const response = await fetch('data:image/jpeg;base64,' + file.base64String!); console.log(imageBase64)
const blob = await response.blob();
const formData = new FormData(); const formData = new FormData();
formData.append("blobFile", blob); formData.append("blobFile", blob);
@@ -872,7 +887,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
"title_link_download": false, "title_link_download": false,
}], }],
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: imageBase64,
} }
}) })
@@ -886,6 +901,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
const file: any = await this.fileService.getFileFromDevice(types); const file: any = await this.fileService.getFileFromDevice(types);
if (file.type != "application/img" && file.type != "image/png" && file.type != "image/jpeg" && file.type != "image/gif") { if (file.type != "application/img" && file.type != "image/png" && file.type != "image/jpeg" && file.type != "image/gif") {
const encodedData = btoa(JSON.stringify(await this.getBase64(file).catch ((error) => { const encodedData = btoa(JSON.stringify(await this.getBase64(file).catch ((error) => {
@@ -894,8 +910,10 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
const blob = this.fileService.base64toBlob(encodedData, file.type) const blob = this.fileService.base64toBlob(encodedData, file.type)
const fileBase64 = await this._getBase64(file)
const formData = new FormData(); const formData = new FormData();
formData.append("blobFile", blob); formData.append('blobFile', blob);
this.ChatSystemService.getGroupRoom(roomId).send({ this.ChatSystemService.getGroupRoom(roomId).send({
file: { file: {
@@ -911,7 +929,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}], }],
temporaryData: formData, temporaryData: formData,
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: fileBase64,
} }
}) })
@@ -1170,5 +1188,45 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}); });
} }
dataURItoBlob(dataURI) {
// convert base64 to raw binary data held in a string
// doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
var byteString = atob(dataURI.split(',')[1]);
// separate out the mime component
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
// write the bytes of the string to an ArrayBuffer
var ab = new ArrayBuffer(byteString.length);
// create a view into the buffer
var ia = new Uint8Array(ab);
// set the bytes of the buffer to the correct values
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
// write the ArrayBuffer to a blob, and you're done
var blob = new Blob([ab], {type: mimeString});
return blob;
}
_getBase64(file) {
return new Promise((resolve, reject)=>{
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
resolve(reader.result)
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
})
}
} }
+34 -13
View File
@@ -676,7 +676,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
"title_link_download": false, "title_link_download": false,
}], }],
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: base64,
} }
}) })
@@ -686,13 +686,18 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
const roomId = this.roomId const roomId = this.roomId
const image = await this.CameraService.takePicture(); const file = await Camera.getPhoto({
await this.fileService.saveImage(image); quality: 90,
const lastphoto: any = await this.fileService.loadFiles(); // allowEditing: true,
const { capturedImage, capturedImageTitle } = await this.fileService.loadFileData(lastphoto); resultType: CameraResultType.Base64,
const base64 = await fetch(capturedImage); source: CameraSource.Camera
});
const imageBase64 = 'data:image/jpeg;base64,' + file.base64String
const blob = this.dataURItoBlob(imageBase64)
console.log(imageBase64)
const blob = await base64.blob();
const formData = new FormData(); const formData = new FormData();
formData.append("blobFile", blob); formData.append("blobFile", blob);
@@ -704,13 +709,12 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}, },
temporaryData: formData, temporaryData: formData,
attachments: [{ attachments: [{
"title": capturedImageTitle, "title": "file.jpg",
"image_url": capturedImage,
"text": "description", "text": "description",
"title_link_download": false, "title_link_download": false,
}], }],
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: imageBase64,
} }
}) })
@@ -795,6 +799,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
const response = await fetch(base64); const response = await fetch(base64);
const blob = await response.blob(); const blob = await response.blob();
console.log(base64)
const formData = new FormData(); const formData = new FormData();
formData.append("blobFile", blob); formData.append("blobFile", blob);
@@ -811,7 +817,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
"title_link_download": false, "title_link_download": false,
}], }],
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: base64,
} }
}) })
@@ -826,6 +832,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
const file: any = await this.fileService.getFileFromDevice(types); const file: any = await this.fileService.getFileFromDevice(types);
if (file.type != "application/img" && file.type != "image/png" && file.type != "image/jpeg" && file.type != "image/gif") { if (file.type != "application/img" && file.type != "image/png" && file.type != "image/jpeg" && file.type != "image/gif") {
const encodedData = btoa(JSON.stringify(await this.getBase64(file).catch ((error) => { const encodedData = btoa(JSON.stringify(await this.getBase64(file).catch ((error) => {
@@ -833,9 +840,11 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}))); })));
const blob = this.fileService.base64toBlob(encodedData, file.type) const blob = this.fileService.base64toBlob(encodedData, file.type)
const fileBase64 = await this._getBase64(file)
const formData = new FormData(); const formData = new FormData();
formData.append("blobFile", blob); formData.append('blobFile', blob);
this.ChatSystemService.getDmRoom(roomId).send({ this.ChatSystemService.getDmRoom(roomId).send({
file: { file: {
@@ -851,7 +860,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}], }],
temporaryData: formData, temporaryData: formData,
attachmentsModelData: { attachmentsModelData: {
fileBase64: await this.fileService.blobToBase64(blob), fileBase64: fileBase64,
} }
}) })
@@ -862,6 +871,18 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
} }
_getBase64(file) {
return new Promise((resolve, reject)=>{
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
resolve(reader.result)
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
})
}
getFileReader(): FileReader { getFileReader(): FileReader {
const fileReader = new FileReader(); const fileReader = new FileReader();
const zoneOriginalInstance = (fileReader as any)["__zone_symbol__originalInstance"]; const zoneOriginalInstance = (fileReader as any)["__zone_symbol__originalInstance"];
@@ -179,7 +179,7 @@ ion-item{
/* font-size: rem(12); */ /* font-size: rem(12); */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -181,7 +181,7 @@ ion-item{
/* font-size: rem(12); */ /* font-size: rem(12); */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -166,7 +166,7 @@
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -102,7 +102,7 @@ ion-item{
//font-size: 12px; //font-size: 12px;
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -102,7 +102,7 @@ ion-item{
//font-size: 12px; //font-size: 12px;
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -72,7 +72,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -72,7 +72,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -77,7 +77,7 @@ ion-button{
background: var(--label-bg-color); background: var(--label-bg-color);
float: right; float: right;
padding: 5px 13.5px 5px 13.5px; padding: 5px 13.5px 5px 13.5px;
color: #fff; color: black;
font-size: rem(14); font-size: rem(14);
} }
@@ -169,7 +169,7 @@ ion-item{
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
@@ -164,7 +164,7 @@ ion-item{
/* font-size: 12px; */ /* font-size: 12px; */
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
.exp-date{ .exp-date{
+32 -14
View File
@@ -47,14 +47,25 @@
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="icon font-45-em" src='assets/images/icons-profile.svg'></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="icon font-45-em" src='assets/images/icons-profile.svg'></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="icon font-45-em" src='assets/images/theme/gov/icons-profile.svg'></ion-icon> --> <ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="icon font-45-em" src='assets/images/theme/gov/icons-profile.svg'></ion-icon> -->
<img *ngIf="loggeduser.RoleDescription == 'Presidente da República' " class="icon font-45-em" <div *ngIf="profilePicture == ''" class="profile-image">
src='assets/images/presidente.png'> <img *ngIf="loggeduser.RoleDescription == 'Presidente da República' " class="profile-image"
<img *ngIf="loggeduser.RoleDescription == 'Ministro e Director do Gabinete do PR' " class="icon font-45-em" src='assets/images/presidente.png'>
src='assets/images/ministro.png'> <img *ngIf="loggeduser.RoleDescription == 'Ministro e Director do Gabinete do PR' " class="profile-image"
<img *ngIf="loggeduser.RoleDescription == 'Secretário Geral' " class="icon font-45-em" src='assets/images/ministro.png'>
src='assets/images/secretaria_geral.png'> <img *ngIf="loggeduser.RoleDescription == 'Secretário Geral' " class="profile-image"
src='assets/images/secretaria_geral.png'>
<ion-icon
*ngIf="loggeduser.RoleDescription != 'Presidente da República'&& loggeduser.RoleDescription != 'Ministro e Director do Gabinete do PR' && loggeduser.RoleDescription != 'Secretário Geral' "
class="icon font-45-em" src='assets/images/theme/gov/icons-profile.svg'></ion-icon>
</div>
<div *ngIf="profilePicture != ''" class="profile-image">
<img class="profile-image" src={{profilePicture}}>
</div>
<ion-icon *ngIf="loggeduser.RoleDescription != 'Presidente da República'&& loggeduser.RoleDescription != 'Ministro e Director do Gabinete do PR' && loggeduser.RoleDescription != 'Secretário Geral' " class="icon font-45-em" src='assets/images/theme/gov/icons-profile.svg'></ion-icon>
<div class="profile-text"> <div class="profile-text">
<div *ngIf="notificationLength > 0" class="icon-badge" style="right: -6px;top: 38px;top: -6px;"> <div *ngIf="notificationLength > 0" class="icon-badge" style="right: -6px;top: 38px;top: -6px;">
@@ -200,16 +211,23 @@
<ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="icon" src='assets/images/theme/doneIt/icons-profile.svg'></ion-icon> <ion-icon *ngIf="ThemeService.currentTheme == 'doneIt' " class="icon" src='assets/images/theme/doneIt/icons-profile.svg'></ion-icon>
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="icon" src='assets/images/theme/gov/icons-profile.svg'></ion-icon> --> <ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="icon" src='assets/images/theme/gov/icons-profile.svg'></ion-icon> -->
<div *ngIf="profilePicture == ''" class="profile-image">
<img *ngIf="loggeduser.RoleDescription == 'Presidente da República' " class="profile-image"
src='assets/images/presidente.png'>
<img *ngIf="loggeduser.RoleDescription == 'Ministro e Director do Gabinete do PR' " class="profile-image"
src='assets/images/ministro.png'>
<img *ngIf="loggeduser.RoleDescription == 'Secretário Geral' " class="profile-image"
src='assets/images/secretaria_geral.png'>
<img *ngIf="loggeduser.RoleDescription == 'Presidente da República' " class="profile-image" <ion-icon
src='assets/images/presidente.png'> *ngIf="loggeduser.RoleDescription != 'Presidente da República'&& loggeduser.RoleDescription != 'Ministro e Director do Gabinete do PR' && loggeduser.RoleDescription != 'Secretário Geral' "
<img *ngIf="loggeduser.RoleDescription == 'Ministro e Director do Gabinete do PR' " class="profile-image" class="icon" src='assets/images/theme/gov/icons-profile.svg'></ion-icon>
src='assets/images/ministro.png'> </div>
<img *ngIf="loggeduser.RoleDescription == 'Secretário Geral' " class="profile-image"
src='assets/images/secretaria_geral.png'>
<ion-icon *ngIf="loggeduser.RoleDescription != 'Presidente da República'&& loggeduser.RoleDescription != 'Ministro e Director do Gabinete do PR' && loggeduser.RoleDescription != 'Secretário Geral' " class="icon" src='assets/images/theme/gov/icons-profile.svg'></ion-icon>
<div *ngIf="profilePicture != ''" class="profile-image">
<img class="profile-image" src={{profilePicture}}>
</div>
<div class="profile-text"> <div class="profile-text">
<div *ngIf="notificationLength > 0" class="icon-badge" style="right: -6px;top: 38px;top: -6px;"> <div *ngIf="notificationLength > 0" class="icon-badge" style="right: -6px;top: 38px;top: -6px;">
+13 -1
View File
@@ -38,6 +38,7 @@ export class HeaderPage implements OnInit {
showProfileModal = false showProfileModal = false
permissionList = new PermissionList(); permissionList = new PermissionList();
notificationCount: number = 0; notificationCount: number = 0;
profilePicture = "";
constructor( constructor(
@@ -52,7 +53,8 @@ export class HeaderPage implements OnInit {
private eventTriger: EventTrigger, private eventTriger: EventTrigger,
public ActiveTabService: ActiveTabService, public ActiveTabService: ActiveTabService,
private notificationService: NotificationsService, private notificationService: NotificationsService,
private cdRef: ChangeDetectorRef private cdRef: ChangeDetectorRef,
private storageService: StorageService,
) { ) {
this.loggeduser = SessionStore.user; this.loggeduser = SessionStore.user;
router.events.subscribe((val) => { router.events.subscribe((val) => {
@@ -76,9 +78,19 @@ export class HeaderPage implements OnInit {
async ngOnInit() { async ngOnInit() {
this.hideSearch(); this.hideSearch();
this.notificationLengthData(); this.notificationLengthData();
this.getProfilpicture();
} }
getProfilpicture() {
this.storageService.get(this.SessionStore.user.RoleID.toString()).then((picture) => {
console.log(picture)
this.profilePicture = picture
}).catch((error ) => {
this.profilePicture = "";
})
}
updateReciveNotification() { updateReciveNotification() {
this.eventTriger.getObservable().subscribe((event) => { this.eventTriger.getObservable().subscribe((event) => {
if (event.notification == "recive") { if (event.notification == "recive") {
@@ -12,6 +12,7 @@
<ion-content> <ion-content>
<div class="content-container"> <div class="content-container">
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
<div *ngIf="publicationType!='1'" class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom "> <div *ngIf="publicationType!='1'" class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="pub.Title" name="title" placeholder="Título*" ></ion-input> <ion-input autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="pub.Title" name="title" placeholder="Título*" ></ion-input>
@@ -29,6 +30,11 @@
</div> </div>
<!-- <div *ngIf="publication">
OriginalFileName: {{ publication.OriginalFileName }}
</div> -->
<!-- Captured --> <!-- Captured -->
<div class="ion-item-container-no-border" *ngIf="capturedImage"> <div class="ion-item-container-no-border" *ngIf="capturedImage">
<ion-label class="attached-title pb-10">Fotografia Anexada</ion-label> <ion-label class="attached-title pb-10">Fotografia Anexada</ion-label>
@@ -32,6 +32,7 @@ export class NewPublicationPage implements OnInit {
@Input() publication!: Publication; @Input() publication!: Publication;
@Input() publicationType: string; @Input() publicationType: string;
@Input() folderId:string; @Input() folderId:string;
@Input() documentId:string;
@Output() closeDesktopComponent = new EventEmitter<any>(); @Output() closeDesktopComponent = new EventEmitter<any>();
@Output() openPublicationDetails = new EventEmitter<any>(); @Output() openPublicationDetails = new EventEmitter<any>();
@@ -64,16 +65,45 @@ export class NewPublicationPage implements OnInit {
setData() { setData() {
if(!this.publication) { if(!this.publicationType) {
setTimeout(() => { setTimeout(() => {
this.setData() this.setData()
}, 500) }, 500)
} else { } else {
this.pub = this.publication // this.pub = this.publication
// this.publication = null
this.getPublicationDetail()
} }
} }
getPublicationDetail() {
if(this.publicationType != '2') {
this.showLoader = true;
this.publications.GetPublicationById(this.documentId).subscribe( res => {
this.publication = {
DateIndex: res.DateIndex,
DocumentId: res.DocumentId,
ProcessId:res.ProcessId,
Title:res.Title,
Message: res.Message,
DatePublication: res.DatePublication,
FileBase64: "data:image/jpg;base64," + res.FileBase64,
OriginalFileName: res.OriginalFileName,
FileExtension: res.FileExtension,
}
this.pub = this.publication;
this.showLoader = false;
}, () => {
this.showLoader = false;
this.goBack()
});
}
}
async takePicture() { async takePicture() {
const capturedImage = await Camera.getPhoto({ const capturedImage = await Camera.getPhoto({
quality: 50, quality: 50,
@@ -150,6 +180,16 @@ export class NewPublicationPage implements OnInit {
} }
if(this.publicationType == '3') { if(this.publicationType == '3') {
if(!this.publication?.OriginalFileName || !this.pub.OriginalFileName) {
if(this.pub?.OriginalFileName) {
console.log('this.pub',this.pub)
}
throw('no this.publication.OriginalFileName')
}
const loader = this.toastService.loading() const loader = this.toastService.loading()
if(this.capturedImage != '') { if(this.capturedImage != '') {
@@ -10,6 +10,7 @@
<p class="post-data">{{publication.DatePublication | date: 'dd-MM-yyyy | h:mm'}}</p> <p class="post-data">{{publication.DatePublication | date: 'dd-MM-yyyy | h:mm'}}</p>
</div> </div>
</div> </div>
<!-- OriginalFileName: {{ publication.OriginalFileName }} -->
<div *ngIf="publication.Title == ''" class="title-contentd-flex pl-20 pt-25"> <div *ngIf="publication.Title == ''" class="title-contentd-flex pl-20 pt-25">
<div class="back-icon cursor-pointer"> <div class="back-icon cursor-pointer">
<ion-icon (click)="goBack()" slot="end" src='assets/images/assets/images/theme/gov/icons-calendar-arrow-left.svg'></ion-icon> <ion-icon (click)="goBack()" slot="end" src='assets/images/assets/images/theme/gov/icons-calendar-arrow-left.svg'></ion-icon>
@@ -70,11 +70,14 @@ export class PublicationDetailPage implements OnInit {
const localPublication = this.publicationFolderService.getLocalPublication(folderId, this.publicationId); const localPublication = this.publicationFolderService.getLocalPublication(folderId, this.publicationId);
if(localPublication?.ProcessId) { if(localPublication?.ProcessId) {
console.log('console.log local storage')
this.publication = localPublication this.publication = localPublication
} else { } else {
console.log('API res')
this.showLoader = true; this.showLoader = true;
this.publications.GetPublicationById(this.publicationId).subscribe(res => { this.publications.GetPublicationById(this.publicationId).subscribe(res => {
@@ -43,7 +43,7 @@
<div class="post-img"> <div class="post-img">
<img [lazyLoad]="publication.FileBase64"> <img [lazyLoad]="publication.FileBase64">
</div> </div>
<div class="post-content px-20"> <div class="post-content">
<div class="post-title-time"> <div class="post-title-time">
<div class="post-title"> <div class="post-title">
<ion-label>{{publication.Title}}</ion-label> <ion-label>{{publication.Title}}</ion-label>
-1
View File
@@ -257,7 +257,6 @@ td.monthview-secondary-with-event, td.monthview-secondary-with-event[_ngcontent-
} */ } */
.calendar-container{ .calendar-container{
height: 333px;
z-index: 10; z-index: 10;
transition: 0.5s; transition: 0.5s;
overflow-y: hidden; overflow-y: hidden;
+1 -1
View File
@@ -648,7 +648,7 @@ $app-theme: mat-light-theme(
font-size: rem(12); font-size: rem(12);
float: right; float: right;
padding: 2.5px 13.5px 2.5px 13.5px; padding: 2.5px 13.5px 2.5px 13.5px;
color: #fff; color: black;
} }
} }
+6 -1
View File
@@ -24,5 +24,10 @@
"fullTemplateTypeCheck": true, "fullTemplateTypeCheck": true,
"strictInjectionParameters": true "strictInjectionParameters": true
}, },
"esModuleInterop": true "esModuleInterop": true,
"exclude": [
"src/models",
"src/sql",
"src/connection",
]
} }
File diff suppressed because one or more lines are too long
+2 -4
View File
@@ -2,14 +2,12 @@
"folders": [ "folders": [
{ {
"path": "." "path": "."
},
{
"path": "..\\powercon"
} }
], ],
"settings": { "settings": {
"cSpell.words": [ "cSpell.words": [
"Chatmessage" "Chatmessage"
] ],
"nuxt.isNuxtApp": false
} }
} }