From babed4de83ebd1e31798bc5c08085b31bcd2a428 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Wed, 24 Jul 2024 10:50:39 +0200 Subject: [PATCH 01/19] fix: exclude only undefined values --- packages/ezsLodex/src/formatOutput.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ezsLodex/src/formatOutput.js b/packages/ezsLodex/src/formatOutput.js index 9dcad4f48..40c20f18c 100644 --- a/packages/ezsLodex/src/formatOutput.js +++ b/packages/ezsLodex/src/formatOutput.js @@ -47,7 +47,7 @@ function formatOutput(data, feed) { if (keys.length > 0) { let check = false; keys.forEach((k, index) => { - if (values[index]) { + if (values[index] !== undefined) { feed.write(!check ? ' ' : ','); check = true; feed.write(json(k)); From 1b5ba6032b3dfadcbde4fd49ab36060d663996a7 Mon Sep 17 00:00:00 2001 From: AnaelKremer <170732172+AnaelKremer@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:04:52 +0200 Subject: [PATCH 02/19] feat: add query conditor for hal cnrs loader --- .../loaders/query-conditor-for-halcnrs.ini | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 workers/loaders/query-conditor-for-halcnrs.ini diff --git a/workers/loaders/query-conditor-for-halcnrs.ini b/workers/loaders/query-conditor-for-halcnrs.ini new file mode 100644 index 000000000..8f0d8d55b --- /dev/null +++ b/workers/loaders/query-conditor-for-halcnrs.ini @@ -0,0 +1,162 @@ +append = pack +label = query-conditor +extension = json +mimeType = application/json + +# load some plugins to activate some statements +[use] +plugin = conditor +plugin = basics + +# Toggle ezs traces (see server stderr log) +[debug] +ezs = false + +# {{{ +[TXTConcat] + +[replace] +path = q +value = self().trim() + +[CORHALFetch] +url = https://corhal-api.inist.fr +retries = 3 +timeout = 60000 + +[assign] +path = uri +value = get('business.sourceUidChain') +# }}} + +[assign] +path = typologie +value = get("business.duplicateGenre") + +path = titre +value = get("title.default") + +path = resume +value = get("abstract.default") + +path = auteurs +value = get("authors").map("fullname") + +path = identifiantsAuteurs +value = get("authors").map(author => _.pick(author, ['orcId', 'idRef', 'idHal','viaf'])) + +path = affiliations +value = get("authors").map( author =>_.flatMap(author.affiliations, 'address')) + +path = identifiantsAffiliations +value = get("authors").map("rnsr") + +path = domaine +value = get("classifications") + +path = keywords +value = get("keywords") + +path = ppn +value=get("sourceUids").filter( id => id.startsWith('sudoc')).replace("sudoc-theses$","") + +path = nnt +value = get("fulltextUrl").replace(/^(?!http:\/\/www\.theses\.fr\/).*$/, '').replace("http://www.theses.fr/","").replace("/document","") + +[assign] +path = autresIdentifiants +value = fix({pmcid: self.pmcId,arxiv : self.arxiv,pmid: self.pmId,nnt: self.nnt,ppn : self.ppn}) + +path = funders +value = get("funders").map("fullname") + +path = publicationDate +value = get("host.publicationDate") + +path = electronicPublicationDate +value = get("host.electronicPublicationDate") + +path = volume +value = get("host.volume") + +path = issue +value = get("host.issue") + +path = pages +value = get("host.pages.range") + +path = nomConference +value = get("host.conference.name") + +path = dateDebutConference +value = get("host.conference.date") + +path = villeConference +value = get("host.conference.place") + +path = langueDocument +value = get("host.language") + +path = issn +value = get("host.issn") + +path = nomRevue +value = get("host.title") + +path = publisherRevue +value = get("host.publisher") + +path = isbn +value = get("host.isbn") + +path = editors +value = get("host.editors").map("fullname") + +path = sourceUids +value = get("sourceUids") + +path = halID +value = get("halId") + +path = doublonsHal +value = get("sourceUids").filter(uid => uid.includes('hal')).size().gt(1).replace(true,"Oui").replace(false,"Non") + +[assign] +path=isHal +value=get("business.sourceUidChain").replace(/\$.*?!/g,"!").split("!").compact().some(item=>(/hal/).test(item)).replace(false,"Non").replace(true,"Oui") + +path = fulltextURL +value = get("fulltextUrl") + +# Ensures that each object contains an identification key (required by lodex) +[swing] +test = pick(['URI', 'uri']).pickBy(_.identity).isEmpty() +[swing/identify] + +# Ignore objects with duplicate URI +[dedupe] +ignore = true + +# Prevent keys from containing dot path notation (which is forbidden by nodejs mongoDB driver) +[OBJFlatten] +separator = fix('.') +reverse = true +safe = true + +# Uncomment to see each data sent to the database +#[debug] + +[exchange] +value = omit(["abstract","authors","classifications","business","pii","arxiv","inspire","localRef","pmcId","articleNumber","nnt","ppn","origins","technical","halId","title","originalGenre","pmId","fulltextUrl","enrichments","host"]) + +# Add contextual metadata related to the import +[assign] +path = lodexStamp.importedDate +value = fix(new Date()).thru(d => d.toDateString()) +path = lodexStamp.usedParser +value = env('parser') +path = lodexStamp.uploadedFilename +value = env('source') +path = uri +value = get('uri').trim() + From 409c59a3c165ee9ffc6fefc30247b836641c724b Mon Sep 17 00:00:00 2001 From: HeleneCreusot Date: Thu, 25 Jul 2024 10:59:51 +0200 Subject: [PATCH 03/19] fix(lodex-theme.json synthaxe error): variables is a row's configuration --- src/app/custom/themes/voscouleurs/index.ejs | 11 ++- .../themes/voscouleurs/lodex-theme.json | 76 +++++++++---------- 2 files changed, 43 insertions(+), 44 deletions(-) diff --git a/src/app/custom/themes/voscouleurs/index.ejs b/src/app/custom/themes/voscouleurs/index.ejs index b8a3bc9b4..4965d755a 100644 --- a/src/app/custom/themes/voscouleurs/index.ejs +++ b/src/app/custom/themes/voscouleurs/index.ejs @@ -14,7 +14,7 @@ - <% if(custom.font.family){ %> + <% if (custom.font) { %> <% } %> @@ -23,14 +23,13 @@ /* import palette */ <%=theme.cssVariable %> /* import config theme color */ - <% if(custom.font) {%> + <% if (custom.font) {%> :root { --font-title: <%= custom.font.title %>; - --font-text: <%= custom.font.text %>; } - <%}%> + <% } %> /* import config theme color */ - <% if(custom.color) {%> + <% if (custom.color) {%> :root { --bgBody: <%= custom.color.bgBody %>; --bgHeader: <%= custom.color.bgHeader %>; @@ -47,7 +46,7 @@ --textContrast: <%= custom.color.textContrast %>; --bgContrast: <%= custom.color.bgContrast %>; } - <%}%> + <% } %> diff --git a/src/app/custom/themes/voscouleurs/lodex-theme.json b/src/app/custom/themes/voscouleurs/lodex-theme.json index 716dfd91b..bcf05099d 100644 --- a/src/app/custom/themes/voscouleurs/lodex-theme.json +++ b/src/app/custom/themes/voscouleurs/lodex-theme.json @@ -13,44 +13,44 @@ "files": { "index": "index.ejs", "palette": "" - } - }, - "variables": { - "information": "toutes les configurations ci-dessous sont optionnelles.Pour les désactiver, supprimer \"le texte entre les guillemets\"", - "siteTitle": "titre du site", - "summary": "promesse du site, sous-titre", - "logo": { - "file": "url fichier du logo de l'organisme", - "alt": "nom de l'organisme", - "url": "url de l'organisme", - "size": "100" - }, - "font": { - "information": "utiliser strictement https://fonts.google.com/", - "family": "nom d'une famille de googlefont construit le lien dans head ", - "title": "nom de cette font pour les titres déclaration css" }, - "color": { - "info-theme": "EN DEVELOPPEMENT : les trois couleurs suivantes permettent de mémoriser les codes hexadecimaux de 2 couleurs qui font l'identité de votre organisme", - "themePrimary": "code hexa ", - "themeSecondary": "code hexa", - "themeRGBA": "code rgba de primary ou secondary", - "info-fond": "bg, pour 'background' en css, permet de mettre une couleur de fond sur les différents éléments de structure de vos pages", - "bgBody": "#fff", - "bgHeader": "", - "headerTitle": "", - "bgContent": "", - "bgFacet": "", - "titles": "", - "titleGraph": "", - "text": "", - "info-bouton": "ci-dessous, les couleurs des liens et boutons", - "icon": "", - "iconHover": "", - "button": "", - "buttonHover": "", - "textContrast": "", - "bgContrast": "" + "variables": { + "information": "toutes les configurations ci-dessous sont optionnelles.Pour les désactiver, supprimer \"le texte entre les guillemets\"", + "siteTitle": "titre du site", + "summary": "promesse du site, sous-titre", + "logo": { + "file": "url fichier du logo de l'organisme", + "alt": "nom de l'organisme", + "url": "url de l'organisme", + "size": "100" + }, + "font": { + "information": "utiliser strictement https://fonts.google.com/", + "family": "nom d'une famille de googlefont construit le lien dans head ", + "title": "nom de cette font pour les titres déclaration css" + }, + "color": { + "info-theme": "EN DEVELOPPEMENT : les trois couleurs suivantes permettent de mémoriser les codes hexadecimaux de 2 couleurs qui font l'identité de votre organisme", + "themePrimary": "code hexa ", + "themeSecondary": "code hexa", + "themeRGBA": "code rgba de primary ou secondary", + "info-fond": "bg, pour 'background' en css, permet de mettre une couleur de fond sur les différents éléments de structure de vos pages", + "bgBody": "#fff", + "bgHeader": "", + "headerTitle": "", + "bgContent": "", + "bgFacet": "", + "titles": "", + "titleGraph": "", + "text": "", + "info-bouton": "ci-dessous, les couleurs des liens et boutons", + "icon": "", + "iconHover": "", + "button": "", + "buttonHover": "", + "textContrast": "", + "bgContrast": "" + } } } -} \ No newline at end of file +} From 771ea220ee50cb22950e67596eb91eb432727c32 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Thu, 25 Jul 2024 14:53:17 +0200 Subject: [PATCH 04/19] add new parameters --- workers/loaders/query-openalex.ini | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/workers/loaders/query-openalex.ini b/workers/loaders/query-openalex.ini index 2a926b38a..202193ff5 100644 --- a/workers/loaders/query-openalex.ini +++ b/workers/loaders/query-openalex.ini @@ -36,6 +36,14 @@ value = self().trim() path = filter value = env('query') +; see https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/paging +path = per-page +value = 200 + +; https://docs.openalex.org/how-to-use-the-api/rate-limits-and-authentication#the-polite-pool +;path = mailto +;value = you@example.com + path = cursor value = * From 2463e69f7ed776654b9bcf01ab5843fe9ce2ca5a Mon Sep 17 00:00:00 2001 From: AnaelKremer <170732172+AnaelKremer@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:36:58 +0200 Subject: [PATCH 05/19] Update query-conditor-for-halcnrs.ini --- workers/loaders/query-conditor-for-halcnrs.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workers/loaders/query-conditor-for-halcnrs.ini b/workers/loaders/query-conditor-for-halcnrs.ini index 8f0d8d55b..273181960 100644 --- a/workers/loaders/query-conditor-for-halcnrs.ini +++ b/workers/loaders/query-conditor-for-halcnrs.ini @@ -1,5 +1,5 @@ append = pack -label = query-conditor +label = query-conditor-for-halcnrs extension = json mimeType = application/json From 4d4d6c305c631974d6a2588d71df8da3a7d2c787 Mon Sep 17 00:00:00 2001 From: AnaelKremer <170732172+AnaelKremer@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:04:52 +0200 Subject: [PATCH 06/19] feat: add query conditor for hal cnrs loader --- .../loaders/query-conditor-for-halcnrs.ini | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 workers/loaders/query-conditor-for-halcnrs.ini diff --git a/workers/loaders/query-conditor-for-halcnrs.ini b/workers/loaders/query-conditor-for-halcnrs.ini new file mode 100644 index 000000000..8f0d8d55b --- /dev/null +++ b/workers/loaders/query-conditor-for-halcnrs.ini @@ -0,0 +1,162 @@ +append = pack +label = query-conditor +extension = json +mimeType = application/json + +# load some plugins to activate some statements +[use] +plugin = conditor +plugin = basics + +# Toggle ezs traces (see server stderr log) +[debug] +ezs = false + +# {{{ +[TXTConcat] + +[replace] +path = q +value = self().trim() + +[CORHALFetch] +url = https://corhal-api.inist.fr +retries = 3 +timeout = 60000 + +[assign] +path = uri +value = get('business.sourceUidChain') +# }}} + +[assign] +path = typologie +value = get("business.duplicateGenre") + +path = titre +value = get("title.default") + +path = resume +value = get("abstract.default") + +path = auteurs +value = get("authors").map("fullname") + +path = identifiantsAuteurs +value = get("authors").map(author => _.pick(author, ['orcId', 'idRef', 'idHal','viaf'])) + +path = affiliations +value = get("authors").map( author =>_.flatMap(author.affiliations, 'address')) + +path = identifiantsAffiliations +value = get("authors").map("rnsr") + +path = domaine +value = get("classifications") + +path = keywords +value = get("keywords") + +path = ppn +value=get("sourceUids").filter( id => id.startsWith('sudoc')).replace("sudoc-theses$","") + +path = nnt +value = get("fulltextUrl").replace(/^(?!http:\/\/www\.theses\.fr\/).*$/, '').replace("http://www.theses.fr/","").replace("/document","") + +[assign] +path = autresIdentifiants +value = fix({pmcid: self.pmcId,arxiv : self.arxiv,pmid: self.pmId,nnt: self.nnt,ppn : self.ppn}) + +path = funders +value = get("funders").map("fullname") + +path = publicationDate +value = get("host.publicationDate") + +path = electronicPublicationDate +value = get("host.electronicPublicationDate") + +path = volume +value = get("host.volume") + +path = issue +value = get("host.issue") + +path = pages +value = get("host.pages.range") + +path = nomConference +value = get("host.conference.name") + +path = dateDebutConference +value = get("host.conference.date") + +path = villeConference +value = get("host.conference.place") + +path = langueDocument +value = get("host.language") + +path = issn +value = get("host.issn") + +path = nomRevue +value = get("host.title") + +path = publisherRevue +value = get("host.publisher") + +path = isbn +value = get("host.isbn") + +path = editors +value = get("host.editors").map("fullname") + +path = sourceUids +value = get("sourceUids") + +path = halID +value = get("halId") + +path = doublonsHal +value = get("sourceUids").filter(uid => uid.includes('hal')).size().gt(1).replace(true,"Oui").replace(false,"Non") + +[assign] +path=isHal +value=get("business.sourceUidChain").replace(/\$.*?!/g,"!").split("!").compact().some(item=>(/hal/).test(item)).replace(false,"Non").replace(true,"Oui") + +path = fulltextURL +value = get("fulltextUrl") + +# Ensures that each object contains an identification key (required by lodex) +[swing] +test = pick(['URI', 'uri']).pickBy(_.identity).isEmpty() +[swing/identify] + +# Ignore objects with duplicate URI +[dedupe] +ignore = true + +# Prevent keys from containing dot path notation (which is forbidden by nodejs mongoDB driver) +[OBJFlatten] +separator = fix('.') +reverse = true +safe = true + +# Uncomment to see each data sent to the database +#[debug] + +[exchange] +value = omit(["abstract","authors","classifications","business","pii","arxiv","inspire","localRef","pmcId","articleNumber","nnt","ppn","origins","technical","halId","title","originalGenre","pmId","fulltextUrl","enrichments","host"]) + +# Add contextual metadata related to the import +[assign] +path = lodexStamp.importedDate +value = fix(new Date()).thru(d => d.toDateString()) +path = lodexStamp.usedParser +value = env('parser') +path = lodexStamp.uploadedFilename +value = env('source') +path = uri +value = get('uri').trim() + From 698160eb40c07bdc043ab43900987b8284392b90 Mon Sep 17 00:00:00 2001 From: AnaelKremer <170732172+AnaelKremer@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:38:58 +0200 Subject: [PATCH 07/19] Update config.json By adding query-conditor-for-halcnrs loader --- config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/config.json b/config.json index 5746a954e..80b53dbbd 100644 --- a/config.json +++ b/config.json @@ -71,6 +71,7 @@ "json-lines", "query-istex", "query-conditor", + "query-conditor-for-halcnrs", "query-openalex", "rss", "atom", From 1ce1df152da0034519ca6c1bbc648e3b4130296d Mon Sep 17 00:00:00 2001 From: AnaelKremer <170732172+AnaelKremer@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:49:15 +0200 Subject: [PATCH 08/19] Update translations.tsv add transflations for the new loader "query-conditor-for-halcnrs" --- src/app/custom/translations.tsv | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/app/custom/translations.tsv b/src/app/custom/translations.tsv index 74c9b5f8e..0e92b70da 100644 --- a/src/app/custom/translations.tsv +++ b/src/app/custom/translations.tsv @@ -521,6 +521,8 @@ "bib-comment" "BibTeX uses a style-independent text-based file format for lists of bibliography items, such as articles, books, and theses" "BibTeX est format de fichier texte dédié aux références bibliographiques." "query-conditor" "TXT - query for Conditor" "TXT - requête d'interrogation pour Conditor" "query-conditor-comment" "Direct loading of query results for the Conditor database." "Chargement direct des résultats d'une requête d'interrogation pour la base Conditor." +"query-conditor-for-halcnrs" "TXT - query conditor for halcnrs" "TXT - requête Conditor pour traitements hal" +"query-conditor-for-halcnrs-comment" "Direct loading of query results for the Conditor database and needed processing for the HAL CNRS service." "Chargement direct des résultats d'une requête d'interrogation pour la base Conditor et transformations pour exploitation par le service hal cnrs." "query-istex" "TXT - query for ISTEX" "TXT - requête d'interrogation pour ISTEX" "query-istex-comment" "Direct loading of query results for the ISTEX archive." "Chargement direct des résultats d'une requête d'interrogation pour l'archive ISTEX." "query-openalex" "TXT - query for OpenAlex" "TXT - requête d'interrogation pour OpenAlex" From d2d726f1617e8d61caede7ad196263bbe4097668 Mon Sep 17 00:00:00 2001 From: AnaelKremer <170732172+AnaelKremer@users.noreply.github.com> Date: Fri, 26 Jul 2024 11:36:58 +0200 Subject: [PATCH 09/19] Update query-conditor-for-halcnrs.ini --- workers/loaders/query-conditor-for-halcnrs.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workers/loaders/query-conditor-for-halcnrs.ini b/workers/loaders/query-conditor-for-halcnrs.ini index 8f0d8d55b..273181960 100644 --- a/workers/loaders/query-conditor-for-halcnrs.ini +++ b/workers/loaders/query-conditor-for-halcnrs.ini @@ -1,5 +1,5 @@ append = pack -label = query-conditor +label = query-conditor-for-halcnrs extension = json mimeType = application/json From 7977d87b33a6b2cfd65f0bff14c20c7f5fb91582 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Fri, 26 Jul 2024 13:55:22 +0200 Subject: [PATCH 10/19] use tab not space --- src/app/custom/translations.tsv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/custom/translations.tsv b/src/app/custom/translations.tsv index 0e92b70da..7150e6a8f 100644 --- a/src/app/custom/translations.tsv +++ b/src/app/custom/translations.tsv @@ -521,8 +521,8 @@ "bib-comment" "BibTeX uses a style-independent text-based file format for lists of bibliography items, such as articles, books, and theses" "BibTeX est format de fichier texte dédié aux références bibliographiques." "query-conditor" "TXT - query for Conditor" "TXT - requête d'interrogation pour Conditor" "query-conditor-comment" "Direct loading of query results for the Conditor database." "Chargement direct des résultats d'une requête d'interrogation pour la base Conditor." -"query-conditor-for-halcnrs" "TXT - query conditor for halcnrs" "TXT - requête Conditor pour traitements hal" -"query-conditor-for-halcnrs-comment" "Direct loading of query results for the Conditor database and needed processing for the HAL CNRS service." "Chargement direct des résultats d'une requête d'interrogation pour la base Conditor et transformations pour exploitation par le service hal cnrs." +"query-conditor-for-halcnrs" "TXT - query conditor for halcnrs" "TXT - requête Conditor pour traitements hal" +"query-conditor-for-halcnrs-comment" "Direct loading of query results for the Conditor database and needed processing for the HAL CNRS service." "Chargement direct des résultats d'une requête d'interrogation pour la base Conditor et transformations pour exploitation par le service hal cnrs." "query-istex" "TXT - query for ISTEX" "TXT - requête d'interrogation pour ISTEX" "query-istex-comment" "Direct loading of query results for the ISTEX archive." "Chargement direct des résultats d'une requête d'interrogation pour l'archive ISTEX." "query-openalex" "TXT - query for OpenAlex" "TXT - requête d'interrogation pour OpenAlex" From 92b7c95205eb9011283f915909f49a66965bcea0 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Thu, 25 Jul 2024 14:53:17 +0200 Subject: [PATCH 11/19] add new parameters --- workers/loaders/query-openalex.ini | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/workers/loaders/query-openalex.ini b/workers/loaders/query-openalex.ini index 2a926b38a..202193ff5 100644 --- a/workers/loaders/query-openalex.ini +++ b/workers/loaders/query-openalex.ini @@ -36,6 +36,14 @@ value = self().trim() path = filter value = env('query') +; see https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/paging +path = per-page +value = 200 + +; https://docs.openalex.org/how-to-use-the-api/rate-limits-and-authentication#the-polite-pool +;path = mailto +;value = you@example.com + path = cursor value = * From 79ef1287340008c31b5dc624c65bb4f54ce3fc22 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Fri, 26 Jul 2024 16:18:04 +0200 Subject: [PATCH 12/19] fix new parameter --- workers/loaders/query-openalex.ini | 44 +++++++++++++++++++----------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/workers/loaders/query-openalex.ini b/workers/loaders/query-openalex.ini index 202193ff5..6bb070ba7 100644 --- a/workers/loaders/query-openalex.ini +++ b/workers/loaders/query-openalex.ini @@ -6,26 +6,35 @@ #### Enfin l'instruction [C] permet de retirer les notices récupérées par erreur. Il est nécessaire d'annuler cette instruction dans un premier temps, afin de pouvoir tester #### la validité des regex et de connaître les mauvaises affiliations. Les champs "inist_filtered_raw_affiliation_strings" [A] et "inist_filtered_and_tested_raw_affiliation_strings" [B] #### sont ensuite supprimés. Ils peuvent être conservés en les enlevant du tableau dans l'instruction [F]. +#### +#### OpenAlex favorise les utilisations de son API qui déclare une adresse mail. +#### Renseignez votre adresse mail en ligne [G] append = pack label = query-openalex extension = json mimeType = application/json -# load some plugins to activate some statements [use] plugin = conditor plugin = basics plugin = analytics -# Toggle ezs traces (see server stderr log) [debug] -ezs = true +ezs = false -# {{{ [TXTConcat] [env] +; [G] to get more about mailto see https://docs.openalex.org/how-to-use-the-api/rate-limits-and-authentication#the-polite-pool +path = mailto +value = you@example.com + +; before change see https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/paging +path = per-page +value = 200 + +; before change see https://docs.openalex.org/api-entities/works path = url value = https://api.openalex.org/works @@ -36,13 +45,11 @@ value = self().trim() path = filter value = env('query') -; see https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/paging path = per-page -value = 200 +value = env('per-page') -; https://docs.openalex.org/how-to-use-the-api/rate-limits-and-authentication#the-polite-pool -;path = mailto -;value = you@example.com +path = mailto +value = env('mailto') path = cursor value = * @@ -61,6 +68,9 @@ value = env('query') path = cursor value = get('meta.next_cursor') +path = per-page +value = env('per-page') + [loop/URLRequest] url = env('url') timeout = 60000 @@ -88,7 +98,8 @@ value = env('query').thru(string => string.match(/i\d+/)).toUpper() # {{{ On retire les notices non pertinentes en raison d'erreurs d'affiliations d'OpenAlex. # Exemple pour le laboratoire GANIL -#[A] On récupère dans un premier temps les adresses originales qu'OpenALex a identifié comme relevant du laboratoire requêté. +# [A] On récupère dans un premier temps les adresses originales qu'OpenALex a identifié comme relevant du laboratoire requêté. +# #[assign] #path = inist_filtered_raw_affiliation_strings #value = get("authorships").filter(obj => obj.institutions.some(obj => obj.id === `https://openalex.org/${self.lodexStamp.queryIdentifier}`)).flatMap(obj => obj.raw_affiliation_strings) @@ -98,13 +109,13 @@ value = env('query').thru(string => string.match(/i\d+/)).toUpper() path = inist_filtered_and_tested_raw_affiliation_strings value = get("inist_filtered_raw_affiliation_strings").some(item => /ganil/i.test(item) || /grand acc.*national.*ions.*lourds/i.test(item) || /Large heavy ion Nat.*acc.*/i.test(item)) -#[C] Enfin on supprime les notices non pertinentes. +# [C] Enfin on supprime les notices non pertinentes. #[remove] #test = get("inist_filtered_and_tested_raw_affiliation_strings").isEqual(false) # }}} [assign] -#[D] +# [D] path = uri value = get('id').replace('https://openalex.org/', '') @@ -123,7 +134,7 @@ value = get('keywords').map('display_name') path = author_name value = get('authorships').map("author.display_name") -#[E] On récupère uniquement les auteurs du laboratoire requêté. +# [E] On récupère uniquement les auteurs du laboratoire requêté. path = inist_filtered_author_name value = get("authorships").filter(obj => obj.institutions.some(obj => obj.id === `https://openalex.org/${self.lodexStamp.queryIdentifier}`)).flatMap(obj => obj.author.display_name) @@ -181,8 +192,8 @@ value = get("inist_iso2").map(d => new Intl.DisplayNames(['FR'], { type: 'region # On récupère un tableau d'objets, puis on itère sur chaque objet avec un template string pour en faire une chaîne de caractères. # Chaque chaîne est préfixée par "Goal", on récupère ensuite les derniers chiffres de la variable "id" qui correspond au numéro du goal. # On ajoute enfin la variable "display_name" qui est le nom du goal. -path=inist_sustainable_development_goals -value=get("sustainable_development_goals").map( item => `Goal ${item.id.match(/\/sdg\/(\d+)/)[1]} : ${item.display_name}`).thru(arr => _.isEmpty(arr) ? ["No sustainable development goal"] : arr) +path = inist_sustainable_development_goals +value = get("sustainable_development_goals").map( item => `Goal ${item.id.match(/\/sdg\/(\d+)/)[1]} : ${item.display_name}`).thru(arr => _.isEmpty(arr) ? ["No sustainable development goal"] : arr) path = inist_funder_display_name value = get("grants").map("funder_display_name").uniq() @@ -267,9 +278,10 @@ separator = fix('.') reverse = true safe = true -# Uncomment to see each data sent to the database +# Uncomment to see in server logs, each data sent to the database #[debug] [assign] path = uri value = get('uri').trim() + From 7b441c13ef10ab40b522dc7017d6eba24653e5cd Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Fri, 26 Jul 2024 16:32:10 +0200 Subject: [PATCH 13/19] 14.0.59 --- Makefile | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index ced610095..51f5771ce 100644 --- a/Makefile +++ b/Makefile @@ -54,8 +54,8 @@ build: ## Deploy ================================================================= publish: build ## publish version to docker hub - docker build -t cnrsinist/lodex:14.0.58 --build-arg http_proxy --build-arg https_proxy . - docker push cnrsinist/lodex:14.0.58 + docker build -t cnrsinist/lodex:14.0.59 --build-arg http_proxy --build-arg https_proxy . + docker push cnrsinist/lodex:14.0.59 ## Development ================================================================= diff --git a/package-lock.json b/package-lock.json index c3f869f01..b541322d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "lodex", - "version": "14.0.58", + "version": "14.0.59", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "lodex", - "version": "14.0.58", + "version": "14.0.59", "hasInstallScript": true, "license": "CECILL-2.1", "dependencies": { diff --git a/package.json b/package.json index 352ca88de..521a69597 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "node": ">= 16" }, "name": "lodex", - "version": "14.0.58", + "version": "14.0.59", "description": "", "main": "src/api/index.js", "browser": { From 28d53ea8f1418dd18955c87870145e1563586c03 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Fri, 2 Aug 2024 13:50:32 +0200 Subject: [PATCH 14/19] useless and blocking --- package-lock.json | 48 ---------- package.json | 1 - src/app/js/formats/formats.js | 8 -- .../trello-timeline/TrelloTimelineAdmin.js | 59 ------------ .../trello-timeline/TrelloTimelineView.js | 89 ------------------- .../js/formats/other/trello-timeline/index.js | 10 --- 6 files changed, 215 deletions(-) delete mode 100644 src/app/js/formats/other/trello-timeline/TrelloTimelineAdmin.js delete mode 100644 src/app/js/formats/other/trello-timeline/TrelloTimelineView.js delete mode 100644 src/app/js/formats/other/trello-timeline/index.js diff --git a/package-lock.json b/package-lock.json index b541322d9..6eab2da1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -75,7 +75,6 @@ "from": "0.1.7", "history": "^4.7.2", "inist-ark": "^2.1.3", - "inist-roadmap": "^1.2.0", "js-sentencecase": "^1.2.1", "jsonstream": "1.0.3", "jsonwebtoken": "9.0.2", @@ -17877,41 +17876,6 @@ "version": "2.1.3", "license": "MIT" }, - "node_modules/inist-roadmap": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "latinize": "^0.4.0", - "markdown-it": "^8.4.0", - "moment": "^2.18.1", - "trello-promise": "^1.0.7" - } - }, - "node_modules/inist-roadmap/node_modules/entities": { - "version": "1.1.2", - "license": "BSD-2-Clause" - }, - "node_modules/inist-roadmap/node_modules/linkify-it": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/inist-roadmap/node_modules/markdown-it": { - "version": "8.4.2", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, "node_modules/inline-style-prefixer": { "version": "3.0.8", "license": "MIT", @@ -23162,10 +23126,6 @@ "node": ">=0.10" } }, - "node_modules/latinize": { - "version": "0.4.1", - "license": "BSD" - }, "node_modules/launch-editor": { "version": "2.6.1", "dev": true, @@ -31106,14 +31066,6 @@ "tree-kill": "cli.js" } }, - "node_modules/trello-promise": { - "version": "1.0.7", - "license": "MIT", - "dependencies": { - "form-data": "^2.1.1", - "isomorphic-fetch": "^2.2.1" - } - }, "node_modules/triple-beam": { "version": "1.3.0", "license": "MIT" diff --git a/package.json b/package.json index 521a69597..1829685ab 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,6 @@ "from": "0.1.7", "history": "^4.7.2", "inist-ark": "^2.1.3", - "inist-roadmap": "^1.2.0", "js-sentencecase": "^1.2.1", "jsonstream": "1.0.3", "jsonwebtoken": "9.0.2", diff --git a/src/app/js/formats/formats.js b/src/app/js/formats/formats.js index 72cc47707..417962163 100644 --- a/src/app/js/formats/formats.js +++ b/src/app/js/formats/formats.js @@ -19,7 +19,6 @@ import istex from './other/istex'; import link from './url/link'; import linkImage from './url/link-image'; import list from './text/list'; -import trelloTimeline from './other/trello-timeline'; import markdown from './text/markdown/simple'; import markdownModal from './text/markdown/modal'; import uri from './url/uri'; @@ -181,13 +180,6 @@ export const FORMATS_CATALOG = [ component: list, type: 'text', }, - { - name: 'formatTrelloTimeline', - description: 'formatTrelloTimelineDescription', - componentName: 'trelloTimeline', - component: trelloTimeline, - type: 'other', - }, { name: 'formatMarkdown', description: 'formatMarkdownDescription', diff --git a/src/app/js/formats/other/trello-timeline/TrelloTimelineAdmin.js b/src/app/js/formats/other/trello-timeline/TrelloTimelineAdmin.js deleted file mode 100644 index 4efcc336a..000000000 --- a/src/app/js/formats/other/trello-timeline/TrelloTimelineAdmin.js +++ /dev/null @@ -1,59 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { TextField } from '@mui/material'; -import translate from 'redux-polyglot/translate'; -import { FormatDataParamsFieldSet } from '../../utils/components/field-set/FormatFieldSets'; -import FormatGroupedFieldSet from '../../utils/components/field-set/FormatGroupedFieldSet'; - -export const defaultArgs = { - trelloKey: '', - trelloToken: '', -}; - -class TrelloTimelineAdmin extends Component { - static propTypes = { - args: PropTypes.shape({ - trelloKey: PropTypes.string, - trelloToken: PropTypes.string, - }), - onChange: PropTypes.func.isRequired, - }; - - static defaultProps = { - args: defaultArgs, - }; - - handleToken = (trelloToken) => { - const newArgs = { ...this.props.args, trelloToken }; - this.props.onChange(newArgs); - }; - - handleKey = (trelloKey) => { - const newArgs = { ...this.props.args, trelloKey }; - this.props.onChange(newArgs); - }; - - render() { - const { trelloToken, trelloKey } = this.props.args; - return ( - - - this.handleKey(e.target.value)} - value={trelloKey} - sx={{ flexGrow: 1 }} - /> - this.handleToken(e.target.value)} - value={trelloToken} - sx={{ flexGrow: 1 }} - /> - - - ); - } -} - -export default translate(TrelloTimelineAdmin); diff --git a/src/app/js/formats/other/trello-timeline/TrelloTimelineView.js b/src/app/js/formats/other/trello-timeline/TrelloTimelineView.js deleted file mode 100644 index c95bfcd95..000000000 --- a/src/app/js/formats/other/trello-timeline/TrelloTimelineView.js +++ /dev/null @@ -1,89 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { Timeline, TimelineEvent } from 'react-event-timeline/dist'; -import { - DateRange, - Alarm, - Bookmark, - RecordVoiceOver, - TrendingUp, -} from '@mui/icons-material'; -import { milestones } from 'inist-roadmap'; -import { field as fieldPropTypes } from '../../../propTypes'; -import Link from '../../../lib/components/Link'; - -function getIconFromLabel(labels) { - const smallIcon = { - width: 18, - height: 18, - }; - - if (labels.indexOf('sprint-review') !== -1) { - return ; - } else if (labels.indexOf('communication') !== -1) { - return ; - } else if (labels.indexOf('objectif') !== -1) { - return ; - } else if (labels.indexOf('reunion') !== -1) { - return ; - } - return ; -} - -const SeeMoreStyle = { - float: 'right', -}; - -export default class Roadmap extends Component { - constructor(props) { - super(props); - this.state = { milestones: [] }; - } - - componentDidMount() { - const { resource, field, trelloToken, trelloKey } = this.props; - const trelloURL = resource[field.name]; - const options = { - token: trelloToken, - key: trelloKey, - }; - milestones(trelloURL, options) - .then((values) => { - this.setState({ milestones: values }); - }) - .catch((error) => { - console.error(error); - }); - } - - render() { - return ( - - {this.state.milestones.map((milestone, index) => ( - -
- See more -
- {milestone.title} -
- ))} -
- ); - } -} - -Roadmap.propTypes = { - field: fieldPropTypes.isRequired, - resource: PropTypes.object.isRequired, - trelloToken: PropTypes.string.isRequired, - trelloKey: PropTypes.string.isRequired, -}; - -Roadmap.defaultProps = { - className: null, -}; diff --git a/src/app/js/formats/other/trello-timeline/index.js b/src/app/js/formats/other/trello-timeline/index.js deleted file mode 100644 index 88ed74311..000000000 --- a/src/app/js/formats/other/trello-timeline/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import Component from './TrelloTimelineView'; -import AdminComponent, { defaultArgs } from './TrelloTimelineAdmin'; -import DefaultFormat from '../../utils/components/default-format'; - -export default { - ...DefaultFormat, - Component, - AdminComponent, - defaultArgs, -}; From 9d597de0ca8e90e5df794f709354c99707075c23 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Fri, 2 Aug 2024 13:53:33 +0200 Subject: [PATCH 15/19] remove translations --- src/app/custom/translations.tsv | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/app/custom/translations.tsv b/src/app/custom/translations.tsv index 7150e6a8f..1c4522cd0 100644 --- a/src/app/custom/translations.tsv +++ b/src/app/custom/translations.tsv @@ -415,8 +415,6 @@ "formatEmphasedNumberDescription" "This formatting changes the text to bold" "Ce formatage modifie le texte en gras" "formatResourcesGrid" "Other - Resources Grid" "Autre - Grille de ressources" "formatResourcesGridDescription" "The resource grid displays a list of resources on the home page with links to these resources. The characteristics displayed for each resource are: the Title and the Description, i.e. the field that has been marked DESCRIPTION in the Syndication box of the display format configuration." "La grille de ressource permet d’afficher une liste de ressources sur la page d’accueil avec des liens vers ces ressources. Les caractéristiques affichées de chaque ressource sont : le Titre et la Description, c’est à dire le champ qui a reçu le marquage DESCRIPTION dans la case Syndication de la configuration du format d’affichage." -"formatTrelloTimeline" "Other - Trello Timeline" "Autre - Trello Timeline" -"formatTrelloTimelineDescription" "The Trello Timeline format allows, from a Trello board, to display a timeline" "Le format Trello Timeline permet, à partir d’un tableau Trello, d’afficher une timeline" "direction" "direction" "direction" "horizontal" "horizontal" "horizontal" "vertical" "vertical" "vertical" From dcf7b5c65f8421eeb81537b16b4285c370aee402 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Fri, 2 Aug 2024 14:56:58 +0200 Subject: [PATCH 16/19] useless package --- package-lock.json | 11 ----------- package.json | 1 - 2 files changed, 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6eab2da1e..292c408ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -107,7 +107,6 @@ "react": "^16.14.0", "react-ace": "10.1.0", "react-dom": "^16.14.0", - "react-event-timeline": "^1.6.3", "react-grid-layout": "1.3.4", "react-helmet": "^5.2.1", "react-imask": "^7.1.3", @@ -27571,16 +27570,6 @@ "react": ">= 16.8" } }, - "node_modules/react-event-timeline": { - "version": "1.6.3", - "license": "MIT", - "dependencies": { - "prop-types": "^15.6.0" - }, - "peerDependencies": { - "react": ">= 0.14.0 < 17.0.0-0" - } - }, "node_modules/react-fast-compare": { "version": "2.0.4", "license": "MIT" diff --git a/package.json b/package.json index 1829685ab..16401d527 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,6 @@ "react": "^16.14.0", "react-ace": "10.1.0", "react-dom": "^16.14.0", - "react-event-timeline": "^1.6.3", "react-grid-layout": "1.3.4", "react-helmet": "^5.2.1", "react-imask": "^7.1.3", From 6acd1bb62f42c8d1d8729221567dbb67381e8941 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Fri, 2 Aug 2024 10:52:55 +0200 Subject: [PATCH 17/19] to stop the recurcive loop --- src/api/services/import.js | 10 ++++++---- workers/loaders/query-openalex.ini | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/api/services/import.js b/src/api/services/import.js index effc1865d..7ad516d01 100644 --- a/src/api/services/import.js +++ b/src/api/services/import.js @@ -70,16 +70,18 @@ export const startImport = async (ctx) => { const source = url ? url : filename; const parser = !loaderName || loaderName === 'automatic' ? extension : loaderName; - const loaderEnvironment = { - source, - parser, - }; + fusible = await createFusible(); await enableFusible(fusible); ctx.job.update({ ...ctx.job.data, fusible, }); + const loaderEnvironment = { + source, + parser, + fusible, + }; let parseStream; if (customLoader) { loaderEnvironment.parser = diff --git a/workers/loaders/query-openalex.ini b/workers/loaders/query-openalex.ini index 6bb070ba7..c30a72aec 100644 --- a/workers/loaders/query-openalex.ini +++ b/workers/loaders/query-openalex.ini @@ -60,6 +60,8 @@ url = env('url') [loop] test = has('meta.next_cursor') +; uses the one created by Lodex instead of the local ezs server fuse +fusible = env('fusible') [loop/replace] path = filter From 6a696af25f96c3deecd437a409fb3834457d4819 Mon Sep 17 00:00:00 2001 From: Nicolas Thouvenin Date: Fri, 2 Aug 2024 15:12:34 +0200 Subject: [PATCH 18/19] to stop recursive loop --- package-lock.json | 40 +++++++++++++++++++++++++++++++--------- package.json | 4 ++-- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 292c408ab..5a6955424 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,8 +30,8 @@ "@emotion/styled": "11.6.0", "@ezs/analytics": "2.3.2", "@ezs/basics": "2.7.1", - "@ezs/conditor": "2.12.1", - "@ezs/core": "3.10.2", + "@ezs/conditor": "2.12.2", + "@ezs/core": "3.10.3", "@ezs/istex": "1.5.9", "@ezs/lodex": "file:./packages/ezsLodex", "@ezs/sparql": "1.2.3", @@ -3313,16 +3313,16 @@ "license": "ISC" }, "node_modules/@ezs/conditor": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@ezs/conditor/-/conditor-2.12.1.tgz", - "integrity": "sha512-w8DfrvSOojyE1f4FPMykgdA0yaecu4QagPwLtHsW1VS0WNeuTn4fPiqtV4yBFYGcFl/W3OpkkFDT/sqC0bIrcQ==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@ezs/conditor/-/conditor-2.12.2.tgz", + "integrity": "sha512-F0dCIG4SpxwyEdfamcypDpSWN3e3/jQNaI/Q7SN+O7yutw1eIP4eEhl2dJh5xGWD2DOrnwvMUWTg8KK1NSeXWQ==", "dependencies": { "async-each-series": "^1.1.0", "async-retry": "1.3.3", "csv-string": "3.2.0", "debug": "4.3.3", "dotenv": "8.2.0", - "fast-xml-parser": "4.2.5", + "fast-xml-parser": "4.4.1", "fetch-with-proxy": "3.0.1", "isomorphic-fetch": "2.2.1", "lodash": "4.17.21", @@ -3358,6 +3358,27 @@ } } }, + "node_modules/@ezs/conditor/node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/@ezs/conditor/node_modules/fetch-with-proxy": { "version": "3.0.1", "license": "MIT", @@ -3420,9 +3441,9 @@ } }, "node_modules/@ezs/core": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/@ezs/core/-/core-3.10.2.tgz", - "integrity": "sha512-wqdbTtYz+SQEz4IYMOL/+NusKPY/IGp3d97Otiy+Ts8LAsAXcRc+OmXSpCq+lI4f8j8y1DR/1FckZDSxzhBnkQ==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/@ezs/core/-/core-3.10.3.tgz", + "integrity": "sha512-0YpXZZfV0WEr26+mFmBpXScfvr5/DKpf2/1rJP9Vzleing2OJYkAyxep8wzgh+NEp+fZbkdXsXHaCKVyG3Q2AA==", "dependencies": { "app-module-path": "2.2.0", "autocast": "0.0.4", @@ -15329,6 +15350,7 @@ } ], "license": "MIT", + "optional": true, "dependencies": { "strnum": "^1.0.5" }, diff --git a/package.json b/package.json index 16401d527..8e783b3f8 100644 --- a/package.json +++ b/package.json @@ -76,8 +76,8 @@ "@emotion/styled": "11.6.0", "@ezs/analytics": "2.3.2", "@ezs/basics": "2.7.1", - "@ezs/conditor": "2.12.1", - "@ezs/core": "3.10.2", + "@ezs/conditor": "2.12.2", + "@ezs/core": "3.10.3", "@ezs/istex": "1.5.9", "@ezs/lodex": "file:./packages/ezsLodex", "@ezs/sparql": "1.2.3", From f4126e893da69d579a493100707385256f7e10b3 Mon Sep 17 00:00:00 2001 From: HeleneCreusot Date: Tue, 6 Aug 2024 16:20:18 +0200 Subject: [PATCH 19/19] feat(composition de blocs): composed property : remove border-left composed property : remove border padding and margin left - no indented --- src/app/js/public/Property/CompositeProperty.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/app/js/public/Property/CompositeProperty.js b/src/app/js/public/Property/CompositeProperty.js index 97f02053b..ae8a78758 100644 --- a/src/app/js/public/Property/CompositeProperty.js +++ b/src/app/js/public/Property/CompositeProperty.js @@ -9,9 +9,6 @@ import getFieldClassName from '../../lib/getFieldClassName'; const styles = { container: { - paddingLeft: '2rem', - marginLeft: '2rem', - borderLeft: '1px dotted rgb(224, 224, 224)', display: 'flex', flexFlow: 'row wrap', },