ChatStorage Done Done!
@@ -11,7 +11,7 @@
|
|||||||
<ion-tab-button tab="agenda" [class.active]="pathname === '/home/agenda' ">
|
<ion-tab-button tab="agenda" [class.active]="pathname === '/home/agenda' ">
|
||||||
<!-- <ion-icon name="calendar"></ion-icon> -->
|
<!-- <ion-icon name="calendar"></ion-icon> -->
|
||||||
<ion-icon *ngIf="pathname != '/home/agenda'" class="nav-icon" src="assets/images/icons-nav-calendar.svg"></ion-icon>
|
<ion-icon *ngIf="pathname != '/home/agenda'" class="nav-icon" src="assets/images/icons-nav-calendar.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="pathname == '/home/agenda'" class="nav-icon" src="assets/images/nav-hover/icons-nav-calendar-active.svg"></ion-icon>
|
<ion-icon *ngIf="pathname == '/home/agenda'" class="nav-icon" src="assets/images/nav-hover/icons-nav-agenda-active.svg"></ion-icon>
|
||||||
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Agenda</ion-label>
|
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Agenda</ion-label>
|
||||||
</ion-tab-button>
|
</ion-tab-button>
|
||||||
<ion-tab-button (click)="goto('/home/gabinete-digital')" [class.active]="pathname === '/home/gabinete-digital' ">
|
<ion-tab-button (click)="goto('/home/gabinete-digital')" [class.active]="pathname === '/home/gabinete-digital' ">
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
<ion-tab-button tab="publications" [class.active]="pathname === '/home/publications' ">
|
<ion-tab-button tab="publications" [class.active]="pathname === '/home/publications' ">
|
||||||
<ion-icon *ngIf="pathname != '/home/publications'" class="nav-icon" src="assets/images/icons-nav-actions.svg"></ion-icon>
|
<ion-icon *ngIf="pathname != '/home/publications'" class="nav-icon" src="assets/images/icons-nav-actions.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="pathname == '/home/publications'" class="nav-icon" src="assets/images/nav-hover/icons-nav-actions.svg"></ion-icon>
|
<ion-icon *ngIf="pathname == '/home/publications'" class="nav-icon" src="assets/images/nav-hover/icons-nav-actions-active.svg"></ion-icon>
|
||||||
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Ações</ion-label>
|
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Ações</ion-label>
|
||||||
</ion-tab-button>
|
</ion-tab-button>
|
||||||
<ion-tab-button tab="chat" [class.active]="pathname === '/home/chat' ">
|
<ion-tab-button tab="chat" [class.active]="pathname === '/home/chat' ">
|
||||||
|
|||||||
@@ -50,4 +50,5 @@ ion-badge {/* */
|
|||||||
|
|
||||||
ion-tab-button.active{
|
ion-tab-button.active{
|
||||||
color: #061b52;
|
color: #061b52;
|
||||||
|
font-weight: 650;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height">
|
<div class="ion-input-class-no-height">
|
||||||
<ion-textarea [(ngModel)]="note" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="note" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="hideThisFeature" class="ion-item-container-no-border">
|
<div *ngIf="hideThisFeature" class="ion-item-container-no-border">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{{modalTitle[taskType]}}
|
{{modalTitle[taskType]}}
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Assunto*" [(ngModel)]="postData.DispatchFolder.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Assunto*" [(ngModel)]="postData.DispatchFolder.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container-div width-100">
|
<div class="container-div width-100">
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class flex-grow-1" [class.input-error]="Form?.get('Message')?.invalid && validateFrom || validateField ">
|
<div class="ion-input-class flex-grow-1" [class.input-error]="Form?.get('Message')?.invalid && validateFrom || validateField ">
|
||||||
<ion-textarea class="add-border" placeholder="Descrição" [(ngModel)]="postData.DispatchFolder.Message"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" class="add-border" placeholder="Descrição" [(ngModel)]="postData.DispatchFolder.Message"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height width-100">
|
<div class="ion-input-class-no-height width-100">
|
||||||
<ion-textarea [(ngModel)]="note" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="note" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height width-100">
|
<div class="ion-input-class-no-height width-100">
|
||||||
<ion-textarea [(ngModel)]="note" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="note" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<div class="overflow-y-auto content-default-padding">
|
<div class="overflow-y-auto content-default-padding">
|
||||||
|
|
||||||
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Assunto*" [(ngModel)]="postData.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Assunto*" [(ngModel)]="postData.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="Form && validateFrom" >
|
<div *ngIf="Form && validateFrom" >
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Localização*" [(ngModel)]="postData.Location"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Localização*" [(ngModel)]="postData.Location"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height width-100">
|
<div class="ion-input-class-no-height width-100">
|
||||||
<ion-textarea [(ngModel)]="postData.Body.Text" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="postData.Body.Text" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height width-100">
|
<div class="ion-input-class-no-height width-100">
|
||||||
<ion-textarea [(ngModel)]="note" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="note" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -115,17 +115,17 @@
|
|||||||
<ion-icon class="right-icons" src="assets/images/icons-profile-calendar-md.svg"></ion-icon>
|
<ion-icon class="right-icons" src="assets/images/icons-profile-calendar-md.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button *ngIf="profile == 'pr' && loggeduser.Profile =='MDGPR' " (click)="changeProfile()" class="btn-no-color resize">
|
<button title="Mudar de Agenda" *ngIf="profile == 'pr' && loggeduser.Profile =='MDGPR' " (click)="changeProfile()" class="btn-no-color resize">
|
||||||
<ion-icon class="right-icons d-md-none" src="assets/images/icons-profile-calendar-pr.svg"></ion-icon>
|
<ion-icon class="right-icons d-md-none" src="assets/images/icons-profile-calendar-pr.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="btn-no-color cursor-pointer resize" (click)="viewEventsToApprove()" *ngIf="loggeduser.Profile == 'MDGPR'">
|
<button title="Visualizar a lista de Eventos para aprovação" class="btn-no-color cursor-pointer resize" (click)="viewEventsToApprove()" *ngIf="loggeduser.Profile == 'MDGPR'">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="right-icons" src="assets/images/icons-received-event.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="right-icons" src="assets/images/icons-received-event.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="right-icons" src="assets/images/theme/gov/icons-received-event.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="right-icons" src="assets/images/theme/gov/icons-received-event.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'tribunal' " class="right-icons" src="assets/images/theme/tribunal/icons-received-event.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'tribunal' " class="right-icons" src="assets/images/theme/tribunal/icons-received-event.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="btn-no-color cy-add-event cursor-pointer resize" (click)="clearContact();openAddEvent();">
|
<button title="Novo Evento" class="btn-no-color cy-add-event cursor-pointer resize" (click)="clearContact();openAddEvent();">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="right-icons" src="assets/images/icons-add.svg" ></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="right-icons" src="assets/images/icons-add.svg" ></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="right-icons" src="assets/images/theme/gov/icons-add.svg" ></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="right-icons" src="assets/images/theme/gov/icons-add.svg" ></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'tribunal' " class="right-icons" src="assets/images/theme/tribunal/icons-add.svg" ></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'tribunal' " class="right-icons" src="assets/images/theme/tribunal/icons-add.svg" ></ion-icon>
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
|
|
||||||
</ion-row>
|
</ion-row>
|
||||||
<ion-row class="timeline-date align-center">
|
<ion-row class="timeline-date align-center">
|
||||||
<span *ngIf="timelineIsCurrentDate()">Hoje, </span> {{ timelineDate }}
|
<span *ngIf="timelineIsCurrentDate()">Hoje, </span> {{ timelineDate }}
|
||||||
</ion-row>
|
</ion-row>
|
||||||
<ion-row class="filter ion-align-items-center" >
|
<ion-row class="filter ion-align-items-center" >
|
||||||
<div class="filter-name" (click)="showTimelineFilterState=!showTimelineFilterState">{{timelineFilterState}}</div>
|
<div class="filter-name" (click)="showTimelineFilterState=!showTimelineFilterState">{{timelineFilterState}}</div>
|
||||||
@@ -224,13 +224,13 @@
|
|||||||
</ion-row>
|
</ion-row>
|
||||||
</ion-row>
|
</ion-row>
|
||||||
|
|
||||||
<div class="d-none d-md-flex" *ngIf="loggeduser.Profile == 'MDGPR'">
|
<div class="calendar-title-container px-20 d-none d-md-flex" *ngIf="loggeduser.Profile == 'MDGPR'">
|
||||||
<div class="flex-grow-1 text-grey d-flex justify-center align-center">
|
<div class="calendar-title-description flex-grow-1 text-grey d-flex justify-center align-center">
|
||||||
<div>Própria</div>
|
<div>Meu Calendário</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-grow-1 text-black">
|
<div class="calendar-title-description text-black align-center">
|
||||||
<div class="flex-grow-1 text-grey d-flex justify-center align-center">
|
<div class="flex-grow-1 text-grey d-flex justify-center align-center">
|
||||||
<div>Presidente da República</div>
|
<div>Calendário do Presidente da República</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -850,3 +850,10 @@ $font-size: 11pt;
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.calendar-title-container{
|
||||||
|
width: 100% !important;
|
||||||
|
.calendar-title-description {
|
||||||
|
width: 50% !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
<div class="px-20">
|
<div class="px-20">
|
||||||
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Assunto*" [(ngModel)]="postEvent.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Assunto*" [(ngModel)]="postEvent.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Localização*" [(ngModel)]="postEvent.Location"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Localização*" [(ngModel)]="postEvent.Location"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
placeholder="Início"
|
placeholder="Início"
|
||||||
[(ngModel)]="postEvent.StartDate"
|
[(ngModel)]="postEvent.StartDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
placeholder="Fim"
|
placeholder="Fim"
|
||||||
[(ngModel)]="postEvent.EndDate"
|
[(ngModel)]="postEvent.EndDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
placeholder="Última ocorrência"
|
placeholder="Última ocorrência"
|
||||||
[(ngModel)]="postEvent.EventRecurrence.LastOccurrence"
|
[(ngModel)]="postEvent.EventRecurrence.LastOccurrence"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="2021"
|
min="2021"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height width-100 flex-grow-1">
|
<div class="ion-input-class-no-height width-100 flex-grow-1">
|
||||||
<!-- rows="6" cols="20" -->
|
<!-- rows="6" cols="20" -->
|
||||||
<ion-textarea [(ngModel)]="postEvent.Body.Text" placeholder="Detalhes" ></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="postEvent.Body.Text" placeholder="Detalhes" ></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<ion-content>
|
<ion-content>
|
||||||
<div class="ion-input-class-no-height">
|
<div class="ion-input-class-no-height">
|
||||||
<ion-textarea [(ngModel)]="emendMessage" rows="6" cols="20" placeholder="Indique o que necessita ser revisto!"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="emendMessage" rows="6" cols="20" placeholder="Indique o que necessita ser revisto!"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</ion-content>
|
</ion-content>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<!-- <input type="text" ngbDatepicker #d="ngbDatepicker"/> -->
|
<!-- <input type="text" ngbDatepicker #d="ngbDatepicker"/> -->
|
||||||
|
|
||||||
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Assunto*" [(ngModel)]="postEvent.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Assunto*" [(ngModel)]="postEvent.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Localização*" [(ngModel)]="postEvent.Location"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Localização*" [(ngModel)]="postEvent.Location"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Error messages -->
|
<!-- Error messages -->
|
||||||
@@ -142,7 +142,7 @@
|
|||||||
placeholder="Início*"
|
placeholder="Início*"
|
||||||
[(ngModel)]="postEvent.StartDate"
|
[(ngModel)]="postEvent.StartDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
max="2025"
|
max="2025"
|
||||||
>
|
>
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
placeholder="Fim*"
|
placeholder="Fim*"
|
||||||
[(ngModel)]="postEvent.EndDate"
|
[(ngModel)]="postEvent.EndDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
max="2025"
|
max="2025"
|
||||||
|
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height flex-grow-1">
|
<div class="ion-input-class-no-height flex-grow-1">
|
||||||
|
|
||||||
<ion-textarea [(ngModel)]="postEvent.Body.Text" placeholder="Detalhes" ></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="postEvent.Body.Text" placeholder="Detalhes" ></ion-textarea>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,11 +17,11 @@
|
|||||||
<ion-label class="title">Chat</ion-label>
|
<ion-label class="title">Chat</ion-label>
|
||||||
</div>
|
</div>
|
||||||
<div class="div-icon">
|
<div class="div-icon">
|
||||||
<button class="btn-no-color" (click)="openContactsPage()">
|
<button title="Nova Conversa Individual" class="btn-no-color" (click)="openContactsPage()">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " slot="end" src="assets/images/icons-chat-new-conversation.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " slot="end" src="assets/images/icons-chat-new-conversation.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " slot="end" src="assets/images/theme/gov/icons-chat-new-conversation.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " slot="end" src="assets/images/theme/gov/icons-chat-new-conversation.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn-no-color" (click)="openNewGroupPage()">
|
<button title="Novo Grupo" class="btn-no-color" (click)="openNewGroupPage()">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " slot="end" src="assets/images/icons-chat-new-group.svg" ></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " slot="end" src="assets/images/icons-chat-new-group.svg" ></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " slot="end" src="assets/images/theme/gov/icons-chat-new-group.svg" ></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " slot="end" src="assets/images/theme/gov/icons-chat-new-group.svg" ></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -151,9 +151,6 @@ export class ChatPage implements OnInit {
|
|||||||
this.authService.userData$.subscribe((res: any) => {
|
this.authService.userData$.subscribe((res: any) => {
|
||||||
this.loggedUser = res;
|
this.loggedUser = res;
|
||||||
console.log(this.loggedUser);
|
console.log(this.loggedUser);
|
||||||
|
|
||||||
this.getDirectMessagesDB();
|
|
||||||
this.getGroupsDB()
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.hideRefreshButton();
|
this.hideRefreshButton();
|
||||||
|
|||||||
@@ -112,8 +112,8 @@
|
|||||||
<div>
|
<div>
|
||||||
<div (click)="openPreview(msg)">
|
<div (click)="openPreview(msg)">
|
||||||
<!-- <img *ngIf="file.image_url" src="{{file.image_url}}" alt="image" (click)="imageSize(file.image_url)"> -->
|
<!-- <img *ngIf="file.image_url" src="{{file.image_url}}" alt="image" (click)="imageSize(file.image_url)"> -->
|
||||||
TTTT
|
File
|
||||||
<img *ngIf="msg.image_url" src="{{msg.image_url}}" alt="image">
|
<img *ngIf="msg.file.image_url" src="{{msg.file.image_url}}" alt="image">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -220,7 +220,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="message-box width-80">
|
<div class="message-box width-80">
|
||||||
<ion-item class="ion-no-padding type-message" lines="none">
|
<ion-item class="ion-no-padding type-message" lines="none">
|
||||||
<ion-textarea clearOnEdit="true" placeholder="Escrever uma mensagem" auto-grow class="message-input" rows="1" [(ngModel)]="message"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" clearOnEdit="true" placeholder="Escrever uma mensagem" auto-grow class="message-input" rows="1" [(ngModel)]="message"></ion-textarea>
|
||||||
<button hidden class="btn-no-color">
|
<button hidden class="btn-no-color">
|
||||||
<ion-icon slot="end" src="assets/icon/icons-chat-mic.svg"></ion-icon>
|
<ion-icon slot="end" src="assets/icon/icons-chat-mic.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -748,6 +748,11 @@ downloadFileMsg(msg) {
|
|||||||
this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
|
this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
|
||||||
console.log('FILE TYPE 44', this.downloadFile)
|
console.log('FILE TYPE 44', this.downloadFile)
|
||||||
|
|
||||||
|
msg.file = {
|
||||||
|
guid: msg.file.guid,
|
||||||
|
image_url: this.downloadFile,
|
||||||
|
type: msg.file.type
|
||||||
|
}
|
||||||
this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
|
this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -755,22 +760,24 @@ downloadFileMsg(msg) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async openPreview(msg) {
|
async openPreview(msg) {
|
||||||
if(msg.image_url != null) {
|
|
||||||
const modal = await this.modalController.create({
|
|
||||||
component: ViewMediaPage,
|
|
||||||
cssClass: 'modal modal-desktop',
|
|
||||||
componentProps: {
|
|
||||||
image: msg.image_url,
|
|
||||||
username: msg.u.name,
|
|
||||||
_updatedAt: msg._updatedAt,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
modal.present();
|
|
||||||
} else {
|
|
||||||
this.downloadFileMsg(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (msg.file.image_url === null || msg.file.image_url === '' ) {
|
||||||
|
this.downloadFileMsg(msg)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
const modal = await this.modalController.create({
|
||||||
|
component: ViewMediaPage,
|
||||||
|
cssClass: 'modal modal-desktop',
|
||||||
|
componentProps: {
|
||||||
|
image: msg.file.image_url,
|
||||||
|
username: msg.u.name,
|
||||||
|
_updatedAt: msg._updatedAt
|
||||||
|
}
|
||||||
|
});
|
||||||
|
modal.present();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,8 @@
|
|||||||
<div *ngIf="msg.attachments" class="message-attachments">
|
<div *ngIf="msg.attachments" class="message-attachments">
|
||||||
<div *ngFor="let file of msg.attachments let i = index">
|
<div *ngFor="let file of msg.attachments let i = index">
|
||||||
<div (click)="openPreview(msg)">
|
<div (click)="openPreview(msg)">
|
||||||
<img *ngIf="msg.image_url" src={{msg.image_url}} alt="image">
|
<!-- <img *ngIf="file.image_url" src="{{file.image_url}}" alt="image" (click)="imageSize(file.image_url)"> -->
|
||||||
|
<img *ngIf="msg.file.image_url" src="{{msg.file.image_url}}" alt="image">
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
@@ -92,7 +93,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div (press)="handlePress(msg._id)" class='message-container incoming-{{msg.u.username!=loggedUser.me.username}}' (click)="openPreview(msg)" *ngIf="msg.msg !=''">
|
<!-- <div (press)="handlePress(msg._id)" class='message-container incoming-{{msg.u.username!=loggedUser.me.username}}' (click)="openPreview(msg)" *ngIf="msg.msg !=''">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<ion-label>{{msg.u.name}}</ion-label>
|
<ion-label>{{msg.u.name}}</ion-label>
|
||||||
<span class="time">{{showDateDuration(msg._updatedAt)}}</span>
|
<span class="time">{{showDateDuration(msg._updatedAt)}}</span>
|
||||||
@@ -101,7 +102,7 @@
|
|||||||
<ion-label>{{msg.msg}}</ion-label>
|
<ion-label>{{msg.msg}}</ion-label>
|
||||||
{{last ? scrollToBottom() : ''}}
|
{{last ? scrollToBottom() : ''}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<div (press)="handlePress(msg._id)" class='message-container incoming-{{msg.u.username!=loggedUser.me.username}}' *ngIf="msg.alias =='documento'">
|
<div (press)="handlePress(msg._id)" class='message-container incoming-{{msg.u.username!=loggedUser.me.username}}' *ngIf="msg.alias =='documento'">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
@@ -111,8 +112,10 @@
|
|||||||
<div>
|
<div>
|
||||||
<div *ngIf="msg.attachments" class="message-attachments">
|
<div *ngIf="msg.attachments" class="message-attachments">
|
||||||
<div *ngFor="let file of msg.attachments let i = index">
|
<div *ngFor="let file of msg.attachments let i = index">
|
||||||
<div *ngIf="file.image_url" (click)="openPreview(msg)">
|
<div (click)="openPreview(msg)">
|
||||||
<img src="{{file.image_url}}" alt="image">
|
<!-- <img *ngIf="file.image_url" src="{{file.image_url}}" alt="image" (click)="imageSize(file.image_url)"> -->
|
||||||
|
File
|
||||||
|
<img *ngIf="msg.file.image_url" src="{{msg.file.image_url}}" alt="image">
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
@@ -209,8 +212,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="width-70">
|
<div class="width-70">
|
||||||
<ion-item class="ion-no-padding ion-no-margin type-message" lines="none">
|
<ion-item class="ion-no-padding ion-no-margin type-message" lines="none">
|
||||||
<ion-textarea *ngIf="!recording" clearOnEdit="true" placeholder="Escrever uma mensagem" auto-grow class="message-input" rows="1" [(ngModel)]="message"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" *ngIf="!recording" clearOnEdit="true" placeholder="Escrever uma mensagem" auto-grow class="message-input" rows="1" [(ngModel)]="message"></ion-textarea>
|
||||||
<ion-textarea *ngIf="recording" clearOnEdit="true" placeholder="Escrever uma mensagem" auto-grow class="message-input" rows="1" [(ngModel)]="durationDisplay"></ion-textarea>
|
<ion-textarea autocomplete="on" spellcheck="true" *ngIf="recording" clearOnEdit="true" placeholder="Escrever uma mensagem" auto-grow class="message-input" rows="1" [(ngModel)]="durationDisplay"></ion-textarea>
|
||||||
<button hidden #recordbtn class="btn-no-color" (click)="notImplemented()">
|
<button hidden #recordbtn class="btn-no-color" (click)="notImplemented()">
|
||||||
<ion-icon slot="end" src="assets/icon/icons-chat-mic.svg"></ion-icon>
|
<ion-icon slot="end" src="assets/icon/icons-chat-mic.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import { ViewMediaPage } from 'src/app/modals/view-media/view-media.page';
|
|||||||
import { HttpEventType } from '@angular/common/http';
|
import { HttpEventType } from '@angular/common/http';
|
||||||
import { ViewEventPage } from 'src/app/modals/view-event/view-event.page';
|
import { ViewEventPage } from 'src/app/modals/view-event/view-event.page';
|
||||||
import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'
|
import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'
|
||||||
|
import { MessageService } from 'src/app/services/chat/message.service';
|
||||||
|
|
||||||
const IMAGE_DIR = 'stored-images';
|
const IMAGE_DIR = 'stored-images';
|
||||||
|
|
||||||
@@ -131,7 +132,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
|
|||||||
directory: Directory.Data,
|
directory: Directory.Data,
|
||||||
recursive: true
|
recursive: true
|
||||||
});
|
});
|
||||||
this.getRoomMessageDB(this.roomId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngAfterViewInit() {
|
ngAfterViewInit() {
|
||||||
@@ -782,7 +782,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
|
|||||||
card.el.style['z-index'] = 11;
|
card.el.style['z-index'] = 11;
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadFileMsg(msg) {
|
downloadFileMsg(msg: MessageService) {
|
||||||
console.log('FILE TYPE', msg.file.type)
|
console.log('FILE TYPE', msg.file.type)
|
||||||
this.downloadFile = "";
|
this.downloadFile = "";
|
||||||
if (msg.file.type == "application/img") {
|
if (msg.file.type == "application/img") {
|
||||||
@@ -795,30 +795,39 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
|
|||||||
console.log('FILE TYPE 33', msg.file.type)
|
console.log('FILE TYPE 33', msg.file.type)
|
||||||
} else if (event.type === HttpEventType.Response) {
|
} else if (event.type === HttpEventType.Response) {
|
||||||
this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
|
this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
|
||||||
console.log('FILE TYPE 44', this.downloadFile)
|
|
||||||
|
|
||||||
|
msg.file = {
|
||||||
|
guid: msg.file.guid,
|
||||||
|
image_url: this.downloadFile,
|
||||||
|
type: msg.file.type
|
||||||
|
}
|
||||||
this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
|
this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
console.log('FILE TYPE 44', this.downloadFile)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async openPreview(msg) {
|
async openPreview(msg) {
|
||||||
if(msg.image_url != null) {
|
|
||||||
|
if (msg.file.image_url === null || msg.file.image_url === '' ) {
|
||||||
|
this.downloadFileMsg(msg)
|
||||||
|
|
||||||
|
} else {
|
||||||
const modal = await this.modalController.create({
|
const modal = await this.modalController.create({
|
||||||
component: ViewMediaPage,
|
component: ViewMediaPage,
|
||||||
cssClass: 'modal modal-desktop',
|
cssClass: 'modal modal-desktop',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
image: msg.image_url,
|
image: msg.file.image_url,
|
||||||
username: msg.u.name,
|
username: msg.u.name,
|
||||||
_updatedAt: msg._updatedAt,
|
_updatedAt: msg._updatedAt
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
modal.present();
|
modal.present();
|
||||||
} else {
|
|
||||||
this.downloadFileMsg(msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -51,13 +51,13 @@
|
|||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Início</ion-label>
|
<ion-label position="stacked">Data Início</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY H:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY H:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Fim</ion-label>
|
<ion-label position="stacked">Data Fim</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY HH:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY HH:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
|||||||
@@ -53,13 +53,13 @@
|
|||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Início</ion-label>
|
<ion-label position="stacked">Data Início</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY H:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY H:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Fim</ion-label>
|
<ion-label position="stacked">Data Fim</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY HH:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY HH:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
|||||||
@@ -53,13 +53,13 @@
|
|||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Início</ion-label>
|
<ion-label position="stacked">Data Início</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY H:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY H:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Fim</ion-label>
|
<ion-label position="stacked">Data Fim</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY HH:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY HH:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
|||||||
@@ -459,7 +459,7 @@ export class DespachoPrPage implements OnInit {
|
|||||||
async openExpedientActionsModal(taskAction: any, task: any) {
|
async openExpedientActionsModal(taskAction: any, task: any) {
|
||||||
//this.modalController.dismiss();
|
//this.modalController.dismiss();
|
||||||
let classs;
|
let classs;
|
||||||
if (window.innerWidth <= 800) {
|
if (window.innerWidth <= 700) {
|
||||||
classs = 'modal modal-desktop'
|
classs = 'modal modal-desktop'
|
||||||
} else {
|
} else {
|
||||||
classs = 'modal modal-desktop showAsideOptions'
|
classs = 'modal modal-desktop showAsideOptions'
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<div class="overflow-y-auto content-default-padding">
|
<div class="overflow-y-auto content-default-padding">
|
||||||
|
|
||||||
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Assunto*" [(ngModel)]="postData.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Assunto*" [(ngModel)]="postData.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="Form && validateFrom" >
|
<div *ngIf="Form && validateFrom" >
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Localização*" [(ngModel)]="postData.Location"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Localização*" [(ngModel)]="postData.Location"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
placeholder="Início*"
|
placeholder="Início*"
|
||||||
[(ngModel)]="postData.StartDate"
|
[(ngModel)]="postData.StartDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{ionicMinDate}}"
|
min="{{ionicMinDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -171,7 +171,7 @@
|
|||||||
placeholder="Fim*"
|
placeholder="Fim*"
|
||||||
[(ngModel)]="postData.EndDate"
|
[(ngModel)]="postData.EndDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{ionicMinDate}}"
|
min="{{ionicMinDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Assunto*" [(ngModel)]="postData.DispatchFolder.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Assunto*" [(ngModel)]="postData.DispatchFolder.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="Form && validateFrom" >
|
<div *ngIf="Form && validateFrom" >
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class flex-grow-1" [class.input-error]="Form?.get('Location')?.invalid && validateFrom || validateField ">
|
<div class="ion-input-class flex-grow-1" [class.input-error]="Form?.get('Location')?.invalid && validateFrom || validateField ">
|
||||||
<ion-textarea class="add-border" placeholder="Descrição" [(ngModel)]="postData.DispatchFolder.Message"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" class="add-border" placeholder="Descrição" [(ngModel)]="postData.DispatchFolder.Message"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
[(ngModel)]="folder.DateBegin"
|
[(ngModel)]="folder.DateBegin"
|
||||||
placeholder="Início"
|
placeholder="Início"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
[(ngModel)]="folder.DateEnd"
|
[(ngModel)]="folder.DateEnd"
|
||||||
placeholder="Fim"
|
placeholder="Fim"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2022">
|
max="2022">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="div-title">
|
<div class="div-title">
|
||||||
<ion-label class="title"> Nova Acção</ion-label>
|
<ion-label class="title"> Nova Acção</ion-label>
|
||||||
</div>
|
</div>
|
||||||
<div class="actionType">
|
<!-- <div class="actionType">
|
||||||
<ion-segment [(ngModel)]="segment" (ionChange)="segmentChanged($event)">
|
<ion-segment [(ngModel)]="segment" (ionChange)="segmentChanged($event)">
|
||||||
<ion-segment-button value="Viagem">
|
<ion-segment-button value="Viagem">
|
||||||
<ion-label>Viagem</ion-label>
|
<ion-label>Viagem</ion-label>
|
||||||
@@ -14,12 +14,12 @@
|
|||||||
<ion-label>Evento</ion-label>
|
<ion-label>Evento</ion-label>
|
||||||
</ion-segment-button>
|
</ion-segment-button>
|
||||||
</ion-segment>
|
</ion-segment>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input [(ngModel)]="folder.Description" placeholder="Assunto" ></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="folder.Description" placeholder="Assunto" ></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
class="d-block d-md-none"
|
class="d-block d-md-none"
|
||||||
placeholder="Início"
|
placeholder="Início"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025">
|
max="2025">
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
[(ngModel)]="folder.DateEnd"
|
[(ngModel)]="folder.DateEnd"
|
||||||
placeholder="Fim"
|
placeholder="Fim"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025">
|
max="2025">
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-textarea-class">
|
<div class="ion-textarea-class">
|
||||||
<ion-textarea [(ngModel)]="folder.Detail" rows="12" cols="20" placeholder="Descrição da acção..."></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="folder.Detail" rows="12" cols="20" placeholder="Descrição da acção..."></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ export class NewActionPage implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.segment = "Viagem";
|
this.segment = "Evento";
|
||||||
this.setDefaultTime()
|
this.setDefaultTime()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<div class="overflow-y-auto">
|
<div class="overflow-y-auto">
|
||||||
<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 [(ngModel)]="pub.Title" name="title" ngDefaultControl placeholder="Título" ></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="pub.Title" name="title" ngDefaultControl placeholder="Título" ></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="publicationType!='1'" class="container-div">
|
<div *ngIf="publicationType!='1'" class="container-div">
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-textarea-class" [class.input-error]="Form?.get('Message')?.invalid && validateFrom ">
|
<div class="ion-textarea-class" [class.input-error]="Form?.get('Message')?.invalid && validateFrom ">
|
||||||
<ion-textarea [(ngModel)]="pub.Message" name="description" ngDefaultControl rows="12" cols="20" placeholder="Corpo de texto..."></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="pub.Message" name="description" ngDefaultControl rows="12" cols="20" placeholder="Corpo de texto..."></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ export class NewPublicationPage implements OnInit {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
async laodPicture() {
|
/* async laodPicture() {
|
||||||
const capturedImage = await Camera.getPhoto({
|
const capturedImage = await Camera.getPhoto({
|
||||||
resultType: CameraResultType.Uri,
|
resultType: CameraResultType.Uri,
|
||||||
source: CameraSource.Photos,
|
source: CameraSource.Photos,
|
||||||
@@ -170,9 +170,9 @@ export class NewPublicationPage implements OnInit {
|
|||||||
|
|
||||||
this.capturedImage = await this.convertBlobToBase64(blob);
|
this.capturedImage = await this.convertBlobToBase64(blob);
|
||||||
this.capturedImageTitle = new Date().getTime() + '.jpeg';
|
this.capturedImageTitle = new Date().getTime() + '.jpeg';
|
||||||
}
|
} */
|
||||||
|
|
||||||
/* laodPicture() {
|
laodPicture() {
|
||||||
const input = this.fileLoaderService.createInput({
|
const input = this.fileLoaderService.createInput({
|
||||||
accept: ['image/apng', 'image/jpeg', 'image/png']
|
accept: ['image/apng', 'image/jpeg', 'image/png']
|
||||||
})
|
})
|
||||||
@@ -187,7 +187,7 @@ export class NewPublicationPage implements OnInit {
|
|||||||
console.log(this.capturedImage)
|
console.log(this.capturedImage)
|
||||||
};
|
};
|
||||||
|
|
||||||
} */
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
<div *ngIf="!skeletonLoader" class="aside overflow-y-auto d-flex flex-wrap width-100">
|
<div *ngIf="!skeletonLoader" class="aside overflow-y-auto d-flex flex-wrap width-100">
|
||||||
<!-- <ion-list class="width-100"> -->
|
<!-- <ion-list class="width-100"> -->
|
||||||
<ion-item-sliding disabled="{{showSlidingOptions}}" class="width-100"
|
<!-- <ion-item-sliding disabled="{{showSlidingOptions}}" class="width-100"
|
||||||
*ngFor="let viagem of publicationsTravelFolderList">
|
*ngFor="let viagem of publicationsTravelFolderList">
|
||||||
<ion-item lines="none"
|
<ion-item lines="none"
|
||||||
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding"
|
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding"
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</ion-item-option>
|
</ion-item-option>
|
||||||
</ion-item-options>
|
</ion-item-options>
|
||||||
</ion-item-sliding>
|
</ion-item-sliding> -->
|
||||||
<ion-item-sliding disabled="{{showSlidingOptions}}" class="width-100"
|
<ion-item-sliding disabled="{{showSlidingOptions}}" class="width-100"
|
||||||
*ngFor="let evento of publicationsEventFolderList">
|
*ngFor="let evento of publicationsEventFolderList">
|
||||||
<ion-item lines="none"
|
<ion-item lines="none"
|
||||||
@@ -113,7 +113,7 @@
|
|||||||
<ion-item lines="none"
|
<ion-item lines="none"
|
||||||
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding">
|
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding">
|
||||||
<div class="item-icon cursor-pointer">
|
<div class="item-icon cursor-pointer">
|
||||||
<ion-icon slot="end" src='assets/images/theme/gov/icons-plane-active-hover.svg'></ion-icon>
|
<ion-icon slot="end" src='assets/icon/icons-actions-grey.svg'></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-content flex-grow-1 cursor-pointer">
|
<div class="item-content flex-grow-1 cursor-pointer">
|
||||||
<p class="item-content-date my-5"><ion-skeleton-text animated style="width: 90%"></ion-skeleton-text></p>
|
<p class="item-content-date my-5"><ion-skeleton-text animated style="width: 90%"></ion-skeleton-text></p>
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
<ion-item lines="none"
|
<ion-item lines="none"
|
||||||
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding">
|
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding">
|
||||||
<div class="item-icon cursor-pointer">
|
<div class="item-icon cursor-pointer">
|
||||||
<ion-icon slot="end" src='assets/images/theme/gov/icons-plane-active-hover.svg'></ion-icon>
|
<ion-icon slot="end" src='assets/icon/icons-actions-grey.svg'></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-content flex-grow-1 cursor-pointer">
|
<div class="item-content flex-grow-1 cursor-pointer">
|
||||||
<p class="item-content-date my-5"><ion-skeleton-text animated style="width: 90%"></ion-skeleton-text></p>
|
<p class="item-content-date my-5"><ion-skeleton-text animated style="width: 90%"></ion-skeleton-text></p>
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
<ion-item lines="none"
|
<ion-item lines="none"
|
||||||
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding">
|
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding">
|
||||||
<div class="item-icon cursor-pointer">
|
<div class="item-icon cursor-pointer">
|
||||||
<ion-icon slot="end" src='assets/images/theme/gov/icons-plane-active-hover.svg'></ion-icon>
|
<ion-icon slot="end" src='assets/icon/icons-actions-grey.svg'></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-content flex-grow-1 cursor-pointer">
|
<div class="item-content flex-grow-1 cursor-pointer">
|
||||||
<p class="item-content-date my-5"><ion-skeleton-text animated style="width: 90%"></ion-skeleton-text></p>
|
<p class="item-content-date my-5"><ion-skeleton-text animated style="width: 90%"></ion-skeleton-text></p>
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
<ion-item lines="none"
|
<ion-item lines="none"
|
||||||
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding">
|
class="item width-100 d-flex ion-no-border ion-no-margin ion-no-padding">
|
||||||
<div class="item-icon cursor-pointer">
|
<div class="item-icon cursor-pointer">
|
||||||
<ion-icon slot="end" src='assets/images/theme/gov/icons-plane-active-hover.svg'></ion-icon>
|
<ion-icon slot="end" src='assets/icon/icons-actions-grey.svg'></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-content flex-grow-1 cursor-pointer">
|
<div class="item-content flex-grow-1 cursor-pointer">
|
||||||
<p class="item-content-date my-5"><ion-skeleton-text animated style="width: 90%"></ion-skeleton-text></p>
|
<p class="item-content-date my-5"><ion-skeleton-text animated style="width: 90%"></ion-skeleton-text></p>
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import { showDateDuration } from 'src/plugin/showDateDuration'
|
|||||||
import { ToastsService } from '../toast.service';
|
import { ToastsService } from '../toast.service';
|
||||||
import { chatHistory, ChatMessage } from 'src/app/models/chatMethod'
|
import { chatHistory, ChatMessage } from 'src/app/models/chatMethod'
|
||||||
import { Storage } from '@ionic/storage';
|
import { Storage } from '@ionic/storage';
|
||||||
|
import { Platform } from '@ionic/angular';
|
||||||
|
import { SqliteService } from 'src/app/services/sqlite.service';
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
@@ -33,6 +35,8 @@ export class RoomService {
|
|||||||
public WsChatService: WsChatService,
|
public WsChatService: WsChatService,
|
||||||
private MessageService: MessageService,
|
private MessageService: MessageService,
|
||||||
private storage: Storage,
|
private storage: Storage,
|
||||||
|
private platform: Platform,
|
||||||
|
private sqlservice: SqliteService,
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
setData({ customFields, id, name, t, lastMessage, _updatedAt }) {
|
setData({ customFields, id, name, t, lastMessage, _updatedAt }) {
|
||||||
@@ -85,6 +89,51 @@ export class RoomService {
|
|||||||
this.WsChatService.send(this.id, msg)
|
this.WsChatService.send(this.id, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getMsgFromDBMobile() {
|
||||||
|
console.log('ALL MSG DBBB', this.id)
|
||||||
|
this.sqlservice.getAllChatMSG(this.id).then((msg: any = []) => {
|
||||||
|
let ad = [];
|
||||||
|
ad = msg
|
||||||
|
console.log('ALL MSG DBBB', ad.length)
|
||||||
|
msg.map(element => {
|
||||||
|
console.log('CHANNEL ELEMENT', element)
|
||||||
|
let msgChat = {
|
||||||
|
_id: element.Id,
|
||||||
|
attachments: this.isJson(element.Attachments),
|
||||||
|
channels: this.isJson(element.Channels),
|
||||||
|
file: {
|
||||||
|
guid: this.isJson(element.File).guid,
|
||||||
|
image_url: this.isJson(element.image_url),
|
||||||
|
type: this.isJson(element.File).type
|
||||||
|
|
||||||
|
},
|
||||||
|
mentions: this.isJson(element.Mentions),
|
||||||
|
msg: element.Msg,
|
||||||
|
rid: element.Rid,
|
||||||
|
ts: element.Ts,
|
||||||
|
u: this.isJson(element.U),
|
||||||
|
_updatedAt: this.isJson(element.UpdatedAt),
|
||||||
|
}
|
||||||
|
|
||||||
|
let mmessage = this.fix_updatedAt(msgChat)
|
||||||
|
console.log('FROM DB WEB', mmessage)
|
||||||
|
const wewMessage = new MessageService()
|
||||||
|
wewMessage.setData(mmessage)
|
||||||
|
this.massages.push(wewMessage)
|
||||||
|
console.log('loadHistory 222', this.massages)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
isJson(str) {
|
||||||
|
try {
|
||||||
|
JSON.parse(str);
|
||||||
|
} catch (e) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return JSON.parse(str);
|
||||||
|
}
|
||||||
|
|
||||||
getMsgFromDB() {
|
getMsgFromDB() {
|
||||||
|
|
||||||
this.storage.get('chatmsg' + this.id).then((message) => {
|
this.storage.get('chatmsg' + this.id).then((message) => {
|
||||||
@@ -110,37 +159,45 @@ export class RoomService {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// runs onces only
|
// runs onces only
|
||||||
loadHistory(limit = 100) {
|
loadHistory(limit = 100) {
|
||||||
|
|
||||||
if (this.hasLoadHistory) { return false }
|
if (this.hasLoadHistory) { return false }
|
||||||
|
|
||||||
// ionic store
|
/* this.WsChatService.loadHistory(this.id, limit).then((chatHistory:chatHistory) => {
|
||||||
|
console.log('loadHistory', chatHistory)
|
||||||
|
|
||||||
|
chatHistory.result.messages.reverse().forEach(message => {
|
||||||
// websocket
|
|
||||||
this.WsChatService.loadHistory(this.id, limit).then(async (chatHistory: chatHistory) => {
|
|
||||||
|
|
||||||
//await this.transformData(chatHistory.result.messages.reverse());
|
|
||||||
//console.log('loadHistory 111', chatHistory.result.messages.reverse())
|
|
||||||
const mgsArray = chatHistory.result.messages.reverse();
|
|
||||||
await this.storage.remove('chatmsg' + this.id).then(() => {
|
|
||||||
console.log('MSG REMOVE ON STORAGE')
|
|
||||||
})
|
|
||||||
await this.storage.set('chatmsg' + this.id, mgsArray).then((value) => {
|
|
||||||
console.log('MSG SAVED ON STORAGE', value)
|
|
||||||
this.getMsgFromDB()
|
|
||||||
});
|
|
||||||
|
|
||||||
/* chatHistory.result.messages.reverse().forEach(message => {
|
|
||||||
|
|
||||||
message = this.fix_updatedAt(message)
|
message = this.fix_updatedAt(message)
|
||||||
console.log('loadHistory', message)
|
|
||||||
this.storageMessage.push(message)
|
|
||||||
const wewMessage = new MessageService()
|
const wewMessage = new MessageService()
|
||||||
wewMessage.setData(message)
|
wewMessage.setData(message)
|
||||||
this.massages.push(wewMessage)
|
this.massages.push(wewMessage)
|
||||||
}); */
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}) */
|
||||||
|
|
||||||
|
this.WsChatService.loadHistory(this.id, limit).then(async (chatHistory: chatHistory) => {
|
||||||
|
|
||||||
|
const mgsArray = chatHistory.result.messages.reverse();
|
||||||
|
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
|
||||||
|
await this.storage.remove('chatmsg' + this.id).then(() => {
|
||||||
|
console.log('MSG REMOVE ON STORAGE')
|
||||||
|
})
|
||||||
|
await this.storage.set('chatmsg' + this.id, mgsArray).then((value) => {
|
||||||
|
console.log('MSG SAVED ON STORAGE', value)
|
||||||
|
this.getMsgFromDB()
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
mgsArray.forEach((element) => {
|
||||||
|
console.log('SQLITE WEBSOCKET', element)
|
||||||
|
this.sqlservice.addChatMSG(element)
|
||||||
|
})
|
||||||
|
this.getMsgFromDBMobile()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import { SessionStore } from 'src/app/store/session.service';
|
|||||||
import { capitalizeTxt } from 'src/plugin/text'
|
import { capitalizeTxt } from 'src/plugin/text'
|
||||||
import { Rooms, Update as room } from 'src/app/models/chatMethod';
|
import { Rooms, Update as room } from 'src/app/models/chatMethod';
|
||||||
import { Storage } from '@ionic/storage';
|
import { Storage } from '@ionic/storage';
|
||||||
|
import { Platform } from '@ionic/angular';
|
||||||
|
import { SqliteService } from 'src/app/services/sqlite.service';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
@@ -24,7 +26,9 @@ export class WsChatMethodsService {
|
|||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private WsChatService: WsChatService,
|
private WsChatService: WsChatService,
|
||||||
private storage: Storage
|
private storage: Storage,
|
||||||
|
private platform: Platform,
|
||||||
|
private sqlservice: SqliteService,
|
||||||
) {
|
) {
|
||||||
(async()=>{
|
(async()=>{
|
||||||
await this.getAllRooms();
|
await this.getAllRooms();
|
||||||
@@ -47,7 +51,7 @@ export class WsChatMethodsService {
|
|||||||
//console.log(roomData);
|
//console.log(roomData);
|
||||||
|
|
||||||
|
|
||||||
room = new RoomService(this.WsChatService, new MessageService(), this.storage)
|
room = new RoomService(this.WsChatService, new MessageService(), this.storage, this.platform, this.sqlservice)
|
||||||
room.setData({
|
room.setData({
|
||||||
customFields: roomData.customFields,
|
customFields: roomData.customFields,
|
||||||
id: this.getRoomId(roomData),
|
id: this.getRoomId(roomData),
|
||||||
|
|||||||
@@ -51,13 +51,13 @@
|
|||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Início</ion-label>
|
<ion-label position="stacked">Data Início</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY H:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY H:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Fim</ion-label>
|
<ion-label position="stacked">Data Fim</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY HH:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY HH:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
|||||||
@@ -53,13 +53,13 @@
|
|||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Início</ion-label>
|
<ion-label position="stacked">Data Início</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY H:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY H:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Fim</ion-label>
|
<ion-label position="stacked">Data Fim</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY HH:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY HH:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
|||||||
@@ -53,13 +53,13 @@
|
|||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Início</ion-label>
|
<ion-label position="stacked">Data Início</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.StartDate}}" [(ngModel)]="loadedEvent.StartDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY H:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY H:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-label position="stacked">Data Fim</ion-label>
|
<ion-label position="stacked">Data Fim</ion-label>
|
||||||
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
<ion-datetime value="{{loadedEvent.EndDate}}" [(ngModel)]="loadedEvent.EndDate" min="2020" max="2100"
|
||||||
displayFormat="D MMM YYYY HH:mm" minuteValues="0,15,30,45"
|
displayFormat="D MMM YYYY HH:mm" minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"></ion-datetime>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ export class SqliteService {
|
|||||||
console.log('INSIDE DB CHAT MSG',data,)
|
console.log('INSIDE DB CHAT MSG',data,)
|
||||||
this.dbInstance.executeSql(`
|
this.dbInstance.executeSql(`
|
||||||
INSERT OR IGNORE INTO ${this.chatmsg} (Id,Attachments,Channels,File,Mentions,Msg,Rid, Ts ,U, UpdatedAt)
|
INSERT OR IGNORE INTO ${this.chatmsg} (Id,Attachments,Channels,File,Mentions,Msg,Rid, Ts ,U, UpdatedAt)
|
||||||
VALUES ('${data._id}','${JSON.stringify(data.attachments)}','${JSON.stringify(data.channels)}','${JSON.stringify(data.file)}','${JSON.stringify(data.mentions)}','${data.msg}','${data.rid}','${data.ts}','${JSON.stringify(data.u)}','${data._updatedAt}')`, [])
|
VALUES ('${data._id}','${JSON.stringify(data.attachments)}','${JSON.stringify(data.channels)}','${JSON.stringify(data.file)}','${JSON.stringify(data.mentions)}','${data.msg}','${data.rid}','${data.ts}','${JSON.stringify(data.u)}','${JSON.stringify(data._updatedAt)}')`, [])
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log("chat msg add with Success");
|
console.log("chat msg add with Success");
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<div class="px-20">
|
<div class="px-20">
|
||||||
|
|
||||||
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container width-100" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Assunto*" [(ngModel)]="eventProcess.workflowInstanceDataFields.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Assunto*" [(ngModel)]="eventProcess.workflowInstanceDataFields.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="Form && validateFrom" >
|
<div *ngIf="Form && validateFrom" >
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
<div class="ion-input-class" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Localização*" [(ngModel)]="eventProcess.workflowInstanceDataFields.Location"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Localização*" [(ngModel)]="eventProcess.workflowInstanceDataFields.Location"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
<div *ngIf="Form && validateFrom" >
|
<div *ngIf="Form && validateFrom" >
|
||||||
<div *ngIf="Form.get('participantes').invalid " class="input-errror-message">
|
<div *ngIf="Form.get('participantes').invalid " class="input-errror-message">
|
||||||
<div *ngIf="Form.get('participantes').errors?.required">
|
<div *ngIf="Form.get('participantes').errors?.required">
|
||||||
Adicionar participant.
|
Adicionar participante
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
placeholder="Início"
|
placeholder="Início"
|
||||||
[(ngModel)]="eventProcess.workflowInstanceDataFields.StartDate"
|
[(ngModel)]="eventProcess.workflowInstanceDataFields.StartDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
placeholder="Fim"
|
placeholder="Fim"
|
||||||
[(ngModel)]="eventProcess.workflowInstanceDataFields.EndDate"
|
[(ngModel)]="eventProcess.workflowInstanceDataFields.EndDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -325,7 +325,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height width-100 flex-grow-1">
|
<div class="ion-input-class-no-height width-100 flex-grow-1">
|
||||||
<ion-textarea [(ngModel)]="eventProcess.workflowInstanceDataFields.Body" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="eventProcess.workflowInstanceDataFields.Body" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<ion-content>
|
<ion-content>
|
||||||
<div class="main-content">
|
<div class="main-content">
|
||||||
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Assunto*" [(ngModel)]="postEvent.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Assunto*" [(ngModel)]="postEvent.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="Form && validateFrom" >
|
<div *ngIf="Form && validateFrom" >
|
||||||
<div *ngIf="Form.get('Subject').invalid " class="input-errror-message">
|
<div *ngIf="Form.get('Subject').invalid " class="input-errror-message">
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-location.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class flex-grow-1" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
<div class="ion-input-class flex-grow-1" [class.input-error]="Form?.get('Location')?.invalid && validateFrom ">
|
||||||
<ion-input placeholder="Localização*" [(ngModel)]="postEvent.Location"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" placeholder="Localização*" [(ngModel)]="postEvent.Location"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Error messages -->
|
<!-- Error messages -->
|
||||||
@@ -268,7 +268,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height width-100">
|
<div class="ion-input-class-no-height width-100">
|
||||||
<ion-textarea [(ngModel)]="postEvent.Body.Text" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="postEvent.Body.Text" placeholder="Detalhes" rows="6" cols="20"></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<div class="main-content">
|
<div class="main-content">
|
||||||
|
|
||||||
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input type="text" placeholder="Assunto*" [(ngModel)]="postEvent.Subject"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" type="text" placeholder="Assunto*" [(ngModel)]="postEvent.Subject"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="Form && validateFrom" >
|
<div *ngIf="Form && validateFrom" >
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ion-input-class flex-grow-1 width-100" [class.input-error]="Form?.get('Location')?.invalid && validateFrom " >
|
<div class="ion-input-class flex-grow-1 width-100" [class.input-error]="Form?.get('Location')?.invalid && validateFrom " >
|
||||||
<ion-input type="text" placeholder="Localização*" [(ngModel)]="postEvent.Location"></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" type="text" placeholder="Localização*" [(ngModel)]="postEvent.Location"></ion-input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="ion-input-class-no-height flex-grow-1">
|
<div class="ion-input-class-no-height flex-grow-1">
|
||||||
|
|
||||||
<ion-textarea [(ngModel)]="postEvent.Body.Text" placeholder="Detalhes" ></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="postEvent.Body.Text" placeholder="Detalhes" ></ion-textarea>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div class="main-header width-100">
|
<div class="main-header width-100">
|
||||||
<div class="title-content width-100">
|
<div class="title-content width-100">
|
||||||
<div class="back-icon cursor-pointer">
|
<div class="back-icon cursor-pointer">
|
||||||
<button class="btn-no-color" (click)="openGroupMessagesPage()">
|
<button title="Retroceder" class="btn-no-color" (click)="openGroupMessagesPage()">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " slot="end" src='assets/images/theme/gov/icons-calendar-arrow-left.svg'></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " slot="end" src='assets/images/theme/gov/icons-calendar-arrow-left.svg'></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -6,13 +6,13 @@
|
|||||||
<ion-label class="title">{{wsChatMethodsService.getGroupRoom(roomId).name}}</ion-label>
|
<ion-label class="title">{{wsChatMethodsService.getGroupRoom(roomId).name}}</ion-label>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button class="btn-no-color" (click)="openGroupMessagesOptions()">
|
<button title="Menu" class="btn-no-color" (click)="openGroupMessagesOptions()">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/icons-menu.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/icons-menu.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/images/theme/gov/icons-menu.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/images/theme/gov/icons-menu.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div (click)="openGroupContactsPage()" class="header-bottom">
|
<div title="Ver Contactos" (click)="openGroupContactsPage()" class="header-bottom">
|
||||||
<div class="header-bottom-icon">
|
<div class="header-bottom-icon">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/icon/icons-user.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/icon/icons-user.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/icon/theme/gov/icons-user.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/icon/theme/gov/icons-user.svg"></ion-icon>
|
||||||
@@ -240,7 +240,7 @@
|
|||||||
<ion-icon name="add"></ion-icon>
|
<ion-icon name="add"></ion-icon>
|
||||||
</ion-fab-button>
|
</ion-fab-button>
|
||||||
<ion-fab-list side="top">
|
<ion-fab-list side="top">
|
||||||
<ion-fab-button (click)="bookMeeting()" color="light">
|
<ion-fab-button title="Nova Reunião" (click)="bookMeeting()" color="light">
|
||||||
<ion-icon name="calendar"></ion-icon>
|
<ion-icon name="calendar"></ion-icon>
|
||||||
</ion-fab-button>
|
</ion-fab-button>
|
||||||
<ion-fab-button (click)="addFile()" color="light">
|
<ion-fab-button (click)="addFile()" color="light">
|
||||||
@@ -261,7 +261,7 @@
|
|||||||
|
|
||||||
<div class="width-100">
|
<div class="width-100">
|
||||||
<ion-item class="ion-no-padding type-message" lines="none">
|
<ion-item class="ion-no-padding type-message" lines="none">
|
||||||
<ion-textarea (keyup.enter)="sendMessage()" clearOnEdit="true" placeholder="Escrever uma mensagem" class="message-input" rows="1" [(ngModel)]="message"></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" (keyup.enter)="sendMessage()" clearOnEdit="true" placeholder="Escrever uma mensagem" class="message-input" rows="1" [(ngModel)]="message"></ion-textarea>
|
||||||
<button hidden class="btn-no-color">
|
<button hidden class="btn-no-color">
|
||||||
<ion-icon slot="end" src="assets/icon/icons-chat-mic.svg"></ion-icon>
|
<ion-icon slot="end" src="assets/icon/icons-chat-mic.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
<button *ngIf="!message" class="btn-no-color">
|
<button title="Enviar Mensagem" *ngIf="!message" class="btn-no-color">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " class="chat-icon-send" src="assets/icon/theme/gov/icons-chat-send.svg"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import { ViewEventPage } from 'src/app/modals/view-event/view-event.page';
|
|||||||
import { HttpEventType } from '@angular/common/http';
|
import { HttpEventType } from '@angular/common/http';
|
||||||
import { Storage } from '@ionic/storage';
|
import { Storage } from '@ionic/storage';
|
||||||
import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service';
|
import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service';
|
||||||
|
import { MessageService } from 'src/app/services/chat/message.service';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
import * as pdfjsLib from 'pdfjs-dist';
|
import * as pdfjsLib from 'pdfjs-dist';
|
||||||
@@ -108,6 +109,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
|
|||||||
this.getRoomInfo();
|
this.getRoomInfo();
|
||||||
//this.scrollToBottom();
|
//this.scrollToBottom();
|
||||||
this.wsChatMethodsService.getGroupRoom(this.roomId).loadHistory();
|
this.wsChatMethodsService.getGroupRoom(this.roomId).loadHistory();
|
||||||
|
this.wsChatMethodsService.getGroupRoom(this.roomId).getMsgFromDB();
|
||||||
console.log('MESSAGES'+this.wsChatMethodsService.getGroupRoom(this.roomId).massages);
|
console.log('MESSAGES'+this.wsChatMethodsService.getGroupRoom(this.roomId).massages);
|
||||||
this.wsChatMethodsService.getGroupRoom(this.roomId).scrollDown = this.scrollToBottomClicked
|
this.wsChatMethodsService.getGroupRoom(this.roomId).scrollDown = this.scrollToBottomClicked
|
||||||
|
|
||||||
@@ -285,88 +287,6 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getMessageDB() {
|
|
||||||
this.storage.get('chatmsg').then((msg) => {
|
|
||||||
console.log('GROUP FROM DB WEB', msg)
|
|
||||||
let msgArray = [];
|
|
||||||
msgArray = msg;
|
|
||||||
msgArray.filter(data => data._id != this.roomId);
|
|
||||||
this.messages = msgArray.reverse();
|
|
||||||
console.log("GROUP MSG CHAT WEB", this.messages)
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
async transformData(res) {
|
|
||||||
let mgsArray = [];
|
|
||||||
res.map(async element => {
|
|
||||||
|
|
||||||
if (element.file) {
|
|
||||||
if (element.file.guid) {
|
|
||||||
await this.storage.get(element.file.guid).then((image) => {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
file: {
|
|
||||||
guid: element.file.guid,
|
|
||||||
image_url: image,
|
|
||||||
type: element.file.type
|
|
||||||
},
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt,
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg)
|
|
||||||
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
file: element.file,
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt,
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt,
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg)
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
await this.storage.remove('chatmsg').then(() => {
|
|
||||||
console.log('GROUP MSG REMOVE FROM STORAGE')
|
|
||||||
});
|
|
||||||
await this.storage.set('chatmsg', mgsArray).then((value) => {
|
|
||||||
console.log('GROUP MSG SAVED ON STORAGE', value)
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
loadGroupMessages(roomId) {
|
loadGroupMessages(roomId) {
|
||||||
//console.log('here'+room.t);
|
//console.log('here'+room.t);
|
||||||
|
|
||||||
@@ -380,8 +300,6 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
|
|||||||
let msgOnly = res['messages'].filter(data => data.t != 'au');
|
let msgOnly = res['messages'].filter(data => data.t != 'au');
|
||||||
//this.messages = msgOnly.reverse();
|
//this.messages = msgOnly.reverse();
|
||||||
//console.log(res);
|
//console.log(res);
|
||||||
this.transformData(msgOnly.reverse())
|
|
||||||
this.getMessageDB();
|
|
||||||
|
|
||||||
this.showLoader = false;
|
this.showLoader = false;
|
||||||
});
|
});
|
||||||
@@ -876,7 +794,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
|
|||||||
card.el.style['z-index'] = 11;
|
card.el.style['z-index'] = 11;
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadFileMsg(msg) {
|
downloadFileMsg(msg: MessageService) {
|
||||||
console.log('FILE TYPE', msg.file.type)
|
console.log('FILE TYPE', msg.file.type)
|
||||||
this.downloadFile = "";
|
this.downloadFile = "";
|
||||||
if (msg.file.type == "application/img") {
|
if (msg.file.type == "application/img") {
|
||||||
@@ -890,7 +808,15 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
|
|||||||
} else if (event.type === HttpEventType.Response) {
|
} else if (event.type === HttpEventType.Response) {
|
||||||
this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
|
this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
|
||||||
|
|
||||||
this.storage.set(msg.file.guid, this.downloadFile);
|
msg.file = {
|
||||||
|
guid: msg.file.guid,
|
||||||
|
image_url: this.downloadFile,
|
||||||
|
type: msg.file.type
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.storage.set(msg.file.guid, this.downloadFile).then(() => {
|
||||||
|
console.log('IMAGE SAVED')
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -900,21 +826,23 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
|
|||||||
}
|
}
|
||||||
|
|
||||||
async openPreview(msg) {
|
async openPreview(msg) {
|
||||||
if (msg.file.image_url != null) {
|
|
||||||
|
if (msg.file.image_url === null || msg.file.image_url === '' ) {
|
||||||
|
this.downloadFileMsg(msg)
|
||||||
|
|
||||||
|
} else {
|
||||||
const modal = await this.modalController.create({
|
const modal = await this.modalController.create({
|
||||||
component: ViewMediaPage,
|
component: ViewMediaPage,
|
||||||
cssClass: 'modal modal-desktop',
|
cssClass: 'modal modal-desktop',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
image: msg.attachments[0].image_url,
|
image: msg.file.image_url,
|
||||||
username: msg.u.name,
|
username: msg.u.name,
|
||||||
_updatedAt: msg._updatedAt,
|
_updatedAt: msg._updatedAt
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
modal.present();
|
modal.present();
|
||||||
|
|
||||||
} else {
|
|
||||||
this.downloadFileMsg(msg)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<!-- <span><ion-icon class="{{users.status}}" name="ellipse"></ion-icon></span> -->
|
<!-- <span><ion-icon class="{{users.status}}" name="ellipse"></ion-icon></span> -->
|
||||||
</div>
|
</div>
|
||||||
<div hidden class="right">
|
<div hidden class="right">
|
||||||
<button class="btn-no-color" (click)="_openMessagesOptions()">
|
<button title="Menu" class="btn-no-color" (click)="_openMessagesOptions()">
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/icons-menu.svg"></ion-icon>
|
<ion-icon *ngIf="ThemeService.currentTheme == 'default' " src="assets/images/icons-menu.svg"></ion-icon>
|
||||||
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/images/theme/gov/icons-menu.svg">
|
<ion-icon *ngIf="ThemeService.currentTheme == 'gov' " src="assets/images/theme/gov/icons-menu.svg">
|
||||||
</ion-icon>
|
</ion-icon>
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
<ion-icon name="add"></ion-icon>
|
<ion-icon name="add"></ion-icon>
|
||||||
</ion-fab-button>
|
</ion-fab-button>
|
||||||
<ion-fab-list side="top">
|
<ion-fab-list side="top">
|
||||||
<ion-fab-button (click)="bookMeeting()" color="light">
|
<ion-fab-button title="Nova Reunião" (click)="bookMeeting()" color="light">
|
||||||
<ion-icon name="calendar"></ion-icon>
|
<ion-icon name="calendar"></ion-icon>
|
||||||
</ion-fab-button>
|
</ion-fab-button>
|
||||||
<ion-fab-button hidden (click)="addFile()" color="light">
|
<ion-fab-button hidden (click)="addFile()" color="light">
|
||||||
|
|||||||
@@ -266,195 +266,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
|||||||
}); */
|
}); */
|
||||||
}
|
}
|
||||||
|
|
||||||
async getMessageDB() {
|
|
||||||
await this.storage.get('chatmsg').then((message) => {
|
|
||||||
this.transformData(message)
|
|
||||||
/* message.forEach(message => {
|
|
||||||
console.log('FROM DB WEB', message)
|
|
||||||
message = this.fix_updatedAt(message)
|
|
||||||
const wewMessage = new MessageService()
|
|
||||||
wewMessage.setData(message)
|
|
||||||
this.massages.push(wewMessage)
|
|
||||||
console.log('loadHistory 222', this.massages)
|
|
||||||
}); */
|
|
||||||
})
|
|
||||||
/* await this.storage.get('chatmsg').then((msg) => {
|
|
||||||
console.log('FROM DB WEB', msg)
|
|
||||||
let msgArray = [];
|
|
||||||
if (msg) {
|
|
||||||
msgArray = msg;
|
|
||||||
msgArray.filter(data => data._id != this.roomId);
|
|
||||||
this.messages = msgArray;
|
|
||||||
console.log("MSG CHAT WEB", this.messages)
|
|
||||||
} else {
|
|
||||||
this.getMessageDB()
|
|
||||||
}
|
|
||||||
|
|
||||||
}) */
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fix_updatedAt(message) {
|
|
||||||
if (message.result) {
|
|
||||||
console.log('FIX UPDATE ', message.result)
|
|
||||||
message.result._updatedAt = message.result._updatedAt['$date']
|
|
||||||
} else {
|
|
||||||
console.log('FIX UPDATE 11', message)
|
|
||||||
message._updatedAt = message._updatedAt['$date']
|
|
||||||
}
|
|
||||||
return message
|
|
||||||
}
|
|
||||||
|
|
||||||
async transformData(res) {
|
|
||||||
|
|
||||||
let mgsArray = [];
|
|
||||||
res.forEach(async element => {
|
|
||||||
|
|
||||||
if (element.file) {
|
|
||||||
if (element.file.guid) {
|
|
||||||
await this.storage.get(element.file.guid).then((image) => {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
file: {
|
|
||||||
guid: element.file.guid,
|
|
||||||
image_url: image,
|
|
||||||
type: element.file.type
|
|
||||||
},
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt ,
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg);
|
|
||||||
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
file: element.file,
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt,
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt,
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg)
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
await this.storage.remove('chatmsg').then(() => {
|
|
||||||
console.log('MSG REMOVE FROM STORAGE')
|
|
||||||
});
|
|
||||||
await this.storage.set('chatmsg', mgsArray).then((message) => {
|
|
||||||
message.forEach(message => {
|
|
||||||
console.log('FROM DB WEB', message)
|
|
||||||
message = this.fix_updatedAt(message)
|
|
||||||
const wewMessage = new MessageService()
|
|
||||||
wewMessage.setData(message)
|
|
||||||
this.massages.push(wewMessage)
|
|
||||||
console.log('loadHistory 222', this.massages)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* async transformData(res) {
|
|
||||||
console.log('TRANSFORM DATA', res)
|
|
||||||
let mgsArray = [];
|
|
||||||
res.map(async element => {
|
|
||||||
console.log('TRANSFORM DATA ELEMENT', element)
|
|
||||||
|
|
||||||
if (element.file) {
|
|
||||||
if (element.file.guid) {
|
|
||||||
await this.storage.get(element.file.guid).then((image) => {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
file: {
|
|
||||||
guid: element.file.guid,
|
|
||||||
image_url: image,
|
|
||||||
type: element.file.type
|
|
||||||
},
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt,
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg)
|
|
||||||
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
file: element.file,
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt,
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let chatmsg = {
|
|
||||||
_id: element._id,
|
|
||||||
attachments: element.attachments,
|
|
||||||
channels: element.channels,
|
|
||||||
mentions: element.mentions,
|
|
||||||
msg: element.msg,
|
|
||||||
rid: element.rid,
|
|
||||||
ts: element.ts,
|
|
||||||
u: element.u,
|
|
||||||
_updatedAt: element._updatedAt,
|
|
||||||
}
|
|
||||||
|
|
||||||
mgsArray.push(chatmsg)
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
await this.storage.remove('chatmsg').then(() => {
|
|
||||||
console.log('MSG REMOVE FROM STORAGE')
|
|
||||||
});
|
|
||||||
await this.storage.set('chatmsg', mgsArray).then((value) => {
|
|
||||||
console.log('MSG SAVED ON STORAGE', value)
|
|
||||||
});
|
|
||||||
|
|
||||||
} */
|
|
||||||
|
|
||||||
async viewDocument(msg: any, url?: string) {
|
async viewDocument(msg: any, url?: string) {
|
||||||
if (msg.file.type == "application/img") {
|
if (msg.file.type == "application/img") {
|
||||||
let response: any = await this.fileService.getFile(msg.file.guid).toPromise();
|
let response: any = await this.fileService.getFile(msg.file.guid).toPromise();
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
<ion-header class="ion-no-border">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="thetitle"><ion-label >Todas as tarefas</ion-label></div>
|
<div class="thetitle"><ion-label >Todas as tarefas</ion-label></div>
|
||||||
<div class="theicon">
|
<div class="theicon">
|
||||||
<button class="btn-no-color" (click)="doRefresh()">
|
<button class="btn-no-color" (click)="refreshing()">
|
||||||
<ion-icon slot="end" class="title-icon font-awesome" name="reload-circle"></ion-icon>
|
<ion-icon slot="end" class="title-icon font-awesome" name="reload-circle"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -21,7 +22,6 @@
|
|||||||
</ion-refresher>
|
</ion-refresher>
|
||||||
|
|
||||||
<div class="overflow-y-auto height-100 width-100">
|
<div class="overflow-y-auto height-100 width-100">
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
|
||||||
|
|
||||||
<div *ngIf="allProcessesList.length >= 0">
|
<div *ngIf="allProcessesList.length >= 0">
|
||||||
<ion-item-sliding class="overflow-y-auto height-100">
|
<ion-item-sliding class="overflow-y-auto height-100">
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<ion-header class="ion-no-border">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="main-header">
|
<div class="main-header">
|
||||||
<div class="thetitle">
|
<div class="thetitle">
|
||||||
<ion-label *ngIf="loggeduser.Profile =='MDGPR'" >Despachos Presidenciais</ion-label>
|
<ion-label *ngIf="loggeduser.Profile =='MDGPR'" >Despachos Presidenciais</ion-label>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
<ion-header class="ion-no-border">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="thetitle"><ion-label >Despachos</ion-label></div>
|
<div class="thetitle"><ion-label >Despachos</ion-label></div>
|
||||||
<div class="theicon">
|
<div class="theicon">
|
||||||
<button class="btn-no-color" (click)="doRefresh()">
|
<button class="btn-no-color" (click)="refreshing()">
|
||||||
<ion-icon slot="end" class="title-icon font-awesome" name="reload-circle"></ion-icon>
|
<ion-icon slot="end" class="title-icon font-awesome" name="reload-circle"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
@import '~src/function.scss';
|
@import '~src/function.scss';
|
||||||
/* CONTENT */
|
/* CONTENT */
|
||||||
ion-header {
|
|
||||||
padding: 30px 20px 0 20px !important;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title{
|
.title{
|
||||||
|
padding: 30px 20px 0 20px !important;
|
||||||
font-family: Roboto;
|
font-family: Roboto;
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
color:#000;
|
color:#000;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { DespachoService } from 'src/app/Rules/despacho.service';
|
|||||||
export class DespachosPage implements OnInit {
|
export class DespachosPage implements OnInit {
|
||||||
|
|
||||||
despachoStore = DespachoStore;
|
despachoStore = DespachoStore;
|
||||||
|
skeletonLoader = true;
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
private router: Router,
|
private router: Router,
|
||||||
@@ -39,12 +40,15 @@ export class DespachosPage implements OnInit {
|
|||||||
|
|
||||||
async LoadList() {
|
async LoadList() {
|
||||||
|
|
||||||
|
this.skeletonLoader = true;
|
||||||
|
|
||||||
await this.despachoRule.getList({updateStore: true})
|
await this.despachoRule.getList({updateStore: true})
|
||||||
|
//this.skeletonLoader = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
get skeletonLoader(): boolean {
|
/* get skeletonLoader(): boolean {
|
||||||
return this.despachoRule.LoaderService.loading
|
return this.despachoRule.LoaderService.loading
|
||||||
}
|
} */
|
||||||
|
|
||||||
doRefresh() {
|
doRefresh() {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -52,4 +56,10 @@ export class DespachosPage implements OnInit {
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refreshing() {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.LoadList();
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<ion-header class="ion-no-border">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="thetitle"><ion-label >Diplomas</ion-label></div>
|
<div class="thetitle"><ion-label >Diplomas</ion-label></div>
|
||||||
<div class="theicon">
|
<div class="theicon">
|
||||||
@@ -19,8 +20,8 @@
|
|||||||
</ion-refresher>
|
</ion-refresher>
|
||||||
|
|
||||||
|
|
||||||
<div class="width-100 overflow-y-auto height-100">
|
<div class="main-container width-100 overflow-y-auto height-100">
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
|
||||||
<div *ngIf="diplomasList.length >= 1">
|
<div *ngIf="diplomasList.length >= 1">
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
@import '~src/function.scss';
|
@import '~src/function.scss';
|
||||||
/* CONTENT */
|
/* CONTENT */
|
||||||
:host{
|
/* :host{
|
||||||
padding: 30px 20px 0 20px !important;
|
padding: 30px 20px 0 20px !important;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
border: 1px solid red;
|
||||||
|
} */
|
||||||
|
|
||||||
.title{
|
.title{
|
||||||
|
padding: 30px 20px 0 20px !important;
|
||||||
font-family: Roboto;
|
font-family: Roboto;
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
color:#000;
|
color:#000;
|
||||||
@@ -34,6 +37,11 @@
|
|||||||
color: #0d89d1 !important;
|
color: #0d89d1 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.main-container{
|
||||||
|
padding: 0px 20px 0 20px !important;
|
||||||
|
margin: 0;
|
||||||
|
color:#000;
|
||||||
|
}
|
||||||
.item-list-small{
|
.item-list-small{
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<ion-header class="ion-no-border">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="thetitle"><ion-label >Diplomas</ion-label></div>
|
<div class="thetitle"><ion-label >Diplomas</ion-label></div>
|
||||||
<div class="theicon">
|
<div class="theicon">
|
||||||
@@ -20,8 +21,7 @@
|
|||||||
</ion-header>
|
</ion-header>
|
||||||
<ion-content>
|
<ion-content>
|
||||||
|
|
||||||
<div class="width-100 overflow-y-auto height-100" [ngSwitch]="segment">
|
<div class="main-container width-100 overflow-y-auto height-100" [ngSwitch]="segment">
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
|
||||||
|
|
||||||
<div *ngIf="deplomasStore.diplomasList.length >= 1">
|
<div *ngIf="deplomasStore.diplomasList.length >= 1">
|
||||||
<ion-list *ngSwitchCase="'validar'">
|
<ion-list *ngSwitchCase="'validar'">
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
@import '~src/function.scss';
|
@import '~src/function.scss';
|
||||||
/* CONTENT */
|
/* CONTENT */
|
||||||
:host{
|
/* :host{
|
||||||
padding: 30px 20px 0 20px !important;
|
padding: 30px 20px 0 20px !important;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
} */
|
||||||
.title{
|
.title{
|
||||||
|
padding: 30px 20px 0 20px !important;
|
||||||
font-family: Roboto;
|
font-family: Roboto;
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
color:#000;
|
color:#000;
|
||||||
@@ -19,6 +20,11 @@
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.main-container{
|
||||||
|
padding: 0px 20px 0 20px !important;
|
||||||
|
margin: 0;
|
||||||
|
color:#000;
|
||||||
|
}
|
||||||
.item-list-small{
|
.item-list-small{
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
async LoadList() {
|
async LoadList() {
|
||||||
|
this.skeletonLoader = true;
|
||||||
|
|
||||||
let diplomas = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise();
|
let diplomas = await this.processes.GetTasksList("Despacho do Presidente da República", false).toPromise();
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,7 @@
|
|||||||
placeholder="Início"
|
placeholder="Início"
|
||||||
[(ngModel)]="startDate"
|
[(ngModel)]="startDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2022"
|
max="2022"
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
placeholder="Fim"
|
placeholder="Fim"
|
||||||
[(ngModel)]="endDate"
|
[(ngModel)]="endDate"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -241,7 +241,7 @@
|
|||||||
placeholder="Última ocorrência"
|
placeholder="Última ocorrência"
|
||||||
[(ngModel)]="eventProcess.workflowInstanceDataFields.LastOccurrence"
|
[(ngModel)]="eventProcess.workflowInstanceDataFields.LastOccurrence"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="2021"
|
min="2021"
|
||||||
max="2025"
|
max="2025"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<ion-header>
|
<ion-header>
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
|
||||||
<div class="title width-100">
|
<div class="title width-100">
|
||||||
<div class="title-container d-flex justify-space-between">
|
<div class="title-container d-flex justify-space-between">
|
||||||
<span class="text-center mt-0 aside-title px-20"><label>Eventos para Aprovação</label></span>
|
<span class="text-center mt-0 aside-title px-20"><label>Eventos para Aprovação</label></span>
|
||||||
@@ -25,7 +26,6 @@
|
|||||||
</ion-refresher>
|
</ion-refresher>
|
||||||
<div class="main-content overflow-y-auto height-100" [ngSwitch]="segment">
|
<div class="main-content overflow-y-auto height-100" [ngSwitch]="segment">
|
||||||
|
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
|
|
||||||
<div *ngSwitchCase="'MDGPR'" class="height-100">
|
<div *ngSwitchCase="'MDGPR'" class="height-100">
|
||||||
|
|
||||||
<div *ngIf="eventaprovacaostore.listmd.length != 0">
|
<div *ngIf="eventaprovacaostore.listmd.length != 0">
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<ion-header class="ion-no-border">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="thetitle"><ion-label >Expediente</ion-label></div>
|
<div class="thetitle"><ion-label >Expediente</ion-label></div>
|
||||||
<div class="theicon">
|
<div class="theicon">
|
||||||
@@ -12,7 +13,6 @@
|
|||||||
|
|
||||||
<div class="content width-100 overflow-y-auto height-100">
|
<div class="content width-100 overflow-y-auto height-100">
|
||||||
|
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
|
||||||
<ion-list *ngIf="expedienteGdStore.list.length >= 1">
|
<ion-list *ngIf="expedienteGdStore.list.length >= 1">
|
||||||
<div
|
<div
|
||||||
class="expediente item-hover ion-no-padding ion-no-margin cursor-pointer"
|
class="expediente item-hover ion-no-padding ion-no-margin cursor-pointer"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<ion-header class="ion-no-border">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="thetitle"><ion-label >Expediente</ion-label></div>
|
<div class="thetitle"><ion-label >Expediente</ion-label></div>
|
||||||
<div class="theicon">
|
<div class="theicon">
|
||||||
@@ -20,7 +21,7 @@
|
|||||||
|
|
||||||
<div class="content width-100 overflow-y-auto height-100" >
|
<div class="content width-100 overflow-y-auto height-100" >
|
||||||
<div >
|
<div >
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
|
||||||
<ion-list *ngIf="expedientegbstore.list.length >=0">
|
<ion-list *ngIf="expedientegbstore.list.length >=0">
|
||||||
<div
|
<div
|
||||||
class="expediente item-hover ion-no-padding ion-no-margin cursor-pointer"
|
class="expediente item-hover ion-no-padding ion-no-margin cursor-pointer"
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
<ion-content>
|
<ion-content>
|
||||||
<div class="overflow-y-auto height-100 width-100 px-20">
|
<div class="overflow-y-auto height-100 width-100 px-20">
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
|
||||||
|
|
||||||
<div *ngIf="taskList.length >= 0">
|
<div *ngIf="taskList.length >= 0">
|
||||||
<ion-list part="divo">
|
<ion-list part="divo">
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<ion-header class="ion-no-border px-20">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="thetitle"><ion-label >Pedidos</ion-label></div>
|
<div class="thetitle"><ion-label >Pedidos</ion-label></div>
|
||||||
<div class="theicon">
|
<div class="theicon">
|
||||||
@@ -28,8 +29,8 @@
|
|||||||
</ion-refresher-content>
|
</ion-refresher-content>
|
||||||
</ion-refresher>
|
</ion-refresher>
|
||||||
|
|
||||||
<div class="width-100 overflow-y-auto height-100 px-20" [ngSwitch]="segment">
|
<div class="main-container width-100 overflow-y-auto height-100 px-20" [ngSwitch]="segment">
|
||||||
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
|
||||||
<div *ngIf="pedidosstore.listparecer.length >= 1">
|
<div *ngIf="pedidosstore.listparecer.length >= 1">
|
||||||
<ion-list *ngSwitchCase="'parecer'">
|
<ion-list *ngSwitchCase="'parecer'">
|
||||||
<!-- *ngFor = "let task of pedidosstore.listparecer; let i = index"
|
<!-- *ngFor = "let task of pedidosstore.listparecer; let i = index"
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
@import '~src/function.scss';
|
@import '~src/function.scss';
|
||||||
/* CONTENT */
|
/* CONTENT */
|
||||||
:host{
|
/* :host{
|
||||||
padding: 30px 00px 0 00px !important;
|
padding: 30px 00px 0 00px !important;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
} */
|
||||||
.title{
|
.title{
|
||||||
|
padding: 30px 20px 0 20px !important;
|
||||||
font-family: Roboto;
|
font-family: Roboto;
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
color:#000;
|
color:#000;
|
||||||
@@ -19,6 +20,12 @@
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.main-container{
|
||||||
|
padding: 0px 20px 0 20px !important;
|
||||||
|
margin: 0;
|
||||||
|
color:#000;
|
||||||
|
}
|
||||||
.item-list-small{
|
.item-list-small{
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ export class PedidosPage implements OnInit {
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
this.skeletonLoader = false
|
||||||
}
|
}
|
||||||
|
|
||||||
doRefresh() {
|
doRefresh() {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<ion-header class="ion-no-border px-20">
|
<ion-header class="ion-no-border">
|
||||||
|
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<div class="thetitle"><ion-label >Pendentes</ion-label></div>
|
<div class="thetitle"><ion-label >Pendentes</ion-label></div>
|
||||||
<div class="theicon">
|
<div class="theicon">
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
@import '~src/function.scss';
|
@import '~src/function.scss';
|
||||||
/* CONTENT */
|
/* CONTENT */
|
||||||
:host{
|
/* :host{
|
||||||
padding: 30px 00px 0 00px !important;
|
padding: 30px 00px 0 00px !important;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
} */
|
||||||
.title{
|
.title{
|
||||||
|
padding: 30px 20px 0 20px !important;
|
||||||
font-family: Roboto;
|
font-family: Roboto;
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
color:#000;
|
color:#000;
|
||||||
|
|||||||
@@ -91,6 +91,9 @@
|
|||||||
}
|
}
|
||||||
.active{
|
.active{
|
||||||
border-top: 7px solid var(--header-tab-text-white);
|
border-top: 7px solid var(--header-tab-text-white);
|
||||||
|
span{
|
||||||
|
font-weight: 650;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<div class="content-container">
|
<div class="content-container">
|
||||||
|
|
||||||
<div class="ion-item-container">
|
<div class="ion-item-container">
|
||||||
<ion-input [(ngModel)]="folder.Description" placeholder="Assunto" ></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="folder.Description" placeholder="Assunto" ></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
[(ngModel)]="folder.DateBegin"
|
[(ngModel)]="folder.DateBegin"
|
||||||
placeholder="Início"
|
placeholder="Início"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2025"
|
max="2025"
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
[(ngModel)]="folder.DateEnd"
|
[(ngModel)]="folder.DateEnd"
|
||||||
placeholder="Fim"
|
placeholder="Fim"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
min="{{minDate}}"
|
min="{{minDate}}"
|
||||||
max="2022">
|
max="2022">
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-textarea-class flex-grow-1">
|
<div class="ion-textarea-class flex-grow-1">
|
||||||
<ion-textarea [(ngModel)]="folder.Detail" rows="12" cols="20" placeholder="Descrição da acção..."></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="folder.Detail" rows="12" cols="20" placeholder="Descrição da acção..."></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div class="div-title">
|
<div class="div-title">
|
||||||
<ion-label class="title"> Nova Acção</ion-label>
|
<ion-label class="title"> Nova Acção</ion-label>
|
||||||
</div>
|
</div>
|
||||||
<div class="actionType">
|
<!-- <div class="actionType">
|
||||||
<ion-segment [(ngModel)]="segment" (ionChange)="segmentChanged($event)">
|
<ion-segment [(ngModel)]="segment" (ionChange)="segmentChanged($event)">
|
||||||
<ion-segment-button value="Viagem">
|
<ion-segment-button value="Viagem">
|
||||||
<ion-label>Viagem</ion-label>
|
<ion-label>Viagem</ion-label>
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
<ion-label>Evento</ion-label>
|
<ion-label>Evento</ion-label>
|
||||||
</ion-segment-button>
|
</ion-segment-button>
|
||||||
</ion-segment>
|
</ion-segment>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</ion-header>
|
</ion-header>
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<div class="content-container">
|
<div class="content-container">
|
||||||
|
|
||||||
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
<div class="ion-item-container" [class.input-error]="Form?.get('Subject')?.invalid && validateFrom ">
|
||||||
<ion-input [(ngModel)]="folder.Description" placeholder="Assunto" ></ion-input>
|
<ion-input autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="folder.Description" placeholder="Assunto" ></ion-input>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
[(ngModel)]="folder.DateBegin"
|
[(ngModel)]="folder.DateBegin"
|
||||||
placeholder="Início"
|
placeholder="Início"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
max="2025">
|
max="2025">
|
||||||
</ion-datetime>
|
</ion-datetime>
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
[(ngModel)]="folder.DateEnd"
|
[(ngModel)]="folder.DateEnd"
|
||||||
placeholder="Fim"
|
placeholder="Fim"
|
||||||
displayFormat="D MMM YYYY H:mm"
|
displayFormat="D MMM YYYY H:mm"
|
||||||
minuteValues="0,15,30,45"
|
minuteValues="0,5,10,15,20,25,30,35,40,45,50,55"
|
||||||
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
monthShortNames="Jan, Fev, Mar, Abr, Mai, Jun, Jul, Aug, Sep, Out, Nov, Dez"
|
||||||
max="2025">
|
max="2025">
|
||||||
</ion-datetime>
|
</ion-datetime>
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-textarea-class flex-grow-1">
|
<div class="ion-textarea-class flex-grow-1">
|
||||||
<ion-textarea [(ngModel)]="folder.Detail" rows="12" cols="20" placeholder="Descrição da acção..."></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="folder.Detail" rows="12" cols="20" placeholder="Descrição da acção..."></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export class NewActionPage implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.segment = "Viagem";
|
this.segment = "Evento";
|
||||||
}
|
}
|
||||||
|
|
||||||
segmentChanged(ev: any) {
|
segmentChanged(ev: any) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<div class="content-container">
|
<div class="content-container">
|
||||||
|
|
||||||
<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 [(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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="publicationType!='1' " class="container-div pb-20">
|
<div *ngIf="publicationType!='1' " class="container-div pb-20">
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
<ion-icon slot="start" src="assets/images/icons-description.svg"></ion-icon>
|
||||||
</div>
|
</div>
|
||||||
<div class="ion-textarea-class flex-grow-1" [class.input-error]="Form?.get('Message')?.invalid && validateFrom ">
|
<div class="ion-textarea-class flex-grow-1" [class.input-error]="Form?.get('Message')?.invalid && validateFrom ">
|
||||||
<ion-textarea [(ngModel)]="pub.Message" name="description" ngDefaultControl rows="12" cols="20" placeholder="Corpo de texto..."></ion-textarea>
|
<ion-textarea autocomplete="on" autocorrect="on" spellcheck="true" [(ngModel)]="pub.Message" name="description" ngDefaultControl rows="12" cols="20" placeholder="Corpo de texto..."></ion-textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
</ion-refresher>
|
</ion-refresher>
|
||||||
<div class="main-container px-20">
|
<div class="main-container px-20">
|
||||||
<ion-list>
|
<ion-list>
|
||||||
<!-- [routerLink]="['/home/publications/view-publications/publication-detail', publication.publicationId]" -->
|
|
||||||
<div class="post-item d-md-block mb-10 cursor-pointer"
|
<div class="post-item d-md-block mb-10 cursor-pointer"
|
||||||
*ngFor="let publication of publicationListStorage.documents[folderId]"
|
*ngFor="let publication of publicationListStorage.documents[folderId]"
|
||||||
(click)="viewPublicationDetail(publication.DocumentId)">
|
(click)="viewPublicationDetail(publication.DocumentId)">
|
||||||
@@ -70,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- fab placed to the bottom end -->
|
<!-- fab placed to the bottom end -->
|
||||||
<ion-fab vertical="bottom" horizontal="end">
|
<ion-fab vertical="bottom" horizontal="end">
|
||||||
<ion-fab-button (click)="AddPublication('2',item.ProcessId)">
|
<ion-fab-button title="Nova Publicação" (click)="AddPublication('2',item.ProcessId)">
|
||||||
<ion-icon name="add"></ion-icon>
|
<ion-icon name="add"></ion-icon>
|
||||||
</ion-fab-button>
|
</ion-fab-button>
|
||||||
</ion-fab>
|
</ion-fab>
|
||||||
|
|||||||
@@ -102,10 +102,9 @@ export class ViewPublicationsPage implements OnInit {
|
|||||||
getPublications() {
|
getPublications() {
|
||||||
this.showLoader = true;
|
this.showLoader = true;
|
||||||
const folderId = this.folderId
|
const folderId = this.folderId
|
||||||
|
this.publicationList = new Array();
|
||||||
this.publications.GetPublications(folderId).subscribe(res=> {
|
this.publications.GetPublications(folderId).subscribe(res=> {
|
||||||
|
|
||||||
this.publicationList = new Array();
|
|
||||||
|
|
||||||
res.forEach(element => {
|
res.forEach(element => {
|
||||||
let item: Publication = this.publicationPipe.itemList(element)
|
let item: Publication = this.publicationPipe.itemList(element)
|
||||||
this.publicationList.push(item);
|
this.publicationList.push(item);
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="35" height="35" viewBox="0 0 35 35">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="3fz9vpdwbc" x1="50%" x2="50%" y1="0%" y2="100%">
|
|
||||||
<stop offset="0%" stop-color="#80C2FF"/>
|
|
||||||
<stop offset="99.962%" stop-color="#0085FF"/>
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient id="ytz5rxohcf" x1="50%" x2="50%" y1="0%" y2="100%">
|
|
||||||
<stop offset="0%" stop-color="#FFEFBB"/>
|
|
||||||
<stop offset="100%" stop-color="#FFC200"/>
|
|
||||||
</linearGradient>
|
|
||||||
<filter id="3idfuqbbja" width="117.4%" height="120%" x="-8.7%" y="-5%" filterUnits="objectBoundingBox">
|
|
||||||
<feOffset dy="1" in="SourceAlpha" result="shadowOffsetOuter1"/>
|
|
||||||
<feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation=".5"/>
|
|
||||||
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/>
|
|
||||||
<feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.187390734 0"/>
|
|
||||||
</filter>
|
|
||||||
<filter id="uv9cnvernd" width="125%" height="128.6%" x="-12.5%" y="-7.1%" filterUnits="objectBoundingBox">
|
|
||||||
<feOffset dy="1" in="SourceAlpha" result="shadowOffsetOuter1"/>
|
|
||||||
<feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation=".5"/>
|
|
||||||
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/>
|
|
||||||
<feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.187390734 0"/>
|
|
||||||
</filter>
|
|
||||||
<path id="a49fg2bilb" d="M14.5 19.1c1.404 0 2.75-.208 3.993-.59.666-.206 4.252 1.758 4.853 1.459.607-.302-1.77-2.867-1.243-3.253C24.493 14.966 26 12.404 26 9.55 26 4.276 20.851 0 14.5 0S3 4.276 3 9.55c0 5.275 5.149 9.55 11.5 9.55z"/>
|
|
||||||
<path id="6npze5akpe" d="M8 25.37c.977 0 1.913-.146 2.778-.414.463-.143 2.958 1.232 3.376 1.022.422-.21-1.232-2.006-.865-2.277C14.951 22.476 16 20.683 16 18.685c0-1.552-.633-2.98-1.695-4.115C12.841 13.006 10.561 12 8 12c-4.418 0-8 2.993-8 6.685 0 1.037.282 2.018.786 2.894C2.077 23.822 4.822 25.37 8 25.37z"/>
|
|
||||||
</defs>
|
|
||||||
<g fill="none" fill-rule="evenodd">
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g transform="translate(-30 -508) translate(20 495) translate(10 10) translate(0 3) translate(5 5)">
|
|
||||||
<use fill="#000" filter="url(#3idfuqbbja)" xlink:href="#a49fg2bilb"/>
|
|
||||||
<path fill="url(#3fz9vpdwbc)" stroke="#EBEBEB" stroke-linejoin="square" stroke-opacity=".194" d="M14.5.5c3.05 0 5.813 1.022 7.812 2.682C24.275 4.812 25.5 7.06 25.5 9.55c0 2.698-1.437 5.111-3.692 6.763-.066 1.374.22 1.842.51 2.307.17.273.342.545.467.782-.413.145-1.28-.44-1.758-.634-1.178-.478-2.317-.848-2.68-.737-1.199.369-2.495.57-3.847.57-3.05 0-5.813-1.022-7.812-2.682C4.725 14.289 3.5 12.04 3.5 9.55c0-2.49 1.225-4.738 3.188-6.368C8.688 1.522 11.45.5 14.5.5z"/>
|
|
||||||
</g>
|
|
||||||
<g transform="translate(-30 -508) translate(20 495) translate(10 10) translate(0 3) translate(5 5) matrix(-1 0 0 1 16 0)">
|
|
||||||
<use fill="#000" filter="url(#uv9cnvernd)" xlink:href="#6npze5akpe"/>
|
|
||||||
<path fill="url(#ytz5rxohcf)" stroke="#EBEBEB" stroke-linejoin="square" stroke-opacity=".194" d="M8 12.5c2.41 0 4.56.938 5.94 2.412.974 1.04 1.56 2.349 1.56 3.773 0 1.842-.979 3.487-2.508 4.614-.152 1.023.008 1.308.19 1.608.14.225.26.421.355.587-.296-.022-.819-.446-.939-.495-.868-.355-1.702-.602-1.968-.52-.82.253-1.705.392-2.63.392-1.477 0-2.856-.353-4.02-.965-1.186-.623-2.15-1.515-2.76-2.576-.46-.8-.72-1.697-.72-2.645 0-1.7.834-3.232 2.164-4.343C4.029 13.2 5.917 12.5 8 12.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.9 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.5 30.5024C22.023 30.5024 27 29.5253 27 24.0018C27 18.4784 22.523 14.001 17 14.001C11.477 14.001 7 18.4784 7 24.0018C7 29.5253 10.977 30.5024 16.5 30.5024Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
<path d="M17 14.001C20.3137 14.001 23 11.3145 23 8.0005C23 4.68652 20.3137 2 17 2C13.6863 2 11 4.68652 11 8.0005C11 11.3145 13.6863 14.001 17 14.001Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
<path d="M8.65738 29.0947L22.3427 15.9089M25.157 19.3443L13.8433 30.6589L25.157 19.3443Z" stroke="#061B52" stroke-width="3" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 685 B |
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M28 4H6C4.89543 4 4 4.89543 4 6V28C4 29.1046 4.89543 30 6 30H28C29.1046 30 30 29.1046 30 28V6C30 4.89543 29.1046 4 28 4Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 11H28V12H6V11ZM22 16H24V18H22V16ZM16 16H18V18H16V16ZM16 22H18V24H16V22ZM22 22H24V24H22V22ZM10 16H12V18H10V16ZM10 22H12V24H10V22Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 488 B |
@@ -1,4 +0,0 @@
|
|||||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path d="M31 7H9C7.89543 7 7 7.89543 7 9V31C7 32.1046 7.89543 33 9 33H31C32.1046 33 33 32.1046 33 31V9C33 7.89543 32.1046 7 31 7Z" stroke="#061B52" stroke-width="2"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9 14H31V15H9V14ZM25 19H27V21H25V19ZM19 19H21V21H19V19ZM19 25H21V27H19V25ZM25 25H27V27H25V25ZM13 19H15V21H13V19ZM13 25H15V27H13V25Z" stroke="#061B52" stroke-width="2"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 488 B |
@@ -1,4 +0,0 @@
|
|||||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M26 31H8V13H33V31H26ZM33 31H26H33ZM26 9V13H15V9H23H26Z" stroke="#061B52" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
||||||
<path d="M10.5 30.5L32.5 15.5M8.5 28.5L30.5 13.5L8.5 28.5Z" stroke="#061B52"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 370 B |
@@ -1,4 +1,4 @@
|
|||||||
<svg width="41" height="40" viewBox="0 0 41 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.34 26.1C23.744 26.1 25.09 25.892 26.333 25.51C26.999 25.304 30.585 27.268 31.186 26.969C31.793 26.667 29.416 24.102 29.943 23.716C32.333 21.966 33.84 19.404 33.84 16.55C33.84 11.276 28.691 7 22.34 7C15.989 7 10.84 11.276 10.84 16.55C10.84 21.825 15.989 26.1 22.34 26.1Z" stroke="#061B52" stroke-width="2"/>
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5 24.1C19.904 24.1 21.25 23.892 22.493 23.51C23.159 23.304 26.745 25.268 27.346 24.969C27.953 24.667 25.576 22.102 26.103 21.716C28.493 19.966 30 17.404 30 14.55C30 9.276 24.851 5 18.5 5C12.149 5 7 9.276 7 14.55C7 19.825 12.149 24.1 18.5 24.1Z" stroke="#061B52" stroke-width="3"/>
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.84 32.37C14.863 32.37 13.927 32.224 13.062 31.956C12.599 31.813 10.104 33.188 9.686 32.978C9.264 32.768 10.918 30.972 10.551 30.701C8.889 29.476 7.84 27.683 7.84 25.685C7.84 24.133 8.473 22.705 9.535 21.57C10.999 20.006 13.279 19 15.84 19C20.258 19 23.84 21.993 23.84 25.685C23.84 26.722 23.558 27.703 23.054 28.579C21.763 30.822 19.018 32.37 15.84 32.37Z" stroke="#061B52" stroke-width="2"/>
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 30.37C11.023 30.37 10.087 30.224 9.222 29.956C8.759 29.813 6.264 31.188 5.846 30.978C5.424 30.768 7.078 28.972 6.711 28.701C5.049 27.476 4 25.683 4 23.685C4 22.133 4.633 20.705 5.695 19.57C7.159 18.006 9.439 17 12 17C16.418 17 20 19.993 20 23.685C20 24.722 19.718 25.703 19.214 26.579C17.923 28.822 15.178 30.37 12 30.37Z" stroke="#061B52" stroke-width="3"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 909 B After Width: | Height: | Size: 849 B |
@@ -1,4 +1,4 @@
|
|||||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M26 31H8V13H33V31H26ZM33 31H26H33ZM26 9V13H15V9H23H26Z" stroke="#061B52" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M23 28H5V10H30V28H23ZM30 28H23H30ZM23 6V10H12V6H20H23Z" stroke="#061B52" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
<path d="M10.5 30.5L32.5 15.5M8.5 28.5L30.5 13.5L8.5 28.5Z" stroke="#061B52"/>
|
<path d="M7.5 27.5L29.5 12.5M5.5 25.5L27.5 10.5L5.5 25.5Z" stroke="#061B52" stroke-width="2"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 370 B After Width: | Height: | Size: 386 B |
@@ -1,3 +1,3 @@
|
|||||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20 8.13599L32 14.597V30C32 30.552 31.776 31.052 31.414 31.414C31.052 31.776 30.552 32 30 32H25V27C25 26.212 24.696 25.495 24.2 24.96C23.69 24.411 22.978 24.054 22.183 24.006L18 24C17.212 24 16.495 24.304 15.96 24.8C15.411 25.31 15.054 26.022 15.006 26.817L15 32H10C9.448 32 8.948 31.776 8.586 31.414C8.224 31.052 8 30.552 8 30V14.597L20 8.13599Z" stroke="#061B52" stroke-width="2"/>
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M17 6L29 12.4599V27.8603C29 28.4122 28.776 28.9122 28.414 29.2741C28.052 29.636 27.552 29.86 27 29.86H22V24.8608C22 24.073 21.696 23.3561 21.2 22.8212C20.69 22.2723 19.978 21.9153 19.183 21.8673L15 21.8613C14.212 21.8613 13.495 22.1653 12.96 22.6612C12.411 23.1711 12.054 23.883 12.006 24.6779L12 29.86H7C6.448 29.86 5.948 29.636 5.586 29.2741C5.224 28.9122 5 28.4122 5 27.8603V12.4599L17 6Z" stroke="#061B52" stroke-width="3"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 536 B After Width: | Height: | Size: 581 B |
@@ -0,0 +1,5 @@
|
|||||||
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.5 30.5024C22.023 30.5024 27 29.5253 27 24.0018C27 18.4784 22.523 14.001 17 14.001C11.477 14.001 7 18.4784 7 24.0018C7 29.5253 10.977 30.5024 16.5 30.5024Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
<path d="M17 14.001C20.3137 14.001 23 11.3145 23 8.0005C23 4.68652 20.3137 2 17 2C13.6863 2 11 4.68652 11 8.0005C11 11.3145 13.6863 14.001 17 14.001Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
<path d="M8.65738 29.0947L22.3427 15.9089M25.157 19.3443L13.8433 30.6589L25.157 19.3443Z" stroke="#061B52" stroke-width="3" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 685 B |
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M28 4H6C4.89543 4 4 4.89543 4 6V28C4 29.1046 4.89543 30 6 30H28C29.1046 30 30 29.1046 30 28V6C30 4.89543 29.1046 4 28 4Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 11H28V12H6V11ZM22 16H24V18H22V16ZM16 16H18V18H16V16ZM16 22H18V24H16V22ZM22 22H24V24H22V22ZM10 16H12V18H10V16ZM10 22H12V24H10V22Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 488 B |
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5 24.1C19.904 24.1 21.25 23.892 22.493 23.51C23.159 23.304 26.745 25.268 27.346 24.969C27.953 24.667 25.576 22.102 26.103 21.716C28.493 19.966 30 17.404 30 14.55C30 9.276 24.851 5 18.5 5C12.149 5 7 9.276 7 14.55C7 19.825 12.149 24.1 18.5 24.1Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 30.37C11.023 30.37 10.087 30.224 9.222 29.956C8.759 29.813 6.264 31.188 5.846 30.978C5.424 30.768 7.078 28.972 6.711 28.701C5.049 27.476 4 25.683 4 23.685C4 22.133 4.633 20.705 5.695 19.57C7.159 18.006 9.439 17 12 17C16.418 17 20 19.993 20 23.685C20 24.722 19.718 25.703 19.214 26.579C17.923 28.822 15.178 30.37 12 30.37Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 849 B |
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M23 28H5V10H30V28H23ZM30 28H23H30ZM23 6V10H12V6H20H23Z" stroke="#061B52" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M7.5 27.5L29.5 12.5M5.5 25.5L27.5 10.5L5.5 25.5Z" stroke="#061B52" stroke-width="2"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 386 B |
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M17 6L29 12.4599V27.8603C29 28.4122 28.776 28.9122 28.414 29.2741C28.052 29.636 27.552 29.86 27 29.86H22V24.8608C22 24.073 21.696 23.3561 21.2 22.8212C20.69 22.2723 19.978 21.9153 19.183 21.8673L15 21.8613C14.212 21.8613 13.495 22.1653 12.96 22.6612C12.411 23.1711 12.054 23.883 12.006 24.6779L12 29.86H7C6.448 29.86 5.948 29.636 5.586 29.2741C5.224 28.9122 5 28.4122 5 27.8603V12.4599L17 6Z" stroke="#061B52" stroke-width="3"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 581 B |
@@ -872,15 +872,15 @@ ion-icon{
|
|||||||
@media only screen and (max-width: 500px) {
|
@media only screen and (max-width: 500px) {
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
width: 5px !important;
|
width: 7px !important;
|
||||||
height: 5px !important;
|
height: 7px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
width: 7px;
|
width: 10px;
|
||||||
height: 7px;
|
height: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Track */
|
/* Track */
|
||||||
|
|||||||