This commit is contained in:
Eudes Inácio
2021-08-26 16:33:32 +01:00
41 changed files with 369 additions and 551 deletions
@@ -4,7 +4,6 @@ import { EventoAprovacaoStore } from 'src/app/store/eventoaprovacao-store.servic
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
import { PendentesStore } from 'src/app/store/pendestes-store.service';
import { PedidosStore } from 'src/app/store/pedidos-store.service';
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
import { DeplomasStore } from '../store/deplomas.service';
+8
View File
@@ -1,4 +1,5 @@
import { Injectable } from '@angular/core';
import { CustomTaskPipe } from '../pipes/custom-task.pipe';
import { ProcessesService } from '../services/processes.service';
@Injectable({
@@ -20,6 +21,8 @@ export class DeplomaService {
]
}
customTaskPipe = new CustomTaskPipe()
constructor(
private processes: ProcessesService,
) { }
@@ -83,4 +86,9 @@ export class DeplomaService {
return this.processes.CompleteTask(body)
}
async getList() {
}
}
+53 -4
View File
@@ -1,8 +1,11 @@
import { Injectable } from '@angular/core';
import { customTask, fullTask } from '../models/dailyworktask.model';
import { AttachmentList } from '../models/Excludetask';
import { PermissionService } from '../OtherService/permission.service';
import { CustomTaskPipe } from '../pipes/custom-task.pipe';
import { ProcessesService } from '../services/processes.service';
import { DespachoStore } from '../store/despacho-store.service';
import { LoaderService } from 'src/app/store/loader.service'
@Injectable({
providedIn: 'root'
})
@@ -20,10 +23,14 @@ export class DespachoService {
'Tarefa do Despacho': 'Tarefa de Despacho' | 'Concluir' | 'rexecucao'
}
constructor(
customTaskPipe = new CustomTaskPipe()
despachoStore = DespachoStore;
constructor(
private processes: ProcessesService,
public p: PermissionService
) { }
public p: PermissionService,
public LoaderService: LoaderService
) { }
arquivar(note:string, documents:AttachmentList, serialnumber) {
@@ -181,4 +188,46 @@ export class DespachoService {
return this.processes.CompleteTask(body)
}
async getList({updateStore = false}): Promise<customTask[]> {
this.LoaderService.push({})
let result: fullTask[] = []
try {
result = await this.processes.GetTasksList("Despacho", false).toPromise();
} catch (error) {
} finally {
this.LoaderService.pop({})
}
result = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
let despachoList: customTask[] = new Array();
result.forEach((element, index) => {
let task: customTask = this.customTaskPipe.transform(element);
despachoList.push(task);
});
despachoList = this.sortArrayISODate(despachoList).reverse();
if(updateStore) {
this.despachoStore.reset(despachoList);
}
return despachoList
}
sortArrayISODate(myArray: any) {
return myArray.sort(function(a, b) {
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
});
}
}
+3 -3
View File
@@ -3,14 +3,14 @@
<ion-tab-button tab="events">
<!-- <ion-icon name="home"></ion-icon> -->
<ion-icon class="nav-icon" src="assets/images/icons-nav-home.svg"></ion-icon>
<ion-badge color="danger">{{toDayEventStorage.eventsList.length}}</ion-badge>
<ion-badge color="danger">{{toDayEventStorage.eventsList.length + expedienteGdStore.count}}</ion-badge>
<ion-label>Início</ion-label>
</ion-tab-button>
<ion-tab-button tab="agenda">
<!-- <ion-icon name="calendar"></ion-icon> -->
<ion-icon class="nav-icon" src="assets/images/icons-nav-calendar.svg"></ion-icon>
<ion-label class="overflow-visible">Agenda</ion-label>
<ion-label style="margin-bottom: 2px;" class="overflow-visible">Agenda</ion-label>
</ion-tab-button>
<ion-tab-button tab="gabinete-digital">
<!-- <ion-icon name="file-tray-stacked"></ion-icon> -->
@@ -21,7 +21,7 @@
</ion-tab-button>
<ion-tab-button tab="publications">
<ion-icon class="nav-icon" src="assets/images/icons-nav-actions.svg"></ion-icon>
<ion-label 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 tab="chat">
<ion-icon class="nav-icon" src="assets/images/icons-nav-chat-inactive.svg"></ion-icon>
+17 -10
View File
@@ -13,6 +13,8 @@ import { DocumentCounterService } from 'src/app/OtherService/document-counter.se
import { PermissionService } from '../OtherService/permission.service';
import { TotalDocumentStore } from '../store/total-document.service';
import { connection } from '../services/socket/synchro.service';
import { DespachoService } from '../Rules/despacho.service';
import { ExpedienteGdStore } from '../store/expedientegd-store.service';
// import { NetworkService } from '../services/network.service';
@@ -45,6 +47,7 @@ export class HomePage implements OnInit {
toDayEventStorage = ToDayEventStorage
totalDocumentStore = TotalDocumentStore
expedienteGdStore = ExpedienteGdStore
adding: "intervenient" | "CC" = "intervenient";
mobileComponent = {
@@ -69,7 +72,8 @@ export class HomePage implements OnInit {
connection = connection
constructor(private zone: NgZone,
constructor(
private zone: NgZone,
private router: Router,
public modalCtrl: AlertController,
private notificationsService: NotificationsService,
@@ -77,12 +81,15 @@ export class HomePage implements OnInit {
private activeroute: ActivatedRoute,
private webnotification: WebNotificationsService,
public p: PermissionService,
public documentCounterService: DocumentCounterService) {
public documentCounterService: DocumentCounterService,
private despachoRule: DespachoService) {
this.router.events.subscribe((val) => {
document.querySelectorAll('ion-modal').forEach((e: any) => e.remove())
});
this.updateList()
// if (typeof Worker !== 'undefined') {
// // Create a new
@@ -100,14 +107,6 @@ export class HomePage implements OnInit {
//this.folderId = this.navParams.get('folderId');
}
this.notificationsService.registerCallback(
'Create Depacho',
() =>{
this.refreshing()
}
)
}
refreshing() {
@@ -164,8 +163,16 @@ export class HomePage implements OnInit {
});
}
}
}
updateList() {
this.notificationsService.registerCallback(
'despachos',
() => {
this.despachoRule.getList({updateStore: true})
}
)
}
@@ -287,6 +287,8 @@ export class CreateProcessPage implements OnInit {
this.modalController.dismiss();
} catch (error) {
this.toastService.badRequest('Processo não efectuado');
} finally {
loader.remove()
}
+41 -34
View File
@@ -1,5 +1,4 @@
<ion-content class=" bg-blue">
<ion-header class=" bg-blue ion-no-border">
<div class="profile-header width-100">
<div class="div-logo d-md-none">
<div class="logo height-fit-content">
@@ -10,9 +9,10 @@
<ion-icon class="icon" src="assets/images/icons-search-close.svg"></ion-icon>
</div>
</div>
</ion-header>
<ion-header class=" bg-blue ion-no-border">
<div class="profile-content">
<div class="profile-title d-flex justify-content-center width-100">
<ion-label >{{loggeduser.RoleDescription}}</ion-label>
</div>
@@ -28,39 +28,46 @@
</ion-buttons>
</div>
<div class="line"></div>
</div>
<div class="notifications-content">
<ion-label>{{notificationdata.length}} novas notificações</ion-label>
<ion-list>
<div class="item cursor-pointer ion-no-padding ion-no-margin" lines="none"
*ngFor = "let item of notificationdata; let i = index"
(click)="notificatinsRoutes(item.index,item.Service,item.Object,item.IdObject,item.FolderId)"
>
<div class="item-conten-{{item.Service}}-{{item.TypeAgenda}}-{{item.Role}}">
<div class="notification-item">
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'agenda'" src="assets/images/icons-default-agenda.svg" >
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'gabinete-digital'" src="assets/images/icons-correspondencias.svg" >
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'accoes'" src="assets/images/icons-nav-accoes-active.svg" >
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'chat'" src="assets/images/icons-nav-agenda-active.svg" >
</div>
</ion-header>
<ion-content class=" bg-blue">
<div class="d-flex flex-column height-100 overflow-auto-y">
<div class="notifications-content">
<ion-list>
<div class="item cursor-pointer ion-no-padding ion-no-margin" lines="none"
*ngFor = "let item of notificationdata; let i = index"
(click)="notificatinsRoutes(item.index,item.Service,item.Object,item.IdObject,item.FolderId)"
>
<div class="item-conten-{{item.Service}}-{{item.TypeAgenda}}-{{item.Role}}">
<div class="notification-item">
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'agenda'" src="assets/images/icons-default-agenda.svg" >
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'gabinete-digital'" src="assets/images/icons-correspondencias.svg" >
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'accoes'" src="assets/images/icons-nav-accoes-active.svg" >
<img class="notification-icon" slot="end" *ngIf = "item.Service == 'chat'" src="assets/images/icons-nav-agenda-active.svg" >
</div>
<div class="approve-event-time">
<p *ngIf = "item.Service == 'agenda'">{{item.dateInit}}</p>
<p *ngIf = "item.Service == 'agenda'">{{item.dateEnd}}</p>
</div>
<div class="approve-event-detail">
<p *ngIf = "item.Service == 'agenda'">{{item.Location}}</p>
<h3 id="profile-title">{{item.alert}}</h3>
<p *ngIf = "item.Service != 'agenda'">{{item.desc}}</p>
</div>
<!-- <div class="notification-label-MD-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000011'" ></div>
<div class="notification-label-MD-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000011'" ></div>
<div class="notification-label-PR-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000014'" ></div>
<div class="notification-label-PR-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000014'" ></div> -->
</div>
<div class="approve-event-time">
<p *ngIf = "item.Service == 'agenda'">{{item.dateInit}}</p>
<p *ngIf = "item.Service == 'agenda'">{{item.dateEnd}}</p>
</div>
<div class="approve-event-detail">
<p *ngIf = "item.Service == 'agenda'">{{item.Location}}</p>
<h3 id="profile-title">{{item.alert}}</h3>
<p *ngIf = "item.Service != 'agenda'">{{item.desc}}</p>
</div>
<!-- <div class="notification-label-MD-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000011'" ></div>
<div class="notification-label-MD-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000011'" ></div>
<div class="notification-label-PR-official" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'official' && item.Role == '100000014'" ></div>
<div class="notification-label-PR-pessoal" *ngIf = "item.Service == 'agenda' && item.TypeAgenda == 'pessoal' && item.Role == '100000014'" ></div> -->
</div>
</div>
</ion-list>
</ion-list>
</div>
</div>
</ion-content>
-2
View File
@@ -3,7 +3,6 @@
// background-color: #0782c9;
padding: 20px 20px;
border: 0!important;
overflow: auto;
.div-logo{
background: transparent;
@@ -67,7 +66,6 @@ ion-list{
.notifications-content{
padding: 0px 20px;
.item{
display: flex;
border-radius: 15px;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07);
border: solid 1px #e9e9e9;
+16
View File
@@ -0,0 +1,16 @@
export interface ExpedienteFullTaskWorkflowInstanceDataFields {
FolderID: number;
Sender: string;
Subject: string;
Status: string;
}
export interface ExpedienteFullTask {
serialNumber: string;
taskStartDate: string;
workflowDisplayName: string;
activityInstanceName: string;
totalDocuments: number;
workflowInstanceDataFields: ExpedienteFullTaskWorkflowInstanceDataFields;
}
+14
View File
@@ -113,4 +113,18 @@ export interface expedienteTask {
DispatchNumber: any
AttachmentsProcessLastInstanceID: any
InstanceID: any
}
export interface ExpedienteTask {
SerialNumber: string
Senders : string
CreateDate : string
DocumentsQty : number
WorkflowName : string
activityInstanceName : string
Status : string
taskStartDate: string
Subject: string
}
+5 -5
View File
@@ -11,8 +11,8 @@
<p *ngIf="totalEvent!=1"class="event-number p-small ion-text-center"> <strong>{{totalEvent}}</strong> eventos agendados para hoje</p>
</ion-label>
<div class="next-meeting">
<div class="meeting-time">{{currentHoursMinutes | date: 'HH:mm'}}</div>
<div *ngIf="currentEvent" class="meeting-description"> "{{currentEvent}}"</div>
<div class="meeting-time" *ngIf="currentHoursMinutes">{{currentHoursMinutes | date: 'HH:mm'}}</div>
<div class="meeting-description" *ngIf="currentEvent"> "{{currentEvent}}"</div>
</div>
</ion-header>
@@ -94,7 +94,7 @@
</div>
<div class="content">
<ion-list>
<ion-item class="cursor-pointer" lines="none" *ngFor = "let task of expedienteStorage.list"
<ion-item class="cursor-pointer" lines="none" *ngFor = "let task of expedienteGdStore.list"
(click)="goToExpediente(task.serialNumber)">
<div class="item-exp d-flex">
<div class="schedule-date">
@@ -102,8 +102,8 @@
<div class="time-start">{{task.taskStartDate | date: 'HH:mm'}}</div>
</div>
<div class="schedule-details pointer">
<div class="description">{{ task.workflowInstanceDataFields.Subject }}</div>
<div class="location">{{ task.workflowInstanceDataFields.Sender }}</div>
<div class="description">{{ task.Subject }}</div>
<div class="location">{{ task.Senders }}</div>
</div>
</div>
</ion-item>
+13 -19
View File
@@ -13,8 +13,9 @@ import { ProcessesService } from '../../services/processes.service';
import { DailyWorkTask } from '../../models/dailyworktask.model';
import { User } from 'src/app/models/user.model';
import { ToDayEventStorage } from 'src/app/store/to-day-event-storage.service';
import { ExpedienteStorage } from 'src/app/store/expediente-storage-service.service';
import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
@Component({
selector: 'app-events',
@@ -62,15 +63,16 @@ export class EventsPage implements OnInit {
// shared data
toDayEventStorage = ToDayEventStorage
expedienteStorage = ExpedienteStorage
expedienteGdStore = ExpedienteGdStore
expedienteTaskPipe = new ExpedienteTaskPipe()
@Output() openExpedientListPage:EventEmitter<any> = new EventEmitter<any>();
loggeduser: User;
existingScreenOrientation: string;
pdfSrc = "https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf";
constructor(
private eventService: EventsService,
private router: Router,
@@ -330,21 +332,13 @@ export class EventsPage implements OnInit {
}
LoadList() {
switch (this.loggeduser.Profile) {
case 'MDGPR':
this.processes.GetTasksList("Expediente", false).subscribe(result => {
console.log(result);
this.expedienteStorage.reset(result)
});
break;
case 'PR':
this.processes.GetTasksList("Expediente", false).subscribe(result => {
this.expedienteStorage.reset(result)
});
break;
default:
break;
}
this.processes.GetTaskListExpediente(false).subscribe(result => {
console.log("Expediente", result);
const ExpedienteTask = result.map( e=> this.expedienteTaskPipe.transform(e))
this.expedienteGdStore.reset(ExpedienteTask)
});
}
sortArrayISODate(myArray: any){
@@ -26,14 +26,14 @@
refreshingText="A actualizar...">
</ion-refresher-content>
</ion-refresher>
<div >
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
<div class="height-100">
<ion-list>
<div
class="expediente ion-no-padding ion-no-margin cursor-pointer"
*ngFor = "let task of despachospagestore.list; let i = index"
*ngFor = "let task of despachoStore.list; let i = index"
(click)="GoToDespacho(task.SerialNumber)"
>
<!-- [routerLink]="['/home/gabinete-digital/expediente',task.SerialNumber]" -->
@@ -68,13 +68,13 @@
</div>
<div
*ngIf="!skeletonLoader && despachospagestore.list.length == 0 && despachospagestore.list.length == 0"
*ngIf="!skeletonLoader && despachoStore.list.length == 0"
class="empty-list d-flex height-100 align-center justify-content-center"
>
<span>Lista vazia</span>
</div>
<div *ngIf="skeletonLoader && despachospagestore.list.length == 0">
<div *ngIf="skeletonLoader && despachoStore.list.length == 0">
<ion-list>
<ion-item>
@@ -1,12 +1,7 @@
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { CalendarComponent } from 'ionic2-calendar';
import { customTask, DailyWorkTask } from '../../../models/dailyworktask.model';
import { ProcessesService } from 'src/app/services/processes.service';
import { ModalController } from '@ionic/angular';
import { AlertService } from 'src/app/services/alert.service';
import { AuthService } from 'src/app/services/auth.service';
import { Component, OnInit } from '@angular/core';
import { NavigationStart, Router } from '@angular/router';
import { DespachoPageStore } from 'src/app/store/despachos-page-store.service';
import { DespachoService } from 'src/app/Rules/despacho.service';
import { DespachoStore } from 'src/app/store/despacho-store.service';
@Component({
selector: 'app-despachos',
@@ -15,43 +10,17 @@ import { DespachoPageStore } from 'src/app/store/despachos-page-store.service';
})
export class DespachosPage implements OnInit {
//profile:string;
@ViewChild(CalendarComponent) myCal: CalendarComponent;
taskslist:DailyWorkTask[] = [];
despachoList:any[] = [];
deferimentoList:DailyWorkTask[] = [];
taskList:customTask[] = [];
taskType: string;
serialNumber:string;
totalDocs:any;
@Input() profile:string;
segment:string;
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
loadedAttachments:any;
dicIndex = 0;
inicial = false
skeletonLoader = true
despachospagestore = DespachoPageStore;
despachoStore = DespachoStore;
constructor (
private processes:ProcessesService,
private modalController: ModalController,
private alertService: AlertService,
private authService: AuthService,
private router: Router,
) {
this.profile = 'mdgpr';
private despachoRule: DespachoService
) {
}
ngOnInit() {
//Inicializar segment
this.segment = "despachos";
const location = window.location
const pathname = location.pathname + location.search
@@ -80,50 +49,13 @@ export class DespachosPage implements OnInit {
this.LoadList();
}
openExpedientDetailPage(data) {
this.openExpedientDetail.emit(data);
}
async LoadList() {
this.skeletonLoader = true
let result = await this.processes.GetTasksList("Despacho", false).toPromise();
//let despachos = result.reverse().filter(data => data.activityInstanceName == "Despacho (Paralelo)");
this.despachoList = []
this.skeletonLoader = false
await result.filter(data => data.workflowInstanceDataFields.Status == "Active").forEach( (element, index) => {
let date = new Date(element.taskStartDate);
date.setMonth(date.getMonth() + 1);
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
let task = {
"SerialNumber": element.serialNumber,
"Folio": element.workflowInstanceDataFields.Subject,
"Senders": element.workflowInstanceDataFields.Sender,
"CreateDate": taskDate,
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
"Remetente": element.workflowInstanceDataFields.Remetente,
"DocumentsQty": element.totalDocuments,
"DocId": element.workflowInstanceDataFields.DispatchDocId,
"WorkflowName": element.workflowDisplayName,
"activityInstanceName": element.activityInstanceName,
}
this.despachoList.push(task)
});
this.despachoList = this.sortArrayISODate(this.despachoList).reverse()
this.despachospagestore.reset(this.despachoList);
await this.despachoRule.getList({updateStore: true})
}
sortArrayISODate(myArray: any) {
return myArray.sort(function(a, b) {
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
});
get skeletonLoader(): boolean {
return this.despachoRule.LoaderService.loading
}
doRefresh(event) {
@@ -139,9 +71,6 @@ export class DespachosPage implements OnInit {
this.router.navigate(['/home/gabinete-digital/despachos',serialNumber,'gabinete-digital']);
}
docIndex(index: number) {
this.dicIndex = index;
}
goBack() {
this.router.navigate(['/home/gabinete-digital']);
@@ -34,13 +34,13 @@
<ion-list>
<div
class="expediente ion-no-padding ion-no-margin cursor-pointer"
*ngFor = "let task of expedienteStorage.list"
*ngFor = "let task of expedienteGdStore.list"
(click)="goToExpediente(task.SerialNumber)"
>
<div class="item width-100">
<div class="exp-top-detail">
<div class="subject">
<ion-label>{{ task.Folio }}</ion-label>
<ion-label>{{ task.Subject }}</ion-label>
</div>
<div class="exp-icon">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
@@ -65,13 +65,13 @@
</ion-list>
<div
*ngIf="!skeletonLoader && expedienteStorage.list.length == 0 && expedienteStorage.list.length == 0"
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
class="empty-list d-flex height-100 align-center justify-content-center"
>
<span>Lista vazia</span>
</div>
<div *ngIf="skeletonLoader && expedienteStorage.list.length == 0">
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
<ion-list>
<ion-item>
@@ -1,9 +1,9 @@
import { Component, OnInit } from '@angular/core';
import { NavigationStart, Router } from '@angular/router';
import { DailyWorkTask } from '../../../models/dailyworktask.model';
import { ProcessesService } from 'src/app/services/processes.service';
import { ToastService } from 'src/app/services/toast.service';
import { ExpedienteStorage } from 'src/app/store/expediente-storage-service.service';
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
@Component({
selector: 'app-expediente',
@@ -17,17 +17,17 @@ export class ExpedientePage implements OnInit {
//profile:string;
showLoader:boolean;
taskslist:DailyWorkTask[] = [];
taskslist = [];
serialNumber:string;
expedienteStorage = ExpedienteStorage
expedienteGdStore = ExpedienteGdStore
expedienteTaskPipe = new ExpedienteTaskPipe()
constructor(
private processes:ProcessesService,
private router: Router,
private toastService: ToastService
) {
}
) {}
ngOnInit() {
@@ -52,39 +52,25 @@ export class ExpedientePage implements OnInit {
this.skeletonLoader = true
try {
const expediente: object[] = await this.processes.GetTasksList("Expediente", false).toPromise()
const expediente: object[] = await this.processes.GetTaskListExpediente(false).toPromise()
const result = expediente
this.taskslist = new Array();
let res = result.reverse().filter((data: any) => data.workflowInstanceDataFields.Status == "Active");
res.forEach((element: any) => {
let date = new Date(element.taskStartDate);
date.setMonth(date.getMonth() + 1);
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
let task: DailyWorkTask = {
"SerialNumber": element.serialNumber,
"Folio": element.workflowInstanceDataFields.Subject,
"Senders": element.workflowInstanceDataFields.Sender,
"CreateDate": taskDate,
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
"Remetente": element.workflowInstanceDataFields.Remetente,
"DocumentsQty": element.totalDocuments,
"WorkflowName": element.workflowDisplayName,
"activityInstanceName": element.activityInstanceName,
"Status": element.workflowInstanceDataFields.Status,
}
let task = this.expedienteTaskPipe.transform(element)
this.taskslist.push(task);
});
console.log(this.taskslist);
this.expedienteStorage.reset(this.taskslist);
this.skeletonLoader = false;
this.expedienteGdStore.reset(this.taskslist);
} catch (error) {
this.toastService.badRequest('Processo não encontrado')
this.goBack()
} finally {
this.skeletonLoader = false;
}
}
@@ -30,7 +30,7 @@
<ion-list>
<div
class="expediente ion-no-padding ion-no-margin cursor-pointer"
*ngFor = "let task of expedienteprstore.list"
*ngFor = "let task of expedienteGdStore.list"
(click)="goToExpediente(task.SerialNumber)"
>
<div class="item width-100">
@@ -62,14 +62,14 @@
</div>
<div
*ngIf="!skeletonLoader && expedienteprstore.list.length == 0 && expedienteprstore.list.length == 0"
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
class="empty-list d-flex height-100 align-center justify-content-center"
>
<span>Lista vazia</span>
</div>
<!-- Skeleton loader -->
<div *ngIf="skeletonLoader && expedienteprstore.list.length == 0">
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
<ion-list>
<ion-item>
@@ -8,8 +8,9 @@ import { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/
import { AlertService } from 'src/app/services/alert.service';
import { User } from 'src/app/models/user.model';
import { AuthService } from 'src/app/services/auth.service';
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
import { Location } from '@angular/common'
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
@Component({
selector: 'app-expedientes-pr',
@@ -20,7 +21,7 @@ export class ExpedientesPrPage implements OnInit {
@ViewChild(CalendarComponent) myCal: CalendarComponent;
taskslist:DailyWorkTask[] = [];
taskslist= [];
serialNumber:string;
showLoader:boolean;
@@ -28,7 +29,8 @@ export class ExpedientesPrPage implements OnInit {
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
skeletonLoader = true
expedienteprstore = ExpedienteprStore;
expedienteGdStore = ExpedienteGdStore;
expedienteTaskPipe = new ExpedienteTaskPipe()
constructor(
private processes:ProcessesService,
@@ -64,32 +66,18 @@ export class ExpedientesPrPage implements OnInit {
LoadList() {
this.skeletonLoader = true
this.processes.GetTasksList("Expediente", false).subscribe(result => {
this.processes.GetTaskListExpediente(false).subscribe(result => {
console.log(result);
this.skeletonLoader = false
this.showLoader =false
this.taskslist = new Array();
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
res.forEach(element => {
let date = new Date(element.taskStartDate);
date.setMonth(date.getMonth() + 1);
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
let task: DailyWorkTask = {
"SerialNumber": element.serialNumber,
"Folio": element.workflowInstanceDataFields.Subject,
"Senders": element.workflowInstanceDataFields.Sender,
"CreateDate": taskDate,
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
"Remetente": element.workflowInstanceDataFields.Remetente,
"DocumentsQty": element.totalDocuments,
"WorkflowName": element.workflowDisplayName,
"activityInstanceName": element.activityInstanceName,
"Status": element.workflowInstanceDataFields.Status,
}
this.taskslist.push(task);
});
let task = this.expedienteTaskPipe.transform(element)
this.taskslist.push(task);
});
console.log(this.taskslist);
this.expedienteprstore.reset(this.taskslist);
this.expedienteGdStore.reset(this.taskslist);
this.skeletonLoader = false
})
}
@@ -1,6 +1,5 @@
import { Component, DoCheck, OnInit, ViewChild } from '@angular/core';
import { ProcessesService } from 'src/app/services/processes.service';
import { AlertService } from 'src/app/services/alert.service';
import { ModalController } from '@ionic/angular';
import { ActivatedRoute, NavigationEnd, NavigationExtras, Router } from '@angular/router';
import { AuthService } from 'src/app/services/auth.service';
@@ -13,7 +12,6 @@ import { EventoAprovacaoStore } from 'src/app/store/eventoaprovacao-store.servic
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
import { PendentesStore } from 'src/app/store/pendestes-store.service';
import { PedidosStore } from 'src/app/store/pedidos-store.service';
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
import { DespachosprStore } from 'src/app/store/despachospr-store.service';
import { PermissionService } from 'src/app/OtherService/permission.service';
import { removeDuplicate } from 'src/plugin/removeDuplicate.js'
@@ -21,6 +19,8 @@ import { WaitForDomService } from 'src/app/services/dom/wait-for-dom.service';
import { TotalDocumentStore } from 'src/app/store/total-document.service';
import { DeplomasStore } from 'src/app/store/deplomas.service';
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
import { NotificationsService } from 'src/app/services/notifications.service';
import { DespachoService } from 'src/app/Rules/despacho.service';
@Component({
selector: 'app-gabinete-digital',
@@ -116,7 +116,9 @@ export class GabineteDigitalPage implements OnInit, DoCheck {
private router: Router,
authService: AuthService,
public p: PermissionService,
public waitForDomService: WaitForDomService
public waitForDomService: WaitForDomService,
private notificationsService: NotificationsService,
private despachoRule: DespachoService
) {
this.loggeduser = authService.ValidatedUser;
@@ -450,19 +452,15 @@ export class GabineteDigitalPage implements OnInit, DoCheck {
this.showLoader = true;
let allPreocesses_ = await this.processesbackend.GetTasksList("", false).toPromise();
this.count_all_processes = Object.keys(allPreocesses_).length;
let count_all_processes = Object.keys(allPreocesses_).length;
this.totalDocumentStore.resetCount(count_all_processes)
let expedientes = await this.processesbackend.GetTasksList("Expediente", false).toPromise();
let expedientes = await this.processesbackend.GetTaskListExpediente(false).toPromise();
expedientes = expedientes.filter(data => data.workflowInstanceDataFields.Status == "Active")
this.count_exp_dailywork = Object.keys(expedientes).length;
this.expedientegbstore.count = this.count_exp_dailywork;
this.expedientegbstore.reset(expedientes)
let despachos = await this.processesbackend.GetTasksList("Despacho", false).toPromise();
despachos = despachos.filter(data => data.workflowInstanceDataFields.Status == "Active")
this.count_desp_dailywork = Object.keys(despachos).length;
this.despachoStore.count = this.count_desp_dailywork
let despachos = await this.despachoRule.getList({updateStore: true})
this.despachoStore.reset(despachos)
let pareceres = await this.processesbackend.GetTasksList("Pedido de Parecer", false).toPromise();
@@ -0,0 +1,8 @@
import { ExpedienteTaskPipe } from './expediente-task.pipe';
describe('ExpedienteTaskPipe', () => {
it('create an instance', () => {
const pipe = new ExpedienteTaskPipe();
expect(pipe).toBeTruthy();
});
});
+28
View File
@@ -0,0 +1,28 @@
import { Pipe, PipeTransform } from '@angular/core';
import { ExpedienteTask } from '../models/dailyworktask.model';
import { ExpedienteFullTask } from '../models/Expediente';
@Pipe({
name: 'expedienteTask'
})
export class ExpedienteTaskPipe implements PipeTransform {
transform(fullTask: ExpedienteFullTask): ExpedienteTask {
let date = new Date(fullTask.taskStartDate);
date.setMonth(date.getMonth() + 1);
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
return {
"SerialNumber": fullTask.serialNumber,
"taskStartDate": fullTask.taskStartDate,
"Subject": fullTask.workflowInstanceDataFields.Subject,
"Senders": fullTask.workflowInstanceDataFields.Sender,
"CreateDate": taskDate,
"DocumentsQty": fullTask.totalDocuments,
"WorkflowName": fullTask.workflowDisplayName,
"activityInstanceName": fullTask.activityInstanceName,
"Status": fullTask.workflowInstanceDataFields.Status,
}
}
}
+2 -1
View File
@@ -4,10 +4,11 @@ import { SearchDocumentPipe } from './search-document.pipe';
import { CustomTaskPipe } from './custom-task.pipe';
import { EventPipe } from './event.pipe';
import { PublicationPipe } from './publication.pipe';
import { ExpedienteTaskPipe } from './expediente-task.pipe';
@NgModule({
declarations: [FilterPipe, SearchDocumentPipe, CustomTaskPipe, EventPipe, PublicationPipe],
declarations: [FilterPipe, SearchDocumentPipe, CustomTaskPipe, EventPipe, PublicationPipe, ExpedienteTaskPipe],
exports: [FilterPipe],
imports: []
})
-2
View File
@@ -150,7 +150,6 @@ export class EventsService {
getAllMdOficialEvents(startdate:string, enddate:string): any{
let geturl = environment.apiURL + 'calendar/md';
geturl = geturl.replace('/V4/','/V5/')
let params = new HttpParams();
@@ -166,7 +165,6 @@ export class EventsService {
getAllMdPessoalEvents(startdate:string, enddate:string): any{
let geturl = environment.apiURL + 'calendar/md';
geturl = geturl.replace('/V4/','/V5/')
let params = new HttpParams();
+10 -10
View File
@@ -41,12 +41,6 @@ export class NotificationsService {
private activeroute: ActivatedRoute,
private jsonstore: JsonStore) {
this.callbacks.forEach(e=> {
if(e.type = 'Create Depacho') {
e.funx()
}
})
}
@@ -222,9 +216,9 @@ export class NotificationsService {
console.log(message);
var data = JSON.parse(message.payload);
console.log(data.Service);
console.log(data.IdObject);
console.log(data.Object);
console.log('data.Service', data.Service); // module
console.log('data.IdObject', data.IdObject); // Object id
console.log('data.Object', data.Object); // details
if(message.actionName){
this.notificatinsRoutes(data);
@@ -233,7 +227,13 @@ export class NotificationsService {
//this.notificatinsRoutes(data);
console.log(data)
}
this.callbacks.forEach( e=> {
if(e.type == data.Object) {
e.funx()
}
})
}
}, (error) => {
console.log('Push notification recived: failure ' + error.responseText);
+19
View File
@@ -6,6 +6,7 @@ import { environment } from 'src/environments/environment';
import { Observable } from 'rxjs';
import { DocumentSetUpMeeting } from '../models/CallMeeting';
import { Excludetask } from '../models/Excludetask';
import { ExpedienteFullTask } from '../models/Expediente';
@Injectable({
providedIn: 'root'
@@ -38,6 +39,24 @@ export class ProcessesService {
return this.http.get<any>(`${geturl}`, options);
}
GetTaskListExpediente(onlycount1): Observable<ExpedienteFullTask[]> {
const processname = "Expediente"
const onlycount = false
const geturl = environment.apiURL + 'tasks/List';
let params = new HttpParams();
params = params.set("ProcessName", processname);
params = params.set("OnlyCount", onlycount.toString());
let options = {
headers: this.headers,
params: params
};
return this.http.get<ExpedienteFullTask[]>(`${geturl}`, options);
}
GetTask(serialnumber:string): Observable<any>{
const geturl = environment.apiURL + 'Tasks/FindTask';
let params = new HttpParams();
@@ -1,9 +1,8 @@
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { customTask, DailyWorkTask, fullTask } from '../../../models/dailyworktask.model';
import { ProcessesService } from 'src/app/services/processes.service';
import { Component, OnInit } from '@angular/core';
import { customTask } from '../../../models/dailyworktask.model';
import { NavigationStart, Router } from '@angular/router';
import { DespachoStore } from 'src/app/store/despacho-store.service';
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
import { DespachoService } from 'src/app/Rules/despacho.service';
@Component({
selector: 'app-despachos',
@@ -12,16 +11,11 @@ import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
})
export class DespachosPage implements OnInit {
segment:string;
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
skeletonLoader = true
despachoStore = DespachoStore;
customTaskPipe = new CustomTaskPipe()
constructor (
private processes:ProcessesService,
private router: Router,
private despachoRule: DespachoService
) {}
ngOnInit() {
@@ -45,30 +39,11 @@ export class DespachosPage implements OnInit {
async LoadList() {
this.skeletonLoader = true
let result: fullTask[] = await this.processes.GetTasksList("Despacho", false).toPromise();
result = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
let despachoList = new Array();
result.forEach((element, index) => {
let task = this.customTaskPipe.transform(element);
despachoList.push(task);
});
despachoList = this.sortArrayISODate(despachoList).reverse();
this.despachoStore.reset(despachoList);
this.skeletonLoader = false
await this.despachoRule.getList({updateStore: true})
}
sortArrayISODate(myArray: any) {
return myArray.sort(function(a, b) {
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
});
get skeletonLoader(): boolean {
return this.despachoRule.LoaderService.loading
}
doRefresh() {
@@ -13,10 +13,10 @@
<div class="width-100 overflow-y-auto height-100" >
<ion-progress-bar type="indeterminate" *ngIf="skeletonLoader"></ion-progress-bar>
<ion-list *ngIf="expedienteprstore.list.length >= 1">
<ion-list *ngIf="expedienteGdStore.list.length >= 1">
<div
class="expediente ion-no-padding ion-no-margin cursor-pointer"
*ngFor = "let task of expedienteprstore.list"
*ngFor = "let task of expedienteGdStore.list"
(click)="goToExpediente(task.SerialNumber)"
>
<div class="item width-100">
@@ -48,13 +48,13 @@
<div
*ngIf="!skeletonLoader && expedienteprstore.list.length == 0 && expedienteprstore.list.length == 0"
*ngIf="!skeletonLoader && expedienteGdStore.list.length == 0 && expedienteGdStore.list.length == 0"
class="empty-list d-flex height-100 align-center justify-content-center"
>
<span>Lista vazia</span>
</div>
<div *ngIf="skeletonLoader && expedienteprstore.list.length == 0">
<div *ngIf="skeletonLoader && expedienteGdStore.list.length == 0">
<ion-list>
<ion-item>
@@ -6,8 +6,9 @@ import { ModalController } from '@ionic/angular';
import { AlertService } from 'src/app/services/alert.service';
import { User } from 'src/app/models/user.model';
import { AuthService } from 'src/app/services/auth.service';
import { ExpedienteprStore } from 'src/app/store/expedientepr-store.service';
import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
@Component({
selector: 'app-expedientes-pr',
@@ -16,11 +17,12 @@ import { CustomTaskPipe } from 'src/app/pipes/custom-task.pipe';
})
export class ExpedientesPrPage implements OnInit {
taskslist:DailyWorkTask[] = [];
taskslist = [];
serialNumber:string;
skeletonLoader = true;
expedienteprstore = ExpedienteprStore;
expedienteGdStore = ExpedienteGdStore;
customTaskPipe = new CustomTaskPipe()
expedienteTaskPipe = new ExpedienteTaskPipe()
loggeduser: User;
@Output() openExpedientDetail:EventEmitter<any> = new EventEmitter<any>();
@@ -62,15 +64,15 @@ export class ExpedientesPrPage implements OnInit {
LoadList() {
this.skeletonLoader = true;
this.processes.GetTasksList("Expediente", false).subscribe(result => {
this.processes.GetTaskListExpediente(false).subscribe(result => {
this.taskslist = [];
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
res.forEach(element => {
let task: customTask = this.customTaskPipe.transform(element);
let task = this.expedienteTaskPipe.transform(element);
this.taskslist.push(task);
});
this.expedienteprstore.reset(this.taskslist);
this.expedienteGdStore.reset(this.taskslist);
this.skeletonLoader = false;
});
@@ -30,7 +30,7 @@
<div class="item width-100">
<div class="exp-top-detail">
<div class="subject">
<ion-label>{{ task.Folio }}</ion-label>
<ion-label>{{ task.Subject }}</ion-label>
</div>
<div class="exp-icon">
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
@@ -1,15 +1,9 @@
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { ActivatedRoute, NavigationEnd, NavigationExtras, NavigationStart, Router } from '@angular/router';
import { CalendarComponent } from 'ionic2-calendar';
import { DailyWorkTask } from '../../../models/dailyworktask.model';
import { Component, Input, OnInit } from '@angular/core';
import { NavigationStart, Router } from '@angular/router';
import { ProcessesService } from 'src/app/services/processes.service';
import { formatDate } from '@angular/common';
import { LoadingService } from 'src/app/services/loading.service';
import { ModalController, NavParams } from '@ionic/angular';
import { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page';
import { AlertService } from 'src/app/services/alert.service';
import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe';
@Component({
selector: 'app-expedients',
@@ -18,23 +12,20 @@ import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service';
})
export class ExpedientsPage implements OnInit {
segment:string;
//profile:string;
@ViewChild(CalendarComponent) myCal: CalendarComponent;
taskslist:DailyWorkTask[] = [];
taskslist = [];
serialNumber:string;
@Input() profile:string;
skeletonLoader = true
expedientegbstore = ExpedienteGdStore
expedienteTaskPipe = new ExpedienteTaskPipe()
constructor(
private processes:ProcessesService,
private modalController: ModalController,
private alertService: AlertService,
private router: Router,
private activatedRoute: ActivatedRoute,
) {
this.profile = 'mdgpr';
@@ -58,11 +49,11 @@ export class ExpedientsPage implements OnInit {
}
segmentChanged(){
segmentChanged() {
this.LoadList();
}
notImplemented(){
notImplemented() {
this.alertService.presentAlert('Funcionalidade em desenvolvimento');
}
@@ -70,31 +61,17 @@ export class ExpedientsPage implements OnInit {
this.skeletonLoader = true
this.processes.GetTasksList("Expediente", false).subscribe(result => {
this.processes.GetTaskListExpediente(false).subscribe(result => {
this.taskslist = [];
this.skeletonLoader = false
let res = result.reverse().filter(data => data.workflowInstanceDataFields.Status == "Active");
res.forEach(element => {
let date = new Date(element.taskStartDate);
date.setMonth(date.getMonth() + 1);
let taskDate = date.getFullYear()+"-"+ date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+ ":"+date.getSeconds();
let task: DailyWorkTask = {
"SerialNumber": element.serialNumber,
"Folio": element.workflowInstanceDataFields.Subject,
"Senders": element.workflowInstanceDataFields.Sender,
"CreateDate": taskDate,
"DocumentURL": element.workflowInstanceDataFields.ViewerRequest,
"Remetente": element.workflowInstanceDataFields.Remetente,
"DocumentsQty": element.totalDocuments,
"WorkflowName": element.workflowDisplayName,
"activityInstanceName": element.activityInstanceName,
"Status": element.workflowInstanceDataFields.Status,
}
let task = this.expedienteTaskPipe.transform(element)
this.taskslist.push(task);
});
console.log("Buffer store", this.taskslist)
this.expedientegbstore.reset(this.taskslist);
});
}
@@ -20,7 +20,6 @@ export class PedidosPage implements OnInit {
@ViewChild(CalendarComponent) myCal: CalendarComponent;
taskslist:DailyWorkTask[] = [];
parecerList:any[] = [];
fulltask:any;
@@ -100,7 +99,6 @@ export class PedidosPage implements OnInit {
this.taskType = "Pedido de Deferimento";
this.processes.GetTasksList("Pedido de Deferimento", false).subscribe(result => {
this.taskslist = result.filter(data => data.workflowInstanceDataFields.Status == "Active")
this.skeletonLoader = false
this.deferimentoList = new Array();
@@ -1,16 +0,0 @@
import { TestBed } from '@angular/core/testing';
import { DespachosPageStoreService } from './despachos-page-store.service';
describe('DespachosPageStoreService', () => {
let service: DespachosPageStoreService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(DespachosPageStoreService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
@@ -1,60 +0,0 @@
import { Injectable } from '@angular/core';
import { localstoreService } from './localstore.service'
import { AES, enc, SHA1 } from 'crypto-js'
import { customTask } from '../models/dailyworktask.model';
@Injectable({
providedIn: 'root'
})
export class DespachosPageStoreService {
// main data
private _list: [] = []
// local storage keyName
private keyName: string;
private _count = 0
constructor() {
this.keyName = (SHA1(this.constructor.name)).toString()
setTimeout(()=>{
let restore = localstoreService.get(this.keyName, {})
this._list = restore.list || []
this._count = parseInt(restore.count) || 0
}, 10)
}
get list(): customTask[] {
return this._list || []
}
get count() {
return this._count
}
set count(value) {
this._count = value
this.save()
}
reset(eventsList: any) {
this._list = eventsList
this.count = this._list.length
this.save()
}
private save() {
setTimeout(()=> {
localstoreService.set(this.keyName,{
list: this._list,
count: this._count
})
}, 10)
}
}
export const DespachoPageStore = new DespachosPageStoreService()
@@ -1,16 +0,0 @@
import { TestBed } from '@angular/core/testing';
import { ExpedienteStorageServiceService } from './expediente-storage-service.service';
describe('ExpedienteStorageServiceService', () => {
let service: ExpedienteStorageServiceService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(ExpedienteStorageServiceService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
@@ -1,62 +0,0 @@
import { Injectable } from '@angular/core';
import { Event } from '../models/event.model';
import { localstoreService } from './localstore.service'
import { AES, enc, SHA1 } from 'crypto-js'
@Injectable({
providedIn: 'root'
})
// shared data used in home and gabinete
class ExpedienteStorageServiceService {
// main data
private _list: Event[] = []
private _count = 0
// local storage keyName
private keyName: string;
constructor() {
this.keyName = (SHA1(this.constructor.name+ 'ExpedienteStorage/forAll')).toString()
setTimeout(()=>{
let restore = localstoreService.get(this.keyName, [])
this._list = restore.list || []
this._count = restore.count || 0
}, 10)
}
get list() {
return this._list
}
get count() {
return this._count
}
set count(value: number) {
this._count = value
this.save()
}
reset(list: any) {
this._list = list
this.count = this._list.length
this.save()
}
private save() {
setTimeout(()=>{
localstoreService.set(this.keyName, {
list: this._list,
count: this._count
})
}, 10)
}
}
export const ExpedienteStorage = new ExpedienteStorageServiceService()
+2 -1
View File
@@ -1,6 +1,7 @@
import { Injectable } from '@angular/core';
import { localstoreService } from './localstore.service'
import { AES, enc, SHA1 } from 'crypto-js'
import { ExpedienteTask } from '../models/dailyworktask.model';
@Injectable({
providedIn: 'root'
@@ -8,7 +9,7 @@ import { AES, enc, SHA1 } from 'crypto-js'
export class ExpedientegdStoreService {
// main data
private _list = []
private _list: ExpedienteTask[] = []
// local storage keyName
private keyName: string;
private _count = 0
@@ -1,16 +0,0 @@
import { TestBed } from '@angular/core/testing';
import { ExpedienteprStoreService } from './expedientepr-store.service';
describe('ExpedienteprStoreService', () => {
let service: ExpedienteprStoreService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(ExpedienteprStoreService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
@@ -1,54 +0,0 @@
import { Injectable } from '@angular/core';
import { localstoreService } from './localstore.service'
import { AES, enc, SHA1 } from 'crypto-js'
@Injectable({
providedIn: 'root'
})
export class ExpedienteprStoreService {
// main data
private _list: [] = []
// local storage keyName
private keyName: string;
private _count = 0
constructor() {
this.keyName = (SHA1(this.constructor.name)).toString()
setTimeout(()=>{
let restore = localstoreService.get(this.keyName, {})
this._list = restore.list || []
this._count = parseInt(restore.count) || 0
}, 10)
}
get list() { return this._list || [] }
get count() { return this._count || 0 }
set count(value: number) {
this._count = value
this.save()
}
reset(eventsList: any) {
this._list = eventsList
this.count = this._list.length
this.save()
}
private save() {
setTimeout(()=>{
localstoreService.set(this.keyName,{
list: this._list,
count: this._count
})
}, 10)
}
}
export const ExpedienteprStore = new ExpedienteprStoreService()
+16
View File
@@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { LoaderService } from './loader.service';
describe('LoaderService', () => {
let service: LoaderService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(LoaderService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
+28
View File
@@ -0,0 +1,28 @@
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class LoaderService {
private loadingList: {
name: string
}[] = []
constructor() { }
get loading(){
return this.loadingList.length != 0
}
push({name = ''}) {
this.loadingList.push({
name: name
})
}
pop({}) {
this.loadingList.pop()
}
}