mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
Merge branch 'develop_bitOut' of https://bitbucket.org/equilibriumito/gabinete-digital-fo into develop_bitOut
This commit is contained in:
@@ -252,6 +252,10 @@ const routes = [
|
||||
},
|
||||
{
|
||||
path: 'chat-message-debugging',
|
||||
loadChildren: () => import('./shared/popover/chat-message-debugging/chat-message-debugging.module').then( m => m.ChatMessageDebuggingPageModule)
|
||||
},
|
||||
{
|
||||
path: 'add-user',
|
||||
loadChildren: () => import('./shared/chat/add-user/add-user.module').then( m => m.AddUserPageModule)
|
||||
}
|
||||
|
||||
|
||||
@@ -220,14 +220,18 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-div width-100">
|
||||
<!-- <div class="container-div width-100">
|
||||
<div class="ion-item-class-2 d-flex">
|
||||
<div class="ion-icon-class">
|
||||
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
|
||||
</div>
|
||||
<div class="ion-input-class flex-grow-1" [class.input-error]="Form?.get('dateOccurrence')?.invalid && validateFrom ">
|
||||
|
||||
<!-- (ngModelChange)="onSelectedRecurringChanged($event)" -->
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> develop_bitOut-fix
|
||||
<mat-form-field appearance="none" floatLabel="never" class="width-100" value="false" interface="action-sheet" required>
|
||||
<mat-select placeholder="Selecione repetição*"
|
||||
[(ngModel)]="EventRecurrenceType"
|
||||
@@ -242,7 +246,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div *ngIf="EventRecurrenceType != '-1'" class="container-div width-100">
|
||||
<div class="ion-item-class-2 d-flex">
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
<input matInput [ngxMatDatetimePicker]="fim"
|
||||
placeholder="Choose a date"
|
||||
[(ngModel)]="postEvent.EndDate"
|
||||
[min]="currentDate"
|
||||
[min]="postEvent.StartDate"
|
||||
[max]="maxDate"
|
||||
[disabled]="disabled"
|
||||
>
|
||||
@@ -180,7 +180,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-div d-flex width-100">
|
||||
<!-- <div class="container-div d-flex width-100">
|
||||
<div class="ion-item-class-2 width-100 d-flex">
|
||||
<div class="ion-icon-class">
|
||||
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
|
||||
@@ -201,7 +201,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div *ngIf="selectedRecurringType != '-1'" class="container-div width-100">
|
||||
<div class="ion-item-class-2 d-flex">
|
||||
|
||||
@@ -66,9 +66,9 @@ export class EditEventPage implements OnInit {
|
||||
public endMinDate = new Date(new Date().getTime() + 15 * 60000).toISOString().slice(0,10)
|
||||
public maxDate: any;
|
||||
public stepHour = 1;
|
||||
public stepMinute = 5;
|
||||
public stepSecond = 5;
|
||||
currentDate = new Date();
|
||||
public stepMinute = 15;
|
||||
public stepSecond = 15;
|
||||
currentDate = this.roundTimeQuarterHour();
|
||||
|
||||
loadedEventAttachments: Attachment[] = [];
|
||||
taskParticipants: any = [];
|
||||
@@ -171,6 +171,39 @@ export class EditEventPage implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
roundTimeQuarterHour() {
|
||||
var timeToReturn = new Date();
|
||||
// var minutes = timeToReturn.getMinutes();
|
||||
var minutes = timeToReturn.getMinutes();
|
||||
var hours = timeToReturn.getHours();
|
||||
|
||||
// console.log("MINUTOS: " +minutes);
|
||||
// console.log("BEFORE MINUTES: " +(Math.round(minutes/15) * 15));
|
||||
|
||||
var m = (Math.round(minutes/15) * 15) % 60;
|
||||
// console.log("AFTER MINUTES: " +m);
|
||||
var h = minutes > 52 ? (hours === 23 ? 0 : ++hours) : hours;
|
||||
|
||||
if (m == 0) {
|
||||
if(minutes > m){
|
||||
m = m + 15;
|
||||
}
|
||||
timeToReturn.setHours(h);
|
||||
timeToReturn.setMinutes(m);
|
||||
}else{
|
||||
if(minutes > m){
|
||||
|
||||
m = m + 15;
|
||||
|
||||
timeToReturn.setHours(h);
|
||||
timeToReturn.setMinutes(m);
|
||||
}else {
|
||||
timeToReturn.setHours(h);
|
||||
timeToReturn.setMinutes(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onSelectedRecurringChanged(ev?:any) {
|
||||
|
||||
this.calculetedLastOccurrence(ev);
|
||||
|
||||
@@ -310,6 +310,24 @@
|
||||
</ion-item>
|
||||
</ion-list>
|
||||
</div>
|
||||
<!--
|
||||
<div >
|
||||
<ion-list class="list">
|
||||
<ion-item>
|
||||
<ion-label>
|
||||
<p class="d-flex ion-justify-content-between">
|
||||
<span class="attach-title-item">Assunto</span>
|
||||
<span class="app-name">appName</span>
|
||||
<span class="close-button text-black cursor-pointer" (click)="removeAttachment(i)" >
|
||||
<ion-icon class="font-20" src="assets/images/icons-delete-25.svg"></ion-icon>
|
||||
</span>
|
||||
</p>
|
||||
<p><span class="span-left">EntidadeOrganicaNome</span><span class="span-right"> document </span></p>
|
||||
</ion-label>
|
||||
</ion-item>
|
||||
</ion-list>
|
||||
</div> -->
|
||||
|
||||
</div>
|
||||
</ion-content>
|
||||
<ion-footer class="ion-no-border d-flex justify-center px-20">
|
||||
|
||||
@@ -218,6 +218,17 @@
|
||||
class=" height-100 flex-column">
|
||||
</app-contacts>
|
||||
|
||||
<!-- <app-contacts
|
||||
(openMessage)="openMessagesPage($event)"
|
||||
(backToChat)="backToChat($event)"
|
||||
(emptyTextDescriptionOpen)="emptyTextDescriptionOpen()"
|
||||
(closeAllDesktopComponents)="closeAllDesktopComponents()"
|
||||
*ngIf="showContacts"
|
||||
[roomId]="roomId"
|
||||
[style.display]="showContacts ? 'flex' : 'none'"
|
||||
class=" height-100 flex-column">
|
||||
</app-contacts> -->
|
||||
|
||||
<app-new-group
|
||||
(addGroupMessage)="openGroupContactsPage($event)"
|
||||
[roomId]="roomId"
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
<ion-list>
|
||||
<ion-item class="item-hover cursor-pointer" lines="none" *ngFor="let event of listToPresent"
|
||||
(click)="goToEvent(event.EventId)"
|
||||
(click)="goToEvent(event)"
|
||||
>
|
||||
<div class="d-flex content-{{loggeduser.Profile}}-{{event.CalendarName}}">
|
||||
|
||||
|
||||
@@ -460,18 +460,15 @@ export class EventsPage implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
goToEvent(eventId: any) {
|
||||
this.router.navigate(['/home/events', eventId, 'events']);
|
||||
goToEvent(event: any) {
|
||||
let navigationExtras: NavigationExtras = { queryParams: { CalendarId: event.CalendarId } }
|
||||
|
||||
|
||||
this.router.navigate(['/home/events', event.EventId, 'agenda'], navigationExtras);
|
||||
}
|
||||
|
||||
goToExpediente(SerialNumber: any) {
|
||||
this.router.navigate(['/home/events/expediente', SerialNumber, 'events']);
|
||||
/* if (this.loggeduser.Profile == 'MDGPR') {
|
||||
this.router.navigate(['/home/events/expediente', SerialNumber, 'events']);
|
||||
}
|
||||
else if (this.loggeduser.Profile == 'PR') {
|
||||
this.router.navigate(['/home/events/expedientes-pr', SerialNumber, 'events']);
|
||||
} */
|
||||
}
|
||||
|
||||
viewExpedientListPage() {
|
||||
|
||||
+2
-2
@@ -199,7 +199,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-div width-100">
|
||||
<!-- <div class="container-div width-100">
|
||||
<div class="ion-item-class-2 d-flex">
|
||||
<div class="ion-icon-class">
|
||||
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
|
||||
@@ -220,7 +220,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div *ngIf="EventRecurrenceType != '-1'" class="container-div width-100">
|
||||
<div class="ion-item-class-2 d-flex">
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class=" align-center justify-center d-flex flex-column width-100">
|
||||
<div *ngIf="SessionStore.hasPin" class="title">Digite o PIN</div>
|
||||
<div *ngIf="!SessionStore.hasPin" class="title">Digite o novo PIN</div>
|
||||
@@ -26,7 +25,7 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="d-flex align-center justify-center">
|
||||
<div class="d-flex align-center justify-center">
|
||||
<div class="circle" (click)="setCode('1')">1</div> <div class="circle" (click)="setCode('2')">2</div> <div class="circle" (click)="setCode('3')">3</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -39,41 +39,9 @@ export class InactivityPage implements OnInit {
|
||||
|
||||
ngOnInit() {
|
||||
|
||||
|
||||
// window.addEventListener('resize', (event) => {
|
||||
// if(this.router.url != '/login') return false
|
||||
|
||||
// if(this.loop == false) {
|
||||
// this.loop = true
|
||||
// this.runloop()
|
||||
// }
|
||||
|
||||
// }, true);
|
||||
|
||||
}
|
||||
|
||||
runloop() {
|
||||
// const containerHeight = 651
|
||||
|
||||
// let circleHeight = document.querySelector('.circle')['offsetHeight']
|
||||
// let circleWidth = document.querySelector('.circle')['offsetWidth']
|
||||
//
|
||||
|
||||
//
|
||||
|
||||
// document.querySelectorAll('.circle').forEach(e=>{
|
||||
// e['style']['height'] = (circleHeight -1 )+'px'
|
||||
// e['style']['width'] = (circleWidth -1 )+'px'
|
||||
// })
|
||||
|
||||
|
||||
// if( window.innerHeight< containerHeight) {
|
||||
// setTimeout(()=>{
|
||||
// this.runloop()
|
||||
// }, 100)
|
||||
// } else {
|
||||
// this.loop = false
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -165,8 +133,8 @@ export class InactivityPage implements OnInit {
|
||||
if(!SessionStore.hasPin) {
|
||||
//
|
||||
this.storePin()
|
||||
this.pinLogin()
|
||||
} else {
|
||||
//
|
||||
this.pinLogin()
|
||||
}
|
||||
}
|
||||
@@ -187,7 +155,7 @@ export class InactivityPage implements OnInit {
|
||||
|
||||
setTimeout(() => {
|
||||
this.clearCode()
|
||||
}, 1000)
|
||||
}, 5000)
|
||||
|
||||
} else {
|
||||
this.toastService._badRequest('Pin incorreto')
|
||||
@@ -222,7 +190,7 @@ export class InactivityPage implements OnInit {
|
||||
}
|
||||
|
||||
|
||||
}, 5000)
|
||||
}, 100)
|
||||
|
||||
}
|
||||
|
||||
@@ -230,28 +198,8 @@ export class InactivityPage implements OnInit {
|
||||
|
||||
storePin() {
|
||||
|
||||
setTimeout(() => {
|
||||
const code = this.code.join('');
|
||||
SessionStore.setPin(code);
|
||||
|
||||
if(this.p.userPermission(this.p.permissionList.Agenda.access) || this.p.userPermission(this.p.permissionList.Gabinete.access)){
|
||||
//When user has got access to Agenda but does not have their own calendar, goes to Agenda
|
||||
if(this.p.userPermission(this.p.permissionList.Agenda.access) && SessionStore.user.OwnerCalendars.length == 0){
|
||||
this.router.navigate(['/home/agenda']);
|
||||
}
|
||||
else{
|
||||
this.router.navigate(['/home/events']);
|
||||
}
|
||||
}
|
||||
//If user has access permission to both Chat and Action, goes to Chat by default.
|
||||
else if((this.p.userPermission(this.p.permissionList.Chat.access) && this.p.userPermission(this.p.permissionList.Actions.access)) || this.p.userPermission(this.p.permissionList.Chat.access)){
|
||||
this.router.navigate(['/home/chat']);
|
||||
}
|
||||
else if(this.p.userPermission(this.p.permissionList.Actions.access)){
|
||||
this.router.navigate(['/home/publications']);
|
||||
}
|
||||
|
||||
}, 5000)
|
||||
const code = this.code.join('');
|
||||
SessionStore.setPin(code);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ import { ClearStoreService } from 'src/app/services/clear-store.service';
|
||||
import { ChangeProfileService } from 'src/app/services/change-profile.service';
|
||||
import { ThemeService } from 'src/app/services/theme.service';
|
||||
import { PermissionService } from 'src/app/services/permission.service';
|
||||
import { PermissionList } from 'src/app/models/permission/permissionList';
|
||||
import { MessageModel, DeleteMessageModel } from '../../models/beast-orm';
|
||||
import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service';
|
||||
import { ChatSystemService } from 'src/app/services/chat/chat-system.service';
|
||||
@@ -158,7 +157,7 @@ export class LoginPage implements OnInit {
|
||||
|
||||
this.getToken();
|
||||
|
||||
this.router.navigateByUrl('/pin', { replaceUrl: true });
|
||||
this.router.navigateByUrl('/home/events', { replaceUrl: true });
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
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"
|
||||
min="{{minDate}}"
|
||||
max="2025">
|
||||
</ion-datetime>
|
||||
|
||||
@@ -43,7 +42,6 @@
|
||||
<input matInput [ngxMatDatetimePicker]="picker1"
|
||||
placeholder="Data inicio*"
|
||||
[formControl]="dateControlStart"
|
||||
[min]="minDate"
|
||||
[disabled]="disabled"
|
||||
>
|
||||
<mat-datepicker-toggle id="new-inicio" matSuffix [for]="picker1"></mat-datepicker-toggle>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
|
||||
<!-- <ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar> -->
|
||||
|
||||
</div>
|
||||
</ion-toolbar>
|
||||
|
||||
@@ -258,10 +258,8 @@ export class SearchPage implements OnInit {
|
||||
|
||||
if(this.type == "Agenda" ){
|
||||
|
||||
|
||||
this.showLoader = true;
|
||||
|
||||
|
||||
this.search.basicSearch(this.searchSubject, this.searchDocumentDate, this.searchSender
|
||||
,this.searchOrganicEntiry, this.searchDocTypeId, '0').subscribe(res=>{
|
||||
|
||||
@@ -287,7 +285,8 @@ export class SearchPage implements OnInit {
|
||||
this.loadWordCloud();
|
||||
|
||||
},error => {
|
||||
this.searchResult = "Registo não encontrado"
|
||||
this.showLoader = false;
|
||||
// this.searchResult = "Registo não encontrado"
|
||||
console.log(error)
|
||||
});
|
||||
}
|
||||
@@ -551,6 +550,11 @@ export class SearchPage implements OnInit {
|
||||
|
||||
this.loadWordCloud();
|
||||
},error => {
|
||||
counter++;
|
||||
|
||||
if(counter ==2){
|
||||
this.showLoader = false;
|
||||
}
|
||||
this.searchResult = "Registo não encontrado"
|
||||
console.log(error)
|
||||
});
|
||||
@@ -586,6 +590,7 @@ export class SearchPage implements OnInit {
|
||||
this.showLoader = false;
|
||||
this.loadWordCloud();
|
||||
},error => {
|
||||
this.showLoader = false;
|
||||
this.searchResult = "Registo não encontrado"
|
||||
console.log(error)
|
||||
});
|
||||
|
||||
@@ -18,6 +18,7 @@ import { ChatMethodsService } from './chat-methods.service';
|
||||
import { AESEncrypt } from '../aesencrypt.service'
|
||||
import { AttachmentsService } from 'src/app/services/attachments.service';
|
||||
import { NetworkServiceService} from 'src/app/services/network-service.service';
|
||||
import { JsonStore } from '../jsonStore.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -95,10 +96,12 @@ export class ChatSystemService {
|
||||
}
|
||||
|
||||
loadChat() {
|
||||
this.ReLoadChat()
|
||||
if(SessionStore.user.ChatData) {
|
||||
this.ReLoadChat()
|
||||
}
|
||||
}
|
||||
|
||||
async ReLoadChat() {
|
||||
private async ReLoadChat() {
|
||||
|
||||
await this.chatService.refreshtoken();
|
||||
await this.restoreUsers();
|
||||
@@ -271,6 +274,7 @@ export class ChatSystemService {
|
||||
}
|
||||
}
|
||||
|
||||
this.loadingWholeList = false
|
||||
await this.storage.set('Rooms', rooms);
|
||||
|
||||
setTimeout(() => {
|
||||
@@ -282,7 +286,6 @@ export class ChatSystemService {
|
||||
this.sortRoomList()
|
||||
}, 10000)
|
||||
|
||||
this.loadingWholeList = false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -400,7 +403,7 @@ export class ChatSystemService {
|
||||
if (setData.name != 'Rocket Cat') {
|
||||
// create room
|
||||
if(!this.roomExist(roomId)) {
|
||||
let room:RoomService = new RoomService(this.RochetChatConnectorService, new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService), this.storage, this.platform, this.sqlservice, this.NativeNotificationService, this.sortService, this.ChatService, this.NfService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this)
|
||||
let room:RoomService = new RoomService(this.RochetChatConnectorService, new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this), this.storage, this.platform, this.sqlservice, this.NativeNotificationService, this.sortService, this.ChatService, this.NfService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this)
|
||||
room.setData(setData)
|
||||
room.receiveMessage()
|
||||
room.getAllUsers = this.getUsers
|
||||
@@ -573,9 +576,14 @@ export class ChatSystemService {
|
||||
})[0]
|
||||
|
||||
if(roomName) {
|
||||
const firstName = capitalizeTxt(roomName.split('.')[0])
|
||||
const lastName = capitalizeTxt(roomName.split('.')[1])
|
||||
return firstName + ' ' + lastName
|
||||
try {
|
||||
const firstName = capitalizeTxt(roomName.split('.')[0])
|
||||
const lastName = capitalizeTxt(roomName.split('.')[1])
|
||||
return firstName + ' ' + lastName
|
||||
} catch(e) {
|
||||
return roomData['membersExcludeMe'][0].name
|
||||
}
|
||||
|
||||
} else if(roomData.name) {
|
||||
return roomData.name
|
||||
} else {
|
||||
|
||||
@@ -12,7 +12,7 @@ import { AESEncrypt } from '../aesencrypt.service'
|
||||
import { HttpEventType } from '@angular/common/http';
|
||||
import { AttachmentsService } from 'src/app/services/attachments.service';
|
||||
import { NetworkServiceService , ConnectionStatus} from 'src/app/services/network-service.service';
|
||||
|
||||
import { ChatSystemService } from './chat-system.service';
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
@@ -67,7 +67,8 @@ export class MessageService {
|
||||
private ChatMethodsService: ChatMethodsService,
|
||||
private AESEncrypt: AESEncrypt,
|
||||
private AttachmentsService: AttachmentsService,
|
||||
private NetworkServiceService: NetworkServiceService) {
|
||||
private NetworkServiceService: NetworkServiceService,
|
||||
private ChatSystemService: ChatSystemService) {
|
||||
}
|
||||
|
||||
setData({customFields = {}, channels, mentions, msg ,rid ,ts, u, t, _id, id, _updatedAt, file, attachments, temporaryData, localReference , viewed = [], received = [], delate = false, delateRequest =false, from }:Message) {
|
||||
@@ -119,6 +120,17 @@ export class MessageService {
|
||||
}
|
||||
}
|
||||
|
||||
if(!this.u.name && this.u.username) {
|
||||
const user = this.ChatSystemService.users.find((u)=> u.username == this.u.username)
|
||||
if(user) {
|
||||
this.u.name = user.name
|
||||
} else if( this.u.username == SessionStore.user.UserName) {
|
||||
this.u.name = SessionStore.user.FullName
|
||||
} else {
|
||||
// console.log(user.username, SessionStore.user.UserName)
|
||||
}
|
||||
}
|
||||
|
||||
this.calDateDuration()
|
||||
}
|
||||
|
||||
@@ -203,7 +215,6 @@ export class MessageService {
|
||||
// console.log('online send')
|
||||
this.RochetChatConnectorService.send(params).then(
|
||||
(ChatMessage: any) => {
|
||||
console.log('response')
|
||||
ChatMessage = ChatMessage.message.result
|
||||
|
||||
this.messageSend = true
|
||||
|
||||
@@ -184,7 +184,7 @@ export class RoomService {
|
||||
}
|
||||
}
|
||||
|
||||
setData({membersExcludeMe, members, u, customFields = {}, id, name, t, lastMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService), _updatedAt }) {
|
||||
setData({membersExcludeMe, members, u, customFields = {}, id, name, t, lastMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService), _updatedAt }) {
|
||||
this.customFields = customFields
|
||||
this.id = id
|
||||
this.name = name
|
||||
@@ -710,10 +710,11 @@ export class RoomService {
|
||||
} else {
|
||||
|
||||
const offlineMessage = await this.prepareMessageCreateIfNotExist({message:ChatMessage})
|
||||
offlineMessage.from = 'Offline'
|
||||
offlineMessage.loadHistory = this.hasLoadHistory
|
||||
|
||||
if(offlineMessage) {
|
||||
offlineMessage.from = 'Offline'
|
||||
offlineMessage.loadHistory = this.hasLoadHistory
|
||||
|
||||
this.messagesLocalReference.push(offlineMessage.localReference)
|
||||
|
||||
offlineMessage?.decryptMessage()
|
||||
@@ -827,7 +828,7 @@ export class RoomService {
|
||||
message = this.fix_updatedAt(message)
|
||||
|
||||
|
||||
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService)
|
||||
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService)
|
||||
wewMessage.setData(message)
|
||||
wewMessage.loadHistory = this.hasLoadHistory
|
||||
|
||||
@@ -884,7 +885,7 @@ export class RoomService {
|
||||
async prepareCreate({message, save = true}): Promise<MessageService> {
|
||||
message = this.fix_updatedAt(message)
|
||||
|
||||
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService)
|
||||
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService)
|
||||
wewMessage.setData(message)
|
||||
wewMessage.loadHistory = this.hasLoadHistory
|
||||
|
||||
@@ -922,7 +923,7 @@ export class RoomService {
|
||||
|
||||
simplePrepareMessage(message) {
|
||||
message = this.fix_updatedAt(message)
|
||||
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService)
|
||||
const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this.ChatSystemService)
|
||||
wewMessage.setData(message)
|
||||
wewMessage.loadHistory = this.hasLoadHistory
|
||||
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-div width-100">
|
||||
<!-- <div class="container-div width-100">
|
||||
<div class="ion-item-class-2">
|
||||
<div class="ion-icon-class">
|
||||
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
|
||||
@@ -239,7 +239,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div *ngIf="eventProcess.workflowInstanceDataFields.OccurrenceType != '-1'"
|
||||
class="container-div width-100">
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
[(ngModel)]="postEvent.EndDate"
|
||||
[max]="maxDate"
|
||||
[disabled]="disabled"
|
||||
[min]="currentDate"
|
||||
[min]="postEvent.StartDate"
|
||||
>
|
||||
<mat-datepicker-toggle id="new-fim" matSuffix [for]="fim"></mat-datepicker-toggle>
|
||||
<ngx-mat-datetime-picker #fim
|
||||
@@ -162,7 +162,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-div d-flex">
|
||||
<!-- <div class="container-div d-flex">
|
||||
<div class="ion-item-class-2 width-100 d-flex">
|
||||
<div class="ion-icon-class">
|
||||
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
|
||||
@@ -184,7 +184,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div *ngIf="postEvent.EventRecurrence.Type != '-1'" class="container-div width-100">
|
||||
<div class="ion-item-class-2 d-flex">
|
||||
|
||||
@@ -46,9 +46,9 @@ export class EditEventPage implements OnInit {
|
||||
public endMinDate = new Date(new Date().getTime() + 15 * 60000).toISOString().slice(0,10)
|
||||
public maxDate: any;
|
||||
public stepHour = 1;
|
||||
public stepMinute = 5;
|
||||
public stepSecond = 5;
|
||||
currentDate = new Date();
|
||||
public stepMinute = 15;
|
||||
public stepSecond = 15;
|
||||
currentDate = this.roundTimeQuarterHour();
|
||||
|
||||
Form: FormGroup;
|
||||
validateFrom = false
|
||||
@@ -216,6 +216,39 @@ export class EditEventPage implements OnInit {
|
||||
}
|
||||
}
|
||||
|
||||
roundTimeQuarterHour() {
|
||||
var timeToReturn = new Date();
|
||||
// var minutes = timeToReturn.getMinutes();
|
||||
var minutes = timeToReturn.getMinutes();
|
||||
var hours = timeToReturn.getHours();
|
||||
|
||||
// console.log("MINUTOS: " +minutes);
|
||||
// console.log("BEFORE MINUTES: " +(Math.round(minutes/15) * 15));
|
||||
|
||||
var m = (Math.round(minutes/15) * 15) % 60;
|
||||
// console.log("AFTER MINUTES: " +m);
|
||||
var h = minutes > 52 ? (hours === 23 ? 0 : ++hours) : hours;
|
||||
|
||||
if (m == 0) {
|
||||
if(minutes > m){
|
||||
m = m + 15;
|
||||
}
|
||||
timeToReturn.setHours(h);
|
||||
timeToReturn.setMinutes(m);
|
||||
}else{
|
||||
if(minutes > m){
|
||||
|
||||
m = m + 15;
|
||||
|
||||
timeToReturn.setHours(h);
|
||||
timeToReturn.setMinutes(m);
|
||||
}else {
|
||||
timeToReturn.setHours(h);
|
||||
timeToReturn.setMinutes(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onSelectedRecurringChanged(ev:any){
|
||||
|
||||
this.calculetedLastOccurrence(ev);
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { Routes, RouterModule } from '@angular/router';
|
||||
|
||||
import { AddUserPage } from './add-user.page';
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: '',
|
||||
component: AddUserPage
|
||||
}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
exports: [RouterModule],
|
||||
})
|
||||
export class AddUserPageRoutingModule {}
|
||||
@@ -0,0 +1,20 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
|
||||
import { IonicModule } from '@ionic/angular';
|
||||
|
||||
import { AddUserPageRoutingModule } from './add-user-routing.module';
|
||||
|
||||
import { AddUserPage } from './add-user.page';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
FormsModule,
|
||||
IonicModule,
|
||||
AddUserPageRoutingModule
|
||||
],
|
||||
declarations: [AddUserPage]
|
||||
})
|
||||
export class AddUserPageModule {}
|
||||
@@ -0,0 +1,9 @@
|
||||
<ion-header>
|
||||
<ion-toolbar>
|
||||
<ion-title>addUser</ion-title>
|
||||
</ion-toolbar>
|
||||
</ion-header>
|
||||
|
||||
<ion-content>
|
||||
|
||||
</ion-content>
|
||||
@@ -0,0 +1,24 @@
|
||||
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
|
||||
import { IonicModule } from '@ionic/angular';
|
||||
|
||||
import { AddUserPage } from './add-user.page';
|
||||
|
||||
describe('AddUserPage', () => {
|
||||
let component: AddUserPage;
|
||||
let fixture: ComponentFixture<AddUserPage>;
|
||||
|
||||
beforeEach(waitForAsync(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ AddUserPage ],
|
||||
imports: [IonicModule.forRoot()]
|
||||
}).compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(AddUserPage);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
}));
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,15 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-add-user',
|
||||
templateUrl: './add-user.page.html',
|
||||
styleUrls: ['./add-user.page.scss'],
|
||||
})
|
||||
export class AddUserPage implements OnInit {
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,6 +16,7 @@ export class AttendeePage implements OnInit {
|
||||
contacts: EventPerson[];
|
||||
showLoader: boolean = false;
|
||||
eventPersons: EventPerson[];
|
||||
inputFilter = ''
|
||||
|
||||
|
||||
@Output() closeComponent = new EventEmitter<any>();
|
||||
@@ -39,10 +40,10 @@ export class AttendeePage implements OnInit {
|
||||
public ThemeService: ThemeService ) {
|
||||
|
||||
this.LtaskParticipants = removeDuplicate(this.taskParticipants);
|
||||
this.LtaskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
|
||||
}
|
||||
this.LtaskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
|
||||
}
|
||||
|
||||
ngOnChanges(){
|
||||
ngOnChanges() {
|
||||
this.LtaskParticipants = removeDuplicate(this.taskParticipants);
|
||||
this.LtaskParticipantsCc = removeDuplicate(this.taskParticipantsCc);
|
||||
}
|
||||
@@ -63,7 +64,6 @@ export class AttendeePage implements OnInit {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
save() {
|
||||
|
||||
@@ -107,7 +107,7 @@ export class AttendeePage implements OnInit {
|
||||
this.setContactWithClose();
|
||||
}
|
||||
|
||||
close(){
|
||||
close() {
|
||||
this.closeComponent.emit();
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ export class AttendeePage implements OnInit {
|
||||
});
|
||||
|
||||
// if to show
|
||||
if(undefined != result2){
|
||||
if(undefined != result2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ export class AttendeePage implements OnInit {
|
||||
|
||||
}
|
||||
|
||||
remove(itm: EventPerson){
|
||||
remove(itm: EventPerson) {
|
||||
|
||||
if(this.adding == "intervenient"){
|
||||
|
||||
@@ -178,7 +178,17 @@ export class AttendeePage implements OnInit {
|
||||
|
||||
}
|
||||
|
||||
|
||||
sort(data: []) {
|
||||
return data.sort(function (a: any, b: any) {
|
||||
if (a.Name > b.Name) {
|
||||
return -1;
|
||||
}
|
||||
if (b.Name > a.Name) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}).reverse()
|
||||
}
|
||||
|
||||
async fetchContacts(filter: string) {
|
||||
this.showLoader = true;
|
||||
@@ -196,7 +206,7 @@ export class AttendeePage implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
this.contacts = result;
|
||||
this.contacts = this.sort(result as any);
|
||||
this.showLoader = false;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-div width-100">
|
||||
<!-- <div class="container-div width-100">
|
||||
<div class="ion-item-class-2">
|
||||
<div class="ion-icon-class">
|
||||
<ion-icon slot="start" src="assets/images/icons-refresh.svg"></ion-icon>
|
||||
@@ -183,7 +183,7 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div *ngIf="eventProcess.workflowInstanceDataFields.OccurrenceType != '-1'"
|
||||
class="container-div width-100">
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button class="btn-cancel" shape="round" >Adicionar</button>
|
||||
<button (click)="leaveGroup()" class="btn-cancel" shape="round" >Sair do Grupo</button>
|
||||
<button *ngIf="isAdmin" (click)="openChangeGroupName()" class="btn-cancel" shape="round" >Alterar nome do grupo</button>
|
||||
<div class="solid"></div>
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
<div class="buttons" *ngIf="task.activityInstanceName == 'Tarefa de Parecer'">
|
||||
<button (click)="openDarParecer(task)" class="btn-cancel" shape="round" >Dar o meu Parecer</button>
|
||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
||||
<button *ngIf="p.userPermission([p.permissionList.Agenda.access])" (click)="openBookMeetingModal(task)" class="btn-cancel" shape="round" >Marcar Reunião</button>
|
||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
||||
<button (click)="openNewGroupPage()" class="btn-cancel" shape="round" *ngIf="task.WorkflowName == 'Pedido de Parecer do Presidente'">Iniciar Conversa</button>
|
||||
<button (click)="cancel()" class="btn-cancel" shape="round" >Cancelar</button>
|
||||
@@ -55,8 +54,5 @@
|
||||
<button (click)="sendExpedienteToPending()" *ngIf="task.Status != 'Pending'" class="btn-cancel" shape="round" >Enviar para Pendentes</button>
|
||||
<button (click)="cancel()" class="btn-cancel" shape="round" >Cancelar</button>
|
||||
</div>
|
||||
<!-- <div *ngIf="task.WorkflowName == 'Pedido de Parecer do Presidente'" class="buttons">
|
||||
<button (click)="openNewGroupPage()" class="btn-cancel" shape="round" >Iniciar Conversa</button>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
placeholder="Data inicio*"
|
||||
[(ngModel)]="folder.DateBegin"
|
||||
[disabled]="disabled"
|
||||
[min]="currentDate"
|
||||
>
|
||||
<mat-datepicker-toggle id="new-inicio" matSuffix [for]="picker1"></mat-datepicker-toggle>
|
||||
<ngx-mat-datetime-picker #picker1
|
||||
@@ -83,7 +82,6 @@
|
||||
placeholder="Data de fim*"
|
||||
[(ngModel)]="folder.DateEnd"
|
||||
[disabled]="disabled"
|
||||
[min]="currentDate"
|
||||
>
|
||||
<mat-datepicker-toggle id="new-fim" matSuffix [for]="picker2"></mat-datepicker-toggle>
|
||||
<ngx-mat-datetime-picker #picker2
|
||||
|
||||
@@ -63,8 +63,15 @@ export class NewActionPage implements OnInit {
|
||||
}
|
||||
|
||||
get dateValid() {
|
||||
if (window.innerWidth > 700) {
|
||||
return new Date(this.folder.DateBegin).toLocaleString('pt') < new Date(this.folder.DateEnd).toLocaleString("pt")? ['ok'] : []
|
||||
var validado: boolean;
|
||||
|
||||
if (window.innerWidth <= 800) {
|
||||
if ((this.folder.DateBegin < this.folder.DateEnd) && (new Date(this.folder.DateBegin).getTime() > this.currentDate.getTime())) {
|
||||
validado = true;
|
||||
}else{
|
||||
validado = false;
|
||||
}
|
||||
return validado == true ? ['ok']: [];
|
||||
} else {
|
||||
return ['ok']
|
||||
}
|
||||
|
||||
@@ -56,6 +56,11 @@ class SessionService {
|
||||
return this._user.Inactivity
|
||||
}
|
||||
|
||||
|
||||
isUserActive() {
|
||||
return this._user.Inactivity
|
||||
}
|
||||
|
||||
setInativity(value: boolean) {
|
||||
this._user.Inactivity = value
|
||||
this._user.UrlBeforeInactivity = ''
|
||||
|
||||
Reference in New Issue
Block a user