@data-fair/catalog-data-fair 0.2.0 → 0.2.2

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/lib/download.ts CHANGED
@@ -55,16 +55,23 @@ const getMetaData = async ({ catalogConfig, resourceId, log, secrets }: GetResou
55
55
  return field
56
56
  })
57
57
 
58
+ let size: number | undefined
59
+ if (dataset.storage?.dataFiles && dataset.storage.dataFiles.length > 0) {
60
+ // get the last elt of the array to get the /full file size
61
+ const lastFile = dataset.storage.dataFiles[dataset.storage.dataFiles.length - 1]
62
+ size = lastFile.size
63
+ }
64
+
58
65
  const resource: Resource = {
59
66
  id: resourceId,
60
67
  title: dataset.title,
61
68
  description: dataset.description,
62
69
  format: 'csv',
63
- origin: `${catalogConfig.url}/datasets/${resourceId}`,
70
+ origin: dataset.page,
64
71
  frequency: dataset.frequency,
65
72
  image: dataset.image,
66
73
  keywords: dataset.keywords,
67
- size: dataset.file?.size ?? dataset.storage?.size ?? dataset.originalFile?.size,
74
+ size,
68
75
  schema: dataset.schema,
69
76
  filePath: '',
70
77
  }
@@ -90,7 +97,7 @@ const downloadResource = async (context: GetResourceContext<DataFairConfig>, fil
90
97
  const filePath = join(context.tmpDir, `${context.resourceId}.csv`)
91
98
  try {
92
99
  if (file && !context.importConfig.fields?.length && !context.importConfig.filters?.length) {
93
- await context.log.task('downloading', 'Téléchargement en cours... (taille approximative)', res.size || NaN)
100
+ await context.log.task('downloading', 'Téléchargement en cours...', res.size || NaN)
94
101
  await downloadResourceFile(filePath, context)
95
102
  } else {
96
103
  await context.log.task('downloading', 'Téléchargement en cours...', NaN)
@@ -124,17 +131,19 @@ const downloadResourceFile = async (filePath: string, { catalogConfig, resourceI
124
131
  }
125
132
 
126
133
  let downloaded = 0
127
- let logPromise: Promise<void> | null = null
134
+ let lastLogTime = Date.now()
135
+ const logInterval = 500 // ms
128
136
 
129
- return new Promise<void>((resolve, reject) => {
137
+ await new Promise<void>((resolve, reject) => {
130
138
  const fileStream = fs.createWriteStream(filePath, { encoding: 'binary' }) // Ensure binary encoding
131
139
 
132
140
  response.data.on('data', (chunk: Buffer) => {
133
141
  downloaded += chunk.length
134
- if (!logPromise) {
135
- logPromise = log.progress('downloading', downloaded)
142
+ const now = Date.now()
143
+ if (now - lastLogTime > logInterval) {
144
+ lastLogTime = now
145
+ log.progress('downloading', downloaded)
136
146
  .catch(err => console.warn('Progress logging failed:', err))
137
- .finally(() => { logPromise = null })
138
147
  }
139
148
  })
140
149
 
@@ -157,6 +166,8 @@ const downloadResourceFile = async (filePath: string, { catalogConfig, resourceI
157
166
  reject(err)
158
167
  })
159
168
  })
169
+
170
+ await log.progress('downloading', downloaded, downloaded)
160
171
  }
161
172
 
162
173
  /**
@@ -169,8 +180,8 @@ const downloadResourceFile = async (filePath: string, { catalogConfig, resourceI
169
180
  * @returns A promise that resolves when the file is successfully downloaded and saved.
170
181
  * @throws If there is an error writing the file or fetching the dataset.
171
182
  */
172
- const downloadResourceLines = async (destFile: string, { catalogConfig, resourceId, importConfig, secrets, log }: GetResourceContext<DataFairConfig> & { importConfig: ImportConfig }) => {
173
- let url: string | null = `${catalogConfig.url}/data-fair/api/v1/datasets/${resourceId}/lines?format=csv&size=5000`
183
+ const downloadResourceLines = async (destFile: string, { catalogConfig, resourceId, importConfig, secrets, log }: GetResourceContext<DataFairConfig> & { importConfig: ImportConfig }): Promise<void> => {
184
+ let url: string | null = `${catalogConfig.url}/data-fair/api/v1/datasets/${resourceId}/lines?format=csv&size=10000`
174
185
 
175
186
  if (importConfig.fields) {
176
187
  url += '&select=' + importConfig.fields.map(field => field.key).join(',')
@@ -252,6 +263,7 @@ const downloadResourceLines = async (destFile: string, { catalogConfig, resource
252
263
  })
253
264
  })
254
265
  }
266
+ await log.progress('downloading', downloaded, downloaded)
255
267
  writer.end()
256
268
  }
257
269
 
package/lib/imports.ts CHANGED
@@ -6,7 +6,6 @@ import type { DataFairCapabilities } from './capabilities.ts'
6
6
  type ResourceList = Awaited<ReturnType<CatalogPlugin['listResources']>>['results']
7
7
 
8
8
  /**
9
- * Transform an ODS catalog into a Data Fair catalog
10
9
  * @param dataFairDataset the dataset to transform
11
10
  * @returns an object containing the count of resources, the transformed resources, and an empty path array
12
11
  */
@@ -14,11 +13,16 @@ const prepareCatalog = (dataFairDatasets: DataFairDataset[]): ResourceList => {
14
13
  const catalog: ResourceList = []
15
14
 
16
15
  for (const dataFairDataset of dataFairDatasets) {
16
+ let size: number | undefined
17
+ if (dataFairDataset.storage?.dataFiles && dataFairDataset.storage.dataFiles.length > 0) {
18
+ const lastFile = dataFairDataset.storage.dataFiles[dataFairDataset.storage.dataFiles.length - 1]
19
+ size = lastFile.size
20
+ }
17
21
  catalog.push({
18
22
  id: dataFairDataset.id,
19
23
  title: dataFairDataset.title,
20
24
  format: 'csv',
21
- size: dataFairDataset.file?.size ?? dataFairDataset.storage?.size ?? dataFairDataset.originalFile?.size,
25
+ size,
22
26
  type: 'resource',
23
27
  origin: dataFairDataset.page
24
28
  } as ResourceList[number])
@@ -32,7 +36,7 @@ const prepareCatalog = (dataFairDatasets: DataFairDataset[]): ResourceList => {
32
36
  * @returns the list of Resources available on this catalog
33
37
  */
34
38
  export const listResources = async (config: ListResourcesContext<DataFairConfig, DataFairCapabilities>): ReturnType<CatalogPlugin<DataFairConfig>['listResources']> => {
35
- const dataFairParams: Record<string, any> = {}
39
+ const dataFairParams: Record<string, any> = { sort: 'title' }
36
40
  if (config.params?.q) dataFairParams.q = config.params.q
37
41
  if (config.params?.size) dataFairParams.size = config.params.size
38
42
  if (config.params?.page) dataFairParams.page = config.params.page
@@ -42,7 +46,7 @@ export const listResources = async (config: ListResourcesContext<DataFairConfig,
42
46
  const headers = config.secrets.apiKey ? { 'x-apiKey': config.secrets.apiKey } : undefined
43
47
  try {
44
48
  const res = (await axios.get(url, { params: dataFairParams, headers }))
45
- if (res.status !== 200) {
49
+ if (res.status !== 200 || typeof res.data !== 'object') {
46
50
  throw new Error(`HTTP error : ${res.status}, ${res.data}`)
47
51
  }
48
52
  data = res.data
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@data-fair/catalog-data-fair",
3
3
  "description": "A simple Data Fair plugin for the Data Fair catalogs service.",
4
- "version": "0.2.0",
4
+ "version": "0.2.2",
5
5
  "main": "index.ts",
6
6
  "type": "module",
7
7
  "scripts": {
@@ -210,6 +210,19 @@ export type DataFairDataset = {
210
210
  */
211
211
  storage?: {
212
212
  size?: number;
213
+ /**
214
+ * Le tableau de résultats.
215
+ */
216
+ dataFiles?: {
217
+ key?: string;
218
+ size?: number;
219
+ name?: string;
220
+ mimetype?: string;
221
+ updatedAt?: string;
222
+ title?: string;
223
+ url?: string;
224
+ [k: string]: unknown;
225
+ }[];
213
226
  [k: string]: unknown;
214
227
  };
215
228
  /**
@@ -347,6 +347,37 @@
347
347
  "properties": {
348
348
  "size": {
349
349
  "type": "integer"
350
+ },
351
+ "dataFiles": {
352
+ "type": "array",
353
+ "description": "Le tableau de résultats.",
354
+ "items": {
355
+ "type": "object",
356
+ "properties": {
357
+ "key": {
358
+ "type": "string"
359
+ },
360
+ "size": {
361
+ "type": "number"
362
+ },
363
+ "name": {
364
+ "type": "string"
365
+ },
366
+ "mimetype": {
367
+ "type": "string"
368
+ },
369
+ "updatedAt": {
370
+ "type": "string",
371
+ "format": "date-time"
372
+ },
373
+ "title": {
374
+ "type": "string"
375
+ },
376
+ "url": {
377
+ "type": "string"
378
+ }
379
+ }
380
+ }
350
381
  }
351
382
  }
352
383
  },
@@ -50,6 +50,7 @@ export const schema = {
50
50
  }
51
51
  },
52
52
  "layout": {
53
+ "density": "compact",
53
54
  "getItems": {
54
55
  "url": "${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false",
55
56
  "itemTitle": "item.label",
@@ -4,7 +4,7 @@
4
4
  "use strict";
5
5
  export const validate = validate14;
6
6
  export default validate14;
7
- const schema16 = {"$id":"https://github.com/data-fair/catalog-data-fair/import-config","x-exports":["types","validate","schema"],"title":"Configuration de l'import","type":"object","additionalProperties":false,"properties":{"fields":{"type":"array","default":[],"title":"Colonnes du jeu de données","description":"La liste des colonnes à importer. Si ce champ est vide, toutes les colonnes seront importées.","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}}},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false","itemTitle":"item.label","itemKey":"item.key"}}},"filters":{"$ref":"#/$defs/filters"}},"$defs":{"filters":{"title":"Filtres prédéfinis","type":"array","default":[],"items":{"type":"object","default":{"type":"in"},"required":["type"],"oneOf":[{"title":"Restreindre à des valeurs précises","required":["field","values","type"],"properties":{"type":{"const":"in"},"field":{"$ref":"#/$defs/filterField"},"values":{"type":"array","title":"Valeurs","description":"Importe seulement des lignes où la valeur du champ indiqué est égale à l'une des valeurs renseignées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","items":{"type":"string"},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"},"props":{"clearable":true}},"default":[]}}},{"title":"Exclure des valeurs","required":["field","values","type"],"properties":{"type":{"const":"nin"},"field":{"$ref":"#/$defs/filterField"},"values":{"type":"array","title":"Valeurs à exclure","description":"Importe seulement des lignes où la valeur du champ indiqué est différente des valeurs renseignées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","items":{"type":"string"},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"},"props":{"clearable":true}},"default":[]}}},{"title":"Supérieur à une valeur","required":["field","value","type"],"properties":{"type":{"const":"gte"},"field":{"$ref":"#/$defs/filterField"},"value":{"type":"string","title":"Valeur minimale","description":"Importe seulement des lignes où la valeur du champ indiqué est supérieur ou égale à la valeur renseignée. La valeur peut être un nombre, une chaîne de caractère (*ordre alphanumérique*), une date.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true&sort=asc"}}}}},{"title":"Inférieur à une valeur","required":["field","value","type"],"properties":{"type":{"const":"lte"},"field":{"$ref":"#/$defs/filterField"},"value":{"type":"string","title":"Valeur maximale","description":"Importe seulement les lignes où la valeur du champ indiqué est inférieur à la valeur renseignée. La valeur peut être un nombre, une chaîne de caractère (*ordre alphanumérique*), une date.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true&sort=asc"}}}}},{"title":"Commence par les caractères","required":["field","value","type"],"properties":{"type":{"const":"starts"},"field":{"$ref":"#/$defs/filterFieldString"},"value":{"type":"string","description":"Importe seulement les lignes où le champ (colonne) indiqué commence par une chaîne de caractères précise. La chaîne de caractères est sensible à la casse.<br>Seuls les champs (colonnes) ayant pour valeurs des chaînes de caractères sont acceptées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","title":"Commence par les caractères","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"}}}}}]}},"filterField":{"type":"object","title":"Colonne de filtre","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false","itemTitle":"item.label","itemKey":"item.key"}}},"filterFieldString":{"type":"object","title":"Colonne de filtre","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false&type=string","itemTitle":"item.label","itemKey":"item.key"}}}}};
7
+ const schema16 = {"$id":"https://github.com/data-fair/catalog-data-fair/import-config","x-exports":["types","validate","schema"],"title":"Configuration de l'import","type":"object","additionalProperties":false,"properties":{"fields":{"type":"array","default":[],"title":"Colonnes du jeu de données","description":"La liste des colonnes à importer. Si ce champ est vide, toutes les colonnes seront importées.","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}}},"layout":{"density":"compact","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false","itemTitle":"item.label","itemKey":"item.key"}}},"filters":{"$ref":"#/$defs/filters"}},"$defs":{"filters":{"title":"Filtres prédéfinis","type":"array","default":[],"items":{"type":"object","default":{"type":"in"},"required":["type"],"oneOf":[{"title":"Restreindre à des valeurs précises","required":["field","values","type"],"properties":{"type":{"const":"in"},"field":{"$ref":"#/$defs/filterField"},"values":{"type":"array","title":"Valeurs","description":"Importe seulement des lignes où la valeur du champ indiqué est égale à l'une des valeurs renseignées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","items":{"type":"string"},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"},"props":{"clearable":true}},"default":[]}}},{"title":"Exclure des valeurs","required":["field","values","type"],"properties":{"type":{"const":"nin"},"field":{"$ref":"#/$defs/filterField"},"values":{"type":"array","title":"Valeurs à exclure","description":"Importe seulement des lignes où la valeur du champ indiqué est différente des valeurs renseignées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","items":{"type":"string"},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"},"props":{"clearable":true}},"default":[]}}},{"title":"Supérieur à une valeur","required":["field","value","type"],"properties":{"type":{"const":"gte"},"field":{"$ref":"#/$defs/filterField"},"value":{"type":"string","title":"Valeur minimale","description":"Importe seulement des lignes où la valeur du champ indiqué est supérieur ou égale à la valeur renseignée. La valeur peut être un nombre, une chaîne de caractère (*ordre alphanumérique*), une date.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true&sort=asc"}}}}},{"title":"Inférieur à une valeur","required":["field","value","type"],"properties":{"type":{"const":"lte"},"field":{"$ref":"#/$defs/filterField"},"value":{"type":"string","title":"Valeur maximale","description":"Importe seulement les lignes où la valeur du champ indiqué est inférieur à la valeur renseignée. La valeur peut être un nombre, une chaîne de caractère (*ordre alphanumérique*), une date.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true&sort=asc"}}}}},{"title":"Commence par les caractères","required":["field","value","type"],"properties":{"type":{"const":"starts"},"field":{"$ref":"#/$defs/filterFieldString"},"value":{"type":"string","description":"Importe seulement les lignes où le champ (colonne) indiqué commence par une chaîne de caractères précise. La chaîne de caractères est sensible à la casse.<br>Seuls les champs (colonnes) ayant pour valeurs des chaînes de caractères sont acceptées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","title":"Commence par les caractères","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"}}}}}]}},"filterField":{"type":"object","title":"Colonne de filtre","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false","itemTitle":"item.label","itemKey":"item.key"}}},"filterFieldString":{"type":"object","title":"Colonne de filtre","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false&type=string","itemTitle":"item.label","itemKey":"item.key"}}}}};
8
8
  const schema17 = {"title":"Filtres prédéfinis","type":"array","default":[],"items":{"type":"object","default":{"type":"in"},"required":["type"],"oneOf":[{"title":"Restreindre à des valeurs précises","required":["field","values","type"],"properties":{"type":{"const":"in"},"field":{"$ref":"#/$defs/filterField"},"values":{"type":"array","title":"Valeurs","description":"Importe seulement des lignes où la valeur du champ indiqué est égale à l'une des valeurs renseignées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","items":{"type":"string"},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"},"props":{"clearable":true}},"default":[]}}},{"title":"Exclure des valeurs","required":["field","values","type"],"properties":{"type":{"const":"nin"},"field":{"$ref":"#/$defs/filterField"},"values":{"type":"array","title":"Valeurs à exclure","description":"Importe seulement des lignes où la valeur du champ indiqué est différente des valeurs renseignées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","items":{"type":"string"},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"},"props":{"clearable":true}},"default":[]}}},{"title":"Supérieur à une valeur","required":["field","value","type"],"properties":{"type":{"const":"gte"},"field":{"$ref":"#/$defs/filterField"},"value":{"type":"string","title":"Valeur minimale","description":"Importe seulement des lignes où la valeur du champ indiqué est supérieur ou égale à la valeur renseignée. La valeur peut être un nombre, une chaîne de caractère (*ordre alphanumérique*), une date.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true&sort=asc"}}}}},{"title":"Inférieur à une valeur","required":["field","value","type"],"properties":{"type":{"const":"lte"},"field":{"$ref":"#/$defs/filterField"},"value":{"type":"string","title":"Valeur maximale","description":"Importe seulement les lignes où la valeur du champ indiqué est inférieur à la valeur renseignée. La valeur peut être un nombre, une chaîne de caractère (*ordre alphanumérique*), une date.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true&sort=asc"}}}}},{"title":"Commence par les caractères","required":["field","value","type"],"properties":{"type":{"const":"starts"},"field":{"$ref":"#/$defs/filterFieldString"},"value":{"type":"string","description":"Importe seulement les lignes où le champ (colonne) indiqué commence par une chaîne de caractères précise. La chaîne de caractères est sensible à la casse.<br>Seuls les champs (colonnes) ayant pour valeurs des chaînes de caractères sont acceptées.<br>*Toutes les valeurs peuvent ne pas être affichées, écrivez pour rechercher un champ particulier.*","title":"Commence par les caractères","layout":{"comp":"combobox","getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/values/${parent.data.field.key}?q={q}&q_mode=complete&size=100&stringify=true"}}}}}]}};
9
9
  const schema18 = {"type":"object","title":"Colonne de filtre","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false","itemTitle":"item.label","itemKey":"item.key"}}};
10
10
  const schema22 = {"type":"object","title":"Colonne de filtre","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"}},"layout":{"getItems":{"url":"${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false&type=string","itemTitle":"item.label","itemKey":"item.key"}}};
@@ -29,6 +29,7 @@
29
29
  }
30
30
  },
31
31
  "layout": {
32
+ "density": "compact",
32
33
  "getItems": {
33
34
  "url": "${context.catalogConfig.url}/data-fair/api/v1/datasets/${context.resourceId}/schema?calculated=false",
34
35
  "itemTitle": "item.label",
@@ -249,4 +250,4 @@
249
250
  }
250
251
  }
251
252
  }
252
- }
253
+ }