api: change geojson display fields format (#22031)
This commit is contained in:
parent
486225c4b2
commit
5f3bdfe1b3
|
@ -1593,8 +1593,9 @@ def test_api_geojson_formdata(pub, local_user):
|
|||
formdef.name = 'test'
|
||||
formdef.workflow_roles = {'_receiver': role.id}
|
||||
formdef.fields = [
|
||||
fields.StringField(id='0', label='foobar', varname='foobar'),
|
||||
]
|
||||
fields.StringField(id='0', label='foobar', varname='foobar', type='string'),
|
||||
fields.FileField(id='1', label='foobar1', varname='file', type='file')
|
||||
]
|
||||
formdef.store()
|
||||
|
||||
data_class = formdef.data_class()
|
||||
|
@ -1608,11 +1609,20 @@ def test_api_geojson_formdata(pub, local_user):
|
|||
# even if there's an anonymse parameter
|
||||
resp = get_app(pub).get(sign_uri('/api/forms/test/geojson?anonymise', user=local_user), status=403)
|
||||
|
||||
upload = PicklableUpload('test.txt', 'text/plain', 'ascii')
|
||||
upload.receive(['base64me'])
|
||||
|
||||
foobar = '<font color="red">FOO BAR</font>'
|
||||
username = '<font color="red">Jean Darmette</font>'
|
||||
|
||||
data = {'0': foobar, '1': upload}
|
||||
local_user.name = username
|
||||
local_user.store()
|
||||
for i in range(30):
|
||||
formdata = data_class()
|
||||
date = time.strptime('2014-01-20', '%Y-%m-%d')
|
||||
formdata.data = {'0': 'FOO BAR'}
|
||||
formdata.geolocations = {'base': {'lat': 48, 'lon': 2}}
|
||||
formdata.data = data
|
||||
formdata.user_id = local_user.id
|
||||
formdata.just_created()
|
||||
if i%3 == 0:
|
||||
|
@ -1629,6 +1639,20 @@ def test_api_geojson_formdata(pub, local_user):
|
|||
resp = get_app(pub).get(sign_uri('/api/forms/test/geojson', user=local_user))
|
||||
assert 'features' in resp.json
|
||||
assert len(resp.json['features']) == 10
|
||||
display_fields = resp.json['features'][0]['properties']['display_fields']
|
||||
for field in display_fields:
|
||||
if field['label'] == 'Number':
|
||||
assert field['html_value'] == '1-28'
|
||||
assert field['value'] == '1-28'
|
||||
if field['label'] == 'User Label':
|
||||
assert field['value'] == username
|
||||
assert field['html_value'] == "<font color="red">Jean Darmette</font>"
|
||||
if field['label'] == 'foobar':
|
||||
assert field['value'] == foobar
|
||||
assert field['html_value'] == "<font color="red">FOO BAR</font>"
|
||||
if field['label'] == 'foobar1':
|
||||
assert field['value'] == "test.txt"
|
||||
assert field['html_value'] == '<div class="file-field"><a download="test.txt" href="http://example.net/backoffice/management/test/28/?f=1"><span>test.txt</span></a></div>'
|
||||
|
||||
# check with a filter
|
||||
resp = get_app(pub).get(sign_uri('/api/forms/test/geojson?filter=done', user=local_user))
|
||||
|
|
|
@ -83,11 +83,17 @@ def geojson_formdatas(formdatas, geoloc_key='base', fields=None):
|
|||
for field in fields:
|
||||
if field.type == 'map':
|
||||
continue
|
||||
value = formdata.get_field_view_value(field, max_length=60)
|
||||
value = value.replace('[download]', formdata_backoffice_url)
|
||||
if not value:
|
||||
html_value = formdata.get_field_view_value(field, max_length=60)
|
||||
html_value = html_value.replace('[download]', formdata_backoffice_url)
|
||||
value = formdata.get_field_view_value(field)
|
||||
if not html_value and not value:
|
||||
continue
|
||||
display_fields.append((str(htmlescape(field.label)), str(htmlescape(value))))
|
||||
|
||||
display_fields.append({
|
||||
'label': field.label,
|
||||
'value': str(value),
|
||||
'html_value': str(htmlescape(html_value))
|
||||
})
|
||||
|
||||
feature = {
|
||||
'type': 'Feature',
|
||||
|
|
|
@ -115,8 +115,14 @@ $(window).on('load', function() {
|
|||
if (feature.properties.display_fields.length > 0) {
|
||||
var popup = '';
|
||||
$.each(feature.properties.display_fields, function(index, field) {
|
||||
popup += '<p class="popup-field"><span class="field-label">' + field[0] + '</span>';
|
||||
popup += '<span class="field-value">' + field[1] + '</span></p>';
|
||||
var $popup_field = $('<p class="popup-field"><span class="field-label"></span><span class="field-value"></span></p>');
|
||||
$popup_field.find('.field-label').text(field.label);
|
||||
if (field.html_value) {
|
||||
$popup_field.find('.field-value').html(field.html_value);
|
||||
} else {
|
||||
$popup_field.find('.field-value').text(field.value);
|
||||
}
|
||||
popup += $popup_field.html();
|
||||
});
|
||||
} else {
|
||||
var popup = '<p class="popup-field formdata-name">' + feature.properties.name + '</p>';
|
||||
|
|
Loading…
Reference in New Issue