Skip to content
Snippets Groups Projects
Commit c39883c0 authored by Timothee P's avatar Timothee P :sunflower:
Browse files

fix popup undefined values for offline features, adding feature types and status

parent abbdb768
No related branches found
No related tags found
2 merge requests!424version 3.1.0,!326REDMINE_ISSUE-12870
This commit is part of merge request !326. Comments created here will be created in the context of that merge request.
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"private": true, "private": true,
"scripts": { "scripts": {
"serve": "npm run init-proxy & npm run init-serve", "serve": "npm run init-proxy & npm run init-serve",
"init-proxy": "lcp --proxyUrl http://localhost:8000 --origin http://localhost:8080 --proxyPartial ''", "init-proxy": "lcp --proxyUrl http://127.0.0.1:8000 --origin http://localhost:8080 --proxyPartial ''",
"init-serve": "vue-cli-service serve", "init-serve": "vue-cli-service serve",
"build": "vue-cli-service build", "build": "vue-cli-service build",
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
......
...@@ -105,9 +105,9 @@ L.TileLayer.BetterWMS = L.TileLayer.WMS.extend({ ...@@ -105,9 +105,9 @@ L.TileLayer.BetterWMS = L.TileLayer.WMS.extend({
if (err) { if (err) {
content = ` content = `
<h4>${this.options.title}</h4> <h4>${this.options.title}</h4>
<p>Données de la couche inaccessibles</p> <p>Données de la couche inaccessibles</p>
`; `;
L.popup({ maxWidth: 800 }) L.popup({ maxWidth: 800 })
.setLatLng(latlng) .setLatLng(latlng)
...@@ -368,7 +368,7 @@ const mapUtil = { ...@@ -368,7 +368,7 @@ const mapUtil = {
window.layerMVT = layerMVT; window.layerMVT = layerMVT;
}, },
addFeatures: function (features, filter, addToMap = true, featureTypes) { addFeatures: function (features, filter, addToMap = true, featureTypes, project_slug) {
const featureGroup = new L.FeatureGroup(); const featureGroup = new L.FeatureGroup();
features.forEach((feature) => { features.forEach((feature) => {
const featureProperties = feature.properties ? feature.properties : feature; const featureProperties = feature.properties ? feature.properties : feature;
...@@ -389,7 +389,7 @@ const mapUtil = { ...@@ -389,7 +389,7 @@ const mapUtil = {
filters.length && filters.every(val => val !== false) filters.length && filters.every(val => val !== false)
) { ) {
const geomJSON = flip(feature.geometry || feature.geom); const geomJSON = flip(feature.geometry || feature.geom);
const popupContent = this._createContentPopup(feature); const popupContent = this._createContentPopup(feature, featureTypes, project_slug);
// Look for a custom field // Look for a custom field
let customField; let customField;
...@@ -519,26 +519,23 @@ const mapUtil = { ...@@ -519,26 +519,23 @@ const mapUtil = {
return formatted_date; return formatted_date;
}; };
let feature_type = feature.properties ? feature.properties.feature_type : feature.feature_type; let feature_type = feature.properties ? feature.properties.feature_type : feature.feature_type;
let feature_url = feature.feature_url;
let status = feature.status; let status = feature.status;
let date_maj = feature.updated_on;
let feature_type_url = feature.feature_type_url; let feature_type_url = feature.feature_type_url;
let feature_url = feature.feature_url; let date_maj = feature.updated_on;
if (feature.properties) { if (feature.properties) {
status = feature.properties.status; status = feature.properties.status;
date_maj = feature.properties.updated_on; date_maj = feature.properties.updated_on ? formatDate(new Date(feature.properties.updated_on)) : '<i>indisponible</i>';
feature_type_url = feature.properties.feature_type_url; feature_type_url = feature.properties.feature_type_url;
feature_url = feature.properties.feature_url; feature_url = feature.properties.feature_url;
} }
console.log(status,
date_maj,
feature_type_url,
feature_url);
if (featureTypes) { // => VectorTile if (featureTypes && feature.properties) { // => VectorTile
feature_type = featureTypes.find((x) => x.slug.split('-')[0] === '' + feature.properties.feature_type_id); feature_type = feature.properties.feature_type_id ?
featureTypes.find((x) => x.slug.split('-')[0] === '' + feature.properties.feature_type_id) :
featureTypes.find((f_type) => f_type.slug === feature.properties.feature_type); //* geojson
status = statusList.find((x) => x.value === feature.properties.status).name; status = statusList.find((x) => x.value === feature.properties.status).name;
date_maj = formatDate(new Date(feature.properties.updated_on)); if (feature_type) feature_type_url = '/geocontrib/projet/' + project_slug + '/type-signalement/' + feature_type.slug + '/';
feature_type_url = '/geocontrib/projet/' + project_slug + '/type-signalement/' + feature_type.slug + '/';
feature_url = feature_type_url + 'signalement/' + feature.properties.feature_id + '/'; feature_url = feature_type_url + 'signalement/' + feature.properties.feature_id + '/';
} else { } else {
status = feature.properties ? feature.properties.status.label : feature.status.label; status = feature.properties ? feature.properties.status.label : feature.status.label;
...@@ -554,27 +551,37 @@ const mapUtil = { ...@@ -554,27 +551,37 @@ const mapUtil = {
if (creator) { if (creator) {
author = creator.full_name author = creator.full_name
? `<div> ? `<div>
Auteur : ${creator.first_name} ${creator.last_name} Auteur : ${creator.first_name} ${creator.last_name}
</div>` </div>`
: creator.username ? `<div>Auteur: ${creator.username}</div>` : ''; : creator.username ? `<div>Auteur: ${creator.username}</div>` : '';
} }
const title = feature.properties ? feature.properties.title : feature.title; let title = feature.properties ? feature.properties.title : feature.title;
if (feature_url) {
title = `<a href="${feature_url}">${title}</a>`;
} else {
title = `<span>${title|| '<i>indisponible</i>'}</span>`;
}
if (feature_type_url) {
`<a href="${feature_type_url}"> ${feature_type.title || '<i>indisponible</i>'} </a>`;
}
return ` return `
<h4> <h4>
<a href="${feature_url}">${title}</a> <${feature_url ? 'a href="' + feature_url + '"' : 'span'}>${title || '<i>indisponible</i>'}</${feature_url ? 'a' : 'span'}>
</h4> </h4>
<div> <div>
Statut : ${status} Statut : ${status || '<i>indisponible</i>'}
</div> </div>
<div> <div>
Type : <a href="${feature_type_url}"> ${feature_type.title} </a> Type : <${feature_type_url ? 'a href="'+ feature_type_url + '"' : 'span'}> ${feature_type.title || '<i>indisponible</i>'} </${feature_type_url ? 'a' : 'span'}>
</div> </div>
<div> <div>
Dernière mise à jour : ${date_maj} Dernière mise à jour : ${date_maj || '<i>indisponible</i>'}
</div> </div>
${author} ${author}
`; `;
}, },
}; };
......
...@@ -957,7 +957,6 @@ export default { ...@@ -957,7 +957,6 @@ export default {
copyLink() { copyLink() {
const sharedLink = window.location.href.replace('projet', 'projet-partage'); const sharedLink = window.location.href.replace('projet', 'projet-partage');
navigator.clipboard.writeText(sharedLink).then(()=> { navigator.clipboard.writeText(sharedLink).then(()=> {
console.log('success');
this.confirmMsg = true; this.confirmMsg = true;
}, () => { }, () => {
console.log('failed'); console.log('failed');
...@@ -1202,15 +1201,16 @@ export default { ...@@ -1202,15 +1201,16 @@ export default {
const featuresOffline = this.arraysOffline.map((x) => { const featuresOffline = this.arraysOffline.map((x) => {
return { ...x.geojson, overideColor: '#ff0000' }; //* red (hex format is better for perf) return { ...x.geojson, overideColor: '#ff0000' }; //* red (hex format is better for perf)
}); });
console.log('featuresOffline', featuresOffline);
this.featuresLoading = false; this.featuresLoading = false;
mapUtil.addFeatures( mapUtil.addFeatures(
featuresOffline, featuresOffline,
{}, {},
true, true,
this.$store.state.feature_type.feature_types, this.$store.state.feature_type.feature_types,
this.$route.params.slug,
); );
// TODO : add offline features to BBOX with Turf probably
featureAPI.getFeaturesBbox(this.slug).then((bbox) => { featureAPI.getFeaturesBbox(this.slug).then((bbox) => {
if (bbox) { if (bbox) {
mapUtil.getMap().fitBounds(bbox, { padding: [25, 25] }); mapUtil.getMap().fitBounds(bbox, { padding: [25, 25] });
......
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