Commit bcecc476 authored by Sebastian Castro's avatar Sebastian Castro
Browse files

import: ability to test element export (for OSM)

parent 671d10f2
......@@ -60,4 +60,8 @@ gogo_element_generate:
controller: App\Controller\ImportController::generateRandomAction
defaults:
nombre: '1'
generateVotes: '0'
\ No newline at end of file
generateVotes: '0'
gogo_element_test_export:
path: /elements/{id}/test-export
controller: App\Controller\ImportController::testElementExportAction
\ No newline at end of file
......@@ -16,6 +16,7 @@ use App\Helper\GoGoHelper;
class ImportAdmin extends GoGoAbstractAdmin
{
public $config;
public $elementId;
public function getTemplate($name)
{
......@@ -149,10 +150,17 @@ class ImportAdmin extends GoGoAbstractAdmin
if ($this->getSubject()->isDynamicImport() && $this->getSubject()->getIsSynchronized()) {
// TAB - Custom Code For Export
$elementIdToTest = $dm->query('Element')->field('source')->references($this->getSubject())->getOne();
$this->elementId = $elementIdToTest ? $elementIdToTest->getId() : null;
$formMapper->tab('customCodeForExportTab')
->panel('customCodeForExportPanel')
->add('customCodeForExport', null, [
'attr' => ['class' => 'gogo-code-editor', 'format' => 'php', 'height' => '500']])
->add('test', TextType::class, [
'mapped' => false,
'label' => false,
'attr' => ['class' => 'gogo-import-test-osm-export']
])
->end()
->end();
}
......@@ -164,6 +172,7 @@ class ImportAdmin extends GoGoAbstractAdmin
$collection->add('refresh', $this->getRouterIdParameter().'/refresh');
$collection->add('collect', $this->getRouterIdParameter().'/collect');
$collection->add('showData', $this->getRouterIdParameter().'/show-data');
$collection->add('testElementExport', $this->getRouterIdParameter().'/show-data');
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
......
......@@ -6,6 +6,7 @@ use App\Services\RandomCreationService;
use Doctrine\ODM\MongoDB\DocumentManager;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as Controller;
use Symfony\Component\HttpFoundation\Response;
use App\Services\ElementSynchronizationService;
class ImportController extends Controller
{
......@@ -25,6 +26,21 @@ class ImportController extends Controller
return new Response(join('<br>', $optionsNames));
}
public function testElementExportAction($id, DocumentManager $dm, ElementSynchronizationService $syncService)
{
$element = $dm->get('Element')->find($id);
$object = $element->getSource();
$result = $syncService->elementToOsm($element);
$dataDisplay = print_r($result, true);
$url = $this->generateUrl('admin_app_importdynamic_edit', ['id' => $object->getId()]);
return $this->render('admin/pages/import/show-data.html.twig', [
'dataDisplay' => $dataDisplay,
'redirectUrl' => $url,
'import' => $object,
]);
}
public function currStateAction($id, DocumentManager $dm)
{
$import = $dm->get('Import')->find($id);
......
......@@ -260,7 +260,9 @@ class ElementSynchronizationService
// execute custom code
try {
eval(str_replace('<?php', '', $element->getSource()->getCustomCodeForExport()));
} catch (\Exception $e) {}
} catch (\Exception $e) {
$gogoFeature['error'] = $e;
}
return $gogoFeature;
}
......
{% trans_default_domain 'admin' %}
{% set elementId = form.vars.sonata_admin.admin.elementId %}
{% if elementId %}
<a href="{{ url('gogo_element_test_export', {id: elementId}) }}" class="btn btn-primary">{{ 'imports.edit.test_export.see_osm_export'|trans }}</a>
{% else %}
{{ 'imports.edit.test_export.no_element'|trans }}
{% endif %}
\ No newline at end of file
......@@ -307,6 +307,9 @@ imports:
clear-elements: "Effacer tous les éléments"
delete: "Supprimer l'import (ainsi que tous les éléments importés)"
saving: "Sauvegarde et lecture des données en cours..."
test_export:
see_osm_export: Tester à quoi ressemblera l'export OSM d'un élément
no_element: Aucun élément trouvé. Veuillez d'abords importer des données avant de pouvoir faire un test
last: # templates/admin/partials/import/list_last_refresh.html.twig
import: "Import - "
progress: # templates/admin/pages/import/import-progress.html.twig
......@@ -348,28 +351,28 @@ imports:
customCodeForExportTab: "Convertir les données pour l'export"
customCodeForExportPanel: "Entrez du code qui sera exécuté lors de l'export, avant leur envoi pour synchronisation"
customCodeForExportPanel_description: >-
La variable <b>$element</b> représente l'élément dans GoGoCarto, la variable <b>$osmFeature</b> représente la donnée OSM reconstruite à partir de l''élement GoGoCarto</br>
La variable <b>$element</b> représente l'élément dans GoGoCarto, la variable <b>$gogoFeature</b> représente la donnée OSM reconstruite à partir de l''élement GoGoCarto</br>
<pre>Quelques examples de transformations simple:</pre>
Si l''élement contient la catégorie "Vrac", on rajoute un tag OSM
<pre>&lt;?php
<pre>
if (in_array(''Vrac'', $element->getCategoriesNames())) '{
$osmFeature[''tags''][''bulk_purchase''] = ''yes'';
$gogoFeature[''tags''][''bulk_purchase''] = ''yes'';
'}</pre>
Si l''élement contient la catégorie numéro 12, on rajoute un tag OSM<br/>
Cette méthode est à préférer car si on change le nom de la catégorie le code fonctionnera toujours<br/>
L''ID d''une catégorie est noté entre parenthèse après son nom dans Personnalisation / Catégories
<pre>&lt;?php
<pre>
if (in_array(12, $element->getCategoriesIds())) '{
$osmFeature[''tags''][''bulk_purchase''] = ''yes'';
$gogoFeature[''tags''][''bulk_purchase''] = ''yes'';
'}</pre>
Si l''élement a une valeur spécifique pour un champ définit dans le formulaire
<pre>&lt;?php
<pre>
if ($element->getProperty(''vrac'') == ''oui'') '{
$osmFeature[''tags''][''bulk_purchase''] = ''yes'';
$gogoFeature[''tags''][''bulk_purchase''] = ''yes'';
'}</pre>
On ajoute un tag pour tous les éléments
<pre>&lt;?php
$osmFeature[''tags''][''bulk_purchase''] = ''yes'';
<pre>
$gogoFeature[''tags''][''bulk_purchase''] = ''yes'';
</pre>
historic: "Historique"
dynamicList: "Liste des imports dynamiques (les données importées seront en lecture seule car elles sont gérées par un autre site)"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment