Front-end Grails app for user-submitted sightings. Production URL: http://sightings.ala.org.au.
Talks to ecodata-sightings backend - 1.2.5 branch.
(Deprecated) Provide a HTML front end tool for identification pre-submission based on the data in the Atlas and any other additional web services that may assist (lists of weeds etc)
License: Mozilla Public License 2.0
Front-end Grails app for user-submitted sightings. Production URL: http://sightings.ala.org.au.
Talks to ecodata-sightings backend - 1.2.5 branch.
From @nickdos on October 25, 2015 23:34
As reported by a user - they pasted the scientific name into the name box but did NOT select the autocomplete option (slow connection maybe).
This needs fixing to either allow the field to behave as a regular input or some other fix to improve UX.
Copied from original issue: AtlasOfLivingAustralia/sightings#4
Table showing recent (My) sightings shows the scientific name in the Identification column. I suggest this text is converted to a link to the ALA species page.
Reported by user and confirmed. Clicking on "insects and Spiders" group button results in no images or subgroups being displayed.
Change the button group to individual buttons
John la Salle has pointed out that the new sighting page does not allow the map to zoom in as far in the satelite view, than the previous version did. This is due to the change to use Open Street Map instead of Google. He also notes the address lookup is better with Google, as is the lat/lng to place name lookups.
Steps required:
From: Steve D.. [email protected]
Date: Saturday, 28 November 2015 7:58 pm
To: Nick [email protected]
Subject: Re: Help please with accountStill having problems with these files.
The most recent files I’ve uploaded aren’t showing up at all, images that is.
Many of the records I’ve uploaded previously have a strange time stamp on them, the hour is correct but the minute is always wrong, if I go back a couple of months, every “minute” is 08, the progressively over time they change to 09, 10, now they are showing 11.
Not sure what’s going on there.
Reported by a user (userId 6015):
I’ve just submitted a post, Eulophinae sp. GC2, and tried to edit the record, just by changing uncertain to certain, and couldn’t save it. Got a message about a bad record.
Output from log:
2015-06-19 03:44:23,317 ERROR [WebserviceService] Oops: Unexpected error: 400 : Bad Request
2015-06-19 03:44:23,705 ERROR [HttpWebService] {'error': 'Failed to get json from web service. class java.io.FileNotFoundException http://ecodata-sightings-dev.ala.org.au/ws/record/undefined/images/noImage.jpg
URL= http://ecodata-sightings-dev.ala.org.au/ws/record/undefined/images/noImage.jpg.', 'exception': 'java.io.FileNotFoundException: http://ecodata-sightings-dev.ala.org.au/ws/record/undefined/images/noImage.jpg'}
2015-06-19 03:45:34,100 ERROR [HttpWebService] {'error': 'Failed to get json from web service. class java.io.FileNotFoundException http://ecodata-sightings-dev.ala.org.au/ws/record/undefined/images/noImage.jpg
URL= http://ecodata-sightings-dev.ala.org.au/ws/record/undefined/images/noImage.jpg.', 'exception': 'java.io.FileNotFoundException: http://ecodata-sightings-dev.ala.org.au/ws/record/undefined/images/noImage.jpg'}
which suggests the undefined/images/noImage.jpg
ID is incorrectly being assigned due to the request for the species details for the provided scientificName...
https://github.com/AtlasOfLivingAustralia/ala-admin-plugin
add to BuildConfig so we can add banner messages, etc.
4a. pigeonhole
phase 1 - Nick - 4 weeks
initial page where user select species group, or thematic list (e.g. Weeds)
allow user to specify a location
show images of taxon from the specified group recorded in an area within an adjustable time frame)
show recent records for the selected taxon
environmental outlier check
phase 2 - Nick & Chris - 2 weeks
integration with ecodata for record submission
phase 3 - Nick & Dave B - 2 weeks
integration with taxonoverflow for identification workflow and results
John's dragonfly wing photos could be automatically tagged in http://images.ala.org.au/ to have a "wing" tag. Then when a person is using the identification tool and gets to the image gallery section, they could be presented with a list of tags which are present in the matching set of images. Clicking on a tag "filters" the image gallery to only display species with images containing that tag.
Currently its a hard coded list.
"I used to have several photos of my sightings on the Atlas, but now all but one or two have disappeared. Why have they been taken off? In particular I had a beautiful photo of Ctenocolletes smaragdinus on a Verticordia. Where has that gone?"
image is still on the species page and the occurrence record but not visible in the users list of submitted sightings
To reproduce:
Image is still there.
Example HTML
<a class="cbLink thumbImage tooltips" rel="thumbs" href="http://bie.ala.org.au/species/urn:lsid:biodiversity.org.au:apni.taxon:618022" target="species" data-lsid="urn:lsid:biodiversity.org.au:apni.taxon:618022" data-displayname="Cat" s="" ear="" —="" <i="">Hypochaeris radicata'><img src="http://bie.ala.org.au/ws/species/image/small/urn:lsid:biodiversity.org.au:apni.taxon:618022" alt="species thumbnail" onerror="imgError(this);"><div class="meta brief">Cat's Ear</div><div class="meta detail hide">Cat's Ear<br><i>Hypochaeris radicata</i><br>Records: 1</div></a>
See Sightings & Identification workflow prototypes
This component will provide a HTML front end tool for identification pre-submission based on the data in the Atlas and any other additional web services that may assist (lists of weeds etc). The flow for the user will be thus:
Allow user to select a high level group (e.g Mammals, Weeds) & a location
Show a list of species (with images) recorded near there within a temporal range (last 10 years)
Upon selecting a species indicate
There is a requirement for traits to be supported during record submission. We propose we defer this to a later stage.
We have good distribution shape files for fish species, thanks to the Fish Map tool (http://fish.ala.org.au). We could therefore simplify the UI to remove the "radius" option from the map section and use the given input location and test which species layers it intersects.
This could be a test-bed for then going a step further and pre-generating predicted distribution layers for terrestrial species, based on the best 5 environmental layers in the SP.
To reproduce on http://pigeonhole-dev.ala.org.au:
Image display becomes broken in the /recent display and on the Edit screen (on selecting to edit a second time).
Image URLs become:
Geolocate is broken in Chrome due to "secure origin" check. Fix is to run app under HTTPS.
See Grails plugin for image-service, as used on taxon-overflow
Plugin repo https://github.com/AtlasOfLivingAustralia/images-client-plugin
We probably want to at least ask before doing this.
Currently its just a static map image, but should be made an interact Google or Leaflet map.
Add a grid view for images to
http://pigeonhole-dev.ala.org.au/recent
Similar to what we have done for the lists tool
e.g. http://lists.ala.org.au/speciesListItem/list/dr781#grid
We need to add an SDS check on record pre-submission. We should do this before we release to production.
URLs use q=*:*&fq=...
and when no records are found the message doesn't include the userID. SO the URL in this app should remove the *:*
and just have a q
param (no fq
).
Nothing happens (it seems) when the button is clicked but an entry is created in taxon overflow. Probably a BS2 -> BS3 bug
as requested by Dave M
Before allowing user to submit sighting, check all images that have been added have finished being uploaded in the background.
Possibly disable submit button or add a spinner to submit button listener and trigger form submit after uploads are complete.
Trying to edit these sightings results in an error page with stacktrace:
2015-11-20 05:27:35,087 ERROR [GrailsExceptionResolver] IllegalArgumentException occurred when processing request: [GET] /edit/e1d6d7b8-10f6-46b7-9d2f-50d17811f48d
Cannot format given Object as a Date. Stacktrace follows:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: Cannot format given Object as a Date
I suspect the date is coming from EXIF data.
From Taryn:
On the My sightings page, there are three links to the Occurrence explorer, but only the upper one in the bar next to the “report a sighting” button is working.
I can confirm the broken links are:
and working link is:
http://biocache.ala.org.au/occurrences/search?q=*:*&fq=data_resource_uid:dr364&fq=alau_user_id:13
Thus the correct link should either be the one above or an OR'ed version:
https://www.dropbox.com/s/pvoubssvjaedhl7/Screenshot%202015-06-11%2016.52.37.png?dl=0
with URL
http://pigeonhole-dev.ala.org.au/edit/53cb5593-eb6f-44b1-a6bd-54aa095ec69b
I think its loading the whole image (large) instead of using a thumbnail.
Searching for "perth, wa" throws JS error:
Uncaught TypeError: Cannot read property 'southwest' of undefined
AJAX "data" format doesn't always follow same data structure. See
The second "results" array element has a bounds but first doesn't.
Once a sighting has been submitted, it says:
You sighting was successfully submitted
First word should be "Your" not "You"
As suggested by Taryn, she thinks there is no "reason" to click this button. Suggestion is to add a line of text above the autocomplete input to hint that a user may want to use this tool.
E.g.
If you know the name of the species, then use the search input below. If you need help identifying the species, then click the button above labelled "image assisted identification"
Add this option via a popup maybe?
Lots of these errors in tomcat log:
2015-10-26 03:42:35,998 ERROR [WebserviceService] {error=Failed calling web service. Server returned HTTP response code: 500 for URL: http://spatial.ala.org.au/ws/distribution/outliers/urn:lsid:biodiversity.org.au:afd.taxon:3aca9928-daf5-416d-a343-60e194b2c2c2?pointsJson=%7B%22occurrence%22%3A%7B%22decimalLatitude%22%3A-35.2499583333%2C%22decimalLongitude%22%3A149.1611333333%7D%7D URL= http://spatial.ala.org.au/ws/distribution/outliers/urn:lsid:biodiversity.org.au:afd.taxon:3aca9928-daf5-416d-a343-60e194b2c2c2., statusCode=500, detail=<html><head><title>Apache Tomcat/6.0.26 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:681)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
au.org.ala.web.filter.JsonpFilter.doFilter(JsonpFilter.java:62)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
</pre></p><p><b>root cause</b> <pre>java.lang.NullPointerException
au.org.ala.layers.dao.DistributionDAOImpl.identifyOutlierPointsForDistribution(DistributionDAOImpl.java:506)
au.org.ala.layers.web.DistributionsService.getDistributionOutliers(DistributionsService.java:394)
sun.reflect.GeneratedMethodAccessor361.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Needs try/catch maybe?
Donald suggested the iNaturalist interface is very good for this:
As discussed, although you need to be logged in to use it:
http://www.inaturalist.org/observations/new/batch
You get to it by selecting “Add observations” from e.g. http://www.inaturalist.org/home (once logged in) and then the “Add: Batch” link top right.
Donald
Mark record as hidden via POST to ecodata with JSON:
{ "offensiveFlag":true }
There seems to be a race condition for uploading multiple images.
To reproduce, create a sighting with multiple images (3 or more) each > 1MB
As soon as the submit button is renabled, hit submit. The outcome is not all of the images end up associated with the record.
Many users have complained about it being wrong and it seems to not be that useful. Add a config var to disable, so we can change on the fly if needed.
If you click the "Add files" button, a list of errors appears:
There was a problem with one or more fields, please fix these errors (in red)
Species - Either species name is required OR one or more tags AND media files are both required
Date - Date is required
sighting.field.individualCount - individualCount is required
sighting.field.georeferenceProtocol - georeferenceProtocol is required
adding a date resets to blank if the Add files button is clicked again.
The submit a sighting already has a link to out "terms of use" but I think we should also directly link to the ALA privacy page as well (which is linked from the ToU page but it is not very obvious.
Suggested text:
Please read the terms of use and privacy policy before submitting your sighting
A few users have asked to "merge" sightings for 2 different accounts they have in the ALA. It would be useful to provide an admin function to remap the userId field for a list of sightings.
Currently the identify page only loads the first 30 images.
Implement either a "load more images" button or else trigger subsequent page of images when the bottom of the current page is "in view".
See http://bie.ala.org.au/image-search/showSpecies?taxonRank=genus&scientificName=Acacia for example implementation.
Searching with a large area broken for identify lookup
e.g. "Canberra", Sydney
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.