data-primals-engine 1.4.2 → 1.5.0

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.
Files changed (59) hide show
  1. package/README.md +878 -856
  2. package/client/package-lock.json +82 -0
  3. package/client/package.json +2 -0
  4. package/client/src/App.jsx +1 -1
  5. package/client/src/App.scss +25 -7
  6. package/client/src/AssistantChat.scss +3 -2
  7. package/client/src/ConditionBuilder.jsx +1 -1
  8. package/client/src/ConditionBuilder2.jsx +2 -1
  9. package/client/src/DashboardView.jsx +569 -569
  10. package/client/src/DataEditor.jsx +376 -368
  11. package/client/src/DataLayout.jsx +4 -10
  12. package/client/src/DataTable.jsx +858 -817
  13. package/client/src/Field.jsx +1825 -1784
  14. package/client/src/FlexDataRenderer.jsx +2 -0
  15. package/client/src/FlexTreeUtils.js +1 -1
  16. package/client/src/GeolocationField.jsx +94 -0
  17. package/client/src/KPIDialog.jsx +11 -1
  18. package/client/src/ModelCreator.jsx +1 -2
  19. package/client/src/ModelCreatorField.jsx +24 -27
  20. package/client/src/ModelList.jsx +1 -1
  21. package/client/src/RelationField.jsx +2 -2
  22. package/client/src/constants.js +3 -3
  23. package/client/src/filter.js +0 -155
  24. package/client/src/hooks/useTutorials.jsx +62 -65
  25. package/client/src/translations.js +14 -2
  26. package/package.json +2 -1
  27. package/perf/README.md +147 -0
  28. package/perf/artillery-hooks.js +37 -0
  29. package/perf/perf-shot-hardwork.yml +84 -0
  30. package/perf/perf-shot-search.yml +45 -0
  31. package/perf/setup.yml +26 -0
  32. package/server.js +1 -1
  33. package/src/constants.js +264 -31
  34. package/src/core.js +15 -1
  35. package/src/data.js +1 -1
  36. package/src/defaultModels.js +1544 -1540
  37. package/src/email.js +5 -2
  38. package/src/engine.js +10 -3
  39. package/src/filter.js +274 -260
  40. package/src/i18n.js +187 -177
  41. package/src/modules/assistant/assistant.js +3 -1
  42. package/src/modules/bucket.js +12 -15
  43. package/src/modules/data/data.backup.js +11 -8
  44. package/src/modules/data/data.core.js +2 -1
  45. package/src/modules/data/data.js +6 -3
  46. package/src/modules/data/data.operations.js +610 -168
  47. package/src/modules/data/data.routes.js +1821 -1785
  48. package/src/modules/data/data.scheduling.js +2 -1
  49. package/src/modules/data/data.validation.js +7 -1
  50. package/src/modules/file.js +4 -2
  51. package/src/modules/user.js +4 -1
  52. package/src/modules/workflow.js +9 -10
  53. package/src/openai.jobs.js +2 -0
  54. package/src/packs.js +22 -5
  55. package/src/providers.js +22 -7
  56. package/swagger-en.yml +133 -0
  57. package/test/data.integration.test.js +1060 -981
  58. package/test/import_export.integration.test.js +1 -1
  59. package/test/model.integration.test.js +377 -221
@@ -32,7 +32,9 @@
32
32
  "lowlight": "^3.3.0",
33
33
  "react": "^18.3.1",
34
34
  "react-big-calendar": "^1.15.0",
35
+ "react-color": "^2.19.3",
35
36
  "react-dom": "^18.3.1",
37
+ "react-leaflet": "^4.2.1",
36
38
  "react-router": "^7.8.1",
37
39
  "react-switch": "^7.1.0",
38
40
  "uniqid": "^5.4.0",
@@ -1276,6 +1278,15 @@
1276
1278
  "url": "https://github.com/sponsors/nzakas"
1277
1279
  }
1278
1280
  },
1281
+ "node_modules/@icons/material": {
1282
+ "version": "0.2.4",
1283
+ "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz",
1284
+ "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==",
1285
+ "license": "MIT",
1286
+ "peerDependencies": {
1287
+ "react": "*"
1288
+ }
1289
+ },
1279
1290
  "node_modules/@jridgewell/gen-mapping": {
1280
1291
  "version": "0.3.12",
1281
1292
  "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz",
@@ -1692,6 +1703,17 @@
1692
1703
  "url": "https://opencollective.com/popperjs"
1693
1704
  }
1694
1705
  },
