Envoi des données vers une autre URL
Edit me
Développement spécifique d’un composant EpiMob qui surchargerait la synchronisation standard en branchant celle-ci vers l’installation locale et en couvrant les traitements gérés normalement par le Hub (il n’y aurait donc plus besoin de Hub).
Environnement de dev de composant spécifique:
https://github.com/Epiconcept-Paris/epimob-addons
Bulk sur Epicraft
Key: epimob.widget
Value:
{
component : ' SendDataToLocalServer ' ,
option : {
sDatasetName : ' visite '
}
}
Exemple de composant
Attention:
Ce composant utilise la propriété dangerouslyDispatchAction .
Cette propriété permet aux développeurs de déclencher directement des fonctionnalités du noyau sans passer par un objet-interface et NE DOIT être utilisée qu'avec beaucoup de recul et de connaissance des risques.
// Library
import React from ' react ' ;
import { View , Text } from ' react-native ' ;
import { Button } from ' epimob-components '
const getManifestOptions = ( oProject ) => {
if ( typeof oProject !== ' object ' || oProject === null ) {
return {};
}
const { oManifest } = oProject ;
if ( typeof oManifest === ' object ' && typeof oManifest . options === ' object ' ) {
return oManifest . options ;
}
return {};
}
export default class SendDataToLocalServer extends React . PureComponent {
constructor () {
super ();
this . handleSend = this . handleSend . bind ( this );
}
handleSend () {
const { project : oProject , option : oWidgetOptions , datasets : aDatasets } = this . props ;
const oManifestOptions = getManifestOptions ( oProject );
const { sDatasetName } = oWidgetOptions ;
const oDataset = aDatasets . find ( oDataset => oDataset . getName () === sDatasetName );
if ( oDataset === undefined ) {
return undefined ;
}
const aRowsIds = oDataset . getRowDatasNotSaved (). map ( oRow => oRow . _id );
dangerouslyDispatchAction (
' projects.message.sendXHR ' ,
// message à envoyer
JSON . stringify ( oDataset . toJson ( aRowsIds , false )),
// id du message (autogénéré si undefined)
undefined ,
// propriétés du message
{
// nom du dataset
sDatasetName ,
// liste des rows envoyés
aRowsIds ,
// URL pour l'envoi
sDestination : oManifestOptions . localServerURL
}
);
}
render () {
const { project : oProject , option : oWidgetOptions } = this . props ;
const oManifestOptions = getManifestOptions ( oProject );
return (
< View >
< Text > URL du serveur: { oManifestOptions . localServerURL } </ Text >
< Text > Dataset name: { oWidgetOptions . sDatasetName }
< Button onPress = { this . handleSend } > Send</ Button >
</ View >
);
}
}
SendDataToLocalServer.displayName = 'SendDataToLocalServer';
SendDataToLocalServer.defaultProps = {
option : {
sDatasetName : ' patient '
}
}