Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optional and empty services #103

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
language: groovy
jdk:
- oraclejdk8
- openjdk8
sudo: false
branches:
only:
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ dependencies {
// compile 'org.grails.grails-plugin-rest:2.3.0.M2'
compile 'org.codehaus.groovy:groovy-ant:2.0.0'

compile "org.grails.plugins:ala-bootstrap3:3.0.6"
compile "org.grails.plugins:ala-bootstrap3:3.2.3"
compile "org.grails.plugins:grails-google-visualization:2.0"
compile "org.grails.plugins:ala-admin-plugin:2.0"
runtime "org.grails.plugins:ala-auth:3.0.1"
Expand Down
12 changes: 9 additions & 3 deletions grails-app/conf/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,17 +133,17 @@ environments:
appServerName: "https://auth.ala.org.au"

biocache:
baseURL: "https://biocache.ala.org.au"
baseURL: "https://biocache-ws.ala.org.au/ws"

ala:
baseURL: "https://www.ala.org.au"

bie:
baseURL: "https://bie.ala.org.au"
baseURL: "https://bie-ws.ala.org.au/ws"
searchPath: "/search"

spatial:
baseURL: "http://spatial.ala.org.au"
baseURL: "http://spatial.ala.org.au/ws"

logger:
baseURL: "https://logger.ala.org.au"
Expand Down Expand Up @@ -174,3 +174,9 @@ dashboard:
csv:
temp:
dir: "/data/dashboard/csv/"

useCitizenScienceService: true
vjrj marked this conversation as resolved.
Show resolved Hide resolved
useVolunteerService: true
useBarcodeOfLifeService: true
useNationalSpeciesListsService: true
useBHLService: true
114 changes: 92 additions & 22 deletions grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -30,75 +30,130 @@ class DashboardController {
}

def collectionPanel = {
render view: 'panels/collectionPanel', model: [collections: metadataService.getCollectionsByCategory()]
if (metadataService.getCollectionsByCategory())
render view: 'panels/collectionPanel', model: [collections: metadataService.getCollectionsByCategory()]
else
render view: 'panels/empty'
}

def recordsPanel = {
render view: 'panels/recordsPanel', model: [totalRecords: metadataService.getTotalAndDuplicates()]
if (metadataService.getTotalAndDuplicates())
render view: 'panels/recordsPanel', model: [totalRecords: metadataService.getTotalAndDuplicates()]
else
render view: 'panels/empty'
}

def datasetsPanel = {
render view: 'panels/datasetsPanel', model: [datasets: metadataService.getDatasets()]
if (metadataService.getDatasets())
render view: 'panels/datasetsPanel', model: [datasets: metadataService.getDatasets()]
else
render view: 'panels/empty'
}

def basisRecordsPanel = {
render view: 'panels/basisRecordsPanel', model: [basisOfRecord: metadataService.getBasisOfRecord()]
if (metadataService.getBasisOfRecord() && metadataService.getBasisOfRecord().facets)
render view: 'panels/basisRecordsPanel', model: [basisOfRecord: metadataService.getBasisOfRecord()]
else
render view: 'panels/empty'
}

def dateRecordsPanel = {
render view: 'panels/dateRecordsPanel', model: [dateStats: metadataService.getDateStats()]
if (metadataService.getDateStats())
render view: 'panels/dateRecordsPanel', model: [dateStats: metadataService.getDateStats()]
else
render view: 'panels/empty'
}

def nslPanel = {
render view: 'panels/nslPanel', model: [taxaCounts: metadataService.getTaxaCounts()]
if (grailsApplication.config.getProperty("useNationalSpeciesListsService", Boolean, true) &&
metadataService.getTaxaCounts())
render view: 'panels/nslPanel', model: [taxaCounts: metadataService.getTaxaCounts()]
else
render view: 'panels/empty'
}

def spatialPanel = {
render view: 'panels/spatialPanel', model: [spatialLayers: metadataService.getSpatialLayers()]
if (metadataService.getSpatialLayers() && metadataService.getSpatialLayers().groups)
render view: 'panels/spatialPanel', model: [spatialLayers: metadataService.getSpatialLayers()]
else
render view: 'panels/empty'
}

def statePanel = {
render view: 'panels/statePanel', model: []
}

def identifyLifePanel = {
render view: 'panels/identifyLifePanel', model: [identifyLifeCounts: metadataService.getIdentifyLifeCounts()]
if (metadataService.getIdentifyLifeCounts())
render view: 'panels/identifyLifePanel', model: [identifyLifeCounts: metadataService.getIdentifyLifeCounts()]
else
render view: 'panels/empty'
}

def mostRecordedSpeciesPanel = {
render view: 'panels/mostRecordedSpeciesPanel', model: [mostRecorded: metadataService.getMostRecordedSpecies('all')]
if (metadataService.getMostRecordedSpecies('all'))
render view: 'panels/mostRecordedSpeciesPanel', model: [mostRecorded: metadataService.getMostRecordedSpecies('all')]
else
render view: 'panels/empty'
}

def typeSpecimensPanel = {
render view: 'panels/typeSpecimensPanel', model: [typeCounts: metadataService.getTypeStats()]
if (metadataService.getTypeStats())
render view: 'panels/typeSpecimensPanel', model: [typeCounts: metadataService.getTypeStats()]
else
render view: 'panels/empty'
}

def barcodeOfLifePanel = {
render view: 'panels/barcodeOfLifePanel', model: [boldCounts: metadataService.getBoldCounts()]
if (grailsApplication.config.getProperty("useBarcodeOfLifeService", Boolean, true) &&
metadataService.getBoldCounts())
render view: 'panels/barcodeOfLifePanel', model: [boldCounts: metadataService.getBoldCounts()]
else
render view: 'panels/empty'
}

def bhlPanel = {
render view: 'panels/bhlPanel', model: [bhlCounts: metadataService.getBHLCounts()]
if (grailsApplication.config.getProperty("useBHLService", Boolean, true) &&
metadataService.getBHLCounts())
render view: 'panels/bhlPanel', model: [bhlCounts: metadataService.getBHLCounts()]
else
render view: 'panels/empty'
}

def volunteerPortalPanel = {
render view: 'panels/volunteerPortalPanel', model: [volunteerPortalCounts: metadataService.getVolunteerStats()]
if (grailsApplication.config.getProperty("useVolunteerService", Boolean, true) &&
metadataService.getVolunteerStats())
render view: 'panels/volunteerPortalPanel', model: [volunteerPortalCounts: metadataService.getVolunteerStats()]
else
render view: 'panels/empty'
}

def conservationStatusPanel = {
render view: 'panels/conservationStatusPanel', model: [stateConservation: metadataService.getSpeciesByConservationStatus()]
if (metadataService.getSpeciesByConservationStatus())
render view: 'panels/conservationStatusPanel', model: [stateConservation: metadataService.getSpeciesByConservationStatus()]
else
render view: 'panels/empty'
}

def recordsByDataProviderPanel = {
render view: 'panels/recordsByDataProviderPanel', model: [dataProviders: metadataService.getDataProviders()]
if (metadataService.getDataProviders())
render view: 'panels/recordsByDataProviderPanel', model: [dataProviders: metadataService.getDataProviders()]
else
render view: 'panels/empty'
}

def recordsByInstitutionPanel = {
render view: 'panels/recordsByInstitutionPanel', model: [institutions: metadataService.getInstitutions()]
if (metadataService.getInstitutions())
render view: 'panels/recordsByInstitutionPanel', model: [institutions: metadataService.getInstitutions()]
else
render view: 'panels/empty'
}

def recordsByLifeFormPanel = {
render view: 'panels/recordsByLifeFormPanel', model: [records: metadataService.getRecordsByLifeForm()]
if (metadataService.getRecordsByLifeForm())
render view: 'panels/recordsByLifeFormPanel', model: [records: metadataService.getRecordsByLifeForm()]
else
render view: 'panels/empty'
}

def recordsAndSpeciesByDecadePanel = {
Expand All @@ -110,23 +165,38 @@ class DashboardController {
}

def usageStatisticsPanel = {
render view: 'panels/usageStatisticsPanel', model: [loggerTotals: metadataService.getLoggerTotals()]
if (metadataService.getLoggerTotals())
render view: 'panels/usageStatisticsPanel', model: [loggerTotals: metadataService.getLoggerTotals()]
else
render view: 'panels/empty'
}

def downloadsByReasonPanel = {
render view: 'panels/downloadsByReasonPanel', model: [loggerReasonBreakdown: metadataService.getLoggerReasonBreakdown()]
if (metadataService.getLoggerReasonBreakdown())
render view: 'panels/downloadsByReasonPanel', model: [loggerReasonBreakdown: metadataService.getLoggerReasonBreakdown()]
else
render view: 'panels/empty'
}

def downloadsBySourcePanel = {
render view: 'panels/downloadsBySourcePanel', model: [loggerSourceBreakdown: metadataService.getLoggerSourceBreakdown()]
if (metadataService.getLoggerSourceBreakdown())
render view: 'panels/downloadsBySourcePanel', model: [loggerSourceBreakdown: metadataService.getLoggerSourceBreakdown()]
else
render view: 'panels/empty'
}

def downloadsByUserTypePanel = {
render view: 'panels/downloadsByUserTypePanel', model: [loggerEmailBreakdown: metadataService.getLoggerEmailBreakdown()]
if (metadataService.getLoggerEmailBreakdown())
render view: 'panels/downloadsByUserTypePanel', model: [loggerEmailBreakdown: metadataService.getLoggerEmailBreakdown()]
else
render view: 'panels/empty'
}

def speciesImagesPanel = {
render view: 'panels/speciesImagesPanel', model: [imagesBreakdown: metadataService.getImagesBreakdown()]
if (metadataService.getImagesBreakdown())
render view: 'panels/speciesImagesPanel', model: [imagesBreakdown: metadataService.getImagesBreakdown()]
else
render view: 'panels/empty'
}

def mostRecorded(String group) {
Expand Down
34 changes: 19 additions & 15 deletions grails-app/services/au/org/ala/dashboard/MetadataService.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class MetadataService {
def webService, cacheService, grailsApplication

String BIO_CACHE_URL, VOLUNTEER_URL, COLLECTORY_URL, SPATIAL_URL,BIE_URL, LOGGER_URL, IMAGES_URL, USERDETAILS_URL
Boolean USE_VOLUNTEER_SERVICE

@PostConstruct
def init() {
Expand All @@ -27,6 +28,7 @@ class MetadataService {
LOGGER_URL = grailsApplication.config.logger.baseURL
IMAGES_URL = grailsApplication.config.images.baseURL
USERDETAILS_URL = grailsApplication.config.userDetails.baseURL
USE_VOLUNTEER_SERVICE = grailsApplication.config.getProperty("useVolunteerService", Boolean, true)
}
/**
* Populates the model for the dashboard view
Expand Down Expand Up @@ -636,25 +638,27 @@ class MetadataService {
results.put("speciesWithImages", speciesWithImages)
results.put("subspeciesWithImages", subspeciesWithImages)

def vpResources = webService.getJson("${COLLECTORY_URL}/ws/dataHub/dh6").memberDataResources
// log.debug "vpResources = ${vpResources}"
def resourcesQuery = ""

if (vpResources) {
resourcesQuery = "%20AND%20data_resource_uid:("
vpResources.eachWithIndex() { res, i ->
if (i > 0) {
resourcesQuery = resourcesQuery + "%20OR%20"
if (USE_VOLUNTEER_SERVICE) {
def vpResources = webService.getJson("${COLLECTORY_URL}/ws/dataHub/dh6").memberDataResources
// log.debug "vpResources = ${vpResources}"
def resourcesQuery = ""

if (vpResources) {
resourcesQuery = "%20AND%20data_resource_uid:("
vpResources.eachWithIndex() { res, i ->
if (i > 0) {
resourcesQuery = resourcesQuery + "%20OR%20"
}
resourcesQuery = resourcesQuery + res.uid
}
resourcesQuery = resourcesQuery + res.uid
resourcesQuery = resourcesQuery + ")"
}
resourcesQuery = resourcesQuery + ")"
}

def taxaVPCount = webService.getJson("${BIO_CACHE_URL}${Constants.WebServices.PARTIAL_URL_TAXA_VP_COUNT}${resourcesQuery}")[0].count
results.put("taxaWithImagesFromVolunteerPortal", taxaVPCount)
def taxaVPCount = webService.getJson("${BIO_CACHE_URL}${Constants.WebServices.PARTIAL_URL_TAXA_VP_COUNT}${resourcesQuery}")[0].count
results.put("taxaWithImagesFromVolunteerPortal", taxaVPCount)
}

def taxaCSCount = webService.getJson("${BIO_CACHE_URL}${Constants.WebServices.PARTIAL_URL_TAXA_CS_COUNT}")[0].count
def taxaCSCount = webService.getJson("${BIO_CACHE_URL}${Constants.WebServices.PARTIAL_URL_TAXA_CS_COUNT}")[0]?.count?:0
results.put("taxaWithImagesFromCS", taxaCSCount)

def imageTotal = webService.getJson("${IMAGES_URL}${Constants.WebServices.PARTIAL_URL_IMAGE_TOTAL}").imageCount
Expand Down
Empty file.
14 changes: 9 additions & 5 deletions grails-app/views/dashboard/panels/speciesImagesPanel.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@
<tr><td>Taxa with images</td><td class="numberColumn">${g.formatNumber(number: imagesBreakdown["taxaWithImages"], type: 'number')}</td></tr>
<tr><td>Species with images</td><td class="numberColumn">${g.formatNumber(number: imagesBreakdown["speciesWithImages"], type: 'number')}</td></tr>
<tr><td>Subspecies with images</td><td class="numberColumn">${g.formatNumber(number: imagesBreakdown["subspeciesWithImages"], type: 'number')}</td></tr>
<tr><td>Taxa with images from<br/> DigiVol
</td><td class="numberColumn">${g.formatNumber(number: imagesBreakdown["taxaWithImagesFromVolunteerPortal"], type: 'number')}</td></tr>
<tr><td>Taxa with images from<br/> citizen science
</td><td class="numberColumn">${g.formatNumber(number: imagesBreakdown["taxaWithImagesFromCS"], type: 'number')}</td></tr>
<g:if test="${grailsApplication.config.getProperty("useVolunteerService", Boolean, true)}">
<tr><td>Taxa with images from<br/> DigiVol
</td><td class="numberColumn">${g.formatNumber(number: imagesBreakdown["taxaWithImagesFromVolunteerPortal"], type: 'number')}</td></tr>
</g:if>
<g:if test="${grailsApplication.config.getProperty("useCitizenScienceService", Boolean, true)}">
<tr><td>Taxa with images from<br/> citizen science
</td><td class="numberColumn">${g.formatNumber(number: imagesBreakdown["taxaWithImagesFromCS"], type: 'number')}</td></tr>
</g:if>
</tbody>
<tfoot>
<tr class="total-highlight"><td>Total number of images</td><td class="numberColumn">${g.formatNumber(number: imagesBreakdown["imageTotal"], type: 'number')}</td></tr>
Expand All @@ -26,4 +30,4 @@
</div>
</div>
</div>
</div>
</div>