1706
+ "node_modules/@react-leaflet/core": {
1707
+ "version": "2.1.0",
1708
+ "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz",
1709
+ "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==",
1710
+ "license": "Hippocratic-2.1",
1711
+ "peerDependencies": {
1712
+ "leaflet": "^1.9.0",
1713
+ "react": "^18.0.0",
1714
+ "react-dom": "^18.0.0"
1715
+ }
1716
+ },
1695
1717
  "node_modules/@remirror/core-constants": {
1696
1718
  "version": "3.0.0",
1697
1719
  "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz",
@@ -5157,6 +5179,13 @@
5157
5179
  "json-buffer": "3.0.1"
5158
5180
  }
5159
5181
  },
5182
+ "node_modules/leaflet": {
5183
+ "version": "1.9.4",
5184
+ "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz",
5185
+ "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==",
5186
+ "license": "BSD-2-Clause",
5187
+ "peer": true
5188
+ },
5160
5189
  "node_modules/levn": {
5161
5190
  "version": "0.4.1",
5162
5191
  "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -5282,6 +5311,12 @@
5282
5311
  "remove-accents": "0.5.0"
5283
5312
  }
5284
5313
  },
5314
+ "node_modules/material-colors": {
5315
+ "version": "1.2.6",
5316
+ "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz",
5317
+ "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==",
5318
+ "license": "ISC"
5319
+ },
5285
5320
  "node_modules/math-intrinsics": {
5286
5321
  "version": "1.1.0",
5287
5322
  "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -6194,6 +6229,24 @@
6194
6229
  "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
6195
6230
  "peer": true
6196
6231
  },
6232
+ "node_modules/react-color": {
6233
+ "version": "2.19.3",
6234
+ "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz",
6235
+ "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==",
6236
+ "license": "MIT",
6237
+ "dependencies": {
6238
+ "@icons/material": "^0.2.4",
6239
+ "lodash": "^4.17.15",
6240
+ "lodash-es": "^4.17.15",
6241
+ "material-colors": "^1.2.1",
6242
+ "prop-types": "^15.5.10",
6243
+ "reactcss": "^1.2.0",
6244
+ "tinycolor2": "^1.4.1"
6245
+ },
6246
+ "peerDependencies": {
6247
+ "react": "*"
6248
+ }
6249
+ },
6197
6250
  "node_modules/react-cookie": {
6198
6251
  "version": "8.0.1",
6199
6252
  "resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-8.0.1.tgz",
@@ -6274,6 +6327,20 @@
6274
6327
  "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
6275
6328
  "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
6276
6329
  },
6330
+ "node_modules/react-leaflet": {
6331
+ "version": "4.2.1",
6332
+ "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz",
6333
+ "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==",
6334
+ "license": "Hippocratic-2.1",
6335
+ "dependencies": {
6336
+ "@react-leaflet/core": "^2.1.0"
6337
+ },
6338
+ "peerDependencies": {
6339
+ "leaflet": "^1.9.0",
6340
+ "react": "^18.0.0",
6341
+ "react-dom": "^18.0.0"
6342
+ }
6343
+ },
6277
6344
  "node_modules/react-lifecycles-compat": {
6278
6345
  "version": "3.0.4",
6279
6346
  "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
@@ -6456,6 +6523,15 @@
6456
6523
  "react-dom": ">=16.14.0"
6457
6524
  }
6458
6525
  },
6526
+ "node_modules/reactcss": {
6527
+ "version": "1.2.3",
6528
+ "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz",
6529
+ "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==",
6530
+ "license": "MIT",
6531
+ "dependencies": {
6532
+ "lodash": "^4.0.1"
6533
+ }
6534
+ },
6459
6535
  "node_modules/readdirp": {
6460
6536
  "version": "4.1.2",
6461
6537
  "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
@@ -7639,6 +7715,12 @@
7639
7715
  "node": ">=16.0.0"
7640
7716
  }
7641
7717
  },
