Merge branch 'developer-c' into mobilefirst

This commit is contained in:
Eudes Inácio
2021-04-08 22:56:35 +01:00
31 changed files with 400 additions and 217 deletions
+24 -5
View File
@@ -21,8 +21,11 @@
<ion-row class="ion-align-items-center"> <ion-row class="ion-align-items-center">
<!-- Move back one screen of the slides --> <!-- Move back one screen of the slides -->
<div (click)="back()" class="arrow"> <div class="arrow">
<button (click)="back()" class="btn-no-color" >
<ion-icon slot="icon-only" src="assets/images/icons-calendar-arrow-left.svg"></ion-icon> <ion-icon slot="icon-only" src="assets/images/icons-calendar-arrow-left.svg"></ion-icon>
</button>
</div> </div>
<!-- Move forward one screen of the slides --> <!-- Move forward one screen of the slides -->
@@ -42,10 +45,23 @@
</ion-row> </ion-row>
<ion-row class="ion-align-items-center"> <ion-row class="ion-align-items-center">
<ion-icon *ngIf="profile == 'mdgpr' " (click)="changeProfile()" class="right-icons d-md-none" src="assets/images/icons-profile-calendar-md.svg">ddddddd</ion-icon>
<ion-icon *ngIf="profile == 'pr' " (click)="changeProfile()" class="right-icons d-md-none" src="assets/images/icons-profile-calendar-pr.svg">dddddddd</ion-icon> <button *ngIf="profile == 'mdgpr' " (click)="changeProfile()" class="right-icons d-md-none">
<ion-icon (click)="viewEventsToApprove()" class="right-icons" src="assets/images/icons-received-event.svg"></ion-icon> <ion-icon src="assets/images/icons-profile-calendar-md.svg">ddddddd</ion-icon>
<ion-icon (click)="clearContact();openAddEvent()" class="right-icons" src="assets/images/icons-add-new-event.svg" ></ion-icon> </button>
<button *ngIf="profile == 'pr' " (click)="changeProfile()" class="btn-no-color">
<ion-icon class="right-icons d-md-none" src="assets/images/icons-profile-calendar-pr.svg">dddddddd</ion-icon>
</button>
<button class="btn-no-color" (click)="viewEventsToApprove()">
<ion-icon class="right-icons" src="assets/images/icons-received-event.svg"></ion-icon>
</button>
<button class="btn-no-color" (click)="clearContact();openAddEvent()">
<ion-icon class="right-icons" src="assets/images/icons-add-new-event.svg" ></ion-icon>
</button>
</ion-row> </ion-row>
</ion-row> </ion-row>
@@ -349,9 +365,12 @@
></app-new-event> ></app-new-event>
<!-- Edit --> <!-- Edit -->
<app-edit-event *ngIf="mobileComponent.showEditEvent" <app-edit-event *ngIf="mobileComponent.showEditEvent"
[taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc"
[profile]="profile" [profile]="profile"
[selectedSegment]="segment" [selectedSegment]="segment"
[postEvent]="postEvent" [postEvent]="postEvent"
(clearPostEvent)="clearPostEvent"
(clearContact)="clearContact()" (clearContact)="clearContact()"
(openAttendeesComponent)="openAttendeesComponent($event)" (openAttendeesComponent)="openAttendeesComponent($event)"
(setContact)="setContact($event)" (setContact)="setContact($event)"
+16 -13
View File
@@ -10,7 +10,7 @@ import { AlertService } from 'src/app/services/alert.service';
import { momentG } from 'src/plugin/momentG'; import { momentG } from 'src/plugin/momentG';
import { DomSanitizer } from "@angular/platform-browser"; import { DomSanitizer } from "@angular/platform-browser";
import { EventPerson } from 'src/app/models/eventperson.model'; import { EventPerson } from 'src/app/models/eventperson.model';
import { removeDuplicate } from 'src/plugin/removeDuplicate.js'
// showTimeline // showTimeline
import { setHours, setMinutes } from 'date-fns'; import { setHours, setMinutes } from 'date-fns';
@@ -94,7 +94,7 @@ export class AgendaPage implements OnInit {
selectedEventId: string | number; selectedEventId: string | number;
postEvent: any; postEvent: any;
// temporary data
taskParticipants: any = []; taskParticipants: any = [];
taskParticipantsCc: any = []; taskParticipantsCc: any = [];
adding: "intervenient" | "CC" = "intervenient"; adding: "intervenient" | "CC" = "intervenient";
@@ -161,13 +161,12 @@ export class AgendaPage implements OnInit {
this.showLoader = false; this.showLoader = false;
this.showTimelineFilterState = false; this.showTimelineFilterState = false;
this.showTimeline = false; this.showTimeline = false;
this.mobileComponent.showEventList = true;
} }
ngOnInit() { ngOnInit() {
this.profile = "mdgpr"; this.profile = "mdgpr";
//Inicializar segment
/* localStorage.setItem('test', this.eventSelectedDate.toString()); */
this.router.events.forEach((event) => { this.router.events.forEach((event) => {
if(event instanceof NavigationEnd && event.url == "/home/agenda") { if(event instanceof NavigationEnd && event.url == "/home/agenda") {
@@ -180,7 +179,6 @@ export class AgendaPage implements OnInit {
} }
}); });
window.onresize = (event) => { window.onresize = (event) => {
// if not table remove all component // if not table remove all component
if( window.innerWidth <= 1024){ if( window.innerWidth <= 1024){
@@ -209,6 +207,11 @@ export class AgendaPage implements OnInit {
// show information about the clicked event in timeline // show information about the clicked event in timeline
eventClicked({ event }: { event: CalendarEvent }): void { eventClicked({ event }: { event: CalendarEvent }): void {
/* console.log('Event clicked', event); */ /* console.log('Event clicked', event); */
//clear
this.setIntervenient([]);
this.setIntervenientCC([]);
this.clearPostEvent();
this.IsEvent= "view"; this.IsEvent= "view";
@@ -995,12 +998,7 @@ export class AgendaPage implements OnInit {
// open component // open component
async openAttendeesComponent(data) { async openAttendeesComponent(data) {
if(Array.isArray(data)){ this.adding = data.type
if(data.length >= 1){
this.contacts = data ;
}
}
this.cloneAllmobileComponent(); this.cloneAllmobileComponent();
this.mobileComponent.showAttendees = true; this.mobileComponent.showAttendees = true;
@@ -1047,12 +1045,12 @@ export class AgendaPage implements OnInit {
} }
async setIntervenient(data) { async setIntervenient(data) {
this.taskParticipants = data; this.taskParticipants = removeDuplicate(data)
} }
async setIntervenientCC(data) { async setIntervenientCC(data) {
this.taskParticipantsCc = data; this.taskParticipantsCc = removeDuplicate(data)
} }
// Emitters // Emitters
@@ -1061,4 +1059,9 @@ export class AgendaPage implements OnInit {
this.adding = adding; this.adding = adding;
} }
async clearPostEvent(){
this.postEvent = false;
}
} }
@@ -1,4 +1,5 @@
<ion-content> <ion-content>
<!-- Edit event for Inicio -->
<div class="main-content height-100"> <div class="main-content height-100">
<div class="content d-flex flex-column width-md-100 height-100"> <div class="content d-flex flex-column width-md-100 height-100">
@@ -224,7 +225,7 @@
[taskParticipants]="taskParticipants" [taskParticipants]="taskParticipants"
[taskParticipantsCc]="taskParticipantsCc" [taskParticipantsCc]="taskParticipantsCc"
[adding]="adding" [adding]="adding"
(dynamicSetIntervenient)="dynamicSetIntervenient($event)"
></app-attendee-modal> ></app-attendee-modal>
</div> </div>
@@ -44,16 +44,19 @@ export class EditEventPage implements OnInit {
this.postEvent.Body.Text = this.postEvent.Body.Text.replace(/<[^>]+>/g, ''); this.postEvent.Body.Text = this.postEvent.Body.Text.replace(/<[^>]+>/g, '');
} }
this.taskParticipants = [];
this.taskParticipantsCc = [];
if(this.postEvent.Attendees == null){ if(this.postEvent.Attendees == null){
this.taskParticipants = [] this.taskParticipants = []
} else { } else {
this.taskParticipants = this.postEvent.Attendees;
}
this.taskParticipantsCc = []; this.postEvent.Attendees.forEach(e =>{
if(e.IsRequired){
this.taskParticipants.push(e);
} else {
this.taskParticipantsCc.push(e);
}
})
}
if(this.postEvent.IsRecurring == false){ if(this.postEvent.IsRecurring == false){
this.isRecurring = "Não se repete"; this.isRecurring = "Não se repete";
@@ -81,6 +84,8 @@ export class EditEventPage implements OnInit {
save(){ save(){
this.postEvent.Attendees = this.taskParticipants.concat(this.taskParticipantsCc)
this.eventsService.editEvent(this.postEvent, 2, 3).subscribe(async () => { this.eventsService.editEvent(this.postEvent, 2, 3).subscribe(async () => {
const alert = await this.alertController.create({ const alert = await this.alertController.create({
cssClass: 'my-custom-class', cssClass: 'my-custom-class',
@@ -122,7 +127,6 @@ export class EditEventPage implements OnInit {
} }
}); });
} }
} }
setIntervenient(data){ setIntervenient(data){
@@ -145,4 +149,10 @@ export class EditEventPage implements OnInit {
this.openAttendees(); this.openAttendees();
} }
dynamicSetIntervenient({taskParticipants, taskParticipantsCc}){
this.taskParticipants = taskParticipants;
this.taskParticipantsCc = taskParticipantsCc;
}
} }
+3 -7
View File
@@ -90,13 +90,9 @@
<ion-icon class="icon" slot="end" src="assets/images/icons-correspondencias.svg"></ion-icon> <ion-icon class="icon" slot="end" src="assets/images/icons-correspondencias.svg"></ion-icon>
<div class="text">Correspondência por ler</div> <div class="text">Correspondência por ler</div>
</div> </div>
<ion-icon <button class="btn-no-color" (click)="viewExpedientListPage()">
class="icon-next" <ion-icon class="icon-next" slot="end" src="assets/images/icons-arrow-circle-arrow-right.svg"></ion-icon>
slot="end" </button>
src="assets/images/icons-arrow-circle-arrow-right.svg"
(click)="viewExpedientListPage()"
></ion-icon>
</div> </div>
<div class="content"> <div class="content">
<ion-list> <ion-list>
@@ -61,8 +61,8 @@
</ion-list> </ion-list>
</ion-item> </ion-item>
</div> </div>
<div class="add-people"> <div class="add-people" (click)="addParticipants(); showAttendees='true'">
<ion-icon (click)="addParticipants(); showAttendees='true'" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div> </div>
</div> </div>
</div> </div>
@@ -82,8 +82,8 @@
</ion-list> </ion-list>
</ion-item> </ion-item>
</div> </div>
<div class="add-people"> <div class="add-people" (click)="addParticipantsCc(); showAttendees='true'">
<ion-icon (click)="addParticipantsCc(); showAttendees='true'" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div> </div>
</div> </div>
</div> </div>
@@ -115,6 +115,7 @@
</div> </div>
</div> </div>
<div class="aside-right flex-column height-100"> <div class="aside-right flex-column height-100">
<app-empty-container <app-empty-container
[texto]="emptyTextDescription" [texto]="emptyTextDescription"
@@ -134,8 +135,6 @@
></app-attendee-modal> ></app-attendee-modal>
</div> </div>
</div> </div>
</ion-content> </ion-content>
<ion-footer> <ion-footer>
@@ -13,6 +13,7 @@ import { environment } from 'src/environments/environment';
import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart-expedient-modal.page'; import { DiscartExpedientModalPage } from '../../discart-expedient-modal/discart-expedient-modal.page';
import { AttachmentsService } from 'src/app/services/attachments.service'; import { AttachmentsService } from 'src/app/services/attachments.service';
import { ExpedienteDetailPage } from '../expediente-detail/expediente-detail.page'; import { ExpedienteDetailPage } from '../expediente-detail/expediente-detail.page';
import { AlertService } from 'src/app/services/alert.service';
@Component({ @Component({
selector: 'app-expedient-task-modal', selector: 'app-expedient-task-modal',
@@ -58,6 +59,7 @@ export class ExpedientTaskModalPage implements OnInit {
private processes:ProcessesService, private processes:ProcessesService,
private attachmentsService: AttachmentsService, private attachmentsService: AttachmentsService,
private navParams: NavParams, private navParams: NavParams,
private alertController: AlertService,
private authService: AuthService) { private authService: AuthService) {
this.user = environment.defaultuser +'@'+ environment.domain; this.user = environment.defaultuser +'@'+ environment.domain;
this.task = this.navParams.get('task'); this.task = this.navParams.get('task');
@@ -108,14 +110,18 @@ export class ExpedientTaskModalPage implements OnInit {
} }
cancelTask(){ cancelTask(){
this.modalController.dismiss(null); this.modalController.dismiss(null);
//this.viewExpedientDetail();
} }
saveTask(){ saveTask(){
/* console.log(this.taskType); */ let attendees = this.taskParticipants.concat(this.taskParticipantsCc);
attendees = attendees.map(function(val) {
switch (this.taskType) return {
{ UserEmail: val.EmailAddress,
UserType: val.IsRequired?"I": "CC"
};
})
if(this.taskParticipants.length > 0){
switch (this.taskType){
case '0': case '0':
this.postData = { this.postData = {
DistributionType: "Paralelo", DistributionType: "Paralelo",
@@ -123,7 +129,7 @@ export class ExpedientTaskModalPage implements OnInit {
Priority: this.postData.Priority, Priority: this.postData.Priority,
UserEmail: this.user, UserEmail: this.user,
SubjectTypeId: this.postData.SubjectTypeId, SubjectTypeId: this.postData.SubjectTypeId,
UsersSelected: this.participants, UsersSelected: attendees,
DispatchFolder: this.dispatchFolder, DispatchFolder: this.dispatchFolder,
} }
console.log(this.postData); console.log(this.postData);
@@ -136,9 +142,10 @@ export class ExpedientTaskModalPage implements OnInit {
Priority: this.postData.Priority, Priority: this.postData.Priority,
UserEmail: this.user, UserEmail: this.user,
SubjectTypeId: this.postData.SubjectTypeId, SubjectTypeId: this.postData.SubjectTypeId,
UsersSelected: this.participants, UsersSelected: attendees,
DispatchFolder: this.dispatchFolder, DispatchFolder: this.dispatchFolder,
} }
console.log(this.postData);
this.processes.postParecer(this.postData); this.processes.postParecer(this.postData);
break; break;
case '2': case '2':
@@ -148,15 +155,20 @@ export class ExpedientTaskModalPage implements OnInit {
Priority: this.postData.Priority, Priority: this.postData.Priority,
UserEmail: this.user, UserEmail: this.user,
SubjectTypeId: this.postData.SubjectTypeId, SubjectTypeId: this.postData.SubjectTypeId,
UsersSelected: this.participants, UsersSelected: attendees,
DispatchFolder: this.dispatchFolder, DispatchFolder: this.dispatchFolder,
} }
console.log(this.postData);
this.processes.postDeferimento(this.postData); this.processes.postDeferimento(this.postData);
break; break;
} }
this.modalController.dismiss('openDiscart'); this.modalController.dismiss('openDiscart');
/* this.distartExpedientModal(); /* this.distartExpedientModal();
this.close(); */ this.close(); */
}
else{
this.alertController.presentAlert("Lista de intervenientes vazia. Por favor, adicione 1 ou mais intervenientes.");
}
} }
getAttachments(){ getAttachments(){
@@ -167,6 +179,8 @@ export class ExpedientTaskModalPage implements OnInit {
} }
async addParticipants(){ async addParticipants(){
console.log('HERES');
this.adding = "intervenient"; this.adding = "intervenient";
this.contacts = this.taskParticipants; this.contacts = this.taskParticipants;
@@ -242,7 +256,6 @@ export class ExpedientTaskModalPage implements OnInit {
} }
async distartExpedientModal(){ async distartExpedientModal(){
console.log(this.task.serialNumber);
const modal = await this.modalController.create({ const modal = await this.modalController.create({
component: DiscartExpedientModalPage, component: DiscartExpedientModalPage,
componentProps: { componentProps: {
@@ -14,7 +14,9 @@
<div class="aside-wrapper d-flex flex-column pt-25 justify-center width-md-40 "> <div class="aside-wrapper d-flex flex-column pt-25 justify-center width-md-40 ">
<div class="title-container"> <div class="title-container">
<span class="text-center mt-0 aside-title px-20">Gabinete Digital</span> <span class="text-center mt-0 aside-title px-20">Gabinete Digital</span>
<ion-icon (click)="doRefresh($event)" class="title-icon" name="reload-circle"></ion-icon> <button class="btn-no-color" (click)="doRefresh($event)">
<ion-icon class="title-icon" name="reload-circle"></ion-icon>
</button>
</div> </div>
<div class="aside overflow-y-auto d-flex d-md-block flex-wrap justify-center width-100 px-20"> <div class="aside overflow-y-auto d-flex d-md-block flex-wrap justify-center width-100 px-20">
@@ -13,11 +13,15 @@ ion-content{
} }
.title-container{ .title-container{
margin-bottom: 15px; margin-bottom: 15px;
.btn-no-color{
display: flex;
float: right;
}
.title-icon{ .title-icon{
float: right; float: right;
margin-right: 20px; margin-right: 20px;
font-size: 30px; font-size: 30px;
color: #0782c9; color: #42b9fe;
} }
} }
@@ -33,8 +33,8 @@ export class GabineteDigitalPage implements OnInit {
showExpediente : false showExpediente : false
} }
showEventsToApprove = false; showEventsToApprove = false;
showEmptyContainer = true; showEmptyContainer = false;
showExpedients = false; showExpedients = true;
showExpedientDetail = false; showExpedientDetail = false;
emptyTextDescription = 'Sem opção selecionada'; emptyTextDescription = 'Sem opção selecionada';
@@ -58,23 +58,13 @@ export class GabineteDigitalPage implements OnInit {
this.adjastModalHeight(); this.adjastModalHeight();
/* this.activatedRoute.queryParams.subscribe(params => { this.activatedRoute.queryParams.subscribe(params => {
if(params["show"]){ if(params["show"]){
this.openExpedientListPage(); this.openExpedientListPage();
} }
else if(params["events-to-approve"]){ else if(params["events"]){
this.openEventsToApprovePage("MDGPR"); this.openEventsToApprovePage("MDGPR");
} }
}); */
this.activatedRoute.paramMap.subscribe(paramMap =>{
if (paramMap.has("show")){
this.openExpedientListPage();
}
else if(paramMap.has("events")){
this.openEventsToApprovePage("MDGPR");
this.LoadCounts();
}
}); });
} }
@@ -161,7 +151,7 @@ this.processesbackend.GetActionsList().subscribe(res=>{
doRefresh(event) { doRefresh(event) {
this.closeAllDesktopComponents(); this.closeAllDesktopComponents();
this.showEmptyContainer = true; this.showExpedients = true;
this.LoadCounts(); this.LoadCounts();
setTimeout(() => { setTimeout(() => {
@@ -2,7 +2,7 @@
<ion-toolbar class="ion-no-border bg-blue"> <ion-toolbar class="ion-no-border bg-blue">
<div class="div-top-header"> <div class="div-top-header">
<div class="div-search"> <div class="div-search">
<ion-icon src='assets/images/icons-search.svg'></ion-icon> <ion-icon tappable src='assets/images/icons-search.svg'></ion-icon>
</div> </div>
<div class="div-logo"> <div class="div-logo">
<img src='assets/images/logo-no-bg.png' alt='logo'> <img src='assets/images/logo-no-bg.png' alt='logo'>
@@ -20,7 +20,7 @@
<div *ngIf="publication.Title != ''"> <div *ngIf="publication.Title != ''">
<div class="title-content"> <div class="title-content">
<div class="back-icon"> <div class="back-icon">
<ion-icon (click)="close()" slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon> <ion-icon tappable (click)="close()" slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
</div> </div>
<div class="div-title"> <div class="div-title">
<ion-label class="title"> {{publication.Title}}</ion-label> <ion-label class="title"> {{publication.Title}}</ion-label>
@@ -85,6 +85,8 @@ export class PublicationDetailPage implements OnInit {
} }
async editPost(publicationType:any) { async editPost(publicationType:any) {
console.log('HERE');
console.log(this.publication); console.log(this.publication);
const modal = await this.modalController.create({ const modal = await this.modalController.create({
component: NewPublicationPage, component: NewPublicationPage,
@@ -21,8 +21,12 @@
<ion-label class="title">Acções Presidenciais</ion-label> <ion-label class="title">Acções Presidenciais</ion-label>
</div> </div>
<div class="div-icon"> <div class="div-icon">
<ion-icon (click)="AddPublicationFolder()" slot="end" src='assets/images/icons-add.svg'></ion-icon> <button class="btn-no-color" (click)="AddPublicationFolder()">
<ion-icon (click)="doRefresh($event)" class="title-icon" name="reload-circle"></ion-icon> <ion-icon slot="icon-only" src='assets/images/icons-add.svg'></ion-icon>
</button>
<button class="btn-no-color" (click)="doRefresh($event)">
<ion-icon slot="icon-only" class="title-icon" name="reload-circle" title="Actualizar"></ion-icon>
</button>
</div> </div>
</div> </div>
</div> </div>
@@ -87,6 +91,7 @@
class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1" class="height-100 d-flex flex-column overflow-hidden background-white flex-grow-1"
[folderId]="folderId" [folderId]="folderId"
[publicationType]="publicationType" [publicationType]="publicationType"
[publicationId]="publicationId"
(closeDesktopComponent)="closeDesktopComponent($event)" (closeDesktopComponent)="closeDesktopComponent($event)"
(goBacktoPublicationDetails)="goBacktoPublicationDetails($event)" (goBacktoPublicationDetails)="goBacktoPublicationDetails($event)"
@@ -10,6 +10,7 @@ import { ViewPublicationsPage } from './view-publications/view-publications.page
import { Animation, AnimationController } from '@ionic/angular'; import { Animation, AnimationController } from '@ionic/angular';
import { LoadingController } from '@ionic/angular'; import { LoadingController } from '@ionic/angular';
import { LoadingService } from 'src/app/services/loading.service'; import { LoadingService } from 'src/app/services/loading.service';
import { Publication } from 'src/app/models/publication';
@Component({ @Component({
@@ -20,6 +21,7 @@ import { LoadingService } from 'src/app/services/loading.service';
export class PublicationsPage implements OnInit { export class PublicationsPage implements OnInit {
showLoader: boolean; showLoader: boolean;
publicationFolder: PublicationFolder; publicationFolder: PublicationFolder;
publication: Publication;
publicationFolderList: PublicationFolder[]; publicationFolderList: PublicationFolder[];
publicationsEventFolderList: PublicationFolder[]; publicationsEventFolderList: PublicationFolder[];
@@ -45,7 +47,7 @@ export class PublicationsPage implements OnInit {
publicationId: string; publicationId: string;
// from publication details // from publication details
publication: object; //publication: object;
constructor( constructor(
private router: Router, private router: Router,
+6 -2
View File
@@ -6,14 +6,18 @@
<ion-form class="d-md-none"> <ion-form class="d-md-none">
<div class="d-flex search-input-container ion-justify-content-between" > <div class="d-flex search-input-container ion-justify-content-between" >
<div class="icon" (click)="basicSearch()"> <div class="icon">
<button class="btn-no-color" (click)="basicSearch()">
<ion-icon class="icon-z" slot="end" name="search"></ion-icon> <ion-icon class="icon-z" slot="end" name="search"></ion-icon>
</button>
</div> </div>
<div class="input-text d-flex ion-align-items-center"> <div class="input-text d-flex ion-align-items-center">
<ion-input [(ngModel)]='searchSubject' class="search-input" type="search" placeholder="Pesquisar"></ion-input> <ion-input [(ngModel)]='searchSubject' class="search-input" type="search" placeholder="Pesquisar"></ion-input>
</div> </div>
<div class="icon" (click)="clearSearchInput()"> <div class="icon">
<button class="btn-no-color" (click)="clearSearchInput()">
<ion-icon name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon> <ion-icon name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon>
</button>
</div> </div>
</div> </div>
</ion-form> </ion-form>
@@ -67,13 +67,11 @@
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="middle-content"> <div class="middle-content">
<div *ngIf="loadedEvent.workflowInstanceDataFields.Participants"> <div *ngIf="loadedEvent.workflowInstanceDataFields.ParticipantsList">
<h5>Intervenientes</h5> <h5>Intervenientes</h5>
<ion-item class="ion-no-margin ion-no-padding"> <div *ngFor="let att of loadedEvent.workflowInstanceDataFields.ParticipantsList">
<ion-label> <ion-label>{{att.Name}}</ion-label>
<p>{{loadedEvent.workflowInstanceDataFields.Participants}}</p> </div>
</ion-label>
</ion-item>
</div> </div>
<h5>Detalhes</h5> <h5>Detalhes</h5>
<ion-item class="ion-no-margin ion-no-padding"> <ion-item class="ion-no-margin ion-no-padding">
@@ -3,7 +3,7 @@
<div class="main-header"> <div class="main-header">
<div class="title-content"> <div class="title-content">
<div class="middle"> <div class="middle">
<ion-label class="title">Editar Evento</ion-label> <ion-label class="title">Editar Evento agenda</ion-label>
</div> </div>
</div> </div>
</div> </div>
@@ -130,43 +130,47 @@
</div> </div>
</div> </div>
<div class="container-div d-flex"> <div class=" d-flex width-100">
<div class="ion-item-class-2 width-100 d-flex"> <div class="ion-item-class-2 width-100">
<div class="ion-icon-class"> <div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-person.svg"></ion-icon>
</div> </div>
<div (click)="openAttendees()" class="ion-input-class d-flex flex-grow-1 width-100 overflow-hidden "> <div class="ion-input-class-no-height">
<div class="list-people flex-grow-1"> <div class="list-people">
<ion-item lines="none"> <ion-item lines="none">
<ion-list> <ion-list>
<ion-label class="list-people-title">Ver ou editar participantes</ion-label> <ion-label *ngIf="taskParticipants.length == 0" class="list-people-title">Adicionar intervenientes</ion-label>
<ion-label hidden >Text</ion-label> <ion-label *ngFor="let participant of taskParticipants">{{participant.Name}}</ion-label>
</ion-list> </ion-list>
</ion-item> </ion-item>
</div> </div>
<div class="d-flex justify-center align-center font-35"> <div class="add-people">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon> <button class="btn-no-color" (click)="addParticipants()">
<ion-icon class="font-35" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div hidden class="container-div d-flex"> <div class=" d-flex width-100">
<div class="ion-item-class-2 width-100 d-flex"> <div class="ion-item-class-2 width-100">
<div class="ion-icon-class"> <div class="ion-icon-class">
<ion-icon slot="start" src="assets/images/icons-people-cc.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-people-cc.svg"></ion-icon>
</div> </div>
<div class="ion-input-class d-flex flex-grow-1 width-100 overflow-hidden"> <div class="ion-input-class-no-height">
<div class="list-people flex-grow-1"> <div class="list-people">
<ion-item lines="none"> <ion-item lines="none">
<ion-list> <ion-list>
<ion-label class="list-people-title">Com conhecimento</ion-label> <ion-label *ngIf="taskParticipantsCc.length == 0" class="list-people-title">Como conhecido</ion-label>
<ion-label hidden >Text</ion-label> <ion-label *ngFor="let participant of taskParticipantsCc">{{participant.Name}}</ion-label>
</ion-list> </ion-list>
</ion-item> </ion-item>
</div> </div>
<div class="d-flex justify-center align-center font-35"> <div class="add-people">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon> <button class="btn-no-color" (click)="addParticipantsCc()">
<ion-icon class="font-35" slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</button>
</div> </div>
</div> </div>
</div> </div>
@@ -5,7 +5,7 @@ import { EventPerson } from 'src/app/models/eventperson.model';
import { EventsService } from 'src/app/services/events.service'; import { EventsService } from 'src/app/services/events.service';
import { Event } from 'src/app/models/event.model'; import { Event } from 'src/app/models/event.model';
import { AlertController } from '@ionic/angular'; import { AlertController } from '@ionic/angular';
import { removeDuplicate } from 'src/plugin/removeDuplicate.js'
@Component({ @Component({
selector: 'app-edit-event', selector: 'app-edit-event',
templateUrl: './edit-event.component.html', templateUrl: './edit-event.component.html',
@@ -22,25 +22,25 @@ export class EditEventComponent implements OnInit {
eventAttendees: EventPerson[]; eventAttendees: EventPerson[];
minDate: string; minDate: string;
@Input() taskParticipants: EventPerson[];
@Input() taskParticipantsCc: any = [];
@Input() profile:string; @Input() profile:string;
@Input() selectedSegment: string; @Input() selectedSegment: string;
@Input() postEvent: any; @Input() postEvent: any;
@Output() clearContact = new EventEmitter<any>(); @Output() clearContact = new EventEmitter<any>();
@Output() openAttendeesComponent = new EventEmitter<any>(); @Output() openAttendeesComponent = new EventEmitter<any>();
@Output() closeComponent = new EventEmitter<any>(); @Output() closeComponent = new EventEmitter<any>();
@Output() setIntervenient = new EventEmitter<any>(); @Output() setIntervenient = new EventEmitter<any>();
@Output() setIntervenientCC = new EventEmitter<any>(); @Output() setIntervenientCC = new EventEmitter<any>();
@Output() clearPostEvent = new EventEmitter<any>();
constructor( constructor(
private modalController: ModalController, private modalController: ModalController,
private eventsService: EventsService, private eventsService: EventsService,
public alertController: AlertController, public alertController: AlertController,
) ) {
{
} }
@@ -48,7 +48,20 @@ export class EditEventComponent implements OnInit {
if(this.postEvent){ if(this.postEvent){
this.postEvent.Body.Text = this.postEvent.Body.Text.replace(/<[^>]+>/g, ''); this.postEvent.Body.Text = this.postEvent.Body.Text.replace(/<[^>]+>/g, '');
} }
console.log(this.postEvent);
// attendees list
if(this.postEvent.Attendees != null) {
this.postEvent.Attendees.forEach(e =>{
if(e.IsRequired) {
this.taskParticipants.push(e);
} else {
this.taskParticipantsCc.push(e);
}
})
}
this.taskParticipants = removeDuplicate(this.taskParticipants);
this.taskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
this.isEventEdited = false; this.isEventEdited = false;
@@ -61,31 +74,44 @@ export class EditEventComponent implements OnInit {
} }
close(){ close(){
console.log('!!!!!!!!!!!!!!!!! close')
this.closeComponent.emit(); this.closeComponent.emit();
this.setIntervenient.emit([]);
this.setIntervenientCC.emit([]);
this.clearContact.emit(); this.clearContact.emit();
} }
save(){
this.eventsService.editEvent(this.postEvent, 2, 3).subscribe(async () => { async save(){
this.postEvent.Attendees = this.taskParticipants.concat(this.taskParticipantsCc);
await this.eventsService.editEvent(this.postEvent, 2, 3).subscribe(async () => {
const alert = await this.alertController.create({ const alert = await this.alertController.create({
cssClass: 'my-custom-class', cssClass: 'my-custom-class',
header: 'Evento actualizado', header: 'Evento actualizado',
buttons: ['OK'] buttons: ['OK']
}); });
await alert.present(); await alert.present();
}); });
this.clearPostEvent.emit();
this.closeComponent.emit(); this.close();
this.clearContact.emit();
this.setIntervenient.emit([]);
this.setIntervenientCC.emit([]);
} }
async openAttendees() { async addParticipants() {
this.openAttendeesComponent.emit({
type: "intervenient"
});
this.openAttendeesComponent.emit(); this.clearContact.emit();
}
async addParticipantsCc() {
this.openAttendeesComponent.emit({
type: "CC"
});
this.clearContact.emit(); this.clearContact.emit();
} }
@@ -140,7 +140,7 @@
</ion-item> </ion-item>
</div> </div>
<div class="add-people" (click)="openAttendees()"> <div class="add-people" (click)="addParticipants()">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div> </div>
</div> </div>
@@ -154,13 +154,16 @@
</div> </div>
<div class="ion-input-class-no-height flex-grow-1"> <div class="ion-input-class-no-height flex-grow-1">
<div class="list-people"> <div class="list-people">
<ion-item lines="none"> <ion-item lines="none">
<ion-list> <ion-list>
<ion-label class="list-people-title">Com conhecimento</ion-label> <ion-label *ngIf="taskParticipantsCc.length ==0" class="list-people-title">Com conhecimento</ion-label>
<ion-label *ngFor="let participant of taskParticipantsCc">{{participant.Name}}</ion-label>
</ion-list> </ion-list>
</ion-item> </ion-item>
</div> </div>
<div class="add-people"> <div class="add-people" (click)="addParticipantsCc()">
<ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon> <ion-icon slot="start" src="assets/images/icons-arrow-forward.svg"></ion-icon>
</div> </div>
</div> </div>
@@ -132,10 +132,21 @@ export class NewEventPage implements OnInit {
this.setIntervenientCC.emit([]); this.setIntervenientCC.emit([]);
} }
async openAttendees(){
this.saveTemporaryData(); async addParticipants() {
this.openAttendeesComponent.emit(); this.openAttendeesComponent.emit({
type: "intervenient"
});
this.clearContact.emit();
}
async addParticipantsCc() {
this.openAttendeesComponent.emit({
type: "CC"
});
this.clearContact.emit();
} }
saveTemporaryData(){ saveTemporaryData(){
@@ -3,14 +3,20 @@
<div class="main-header px-20"> <div class="main-header px-20">
<div class="title-content d-flex" > <div class="title-content d-flex" >
<div class="left"> <div class="left">
<ion-icon (click)="close()" slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon> <button class="btn-no-color" (click)="close()">
<ion-icon slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
</button>
</div> </div>
<div class="middle flex-grow-1"> <div class="middle flex-grow-1">
<ion-label class="title">{{loadedEvent.Subject}}</ion-label> <ion-label class="title">{{loadedEvent.Subject}}</ion-label>
</div> </div>
<div class="div-icon"> <div class="div-icon">
<ion-icon class="edit" (click)="editEvent()" slot="end" src="assets/images/icons-edit.svg" ></ion-icon> <button class="btn-no-color" (click)="editEvent()">
<ion-icon class="delete" (click)="deleteEvent()" name="trash-sharp"></ion-icon> <ion-icon class="edit" slot="end" src="assets/images/icons-edit.svg" ></ion-icon>
</button>
<button class="btn-no-color" (click)="deleteEvent()">
<ion-icon class="delete" name="trash-sharp"></ion-icon>
</button>
</div> </div>
</div> </div>
</div> </div>
@@ -69,7 +69,7 @@
<!-- Hide footer in gabinete-digital --> <!-- Hide footer in gabinete-digital -->
<ion-footer class="ion-no-border" *ngIf="currentPath != '/home/gabinete-digital' "> <ion-footer class="ion-no-border" *ngIf="currentPath != '/home/gabinete-digital' ">
<ion-toolbar class="width-100 d-flex justify-space-between px-20"> <ion-toolbar *ngIf="currentPath != '/home/events'" class="width-100 d-flex justify-space-between px-20">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-button class="btn-cancel" fill="clear" color="#061b52" (click)="close()"> <ion-button class="btn-cancel" fill="clear" color="#061b52" (click)="close()">
<ion-label>Cancelar</ion-label> <ion-label>Cancelar</ion-label>
@@ -13,13 +13,16 @@ export class AttendeeModalPage implements OnInit {
// Defined by the API // Defined by the API
contacts: EventPerson[]; contacts: EventPerson[];
showLoader: boolean = false; showLoader: boolean = false;
selectedContact: EventPerson[] =[];
eventPersons: EventPerson[]; eventPersons: EventPerson[];
@Input() taskParticipants:EventPerson[] = []; @Input() taskParticipants:EventPerson[] = [];
@Input() taskParticipantsCc:EventPerson[] = []; @Input() taskParticipantsCc:EventPerson[] = [];
constructor(private modalCtrl: ModalController, private contactsService: ContactsService) { } constructor(
private modalCtrl: ModalController,
private contactsService: ContactsService ) {
}
@Output() closeComponent = new EventEmitter<any>(); @Output() closeComponent = new EventEmitter<any>();
@@ -31,6 +34,7 @@ export class AttendeeModalPage implements OnInit {
@Input() adding: "intervenient" | "CC"; @Input() adding: "intervenient" | "CC";
ngOnInit() { ngOnInit() {
this.fetchContacts(""); this.fetchContacts("");
if(this.taskParticipants == null || this.taskParticipants == undefined){ if(this.taskParticipants == null || this.taskParticipants == undefined){
@@ -46,7 +50,6 @@ export class AttendeeModalPage implements OnInit {
ngOnChanges(event){} ngOnChanges(event){}
save(){ save(){
this.setIntervenient.emit(this.taskParticipants); this.setIntervenient.emit(this.taskParticipants);
this.setIntervenientCC.emit(this.taskParticipantsCc); this.setIntervenientCC.emit(this.taskParticipantsCc);
@@ -61,8 +64,6 @@ export class AttendeeModalPage implements OnInit {
} }
close(){ close(){
// this.modalCtrl.dismiss(null);
this.selectedContact = [];
this.closeComponent.emit(); this.closeComponent.emit();
} }
@@ -72,19 +73,7 @@ export class AttendeeModalPage implements OnInit {
filterSearchList(itm: EventPerson): boolean { filterSearchList(itm: EventPerson): boolean {
if(this.adding == "intervenient"){ const result1 = this.taskParticipants.find((contact, index)=>{
const result = this.taskParticipants.find((contact, index)=>{
if(contact.Name == itm.Name && contact.EmailAddress == itm.EmailAddress){
index = index;
return contact;
}
});
return undefined == result;
} else if (this.adding == "CC") {
const result = this.taskParticipantsCc.find((contact, index)=>{
if(contact.Name == itm.Name && contact.EmailAddress == itm.EmailAddress){ if(contact.Name == itm.Name && contact.EmailAddress == itm.EmailAddress){
index = index; index = index;
@@ -92,9 +81,28 @@ export class AttendeeModalPage implements OnInit {
} }
}); });
return undefined == result; // if to show
if(undefined != result1){
return false;
} }
const result2 = this.taskParticipantsCc.find((contact, index)=>{
if(contact.Name == itm.Name && contact.EmailAddress == itm.EmailAddress){
index = index;
return contact;
}
});
// if to show
if(undefined != result2){
return false;
}
// don't show
return true;
} }
remove(itm: EventPerson){ remove(itm: EventPerson){
@@ -110,8 +118,6 @@ export class AttendeeModalPage implements OnInit {
}); });
} else if (this.adding == "CC") { } else if (this.adding == "CC") {
this.taskParticipantsCc = this.taskParticipantsCc.filter((contact, index) =>{ this.taskParticipantsCc = this.taskParticipantsCc.filter((contact, index) =>{
@@ -138,10 +144,12 @@ export class AttendeeModalPage implements OnInit {
if(this.adding == "intervenient"){ if(this.adding == "intervenient"){
itm.IsRequired = true;
this.taskParticipants.push(itm); this.taskParticipants.push(itm);
} else if (this.adding == "CC") { } else if (this.adding == "CC") {
itm.IsRequired = false;
this.taskParticipantsCc.push(itm); this.taskParticipantsCc.push(itm);
} }
+15 -5
View File
@@ -2,15 +2,21 @@
<div class="mobile d-flex div-top-header justify-space-between"> <div class="mobile d-flex div-top-header justify-space-between">
<div (click)="openSearch()" class="div-search"> <div class="div-search">
<button class="btn-no-color" (click)="openSearch()">
<ion-icon class="font-45" src='assets/images/icons-search.svg'></ion-icon> <ion-icon class="font-45" src='assets/images/icons-search.svg'></ion-icon>
</button>
</div> </div>
<div class="div-logo height-fit-content"> <div class="div-logo height-fit-content">
<img src='assets/images/logo-no-bg.png' alt='logo'> <img src='assets/images/logo-no-bg.png' alt='logo'>
</div> </div>
<div class="div-profile" (click)="openProfile()"> <div class="div-profile">
<button class="btn-no-color" (click)="openProfile()">
<ion-icon class="font-45" *ngIf="profile == 'mdgpr' " src='assets/images/icons-profile.svg'></ion-icon> <ion-icon class="font-45" *ngIf="profile == 'mdgpr' " src='assets/images/icons-profile.svg'></ion-icon>
</button>
<button class="btn-no-color" (click)="openProfile()">
<ion-icon class="font-45" *ngIf="profile == 'pr' " src='assets/images/icons-profile-pr-header.svg'></ion-icon> <ion-icon class="font-45" *ngIf="profile == 'pr' " src='assets/images/icons-profile-pr-header.svg'></ion-icon>
</button>
</div> </div>
</div> </div>
@@ -52,8 +58,13 @@
<div class="d-flex"> <div class="d-flex">
<div class="mr-10 d-flex align-center"> <div class="mr-10 d-flex align-center">
<ion-icon *ngIf="!showSearch" (click)="showSearch=true" class="font-45" (click)="openSearch()" src='assets/images/icons-search.svg'></ion-icon> <button (click)="openSearch()" *ngIf="!showSearch" class="btn-no-color" (click)="showSearch=true">
<ion-icon *ngIf="showSearch" (click)="closeSearch()" (click)="showSearch=false" class="font-40" name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon> <ion-icon class="font-45" src='assets/images/icons-search.svg'></ion-icon>
</button>
<button class="btn-no-color" (click)="closeSearch()" *ngIf="showSearch" (click)="showSearch=false">
<ion-icon class="font-40" name="restaurant-outline" src="assets/images/icons-search-close.svg"></ion-icon>
</button>
<ion-form *ngIf="showSearch"> <ion-form *ngIf="showSearch">
<div class="d-flex search-input-container ml-10 justify-between" *ngIf="showSearch" > <div class="d-flex search-input-container ml-10 justify-between" *ngIf="showSearch" >
<div class="icon" (click)="basicSearch()"> <div class="icon" (click)="basicSearch()">
@@ -76,7 +87,6 @@
</div> </div>
</div> </div>
</div> </div>
</ion-toolbar> </ion-toolbar>
+1
View File
@@ -40,6 +40,7 @@ export class HeaderPage implements OnInit {
} }
async openSearch() { async openSearch() {
const modal = await this.modalController.create({ const modal = await this.modalController.create({
component: SearchPage, component: SearchPage,
cssClass: 'group-messages modal-desktop search-modal search-modal-to-desktop', cssClass: 'group-messages modal-desktop search-modal search-modal-to-desktop',
@@ -3,13 +3,17 @@
<ion-content class=" bg-blue"> <ion-content class=" bg-blue">
<div class="profile-content"> <div class="profile-content">
<div class="d-flex justify-end" (click)="close()"> <div class="d-flex justify-end">
<button class="btn-no-color" (click)="close()">
<ion-icon class="icon" src="assets/images/icons-search-close.svg"></ion-icon> <ion-icon class="icon" src="assets/images/icons-search-close.svg"></ion-icon>
</button>
</div> </div>
<div class="go-back d-flex align-center" (click)="close()"> <div class="go-back d-flex align-center" >
<button class="btn-no-color" (click)="close()">
<ion-icon class="icon" src="assets/images/icons-calendar-arrow-left.svg"></ion-icon> <div>Perfil</div> <ion-icon class="icon" src="assets/images/icons-calendar-arrow-left.svg"></ion-icon> <div>Perfil</div>
</button>
</div> </div>
<div > <div >
@@ -39,6 +39,7 @@ export class NewPublicationPage implements OnInit {
@Input() publicationType: string; @Input() publicationType: string;
@Input() folderId: string; @Input() folderId: string;
@Input() publicationId:string;
@Output() closeDesktopComponent = new EventEmitter<any>(); @Output() closeDesktopComponent = new EventEmitter<any>();
@Output() openPublicationDetails = new EventEmitter<any>(); @Output() openPublicationDetails = new EventEmitter<any>();
@Output() goBackToViewPublications = new EventEmitter<any>(); @Output() goBackToViewPublications = new EventEmitter<any>();
@@ -59,10 +60,38 @@ export class NewPublicationPage implements OnInit {
} }
ngOnInit() { ngOnInit() {
if(this.publicationType == '3'){
this.getPublicationDetail();
}
this.setTitle(); this.setTitle();
this.clear(); this.clear();
this.takePicture(); this.takePicture();
} }
getPublicationDetail(){
this.showLoader = true;
console.log(this.publicationId);
/* console.log(this.folderId); */
this.publications.GetPublicationById(this.publicationId).subscribe(res=>{
console.log(res);
/* this.publication = res; */
this.publication = {
DateIndex: res.DateIndex,
DocumentId: res.DocumentId,
ProcessId:res.ProcessId,
Title:res.Title,
Message: res.Message,
DatePublication: res.DatePublication,
FileBase64: "data:image/jpg;base64," + res.FileBase64,
OriginalFileName: res.OriginalFileName,
FileExtension: 'jpeg',
}
this.pub = this.publication;
this.showLoader = false;
});
}
takePicture(){ takePicture(){
const options: CameraOptions = { const options: CameraOptions = {
quality: 90, quality: 90,
@@ -189,7 +218,8 @@ export class NewPublicationPage implements OnInit {
if(this.publicationType == '2'){ if(this.publicationType == '2'){
this.goBackToViewPublications.emit(); this.goBackToViewPublications.emit();
} else { } else {
this.goBacktoPublicationDetails.emit(); this.goBackToViewPublications.emit();
//this.goBacktoPublicationDetails.emit();
} }
} }
@@ -9,7 +9,10 @@
<div *ngIf="publication.Title != ''"> <div *ngIf="publication.Title != ''">
<div class="title-content d-flex pl-20"> <div class="title-content d-flex pl-20">
<div class="back-icon " > <div class="back-icon " >
<ion-icon (click)="goBack()" slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon> <button class="button" (click)="goBack()">
<ion-icon slot="end" src='assets/images/icons-arrow-arrow-left.svg'></ion-icon>
</button>
</div> </div>
<div class="div-title"> <div class="div-title">
<ion-label class="title"> {{publication.Title}}</ion-label> <ion-label class="title"> {{publication.Title}}</ion-label>
@@ -13,8 +13,12 @@
</div> </div>
<div class="actions-icon"> <div class="actions-icon">
<!-- <ion-icon (click)="AddPublication('1',item.ProcessId)" slot="end" src='assets/images/icons-add-photo.svg'></ion-icon> --> <!-- <ion-icon (click)="AddPublication('1',item.ProcessId)" slot="end" src='assets/images/icons-add-photo.svg'></ion-icon> -->
<ion-icon (click)="AddPublication('2',item.ProcessId)" src='assets/images/icons-add.svg'></ion-icon> <button class="btn-no-color" (click)="AddPublication('2',item.ProcessId)">
<ion-icon (click)="doRefresh($event)" class="title-icon" name="reload-circle"></ion-icon> <ion-icon src='assets/images/icons-add.svg'></ion-icon>
</button>
<button class="btn-no-color" (click)="doRefresh($event)">
<ion-icon class="title-icon" name="reload-circle"></ion-icon>
</button >
</div> </div>
</div> </div>
</div> </div>
+15 -1
View File
@@ -571,6 +571,20 @@ border-top: 1px solid #d8d8d8;
} }
.title-icon{ .title-icon{
font-size: 40px !important; font-size: 40px !important;
color: #0782c9; color: #42b9fe;
overflow: auto; overflow: auto;
} }
ion-icon {
pointer-events: none;
}
.btn-no-color{
background: transparent;
margin: 0 !important;
padding: 0 !important;
ion-icon{
font-size: 35px;
}
}
.btn-no-color:focus{
outline: 0;
}
+11
View File
@@ -0,0 +1,11 @@
function removeDuplicate(data){
return [...new Set(data.map(JSON.stringify))].map(JSON.parse)
}
module.exports = {
removeDuplicate: removeDuplicate
};