@movalib/movalib-commons 1.0.59 → 1.0.61
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/dist/index.d.ts +5 -2
- package/dist/index.js +12 -1
- package/dist/src/MovaDigitalPassport.d.ts +7 -0
- package/dist/src/MovaDigitalPassport.js +36 -0
- package/dist/src/VehicleFullCard.d.ts +24 -0
- package/dist/src/VehicleFullCard.js +228 -0
- package/dist/src/assets/images/speedometer_green.png +0 -0
- package/dist/src/assets/images/speedometer_orange.png +0 -0
- package/dist/src/assets/images/speedometer_red.png +0 -0
- package/dist/src/helpers/DateUtils.d.ts +4 -0
- package/dist/src/helpers/DateUtils.js +53 -0
- package/dist/src/helpers/Enums.d.ts +5 -0
- package/dist/src/helpers/Enums.js +7 -1
- package/dist/src/helpers/Logger.d.ts +8 -0
- package/dist/src/helpers/Logger.js +44 -0
- package/dist/src/helpers/Tools.d.ts +1 -0
- package/dist/src/helpers/Tools.js +17 -1
- package/dist/src/models/Event.d.ts +5 -5
- package/dist/src/models/Event.js +8 -5
- package/index.ts +5 -2
- package/package.json +4 -2
- package/src/MovaDigitalPassport.tsx +47 -0
- package/src/VehicleFullCard.tsx +509 -0
- package/src/assets/images/speedometer_green.png +0 -0
- package/src/assets/images/speedometer_orange.png +0 -0
- package/src/assets/images/speedometer_red.png +0 -0
- package/src/helpers/DateUtils.ts +63 -0
- package/src/helpers/Enums.ts +7 -0
- package/src/helpers/Logger.ts +28 -0
- package/src/helpers/Tools.ts +19 -0
- package/src/models/Event.ts +12 -8
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { default as MovaDigitalPassport } from './src/MovaDigitalPassport';
|
|
1
2
|
export { default as Loader } from './src/Loader';
|
|
2
3
|
export { default as MovaDialog } from './src/MovaDialog';
|
|
3
4
|
export { default as QRCode } from './src/QRCode';
|
|
@@ -10,6 +11,7 @@ export { default as MovaCopyright } from './src/MovaCopyright';
|
|
|
10
11
|
export { default as MovaVehicleTireField } from './src/MovaVehicleTireField';
|
|
11
12
|
export { default as ConfirmationDialog } from './src/ConfirmationDialog';
|
|
12
13
|
export { default as GenderSelector } from './src/GenderSelector';
|
|
14
|
+
export { default as Logger } from './src/helpers/Logger';
|
|
13
15
|
export { default as Customer } from './src/models/Customer';
|
|
14
16
|
export { default as User } from './src/models/User';
|
|
15
17
|
export { default as Role } from './src/models/Role';
|
|
@@ -21,6 +23,7 @@ export { default as Schedule } from './src/models/Schedule';
|
|
|
21
23
|
export { default as Event } from './src/models/Event';
|
|
22
24
|
export { default as VehicleTire } from './src/models/VehicleTire';
|
|
23
25
|
export type { MovaFormField, MovaLoginForm, MovaUserSignUpForm, MovaInterval, OriginReference } from './src/helpers/Types';
|
|
24
|
-
export { validateField } from './src/helpers/Tools';
|
|
26
|
+
export { validateField, formatVehicleTire, formatFrenchVehiclePlate } from './src/helpers/Tools';
|
|
25
27
|
export { validatePhoneNumber, validateText, validateEmail } from './src/helpers/Validator';
|
|
26
|
-
export {
|
|
28
|
+
export { formatDateByCountryCode, getLongFormattedDateTime, capitalizeFirstLetter } from './src/helpers/DateUtils';
|
|
29
|
+
export { RoleType, MovaAppType, DayOfWeek, EventState, EventType, DocumentType, DigitalPassportIndex, DocumentState, Gender, DateFormatTypes } from './src/helpers/Enums';
|
package/dist/index.js
CHANGED
|
@@ -4,8 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.Gender = exports.DocumentState = exports.DigitalPassportIndex = exports.DocumentType = exports.EventType = exports.EventState = exports.DayOfWeek = exports.MovaAppType = exports.RoleType = exports.validateEmail = exports.validateText = exports.validatePhoneNumber = exports.validateField = exports.VehicleTire = exports.Event = exports.Schedule = exports.Garage = exports.Document = exports.Vehicle = exports.Address = exports.Role = exports.User = exports.Customer = exports.GenderSelector = exports.ConfirmationDialog = exports.MovaVehicleTireField = exports.MovaCopyright = exports.MovaSignUp = exports.MovaLogin = exports.MovaSnackbar = exports.TestButton = exports.VehiclePlateField = exports.QRCode = exports.MovaDialog = exports.Loader = void 0;
|
|
7
|
+
exports.DateFormatTypes = exports.Gender = exports.DocumentState = exports.DigitalPassportIndex = exports.DocumentType = exports.EventType = exports.EventState = exports.DayOfWeek = exports.MovaAppType = exports.RoleType = exports.capitalizeFirstLetter = exports.getLongFormattedDateTime = exports.formatDateByCountryCode = exports.validateEmail = exports.validateText = exports.validatePhoneNumber = exports.formatFrenchVehiclePlate = exports.formatVehicleTire = exports.validateField = exports.VehicleTire = exports.Event = exports.Schedule = exports.Garage = exports.Document = exports.Vehicle = exports.Address = exports.Role = exports.User = exports.Customer = exports.Logger = exports.GenderSelector = exports.ConfirmationDialog = exports.MovaVehicleTireField = exports.MovaCopyright = exports.MovaSignUp = exports.MovaLogin = exports.MovaSnackbar = exports.TestButton = exports.VehiclePlateField = exports.QRCode = exports.MovaDialog = exports.Loader = exports.MovaDigitalPassport = void 0;
|
|
8
8
|
// Export des composants
|
|
9
|
+
var MovaDigitalPassport_1 = require("./src/MovaDigitalPassport");
|
|
10
|
+
Object.defineProperty(exports, "MovaDigitalPassport", { enumerable: true, get: function () { return __importDefault(MovaDigitalPassport_1).default; } });
|
|
9
11
|
var Loader_1 = require("./src/Loader");
|
|
10
12
|
Object.defineProperty(exports, "Loader", { enumerable: true, get: function () { return __importDefault(Loader_1).default; } });
|
|
11
13
|
var MovaDialog_1 = require("./src/MovaDialog");
|
|
@@ -31,6 +33,8 @@ Object.defineProperty(exports, "ConfirmationDialog", { enumerable: true, get: fu
|
|
|
31
33
|
var GenderSelector_1 = require("./src/GenderSelector");
|
|
32
34
|
Object.defineProperty(exports, "GenderSelector", { enumerable: true, get: function () { return __importDefault(GenderSelector_1).default; } });
|
|
33
35
|
// Export des classes
|
|
36
|
+
var Logger_1 = require("./src/helpers/Logger");
|
|
37
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return __importDefault(Logger_1).default; } });
|
|
34
38
|
var Customer_1 = require("./src/models/Customer");
|
|
35
39
|
Object.defineProperty(exports, "Customer", { enumerable: true, get: function () { return __importDefault(Customer_1).default; } });
|
|
36
40
|
var User_1 = require("./src/models/User");
|
|
@@ -54,10 +58,16 @@ Object.defineProperty(exports, "VehicleTire", { enumerable: true, get: function
|
|
|
54
58
|
// Export des méthodes utilitaires
|
|
55
59
|
var Tools_1 = require("./src/helpers/Tools");
|
|
56
60
|
Object.defineProperty(exports, "validateField", { enumerable: true, get: function () { return Tools_1.validateField; } });
|
|
61
|
+
Object.defineProperty(exports, "formatVehicleTire", { enumerable: true, get: function () { return Tools_1.formatVehicleTire; } });
|
|
62
|
+
Object.defineProperty(exports, "formatFrenchVehiclePlate", { enumerable: true, get: function () { return Tools_1.formatFrenchVehiclePlate; } });
|
|
57
63
|
var Validator_1 = require("./src/helpers/Validator");
|
|
58
64
|
Object.defineProperty(exports, "validatePhoneNumber", { enumerable: true, get: function () { return Validator_1.validatePhoneNumber; } });
|
|
59
65
|
Object.defineProperty(exports, "validateText", { enumerable: true, get: function () { return Validator_1.validateText; } });
|
|
60
66
|
Object.defineProperty(exports, "validateEmail", { enumerable: true, get: function () { return Validator_1.validateEmail; } });
|
|
67
|
+
var DateUtils_1 = require("./src/helpers/DateUtils");
|
|
68
|
+
Object.defineProperty(exports, "formatDateByCountryCode", { enumerable: true, get: function () { return DateUtils_1.formatDateByCountryCode; } });
|
|
69
|
+
Object.defineProperty(exports, "getLongFormattedDateTime", { enumerable: true, get: function () { return DateUtils_1.getLongFormattedDateTime; } });
|
|
70
|
+
Object.defineProperty(exports, "capitalizeFirstLetter", { enumerable: true, get: function () { return DateUtils_1.capitalizeFirstLetter; } });
|
|
61
71
|
// Export des enums
|
|
62
72
|
var Enums_1 = require("./src/helpers/Enums");
|
|
63
73
|
Object.defineProperty(exports, "RoleType", { enumerable: true, get: function () { return Enums_1.RoleType; } });
|
|
@@ -69,3 +79,4 @@ Object.defineProperty(exports, "DocumentType", { enumerable: true, get: function
|
|
|
69
79
|
Object.defineProperty(exports, "DigitalPassportIndex", { enumerable: true, get: function () { return Enums_1.DigitalPassportIndex; } });
|
|
70
80
|
Object.defineProperty(exports, "DocumentState", { enumerable: true, get: function () { return Enums_1.DocumentState; } });
|
|
71
81
|
Object.defineProperty(exports, "Gender", { enumerable: true, get: function () { return Enums_1.Gender; } });
|
|
82
|
+
Object.defineProperty(exports, "DateFormatTypes", { enumerable: true, get: function () { return Enums_1.DateFormatTypes; } });
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DigitalPassportIndex } from './helpers/Enums';
|
|
2
|
+
import type { FC } from 'react';
|
|
3
|
+
interface MovaDigitalPassportProps {
|
|
4
|
+
digitalPassportIndex: DigitalPassportIndex;
|
|
5
|
+
}
|
|
6
|
+
declare const MovaDigitalPassport: FC<MovaDigitalPassportProps>;
|
|
7
|
+
export default MovaDigitalPassport;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
7
|
+
var Enums_1 = require("./helpers/Enums");
|
|
8
|
+
var speedometer_green_png_1 = __importDefault(require("./assets/images/speedometer_green.png"));
|
|
9
|
+
var speedometer_orange_png_1 = __importDefault(require("./assets/images/speedometer_orange.png"));
|
|
10
|
+
var speedometer_red_png_1 = __importDefault(require("./assets/images/speedometer_red.png"));
|
|
11
|
+
var MovaDigitalPassport = function (_a) {
|
|
12
|
+
var digitalPassportIndex = _a.digitalPassportIndex;
|
|
13
|
+
var getDigitalPassportImage = function () {
|
|
14
|
+
switch (digitalPassportIndex) {
|
|
15
|
+
case Enums_1.DigitalPassportIndex.A:
|
|
16
|
+
return speedometer_green_png_1.default;
|
|
17
|
+
case Enums_1.DigitalPassportIndex.B:
|
|
18
|
+
return speedometer_orange_png_1.default;
|
|
19
|
+
case Enums_1.DigitalPassportIndex.C:
|
|
20
|
+
return speedometer_red_png_1.default;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
var handleOnClick = function (e) {
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
// On affiche la popup explicative sur la passport digital
|
|
26
|
+
};
|
|
27
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: digitalPassportIndex &&
|
|
28
|
+
(0, jsx_runtime_1.jsx)("img", { src: getDigitalPassportImage(), style: {
|
|
29
|
+
position: 'relative',
|
|
30
|
+
width: '25%',
|
|
31
|
+
top: '-25px',
|
|
32
|
+
right: '-15px',
|
|
33
|
+
zIndex: 200
|
|
34
|
+
}, alt: 'Passport Digital', onClick: function (e) { return handleOnClick(e); } }) }));
|
|
35
|
+
};
|
|
36
|
+
exports.default = MovaDigitalPassport;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { MovaFormField } from './helpers/Types';
|
|
3
|
+
import Vehicle from './models/Vehicle';
|
|
4
|
+
interface VehicleFullCardProps {
|
|
5
|
+
vehicle: Vehicle;
|
|
6
|
+
onError: (message: string) => void;
|
|
7
|
+
onUploadDocument: (data: FormData) => void;
|
|
8
|
+
onDeleteDocument: (documentId: string) => void;
|
|
9
|
+
editMode: boolean;
|
|
10
|
+
focused?: boolean;
|
|
11
|
+
onUpdate?: (query: any) => void;
|
|
12
|
+
onDelete?: () => void;
|
|
13
|
+
}
|
|
14
|
+
export type MovaVehicleForm = {
|
|
15
|
+
currentMileage: MovaFormField;
|
|
16
|
+
averageMileagePerYear: MovaFormField;
|
|
17
|
+
tireSize: MovaFormField;
|
|
18
|
+
tireWidth: MovaFormField;
|
|
19
|
+
tireHeight: MovaFormField;
|
|
20
|
+
tireDiameter: MovaFormField;
|
|
21
|
+
tireSpeedIndex: MovaFormField;
|
|
22
|
+
};
|
|
23
|
+
declare const VehicleFullCard: FC<VehicleFullCardProps>;
|
|
24
|
+
export default VehicleFullCard;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
18
|
+
var material_1 = require("@mui/material");
|
|
19
|
+
var react_1 = require("react");
|
|
20
|
+
var car_figure_png_1 = __importDefault(require("../assets/images/car_figure.png"));
|
|
21
|
+
var MovaVehicleTireField_1 = __importDefault(require("./MovaVehicleTireField"));
|
|
22
|
+
var ConfirmationDialog_1 = __importDefault(require("./ConfirmationDialog"));
|
|
23
|
+
var Enums_1 = require("./helpers/Enums");
|
|
24
|
+
var Tools_1 = require("./helpers/Tools");
|
|
25
|
+
var MovaDigitalPassport_1 = __importDefault(require("./MovaDigitalPassport"));
|
|
26
|
+
var Loader_1 = __importDefault(require("./Loader"));
|
|
27
|
+
var DateUtils_1 = require("./helpers/DateUtils");
|
|
28
|
+
var CloseRounded_1 = __importDefault(require("@mui/icons-material/CloseRounded"));
|
|
29
|
+
var EditRounded_1 = __importDefault(require("@mui/icons-material/EditRounded"));
|
|
30
|
+
var CloseRounded_2 = __importDefault(require("@mui/icons-material/CloseRounded"));
|
|
31
|
+
var Logger_1 = __importDefault(require("./helpers/Logger"));
|
|
32
|
+
var initialUserFormState = {
|
|
33
|
+
currentMileage: { value: null, isValid: true },
|
|
34
|
+
averageMileagePerYear: { value: null, isValid: true },
|
|
35
|
+
tireSize: { value: null, isValid: true },
|
|
36
|
+
tireWidth: { value: '', isValid: true },
|
|
37
|
+
tireHeight: { value: '', isValid: true },
|
|
38
|
+
tireDiameter: { value: '', isValid: true },
|
|
39
|
+
tireSpeedIndex: { value: '', isValid: true }
|
|
40
|
+
};
|
|
41
|
+
var VehicleFullCard = function (_a) {
|
|
42
|
+
var vehicle = _a.vehicle, onError = _a.onError, onUploadDocument = _a.onUploadDocument, onDeleteDocument = _a.onDeleteDocument, _b = _a.editMode, editMode = _b === void 0 ? false : _b, _c = _a.focused, focused = _c === void 0 ? false : _c, onUpdate = _a.onUpdate, onDelete = _a.onDelete;
|
|
43
|
+
var theme = (0, material_1.useTheme)();
|
|
44
|
+
var _d = (0, react_1.useState)(false), loading = _d[0], setLoading = _d[1];
|
|
45
|
+
var _e = (0, react_1.useState)(editMode), localEditMode = _e[0], setLocalEditMode = _e[1];
|
|
46
|
+
var _f = (0, react_1.useState)(false), openConfirmDocumentDelete = _f[0], setOpenConfirmDocumentDelete = _f[1];
|
|
47
|
+
var _g = (0, react_1.useState)(false), openConfirmVehicleDelete = _g[0], setOpenConfirmVehicleDelete = _g[1];
|
|
48
|
+
var _h = (0, react_1.useState)(''), documentToDelete = _h[0], setDocumentToDelete = _h[1];
|
|
49
|
+
// Formulaire utilisé pour les modifications d'informations sur le véhicule
|
|
50
|
+
var _j = (0, react_1.useState)(initialUserFormState), form = _j[0], setForm = _j[1];
|
|
51
|
+
var _k = (0, react_1.useState)([]), vehicleDocuments = _k[0], setVehicleDocuments = _k[1];
|
|
52
|
+
// Références aux éventuels documents uploadés depuis la fiche
|
|
53
|
+
var invoiceInputRef = (0, react_1.useRef)(null);
|
|
54
|
+
var tirePictureInputRef = (0, react_1.useRef)(null);
|
|
55
|
+
(0, react_1.useEffect)(function () {
|
|
56
|
+
initForm();
|
|
57
|
+
}, [vehicle]);
|
|
58
|
+
var initForm = function () {
|
|
59
|
+
if (vehicle) {
|
|
60
|
+
setForm(function (prevForm) {
|
|
61
|
+
var _a;
|
|
62
|
+
return (__assign(__assign({}, prevForm), (_a = {}, _a['currentMileage'] = __assign(__assign({}, prevForm['currentMileage']), { value: vehicle.currentMileage }), _a)));
|
|
63
|
+
});
|
|
64
|
+
setForm(function (prevForm) {
|
|
65
|
+
var _a;
|
|
66
|
+
return (__assign(__assign({}, prevForm), (_a = {}, _a['averageMileagePerYear'] = __assign(__assign({}, prevForm['averageMileagePerYear']), { value: vehicle.averageMileagePerYear }), _a)));
|
|
67
|
+
});
|
|
68
|
+
setForm(function (prevForm) {
|
|
69
|
+
var _a;
|
|
70
|
+
return (__assign(__assign({}, prevForm), (_a = {}, _a['tireWidth'] = __assign(__assign({}, prevForm['tireWidth']), { value: vehicle.tireWidth }), _a)));
|
|
71
|
+
});
|
|
72
|
+
setForm(function (prevForm) {
|
|
73
|
+
var _a;
|
|
74
|
+
return (__assign(__assign({}, prevForm), (_a = {}, _a['tireHeight'] = __assign(__assign({}, prevForm['tireHeight']), { value: vehicle.tireHeight }), _a)));
|
|
75
|
+
});
|
|
76
|
+
setForm(function (prevForm) {
|
|
77
|
+
var _a;
|
|
78
|
+
return (__assign(__assign({}, prevForm), (_a = {}, _a['tireDiameter'] = __assign(__assign({}, prevForm['tireDiameter']), { value: vehicle.tireDiameter }), _a)));
|
|
79
|
+
});
|
|
80
|
+
setForm(function (prevForm) {
|
|
81
|
+
var _a;
|
|
82
|
+
return (__assign(__assign({}, prevForm), (_a = {}, _a['tireSpeedIndex'] = __assign(__assign({}, prevForm['tireSpeedIndex']), { value: vehicle.tireSpeedIndex }), _a)));
|
|
83
|
+
});
|
|
84
|
+
if (isVehicleTireSizeDefined(vehicle)) {
|
|
85
|
+
setForm(function (prevForm) {
|
|
86
|
+
var _a;
|
|
87
|
+
return (__assign(__assign({}, prevForm), (_a = {}, _a['tireSize'] = __assign(__assign({}, prevForm['tireSize']), { value: vehicle.tireSize }), _a)));
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
Logger_1.default.info(form);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
var isVehicleTireSizeDefined = function (vehicle) {
|
|
94
|
+
return vehicle.tireSize && vehicle.tireSize.diameter && vehicle.tireSize.height && vehicle.tireSize.speedIndex && vehicle.tireSize.width;
|
|
95
|
+
};
|
|
96
|
+
var validateForm = function () {
|
|
97
|
+
var newForm = __assign({}, form);
|
|
98
|
+
// Validator pour les champs obligatoires
|
|
99
|
+
newForm.currentMileage = (0, Tools_1.validateField)(form.currentMileage, function (value) { return !!value; }, 'Champ obligatoire');
|
|
100
|
+
newForm.averageMileagePerYear = (0, Tools_1.validateField)(form.averageMileagePerYear, function (value) { return !!value; }, 'Champ obligatoire');
|
|
101
|
+
// La validation de la saisie des pneumatiques se fait dans le composant "MovaVehicleTireField", traitée dans le callback "handleOnChangeVehicleTire"
|
|
102
|
+
setForm(newForm);
|
|
103
|
+
return newForm.currentMileage.isValid && newForm.averageMileagePerYear.isValid && newForm.tireSize.isValid;
|
|
104
|
+
};
|
|
105
|
+
var handleInputChange = function (e) {
|
|
106
|
+
handleChange(e.target.name, e.target.value);
|
|
107
|
+
};
|
|
108
|
+
var handleSelectChange = function (e) {
|
|
109
|
+
handleChange(e.target.name, e.target.value);
|
|
110
|
+
};
|
|
111
|
+
var handleChange = function (fieldName, fieldValue) {
|
|
112
|
+
var _a;
|
|
113
|
+
var newField = (_a = {}, _a[fieldName] = { value: fieldValue, isValid: true }, _a);
|
|
114
|
+
setForm(__assign(__assign({}, form), newField));
|
|
115
|
+
};
|
|
116
|
+
var uploadVehicleDocument = function (document, documentType) {
|
|
117
|
+
if (vehicle && document && documentType) {
|
|
118
|
+
// Utilisation d'un formData pour permettre le trasnfert de fichier vers l'API
|
|
119
|
+
var formData = new FormData();
|
|
120
|
+
formData.append("documentType", documentType);
|
|
121
|
+
// Ajouter la facture à FormData
|
|
122
|
+
formData.append('file', document);
|
|
123
|
+
// Appel du callback correspondant
|
|
124
|
+
if (onUploadDocument)
|
|
125
|
+
onUploadDocument(formData);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
*
|
|
130
|
+
* @param event L'upload des documents se fait directement lors du téléchargement
|
|
131
|
+
* @param docType
|
|
132
|
+
*/
|
|
133
|
+
var handleFileChange = function (event, docType) {
|
|
134
|
+
event.preventDefault();
|
|
135
|
+
if (event && event.target.files && event.target.files.length > 0 && docType) {
|
|
136
|
+
uploadVehicleDocument(event.target.files[0], docType);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
var handleOnClickEdit = function () {
|
|
140
|
+
// On passe la fiche véhicule en mode édition
|
|
141
|
+
setLocalEditMode(true);
|
|
142
|
+
};
|
|
143
|
+
var handleOnChangeVehicleTire = function (vehicleTire, isValid) {
|
|
144
|
+
setForm(function (prevForm) {
|
|
145
|
+
var _a;
|
|
146
|
+
return (__assign(__assign({}, prevForm), (_a = {}, _a['tireSize'] = __assign(__assign({}, prevForm['tireSize']), { value: vehicleTire, isValid: isValid }), _a)));
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
var handleOnClickDeleteVehicle = function (e) {
|
|
150
|
+
e.preventDefault();
|
|
151
|
+
setOpenConfirmVehicleDelete(true);
|
|
152
|
+
};
|
|
153
|
+
var handleDeleteDocument = function (e, documentId) {
|
|
154
|
+
e.preventDefault();
|
|
155
|
+
setDocumentToDelete(documentId);
|
|
156
|
+
setOpenConfirmDocumentDelete(true);
|
|
157
|
+
};
|
|
158
|
+
var handleOnClickValidate = function () {
|
|
159
|
+
if (validateForm()) {
|
|
160
|
+
setLoading(true);
|
|
161
|
+
Logger_1.default.info(form.tireSize.value);
|
|
162
|
+
var query = {
|
|
163
|
+
currentMileage: form.currentMileage.value,
|
|
164
|
+
averageMileagePerYear: form.averageMileagePerYear.value,
|
|
165
|
+
tireWidth: form.tireSize.isValid && form.tireSize.value ? form.tireSize.value.width : undefined,
|
|
166
|
+
tireHeight: form.tireSize.isValid && form.tireSize.value ? form.tireSize.value.height : undefined,
|
|
167
|
+
tireDiameter: form.tireSize.isValid && form.tireSize.value ? form.tireSize.value.diameter : undefined,
|
|
168
|
+
tireSpeedIndex: form.tireSize.isValid && form.tireSize.value ? form.tireSize.value.speedIndex : undefined
|
|
169
|
+
};
|
|
170
|
+
Logger_1.default.info(query);
|
|
171
|
+
// Appel du callback correspondant
|
|
172
|
+
if (onUpdate)
|
|
173
|
+
onUpdate(query);
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
var handleOnClickCancel = function () {
|
|
177
|
+
initForm();
|
|
178
|
+
setLocalEditMode(false);
|
|
179
|
+
};
|
|
180
|
+
var handleCloseConfirmDocumentDelete = function () {
|
|
181
|
+
setOpenConfirmDocumentDelete(false);
|
|
182
|
+
setDocumentToDelete('');
|
|
183
|
+
};
|
|
184
|
+
var handleCloseConfirmVehicleDelete = function () {
|
|
185
|
+
setOpenConfirmVehicleDelete(false);
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
*
|
|
189
|
+
*/
|
|
190
|
+
var handleConfirmDocumentDelete = function () {
|
|
191
|
+
setOpenConfirmDocumentDelete(false);
|
|
192
|
+
if (vehicle && documentToDelete) {
|
|
193
|
+
// Appel du callback correspondant
|
|
194
|
+
if (onDeleteDocument)
|
|
195
|
+
onDeleteDocument(documentToDelete);
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
var handleConfirmVehicleDelete = function () {
|
|
199
|
+
setOpenConfirmVehicleDelete(false);
|
|
200
|
+
if (vehicle && onDelete) {
|
|
201
|
+
// Appel du callback correspondant
|
|
202
|
+
onDelete();
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [vehicle &&
|
|
206
|
+
(0, jsx_runtime_1.jsxs)(material_1.Card, __assign({ variant: 'outlined', sx: { maxWidth: 345,
|
|
207
|
+
backgroundColor: focused ? theme.palette.primary.light : 'white',
|
|
208
|
+
overflow: 'visible', mt: 4, pb: 1 } }, { children: [(0, jsx_runtime_1.jsx)("img", { src: car_figure_png_1.default, style: {
|
|
209
|
+
position: 'relative',
|
|
210
|
+
width: '40%',
|
|
211
|
+
top: '-25px',
|
|
212
|
+
left: '-15px',
|
|
213
|
+
zIndex: 200
|
|
214
|
+
}, alt: 'Icone Voiture' }), (0, jsx_runtime_1.jsx)(MovaDigitalPassport_1.default, { digitalPassportIndex: vehicle.digitalPassportIndex }), (0, jsx_runtime_1.jsxs)(material_1.CardContent, __assign({ sx: { pt: 0, pb: 0 } }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Typography, __assign({ variant: "h6", component: "div", align: "center", sx: { mb: 1 }, color: (0, material_1.darken)(theme.palette.primary.main, 0.2) }, { children: [vehicle.brand && "".concat(vehicle.brand, " "), vehicle.model && "".concat(vehicle.model, " "), vehicle.version && "".concat(vehicle.version)] })), (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, justifyContent: "space-between" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.primary" }, { children: (0, jsx_runtime_1.jsx)("b", { children: (0, Tools_1.formatFrenchVehiclePlate)(vehicle.plate) }) })) })), !localEditMode && (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, textAlign: 'justify', sx: { pt: 2 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 8 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: "Km actuel :" })) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 4, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: (0, jsx_runtime_1.jsxs)("b", { children: [vehicle.currentMileage, " km"] }) })) }))] })), localEditMode && (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { label: "Kilom\u00E9trage actuel", name: "currentMileage", variant: "outlined", type: "number", required: true, value: form.currentMileage.value, onChange: function (e) { return handleInputChange(e); }, error: (Boolean(form.currentMileage.error)), sx: {
|
|
215
|
+
width: '100%',
|
|
216
|
+
mt: 2,
|
|
217
|
+
'& input': { textTransform: 'uppercase' } // CSS pour forcer les majuscules dans l'input
|
|
218
|
+
}, helperText: Boolean(form.currentMileage.error && form.currentMileage.value > 0)
|
|
219
|
+
? form.currentMileage.error : "Sur ton tableau de bord 😉" }) })), !localEditMode && (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, textAlign: 'justify', sx: { pt: 2 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 8 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: "Km moyen annuel :" })) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 4, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: (0, jsx_runtime_1.jsxs)("b", { children: [vehicle.averageMileagePerYear, " km"] }) })) }))] })), localEditMode && (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsxs)(material_1.FormControl, __assign({ fullWidth: true, margin: "normal", error: Boolean(form.averageMileagePerYear.error) }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, __assign({ id: "averageMileagePerYear-label" }, { children: "Kilom\u00E9trage moyen annuel" })), (0, jsx_runtime_1.jsxs)(material_1.Select, __assign({ labelId: "averageMileagePerYear-label", id: "averageMileagePerYear", name: "averageMileagePerYear", value: form.averageMileagePerYear.value ?
|
|
220
|
+
String(form.averageMileagePerYear.value) : '', onChange: function (e) { return handleSelectChange(e); }, label: "Kilom\u00E9trage moyen annuel" }, { children: [(0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 5000 }, { children: "5 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 10000 }, { children: "10 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 15000 }, { children: "15 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 20000 }, { children: "20 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 25000 }, { children: "25 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 30000 }, { children: "30 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 50000 }, { children: "50 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 75000 }, { children: "75 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 100000 }, { children: "100 000" })), (0, jsx_runtime_1.jsx)(material_1.MenuItem, __assign({ value: 999999 }, { children: "+100 000" }))] })), (0, jsx_runtime_1.jsx)(material_1.FormHelperText, { children: form.averageMileagePerYear.error })] })) })), !localEditMode && (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, textAlign: 'justify', sx: { pt: 2 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 6 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: "Pneumatiques :" })) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 6, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "body1", color: "text.secondary" }, { children: isVehicleTireSizeDefined(vehicle) ? (0, jsx_runtime_1.jsx)("b", { children: (0, Tools_1.formatVehicleTire)(vehicle.tireSize) }) : '-' })) }))] })), localEditMode && (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12, sx: { mt: 1 } }, { children: (0, jsx_runtime_1.jsx)(MovaVehicleTireField_1.default, { vehicleTire: form.tireSize.value, onChangeVehicleTire: handleOnChangeVehicleTire }) }))] })), !localEditMode && (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 12 }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, __assign({ variant: "h6", component: "div", align: "center", sx: { mt: 3, mb: 1 }, color: (0, material_1.darken)(theme.palette.primary.main, 0.2) }, { children: "CARNET DU V\u00C9HICULE" })) })), vehicleDocuments && (vehicleDocuments === null || vehicleDocuments === void 0 ? void 0 : vehicleDocuments.filter(function (doc) { return doc.type === Enums_1.DocumentType.VEHICLE_MAINTENANCE_INVOICE; }).map(function (invoice, index) { return ((0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, sx: { justifyContent: 'center', alignItems: 'center' } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 11, sm: 6, md: 4, sx: { textAlign: 'left' } }, { children: (0, jsx_runtime_1.jsxs)(material_1.Link, __assign({ color: (0, material_1.darken)('#F29ABA', 0.2), href: invoice.fileSignedUrl, target: "_blank", rel: "noopener" }, { children: ["Facture du ", (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, DateUtils_1.formatDateByCountryCode)(invoice.creationDate, 'fr', Enums_1.DateFormatTypes.SHORT_FORMAT_DATE) })] })) }), (index + 1) * 50), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 1, sm: 1, md: 1, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.IconButton, __assign({ onClick: function (e) { return handleDeleteDocument(e, invoice.id); } }, { children: (0, jsx_runtime_1.jsx)(CloseRounded_2.default, {}) })) }), (index + 1) * 100)] }), index + 1)); })), vehicleDocuments && (vehicleDocuments === null || vehicleDocuments === void 0 ? void 0 : vehicleDocuments.filter(function (doc) { return doc.type === Enums_1.DocumentType.VEHICLE_TIRE_PHOTO; }).map(function (tirePhoto, index) { return ((0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true, sx: { justifyContent: 'center', alignItems: 'center' } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 11, sm: 6, md: 4, sx: { textAlign: 'left' } }, { children: (0, jsx_runtime_1.jsxs)(material_1.Link, __assign({ color: (0, material_1.darken)('#F29ABA', 0.2), href: tirePhoto.fileSignedUrl, target: "_blank", rel: "noopener" }, { children: ["Photo pneu du ", (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, DateUtils_1.formatDateByCountryCode)(tirePhoto.creationDate, 'fr', Enums_1.DateFormatTypes.SHORT_FORMAT_DATE) })] })) }), (index + 1) * 50), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 1, sm: 1, md: 1, sx: { textAlign: 'right' } }, { children: (0, jsx_runtime_1.jsx)(material_1.IconButton, __assign({ onClick: function (e) { return handleDeleteDocument(e, tirePhoto.id); } }, { children: (0, jsx_runtime_1.jsx)(CloseRounded_2.default, {}) })) }), (index + 1) * 100)] }), index + 1)); })), (0, jsx_runtime_1.jsxs)(material_1.Grid, __assign({ container: true }, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 6, sm: 6, md: 4, sx: { mt: 2 } }, { children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("input", { accept: "image/*, application/pdf", type: "file", style: { display: 'none' }, ref: invoiceInputRef, id: "raised-button-invoice", onChange: function (e) { return handleFileChange(e, Enums_1.DocumentType.VEHICLE_MAINTENANCE_INVOICE); } }), (0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: "raised-button-invoice" }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, __assign({ size: 'large', component: "span", variant: "outlined", sx: { alignItems: 'normal', width: '90%', mt: 2, mb: 1, height: '70px', p: 1,
|
|
221
|
+
color: (0, material_1.darken)(theme.palette.primary.main, 0.2) } }, { children: "Ajouter Facture" })) }))] }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, __assign({ item: true, xs: 6, sm: 6, md: 4, sx: { mt: 2 } }, { children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("input", { accept: "image/*", type: "file", style: { display: 'none' }, ref: tirePictureInputRef, id: "raised-button-tire", onChange: function (e) { return handleFileChange(e, Enums_1.DocumentType.VEHICLE_TIRE_PHOTO); } }), (0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: "raised-button-tire" }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, __assign({ component: "span", size: 'large', variant: "outlined", sx: { alignItems: 'normal', width: '90%', mt: 2, mb: 1, height: '70px', p: 1,
|
|
222
|
+
color: (0, material_1.darken)(theme.palette.primary.main, 0.2) } }, { children: "Ajouter Photo Pneu" })) }))] }) }))] }))] })] })), (0, jsx_runtime_1.jsx)(Loader_1.default, { loading: loading }), (0, jsx_runtime_1.jsxs)(material_1.CardActions, __assign({ sx: { mt: 3, justifyContent: localEditMode ? 'center' : 'end' } }, { children: [!localEditMode &&
|
|
223
|
+
(0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(material_1.Button, __assign({ onClick: handleOnClickEdit, color: "inherit", sx: { width: '45%' }, variant: 'text' }, { children: [(0, jsx_runtime_1.jsx)(EditRounded_1.default, { sx: { mr: 1 } }), "MODIFIER"] })) }), localEditMode &&
|
|
224
|
+
(0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(material_1.Button, __assign({ onClick: handleOnClickCancel, sx: { width: '45%', color: theme.palette.text.secondary }, variant: 'text' }, { children: [(0, jsx_runtime_1.jsx)(CloseRounded_1.default, { sx: { mr: 1 } }), "ANNULER"] })), (0, jsx_runtime_1.jsxs)(material_1.Button, __assign({ onClick: handleOnClickValidate, sx: { width: '45%', color: (0, material_1.darken)(theme.palette.primary.main, 0.2) }, variant: 'text' }, { children: [(0, jsx_runtime_1.jsx)(EditRounded_1.default, { sx: { mr: 1 } }), "VALIDER"] }))] })] }))] })), localEditMode && onDelete &&
|
|
225
|
+
(0, jsx_runtime_1.jsx)(material_1.Button, __assign({ onClick: function (e) { return handleOnClickDeleteVehicle(e); }, sx: { width: '90', mt: 4, color: theme.palette.error.light,
|
|
226
|
+
borderColor: theme.palette.error.light }, variant: 'outlined' }, { children: "Supprimer le v\u00E9hicule" })), (0, jsx_runtime_1.jsx)(ConfirmationDialog_1.default, { open: openConfirmDocumentDelete, onClose: handleCloseConfirmDocumentDelete, onConfirm: handleConfirmDocumentDelete, message: "\u00CAtes-vous s\u00FBr de vouloir supprimer ce document ?" }), (0, jsx_runtime_1.jsx)(ConfirmationDialog_1.default, { open: openConfirmVehicleDelete, onClose: handleCloseConfirmVehicleDelete, onConfirm: handleConfirmVehicleDelete, message: "\u00CAtes-vous s\u00FBr de vouloir supprimer ce v\u00E9hicule ?" })] }));
|
|
227
|
+
};
|
|
228
|
+
exports.default = VehicleFullCard;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DateFormatTypes } from './Enums';
|
|
2
|
+
export declare const formatDateByCountryCode: (date: Date | undefined, countryCode: string, formatType: DateFormatTypes) => string;
|
|
3
|
+
export declare function getLongFormattedDateTime(date: Date | undefined, timeZone: string, locale: Locale): string;
|
|
4
|
+
export declare function capitalizeFirstLetter(str: string): string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.capitalizeFirstLetter = exports.getLongFormattedDateTime = exports.formatDateByCountryCode = void 0;
|
|
4
|
+
var date_fns_tz_1 = require("date-fns-tz");
|
|
5
|
+
var locale_1 = require("date-fns/locale");
|
|
6
|
+
var Enums_1 = require("./Enums");
|
|
7
|
+
var formatDateByCountryCode = function (date, countryCode, formatType) {
|
|
8
|
+
if (date) {
|
|
9
|
+
// Tableau de correspondance entre les codes de pays et les fuseaux horaires
|
|
10
|
+
var countryTimeZones = {
|
|
11
|
+
'FR': 'Europe/Paris',
|
|
12
|
+
// Ajoutez d'autres correspondances de codes de pays et de fuseaux horaires ici
|
|
13
|
+
};
|
|
14
|
+
var timeZone = countryTimeZones[countryCode.toUpperCase()];
|
|
15
|
+
if (!timeZone) {
|
|
16
|
+
throw new Error('Code de pays non pris en charge');
|
|
17
|
+
}
|
|
18
|
+
// Convertir la date UTC en date du fuseau horaire local
|
|
19
|
+
var zonedDate = (0, date_fns_tz_1.utcToZonedTime)(date, timeZone);
|
|
20
|
+
// Formater la date
|
|
21
|
+
switch (formatType) {
|
|
22
|
+
case Enums_1.DateFormatTypes.SHORT_FORMAT_DATE:
|
|
23
|
+
case Enums_1.DateFormatTypes.LONG_FORMAT_DATETIME:
|
|
24
|
+
return (0, date_fns_tz_1.format)(zonedDate, formatType, { timeZone: timeZone, locale: locale_1.fr });
|
|
25
|
+
case Enums_1.DateFormatTypes.LONG_FORMAT_DATETIME_LITERAL:
|
|
26
|
+
return getLongFormattedDateTime(zonedDate, timeZone, locale_1.fr);
|
|
27
|
+
}
|
|
28
|
+
return (0, date_fns_tz_1.format)(zonedDate, formatType, { timeZone: timeZone, locale: locale_1.fr });
|
|
29
|
+
}
|
|
30
|
+
return '';
|
|
31
|
+
};
|
|
32
|
+
exports.formatDateByCountryCode = formatDateByCountryCode;
|
|
33
|
+
function getLongFormattedDateTime(date, timeZone, locale) {
|
|
34
|
+
if (date) {
|
|
35
|
+
var day = capitalizeFirstLetter((0, date_fns_tz_1.format)(date, 'eeee', { timeZone: timeZone, locale: locale }));
|
|
36
|
+
var month = capitalizeFirstLetter((0, date_fns_tz_1.format)(date, 'MMMM', { timeZone: timeZone, locale: locale }));
|
|
37
|
+
var hours = (0, date_fns_tz_1.format)(date, 'HH', { timeZone: timeZone, locale: locale });
|
|
38
|
+
var minutes = (0, date_fns_tz_1.format)(date, 'mm', { timeZone: timeZone, locale: locale });
|
|
39
|
+
var dayOfMonth = (0, date_fns_tz_1.format)(date, 'dd', { timeZone: timeZone, locale: locale });
|
|
40
|
+
return "".concat(day, " ").concat(dayOfMonth, " ").concat(month, " \u00E0 ").concat(hours, ":").concat(minutes);
|
|
41
|
+
}
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
exports.getLongFormattedDateTime = getLongFormattedDateTime;
|
|
45
|
+
function capitalizeFirstLetter(str) {
|
|
46
|
+
if (str.length === 0) {
|
|
47
|
+
return str;
|
|
48
|
+
}
|
|
49
|
+
var firstChar = str.charAt(0).toUpperCase();
|
|
50
|
+
var restOfString = str.slice(1);
|
|
51
|
+
return firstChar + restOfString;
|
|
52
|
+
}
|
|
53
|
+
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RoleType = exports.MovaAppType = exports.DocumentType = exports.DocumentState = exports.DayOfWeek = exports.EventType = exports.EventState = exports.DigitalPassportIndex = exports.Gender = void 0;
|
|
3
|
+
exports.RoleType = exports.MovaAppType = exports.DocumentType = exports.DocumentState = exports.DayOfWeek = exports.EventType = exports.EventState = exports.DigitalPassportIndex = exports.Gender = exports.DateFormatTypes = void 0;
|
|
4
|
+
var DateFormatTypes;
|
|
5
|
+
(function (DateFormatTypes) {
|
|
6
|
+
DateFormatTypes["SHORT_FORMAT_DATE"] = "dd/MM/yyyy";
|
|
7
|
+
DateFormatTypes["LONG_FORMAT_DATETIME"] = "dd/MM/yyyy HH:mm:ss";
|
|
8
|
+
DateFormatTypes["LONG_FORMAT_DATETIME_LITERAL"] = "EEEE dd MMMM yyyy '\u00E0' HH:mm";
|
|
9
|
+
})(DateFormatTypes = exports.DateFormatTypes || (exports.DateFormatTypes = {}));
|
|
4
10
|
var Gender;
|
|
5
11
|
(function (Gender) {
|
|
6
12
|
Gender[Gender["MALE"] = 0] = "MALE";
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
+
if (ar || !(i in from)) {
|
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
+
ar[i] = from[i];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
var Logger = /** @class */ (function () {
|
|
13
|
+
function Logger() {
|
|
14
|
+
}
|
|
15
|
+
Logger.isEnabled = function () {
|
|
16
|
+
return localStorage.getItem('modeDebug') === 'true';
|
|
17
|
+
};
|
|
18
|
+
Logger.enableLogging = function () {
|
|
19
|
+
localStorage.setItem('modeDebug', 'true');
|
|
20
|
+
};
|
|
21
|
+
Logger.disableLogging = function () {
|
|
22
|
+
localStorage.removeItem('modeDebug');
|
|
23
|
+
};
|
|
24
|
+
Logger.info = function () {
|
|
25
|
+
var args = [];
|
|
26
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
27
|
+
args[_i] = arguments[_i];
|
|
28
|
+
}
|
|
29
|
+
if (Logger.isEnabled()) {
|
|
30
|
+
console.info.apply(console, __spreadArray(['INFO:'], args, false));
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
Logger.error = function () {
|
|
34
|
+
var args = [];
|
|
35
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
36
|
+
args[_i] = arguments[_i];
|
|
37
|
+
}
|
|
38
|
+
if (Logger.isEnabled()) {
|
|
39
|
+
console.error.apply(console, __spreadArray(['ERROR:'], args, false));
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return Logger;
|
|
43
|
+
}());
|
|
44
|
+
exports.default = Logger;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import VehicleTire from "../models/VehicleTire";
|
|
2
2
|
import { MovaFormField } from "./Types";
|
|
3
|
+
export declare const formatFrenchVehiclePlate: (input: string | undefined) => string;
|
|
3
4
|
export declare function formatVehicleTire(vehicleTire: VehicleTire): string;
|
|
4
5
|
export declare function formatVehicleTireStr(input: string): string;
|
|
5
6
|
/**
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateField = exports.formatVehicleTireStr = exports.formatVehicleTire = void 0;
|
|
3
|
+
exports.validateField = exports.formatVehicleTireStr = exports.formatVehicleTire = exports.formatFrenchVehiclePlate = void 0;
|
|
4
|
+
var formatFrenchVehiclePlate = function (input) {
|
|
5
|
+
if (input) {
|
|
6
|
+
// Supprimer tous les caractères non alphanumériques
|
|
7
|
+
var cleanedInput = input.replace(/[^A-Z0-9]/gi, '').toUpperCase();
|
|
8
|
+
// Ajouter des tirets aux positions appropriées
|
|
9
|
+
if (cleanedInput.length >= 2) {
|
|
10
|
+
cleanedInput = "".concat(cleanedInput.slice(0, 2), "-").concat(cleanedInput.slice(2));
|
|
11
|
+
}
|
|
12
|
+
if (cleanedInput.length >= 6) {
|
|
13
|
+
cleanedInput = "".concat(cleanedInput.slice(0, 6), "-").concat(cleanedInput.slice(6, 8));
|
|
14
|
+
}
|
|
15
|
+
return cleanedInput;
|
|
16
|
+
}
|
|
17
|
+
return "";
|
|
18
|
+
};
|
|
19
|
+
exports.formatFrenchVehiclePlate = formatFrenchVehiclePlate;
|
|
4
20
|
function formatVehicleTire(vehicleTire) {
|
|
5
21
|
if (vehicleTire) {
|
|
6
22
|
var concatened = "".concat(vehicleTire.width).concat(vehicleTire.height).concat(vehicleTire.diameter).concat(vehicleTire.speedIndex);
|
|
@@ -11,8 +11,8 @@ export default class Event {
|
|
|
11
11
|
title: string;
|
|
12
12
|
garageName: string;
|
|
13
13
|
garageId: number;
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
start?: Date;
|
|
15
|
+
end?: Date;
|
|
16
16
|
state: EventState;
|
|
17
17
|
prestations?: Prestation[];
|
|
18
18
|
/**
|
|
@@ -36,7 +36,7 @@ export default class Event {
|
|
|
36
36
|
* MVP : pour l'instant les références sont transmises sous cette forme classique
|
|
37
37
|
*/
|
|
38
38
|
originReferences?: OriginReference[];
|
|
39
|
-
constructor({ id, notes, ownerId, type, title, garageName, garageId, state,
|
|
39
|
+
constructor({ id, notes, ownerId, type, title, garageName, garageId, state, start, end, prestations, guestsId, vehicleId, quoteId, originReferences }: {
|
|
40
40
|
id: string;
|
|
41
41
|
notes?: string;
|
|
42
42
|
ownerId: number;
|
|
@@ -45,8 +45,8 @@ export default class Event {
|
|
|
45
45
|
garageName: string;
|
|
46
46
|
garageId: number;
|
|
47
47
|
state: EventState;
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
start?: Date;
|
|
49
|
+
end?: Date;
|
|
50
50
|
prestations?: Prestation[];
|
|
51
51
|
guestsId?: string[];
|
|
52
52
|
vehicleId?: number;
|
package/dist/src/models/Event.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var Event = /** @class */ (function () {
|
|
4
4
|
function Event(_a) {
|
|
5
|
-
var id = _a.id, notes = _a.notes, ownerId = _a.ownerId, type = _a.type, title = _a.title, garageName = _a.garageName, garageId = _a.garageId, state = _a.state,
|
|
5
|
+
var id = _a.id, notes = _a.notes, ownerId = _a.ownerId, type = _a.type, title = _a.title, garageName = _a.garageName, garageId = _a.garageId, state = _a.state, start = _a.start, end = _a.end, prestations = _a.prestations, guestsId = _a.guestsId, vehicleId = _a.vehicleId, quoteId = _a.quoteId, originReferences = _a.originReferences;
|
|
6
6
|
this.id = id;
|
|
7
7
|
this.notes = notes;
|
|
8
8
|
this.ownerId = ownerId;
|
|
@@ -11,8 +11,8 @@ var Event = /** @class */ (function () {
|
|
|
11
11
|
this.garageName = garageName;
|
|
12
12
|
this.garageId = garageId;
|
|
13
13
|
this.state = state;
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
14
|
+
this.start = start ? new Date(start) : undefined;
|
|
15
|
+
this.end = end ? new Date(end) : undefined;
|
|
16
16
|
this.prestations = prestations;
|
|
17
17
|
this.guestsId = guestsId;
|
|
18
18
|
this.vehicleId = vehicleId;
|
|
@@ -23,8 +23,11 @@ var Event = /** @class */ (function () {
|
|
|
23
23
|
var _a;
|
|
24
24
|
var list = '';
|
|
25
25
|
if (event.originReferences && event.originReferences.length !== 0) {
|
|
26
|
-
(_a = event.originReferences) === null || _a === void 0 ? void 0 : _a.forEach(function (reference) {
|
|
27
|
-
|
|
26
|
+
(_a = event.originReferences) === null || _a === void 0 ? void 0 : _a.forEach(function (reference, index) {
|
|
27
|
+
if (index > 0) {
|
|
28
|
+
list += " / ";
|
|
29
|
+
}
|
|
30
|
+
list += "".concat(reference.key, " : ").concat(reference.value);
|
|
28
31
|
});
|
|
29
32
|
}
|
|
30
33
|
return list;
|