7718
+ "node_modules/tinycolor2": {
7719
+ "version": "1.6.0",
7720
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
7721
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==",
7722
+ "license": "MIT"
7723
+ },
7642
7724
  "node_modules/tinyglobby": {
7643
7725
  "version": "0.2.14",
7644
7726
  "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
@@ -50,7 +50,9 @@
50
50
  "lowlight": "^3.3.0",
51
51
  "react": "^18.3.1",
52
52
  "react-big-calendar": "^1.15.0",
53
+ "react-color": "^2.19.3",
53
54
  "react-dom": "^18.3.1",
55
+ "react-leaflet": "^4.2.1",
54
56
  "react-router": "^7.8.1",
55
57
  "react-switch": "^7.1.0",
56
58
  "uniqid": "^5.4.0",
@@ -55,7 +55,7 @@ import { translations as allTranslations} from "../../src/i18n.js";
55
55
  import {getBrowserRandom, getRandom} from "../../src/core.js";
56
56
  import {getUserHash} from "../../src/data.js";
57
57
  import {langs, seoTitle} from "./constants.js";
58
- import {host, useAI} from "../../src/constants.js";
58
+ import {host} from "../../src/constants.js";
59
59
  import i18next from "i18next";
60
60
  import {websiteTranslations} from "./translations.js";
61
61
 
@@ -45,6 +45,9 @@ header {
45
45
  &.flex-start {
46
46
  align-items: start;
47
47
  }
48
+ &.flex-end {
49
+ justify-content: flex-end;
50
+ }
48
51
  &.flex-self-end {
49
52
  align-self: end;
50
53
  }
@@ -80,10 +83,9 @@ header {
80
83
  flex-direction: column;
81
84
  }
82
85
  gap: 4px;
83
- @media only screen and (min-width: 480px){
86
+ @media only screen and (min-width: 720px){
84
87
  gap: 12px;
85
88
  }
86
-
87
89
  }
88
90
  .flex-1 {
89
91
  flex: 1;
@@ -1039,10 +1041,18 @@ h2.shadow {
1039
1041
  }
1040
1042
  }
1041
1043
 
1042
- .mini input[type=checkbox] {
1043
- cursor: pointer;
1044
- width: 15px;
1045
- height: 15px;
1044
+ .mini {
1045
+ .field-checkbox.field-bg {
1046
+ background: none;
1047
+ }
1048
+ input[type=checkbox] {
1049
+ cursor: pointer;
1050
+ margin: 0 auto;
1051
+ background: none;
1052
+ width: 16px;
1053
+ height: 16px;
1054
+ display: block;
1055
+ }
1046
1056
  }
1047
1057
 
1048
1058
  .pagination-wrapper {
@@ -1545,4 +1555,12 @@ select[multiple]{
1545
1555
  }
1546
1556
  }
1547
1557
 
1548
-
1558
+ .gap-2 {
1559
+ gap: 8px;
1560
+ }
1561
+ .gap-3 {
1562
+ gap: 16px;
1563
+ }
1564
+ .gap-4 {
1565
+ gap: 32px;
1566
+ }
@@ -35,10 +35,11 @@ $input-height: 50px;
35
35
 
36
36
  // La fenêtre de chat (quand elle est ouverte)
37
37
  .assistant-chat-window {
38
+
38
39
  position: fixed;
39
40
  bottom: 20px;
40
- right: 20px;
41
- width: 100%;
41
+ right: 5px;
42
+ width: calc(100% - 10px);
42
43
  max-width: 720px;
43
44
  min-height: 400px;
44
45
  height: 60vh;
@@ -14,9 +14,9 @@ import './ConditionBuilder.scss';
14
14
  import { useTranslation, Trans } from "react-i18next";
15
15
  import { CodeField } from "./Field.jsx";
16
16
  import { useAuthContext } from "./contexts/AuthContext.jsx";
17
- import { MONGO_CALC_OPERATORS} from "./filter.js";
18
17
  import {ConditionBuilder2} from "./ConditionBuilder2.jsx";
19
18
  import {mongoOperators} from "./constants.js";
19
+ import {MONGO_CALC_OPERATORS} from "../../src/constants";
20
20
 
21
21
  const getFieldDefinition = (fields, fieldName) => fields?.find(f => f.name === fieldName);
22
22
  const getModelFields = (modelName, allModels, user) => {
@@ -2,10 +2,11 @@ import React, {useEffect, useState} from 'react';
2
2
  import { Tooltip } from 'react-tooltip';
3
3
  import {FaPlus, FaProjectDiagram, FaTrash, FaInfoCircle, FaEdit, FaTags, FaCalendarAlt} from 'react-icons/fa';
4
4
  import { Trans } from 'react-i18next';
5
- import {convertInputValue, MONGO_CALC_OPERATORS} from "./filter.js";
5
+ import {convertInputValue} from "./filter.js";
6
6
  import i18n from "i18next";
7
7
  import {FaRepeat} from "react-icons/fa6";
8
8
  import {useAuthContext} from "./contexts/AuthContext.jsx";
9
+ import {MONGO_CALC_OPERATORS} from "../../src/constants.js";
9
10
 
10
11
 
11
12
  // Déterminer si le champ doit être une date