@medyll/idae-machine 0.103.0 → 0.105.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.
@@ -0,0 +1,9 @@
1
+ export declare class CrudService {
2
+ private db;
3
+ constructor();
4
+ list(collection: string): any[];
5
+ get(collection: string, id: any): any | undefined;
6
+ create(collection: string, data: any): any;
7
+ update(collection: string, id: any, data: any): any;
8
+ delete(collection: string, id: any): boolean;
9
+ }
@@ -0,0 +1,45 @@
1
+ // CrudService.ts - Basic CRUD operations for collections
2
+ // Migré depuis _work, adapté pour /lib/db
3
+ // Utilisé pour manipuler les collections en mémoire (exemple/demo)
4
+ import { schemeModelDb } from './dbSchema.js';
5
+ export class CrudService {
6
+ db = {};
7
+ constructor() {
8
+ // Initialise les tableaux pour chaque collection
9
+ Object.keys(schemeModelDb).forEach(col => {
10
+ this.db[col] = [];
11
+ });
12
+ }
13
+ list(collection) {
14
+ return this.db[collection] || [];
15
+ }
16
+ get(collection, id) {
17
+ return this.db[collection]?.find(item => item.id === id);
18
+ }
19
+ create(collection, data) {
20
+ if (!this.db[collection])
21
+ this.db[collection] = [];
22
+ this.db[collection].push(data);
23
+ return data;
24
+ }
25
+ update(collection, id, data) {
26
+ if (!this.db[collection])
27
+ return undefined;
28
+ const idx = this.db[collection].findIndex(item => item.id === id);
29
+ if (idx >= 0) {
30
+ this.db[collection][idx] = { ...this.db[collection][idx], ...data };
31
+ return this.db[collection][idx];
32
+ }
33
+ return undefined;
34
+ }
35
+ delete(collection, id) {
36
+ if (!this.db[collection])
37
+ return false;
38
+ const idx = this.db[collection].findIndex(item => item.id === id);
39
+ if (idx >= 0) {
40
+ this.db[collection].splice(idx, 1);
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ }
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  path: D:\boulot\python\wollama\src\lib\db\dbFields.ts
3
3
  */
4
- import { schemeModel } from './dbSchema';
4
+ import { schemeModel } from './dbSchema.js';
5
5
  export var enumPrimitive;
6
6
  (function (enumPrimitive) {
7
7
  enumPrimitive["id"] = "id";
@@ -1,5 +1,4 @@
1
1
  import { createIdbqDb } from '@medyll/idae-idbql';
2
- import { space } from 'postcss/lib/list';
3
2
  /* here is an example of how to declare a dataModel*/
4
3
  export const schemeModelDb = {
5
4
  agent: {
@@ -453,4 +452,4 @@ export const schemeModel = {
453
452
  ...schemeModelDb
454
453
  };
455
454
  const idbqStore = createIdbqDb(schemeModel, 13);
456
- export const { idbql, idbqlState, idbDatabase, idbqModel } = idbqStore.create('woolama');
455
+ export const { idbql, idbqlState, idbDatabase, idbqModel } = idbqStore.create('idae-machine');
@@ -0,0 +1,124 @@
1
+ export type SchemeList = AppScheme[];
2
+ export type SchemeFieldModelList = AppSchemeFieldModel[];
3
+ export type SchemeFieldList = SchemeField[];
4
+ export type mongoId = string;
5
+ export type schemeId = number;
6
+ export type schemeCode = string;
7
+ export type schemeName = string;
8
+ export type schemeIcon = string;
9
+ export type schemeColor = string;
10
+ export type schemeOrder = number;
11
+ export type schemeFieldId = number;
12
+ export type schemeFieldCode = string;
13
+ export type schemeFieldCodeRaw = string;
14
+ export type schemeFieldName = string;
15
+ export type schemeFieldNameRaw = string;
16
+ export type schemeFieldIcon = string;
17
+ export type schemeFieldColor = string;
18
+ export type schemeFieldOrder = number;
19
+ export interface IEmptyObject {
20
+ }
21
+ export interface AppSchemeBase {
22
+ idappscheme_base: schemeId;
23
+ code: schemeCode;
24
+ name: schemeName;
25
+ icon?: schemeIcon;
26
+ color?: schemeColor;
27
+ order?: schemeOrder;
28
+ dateChanged: string;
29
+ timeChanged: string;
30
+ }
31
+ export interface AppSchemeType extends BaseBase {
32
+ idappscheme_type: schemeId;
33
+ }
34
+ type Grille<T> = Record<keyof T, {
35
+ id: schemeId;
36
+ code: schemeCode;
37
+ order?: schemeOrder;
38
+ }>;
39
+ interface BaseBase {
40
+ code: schemeCode;
41
+ name: schemeName;
42
+ icon?: schemeIcon;
43
+ color?: schemeColor;
44
+ order?: schemeOrder;
45
+ dateChanged: string;
46
+ timeChanged: string;
47
+ }
48
+ export interface AppScheme extends BaseBase, AppSchemeBase, AppSchemeType {
49
+ idappscheme: schemeId;
50
+ fk: Grille<AppScheme>;
51
+ grilleRFK: Grille<AppScheme>;
52
+ grilleCount: Grille<AppScheme>;
53
+ }
54
+ export interface AppSchemeField {
55
+ idappscheme_field: schemeFieldId;
56
+ idappscheme_field_group: schemeFieldId;
57
+ idappscheme_field_type: schemeFieldId;
58
+ codeAppscheme_field: schemeFieldCode;
59
+ nameAppscheme_field: schemeFieldName;
60
+ nameAppscheme_field_raw: schemeFieldNameRaw;
61
+ codeAppscheme_field_raw: schemeFieldCodeRaw;
62
+ iconAppscheme_field?: schemeFieldIcon;
63
+ colorAppscheme_field?: schemeFieldColor;
64
+ typeAppscheme_field: string;
65
+ groupAppscheme_field: string;
66
+ orderAppscheme_field?: schemeFieldOrder;
67
+ requiredAppscheme_field?: boolean | (() => boolean);
68
+ field_code: schemeFieldCode;
69
+ field_name: schemeFieldName;
70
+ field_name_raw: schemeFieldNameRaw;
71
+ field_code_raw: schemeFieldCodeRaw;
72
+ field_icon?: schemeFieldIcon;
73
+ field_color?: schemeFieldColor;
74
+ field_type: string;
75
+ field_group: string;
76
+ field_order?: schemeFieldOrder;
77
+ field_required?: boolean | (() => boolean);
78
+ }
79
+ export interface AppSchemeFieldGroup {
80
+ idappscheme_field_group: schemeFieldId;
81
+ nameAppscheme_field_group: string;
82
+ codeAppscheme_field_group: string;
83
+ orderAppscheme_field_group?: schemeFieldOrder;
84
+ }
85
+ export interface AppSchemeFieldType {
86
+ idappscheme_field_type: schemeFieldId;
87
+ nameAppscheme_field_type: string;
88
+ codeAppscheme_field_type: string;
89
+ orderAppscheme_field_type?: schemeFieldOrder;
90
+ }
91
+ export interface AppSchemeFieldModel {
92
+ field_code: schemeFieldCode;
93
+ field_name: schemeFieldName;
94
+ field_name_raw: schemeFieldNameRaw;
95
+ field_code_raw: schemeFieldCodeRaw;
96
+ field_icon?: schemeFieldIcon;
97
+ field_color?: schemeFieldColor;
98
+ field_type: string;
99
+ field_group: string;
100
+ field_order?: schemeFieldOrder;
101
+ field_required?: boolean | (() => boolean);
102
+ }
103
+ export interface AppschemeView extends BaseBase {
104
+ idappscheme_view: schemeId;
105
+ fields: {
106
+ [key: string]: {
107
+ order: schemeFieldOrder;
108
+ schemeCode: schemeCode;
109
+ schemeFieldCode: schemeFieldCode;
110
+ transform: () => void;
111
+ };
112
+ };
113
+ }
114
+ export interface SchemeField {
115
+ _id: mongoId;
116
+ [index: string]: schemeFieldId | string;
117
+ }
118
+ export interface IDataset {
119
+ [key: string]: SchemeField;
120
+ }
121
+ export interface IResultSet {
122
+ [key: mongoId]: IDataset;
123
+ }
124
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -8,9 +8,9 @@
8
8
  type Props,
9
9
  Looper
10
10
  } from '@medyll/idae-slotui-svelte';
11
- import CreateUpdate from '$components/form/CreateUpdate.svelte';
12
- import { idbqlState } from '../db/dbSchema';
13
- import { IDbCollections, IDbCollectionValues } from '../db/dbFields';
11
+ import CreateUpdate from './CreateUpdate.svelte';
12
+ import { idbqlState } from '../db/dbSchema.js';
13
+ import { IDbCollections, IDbCollectionValues } from '../db/dbFields.js';
14
14
  import { hydrate, type Snippet } from 'svelte';
15
15
  import type { Where } from '@medyll/idae-idbql';
16
16
 
@@ -1,6 +1,6 @@
1
1
  <script lang="ts" generics="COL = Record<string,any>">
2
2
  import { type MenuListProps, Button, MenuList, MenuListItem, openWindow, type Props } from '@medyll/idae-slotui-svelte';
3
- import CreateUpdate from '$components/form/CreateUpdate.svelte';
3
+ import CreateUpdate from './CreateUpdate.svelte';
4
4
  import { idbqlState } from '../db/dbSchema';
5
5
  import { IDbCollections, IDbCollectionValues } from '../db/dbFields';
6
6
  import { hydrate } from 'svelte';
@@ -1,8 +1,7 @@
1
1
  <script lang="ts" generics="T = Record<string, any>">
2
- import { Button, openWindow, type Props } from '@medyll/idae-slotui-svelte';
3
- import CreateUpdate from '$components/form/CreateUpdate.svelte';
4
- import { idbqlState } from '../db/dbSchema';
5
- import CrudDataList from './DataListMenu.svelte';
2
+ import { Button, openWindow, type Props } from '@medyll/idae-slotui-svelte';
3
+ import { idbqlState } from '../db/dbSchema.js';
4
+ import CrudDataList from './CollectionListMenu.svelte';
6
5
 
7
6
  interface CrudZoneProps {
8
7
  collection: string;
@@ -0,0 +1,60 @@
1
+ <!-- DataList.svelte - Composant listant les items d'une collection
2
+ Migré depuis _work, adapté pour /lib/form et Svelte 5
3
+ Props : collection, displayMode, where, items, onItemClick
4
+ -->
5
+ <script lang="ts">
6
+ let {
7
+ collection,
8
+ displayMode = 'grid',
9
+ where = {},
10
+ items = [],
11
+ onItemClick = null
12
+ }: {
13
+ collection: string,
14
+ displayMode?: 'grid' | 'list',
15
+ where?: any,
16
+ items?: any[],
17
+ onItemClick?: ((item: any, idx: number) => void) | null
18
+ } = $props();
19
+ </script>
20
+
21
+ <div class="data-list" data-mode={displayMode}>
22
+ <h2>{collection} ({displayMode})</h2>
23
+ <div class={displayMode === 'grid' ? 'grid' : 'list'}>
24
+ {#each items as item, idx}
25
+ <div
26
+ class="item"
27
+ role="button"
28
+ tabindex="0"
29
+ onclick={() => onItemClick && onItemClick(item, idx)}
30
+ onkeydown={e => (e.key === 'Enter' || e.key === ' ') && onItemClick && onItemClick(item, idx)}
31
+ >
32
+ {item.name || `Item ${idx+1}`}
33
+ </div>
34
+ {:else}
35
+ <p>No items to display.</p>
36
+ {/each}
37
+ </div>
38
+ </div>
39
+
40
+ <style>
41
+ .data-list {
42
+ padding: 1rem;
43
+ }
44
+ .grid {
45
+ display: grid;
46
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
47
+ gap: 1rem;
48
+ }
49
+ .list {
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: 0.5rem;
53
+ }
54
+ .item {
55
+ background: #f0f0f0;
56
+ border-radius: 6px;
57
+ padding: 0.75rem;
58
+ cursor: pointer;
59
+ }
60
+ </style>
@@ -0,0 +1,10 @@
1
+ type $$ComponentProps = {
2
+ collection: string;
3
+ displayMode?: 'grid' | 'list';
4
+ where?: any;
5
+ items?: any[];
6
+ onItemClick?: ((item: any, idx: number) => void) | null;
7
+ };
8
+ declare const DataList: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type DataList = ReturnType<typeof DataList>;
10
+ export default DataList;
package/dist/index.d.ts CHANGED
@@ -5,10 +5,16 @@ export { default as List } from './fragments/List.svelte';
5
5
  export { default as InfoLine } from './fragments/InfoLine.svelte';
6
6
  export { default as Frame } from './fragments/Frame.svelte';
7
7
  export { default as Confirm } from './fragments/Confirm.svelte';
8
+ export * from './db/types.js';
9
+ export * from './db/dbSchema.js';
10
+ export * from './db/dbFields.js';
11
+ export * from './db/dataModel.js';
12
+ export * from './db/CrudService.js';
8
13
  export * from './form/types.js';
9
14
  export { default as FieldValue } from './form/FieldValue.svelte';
10
15
  export { default as FieldInPlace } from './form/FieldInPlace.svelte';
11
16
  export { default as DataProvider } from './form/DataProvider.svelte';
17
+ export { default as DataList } from './form/DataList.svelte';
12
18
  export { default as CrudZone } from './form/CrudZone.svelte';
13
19
  export { default as CreateUpdate } from './form/CreateUpdate.svelte';
14
20
  export { default as CollectionReverseFks } from './form/CollectionReverseFks.svelte';
@@ -17,6 +23,3 @@ export { default as CollectionList } from './form/CollectionList.svelte';
17
23
  export { default as CollectionFks } from './form/CollectionFks.svelte';
18
24
  export { default as CollectionFieldGuess } from './form/CollectionFieldGuess.svelte';
19
25
  export { default as CollectionButton } from './form/CollectionButton.svelte';
20
- export * from './db/dbSchema.js';
21
- export * from './db/dbFields.js';
22
- export * from './db/dataModel.js';
package/dist/index.js CHANGED
@@ -6,10 +6,16 @@ export { default as List } from './fragments/List.svelte';
6
6
  export { default as InfoLine } from './fragments/InfoLine.svelte';
7
7
  export { default as Frame } from './fragments/Frame.svelte';
8
8
  export { default as Confirm } from './fragments/Confirm.svelte';
9
+ export * from './db/types.js';
10
+ export * from './db/dbSchema.js';
11
+ export * from './db/dbFields.js';
12
+ export * from './db/dataModel.js';
13
+ export * from './db/CrudService.js';
9
14
  export * from './form/types.js';
10
15
  export { default as FieldValue } from './form/FieldValue.svelte';
11
16
  export { default as FieldInPlace } from './form/FieldInPlace.svelte';
12
17
  export { default as DataProvider } from './form/DataProvider.svelte';
18
+ export { default as DataList } from './form/DataList.svelte';
13
19
  export { default as CrudZone } from './form/CrudZone.svelte';
14
20
  export { default as CreateUpdate } from './form/CreateUpdate.svelte';
15
21
  export { default as CollectionReverseFks } from './form/CollectionReverseFks.svelte';
@@ -18,6 +24,3 @@ export { default as CollectionList } from './form/CollectionList.svelte';
18
24
  export { default as CollectionFks } from './form/CollectionFks.svelte';
19
25
  export { default as CollectionFieldGuess } from './form/CollectionFieldGuess.svelte';
20
26
  export { default as CollectionButton } from './form/CollectionButton.svelte';
21
- export * from './db/dbSchema.js';
22
- export * from './db/dbFields.js';
23
- export * from './db/dataModel.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medyll/idae-machine",
3
- "version": "0.103.0",
3
+ "version": "0.105.0",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build && npm run prepack",