mineleni / cbsviewer Goto Github PK
View Code? Open in Web Editor NEWWebrichtlijnen compliant webmap viewer
Home Page: http://mineleni.github.io/CBSviewer/
License: BSD 2-Clause "Simplified" License
Webrichtlijnen compliant webmap viewer
Home Page: http://mineleni.github.io/CBSviewer/
License: BSD 2-Clause "Simplified" License
Eigenlijk alles <IE7 verwijzen naar de CORE versie.
kan handig met een stukje conditionele css/html en de coreonly parameter
<c:if test="${param.coreonly!=true}">
<!--[if lt IE 7]> ...ga naar ...want dit werkt niet voor jouw browser.<![endif]-->
</c:if>
Opzetten van:
Een transparantie schuifje bovenaan de kaart zou handig zijn.
Met name bij dekkende kaarten is het voor een gebruiker soms moeilijk om zich te orienteren, als er een mogelijkheid is om het thema even uit te zetten of meer doorzichtig te maken maakt dat orientatie makkelijker.
Eerst de layout aanpassen zodat er geen verticale scrollbalk meer is, daarna kan het in Viewer.js aangezet.
in de header jsp wordt conditioneel css voor <IE7 en IE8 geladen, echter deze tags worden niet juist gerenderd waardoor oa. de OpenLayers zoom knoppen slecht of niet te zien zijn.
Op dit moment worden alleen de getMap requests van de achtergrond WMS gecached, aangezien de pdok WMS niet vreselijk snel zijn is het zinvol om ook voorgrond kaarten, legenda en eventueel featureinfo een poosje te bewaren.
Uit oogunt van toegankelijkheid is een serverside WMS nodig die een niet dynamische kaart genereert als de client geen javascript en/of css ondersteund.
Een robuust afdruk mechanisme voor de kaart. De enige manier om consistente afdrukken te maken is mbv. PDF.
Hiervoor is een serverside WMS client nodig (#3) die evt. ook WMTS ondersteund.
in opstartscherm de kaart maximale hoogte en breedte geven in plaats van nu vaste afmeting.
Adres zoeken op basis van OpenLS interface van pdok
Webrichtlijnen schrijven begrijpbare urls voor, dit kan bereikt worden door url-rewriting toe te passen.
Een andere optie is het ebruik van POST ipv. GET requests voor de formulieren, hierdoor is het dan alleen niet meer mogelijk om een bookmark te maken voor een bepaald zoekresultaat.
De accordions met legenda en featureinfo kunnen niet met het toetsenbord geopend/gesloten worden.
in ieder geval niet in huidige versie van Chrome
automate wcag 2 controles met de AChecker, api op http://achecker.ca/documentation/web_service_api.php als onderdeel van de build.
andere opties/tools:
Na het wisselen van een thema/kaartlaag komt de featureinfo lokatie, het i-ikoontje, soms onder de thematische kaart terecht, dat ziet er niet uit en de f-info werkt dan soms niet meer.
De featureinfo response moet geparsed worden zodat er geen ongeldige html wordt opgebouwd.
Op dit moment wordt de volledige html response (een compleet html document) van geoserver in de DOM geinjecteerd.
opties zijn:
De beste plek om dit op te lossen is waarschijnlijk in de xhr proxy.
het blijkt dat de inspire view services geen GetLegendGraphic operatie meer ondersteunen.
Zie: http://geodata.nationaalgeoregister.nl/cbsvierkanten100m/ows?SERVICE=WMS&REQUEST=Getcapabilities vanaf regel 39
Een toegankelijke toggle button/link oid om de afmeting van de kaart te maximaliseren (en weer te resetten) naar de vrije ruimte van het scherm
De pagina heeft geen heading (meer), dit is een semantische fout en faalpunt voor een WR toets.
zie ook: #7
Een link die de integrale dataset als download aanbiedt.
Na de aanpassingen en verschuivingen in de GUI (SHA-1: d1a479b ) zijn de featureinfo en legenda stukgegaan in de core versie.
Multiple errors in several files
inline javascript dat wordt gegenereerd in jsp includes zit niet in een CDATA sectie, hierdoor valideert de html niet meer.
Af en to borrelt er een NullPointerException op uit de cache, na een page reload komt dat weer goed, maar de RIA zou hier sowieso geen last van hoeven hebben.
dit is niet Jetty of Tomcat specifiek.
stacktrace:
java.lang.NullPointerException at nl.mineleni.cbsviewer.servlet.wms.WMSClientServlet.getForeGroundMap(WMSClientServlet.java:38) at
nl.mineleni.cbsviewer.servlet.wms.WMSClientServlet.service(WMSClientServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:648) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.Dispatcher.include(Dispatcher.java:183) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:1015) at org.apache.jsp.index_jsp._jspService(index_jsp.java:91) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:400) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:648) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:276) at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:103) at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:566) at javax.servlet.http.HttpServlet.service(HttpServlet.java:735) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:648) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:559) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:365) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485) at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72) at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Thread.java:722)
In de jsp's wordt niet overal (met name in de jstl tags) de resource bundle gebruikt.
Als een adreszoek actie meer dat 1 adres oplevert krijgt de gebruiker een lijstje om uit te kiezen, na de keuze (hyperlink) worden de andere zoekresultaten "vergeten" (al zijn ze wel via de terug knop van de browser weer terug te halen)
Het zou mooi zijn om (net als in de enhanced versie) de resultatenlijst beschikbaar te houden.
Maak een workaround die dit probleem oplost want de getallen zijn te groot en slaan nergens op.
bijvoorbeeld: http://geodata.nationaalgeoregister.nl/geocoder/Geocoder?Request=geocode&zoekterm=zeist
Geeft ons de centroiden van de plaats Zeist en de gemeente Zeist:
<xls:GeocodeResponse xmlns:xls="http://www.opengis.net/xls" xmlns:gml="http://www.opengis.net/gml">
<xls:GeocodeResponseList numberOfGeocodedAddresses="2">
<xls:GeocodedAddress>
<gml:Point srsName="EPSG:28992">
<gml:pos dimension="2">145712.4817222344 455574.62760991394</gml:pos>
</gml:Point>
<xls:Address countryCode="NL">
<xls:Place type="MunicipalitySubdivision">Zeist</xls:Place>
<xls:Place type="Municipality">Zeist</xls:Place>
<xls:Place type="CountrySubdivision">Utrecht</xls:Place>
</xls:Address>
</xls:GeocodedAddress>
<xls:GeocodedAddress>
<gml:Point srsName="EPSG:28992">
<gml:pos dimension="2">145954.70832932927 457088.39372074755</gml:pos>
</gml:Point>
<xls:Address countryCode="NL">
<xls:Place type="Municipality">Zeist</xls:Place>
<xls:Place type="CountrySubdivision">Utrecht</xls:Place>
</xls:Address>
</xls:GeocodedAddress>
</xls:GeocodeResponseList>
</xls:GeocodeResponse>
inderdaad met 11 cijfers achter de komma.
Met het toetsenbord kan ik geen kaart selecteren.
in ieder geval niet in huidige versie van Chrome
Door Sass te gebruiken kunnen we makkelijker (skin) aanpassingen doen in de styling van elementen zoals kleur ed. Verder kan er mbv. mixin's makkelijker en beter browser specifieke css (bijv. prefix vormen) worden aangemaakt.
Sass lijkt op dit moment de way-to-go.
Ik wil kunnen wisselen tussen kaart en luchtfoto voor de achtergrond voor een beter beeld van de omgeving.
Op TravisCI is jasmin al geinstalleerd, het zelf uitpakken en runnen werkt niet omdat de +x bits niet aan staan voor de target directory.
Hierdoor falen de builds op Travis
zie:
De functie van het adreszoek veld is niet direct duidelijk, het lijkt een generiek zoekveld.
Voor WCAG2/WR compliancy dienen input elementen voorzien te zijn van een label element.
WCAG2:
De wissen knop krijgt focus volgend op de focus van het tekstveld, hierdoor wordt het per-ongeluk wissen in de hand gewerkt, iets wat niet ongedaan gemaakt kan worden. De melding als er niets of meer dan 1 match zijn gevonden dient waarschijnlijk als foutmelding herkenbaar te zijn.
WCAG2:
in ieder geval voor de ria aanpassen met behulp van de getlegendGraphic request, optioneel voor de core, al kan dat daar eigenlijk niet zonder de legendUrls te parsen en te inspecteren op iets dat lijkt op een getlegendGraphic request..
De yuicompressor t compiler faalt met een error tijdens het compileren van jquery.layout.js (sinds SHA: 5a91991 )
de melding snap ik niet helemaal, maar het lijkt erop dat het hier gaat om de float: properties, misschien dat een stel aanhalingstekens eromheen dat op kan lossen?
dus: { width: "auto", 'float': "left" }
en { 'float': "none" }
in plaats van de code zoals die in onderstaande foutmelding staat.
De fout treedt zowel op de Jenkins (http://gisdemo.agro.nl/jenkins/job/CBS-viewer/128/) als de Travis (https://travis-ci.org/#!/MinELenI/CBSviewer/builds/3097019) server op.
18$ mvn install --quiet -DskipTests=true
19[ERROR] .../src/main/webapp/lib/jquery.layout.js:line 1067:column 35:invalid property id
20 $P.css({ width: "auto", float: "left" }); // float = FORCE pane to auto-size
21[ERROR] .../src/main/webapp/lib/jquery.layout.js:line 1069:column 20:invalid property id
22 $P.css({ float: "none" }); // RESET
23[ERROR] .../src/main/webapp/lib/jquery.layout.js:line 1:column 0:Compilation produced 2 syntax errors.
24[ERROR] Failed to execute goal net.alchim31.maven:yuicompressor-maven-plugin:1.3.2:compress (default) on project cbsviewer: Execution default of goal net.alchim31.maven:yuicompressor-maven-plugin:1.3.2:compress failed: Compilation produced 2 syntax errors. -> [Help 1]
25[ERROR]
26[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
27[ERROR] Re-run Maven using the -X switch to enable full debug logging.
28[ERROR]
het gaat om de regels:
https://github.com/MinELenI/CBSviewer/blob/master/src/main/webapp/lib/jquery.layout.js#L1067 en https://github.com/MinELenI/CBSviewer/blob/master/src/main/webapp/lib/jquery.layout.js#L1069
opdat we eigen QC regels hebben ipv. de defaults
Er is nog geen css voor het core navigatie formulier.
ook kijken naar de positie van andere elementen (kaart selector, legenda/info accordion)
gedrag zoals in core ook in ria toepassen, al er een zoomTo wordt uitgevoerd ook een info aanvraag voor die lokatie doen.
De core WMS servlet slaat tijdelijke bestanden op in de webapplicatie om deze naar de client te kunnen serveren, deze worden weliswaar opgeruimd bij afsluiten van de JVM, maar het kan zinvol zijn iets vaker op te ruimen.
Hi,
The demo seems to be offline. It would be nice to how a working version.
Thanks
Rob
De help pagina moet geschreven worden om uitleg te geven aan gebruikers.
in ieder geval op klein scherm proberen om de blauwe balk "weg te werken"
Opvragen van feature informatie, zowel met toetsenbord als muis.
zie ook #6
Op dit moment zijn er twee manieren van http-proxy configuratie in gebruik:
Ik wil de laatste laten vallen.
Make sure the menu works in combination with existing code
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.