data-primals-engine 1.5.1 → 1.6.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.
- package/README.md +924 -913
- package/client/README.md +136 -136
- package/client/index.js +0 -1
- package/client/public/doc/API.postman_collection.json +213 -213
- package/client/public/react.svg +9 -9
- package/client/src/AddWidgetTypeModal.jsx +47 -47
- package/client/src/App.css +42 -42
- package/client/src/App.jsx +92 -150
- package/client/src/App.scss +7 -1
- package/client/src/AssistantChat.jsx +362 -363
- package/client/src/Button.jsx +12 -12
- package/client/src/Dashboard.jsx +480 -480
- package/client/src/DashboardHtmlViewItem.jsx +146 -146
- package/client/src/DashboardView.jsx +654 -654
- package/client/src/DataEditor.jsx +383 -383
- package/client/src/DataLayout.jsx +779 -806
- package/client/src/DataTable.jsx +782 -822
- package/client/src/DataTable.scss +186 -186
- package/client/src/GeolocationField.jsx +93 -93
- package/client/src/HistoryDialog.jsx +307 -285
- package/client/src/HistoryDialog.scss +319 -319
- package/client/src/HtmlViewBuilderModal.jsx +90 -90
- package/client/src/HtmlViewBuilderModal.scss +17 -17
- package/client/src/HtmlViewCard.jsx +43 -43
- package/client/src/ModelCreatorField.jsx +950 -950
- package/client/src/ModelList.jsx +7 -2
- package/client/src/Notification.jsx +136 -136
- package/client/src/PackGallery.jsx +391 -391
- package/client/src/PackGallery.scss +231 -231
- package/client/src/Pagination.jsx +143 -143
- package/client/src/RelationField.jsx +354 -354
- package/client/src/RelationSelectorWidget.jsx +172 -172
- package/client/src/RelationValue.jsx +2 -1
- package/client/src/contexts/CommandContext.jsx +260 -0
- package/client/src/contexts/ModelContext.jsx +4 -1
- package/client/src/contexts/UIContext.jsx +72 -72
- package/client/src/filter.js +263 -262
- package/client/src/index.css +90 -90
- package/package.json +11 -10
- package/perf/artillery-hooks.js +37 -37
- package/perf/setup.yml +25 -25
- package/src/constants.js +4 -0
- package/src/core.js +8 -1
- package/src/engine.js +335 -293
- package/src/events.js +140 -21
- package/src/filter.js +274 -274
- package/src/index.js +3 -0
- package/src/modules/assistant/assistant.js +323 -192
- package/src/modules/assistant/constants.js +2 -1
- package/src/modules/auth-google/index.js +50 -50
- package/src/modules/auth-microsoft/index.js +81 -81
- package/src/modules/data/data.core.js +118 -118
- package/src/modules/data/data.history.js +555 -531
- package/src/modules/data/data.operations.js +145 -26
- package/src/modules/data/data.relations.js +686 -686
- package/src/modules/data/data.routes.js +1879 -1879
- package/src/modules/data/data.validation.js +2 -2
- package/src/modules/file.js +247 -247
- package/src/modules/user.js +1 -0
- package/src/modules/workflow.js +2 -2
- package/src/openai.jobs.js +3 -2
- package/src/packs.js +2 -2
- package/src/providers.js +2 -2
- package/src/services/stripe.js +196 -196
- package/src/sso.js +193 -193
- package/src/workers/import-export-worker.js +1 -1
- package/test/data.history.integration.test.js +72 -0
- package/test/data.integration.test.js +92 -1
- package/test/events.test.js +108 -10
- package/test/model.integration.test.js +377 -377
package/client/README.md
CHANGED
|
@@ -1,136 +1,136 @@
|
|
|
1
|
-
This guide explains how to integrate and use the client-side part of the `data-primals-engine` library in an external React application (such as hackersonline).
|
|
2
|
-
The library provides a set of context Providers, Hooks, and UI components to interact with the `data-primals-engine` backend.
|
|
3
|
-
|
|
4
|
-
# Table of Contents
|
|
5
|
-
## Prerequisites
|
|
6
|
-
Your React application must have the following dependencies installed:
|
|
7
|
-
- react & react-dom (version >= 18.0.0)
|
|
8
|
-
- react-query (version >= 3.0.0)
|
|
9
|
-
- react-router-dom
|
|
10
|
-
- react-cookie
|
|
11
|
-
|
|
12
|
-
## What is `data-primals-engine`?
|
|
13
|
-
|
|
14
|
-
The `data-primals-engine` is more than just a set of utilities; it's a comprehensive toolkit for building data-centric applications. Once integrated, it provides a full suite of UI components and hooks to manage your data lifecycle.
|
|
15
|
-
|
|
16
|
-
### Core Features
|
|
17
|
-
|
|
18
|
-
* **AI-Powered Model Creator**: A complete UI for visually creating your data models, with support for dozens of field types (relations, translated text, numbers, files...) and advanced properties (history, validation, conditional display...).
|
|
19
|
-
* **Dynamic Data Views**: Ready-to-use components to display your data, including:
|
|
20
|
-
* A powerful and configurable **Data Table**.
|
|
21
|
-
* A **Kanban View** with drag-and-drop.
|
|
22
|
-
* A **Calendar View**.
|
|
23
|
-
* **Dashboards & KPIs**: Build custom dashboards to monitor your activity with charts and Key Performance Indicators.
|
|
24
|
-
* **Data Management Tools**:
|
|
25
|
-
* A flexible **Data Importer** (CSV, Excel, JSON).
|
|
26
|
-
* A powerful **Data Exporter**.
|
|
27
|
-
* A **Visual Condition Builder** for creating complex queries.
|
|
28
|
-
* **Built-in Systems**: The library also includes systems for **user tutorials**, **data versioning/history**, **backups**, and much more.
|
|
29
|
-
|
|
30
|
-
This guide focuses on the technical integration. Once set up, you will be able to use the components and hooks provided by the library to leverage these features.
|
|
31
|
-
|
|
32
|
-
## Installation
|
|
33
|
-
Install the library:
|
|
34
|
-
```shell
|
|
35
|
-
npm install ../../data-primals-engine
|
|
36
|
-
```
|
|
37
|
-
Install peer dependencies:
|
|
38
|
-
```shell
|
|
39
|
-
npm install react-query react-router-dom react-cookie
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Basic Setup
|
|
43
|
-
|
|
44
|
-
The setup mainly occurs in your application's root file (typically App.jsx or main.jsx).
|
|
45
|
-
|
|
46
|
-
It consists of initializing a single QueryClient instance and wrapping your app with the required Providers.
|
|
47
|
-
|
|
48
|
-
### Set the QueryClient (Singleton)
|
|
49
|
-
For react-query caching to work correctly across your app (including inside the library), it is crucial to instantiate QueryClient only once.
|
|
50
|
-
|
|
51
|
-
The data-primals-engine library needs to know which QueryClient instance you're using. It exports a setQueryClient function for that purpose.
|
|
52
|
-
|
|
53
|
-
### Set up the Providers
|
|
54
|
-
Your app must be wrapped by several Providers in the correct order so the contexts are available to all child components.
|
|
55
|
-
|
|
56
|
-
## Full example (App.jsx)
|
|
57
|
-
Here's what your main application file should look like:
|
|
58
|
-
```jsx
|
|
59
|
-
// In your main App.jsx file (e.g., hackersonline/client/src/App.jsx)
|
|
60
|
-
|
|
61
|
-
import React from 'react';
|
|
62
|
-
import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|
63
|
-
import { CookiesProvider } from 'react-cookie';
|
|
64
|
-
|
|
65
|
-
// 1. Import QueryClient and its Provider from react-query
|
|
66
|
-
import { QueryClient, QueryClientProvider } from 'react-query';
|
|
67
|
-
|
|
68
|
-
// 2. Import Providers and the config function from data-primals-engine
|
|
69
|
-
import {
|
|
70
|
-
ModelProvider,
|
|
71
|
-
AuthProvider,
|
|
72
|
-
UIProvider,
|
|
73
|
-
NotificationProvider,
|
|
74
|
-
setQueryClient // <-- Important config function
|
|
75
|
-
} from 'data-primals-engine/client';
|
|
76
|
-
|
|
77
|
-
// 3. Import the i18n config (see dedicated section)
|
|
78
|
-
import 'data-primals-engine/i18n';
|
|
79
|
-
|
|
80
|
-
// 4. (CRUCIAL) Create a unique instance of QueryClient
|
|
81
|
-
const queryClient = new QueryClient();
|
|
82
|
-
|
|
83
|
-
// 5. (CRUCIAL) Pass the instance to the shared library
|
|
84
|
-
setQueryClient(queryClient);
|
|
85
|
-
|
|
86
|
-
// Your page components
|
|
87
|
-
import HomePage from './pages/HomePage';
|
|
88
|
-
import UserDashboard from './pages/UserDashboard';
|
|
89
|
-
|
|
90
|
-
function App() {
|
|
91
|
-
return (
|
|
92
|
-
// 6. Wrap the app with all required providers
|
|
93
|
-
<QueryClientProvider client={queryClient}>
|
|
94
|
-
<AuthProvider>
|
|
95
|
-
<CookiesProvider>
|
|
96
|
-
<ModelProvider>
|
|
97
|
-
<BrowserRouter>
|
|
98
|
-
<UIProvider>
|
|
99
|
-
<NotificationProvider>
|
|
100
|
-
|
|
101
|
-
{/* Your app content */}
|
|
102
|
-
<Routes>
|
|
103
|
-
<Route path="/" element={<HomePage />} />
|
|
104
|
-
<Route path="/dashboard" element={<UserDashboard />} />
|
|
105
|
-
{/* ... other routes */}
|
|
106
|
-
</Routes>
|
|
107
|
-
|
|
108
|
-
</NotificationProvider>
|
|
109
|
-
</UIProvider>
|
|
110
|
-
</BrowserRouter>
|
|
111
|
-
</ModelProvider>
|
|
112
|
-
</CookiesProvider>
|
|
113
|
-
</AuthProvider>
|
|
114
|
-
</QueryClientProvider>
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export default App;
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Internationalization (i18n)
|
|
122
|
-
The library comes with its own i18next configuration and translation files.
|
|
123
|
-
To enable it in your app, you just need to import the config module once in your main file (App.jsx or main.jsx):
|
|
124
|
-
|
|
125
|
-
```jsx
|
|
126
|
-
// In App.jsx or main.jsx
|
|
127
|
-
import 'data-primals-engine/i18n';
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
This simple import will:
|
|
131
|
-
|
|
132
|
-
- Initialize i18next.
|
|
133
|
-
- Load default translations (French, English, etc.).
|
|
134
|
-
- Enable automatic browser language detection.
|
|
135
|
-
|
|
136
|
-
You can then use react-i18next components and hooks (useTranslation, Trans) as usual in your application.
|
|
1
|
+
This guide explains how to integrate and use the client-side part of the `data-primals-engine` library in an external React application (such as hackersonline).
|
|
2
|
+
The library provides a set of context Providers, Hooks, and UI components to interact with the `data-primals-engine` backend.
|
|
3
|
+
|
|
4
|
+
# Table of Contents
|
|
5
|
+
## Prerequisites
|
|
6
|
+
Your React application must have the following dependencies installed:
|
|
7
|
+
- react & react-dom (version >= 18.0.0)
|
|
8
|
+
- react-query (version >= 3.0.0)
|
|
9
|
+
- react-router-dom
|
|
10
|
+
- react-cookie
|
|
11
|
+
|
|
12
|
+
## What is `data-primals-engine`?
|
|
13
|
+
|
|
14
|
+
The `data-primals-engine` is more than just a set of utilities; it's a comprehensive toolkit for building data-centric applications. Once integrated, it provides a full suite of UI components and hooks to manage your data lifecycle.
|
|
15
|
+
|
|
16
|
+
### Core Features
|
|
17
|
+
|
|
18
|
+
* **AI-Powered Model Creator**: A complete UI for visually creating your data models, with support for dozens of field types (relations, translated text, numbers, files...) and advanced properties (history, validation, conditional display...).
|
|
19
|
+
* **Dynamic Data Views**: Ready-to-use components to display your data, including:
|
|
20
|
+
* A powerful and configurable **Data Table**.
|
|
21
|
+
* A **Kanban View** with drag-and-drop.
|
|
22
|
+
* A **Calendar View**.
|
|
23
|
+
* **Dashboards & KPIs**: Build custom dashboards to monitor your activity with charts and Key Performance Indicators.
|
|
24
|
+
* **Data Management Tools**:
|
|
25
|
+
* A flexible **Data Importer** (CSV, Excel, JSON).
|
|
26
|
+
* A powerful **Data Exporter**.
|
|
27
|
+
* A **Visual Condition Builder** for creating complex queries.
|
|
28
|
+
* **Built-in Systems**: The library also includes systems for **user tutorials**, **data versioning/history**, **backups**, and much more.
|
|
29
|
+
|
|
30
|
+
This guide focuses on the technical integration. Once set up, you will be able to use the components and hooks provided by the library to leverage these features.
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
Install the library:
|
|
34
|
+
```shell
|
|
35
|
+
npm install ../../data-primals-engine
|
|
36
|
+
```
|
|
37
|
+
Install peer dependencies:
|
|
38
|
+
```shell
|
|
39
|
+
npm install react-query react-router-dom react-cookie
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Basic Setup
|
|
43
|
+
|
|
44
|
+
The setup mainly occurs in your application's root file (typically App.jsx or main.jsx).
|
|
45
|
+
|
|
46
|
+
It consists of initializing a single QueryClient instance and wrapping your app with the required Providers.
|
|
47
|
+
|
|
48
|
+
### Set the QueryClient (Singleton)
|
|
49
|
+
For react-query caching to work correctly across your app (including inside the library), it is crucial to instantiate QueryClient only once.
|
|
50
|
+
|
|
51
|
+
The data-primals-engine library needs to know which QueryClient instance you're using. It exports a setQueryClient function for that purpose.
|
|
52
|
+
|
|
53
|
+
### Set up the Providers
|
|
54
|
+
Your app must be wrapped by several Providers in the correct order so the contexts are available to all child components.
|
|
55
|
+
|
|
56
|
+
## Full example (App.jsx)
|
|
57
|
+
Here's what your main application file should look like:
|
|
58
|
+
```jsx
|
|
59
|
+
// In your main App.jsx file (e.g., hackersonline/client/src/App.jsx)
|
|
60
|
+
|
|
61
|
+
import React from 'react';
|
|
62
|
+
import { BrowserRouter, Routes, Route } from 'react-router-dom';
|
|
63
|
+
import { CookiesProvider } from 'react-cookie';
|
|
64
|
+
|
|
65
|
+
// 1. Import QueryClient and its Provider from react-query
|
|
66
|
+
import { QueryClient, QueryClientProvider } from 'react-query';
|
|
67
|
+
|
|
68
|
+
// 2. Import Providers and the config function from data-primals-engine
|
|
69
|
+
import {
|
|
70
|
+
ModelProvider,
|
|
71
|
+
AuthProvider,
|
|
72
|
+
UIProvider,
|
|
73
|
+
NotificationProvider,
|
|
74
|
+
setQueryClient // <-- Important config function
|
|
75
|
+
} from 'data-primals-engine/client';
|
|
76
|
+
|
|
77
|
+
// 3. Import the i18n config (see dedicated section)
|
|
78
|
+
import 'data-primals-engine/i18n';
|
|
79
|
+
|
|
80
|
+
// 4. (CRUCIAL) Create a unique instance of QueryClient
|
|
81
|
+
const queryClient = new QueryClient();
|
|
82
|
+
|
|
83
|
+
// 5. (CRUCIAL) Pass the instance to the shared library
|
|
84
|
+
setQueryClient(queryClient);
|
|
85
|
+
|
|
86
|
+
// Your page components
|
|
87
|
+
import HomePage from './pages/HomePage';
|
|
88
|
+
import UserDashboard from './pages/UserDashboard';
|
|
89
|
+
|
|
90
|
+
function App() {
|
|
91
|
+
return (
|
|
92
|
+
// 6. Wrap the app with all required providers
|
|
93
|
+
<QueryClientProvider client={queryClient}>
|
|
94
|
+
<AuthProvider>
|
|
95
|
+
<CookiesProvider>
|
|
96
|
+
<ModelProvider>
|
|
97
|
+
<BrowserRouter>
|
|
98
|
+
<UIProvider>
|
|
99
|
+
<NotificationProvider>
|
|
100
|
+
|
|
101
|
+
{/* Your app content */}
|
|
102
|
+
<Routes>
|
|
103
|
+
<Route path="/" element={<HomePage />} />
|
|
104
|
+
<Route path="/dashboard" element={<UserDashboard />} />
|
|
105
|
+
{/* ... other routes */}
|
|
106
|
+
</Routes>
|
|
107
|
+
|
|
108
|
+
</NotificationProvider>
|
|
109
|
+
</UIProvider>
|
|
110
|
+
</BrowserRouter>
|
|
111
|
+
</ModelProvider>
|
|
112
|
+
</CookiesProvider>
|
|
113
|
+
</AuthProvider>
|
|
114
|
+
</QueryClientProvider>
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export default App;
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Internationalization (i18n)
|
|
122
|
+
The library comes with its own i18next configuration and translation files.
|
|
123
|
+
To enable it in your app, you just need to import the config module once in your main file (App.jsx or main.jsx):
|
|
124
|
+
|
|
125
|
+
```jsx
|
|
126
|
+
// In App.jsx or main.jsx
|
|
127
|
+
import 'data-primals-engine/i18n';
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
This simple import will:
|
|
131
|
+
|
|
132
|
+
- Initialize i18next.
|
|
133
|
+
- Load default translations (French, English, etc.).
|
|
134
|
+
- Enable automatic browser language detection.
|
|
135
|
+
|
|
136
|
+
You can then use react-i18next components and hooks (useTranslation, Trans) as usual in your application.
|
package/client/index.js
CHANGED
|
@@ -22,4 +22,3 @@ export { default as MessageRotator } from './src/MessageRotator';
|
|
|
22
22
|
export { default as DocumentationPageLayout } from './src/DocumentationPageLayout';
|
|
23
23
|
export { default as ContentView } from './src/ContentView';
|
|
24
24
|
export { default as AssistantChat } from './src/AssistantChat';
|
|
25
|
-
export { setQueryClient } from './src/App.jsx';
|