@hitsoft/kadooglu.kalite 0.0.0-stage → 1.0.1
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/README.md +23 -2
- package/config/enums/index.d.ts +1 -0
- package/config/enums/route-names.d.ts +5 -0
- package/config/index.d.ts +5 -0
- package/config/kalite-config.module.d.ts +8 -0
- package/config/providers/index.d.ts +1 -0
- package/config/providers/route.provider.d.ts +4 -0
- package/config/public-api.d.ts +3 -0
- package/esm2020/config/enums/index.mjs +2 -0
- package/esm2020/config/enums/route-names.mjs +2 -0
- package/esm2020/config/hitsoft-kadooglu.kalite-config.mjs +5 -0
- package/esm2020/config/kalite-config.module.mjs +18 -0
- package/esm2020/config/providers/index.mjs +2 -0
- package/esm2020/config/providers/route.provider.mjs +57 -0
- package/esm2020/config/public-api.mjs +4 -0
- package/esm2020/hitsoft-kadooglu.kalite.mjs +5 -0
- package/esm2020/lib/components/intake-form.component.mjs +162 -0
- package/esm2020/lib/components/intake-list.component.mjs +80 -0
- package/esm2020/lib/components/kalite.component.mjs +18 -0
- package/esm2020/lib/components/process-analysis.component.mjs +197 -0
- package/esm2020/lib/components/quality-definitions.component.mjs +97 -0
- package/esm2020/lib/components/quality-notifications.component.mjs +64 -0
- package/esm2020/lib/components/quality-parameters.component.mjs +332 -0
- package/esm2020/lib/components/quality-reports.component.mjs +107 -0
- package/esm2020/lib/kalite-notification.module.mjs +23 -0
- package/esm2020/lib/kalite-routing.module.mjs +41 -0
- package/esm2020/lib/kalite.module.mjs +41 -0
- package/esm2020/lib/models/intake.models.mjs +2 -0
- package/esm2020/lib/models/quality.models.mjs +2 -0
- package/esm2020/lib/services/kalite.service.mjs +21 -0
- package/esm2020/lib/services/print-form.mjs +96 -0
- package/esm2020/lib/services/quality-api.service.mjs +119 -0
- package/esm2020/lib/services/quality-measurements.mjs +127 -0
- package/esm2020/public-api.mjs +16 -0
- package/fesm2015/hitsoft-kadooglu.kalite-config.mjs +80 -0
- package/fesm2015/hitsoft-kadooglu.kalite-config.mjs.map +1 -0
- package/fesm2015/hitsoft-kadooglu.kalite.mjs +1483 -0
- package/fesm2015/hitsoft-kadooglu.kalite.mjs.map +1 -0
- package/fesm2020/hitsoft-kadooglu.kalite-config.mjs +80 -0
- package/fesm2020/hitsoft-kadooglu.kalite-config.mjs.map +1 -0
- package/fesm2020/hitsoft-kadooglu.kalite.mjs +1442 -0
- package/fesm2020/hitsoft-kadooglu.kalite.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/intake-form.component.d.ts +50 -0
- package/lib/components/intake-list.component.d.ts +48 -0
- package/lib/components/kalite.component.d.ts +10 -0
- package/lib/components/process-analysis.component.d.ts +46 -0
- package/lib/components/quality-definitions.component.d.ts +46 -0
- package/lib/components/quality-notifications.component.d.ts +44 -0
- package/lib/components/quality-parameters.component.d.ts +82 -0
- package/lib/components/quality-reports.component.d.ts +31 -0
- package/lib/kalite-notification.module.d.ts +14 -0
- package/lib/kalite-routing.module.d.ts +7 -0
- package/lib/kalite.module.d.ts +23 -0
- package/lib/models/intake.models.d.ts +185 -0
- package/lib/models/quality.models.d.ts +114 -0
- package/lib/services/kalite.service.d.ts +10 -0
- package/lib/services/print-form.d.ts +2 -0
- package/lib/services/quality-api.service.d.ts +71 -0
- package/lib/services/quality-measurements.d.ts +8 -0
- package/package.json +42 -3
- package/public-api.d.ts +12 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@abp/ng.core";
|
|
4
|
+
export class QualityApiService {
|
|
5
|
+
constructor(rest) {
|
|
6
|
+
this.rest = rest;
|
|
7
|
+
this.apiName = 'Kalite';
|
|
8
|
+
}
|
|
9
|
+
movementTypes() { return this.get('/api/kalite/definitions/movement-types'); }
|
|
10
|
+
qualityMovementTypes() { return this.get('/api/kalite/definitions/quality-movement-types'); }
|
|
11
|
+
reportForms() { return this.get('/api/kalite/definitions/forms'); }
|
|
12
|
+
definitionFacilities() { return this.get('/api/kalite/definitions/facilities'); }
|
|
13
|
+
movementDetails() { return this.get('/api/kalite/definitions/movement-details'); }
|
|
14
|
+
tanks() { return this.get('/api/kalite/definitions/tanks'); }
|
|
15
|
+
shifts() { return this.get('/api/kalite/definitions/shifts'); }
|
|
16
|
+
laborants() { return this.get('/api/kalite/definitions/laborants'); }
|
|
17
|
+
saveDetail(input, createOnly = false) { return this.put('/api/kalite/definitions/movement-detail?createOnly=' + createOnly, input); }
|
|
18
|
+
deleteDetail(code) { return this.delete(`/api/kalite/definitions/movement-detail/${encodeURIComponent(code)}`); }
|
|
19
|
+
saveTank(input, createOnly = false) { return this.put('/api/kalite/definitions/tank?createOnly=' + createOnly, input); }
|
|
20
|
+
deleteTank(code) { return this.delete(`/api/kalite/definitions/tank/${encodeURIComponent(code)}`); }
|
|
21
|
+
saveShift(input) { return this.put('/api/kalite/definitions/shift', input); }
|
|
22
|
+
deleteShift(code) { return this.delete(`/api/kalite/definitions/shift/${encodeURIComponent(code)}`); }
|
|
23
|
+
intakeList(query) { return this.get('/api/kalite/intake?' + this.query(query)); }
|
|
24
|
+
intake(id, detailCode, batchNumber) {
|
|
25
|
+
return this.get(`/api/kalite/intake/${id}?` + this.query({ detailCode, batchNumber }));
|
|
26
|
+
}
|
|
27
|
+
intakeTemplate(code) { return this.get(`/api/kalite/intake/template/${encodeURIComponent(code)}`); }
|
|
28
|
+
saveIntake(input) { return this.put('/api/kalite/intake', input); }
|
|
29
|
+
saveComposite(input) { return this.put('/api/kalite/intake/composite', input); }
|
|
30
|
+
cancelIntake(id, revision, reason) { return this.post(`/api/kalite/intake/${id}/cancel`, { revision, reason }); }
|
|
31
|
+
intakePdf(id) { return this.blob(`/api/kalite/intake/${id}/pdf`); }
|
|
32
|
+
report(filter, exportData = false) {
|
|
33
|
+
return this.get('/api/kalite/reports' + (exportData ? '/export' : '') + '?' + this.query(filter));
|
|
34
|
+
}
|
|
35
|
+
reportPdf(filter) { return this.blob('/api/kalite/reports/pdf?' + this.query(filter)); }
|
|
36
|
+
notifications() { return this.get('/api/kalite/notifications'); }
|
|
37
|
+
unreadNotifications() { return this.get('/api/kalite/notifications/unread-count'); }
|
|
38
|
+
readNotification(code) { return this.post(`/api/kalite/notifications/${encodeURIComponent(code)}/read`, {}); }
|
|
39
|
+
notificationSettings() { return this.get('/api/kalite/notifications/settings'); }
|
|
40
|
+
notificationFailures() { return this.get('/api/kalite/notifications/failures'); }
|
|
41
|
+
saveNotificationSettings(input) { return this.put('/api/kalite/notifications/settings', input); }
|
|
42
|
+
query(values) {
|
|
43
|
+
return Object.entries(values).filter(([, value]) => value != null && value !== '')
|
|
44
|
+
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`).join('&');
|
|
45
|
+
}
|
|
46
|
+
blob(url) {
|
|
47
|
+
return this.rest.request({ method: 'GET', url, responseType: 'blob' }, { apiName: this.apiName });
|
|
48
|
+
}
|
|
49
|
+
forms() {
|
|
50
|
+
return this.get('/api/kalite/parameters/forms');
|
|
51
|
+
}
|
|
52
|
+
template(code) {
|
|
53
|
+
return this.get(`/api/kalite/parameters/template/${encodeURIComponent(code)}`);
|
|
54
|
+
}
|
|
55
|
+
parameterFacilities() {
|
|
56
|
+
return this.get('/api/kalite/parameters/facilities');
|
|
57
|
+
}
|
|
58
|
+
steps(facilityCode) {
|
|
59
|
+
return this.get(`/api/kalite/parameters/steps/${encodeURIComponent(facilityCode)}`);
|
|
60
|
+
}
|
|
61
|
+
saveStep(step) {
|
|
62
|
+
return this.put('/api/kalite/parameters/step', step);
|
|
63
|
+
}
|
|
64
|
+
saveForm(form) {
|
|
65
|
+
return this.put('/api/kalite/parameters/form', form);
|
|
66
|
+
}
|
|
67
|
+
createParameter(parameter) {
|
|
68
|
+
return this.post('/api/kalite/parameters/parameter', parameter);
|
|
69
|
+
}
|
|
70
|
+
updateParameter(parameter) {
|
|
71
|
+
return this.put('/api/kalite/parameters/parameter', parameter);
|
|
72
|
+
}
|
|
73
|
+
deleteParameter(code) {
|
|
74
|
+
return this.delete(`/api/kalite/parameters/parameter/${encodeURIComponent(code)}`);
|
|
75
|
+
}
|
|
76
|
+
createLimit(limit) {
|
|
77
|
+
return this.post('/api/kalite/parameters/limit', limit);
|
|
78
|
+
}
|
|
79
|
+
updateLimit(limit) {
|
|
80
|
+
return this.put('/api/kalite/parameters/limit', limit);
|
|
81
|
+
}
|
|
82
|
+
deleteLimit(code) {
|
|
83
|
+
return this.delete(`/api/kalite/parameters/limit/${encodeURIComponent(code)}`);
|
|
84
|
+
}
|
|
85
|
+
facilities() {
|
|
86
|
+
return this.get('/api/kalite/process/facilities');
|
|
87
|
+
}
|
|
88
|
+
process(facilityCode, businessDate) {
|
|
89
|
+
return this.get(`/api/kalite/process?facilityCode=${encodeURIComponent(facilityCode)}&businessDate=${encodeURIComponent(businessDate)}`);
|
|
90
|
+
}
|
|
91
|
+
saveProcess(input) {
|
|
92
|
+
return this.put('/api/kalite/process', input);
|
|
93
|
+
}
|
|
94
|
+
decision(code, action, revision, reason) {
|
|
95
|
+
return this.post(`/api/kalite/process/${encodeURIComponent(code)}/${action}`, { revision, reason });
|
|
96
|
+
}
|
|
97
|
+
pdf(code) {
|
|
98
|
+
return this.rest.request({ method: 'GET', url: `/api/kalite/process/${encodeURIComponent(code)}/pdf`, responseType: 'blob' }, { apiName: this.apiName });
|
|
99
|
+
}
|
|
100
|
+
get(url) {
|
|
101
|
+
return this.rest.request({ method: 'GET', url }, { apiName: this.apiName });
|
|
102
|
+
}
|
|
103
|
+
post(url, body) {
|
|
104
|
+
return this.rest.request({ method: 'POST', url, body }, { apiName: this.apiName });
|
|
105
|
+
}
|
|
106
|
+
put(url, body) {
|
|
107
|
+
return this.rest.request({ method: 'PUT', url, body }, { apiName: this.apiName });
|
|
108
|
+
}
|
|
109
|
+
delete(url) {
|
|
110
|
+
return this.rest.request({ method: 'DELETE', url }, { apiName: this.apiName });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
QualityApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: QualityApiService, deps: [{ token: i1.RestService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
114
|
+
QualityApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: QualityApiService, providedIn: 'root' });
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: QualityApiService, decorators: [{
|
|
116
|
+
type: Injectable,
|
|
117
|
+
args: [{ providedIn: 'root' }]
|
|
118
|
+
}], ctorParameters: function () { return [{ type: i1.RestService }]; } });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eS1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thbGl0ZS9zcmMvbGliL3NlcnZpY2VzL3F1YWxpdHktYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBVzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUZwQixZQUFPLEdBQUcsUUFBUSxDQUFDO0lBRUksQ0FBQztJQUV6QyxhQUFhLEtBQWlDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRyxvQkFBb0IsS0FBaUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGdEQUFnRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pILFdBQVcsS0FBZ0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLG9CQUFvQixLQUFvQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEgsZUFBZSxLQUFtQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsMENBQTBDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEgsS0FBSyxLQUFnQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsTUFBTSxLQUFpQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0YsU0FBUyxLQUFvQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEcsVUFBVSxDQUFDLEtBQXFCLEVBQUUsVUFB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LElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFTyxHQUFHLENBQUksR0FBVztRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU8sSUFBSSxDQUFJLEdBQVcsRUFBRSxJQUFhO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU8sR0FBRyxDQUFJLEdBQVcsRUFBRSxJQUFhO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRU8sTUFBTSxDQUFJLEdBQVc7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQzs7OEdBeElVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTsyRkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vdmVtZW50VHlwZSwgTW92ZW1lbnREZXRhaWwsIFF1YWxpdHlUYW5rLCBRdWFsaXR5U2hpZnQsIEludGFrZUZvcm0sIEludGFrZUluc3BlY3Rpb24sXG4gIENvbXBvc2l0ZVNhbXBsZSwgSW50YWtlVmVoaWNsZSwgUGFnZWQsIFJlcG9ydEZpbHRlciwgUXVhbGl0eVJlcG9ydCwgUXVhbGl0eU5vdGlmaWNhdGlvbiwgTm90aWZpY2F0aW9uU2V0dGluZ3MsIFF1YWxpdHlMYWJvcmFudCB9IGZyb20gJy4uL21vZGVscy9pbnRha2UubW9kZWxzJztcbmltcG9ydCB7XG4gIFF1YWxpdHlBbmFseXNpcywgUXVhbGl0eUZhY2lsaXR5LCBRdWFsaXR5Rm9ybSwgUXVhbGl0eUxpbWl0LFxuICBRdWFsaXR5UGFyYW1ldGVyLCBRdWFsaXR5U3RlcCwgUXVhbGl0eVRlbXBsYXRlLFxufSBmcm9tICcuLi9tb2RlbHMvcXVhbGl0eS5tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFF1YWxpdHlBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlOYW1lID0gJ0thbGl0ZSc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0OiBSZXN0U2VydmljZSkge31cblxuICBtb3ZlbWVudFR5cGVzKCk6IE9ic2VydmFibGU8TW92ZW1lbnRUeXBlW10+IHsgcmV0dXJuIHRoaXMuZ2V0KCcvYXBpL2thbGl0ZS9kZWZpbml0aW9ucy9tb3ZlbWVudC10eXBlcycpOyB9XG4gIHF1YWxpdHlNb3ZlbWVudFR5cGVzKCk6IE9ic2VydmFibGU8TW92ZW1lbnRUeXBlW10+IHsgcmV0dXJuIHRoaXMuZ2V0KCcvYXBpL2thbGl0ZS9kZWZpbml0aW9ucy9xdWFsaXR5LW1vdmVtZW50LXR5cGVzJyk7IH1cbiAgcmVwb3J0Rm9ybXMoKTogT2JzZXJ2YWJsZTxRdWFsaXR5Rm9ybVtdPiB7IHJldHVybiB0aGlzLmdldCgnL2FwaS9rYWxpdGUvZGVmaW5pdGlvbnMvZm9ybXMnKTsgfVxuICBkZWZpbml0aW9uRmFjaWxpdGllcygpOiBPYnNlcnZhYmxlPFF1YWxpdHlGYWNpbGl0eVtdPiB7IHJldHVybiB0aGlzLmdldCgnL2FwaS9rYWxpdGUvZGVmaW5pdGlvbnMvZmFjaWxpdGllcycpOyB9XG4gIG1vdmVtZW50RGV0YWlscygpOiBPYnNlcnZhYmxlPE1vdmVtZW50RGV0YWlsW10+IHsgcmV0dXJuIHRoaXMuZ2V0KCcvYXBpL2thbGl0ZS9kZWZpbml0aW9ucy9tb3ZlbWVudC1kZXRhaWxzJyk7IH1cbiAgdGFua3MoKTogT2JzZXJ2YWJsZTxRdWFsaXR5VGFua1tdPiB7IHJldHVybiB0aGlzLmdldCgnL2FwaS9rYWxpdGUvZGVmaW5pdGlvbnMvdGFua3MnKTsgfVxuICBzaGlmdHMoKTogT2JzZXJ2YWJsZTxRdWFsaXR5U2hpZnRbXT4geyByZXR1cm4gdGhpcy5nZXQoJy9hcGkva2FsaXRlL2RlZmluaXRpb25zL3NoaWZ0cycpOyB9XG4gIGxhYm9yYW50cygpOiBPYnNlcnZhYmxlPFF1YWxpdHlMYWJvcmFudFtdPiB7IHJldHVybiB0aGlzLmdldCgnL2FwaS9rYWxpdGUvZGVmaW5pdGlvbnMvbGFib3JhbnRzJyk7IH1cbiAgc2F2ZURldGFpbChpbnB1dDogTW92ZW1lbnREZXRhaWwsIGNyZWF0ZU9ubHkgPSBmYWxzZSk6IE9ic2VydmFibGU8dm9pZD4geyByZXR1cm4gdGhpcy5wdXQoJy9hcGkva2FsaXRlL2RlZmluaXRpb25zL21vdmVtZW50LWRldGFpbD9jcmVhdGVPbmx5PScgKyBjcmVhdGVPbmx5LCBpbnB1dCk7IH1cbiAgZGVsZXRlRGV0YWlsKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4geyByZXR1cm4gdGhpcy5kZWxldGUoYC9hcGkva2FsaXRlL2RlZmluaXRpb25zL21vdmVtZW50LWRldGFpbC8ke2VuY29kZVVSSUNvbXBvbmVudChjb2RlKX1gKTsgfVxuICBzYXZlVGFuayhpbnB1dDogUXVhbGl0eVRhbmssIGNyZWF0ZU9ubHkgPSBmYWxzZSk6IE9ic2VydmFibGU8dm9pZD4geyByZXR1cm4gdGhpcy5wdXQoJy9hcGkva2FsaXRlL2RlZmluaXRpb25zL3Rhbms/Y3JlYXRlT25seT0nICsgY3JlYXRlT25seSwgaW5wdXQpOyB9XG4gIGRlbGV0ZVRhbmsoY29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7IHJldHVybiB0aGlzLmRlbGV0ZShgL2FwaS9rYWxpdGUvZGVmaW5pdGlvbnMvdGFuay8ke2VuY29kZVVSSUNvbXBvbmVudChjb2RlKX1gKTsgfVxuICBzYXZlU2hpZnQoaW5wdXQ6IFF1YWxpdHlTaGlmdCk6IE9ic2VydmFibGU8dm9pZD4geyByZXR1cm4gdGhpcy5wdXQoJy9hcGkva2FsaXRlL2RlZmluaXRpb25zL3NoaWZ0JywgaW5wdXQpOyB9XG4gIGRlbGV0ZVNoaWZ0KGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4geyByZXR1cm4gdGhpcy5kZWxldGUoYC9hcGkva2FsaXRlL2RlZmluaXRpb25zL3NoaWZ0LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvZGUpfWApOyB9XG4gIGludGFrZUxpc3QocXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogT2JzZXJ2YWJsZTxQYWdlZDxJbnRha2VWZWhpY2xlPj4geyByZXR1cm4gdGhpcy5nZXQoJy9hcGkva2FsaXRlL2ludGFrZT8nICsgdGhpcy5xdWVyeShxdWVyeSkpOyB9XG4gIGludGFrZShpZDogbnVtYmVyLCBkZXRhaWxDb2RlPzogc3RyaW5nLCBiYXRjaE51bWJlcj86IHN0cmluZyk6IE9ic2VydmFibGU8SW50YWtlRm9ybT4ge1xuICAgIHJldHVybiB0aGlzLmdldChgL2FwaS9rYWxpdGUvaW50YWtlLyR7aWR9P2AgKyB0aGlzLnF1ZXJ5KHsgZGV0YWlsQ29kZSwgYmF0Y2hOdW1iZXIgfSkpO1xuICB9XG4gIGludGFrZVRlbXBsYXRlKGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8UXVhbGl0eVRlbXBsYXRlPiB7IHJldHVybiB0aGlzLmdldChgL2FwaS9rYWxpdGUvaW50YWtlL3RlbXBsYXRlLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvZGUpfWApOyB9XG4gIHNhdmVJbnRha2UoaW5wdXQ6IHVua25vd24pOiBPYnNlcnZhYmxlPEludGFrZUluc3BlY3Rpb24+IHsgcmV0dXJuIHRoaXMucHV0KCcvYXBpL2thbGl0ZS9pbnRha2UnLCBpbnB1dCk7IH1cbiAgc2F2ZUNvbXBvc2l0ZShpbnB1dDogdW5rbm93bik6IE9ic2VydmFibGU8Q29tcG9zaXRlU2FtcGxlPiB7IHJldHVybiB0aGlzLnB1dCgnL2FwaS9rYWxpdGUvaW50YWtlL2NvbXBvc2l0ZScsIGlucHV0KTsgfVxuICBjYW5jZWxJbnRha2UoaWQ6IG51bWJlciwgcmV2aXNpb246IG51bWJlciwgcmVhc29uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHsgcmV0dXJuIHRoaXMucG9zdChgL2FwaS9rYWxpdGUvaW50YWtlLyR7aWR9L2NhbmNlbGAsIHsgcmV2aXNpb24sIHJlYXNvbiB9KTsgfVxuICBpbnRha2VQZGYoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8QmxvYj4geyByZXR1cm4gdGhpcy5ibG9iKGAvYXBpL2thbGl0ZS9pbnRha2UvJHtpZH0vcGRmYCk7IH1cbiAgcmVwb3J0KGZpbHRlcjogUmVwb3J0RmlsdGVyLCBleHBvcnREYXRhID0gZmFsc2UpOiBPYnNlcnZhYmxlPFF1YWxpdHlSZXBvcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJy9hcGkva2FsaXRlL3JlcG9ydHMnICsgKGV4cG9ydERhdGEgPyAnL2V4cG9ydCcgOiAnJykgKyAnPycgKyB0aGlzLnF1ZXJ5KGZpbHRlcikpO1xuICB9XG4gIHJlcG9ydFBkZihmaWx0ZXI6IFJlcG9ydEZpbHRlcik6IE9ic2VydmFibGU8QmxvYj4geyByZXR1cm4gdGhpcy5ibG9iKCcvYXBpL2thbGl0ZS9yZXBvcnRzL3BkZj8nICsgdGhpcy5xdWVyeShmaWx0ZXIpKTsgfVxuICBub3RpZmljYXRpb25zKCk6IE9ic2VydmFibGU8UXVhbGl0eU5vdGlmaWNhdGlvbltdPiB7IHJldHVybiB0aGlzLmdldCgnL2FwaS9rYWxpdGUvbm90aWZpY2F0aW9ucycpOyB9XG4gIHVucmVhZE5vdGlmaWNhdGlvbnMoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHsgcmV0dXJuIHRoaXMuZ2V0KCcvYXBpL2thbGl0ZS9ub3RpZmljYXRpb25zL3VucmVhZC1jb3VudCcpOyB9XG4gIHJlYWROb3RpZmljYXRpb24oY29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7IHJldHVybiB0aGlzLnBvc3QoYC9hcGkva2FsaXRlL25vdGlmaWNhdGlvbnMvJHtlbmNvZGVVUklDb21wb25lbnQoY29kZSl9L3JlYWRgLCB7fSk7IH1cbiAgbm90aWZpY2F0aW9uU2V0dGluZ3MoKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25TZXR0aW5ncz4geyByZXR1cm4gdGhpcy5nZXQoJy9hcGkva2FsaXRlL25vdGlmaWNhdGlvbnMvc2V0dGluZ3MnKTsgfVxuICBub3RpZmljYXRpb25GYWlsdXJlcygpOiBPYnNlcnZhYmxlPFF1YWxpdHlOb3RpZmljYXRpb25bXT4geyByZXR1cm4gdGhpcy5nZXQoJy9hcGkva2FsaXRlL25vdGlmaWNhdGlvbnMvZmFpbHVyZXMnKTsgfVxuICBzYXZlTm90aWZpY2F0aW9uU2V0dGluZ3MoaW5wdXQ6IE5vdGlmaWNhdGlvblNldHRpbmdzKTogT2JzZXJ2YWJsZTx2b2lkPiB7IHJldHVybiB0aGlzLnB1dCgnL2FwaS9rYWxpdGUvbm90aWZpY2F0aW9ucy9zZXR0aW5ncycsIGlucHV0KTsgfVxuXG4gIHByaXZhdGUgcXVlcnkodmFsdWVzOiBvYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh2YWx1ZXMpLmZpbHRlcigoWywgdmFsdWVdKSA9PiB2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSAnJylcbiAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2YWx1ZSkpfWApLmpvaW4oJyYnKTtcbiAgfVxuICBwcml2YXRlIGJsb2IodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEJsb2I+IHtcbiAgICByZXR1cm4gdGhpcy5yZXN0LnJlcXVlc3Q8dm9pZCwgQmxvYj4oeyBtZXRob2Q6ICdHRVQnLCB1cmwsIHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0sIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuICB9XG5cbiAgZm9ybXMoKTogT2JzZXJ2YWJsZTxRdWFsaXR5Rm9ybVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCcvYXBpL2thbGl0ZS9wYXJhbWV0ZXJzL2Zvcm1zJyk7XG4gIH1cblxuICB0ZW1wbGF0ZShjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFF1YWxpdHlUZW1wbGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLmdldChgL2FwaS9rYWxpdGUvcGFyYW1ldGVycy90ZW1wbGF0ZS8ke2VuY29kZVVSSUNvbXBvbmVudChjb2RlKX1gKTtcbiAgfVxuXG4gIHBhcmFtZXRlckZhY2lsaXRpZXMoKTogT2JzZXJ2YWJsZTxRdWFsaXR5RmFjaWxpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgnL2FwaS9rYWxpdGUvcGFyYW1ldGVycy9mYWNpbGl0aWVzJyk7XG4gIH1cblxuICBzdGVwcyhmYWNpbGl0eUNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8UXVhbGl0eVN0ZXBbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldChgL2FwaS9rYWxpdGUvcGFyYW1ldGVycy9zdGVwcy8ke2VuY29kZVVSSUNvbXBvbmVudChmYWNpbGl0eUNvZGUpfWApO1xuICB9XG5cbiAgc2F2ZVN0ZXAoc3RlcDogUXVhbGl0eVN0ZXApOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5wdXQoJy9hcGkva2FsaXRlL3BhcmFtZXRlcnMvc3RlcCcsIHN0ZXApO1xuICB9XG5cbiAgc2F2ZUZvcm0oZm9ybTogUXVhbGl0eUZvcm0pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5wdXQoJy9hcGkva2FsaXRlL3BhcmFtZXRlcnMvZm9ybScsIGZvcm0pO1xuICB9XG5cbiAgY3JlYXRlUGFyYW1ldGVyKHBhcmFtZXRlcjogUXVhbGl0eVBhcmFtZXRlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnBvc3QoJy9hcGkva2FsaXRlL3BhcmFtZXRlcnMvcGFyYW1ldGVyJywgcGFyYW1ldGVyKTtcbiAgfVxuXG4gIHVwZGF0ZVBhcmFtZXRlcihwYXJhbWV0ZXI6IFF1YWxpdHlQYXJhbWV0ZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5wdXQoJy9hcGkva2FsaXRlL3BhcmFtZXRlcnMvcGFyYW1ldGVyJywgcGFyYW1ldGVyKTtcbiAgfVxuXG4gIGRlbGV0ZVBhcmFtZXRlcihjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGUoYC9hcGkva2FsaXRlL3BhcmFtZXRlcnMvcGFyYW1ldGVyLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvZGUpfWApO1xuICB9XG5cbiAgY3JlYXRlTGltaXQobGltaXQ6IFF1YWxpdHlMaW1pdCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnBvc3QoJy9hcGkva2FsaXRlL3BhcmFtZXRlcnMvbGltaXQnLCBsaW1pdCk7XG4gIH1cblxuICB1cGRhdGVMaW1pdChsaW1pdDogUXVhbGl0eUxpbWl0KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucHV0KCcvYXBpL2thbGl0ZS9wYXJhbWV0ZXJzL2xpbWl0JywgbGltaXQpO1xuICB9XG5cbiAgZGVsZXRlTGltaXQoY29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlKGAvYXBpL2thbGl0ZS9wYXJhbWV0ZXJzL2xpbWl0LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvZGUpfWApO1xuICB9XG5cbiAgZmFjaWxpdGllcygpOiBPYnNlcnZhYmxlPFF1YWxpdHlGYWNpbGl0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCcvYXBpL2thbGl0ZS9wcm9jZXNzL2ZhY2lsaXRpZXMnKTtcbiAgfVxuXG4gIHByb2Nlc3MoZmFjaWxpdHlDb2RlOiBzdHJpbmcsIGJ1c2luZXNzRGF0ZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxRdWFsaXR5QW5hbHlzaXM+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoYC9hcGkva2FsaXRlL3Byb2Nlc3M/ZmFjaWxpdHlDb2RlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGZhY2lsaXR5Q29kZSl9JmJ1c2luZXNzRGF0ZT0ke2VuY29kZVVSSUNvbXBvbmVudChidXNpbmVzc0RhdGUpfWApO1xuICB9XG5cbiAgc2F2ZVByb2Nlc3MoaW5wdXQ6IHtcbiAgICBmYWNpbGl0eUNvZGU6IHN0cmluZzsgYnVzaW5lc3NEYXRlOiBzdHJpbmc7IG9pbFR5cGU6IHN0cmluZztcbiAgICBub3Rlczogc3RyaW5nOyByZXZpc2lvbjogbnVtYmVyOyBob3VyczogUXVhbGl0eUFuYWx5c2lzWydob3VycyddO1xuICB9KTogT2JzZXJ2YWJsZTxRdWFsaXR5QW5hbHlzaXM+IHtcbiAgICByZXR1cm4gdGhpcy5wdXQoJy9hcGkva2FsaXRlL3Byb2Nlc3MnLCBpbnB1dCk7XG4gIH1cblxuICBkZWNpc2lvbihjb2RlOiBzdHJpbmcsIGFjdGlvbjogJ3NpZ24nIHwgJ2NoZWNrJyB8ICdhcHByb3ZlJyB8ICdyZXZva2UnLFxuICAgIHJldmlzaW9uOiBudW1iZXIsIHJlYXNvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxRdWFsaXR5QW5hbHlzaXM+IHtcbiAgICByZXR1cm4gdGhpcy5wb3N0KGAvYXBpL2thbGl0ZS9wcm9jZXNzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvZGUpfS8ke2FjdGlvbn1gLCB7IHJldmlzaW9uLCByZWFzb24gfSk7XG4gIH1cblxuICBwZGYoY29kZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PHZvaWQsIEJsb2I+KFxuICAgICAgeyBtZXRob2Q6ICdHRVQnLCB1cmw6IGAvYXBpL2thbGl0ZS9wcm9jZXNzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvZGUpfS9wZGZgLCByZXNwb25zZVR5cGU6ICdibG9iJyB9LFxuICAgICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldDxUPih1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDx2b2lkLCBUPih7IG1ldGhvZDogJ0dFVCcsIHVybCB9LCB7IGFwaU5hbWU6IHRoaXMuYXBpTmFtZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keTogdW5rbm93bik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDx1bmtub3duLCBUPih7IG1ldGhvZDogJ1BPU1QnLCB1cmwsIGJvZHkgfSwgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfSk7XG4gIH1cblxuICBwcml2YXRlIHB1dDxUPih1cmw6IHN0cmluZywgYm9keTogdW5rbm93bik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlc3QucmVxdWVzdDx1bmtub3duLCBUPih7IG1ldGhvZDogJ1BVVCcsIHVybCwgYm9keSB9LCB7IGFwaU5hbWU6IHRoaXMuYXBpTmFtZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlPFQ+KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVzdC5yZXF1ZXN0PHZvaWQsIFQ+KHsgbWV0aG9kOiAnREVMRVRFJywgdXJsIH0sIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
export function applicableLimit(limits, code, date, oilType = '', origin = '') {
|
|
2
|
+
return limits.filter(l => l.active && l.parameterCode === code && (!l.oilType || l.oilType === oilType) &&
|
|
3
|
+
(!l.origin || l.origin === origin) && (!l.validFrom || l.validFrom.slice(0, 10) <= date) &&
|
|
4
|
+
(!l.validUntil || l.validUntil.slice(0, 10) >= date))
|
|
5
|
+
.sort((a, b) => Number(!!b.oilType) + Number(!!b.origin) - Number(!!a.oilType) - Number(!!a.origin) ||
|
|
6
|
+
(b.validFrom || '').localeCompare(a.validFrom || ''))[0];
|
|
7
|
+
}
|
|
8
|
+
// A small arithmetic parser; formulas are never executed as JavaScript.
|
|
9
|
+
export function evaluateFormula(formula, resolve) {
|
|
10
|
+
let pos = 0;
|
|
11
|
+
const space = () => { while (/\s/.test(formula[pos] || '') && pos < formula.length)
|
|
12
|
+
pos++; };
|
|
13
|
+
const take = (ch) => { space(); if (formula[pos] !== ch)
|
|
14
|
+
return false; pos++; return true; };
|
|
15
|
+
const binary = (a, b, op) => {
|
|
16
|
+
if (a == null || b == null)
|
|
17
|
+
return null;
|
|
18
|
+
if (op === '/' && b === 0)
|
|
19
|
+
throw new Error('Formülde sıfıra bölme var.');
|
|
20
|
+
return op === '+' ? a + b : op === '-' ? a - b : op === '*' ? a * b : a / b;
|
|
21
|
+
};
|
|
22
|
+
const factor = () => {
|
|
23
|
+
space();
|
|
24
|
+
if (take('-')) {
|
|
25
|
+
const value = factor();
|
|
26
|
+
return value == null ? null : -value;
|
|
27
|
+
}
|
|
28
|
+
if (take('(')) {
|
|
29
|
+
const value = expression();
|
|
30
|
+
if (!take(')'))
|
|
31
|
+
throw new Error('Formül parantezi kapanmamış.');
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
if (take('[')) {
|
|
35
|
+
const end = formula.indexOf(']', pos);
|
|
36
|
+
if (end < 0)
|
|
37
|
+
throw new Error('Parametre kodu kapanmamış.');
|
|
38
|
+
const key = formula.slice(pos, end);
|
|
39
|
+
pos = end + 1;
|
|
40
|
+
return resolve(key);
|
|
41
|
+
}
|
|
42
|
+
const token = formula.slice(pos).match(/^[\p{L}\p{N}_.]+/u)?.[0];
|
|
43
|
+
if (!token)
|
|
44
|
+
throw new Error('Geçersiz hesaplama formülü.');
|
|
45
|
+
pos += token.length;
|
|
46
|
+
return /^\d+(\.\d+)?$/.test(token) ? Number(token) : resolve(token);
|
|
47
|
+
};
|
|
48
|
+
const term = () => {
|
|
49
|
+
let value = factor();
|
|
50
|
+
while (true) {
|
|
51
|
+
if (take('*'))
|
|
52
|
+
value = binary(value, factor(), '*');
|
|
53
|
+
else if (take('/'))
|
|
54
|
+
value = binary(value, factor(), '/');
|
|
55
|
+
else
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const expression = () => {
|
|
60
|
+
let value = term();
|
|
61
|
+
while (true) {
|
|
62
|
+
if (take('+'))
|
|
63
|
+
value = binary(value, term(), '+');
|
|
64
|
+
else if (take('-'))
|
|
65
|
+
value = binary(value, term(), '-');
|
|
66
|
+
else
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const value = expression();
|
|
71
|
+
space();
|
|
72
|
+
if (pos !== formula.length || (value != null && !Number.isFinite(value)))
|
|
73
|
+
throw new Error('Geçersiz hesaplama sonucu.');
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
export function recalculate(parameters, values, limits, date, oilType = '', origin = '') {
|
|
77
|
+
const visiting = new Set();
|
|
78
|
+
const resolved = new Map();
|
|
79
|
+
const valueFor = (p) => {
|
|
80
|
+
let value = values.find(x => x.parameterCode === p.code);
|
|
81
|
+
if (!value) {
|
|
82
|
+
value = { parameterCode: p.code, number: null, text: '' };
|
|
83
|
+
values.push(value);
|
|
84
|
+
}
|
|
85
|
+
return value;
|
|
86
|
+
};
|
|
87
|
+
const resolve = (code) => {
|
|
88
|
+
if (resolved.has(code))
|
|
89
|
+
return resolved.get(code);
|
|
90
|
+
const p = parameters.find(x => x.code === code);
|
|
91
|
+
if (!p)
|
|
92
|
+
throw new Error(`Formülde tanımsız parametre: ${code}`);
|
|
93
|
+
if (visiting.has(code))
|
|
94
|
+
throw new Error('Hesaplama formülünde döngü var.');
|
|
95
|
+
visiting.add(code);
|
|
96
|
+
const number = p.calculated ? evaluateFormula(p.formula, resolve) : valueFor(p).number;
|
|
97
|
+
const result = p.calculated && number != null ? Number(number.toFixed(p.decimalPlaces)) : number;
|
|
98
|
+
if (p.calculated)
|
|
99
|
+
valueFor(p).number = result;
|
|
100
|
+
visiting.delete(code);
|
|
101
|
+
resolved.set(code, result);
|
|
102
|
+
return result;
|
|
103
|
+
};
|
|
104
|
+
for (const p of parameters) {
|
|
105
|
+
resolve(p.code);
|
|
106
|
+
const v = valueFor(p);
|
|
107
|
+
const l = applicableLimit(limits, p.code, date, oilType, origin);
|
|
108
|
+
v.appliedMinimum = l?.minimum;
|
|
109
|
+
v.appliedMaximum = l?.maximum;
|
|
110
|
+
v.appliedNominal = l?.nominal;
|
|
111
|
+
v.appliedExpectedText = l?.expectedText;
|
|
112
|
+
v.outOfLimit = !!l && ((v.number != null && ((l.minimum != null && v.number < l.minimum) ||
|
|
113
|
+
(l.maximum != null && v.number > l.maximum))) || (!!v.text && !!l.expectedText && v.text.trim().toLocaleLowerCase('tr-TR') !== l.expectedText.trim().toLocaleLowerCase('tr-TR')));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export function download(blob, name) {
|
|
117
|
+
const url = URL.createObjectURL(blob);
|
|
118
|
+
const link = document.createElement('a');
|
|
119
|
+
link.href = url;
|
|
120
|
+
link.download = name;
|
|
121
|
+
link.click();
|
|
122
|
+
setTimeout(() => URL.revokeObjectURL(url), 1000);
|
|
123
|
+
}
|
|
124
|
+
export function localDate(date = new Date()) { return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`; }
|
|
125
|
+
export function errorMessage(error) { return error?.error?.error?.message || error?.error?.message || 'İşlem tamamlanamadı. Bağlantıyı ve alanları kontrol edin.'; }
|
|
126
|
+
export function statusLabel(status) { return { Waiting: 'Kalite Kontrol Bekliyor', Draft: 'Taslak', Accepted: 'Kalite Kontrol Kabul', Rejected: 'Kalite Kontrol Ret', Approved: 'Onaylı', LaborantSigned: 'Laborant İmzalı', Checked: 'Kontrol Edildi' }[status] || status || '—'; }
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGl0eS1tZWFzdXJlbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rYWxpdGUvc3JjL2xpYi9zZXJ2aWNlcy9xdWFsaXR5LW1lYXN1cmVtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQXNCLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFO0lBQzNHLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztTQUNwRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFD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QUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNySSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBQ0QsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsSUFBWSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuTCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQVUsSUFBWSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSwyREFBMkQsQ0FBQyxDQUFDLENBQUM7QUFDakwsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFjLElBQVksT0FBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUE2QixDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVhbGl0eUxpbWl0LCBRdWFsaXR5TWVhc3VyZW1lbnQsIFF1YWxpdHlQYXJhbWV0ZXIgfSBmcm9tICcuLi9tb2RlbHMvcXVhbGl0eS5tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYWJsZUxpbWl0KGxpbWl0czogUXVhbGl0eUxpbWl0W10sIGNvZGU6IHN0cmluZywgZGF0ZTogc3RyaW5nLCBvaWxUeXBlID0gJycsIG9yaWdpbiA9ICcnKTogUXVhbGl0eUxpbWl0IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGxpbWl0cy5maWx0ZXIobCA9PiBsLmFjdGl2ZSAmJiBsLnBhcmFtZXRlckNvZGUgPT09IGNvZGUgJiYgKCFsLm9pbFR5cGUgfHwgbC5vaWxUeXBlID09PSBvaWxUeXBlKSAmJlxuICAgICghbC5vcmlnaW4gfHwgbC5vcmlnaW4gPT09IG9yaWdpbikgJiYgKCFsLnZhbGlkRnJvbSB8fCBsLnZhbGlkRnJvbS5zbGljZSgwLCAxMCkgPD0gZGF0ZSkgJiZcbiAgICAoIWwudmFsaWRVbnRpbCB8fCBsLnZhbGlkVW50aWwuc2xpY2UoMCwgMTApID49IGRhdGUpKVxuICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoISFiLm9pbFR5cGUpICsgTnVtYmVyKCEhYi5vcmlnaW4pIC0gTnVtYmVyKCEhYS5vaWxUeXBlKSAtIE51bWJlcighIWEub3JpZ2luKSB8fFxuICAgICAgKGIudmFsaWRGcm9tIHx8ICcnKS5sb2NhbGVDb21wYXJlKGEudmFsaWRGcm9tIHx8ICcnKSlbMF07XG59XG5cbi8vIEEgc21hbGwgYXJpdGhtZXRpYyBwYXJzZXI7IGZvcm11bGFzIGFyZSBuZXZlciBleGVjdXRlZCBhcyBKYXZhU2NyaXB0LlxuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlRm9ybXVsYShmb3JtdWxhOiBzdHJpbmcsIHJlc29sdmU6IChjb2RlOiBzdHJpbmcpID0+IG51bWJlciB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcbiAgbGV0IHBvcyA9IDA7XG4gIGNvbnN0IHNwYWNlID0gKCkgPT4geyB3aGlsZSAoL1xccy8udGVzdChmb3JtdWxhW3Bvc10gfHwgJycpICYmIHBvcyA8IGZvcm11bGEubGVuZ3RoKSBwb3MrKzsgfTtcbiAgY29uc3QgdGFrZSA9IChjaDogc3RyaW5nKSA9PiB7IHNwYWNlKCk7IGlmIChmb3JtdWxhW3Bvc10gIT09IGNoKSByZXR1cm4gZmFsc2U7IHBvcysrOyByZXR1cm4gdHJ1ZTsgfTtcbiAgY29uc3QgYmluYXJ5ID0gKGE6IG51bWJlciB8IG51bGwsIGI6IG51bWJlciB8IG51bGwsIG9wOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgICBpZiAoYSA9PSBudWxsIHx8IGIgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKG9wID09PSAnLycgJiYgYiA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdGb3Jtw7xsZGUgc8SxZsSxcmEgYsO2bG1lIHZhci4nKTtcbiAgICByZXR1cm4gb3AgPT09ICcrJyA/IGEgKyBiIDogb3AgPT09ICctJyA/IGEgLSBiIDogb3AgPT09ICcqJyA/IGEgKiBiIDogYSAvIGI7XG4gIH07XG4gIGNvbnN0IGZhY3RvciA9ICgpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgICBzcGFjZSgpO1xuICAgIGlmICh0YWtlKCctJykpIHsgY29uc3QgdmFsdWUgPSBmYWN0b3IoKTsgcmV0dXJuIHZhbHVlID09IG51bGwgPyBudWxsIDogLXZhbHVlOyB9XG4gICAgaWYgKHRha2UoJygnKSkgeyBjb25zdCB2YWx1ZSA9IGV4cHJlc3Npb24oKTsgaWYgKCF0YWtlKCcpJykpIHRocm93IG5ldyBFcnJvcignRm9ybcO8bCBwYXJhbnRlemkga2FwYW5tYW3EscWfLicpOyByZXR1cm4gdmFsdWU7IH1cbiAgICBpZiAodGFrZSgnWycpKSB7IGNvbnN0IGVuZCA9IGZvcm11bGEuaW5kZXhPZignXScsIHBvcyk7IGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgRXJyb3IoJ1BhcmFtZXRyZSBrb2R1IGthcGFubWFtxLHFny4nKTsgY29uc3Qga2V5ID0gZm9ybXVsYS5zbGljZShwb3MsIGVuZCk7IHBvcyA9IGVuZCArIDE7IHJldHVybiByZXNvbHZlKGtleSk7IH1cbiAgICBjb25zdCB0b2tlbiA9IGZvcm11bGEuc2xpY2UocG9zKS5tYXRjaCgvXltcXHB7TH1cXHB7Tn1fLl0rL3UpPy5bMF07XG4gICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdHZcOnZXJzaXogaGVzYXBsYW1hIGZvcm3DvGzDvC4nKTtcbiAgICBwb3MgKz0gdG9rZW4ubGVuZ3RoO1xuICAgIHJldHVybiAvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0b2tlbikgPyBOdW1iZXIodG9rZW4pIDogcmVzb2x2ZSh0b2tlbik7XG4gIH07XG4gIGNvbnN0IHRlcm0gPSAoKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gICAgbGV0IHZhbHVlID0gZmFjdG9yKCk7XG4gICAgd2hpbGUgKHRydWUpIHsgaWYgKHRha2UoJyonKSkgdmFsdWUgPSBiaW5hcnkodmFsdWUsIGZhY3RvcigpLCAnKicpOyBlbHNlIGlmICh0YWtlKCcvJykpIHZhbHVlID0gYmluYXJ5KHZhbHVlLCBmYWN0b3IoKSwgJy8nKTsgZWxzZSByZXR1cm4gdmFsdWU7IH1cbiAgfTtcbiAgY29uc3QgZXhwcmVzc2lvbiA9ICgpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgICBsZXQgdmFsdWUgPSB0ZXJtKCk7XG4gICAgd2hpbGUgKHRydWUpIHsgaWYgKHRha2UoJysnKSkgdmFsdWUgPSBiaW5hcnkodmFsdWUsIHRlcm0oKSwgJysnKTsgZWxzZSBpZiAodGFrZSgnLScpKSB2YWx1ZSA9IGJpbmFyeSh2YWx1ZSwgdGVybSgpLCAnLScpOyBlbHNlIHJldHVybiB2YWx1ZTsgfVxuICB9O1xuICBjb25zdCB2YWx1ZSA9IGV4cHJlc3Npb24oKTsgc3BhY2UoKTtcbiAgaWYgKHBvcyAhPT0gZm9ybXVsYS5sZW5ndGggfHwgKHZhbHVlICE9IG51bGwgJiYgIU51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpKSB0aHJvdyBuZXcgRXJyb3IoJ0dlw6dlcnNpeiBoZXNhcGxhbWEgc29udWN1LicpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNhbGN1bGF0ZShwYXJhbWV0ZXJzOiBRdWFsaXR5UGFyYW1ldGVyW10sIHZhbHVlczogUXVhbGl0eU1lYXN1cmVtZW50W10sIGxpbWl0czogUXVhbGl0eUxpbWl0W10sIGRhdGU6IHN0cmluZywgb2lsVHlwZSA9ICcnLCBvcmlnaW4gPSAnJyk6IHZvaWQge1xuICBjb25zdCB2aXNpdGluZyA9IG5ldyBTZXQ8c3RyaW5nPigpOyBjb25zdCByZXNvbHZlZCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXIgfCBudWxsPigpO1xuICBjb25zdCB2YWx1ZUZvciA9IChwOiBRdWFsaXR5UGFyYW1ldGVyKTogUXVhbGl0eU1lYXN1cmVtZW50ID0+IHtcbiAgICBsZXQgdmFsdWUgPSB2YWx1ZXMuZmluZCh4ID0+IHgucGFyYW1ldGVyQ29kZSA9PT0gcC5jb2RlKTtcbiAgICBpZiAoIXZhbHVlKSB7IHZhbHVlID0geyBwYXJhbWV0ZXJDb2RlOiBwLmNvZGUsIG51bWJlcjogbnVsbCwgdGV4dDogJycgfTsgdmFsdWVzLnB1c2godmFsdWUpOyB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuICBjb25zdCByZXNvbHZlID0gKGNvZGU6IHN0cmluZyk6IG51bWJlciB8IG51bGwgPT4ge1xuICAgIGlmIChyZXNvbHZlZC5oYXMoY29kZSkpIHJldHVybiByZXNvbHZlZC5nZXQoY29kZSkhO1xuICAgIGNvbnN0IHAgPSBwYXJhbWV0ZXJzLmZpbmQoeCA9PiB4LmNvZGUgPT09IGNvZGUpO1xuICAgIGlmICghcCkgdGhyb3cgbmV3IEVycm9yKGBGb3Jtw7xsZGUgdGFuxLFtc8SxeiBwYXJhbWV0cmU6ICR7Y29kZX1gKTtcbiAgICBpZiAodmlzaXRpbmcuaGFzKGNvZGUpKSB0aHJvdyBuZXcgRXJyb3IoJ0hlc2FwbGFtYSBmb3Jtw7xsw7xuZGUgZMO2bmfDvCB2YXIuJyk7XG4gICAgdmlzaXRpbmcuYWRkKGNvZGUpO1xuICAgIGNvbnN0IG51bWJlciA9IHAuY2FsY3VsYXRlZCA/IGV2YWx1YXRlRm9ybXVsYShwLmZvcm11bGEsIHJlc29sdmUpIDogdmFsdWVGb3IocCkubnVtYmVyO1xuICAgIGNvbnN0IHJlc3VsdCA9IHAuY2FsY3VsYXRlZCAmJiBudW1iZXIgIT0gbnVsbCA/IE51bWJlcihudW1iZXIudG9GaXhlZChwLmRlY2ltYWxQbGFjZXMpKSA6IG51bWJlcjtcbiAgICBpZiAocC5jYWxjdWxhdGVkKSB2YWx1ZUZvcihwKS5udW1iZXIgPSByZXN1bHQ7XG4gICAgdmlzaXRpbmcuZGVsZXRlKGNvZGUpOyByZXNvbHZlZC5zZXQoY29kZSwgcmVzdWx0KTsgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgZm9yIChjb25zdCBwIG9mIHBhcmFtZXRlcnMpIHtcbiAgICByZXNvbHZlKHAuY29kZSk7XG4gICAgY29uc3QgdiA9IHZhbHVlRm9yKHApOyBjb25zdCBsID0gYXBwbGljYWJsZUxpbWl0KGxpbWl0cywgcC5jb2RlLCBkYXRlLCBvaWxUeXBlLCBvcmlnaW4pO1xuICAgIHYuYXBwbGllZE1pbmltdW0gPSBsPy5taW5pbXVtOyB2LmFwcGxpZWRNYXhpbXVtID0gbD8ubWF4aW11bTsgdi5hcHBsaWVkTm9taW5hbCA9IGw/Lm5vbWluYWw7IHYuYXBwbGllZEV4cGVjdGVkVGV4dCA9IGw/LmV4cGVjdGVkVGV4dDtcbiAgICB2Lm91dE9mTGltaXQgPSAhIWwgJiYgKCh2Lm51bWJlciAhPSBudWxsICYmICgobC5taW5pbXVtICE9IG51bGwgJiYgdi5udW1iZXIgPCBsLm1pbmltdW0pIHx8XG4gICAgICAobC5tYXhpbXVtICE9IG51bGwgJiYgdi5udW1iZXIgPiBsLm1heGltdW0pKSkgfHwgKCEhdi50ZXh0ICYmICEhbC5leHBlY3RlZFRleHQgJiYgdi50ZXh0LnRyaW0oKS50b0xvY2FsZUxvd2VyQ2FzZSgndHItVFInKSAhPT0gbC5leHBlY3RlZFRleHQudHJpbSgpLnRvTG9jYWxlTG93ZXJDYXNlKCd0ci1UUicpKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkKGJsb2I6IEJsb2IsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOyBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOyBsaW5rLmhyZWYgPSB1cmw7IGxpbmsuZG93bmxvYWQgPSBuYW1lOyBsaW5rLmNsaWNrKCk7XG4gIHNldFRpbWVvdXQoKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpLCAxMDAwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbERhdGUoZGF0ZSA9IG5ldyBEYXRlKCkpOiBzdHJpbmcgeyByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke1N0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS0ke1N0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKX1gOyB9XG5leHBvcnQgZnVuY3Rpb24gZXJyb3JNZXNzYWdlKGVycm9yOiBhbnkpOiBzdHJpbmcgeyByZXR1cm4gZXJyb3I/LmVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ8SwxZ9sZW0gdGFtYW1sYW5hbWFkxLEuIEJhxJ9sYW50xLF5xLEgdmUgYWxhbmxhcsSxIGtvbnRyb2wgZWRpbi4nOyB9XG5leHBvcnQgZnVuY3Rpb24gc3RhdHVzTGFiZWwoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcgeyByZXR1cm4gKHsgV2FpdGluZzogJ0thbGl0ZSBLb250cm9sIEJla2xpeW9yJywgRHJhZnQ6ICdUYXNsYWsnLCBBY2NlcHRlZDogJ0thbGl0ZSBLb250cm9sIEthYnVsJywgUmVqZWN0ZWQ6ICdLYWxpdGUgS29udHJvbCBSZXQnLCBBcHByb3ZlZDogJ09uYXlsxLEnLCBMYWJvcmFudFNpZ25lZDogJ0xhYm9yYW50IMSwbXphbMSxJywgQ2hlY2tlZDogJ0tvbnRyb2wgRWRpbGRpJyB9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pW3N0YXR1c10gfHwgc3RhdHVzIHx8ICfigJQnOyB9XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of kalite
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/components/kalite.component';
|
|
5
|
+
export * from './lib/components/process-analysis.component';
|
|
6
|
+
export * from './lib/components/quality-parameters.component';
|
|
7
|
+
export * from './lib/models/quality.models';
|
|
8
|
+
export * from './lib/services/quality-api.service';
|
|
9
|
+
export * from './lib/services/kalite.service';
|
|
10
|
+
export * from './lib/kalite.module';
|
|
11
|
+
export * from './lib/kalite-notification.module';
|
|
12
|
+
export * from './lib/models/intake.models';
|
|
13
|
+
export * from './lib/components/intake-list.component';
|
|
14
|
+
export * from './lib/components/intake-form.component';
|
|
15
|
+
export * from './lib/components/quality-notifications.component';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2thbGl0ZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGtEQUFrRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBrYWxpdGVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2thbGl0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wcm9jZXNzLWFuYWx5c2lzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3F1YWxpdHktcGFyYW1ldGVycy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3F1YWxpdHkubW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3F1YWxpdHktYXBpLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMva2FsaXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIva2FsaXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9rYWxpdGUtbm90aWZpY2F0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvaW50YWtlLm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ludGFrZS1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ludGFrZS1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3F1YWxpdHktbm90aWZpY2F0aW9ucy5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
|
3
|
+
import { RoutesService } from '@abp/ng.core';
|
|
4
|
+
|
|
5
|
+
const KALITE_ROUTE_PROVIDERS = [
|
|
6
|
+
{
|
|
7
|
+
provide: APP_INITIALIZER,
|
|
8
|
+
useFactory: configureRoutes,
|
|
9
|
+
deps: [RoutesService],
|
|
10
|
+
multi: true,
|
|
11
|
+
},
|
|
12
|
+
];
|
|
13
|
+
function configureRoutes(routes) {
|
|
14
|
+
return () => {
|
|
15
|
+
routes.add([
|
|
16
|
+
{
|
|
17
|
+
path: '/kalite',
|
|
18
|
+
name: "Kalite::Menu:Kalite" /* eKaliteRouteNames.Kalite */,
|
|
19
|
+
iconClass: 'fas fa-flask',
|
|
20
|
+
layout: "application" /* eLayoutType.application */,
|
|
21
|
+
order: 3,
|
|
22
|
+
requiredPolicy: 'Kalite.ProcessAnalysis || Kalite.Parameters || Kalite.Definitions || Kalite.Reports || Kalite.Notifications.Configure',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
path: '/kalite/process-analysis',
|
|
26
|
+
parentName: "Kalite::Menu:Kalite" /* eKaliteRouteNames.Kalite */,
|
|
27
|
+
name: "Kalite::Menu:ProcessAnalysis" /* eKaliteRouteNames.ProcessAnalysis */,
|
|
28
|
+
layout: "application" /* eLayoutType.application */,
|
|
29
|
+
order: 1,
|
|
30
|
+
requiredPolicy: 'Kalite.ProcessAnalysis',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
path: '/kalite/parameters',
|
|
34
|
+
parentName: "Kalite::Menu:Kalite" /* eKaliteRouteNames.Kalite */,
|
|
35
|
+
name: "Kalite::Menu:Parameters" /* eKaliteRouteNames.Parameters */,
|
|
36
|
+
layout: "application" /* eLayoutType.application */,
|
|
37
|
+
order: 2,
|
|
38
|
+
requiredPolicy: 'Kalite.Parameters',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
path: '/kalite/intake',
|
|
42
|
+
parentName: 'KadoogluTartim::Menu:KadoogluTartim',
|
|
43
|
+
name: 'Kalite::Menu:Intake', layout: "application" /* eLayoutType.application */,
|
|
44
|
+
order: 4, requiredPolicy: 'Kalite.Intake',
|
|
45
|
+
},
|
|
46
|
+
{ path: '/kalite/definitions', parentName: "Kalite::Menu:Kalite" /* eKaliteRouteNames.Kalite */, name: 'Kalite::Menu:Definitions',
|
|
47
|
+
layout: "application" /* eLayoutType.application */, order: 3, requiredPolicy: 'Kalite.Definitions' },
|
|
48
|
+
{ path: '/kalite/reports/input', parentName: "Kalite::Menu:Kalite" /* eKaliteRouteNames.Kalite */, name: 'Kalite::Menu:InputReports',
|
|
49
|
+
layout: "application" /* eLayoutType.application */, order: 4, requiredPolicy: 'Kalite.Reports' },
|
|
50
|
+
{ path: '/kalite/reports/process', parentName: "Kalite::Menu:Kalite" /* eKaliteRouteNames.Kalite */, name: 'Kalite::Menu:ProcessReports',
|
|
51
|
+
layout: "application" /* eLayoutType.application */, order: 5, requiredPolicy: 'Kalite.Reports' },
|
|
52
|
+
{ path: '/kalite/reports/rejected', parentName: "Kalite::Menu:Kalite" /* eKaliteRouteNames.Kalite */, name: 'Kalite::Menu:RejectionReports',
|
|
53
|
+
layout: "application" /* eLayoutType.application */, order: 6, requiredPolicy: 'Kalite.Reports' },
|
|
54
|
+
{ path: '/kalite/notification-settings', parentName: "Kalite::Menu:Kalite" /* eKaliteRouteNames.Kalite */, name: 'Kalite::Menu:NotificationSettings',
|
|
55
|
+
layout: "application" /* eLayoutType.application */, order: 7, requiredPolicy: 'Kalite.Notifications.Configure' },
|
|
56
|
+
]);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
class KaliteConfigModule {
|
|
61
|
+
static forRoot() {
|
|
62
|
+
return {
|
|
63
|
+
ngModule: KaliteConfigModule,
|
|
64
|
+
providers: [KALITE_ROUTE_PROVIDERS],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
KaliteConfigModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: KaliteConfigModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
69
|
+
KaliteConfigModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: KaliteConfigModule });
|
|
70
|
+
KaliteConfigModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: KaliteConfigModule });
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: KaliteConfigModule, decorators: [{
|
|
72
|
+
type: NgModule
|
|
73
|
+
}] });
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Generated bundle index. Do not edit.
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
export { KALITE_ROUTE_PROVIDERS, KaliteConfigModule, configureRoutes };
|
|
80
|
+
//# sourceMappingURL=hitsoft-kadooglu.kalite-config.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hitsoft-kadooglu.kalite-config.mjs","sources":["../../../projects/kalite/config/src/providers/route.provider.ts","../../../projects/kalite/config/src/kalite-config.module.ts","../../../projects/kalite/config/src/hitsoft-kadooglu.kalite-config.ts"],"sourcesContent":["import { eLayoutType, RoutesService } from '@abp/ng.core';\nimport { APP_INITIALIZER, Provider } from '@angular/core';\nimport { eKaliteRouteNames } from '../enums/route-names';\n\nexport const KALITE_ROUTE_PROVIDERS: Provider[] = [\n {\n provide: APP_INITIALIZER,\n useFactory: configureRoutes,\n deps: [RoutesService],\n multi: true,\n },\n];\n\nexport function configureRoutes(routes: RoutesService) {\n return () => {\n routes.add([\n {\n path: '/kalite',\n name: eKaliteRouteNames.Kalite,\n iconClass: 'fas fa-flask',\n layout: eLayoutType.application,\n order: 3,\n requiredPolicy: 'Kalite.ProcessAnalysis || Kalite.Parameters || Kalite.Definitions || Kalite.Reports || Kalite.Notifications.Configure',\n },\n {\n path: '/kalite/process-analysis',\n parentName: eKaliteRouteNames.Kalite,\n name: eKaliteRouteNames.ProcessAnalysis,\n layout: eLayoutType.application,\n order: 1,\n requiredPolicy: 'Kalite.ProcessAnalysis',\n },\n {\n path: '/kalite/parameters',\n parentName: eKaliteRouteNames.Kalite,\n name: eKaliteRouteNames.Parameters,\n layout: eLayoutType.application,\n order: 2,\n requiredPolicy: 'Kalite.Parameters',\n },\n {\n path: '/kalite/intake',\n parentName: 'KadoogluTartim::Menu:KadoogluTartim',\n name: 'Kalite::Menu:Intake', layout: eLayoutType.application,\n order: 4, requiredPolicy: 'Kalite.Intake',\n },\n { path: '/kalite/definitions', parentName: eKaliteRouteNames.Kalite, name: 'Kalite::Menu:Definitions',\n layout: eLayoutType.application, order: 3, requiredPolicy: 'Kalite.Definitions' },\n { path: '/kalite/reports/input', parentName: eKaliteRouteNames.Kalite, name: 'Kalite::Menu:InputReports',\n layout: eLayoutType.application, order: 4, requiredPolicy: 'Kalite.Reports' },\n { path: '/kalite/reports/process', parentName: eKaliteRouteNames.Kalite, name: 'Kalite::Menu:ProcessReports',\n layout: eLayoutType.application, order: 5, requiredPolicy: 'Kalite.Reports' },\n { path: '/kalite/reports/rejected', parentName: eKaliteRouteNames.Kalite, name: 'Kalite::Menu:RejectionReports',\n layout: eLayoutType.application, order: 6, requiredPolicy: 'Kalite.Reports' },\n { path: '/kalite/notification-settings', parentName: eKaliteRouteNames.Kalite, name: 'Kalite::Menu:NotificationSettings',\n layout: eLayoutType.application, order: 7, requiredPolicy: 'Kalite.Notifications.Configure' },\n ]);\n };\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { KALITE_ROUTE_PROVIDERS } from './providers/route.provider';\n\n@NgModule()\nexport class KaliteConfigModule {\n static forRoot(): ModuleWithProviders<KaliteConfigModule> {\n return {\n ngModule: KaliteConfigModule,\n providers: [KALITE_ROUTE_PROVIDERS],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|