tango-app-ui-manage-tickets 3.7.0-beta.14 → 3.7.0-beta.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +37 -0
- package/ng-package.json +7 -0
- package/package.json +12 -25
- package/src/lib/components/add-csm-modal/add-csm-modal.component.html +32 -0
- package/src/lib/components/add-csm-modal/add-csm-modal.component.scss +14 -0
- package/src/lib/components/add-csm-modal/add-csm-modal.component.spec.ts +23 -0
- package/src/lib/components/add-csm-modal/add-csm-modal.component.ts +94 -0
- package/src/lib/components/audit-log/audit-log.component.html +1 -0
- package/src/lib/components/audit-log/audit-log.component.scss +0 -0
- package/src/lib/components/audit-log/audit-log.component.spec.ts +23 -0
- package/src/lib/components/audit-log/audit-log.component.ts +10 -0
- package/src/lib/components/audit-metrics/audit-metrics.component.html +345 -0
- package/src/lib/components/audit-metrics/audit-metrics.component.scss +34 -0
- package/src/lib/components/audit-metrics/audit-metrics.component.spec.ts +23 -0
- package/src/lib/components/audit-metrics/audit-metrics.component.ts +292 -0
- package/src/lib/components/comment-model/comment-model.component.html +24 -0
- package/src/lib/components/comment-model/comment-model.component.scss +20 -0
- package/src/lib/components/comment-model/comment-model.component.spec.ts +23 -0
- package/src/lib/components/comment-model/comment-model.component.ts +53 -0
- package/src/lib/components/count/count.component.html +54 -0
- package/src/lib/components/count/count.component.scss +14 -0
- package/src/lib/components/count/count.component.spec.ts +23 -0
- package/src/lib/components/count/count.component.ts +82 -0
- package/src/lib/components/footfall-dic/footfall-dic.component.html +1242 -0
- package/src/lib/components/footfall-dic/footfall-dic.component.scss +273 -0
- package/src/lib/components/footfall-dic/footfall-dic.component.spec.ts +23 -0
- package/src/lib/components/footfall-dic/footfall-dic.component.ts +1106 -0
- package/src/lib/components/group-select/group-select.component.html +44 -0
- package/src/lib/components/group-select/group-select.component.scss +144 -0
- package/src/lib/components/group-select/group-select.component.spec.ts +23 -0
- package/src/lib/components/group-select/group-select.component.ts +145 -0
- package/src/lib/components/re-trigger/re-trigger.component.html +53 -0
- package/src/lib/components/re-trigger/re-trigger.component.scss +16 -0
- package/src/lib/components/re-trigger/re-trigger.component.spec.ts +23 -0
- package/src/lib/components/re-trigger/re-trigger.component.ts +96 -0
- package/src/lib/components/reactive-select/reactive-select.component.html +18 -0
- package/src/lib/components/reactive-select/reactive-select.component.scss +52 -0
- package/src/lib/components/reactive-select/reactive-select.component.spec.ts +23 -0
- package/src/lib/components/reactive-select/reactive-select.component.ts +104 -0
- package/src/lib/components/tango-manage-tickets/tango-manage-tickets.component.html +38 -0
- package/src/lib/components/tango-manage-tickets/tango-manage-tickets.component.scss +35 -0
- package/src/lib/components/tango-manage-tickets/tango-manage-tickets.component.spec.ts +23 -0
- package/src/lib/components/tango-manage-tickets/tango-manage-tickets.component.ts +116 -0
- package/src/lib/components/tickets/tickets.component.html +439 -0
- package/src/lib/components/tickets/tickets.component.scss +131 -0
- package/src/lib/components/tickets/tickets.component.spec.ts +23 -0
- package/src/lib/components/tickets/tickets.component.ts +748 -0
- package/src/lib/services/excel.service.ts +48 -0
- package/src/lib/services/ticket.service.spec.ts +16 -0
- package/src/lib/services/ticket.service.ts +175 -0
- package/src/lib/tango-manage-tickets-routing.module.ts +16 -0
- package/src/lib/tango-manage-tickets.module.ts +34 -0
- package/{public-api.d.ts → src/public-api.ts} +8 -2
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/esm2022/lib/components/add-csm-modal/add-csm-modal.component.mjs +0 -98
- package/esm2022/lib/components/audit-log/audit-log.component.mjs +0 -11
- package/esm2022/lib/components/audit-metrics/audit-metrics.component.mjs +0 -298
- package/esm2022/lib/components/comment-model/comment-model.component.mjs +0 -58
- package/esm2022/lib/components/count/count.component.mjs +0 -89
- package/esm2022/lib/components/footfall-dic/footfall-dic.component.mjs +0 -983
- package/esm2022/lib/components/group-select/group-select.component.mjs +0 -155
- package/esm2022/lib/components/re-trigger/re-trigger.component.mjs +0 -96
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +0 -108
- package/esm2022/lib/components/tango-manage-tickets/tango-manage-tickets.component.mjs +0 -127
- package/esm2022/lib/components/tickets/tickets.component.mjs +0 -793
- package/esm2022/lib/services/excel.service.mjs +0 -45
- package/esm2022/lib/services/ticket.service.mjs +0 -161
- package/esm2022/lib/tango-manage-tickets-routing.module.mjs +0 -24
- package/esm2022/lib/tango-manage-tickets.module.mjs +0 -54
- package/esm2022/public-api.mjs +0 -6
- package/esm2022/tango-app-ui-manage-tickets.mjs +0 -5
- package/fesm2022/tango-app-ui-manage-tickets.mjs +0 -3006
- package/fesm2022/tango-app-ui-manage-tickets.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/components/add-csm-modal/add-csm-modal.component.d.ts +0 -30
- package/lib/components/audit-log/audit-log.component.d.ts +0 -5
- package/lib/components/audit-metrics/audit-metrics.component.d.ts +0 -59
- package/lib/components/comment-model/comment-model.component.d.ts +0 -17
- package/lib/components/count/count.component.d.ts +0 -23
- package/lib/components/footfall-dic/footfall-dic.component.d.ts +0 -139
- package/lib/components/group-select/group-select.component.d.ts +0 -33
- package/lib/components/re-trigger/re-trigger.component.d.ts +0 -32
- package/lib/components/reactive-select/reactive-select.component.d.ts +0 -32
- package/lib/components/tango-manage-tickets/tango-manage-tickets.component.d.ts +0 -27
- package/lib/components/tickets/tickets.component.d.ts +0 -84
- package/lib/services/excel.service.d.ts +0 -10
- package/lib/services/ticket.service.d.ts +0 -49
- package/lib/tango-manage-tickets-routing.module.d.ts +0 -7
- package/lib/tango-manage-tickets.module.d.ts +0 -21
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../.eslintrc.json",
|
|
3
|
+
"ignorePatterns": [
|
|
4
|
+
"!**/*"
|
|
5
|
+
],
|
|
6
|
+
"overrides": [
|
|
7
|
+
{
|
|
8
|
+
"files": [
|
|
9
|
+
"*.ts"
|
|
10
|
+
],
|
|
11
|
+
"rules": {
|
|
12
|
+
"@angular-eslint/directive-selector": [
|
|
13
|
+
"error",
|
|
14
|
+
{
|
|
15
|
+
"type": "attribute",
|
|
16
|
+
"prefix": "lib",
|
|
17
|
+
"style": "camelCase"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"@angular-eslint/component-selector": [
|
|
21
|
+
"error",
|
|
22
|
+
{
|
|
23
|
+
"type": "element",
|
|
24
|
+
"prefix": "lib",
|
|
25
|
+
"style": "kebab-case"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"files": [
|
|
32
|
+
"*.html"
|
|
33
|
+
],
|
|
34
|
+
"rules": {}
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
package/ng-package.json
ADDED
package/package.json
CHANGED
|
@@ -1,25 +1,12 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tango-app-ui-manage-tickets",
|
|
3
|
-
"version": "3.7.0-beta.
|
|
4
|
-
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^17.0.0",
|
|
6
|
-
"@angular/core": "^17.0.0"
|
|
7
|
-
},
|
|
8
|
-
"dependencies": {
|
|
9
|
-
"tslib": "^2.3.0"
|
|
10
|
-
},
|
|
11
|
-
"sideEffects": false
|
|
12
|
-
|
|
13
|
-
"typings": "index.d.ts",
|
|
14
|
-
"exports": {
|
|
15
|
-
"./package.json": {
|
|
16
|
-
"default": "./package.json"
|
|
17
|
-
},
|
|
18
|
-
".": {
|
|
19
|
-
"types": "./index.d.ts",
|
|
20
|
-
"esm2022": "./esm2022/tango-app-ui-manage-tickets.mjs",
|
|
21
|
-
"esm": "./esm2022/tango-app-ui-manage-tickets.mjs",
|
|
22
|
-
"default": "./fesm2022/tango-app-ui-manage-tickets.mjs"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "tango-app-ui-manage-tickets",
|
|
3
|
+
"version": "3.7.0-beta.16",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^17.0.0",
|
|
6
|
+
"@angular/core": "^17.0.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false
|
|
12
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<div class="card py-0">
|
|
2
|
+
<div class="card-body py-0 d-flex flex-start flex-column p-9 ">
|
|
3
|
+
<div class="my-5">
|
|
4
|
+
<div class="symbol symbol-75px symbol-circle">
|
|
5
|
+
<svg width="56" height="56" viewBox="0 0 56 56" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
6
|
+
<rect x="4" y="4" width="48" height="48" rx="24" fill="#DAF1FF"/>
|
|
7
|
+
<rect x="4" y="4" width="48" height="48" rx="24" stroke="#EAF8FF" stroke-width="8"/>
|
|
8
|
+
<path d="M32 37V35C32 33.9391 31.5786 32.9217 30.8284 32.1716C30.0783 31.4214 29.0609 31 28 31H21C19.9391 31 18.9217 31.4214 18.1716 32.1716C17.4214 32.9217 17 33.9391 17 35V37M36 24V30M39 27H33M28.5 23C28.5 25.2091 26.7091 27 24.5 27C22.2909 27 20.5 25.2091 20.5 23C20.5 20.7909 22.2909 19 24.5 19C26.7091 19 28.5 20.7909 28.5 23Z" stroke="#00A3FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
9
|
+
</svg>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
<a class="fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer">Assign Ticket</a>
|
|
13
|
+
<p class="text-sub">Assign the ticket to a particular user</p>
|
|
14
|
+
<div class="mt-5 w-100">
|
|
15
|
+
<!-- <lib-reactive-select [formControl]="csmSelectInput" [idField]="'email'" [nameField]="'userName'" [data]="csmUserList" ></lib-reactive-select> -->
|
|
16
|
+
|
|
17
|
+
<!-- <select [formControl]="csmSelectInput" class="form-select border-val my-3">
|
|
18
|
+
<option [value]="user.email" *ngFor="let user of csmUserList">{{user.userName}}</option>
|
|
19
|
+
</select> -->
|
|
20
|
+
|
|
21
|
+
<lib-select [items]="userList" [multi]="false" [searchField]="'userName'" [idField]="'_id'"
|
|
22
|
+
(selected)="onCsmSelect($event)" ></lib-select>
|
|
23
|
+
|
|
24
|
+
<div class="d-flex my-7" role="group">
|
|
25
|
+
<button class="btn btn-outline w-100 me-3" (click)="cancel()">Cancel</button>
|
|
26
|
+
<button class="btn btn-primary w-100 ms-3" [disabled]="!csmSelectInput.value" (click)="assignCsm()">Submit</button>
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
::ng-deep.modal-content {
|
|
2
|
+
border-radius: 12px !important;
|
|
3
|
+
overflow: unset !important;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
::ng-deep ngb-modal-window .component-host-scrollable {
|
|
7
|
+
overflow: unset !important;
|
|
8
|
+
}
|
|
9
|
+
.text-sub{
|
|
10
|
+
color: var(--Gray-500, #667085) !important;
|
|
11
|
+
font-size: 14px;
|
|
12
|
+
font-weight: 400;
|
|
13
|
+
line-height: 20px;
|
|
14
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { AddCsmModalComponent } from './add-csm-modal.component';
|
|
4
|
+
|
|
5
|
+
describe('AddCsmModalComponent', () => {
|
|
6
|
+
let component: AddCsmModalComponent;
|
|
7
|
+
let fixture: ComponentFixture<AddCsmModalComponent>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
declarations: [AddCsmModalComponent]
|
|
12
|
+
})
|
|
13
|
+
.compileComponents();
|
|
14
|
+
|
|
15
|
+
fixture = TestBed.createComponent(AddCsmModalComponent);
|
|
16
|
+
component = fixture.componentInstance;
|
|
17
|
+
fixture.detectChanges();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should create', () => {
|
|
21
|
+
expect(component).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
|
|
4
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
+
import { GlobalStateService } from 'tango-app-ui-global';
|
|
6
|
+
import { TicketService } from '../../services/ticket.service';
|
|
7
|
+
import { ToastService } from 'tango-app-ui-shared';
|
|
8
|
+
|
|
9
|
+
@Component({
|
|
10
|
+
selector: "lib-add-csm-modal",
|
|
11
|
+
templateUrl: "./add-csm-modal.component.html",
|
|
12
|
+
styleUrl: "./add-csm-modal.component.scss",
|
|
13
|
+
})
|
|
14
|
+
export class AddCsmModalComponent implements OnInit, OnDestroy {
|
|
15
|
+
@Input() ticketId: any;
|
|
16
|
+
csmUserList: any = [];
|
|
17
|
+
csmSelectInput = new FormControl("");
|
|
18
|
+
private readonly destroy$ = new Subject();
|
|
19
|
+
headerFilters: any;
|
|
20
|
+
userList_req: {};
|
|
21
|
+
users: any=[];
|
|
22
|
+
userList: any=[];
|
|
23
|
+
|
|
24
|
+
constructor(
|
|
25
|
+
private activeModal: NgbActiveModal,
|
|
26
|
+
public gs: GlobalStateService,
|
|
27
|
+
private service: TicketService,
|
|
28
|
+
private toast: ToastService
|
|
29
|
+
) {}
|
|
30
|
+
ngOnInit(): void {
|
|
31
|
+
const userData: any = JSON.parse(localStorage.getItem("user-info") || "{}");
|
|
32
|
+
this.users = userData;
|
|
33
|
+
this.gs.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({
|
|
34
|
+
next: (data: any) => {
|
|
35
|
+
if (data) {
|
|
36
|
+
this.headerFilters = data;
|
|
37
|
+
this.userList_req = {
|
|
38
|
+
"userType": this.users.userType, "isActive": true
|
|
39
|
+
// clientId: this.headerFilters.client,
|
|
40
|
+
// limit: 10000,
|
|
41
|
+
// offset: 1,
|
|
42
|
+
// userType: this.users.userType,
|
|
43
|
+
// FilterByStatus:'isActive'
|
|
44
|
+
};
|
|
45
|
+
this.getuserlist();
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
ngOnDestroy(): void {
|
|
51
|
+
this.destroy$.next(true);
|
|
52
|
+
this.destroy$.complete();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
getuserlist() {
|
|
56
|
+
this.service
|
|
57
|
+
.getUserActiveList(this.userList_req)
|
|
58
|
+
.pipe(takeUntil(this.destroy$))
|
|
59
|
+
.subscribe((res: any) => {
|
|
60
|
+
if (res && res.code === 200) {
|
|
61
|
+
this.userList = res?.data?.result;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
assignCsm() {
|
|
67
|
+
let obj = {
|
|
68
|
+
tickets: this.ticketId,
|
|
69
|
+
user: this.csmSelectInput.value,
|
|
70
|
+
};
|
|
71
|
+
this.service
|
|
72
|
+
.getAssignTicket(obj)
|
|
73
|
+
.pipe(takeUntil(this.destroy$))
|
|
74
|
+
.subscribe({
|
|
75
|
+
next: (res: any) => {
|
|
76
|
+
if (res && res.code === 200) {
|
|
77
|
+
this.toast.getSuccessToast(res.message);
|
|
78
|
+
this.activeModal.close("submit");
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
error: (err: any) => {
|
|
82
|
+
this.toast.getErrorToast(err.error.error ? err.error.error : err.error);
|
|
83
|
+
},
|
|
84
|
+
complete: () => {},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
onCsmSelect(selectedCsm: any) {
|
|
89
|
+
this.csmSelectInput.setValue(selectedCsm?._id);
|
|
90
|
+
}
|
|
91
|
+
cancel() {
|
|
92
|
+
this.activeModal.close("submit");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<p>audit-log works!</p>
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { AuditLogComponent } from './audit-log.component';
|
|
4
|
+
|
|
5
|
+
describe('AuditLogComponent', () => {
|
|
6
|
+
let component: AuditLogComponent;
|
|
7
|
+
let fixture: ComponentFixture<AuditLogComponent>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
declarations: [AuditLogComponent]
|
|
12
|
+
})
|
|
13
|
+
.compileComponents();
|
|
14
|
+
|
|
15
|
+
fixture = TestBed.createComponent(AuditLogComponent);
|
|
16
|
+
component = fixture.componentInstance;
|
|
17
|
+
fixture.detectChanges();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should create', () => {
|
|
21
|
+
expect(component).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
<div class="card">
|
|
2
|
+
<div class="card-header border-0 pt-3">
|
|
3
|
+
<h3 class="card-title align-items-start flex-column">
|
|
4
|
+
<span class="card-label mb-2">Audit Metrics</span>
|
|
5
|
+
<!-- <span class="text-sub mb-2">Last updated 1 hour ago</span> -->
|
|
6
|
+
</h3>
|
|
7
|
+
<div class="card-toolbar">
|
|
8
|
+
<div class="d-flex">
|
|
9
|
+
<div class="d-flex align-items-center position-relative my-1">
|
|
10
|
+
<span class="svg-icon svg-icon-1 position-absolute ms-3">
|
|
11
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
|
|
12
|
+
<rect opacity="0.5" x="17.0365" y="15.1223" width="8.15546" height="2" rx="1"
|
|
13
|
+
transform="rotate(45 17.0365 15.1223)" fill="currentColor"></rect>
|
|
14
|
+
<path
|
|
15
|
+
d="M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z"
|
|
16
|
+
fill="currentColor"></path>
|
|
17
|
+
</svg>
|
|
18
|
+
</span>
|
|
19
|
+
<input type="text" class="form-control ps-14 me-2" placeholder="Search" autocomplete="off"
|
|
20
|
+
(change)="searchData()" [(ngModel)]="searchTerm" />
|
|
21
|
+
|
|
22
|
+
<lib-filters *ngIf="clientList" [dataObject]="dataObject" (appliedFilters)="receiveData($event)"></lib-filters>
|
|
23
|
+
|
|
24
|
+
<button type="button" *ngIf="!noData&&!loading" (click)="exportXLSX()"
|
|
25
|
+
class="btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val">
|
|
26
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
|
|
27
|
+
<path
|
|
28
|
+
d="M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5"
|
|
29
|
+
stroke="#344054" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round" />
|
|
30
|
+
</svg>
|
|
31
|
+
<span class="ms-2">Export</span>
|
|
32
|
+
</button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="card-body">
|
|
38
|
+
<ul class="nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap horizontal-scroll">
|
|
39
|
+
<li class="nav-item" (click)="selectedTabs('all')">
|
|
40
|
+
<a [ngClass]="selectedTab === '' ? 'active' : ''" class="nav-link cursor-pointer no-border me-2">
|
|
41
|
+
All <span class="mx-2"
|
|
42
|
+
[ngClass]="selectedTab === '' ? 'text-border-priamry' : 'text-border'">{{totalCount?.totalauditCount ? totalCount?.totalauditCount : 0}}</span>
|
|
43
|
+
</a>
|
|
44
|
+
</li>
|
|
45
|
+
<li class="nav-item" (click)="selectedTabs('Audit')">
|
|
46
|
+
<a [ngClass]="selectedTab === 'Audit' ? 'active' :''" class="nav-link cursor-pointer no-border me-2">
|
|
47
|
+
Audit <span class="mx-2"
|
|
48
|
+
[ngClass]="selectedTab === 'Audit' ? 'text-border-priamry' : 'text-border'">{{totalCount?.auditCount ? totalCount?.auditCount : 0}}</span>
|
|
49
|
+
</a>
|
|
50
|
+
</li>
|
|
51
|
+
<li class="nav-item" (click)="selectedTabs('ReAudit')">
|
|
52
|
+
<a [ngClass]="selectedTab === 'ReAudit' ? 'active' : ''" class="nav-link cursor-pointer no-border me-2">
|
|
53
|
+
Re Audit <span class="mx-2"
|
|
54
|
+
[ngClass]="selectedTab === 'ReAudit' ? 'text-border-priamry' : 'text-border'">{{totalCount?.reauditCount ? totalCount?.reauditCount : 0}}</span>
|
|
55
|
+
</a>
|
|
56
|
+
</li>
|
|
57
|
+
</ul>
|
|
58
|
+
<div *ngIf="!loading && !noData" class="mt-5">
|
|
59
|
+
<div class="table-responsive">
|
|
60
|
+
<table class="table bottom-border text-nowrap">
|
|
61
|
+
<thead>
|
|
62
|
+
<tr>
|
|
63
|
+
<th>File Date</th>
|
|
64
|
+
<th><div class="cursor-pointer" (click)="sortData('storeName')">
|
|
65
|
+
Store Name
|
|
66
|
+
<span
|
|
67
|
+
*ngIf="sortColumName === 'storeName' && sortBy !== 1 || sortColumName !== 'storeName'">
|
|
68
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
69
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
70
|
+
<path
|
|
71
|
+
d="M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004"
|
|
72
|
+
stroke="#667085" stroke-width="1.33333"
|
|
73
|
+
stroke-linecap="round"
|
|
74
|
+
stroke-linejoin="round" />
|
|
75
|
+
</svg>
|
|
76
|
+
</span>
|
|
77
|
+
<span
|
|
78
|
+
*ngIf="sortColumName === 'storeName' && sortBy !== -1">
|
|
79
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
80
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
81
|
+
<path
|
|
82
|
+
d="M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004"
|
|
83
|
+
stroke="#667085" stroke-width="1.33333"
|
|
84
|
+
stroke-linecap="round"
|
|
85
|
+
stroke-linejoin="round" />
|
|
86
|
+
</svg>
|
|
87
|
+
</span>
|
|
88
|
+
|
|
89
|
+
</div></th>
|
|
90
|
+
<th><div class="cursor-pointer" (click)="sortData('storeId')">
|
|
91
|
+
Store Id
|
|
92
|
+
<span
|
|
93
|
+
*ngIf="sortColumName === 'storeId' && sortBy !== 1 || sortColumName !== 'storeId'">
|
|
94
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
95
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
96
|
+
<path
|
|
97
|
+
d="M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004"
|
|
98
|
+
stroke="#667085" stroke-width="1.33333"
|
|
99
|
+
stroke-linecap="round"
|
|
100
|
+
stroke-linejoin="round"/>
|
|
101
|
+
</svg>
|
|
102
|
+
</span>
|
|
103
|
+
<span
|
|
104
|
+
*ngIf="sortColumName === 'storeId' && sortBy !== -1">
|
|
105
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
106
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
107
|
+
<path
|
|
108
|
+
d="M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004"
|
|
109
|
+
stroke="#667085" stroke-width="1.33333"
|
|
110
|
+
stroke-linecap="round"
|
|
111
|
+
stroke-linejoin="round" />
|
|
112
|
+
</svg>
|
|
113
|
+
</span>
|
|
114
|
+
|
|
115
|
+
</div></th>
|
|
116
|
+
<th><div class="cursor-pointer" (click)="sortData('userName')">
|
|
117
|
+
User Name
|
|
118
|
+
<span
|
|
119
|
+
*ngIf="sortColumName === 'userName' && sortBy !== 1 || sortColumName !== 'userName'">
|
|
120
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
121
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
122
|
+
<path
|
|
123
|
+
d="M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004"
|
|
124
|
+
stroke="#667085" stroke-width="1.33333"
|
|
125
|
+
stroke-linecap="round"
|
|
126
|
+
stroke-linejoin="round" />
|
|
127
|
+
</svg>
|
|
128
|
+
</span>
|
|
129
|
+
<span
|
|
130
|
+
*ngIf="sortColumName === 'userName' && sortBy !== -1">
|
|
131
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
132
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
133
|
+
<path
|
|
134
|
+
d="M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004"
|
|
135
|
+
stroke="#667085" stroke-width="1.33333"
|
|
136
|
+
stroke-linecap="round"
|
|
137
|
+
stroke-linejoin="round"/>
|
|
138
|
+
</svg>
|
|
139
|
+
</span>
|
|
140
|
+
|
|
141
|
+
</div></th>
|
|
142
|
+
<th><div class="cursor-pointer" (click)="sortData('userEmail')">
|
|
143
|
+
User Email
|
|
144
|
+
<span
|
|
145
|
+
*ngIf="sortColumName === 'userEmail' && sortBy !== 1 || sortColumName !== 'userEmail'">
|
|
146
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
147
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
148
|
+
<path
|
|
149
|
+
d="M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004"
|
|
150
|
+
stroke="#667085" stroke-width="1.33333"
|
|
151
|
+
stroke-linecap="round"
|
|
152
|
+
stroke-linejoin="round" />
|
|
153
|
+
</svg>
|
|
154
|
+
</span>
|
|
155
|
+
<span
|
|
156
|
+
*ngIf="sortColumName === 'userEmail' && sortBy !== -1">
|
|
157
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
158
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
159
|
+
<path
|
|
160
|
+
d="M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004"
|
|
161
|
+
stroke="#667085" stroke-width="1.33333"
|
|
162
|
+
stroke-linecap="round"
|
|
163
|
+
stroke-linejoin="round" />
|
|
164
|
+
</svg>
|
|
165
|
+
</span>
|
|
166
|
+
|
|
167
|
+
</div></th>
|
|
168
|
+
<th>BC</th>
|
|
169
|
+
<th>AC</th>
|
|
170
|
+
<th><div class="cursor-pointer" (click)="sortData('accuracy')">
|
|
171
|
+
Accuracy
|
|
172
|
+
<span
|
|
173
|
+
*ngIf="sortColumName === 'accuracy' && sortBy !== 1 || sortColumName !== 'accuracy'">
|
|
174
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
175
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
176
|
+
<path
|
|
177
|
+
d="M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004"
|
|
178
|
+
stroke="#667085" stroke-width="1.33333"
|
|
179
|
+
stroke-linecap="round"
|
|
180
|
+
stroke-linejoin="round" />
|
|
181
|
+
</svg>
|
|
182
|
+
</span>
|
|
183
|
+
<span
|
|
184
|
+
*ngIf="sortColumName === 'accuracy' && sortBy !== -1">
|
|
185
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
186
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
187
|
+
<path
|
|
188
|
+
d="M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004"
|
|
189
|
+
stroke="#667085" stroke-width="1.33333"
|
|
190
|
+
stroke-linecap="round"
|
|
191
|
+
stroke-linejoin="round" />
|
|
192
|
+
</svg>
|
|
193
|
+
</span>
|
|
194
|
+
|
|
195
|
+
</div></th>
|
|
196
|
+
<th><div class="cursor-pointer" (click)="sortData('timeSpent')">
|
|
197
|
+
TimeSpent
|
|
198
|
+
<span
|
|
199
|
+
*ngIf="sortColumName === 'timeSpent' && sortBy !== 1 || sortColumName !== 'timeSpent'">
|
|
200
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
201
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
202
|
+
<path
|
|
203
|
+
d="M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004"
|
|
204
|
+
stroke="#667085" stroke-width="1.33333"
|
|
205
|
+
stroke-linecap="round"
|
|
206
|
+
stroke-linejoin="round" />
|
|
207
|
+
</svg>
|
|
208
|
+
</span>
|
|
209
|
+
<span
|
|
210
|
+
*ngIf="sortColumName === 'timeSpent' && sortBy !== -1">
|
|
211
|
+
<svg width="12" height="12" viewBox="0 0 12 12"
|
|
212
|
+
fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
213
|
+
<path
|
|
214
|
+
d="M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004"
|
|
215
|
+
stroke="#667085" stroke-width="1.33333"
|
|
216
|
+
stroke-linecap="round"
|
|
217
|
+
stroke-linejoin="round" />
|
|
218
|
+
</svg>
|
|
219
|
+
</span>
|
|
220
|
+
|
|
221
|
+
</div></th>
|
|
222
|
+
<th>Audit Type</th>
|
|
223
|
+
<th>Status</th>
|
|
224
|
+
<th><span>Actions</span></th>
|
|
225
|
+
</tr>
|
|
226
|
+
</thead>
|
|
227
|
+
<tbody>
|
|
228
|
+
<tr *ngFor="let item of storesData">
|
|
229
|
+
<td>
|
|
230
|
+
<div>{{ item?.fileDate ? item?.fileDate :'NA' }}</div>
|
|
231
|
+
</td>
|
|
232
|
+
<td>
|
|
233
|
+
<div>{{ item?.storeName ? item?.storeName :'NA' }}</div>
|
|
234
|
+
</td>
|
|
235
|
+
<td>
|
|
236
|
+
<div>{{item?.storeId ? item?.storeId : 'NA'}}</div>
|
|
237
|
+
</td>
|
|
238
|
+
<td>
|
|
239
|
+
<div>{{ item?.userName ? item?.userName :'NA' }}</div>
|
|
240
|
+
</td>
|
|
241
|
+
<td>
|
|
242
|
+
<div>{{ item?.userEmail ? item?.userEmail :'NA' }}</div>
|
|
243
|
+
</td>
|
|
244
|
+
<td>
|
|
245
|
+
<div class="d-flex align-items-center">
|
|
246
|
+
<div [ngClass]="item?.beforeCount ? 'text-decoration-underline':''" class="text-title text-primary cursor-pointer mb-1" (click)="openBeforecount(item)">
|
|
247
|
+
{{ item?.beforeCount ?? '--' }}</div>
|
|
248
|
+
</div>
|
|
249
|
+
</td>
|
|
250
|
+
<td>
|
|
251
|
+
<div class="d-flex align-items-center">
|
|
252
|
+
<div [ngClass]="item?.afterCount ? 'text-decoration-underline':''" class="text-title text-primary cursor-pointer mb-1" (click)="openAftercount(item)">
|
|
253
|
+
{{ item?.afterCount ?? '--' }}</div>
|
|
254
|
+
</div>
|
|
255
|
+
</td>
|
|
256
|
+
<td>
|
|
257
|
+
<div>{{ item?.accuracy ?? '--' }}</div>
|
|
258
|
+
</td>
|
|
259
|
+
<td>{{ item?.timeSpent ? item?.timeSpent :'NA'}}</td>
|
|
260
|
+
<td><span *ngIf="item?.auditType" [ngClass]="item?.auditType === 'Audit' ? 'badge-light-success':'badge-light-warning'" class="badge">{{ item?.auditType }}</span></td>
|
|
261
|
+
<td><span *ngIf="item?.status" [ngClass]="statusBadge(item?.status)" class="badge">{{ item?.status | titlecase}}</span></td>
|
|
262
|
+
<td><button class="btn btn-default btn-outline" (click)="openView()">View-Log</button>
|
|
263
|
+
<button class="btn btn-default btn-outline ms-3" [disabled]="item?.status === 'not_assign' || item?.status === 'assigned'" (click)="openreTrigger(item)">Re-Trigger</button></td>
|
|
264
|
+
</tr>
|
|
265
|
+
</tbody>
|
|
266
|
+
</table>
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
<div *ngIf="!loading && !noData" class="my-3">
|
|
270
|
+
<lib-pagination [itemsPerPage]="limit" [currentPage]="offset" [totalItems]="totalCount"
|
|
271
|
+
[paginationSizes]="pagination" [pageSize]="setItemsperPage()" (pageChange)="onPageChange($event)"
|
|
272
|
+
(pageSizeChange)="onPageSizeChange($event)"></lib-pagination>
|
|
273
|
+
</div>
|
|
274
|
+
|
|
275
|
+
<div *ngIf="loading" class="row loader d-flex justify-content-center align-items-center">
|
|
276
|
+
<div class="shimmer">
|
|
277
|
+
<div class="wrapper">
|
|
278
|
+
<div class="stroke animate title"></div>
|
|
279
|
+
<div class="stroke animate link"></div>
|
|
280
|
+
<div class="stroke animate description"></div>
|
|
281
|
+
</div>
|
|
282
|
+
</div>
|
|
283
|
+
<div class="shimmer">
|
|
284
|
+
<div class="wrapper">
|
|
285
|
+
<div class="stroke animate title"></div>
|
|
286
|
+
<div class="stroke animate link"></div>
|
|
287
|
+
<div class="stroke animate description"></div>
|
|
288
|
+
</div>
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
<div *ngIf="noData" class="row">
|
|
292
|
+
<div class="col-lg-12 mb-3">
|
|
293
|
+
<div class="card-body d-flex justify-content-center align-items-center flex-column">
|
|
294
|
+
<img class="img-src w-25" src="./assets/tango/Icons/Nodata.svg" alt="">
|
|
295
|
+
</div>
|
|
296
|
+
</div>
|
|
297
|
+
</div>
|
|
298
|
+
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
|
|
302
|
+
<ng-template #activitylog let-modal>
|
|
303
|
+
<div class="card">
|
|
304
|
+
<div class="card-header">
|
|
305
|
+
<div class="card-title">
|
|
306
|
+
<span class="card-label">Activity Log</span>
|
|
307
|
+
</div>
|
|
308
|
+
<div class="card-toolbar">
|
|
309
|
+
<div class="cursor-pointer" (click)="modal.dismiss()"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
|
|
310
|
+
<path d="M15 5L5 15M5 5L15 15" stroke="#101828" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
311
|
+
</svg></div>
|
|
312
|
+
</div>
|
|
313
|
+
</div>
|
|
314
|
+
<div class="card-body">
|
|
315
|
+
<div *ngFor="let log of activity" class="d-flex mb-5 ms-5">
|
|
316
|
+
<div
|
|
317
|
+
class="d-flex flex-column justify-content-center align-items-center pe-3">
|
|
318
|
+
<div class="d-flex align-items-centre justify-content-centre">
|
|
319
|
+
<!-- <img class="msgprofile"
|
|
320
|
+
src="./assets/tango/Images/userProfile.svg"> -->
|
|
321
|
+
<div class="symbol symbol-35px symbol-circle">
|
|
322
|
+
<span [ngClass]="log?.type === 'Audit' ? 'badge-light-success' : 'badge-light-primary'" class="symbol-label badge-light-primary text-symbol">
|
|
323
|
+
<span [ngClass]="log?.type === 'Audit' ? 'text-success badge badge-light-success' : 'text-primary badge badge-light-primary'" class="fs-4 fw-normal">
|
|
324
|
+
{{log?.type?.slice(0,1) | uppercase }}
|
|
325
|
+
</span>
|
|
326
|
+
</span>
|
|
327
|
+
</div>
|
|
328
|
+
</div>
|
|
329
|
+
<div class="p-0 h-100 mt-1 border border-1 border-gray" style="width:0px"></div>
|
|
330
|
+
</div>
|
|
331
|
+
<div class="py-3 pt-0">
|
|
332
|
+
<div class="activity-title fw-semibold mt-2 d-flex mb-4">
|
|
333
|
+
<span>{{log?.type}} </span><span class="ms-5 list"><li>Fasila</li></span>
|
|
334
|
+
</div>
|
|
335
|
+
<div class="date-time mb-4">
|
|
336
|
+
{{log?.FileDate}} | {{log?.Time}}
|
|
337
|
+
</div>
|
|
338
|
+
<div class=""><span class="badge badge-light-default fw-semibold">Before Count : {{log?.beforeCout}}</span>
|
|
339
|
+
<span class="badge badge-light-default fw-semibold ms-3">After Count : {{log?.AfterCount}}</span>
|
|
340
|
+
</div>
|
|
341
|
+
</div>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
</div>
|
|
345
|
+
</ng-template>
|