Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit 91127314 authored by Philippe Coicadan's avatar Philippe Coicadan
Browse files

update about, help, language parameters, translations, README. add example files

parent 561f2d15
Branches main
Tags v0.1.1
No related merge requests found
Showing
with 2296 additions and 28 deletions
......@@ -10,7 +10,7 @@ Voir la documentation [ici](./docs/Installation_fr.md)
# Documentation
La documentation d'utilisation de **AROLIOS WebUI** se trouve [ici](./docs/UserGuide_fr.md)
Une vidéo présentant comment utiliser **AROLIOS WebUI** se trouve [ici](https://www.youtube.com/watch?v=59lapSUfY-4)
La documentation sur les logiciels **AROLIOS** coté serveur et sur l'API se trouve [ici](https://lab.frogg.it/philcoicadan/arolios-doc)
......
# RESTE A FAIRE
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<a:model_translation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://arolios.org/arolios/model ../schemas/xtlt.xsd"
xmlns:a="http://arolios.org/arolios/model"
language="fr">
<domain name="library" translation="Bibliothèque">
<enumeration name="kind_of_book" translation="Genre de livre">
<value name="novel" translation="Roman"/>
<value name="poetry" translation="Poésie"/>
<value name="play" translation="Théatre"/>
<value name="autobiography" translation="Autobiographie"/>
</enumeration>
<class name="book" translation="Livre">
<property name="title" translation="Titre"/>
<property name="kind" translation="Genre" />
</class>
<class name="person" translation="Personne" >
<property name="first_name" translation="Prénom"/>
<property name="surname" translation="Nom de famille"/>
</class>
<class name="writer" translation="Ecrivain.e">
<property name="name" translation="Nom" />
</class>
<association name="author" translation="Auteur.e">
<memberEnd name="books" translation="Livres"/>
<memberEnd name="writers" translation="Ecrivain.e.s" />
</association>
<class name="personal_info" translation="Infos personnelles">
<property name="introduction" translation="Présentation" />
<property name="birth_date" translation="Date de naissance"/>
<property name="death_date" translation="Date du décès" />
</class>
<association name="writer_info" translation="Info_Ecrivain.e">
<memberEnd name="info" translation="Info"/>
<memberEnd name="writer" translation="Ecrivain.e"/>
</association>
<class name="registered_person" translation="Inscrit.e">
<property name="id_number" translation="Numéro" />
</class>
<association name="borrowing" translation="Emprunt">
<memberEnd name="books" translation="Livres" />
<memberEnd name="borrowers" translation="Emprunteur.rice.s" />
<property name="borrowing_date" translation="Emprunté le" />
<property name="return_date" translation="Restitué le"/>
</association>
<class name="room" translation="Salle">
<property name="name" translation="Nom" />
</class>
<class name="shelving" translation="Rayonnage">
<property name="number" translation="Numéro" />
</class>
<association name="room_shelving" translation="Salle_Rayonnages">
<memberEnd name="shelvings" translation="Rayonnages" />
<memberEnd name="room" translation="Salle" />
</association>
<type name="position" translation="Position">
<property name="shelf" translation="Etagère" />
<property name="place" translation="Emplacement" />
</type>
<association name="book_position" translation="Position_Livre">
<memberEnd name="books" translation="Livres" />
<memberEnd name="shelving" translation="Rayonnage" />
<property name="position" translation="Position" />
</association>
</domain>
</a:model_translation>
<?xml version="1.0" encoding="UTF-8"?>
<a:appConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://arolios.org/arolios/model ../schemas/appconfig.xsd"
xmlns:a="http://arolios.org/arolios/model">
<domain name="library">
<association name="book_position">
<property>position</property>
</association>
<class name="book">
<property>kind</property>
</class>
</domain>
</a:appConfig>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<a:model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://arolios.org/arolios/model ../schemas/xam.xsd"
xmlns:a="http://arolios.org/arolios/model">
<domain name="library">
<enumeration name="kind_of_book">
<value name="novel" />
<value name="poetry" />
<value name="play" />
<value name="autobiography" />
</enumeration>
<class name="book">
<property name="title" type="charstring" required="true" />
<property name="kind" type="kind_of_book" />
<identifier>
<property>title</property>
</identifier>
</class>
<class name="person" isAbstract="true" >
<property name="first_name" type="charstring"/>
<property name="surname" type="charstring"/>
</class>
<class name="writer" >
<base>person</base>
<property name="name" type="charstring" required="true" />
<identifier>
<property>name</property>
</identifier>
</class>
<association name="author" >
<memberEnd name="books" class="book" />
<memberEnd name="writers" class="writer" />
</association>
<class name="personal_info" >
<property name="introduction" type="mlangtext" />
<property name="birth_date" type="date" required="true" />
<property name="death_date" type="date" />
</class>
<association name="writer_info" >
<memberEnd name="info" class="personal_info" maxOccurs="one"/>
<memberEnd name="writer" class="writer" minOccurs="one" maxOccurs="one" />
</association>
<class name="registered_person">
<base>person</base>
<property name="id_number" type="charstring" required="true" />
<identifier>
<property>id_number</property>
</identifier>
</class>
<association name="borrowing">
<memberEnd name="books" class="book" />
<memberEnd name="borrowers" class="registered_person" />
<property name="borrowing_date" type="date" required="true" />
<property name="return_date" type="date"/>
<identifier>
<property>borrowing_date</property>
</identifier>
</association>
<class name="room">
<property name="name" type="charstring" required="true" />
<identifier>
<property>name</property>
</identifier>
</class>
<class name="shelving" >
<property name="number" type="smallint" required="true" />
</class>
<association name="room_shelving">
<memberEnd name="shelvings" class="shelving" isComposition="true" />
<memberEnd name="room" class="room" minOccurs="one" maxOccurs="one" />
</association>
<type name="position" >
<property name="shelf" type="smallint" />
<property name="place" type="smallint" />
</type>
<association name="book_position" >
<memberEnd name="books" class="book" />
<memberEnd name="shelving" class= "shelving" maxOccurs="one" />
<property name="position" type="position" required="true" />
</association>
</domain>
<domain name="library" action="update">
<class name="personal_info" action="update">
<identifier>
<memberEnd>writer</memberEnd>
</identifier>
</class>
<class name="shelving" action="update" >
<identifier>
<property>number</property>
<memberEnd>room</memberEnd>
</identifier>
</class>
</domain>
</a:model>
{
"room_name" : "A",
"kind_of_book" : "poetry"
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<a:query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://arolios.org/arolios/tqry ../schemas/query.xsd"
xmlns:a="http://arolios.org/arolios/tqry"
name="query1">
<parameter>room_name</parameter>
<parameter>kind_of_book</parameter>
<class domain="library" name="book">
<property>title</property>
<filter>kind = $kind_of_book </filter>
<memberEnd name="shelving">
<class>
<property>number</property>
<memberEnd name="room">
<class>
<property>name</property>
<filter>name = $room_name </filter>
</class>
</memberEnd>
</class>
</memberEnd>
<memberEnd name="writers">
<class>
<property>name</property>
</class>
</memberEnd>
</class>
</a:query>
......@@ -126,8 +126,8 @@ import LoadTranslations from './pages/loadtranslations';
const auth = sessionStorage.getItem('arolios_auth');
if (auth) {
const { token } = JSON.parse(sessionStorage.getItem('arolios_auth'));
const lang = localStorage.getItem('arolios_model_language') ||
sessionStorage.getItem('arolios_model_default_language');
const lang = localStorage.getItem('arolios_requested_language') ||
sessionStorage.getItem('arolios_default_language');
return fetchDomains (token, lang).then ( ( domains) => {
......
......@@ -39,13 +39,13 @@ const About = () => {
return (
<div>
<p>AROLIOS WebUI &nbsp;{translate('arolios.webui_purpose')}.</p>
<p>AROLIOS WebUI &nbsp;{translate('arolios.framework')}&nbsp; <a href='https://marmelab.com/react-admin'>React-admin</a></p>
<p>AROLIOS &nbsp;{translate('arolios.trademark_registered')}.</p>
<p>AROLIOS WebUI &nbsp; &copy; 2024 Philippe Coicadan. {translate('arolios.all_rights_reserved')}.</p>
<p>AROLIOS WebUI &nbsp;{translate('arolios.license_intro')}</p>
<LicenseText/>
<p>{translate('arolios.source_link')}&nbsp; https://lab.frogg.it/philcoicadan/arolios-webui</p>
<p>{translate('arolios.source_link')}&nbsp; <a href='https://lab.frogg.it/philcoicadan/arolios-webui'>AROLIOS WebUI</a></p>
</div>
)
......
......@@ -3,15 +3,15 @@ import {useLocaleState} from "react-admin";
const HelpEn = () => {
return (
<div>
<h1>Help in construction</h1>
</div>
<h1>How to use AROLIOS in a web browser:&nbsp; <a href="https://www.youtube.com/watch?v=59lapSUfY-4" target="_blank">video</a></h1>
</div>
)
}
const HelpFr = () => {
return (
<div>
<h1>Aide en construction</h1>
<h1>Comment utiliser AROLIOS dans un navigateur web:&nbsp; <a href="https://www.youtube.com/watch?v=59lapSUfY-4" target="_blank">vidéo</a></h1>
</div>
)
}
......
......@@ -190,7 +190,7 @@ export const AppList = (() => {
export const AppCreate = (() => {
return (
<Create >
<Create redirect="list" >
<SimpleForm>
......@@ -245,7 +245,7 @@ export const AppUserCreate = () => {
const filterToQuery = searchText => ({ _s: `%${searchText}%` });
return (
<Create mutationOptions={{ meta: {} }}>
<Create redirect="list" mutationOptions={{ meta: {} }}>
<SimpleForm>
......@@ -271,7 +271,7 @@ export const AppUserCreate = () => {
const translate=useTranslate();
return (
<Create >
<Create redirect="list">
<SimpleForm>
......
......@@ -568,7 +568,7 @@ export const ClassInstanceCreate = () => {
return (
<Create title={translate('arolios.instance_of', { type: csf_name })} redirect='show' mutationOptions={{ meta: { prefix: 'classes', suffix: 'instances' } }}>
<Create title={translate('arolios.instance_of', { type: csf_name })} redirect='list' mutationOptions={{ meta: { prefix: 'classes', suffix: 'instances' } }}>
{loading ? (
<Loading />
) : (
......@@ -601,7 +601,7 @@ export const AssocInstanceCreate = () => {
return (
<Create title={translate('arolios.instance_of', { type: csf_name })} redirect='show' mutationOptions={{ meta: { prefix: 'associations', suffix: 'instances' } }}>
<Create title={translate('arolios.instance_of', { type: csf_name })} redirect='list' mutationOptions={{ meta: { prefix: 'associations', suffix: 'instances' } }}>
{loading ? (
<Loading />
) : (
......
......@@ -82,8 +82,8 @@ export const SettingsEdit = () => {
<SimpleForm toolbar={<EditToolbar />}>
<ReferenceInput source="model_language" reference="languages" sort={{ field: 'code', order: 'ASC' }} queryOptions={{ meta: { getmany_context: 'languages' } }}>
<SelectInput label="arolios.model_language" optionText="name" optionValue="code" validate={required()} />
<ReferenceInput source="requested_language" reference="languages" sort={{ field: 'code', order: 'ASC' }} queryOptions={{ meta: { getmany_context: 'languages' } }}>
<SelectInput label="arolios.requested_language" optionText="name" optionValue="code" validate={required()} />
</ReferenceInput>
</SimpleForm>
......
......@@ -20,7 +20,7 @@ const authProvider = {
const permissions = { role: json.user.role, appName: json.app.name, isDefaultApp: json.app.isDefault}
sessionStorage.setItem('arolios_auth', JSON.stringify(auth));
sessionStorage.setItem('arolios_permissions', JSON.stringify(permissions));
sessionStorage.setItem('arolios_model_default_language', json.app.defaultLanguage) ;
sessionStorage.setItem('arolios_default_language', json.app.defaultLanguage) ;
})
.catch(() => {
throw new Error('Network error')
......@@ -29,7 +29,7 @@ const authProvider = {
logout: () => {
sessionStorage.removeItem('arolios_auth');
sessionStorage.removeItem('arolios_permissions');
sessionStorage.removeItem('arolios_model_default_language');
sessionStorage.removeItem('arolios_default_language');
// try to clear the server side
const request = new Request(backEndURL() + '/logout', {
method: 'POST',
......@@ -57,7 +57,7 @@ const authProvider = {
if (status === 401 || status === 403) {
sessionStorage.removeItem('arolios_auth');
sessionStorage.removeItem('arolios_permissions');
sessionStorage.removeItem('arolios_model_default_language');
sessionStorage.removeItem('arolios_default_language');
return Promise.reject( new Error ('Authentication error'));
}
// other error code (404, 500, etc): no need to log out
......
......@@ -29,7 +29,7 @@ const CustomDataProvider = {
const { field, order } = params.sort || {};
const filter = params.filter || {};
const {prefix, suffix ,context, properties, i18n } = params.meta || {};
const lang = localStorage.getItem ("arolios_model_language") || sessionStorage.getItem ("arolios_model_default_language");
const lang = localStorage.getItem ("arolios_requested_language") || sessionStorage.getItem ("arolios_default_language");
let query ='';
let querySep = '?';
if (i18n !== false) {
......@@ -128,13 +128,13 @@ const CustomDataProvider = {
getOne: (resource, params) => {
const lang = localStorage.getItem ("arolios_model_language") || sessionStorage.getItem ("arolios_model_default_language");
const lang = localStorage.getItem ("arolios_requested_language") || sessionStorage.getItem ("arolios_default_language");
let query = `?lang=${lang}`;
const querySep = '&';
const {prefix, suffix ,context } = params.meta || {};
if (prefix === 'settings') {
const modelLang = localStorage.getItem("arolios_model_language") || sessionStorage.getItem ("arolios_model_default_language");
return Promise.resolve({data: { id: params.id, model_language: modelLang}});
const modelLang = localStorage.getItem("arolios_requested_language") || sessionStorage.getItem ("arolios_default_language");
return Promise.resolve({data: { id: params.id, requested_language: modelLang}});
}
let url = `${apiUrl}/`;
......@@ -229,7 +229,7 @@ const CustomDataProvider = {
const ids = params.ids;
const instid =ids[0] ;
// variant of getOne
const lang = localStorage.getItem ("arolios_model_language") || sessionStorage.getItem ("arolios_model_default_language");
const lang = localStorage.getItem ("arolios_requested_language") || sessionStorage.getItem ("arolios_default_language");
let query = `?lang=${lang}`;
const querySep = '&';
const {prefix, suffix ,context } = params.meta || {};
......@@ -320,9 +320,9 @@ const CustomDataProvider = {
const {prefix, suffix ,context } = params.meta || {};
if (prefix === 'settings') {
localStorage.setItem("arolios_model_language", params.data.model_language);
localStorage.setItem("arolios_requested_language", params.data.requested_language);
const url = `${apiUrl}/domains?lang=${params.data.model_language}`
const url = `${apiUrl}/domains?lang=${params.data.requested_language}`
httpClient(url).then(({ headers, json }) => {
if (json["total"] === 1) {
sessionStorage.setItem('arolios_model_default_domain', JSON.stringify({ name: json["elements"][0]['name'], _tname: json["elements"][0]['_tname'] }));
......
......@@ -79,7 +79,7 @@ export const en = {
empty_trash_title: "Delete definitively the items contained in the trash",
empty_trash_confirm_msg: "You will not be able to recover the items contained in the trash. Are you sure ?",
code: "Code",
model_language: "Model language",
requested_language: "Requested language",
version: "Version",
about: "About",
all_rights_reserved: "All rights reserved",
......@@ -87,6 +87,7 @@ export const en = {
webui_purpose: "is an user interface software running in a web navigator and using the AROLIOS API by the communication protocol HTTP",
license_intro: "is a free software licensed under the terms of the MIT license, see below:",
source_link: "Source link:",
framework: "uses the React framework:",
data_export: "Data export",
export_query: "Export query",
export_params: "Export query parameters",
......
......@@ -80,7 +80,7 @@ export const fr = {
empty_trash_title: "Supprimer définitivement les éléments contenus dans la corbeille",
empty_trash_confirm_msg: "Vous ne pourrez pas récupérer les éléments contenus dans la corbeille. Etes-vous sûr ?",
code: "Code",
model_language: "Langue du modèle",
requested_language: "Langue demandée",
version: "Version",
about: "A propos",
all_rights_reserved: "Tous droits réservés",
......@@ -88,6 +88,7 @@ export const fr = {
webui_purpose: "est un logiciel d'interface utilisateur s'exécutant dans un navigateur Web et utilisant l'API AROLIOS par le protocole de communication HTTP",
license_intro: "est un logiciel libre concédé sous licence selon les termes de la licence MIT, voir ci-dessous:",
source_link: "Lien vers le source:",
framework: "utilise la structure logicielle React:",
data_export: "Exportation de données",
export_query: "Requête d'export",
export_params: "Paramètres de la requête d'export",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment