mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
save
This commit is contained in:
Generated
+57
@@ -4360,6 +4360,63 @@
|
||||
"integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==",
|
||||
"dev": true
|
||||
},
|
||||
"@fortawesome/angular-fontawesome": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.9.0.tgz",
|
||||
"integrity": "sha512-pJNJqxRTJChkUtywbqRuJRpmK/WNwqFqeN/GMmJmy3gHeCnWQ4SG0BwPJqaWqhi4gqII5dADijGts6wqeusxeQ==",
|
||||
"requires": {
|
||||
"tslib": "^2.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
|
||||
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@fortawesome/fontawesome-common-types": {
|
||||
"version": "0.2.35",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.35.tgz",
|
||||
"integrity": "sha512-IHUfxSEDS9dDGqYwIW7wTN6tn/O8E0n5PcAHz9cAaBoZw6UpG20IG/YM3NNLaGPwPqgjBAFjIURzqoQs3rrtuw=="
|
||||
},
|
||||
"@fortawesome/fontawesome-free": {
|
||||
"version": "5.15.3",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.3.tgz",
|
||||
"integrity": "sha512-rFnSUN/QOtnOAgqFRooTA3H57JLDm0QEG/jPdk+tLQNL/eWd+Aok8g3qCI+Q1xuDPWpGW/i9JySpJVsq8Q0s9w=="
|
||||
},
|
||||
"@fortawesome/fontawesome-svg-core": {
|
||||
"version": "1.2.35",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.35.tgz",
|
||||
"integrity": "sha512-uLEXifXIL7hnh2sNZQrIJWNol7cTVIzwI+4qcBIq9QWaZqUblm0IDrtSqbNg+3SQf8SMGHkiSigD++rHmCHjBg==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.35"
|
||||
}
|
||||
},
|
||||
"@fortawesome/free-brands-svg-icons": {
|
||||
"version": "5.15.3",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.3.tgz",
|
||||
"integrity": "sha512-1hirPcbjj72ZJtFvdnXGPbAbpn3Ox6mH3g5STbANFp3vGSiE5u5ingAKV06mK6ZVqNYxUPlh4DlTnaIvLtF2kw==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.35"
|
||||
}
|
||||
},
|
||||
"@fortawesome/free-regular-svg-icons": {
|
||||
"version": "5.15.3",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.3.tgz",
|
||||
"integrity": "sha512-q4/p8Xehy9qiVTdDWHL4Z+o5PCLRChePGZRTXkl+/Z7erDVL8VcZUuqzJjs6gUz6czss4VIPBRdCz6wP37/zMQ==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.35"
|
||||
}
|
||||
},
|
||||
"@fortawesome/free-solid-svg-icons": {
|
||||
"version": "5.15.3",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.3.tgz",
|
||||
"integrity": "sha512-XPeeu1IlGYqz4VWGRAT5ukNMd4VHUEEJ7ysZ7pSSgaEtNvSo+FLurybGJVmiqkQdK50OkSja2bfZXOeyMGRD8Q==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.35"
|
||||
}
|
||||
},
|
||||
"@fullcalendar/angular": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@fullcalendar/angular/-/angular-5.5.0.tgz",
|
||||
|
||||
@@ -31,6 +31,12 @@
|
||||
"@angular/platform-browser": "~12.1.2",
|
||||
"@angular/platform-browser-dynamic": "~12.1.2",
|
||||
"@angular/router": "~12.1.2",
|
||||
"@fortawesome/angular-fontawesome": "^0.9.0",
|
||||
"@fortawesome/fontawesome-free": "^5.15.3",
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.35",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.15.3",
|
||||
"@fortawesome/free-regular-svg-icons": "^5.15.3",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.15.3",
|
||||
"@fullcalendar/angular": "^5.3.0",
|
||||
"@fullcalendar/daygrid": "^5.3.0",
|
||||
"@fullcalendar/interaction": "^5.3.0",
|
||||
|
||||
+11
-1
@@ -47,6 +47,11 @@ import { NgxMatMomentModule } from '@angular-material-components/moment-adapter'
|
||||
import { MatButtonModule } from '@angular/material/button';
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
|
||||
import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';
|
||||
import { fas } from '@fortawesome/free-solid-svg-icons'
|
||||
import { far } from '@fortawesome/free-regular-svg-icons'
|
||||
import { fab } from '@fortawesome/free-brands-svg-icons'
|
||||
|
||||
@NgModule({
|
||||
declarations: [AppComponent],
|
||||
entryComponents: [],
|
||||
@@ -60,6 +65,7 @@ import { HttpClient } from '@angular/common/http';
|
||||
IonicModule.forRoot({animated: false}),
|
||||
IonicStorageModule.forRoot(),
|
||||
AppRoutingModule,
|
||||
FontAwesomeModule,
|
||||
HttpClientModule,
|
||||
// NgbModule,
|
||||
NoopAnimationsModule,
|
||||
@@ -96,4 +102,8 @@ import { HttpClient } from '@angular/common/http';
|
||||
bootstrap: [AppComponent],
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
||||
})
|
||||
export class AppModule {}
|
||||
export class AppModule {
|
||||
constructor(library: FaIconLibrary) {
|
||||
library.addIconPacks(fas, fab, far);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,13 +33,14 @@ import { ExpedientesPrPageModule } from 'src/app/shared/gabinete-digital/expedie
|
||||
import { DiplomasAssinarPageModule } from 'src/app/shared/gabinete-digital/diplomas-assinar/diplomas-assinar.module';
|
||||
import { HeaderPageModule } from 'src/app/shared/header/header.module';
|
||||
import { BtnModalDismissPageModule } from 'src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module';
|
||||
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
FormsModule,
|
||||
IonicModule,
|
||||
|
||||
FontAwesomeModule,
|
||||
GabineteDigitalPageRoutingModule,
|
||||
//
|
||||
HeaderPageModule,
|
||||
|
||||
@@ -14,13 +14,70 @@
|
||||
<div class="aside-wrapper d-flex flex-column width-md-40 flex-grow-1 ">
|
||||
<ion-progress-bar type="indeterminate" *ngIf="showLoader"></ion-progress-bar>
|
||||
<div class="title-container">
|
||||
<ion-label class="title">Gabinete Digital</ion-label>
|
||||
<div class="title">
|
||||
<ion-label>Gabinete Digital</ion-label>
|
||||
</div>
|
||||
<button *ngIf="hideRefreshBtn" class="btn-no-color btn-refresh" (click)="doRefresh($event)">
|
||||
<ion-icon class="title-icon" name="reload-circle"></ion-icon>
|
||||
</button>
|
||||
<div class="title-icons">
|
||||
<!-- <ion-toolbar> -->
|
||||
<ion-segment [(ngModel)]="segmentVista" (ionChange)="onSegmentVistaChange()">
|
||||
<ion-segment-button value="listview">
|
||||
<fa-icon icon="stream"></fa-icon>
|
||||
</ion-segment-button>
|
||||
<ion-segment-button value="boxview">
|
||||
<fa-icon icon="th-large"></fa-icon>
|
||||
</ion-segment-button>
|
||||
</ion-segment>
|
||||
<!-- </ion-toolbar> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="aside overflow-y-auto d-flex flex-wrap width-100">
|
||||
<div [ngSwitch]="segmentVista">
|
||||
<!-- This is the list view -->
|
||||
<div *ngSwitchCase="'listview'">
|
||||
<div class="listview">
|
||||
<ion-list *ngIf="allProcessesList">
|
||||
<div
|
||||
class="item-wrapper ion-no-padding cursor-pointer"
|
||||
*ngFor = "let task of allProcessesList"
|
||||
(click)="viewProcessDetails()">
|
||||
<div class="item width-100">
|
||||
<div class="item-top-detail">
|
||||
<div class="item-subject">
|
||||
<ion-label>{{ task.Folio }}</ion-label>
|
||||
</div>
|
||||
<div class="item-icon">
|
||||
<ion-icon src="assets/images/icons-expediente-attachment.svg"></ion-icon>
|
||||
<label *ngIf="task.DocumentsQty != 0">{{task.DocumentsQty}}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-middle-detail">
|
||||
<div class="item-remetente">
|
||||
<ion-label>{{task.Senders}}</ion-label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-middle-detail-extra">
|
||||
<div class="item-middle-detail-extra-text">
|
||||
<ion-label>Data</ion-label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-bottom-detail d-flex align-items-center">
|
||||
<div class="item-workflow">
|
||||
<span class="label">{{task.activityInstanceName}}</span>
|
||||
</div>
|
||||
<div class="item-date">
|
||||
<ion-label>{{ task.CreateDate | date: 'dd-MM-yy' }}</ion-label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ion-list>
|
||||
</div>
|
||||
</div>
|
||||
<!-- This is the box view -->
|
||||
<div *ngSwitchCase="'boxview'" class="aside overflow-y-auto d-flex flex-wrap width-100">
|
||||
<div (click)="openEventsToApprovePage();selectedElement='approval'" [class.active]="selectedElement == 'approval'" class="exp-card d-flex flex-column" *ngIf="loggeduser.Profile == 'MDGPR'" >
|
||||
<div class="d-flex justify-center">
|
||||
<ion-icon src="assets/images/icons-agenda.svg"></ion-icon>
|
||||
@@ -142,6 +199,8 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Aside right -->
|
||||
|
||||
@@ -6,6 +6,21 @@ ion-content{
|
||||
/* --background:#ecf8ff; */
|
||||
--background: transparent;
|
||||
}
|
||||
ion-segment{
|
||||
overflow: auto;
|
||||
}
|
||||
ion-segment-button{
|
||||
margin: 0 auto !important;
|
||||
padding: 0 !important;
|
||||
|
||||
--padding-bottom: 0px;
|
||||
--padding-top: 5px;
|
||||
--margin-bottom: 5px;
|
||||
--margin-top: 0px;
|
||||
|
||||
min-height: 25px;
|
||||
min-width: 25px;
|
||||
}
|
||||
:host{
|
||||
// background: #0782c9;
|
||||
ion-card-title {
|
||||
@@ -14,6 +29,11 @@ ion-content{
|
||||
.title-container{
|
||||
padding: 30px 20px 15px 20px !important;
|
||||
//margin-bottom: 15px;
|
||||
.title{
|
||||
width: fit-content;
|
||||
font-size: 25px !important;
|
||||
float: left;
|
||||
}
|
||||
.btn-no-color{
|
||||
display: flex;
|
||||
float: right;
|
||||
@@ -24,6 +44,14 @@ ion-content{
|
||||
font-size: 30px;
|
||||
color: #42b9fe;
|
||||
}
|
||||
.title-icons{
|
||||
width: fit-content;
|
||||
float: right !important;
|
||||
align-self: baseline;
|
||||
}
|
||||
.title-icons fa-icon{
|
||||
font-size: 25px !important;
|
||||
}
|
||||
}
|
||||
|
||||
ion-card{
|
||||
@@ -95,7 +123,15 @@ ion-content{
|
||||
|
||||
.aside-wrapper{
|
||||
//border: 1px solid red;
|
||||
overflow: auto;
|
||||
.listview{
|
||||
width: 100%t;
|
||||
padding: 0px 20px 15px 20px !important;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.aside{
|
||||
align-items: center;
|
||||
@@ -204,6 +240,138 @@ ion-content{
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/* New list view CSS */
|
||||
ion-list{
|
||||
background: transparent;
|
||||
}
|
||||
.item-wrapper{
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.07);
|
||||
border:1px solid #e9e9e9 !important;
|
||||
background-color: #fff !important;
|
||||
margin-bottom: 10px !important;
|
||||
padding: 15px;
|
||||
|
||||
.item{
|
||||
background-color: var(--white);
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
|
||||
.item-top-detail{
|
||||
width: 100%;
|
||||
float: left;
|
||||
font-family: Roboto;
|
||||
font-size: 12pt;
|
||||
font-weight: 700;
|
||||
color: #0d89d1;
|
||||
padding-left: 3px;
|
||||
|
||||
.item-subject{
|
||||
width: 84%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.item-icon{
|
||||
width: fit-content;
|
||||
float: right;
|
||||
/* font-size: 13px; */
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
|
||||
ion-icon{
|
||||
font-size: 12pt;
|
||||
color: #42b9fe;
|
||||
float: left;
|
||||
}
|
||||
label{
|
||||
font-size: 10pt;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-middle-detail{
|
||||
font-size: 10pt;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
padding-left: 3px;
|
||||
//border: 1px solid red;
|
||||
margin: 0 !important;
|
||||
|
||||
.item-remetente{
|
||||
//width: 200px;
|
||||
font-family: Roboto;
|
||||
/* font-size: 13px; */
|
||||
font-weight: normal;
|
||||
color: #000000;
|
||||
float: left;
|
||||
/* border: 1px solid red; */
|
||||
|
||||
ion-label{
|
||||
padding: 2.5px 10.5px 2.5px 10.5px;
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-middle-detail-extra{
|
||||
font-size: 10pt;
|
||||
padding-left: 3px;
|
||||
//border: 1px solid red;
|
||||
|
||||
.item-middle-detail-extra-text{
|
||||
//border: 1px solid blue;
|
||||
|
||||
ion-label{
|
||||
padding: 2.5px 10.5px 2.5px 10.5px;
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-bottom-detail{
|
||||
font-size: 12pt;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
margin-top: 10px;
|
||||
padding-bottom: 0 !important;
|
||||
|
||||
.item-workflow{
|
||||
float: left;
|
||||
margin: 0 !important;
|
||||
align-self: flex-start;
|
||||
|
||||
|
||||
.label{
|
||||
border-radius: 15px;
|
||||
background: #ffb703;
|
||||
/* font-size: 12px; */
|
||||
float: right;
|
||||
padding: 2.5px 13.5px 2.5px 13.5px;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.item-date{
|
||||
width: auto;
|
||||
font-family: Roboto;
|
||||
font-size: 10pt;
|
||||
font-weight: normal;
|
||||
font-stretch: normal;
|
||||
font-style: normal;
|
||||
line-height: normal;
|
||||
letter-spacing: normal;
|
||||
color: #797979;
|
||||
text-align: right;
|
||||
flex-grow: 1;
|
||||
|
||||
ion-label{
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-middle-detail, .item-bottom-detail{
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (min-width: 561px) {
|
||||
.exp-card-long{
|
||||
|
||||
@@ -21,6 +21,7 @@ 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'
|
||||
@Component({
|
||||
selector: 'app-gabinete-digital',
|
||||
templateUrl: './gabinete-digital.page.html',
|
||||
@@ -30,9 +31,13 @@ import { PermissionService } from 'src/app/OtherService/permission.service';
|
||||
export class GabineteDigitalPage implements OnInit {
|
||||
|
||||
segment:string;
|
||||
segmentVista:string;
|
||||
showLoader: boolean;
|
||||
public profile:string;
|
||||
|
||||
allProcessesList: any = new Array();
|
||||
skeletonLoader: boolean;
|
||||
|
||||
count_exp_dailywork=0;
|
||||
count_exp_pr =0
|
||||
count_desp_dailywork=0;
|
||||
@@ -103,9 +108,8 @@ export class GabineteDigitalPage implements OnInit {
|
||||
authService: AuthService,
|
||||
public p: PermissionService
|
||||
) {
|
||||
|
||||
this.segmentVista = "listview";
|
||||
this.loggeduser = authService.ValidatedUser;
|
||||
|
||||
window.onresize = (event) => {
|
||||
// if not mobile remove all component
|
||||
if( window.innerWidth <= 801){
|
||||
@@ -140,6 +144,55 @@ export class GabineteDigitalPage implements OnInit {
|
||||
});
|
||||
|
||||
this.hideRefreshButton();
|
||||
this.loadAllProcesses();
|
||||
}
|
||||
|
||||
async loadAllProcesses(){
|
||||
let allProcessesList = await this.processesbackend.GetTasksList("", false).toPromise();
|
||||
console.log(allProcessesList);
|
||||
|
||||
this.skeletonLoader = true;
|
||||
|
||||
this.allProcessesList = [];
|
||||
|
||||
allProcessesList.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 = {
|
||||
"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,
|
||||
"FolderID": element.workflowInstanceDataFields.FolderID,
|
||||
"WorkflowName": element.workflowDisplayName,
|
||||
"activityInstanceName": element.activityInstanceName,
|
||||
"Status": element.workflowInstanceDataFields.Status,
|
||||
}
|
||||
this.allProcessesList.push(task);
|
||||
this.allProcessesList = removeDuplicate( this.allProcessesList)
|
||||
this.allProcessesList = this.sortArrayISODate(this.allProcessesList);
|
||||
});
|
||||
//this.pendentesstore.reset(this.allProcessesList);
|
||||
this.skeletonLoader = false;
|
||||
|
||||
}
|
||||
|
||||
sortArrayISODate(myArray: any){
|
||||
return myArray.sort(function(a, b) {
|
||||
return (a.CreateDate < b.CreateDate) ? -1 : ((a.CreateDate > b.CreateDate) ? 1 : 0);
|
||||
});
|
||||
}
|
||||
|
||||
viewProcessDetails(){}
|
||||
|
||||
onSegmentVistaChange(){
|
||||
|
||||
}
|
||||
|
||||
checkUser(){
|
||||
|
||||
@@ -146,8 +146,8 @@ ion-item{
|
||||
}
|
||||
.exp-middle-detail, .exp-bottom-detail{
|
||||
margin-bottom: 5px;
|
||||
|
||||
}
|
||||
|
||||
.exp-middle-detail{
|
||||
font-size: 12pt;
|
||||
width: 100%;
|
||||
|
||||
Reference in New Issue
Block a user