Skip to content

Commit

Permalink
- modified the page navigated to by back, cancel or save buttons
Browse files Browse the repository at this point in the history
- modified deletion of artifacts after record upload
- refactored code
  • Loading branch information
temi committed Feb 7, 2024
1 parent 0387aba commit 4f2cb56
Show file tree
Hide file tree
Showing 11 changed files with 87 additions and 252 deletions.
28 changes: 5 additions & 23 deletions grails-app/assets/javascripts/enterBioActivityData.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,10 @@ function Master(activityId, config) {
entities.saveActivity(toSave).then(function (result) {
var activityId = result.data;
if (config.enableOffline) {
document.location.href = config.returnTo;
if (window.history)
window.history.back();
else
document.location.href = config.returnTo;
} else
document.location.href = fcConfig.activityViewURL + "/" + projectActivityId + "?activityId=" + activityId + "&projectId=" + projectId;
});
Expand Down Expand Up @@ -358,29 +361,8 @@ function ActivityHeaderViewModel (act, site, project, metaModel, pActivity, conf
}
return true;
};
self.siteId = ko.vetoableObservable(act.siteId, self.confirmSiteChange);

self.siteId.subscribe(function (siteId) {

var matchingSite = $.grep(self.transients.pActivitySites, function (site) {
return siteId == site.siteId
})[0];

if (matchingSite && matchingSite.extent && matchingSite.extent.geometry) {
var geometry = matchingSite.extent.geometry;
if (geometry.pid) {
activityLevelData.siteMap.addWmsLayer(geometry.pid);
} else {
var geoJson = ALA.MapUtils.wrapGeometryInGeoJSONFeatureCol(geometry);
activityLevelData.siteMap.setGeoJSON(geoJson);
}
}
self.transients.site(matchingSite);

if (metaModel.supportsPhotoPoints) {
self.updatePhotoPointModel(matchingSite);
}
});
self.siteId = ko.vetoableObservable(act.siteId, self.confirmSiteChange);

self.goToProject = function () {
if (self.projectId) {
Expand Down
172 changes: 0 additions & 172 deletions grails-app/assets/javascripts/images.js

This file was deleted.

31 changes: 20 additions & 11 deletions grails-app/assets/javascripts/offline-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ function ActivitiesViewModel (config) {
};

function ActivityViewModel (activity, parent) {
const IMAGE_DELETED_STATUS = 'deleted'
var self = this, images, loadPromise;
self.activityId = activity.activityId;
self.projectId = activity.projectId;
Expand Down Expand Up @@ -186,11 +187,13 @@ function ActivityViewModel (activity, parent) {
}, function () {
loadPromise.then(function (){
self.uploading(true);
promises.push(self.uploadImages().then(self.deleteImages));
promises.push(self.uploadSite().then(self.updateActivityWithSiteId).then(self.saveAsNewSite).then(self.deleteOldSite));
$.when.apply($, promises).then(function () {
self.saveActivityToDB().then(self.uploadActivity).then(self.deleteActivityFromDB).then(self.removeMeFromList).then(function () {
promises.push(self.uploadImages());
promises.push(self.uploadSite().then(self.updateActivityWithSiteId).then(self.saveAsNewSite));
$.when.apply($, promises).then(function (imagesToDelete, oldSitesToDelete) {
self.saveActivityToDB().then(self.uploadActivity).then(self.deleteActivityFromDB).then(self.removeMeFromList).then(async function () {
self.uploading(false);
await self.deleteImages(imagesToDelete);
await self.deleteOldSite(oldSitesToDelete);
deferred.resolve({data: { activityId: activity.activityId} });
});
}, function (error) {
Expand Down Expand Up @@ -343,20 +346,26 @@ function ActivityViewModel (activity, parent) {
});
}

self.uploadImages = function() {
self.uploadImages = async function() {
var uploadedImages = [],
promises = [], deferred = $.Deferred();

self.imageViewModels.forEach(function (imageVM, index) {
for (var index = 0 ; index < self.imageViewModels.length; index++) {
var imageVM = self.imageViewModels[index];
if (imageVM.isBlobDocument()) {
var image = images[index];
var image = images[index], promise;
if (image.documentId && entities.utils.isDexieEntityId(image.documentId)) {
uploadedImages.push(image.documentId);
if (imageVM.status() !== IMAGE_DELETED_STATUS)
uploadedImages.push(image.documentId);
}

promises.push(self.uploadImage(imageVM).then(self.updateImageMetadata.bind(self, imageVM, image)))
if (imageVM.status() !== IMAGE_DELETED_STATUS)
promise = self.uploadImage(imageVM).then(self.updateImageMetadata.bind(self, imageVM, image))
promises.push(promise)
await promise;
}
});

}

$.when.apply($, promises).then(function () {
deferred.resolve({data:uploadedImages});
Expand All @@ -369,7 +378,7 @@ function ActivityViewModel (activity, parent) {

self.updateImageMetadata = function(imageVM, image, stagedMetadata) {
$.extend(image, stagedMetadata);
imageVM.load(image);
imageVM.load(image, true);
if (entities.utils.isDexieEntityId(image.documentId)) {
// clear documentId so that BioCollect will create a new document for the image
image.documentId = undefined;
Expand Down
9 changes: 2 additions & 7 deletions grails-app/assets/javascripts/pwa-index.js
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ function OfflineViewModel(config) {
*/
async function startDownloadingSites() {
const TIMEOUT = 3000, // 3 seconds
MAP_LOAD_TIMEOUT = 2000, // 2 seconds
MAP_LOAD_TIMEOUT = 1000, // 1 seconds
MAX_ZOOM=20,
MIN_ZOOM= 10;
var sites = pa.sites || [], zoom = 15, mapZoomedInIndicator, tileLoadedPromise, cancelTimer,
Expand Down Expand Up @@ -444,11 +444,6 @@ function OfflineViewModel(config) {
maxZoom: MAX_ZOOM
});

geoJsonLayer.on('tileload', function () {
if(tileLoadedPromise && tileLoadedPromise.state() == 'pending') {
tileLoadedPromise.resolve();
}
});
// so that layer zooms beyond default max zoom of 18
geoJsonLayer.options.maxZoom = MAX_ZOOM;
mapZoomedInIndicator = $.Deferred();
Expand Down Expand Up @@ -617,7 +612,7 @@ function downloadProjectActivityArtefacts(viewModel) {
delay = 4 * 60 * 1000, // four minutes
deferred = $.Deferred();

var urls = [fcConfig.createActivityUrl, fcConfig.indexActivityUrl, fcConfig.offlineListUrl],
var urls = [fcConfig.createActivityUrl, fcConfig.indexActivityUrl, fcConfig.offlineListUrl, fcConfig.settingsUrl],
urlsIndex = 0;

document.addEventListener('view-model-loaded',function () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
window.activityLevelData = new ActivityLevelData();

$(function() {
if (window.viewModel)
return;

$('#validation-container').validationEngine('attach', {scroll: true});

Expand All @@ -60,6 +62,8 @@
$('#cancel').on('click',function () {
if (fcConfig.bulkUpload)
$(document).trigger('activitycreatecancelled')
else if (window.history && window.history.length > 1)
window.history.back();
else
document.location.href = fcConfig.returnTo;
});
Expand Down
1 change: 1 addition & 0 deletions grails-app/views/bioActivity/pwa.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
layersStyle: "${createLink(controller: 'regions', action: 'layersStyle')}",
createActivityUrl: "/pwa/bioActivity/edit/" + params.projectActivityId + "?cache=true",
indexActivityUrl: "/pwa/bioActivity/index/" + params.projectActivityId+ "?cache=true",
settingsUrl: "/pwa/settings",
baseMapUrl: "${grailsApplication.config.getProperty("pwa.baseMapUrl")}${grailsApplication.config.getProperty("pwa.apiKey")}",
baseMapAttribution: "${grailsApplication.config.getProperty("pwa.mapConfig.baseLayers", List)?.getAt(0)?.attribution?.encodeAsJavaScript()}",
fetchSpeciesUrl: "${createLink(controller: 'search', action: 'searchSpecies')}",
Expand Down
15 changes: 13 additions & 2 deletions grails-app/views/bioActivity/pwaBioActivityIndex.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,19 @@
<bc:koLoading>
<div id="form-placeholder"></div>
</bc:koLoading>
<a class="btn btn-primary" href="${createLink(controller: 'bioActivity', action: 'pwaOfflineList', params: [projectActivityId: projectActivityId])}"><i class="far fa-arrow-alt-circle-left"></i> <g:message code="pwa.btn.back"/> </a>
<a id="backButton" class="btn btn-primary" href="#"><i class="far fa-arrow-alt-circle-left"></i> <g:message code="pwa.btn.back"/> </a>
<script type="text/javascript">
var urlObject = new URL(window.location.href)
var activityId = getActivityId();
$("#backButton").on('click', function () {
if (window.history && window.history.length > 1) {
window.history.back();
} else {
document.location.href = "${createLink(controller: 'bioActivity', action: 'pwaOfflineList', params: [projectActivityId: projectActivityId])}";
}
})
function getMetadataAndInitialise () {
var projectActivityMetadataPromise = entities.getProjectActivityMetadata(fcConfig.projectActivityId, activityId);
projectActivityMetadataPromise.then(function (metadataResult) {
Expand Down Expand Up @@ -129,6 +137,9 @@
window.activityLevelData = new ActivityLevelData();
$(function () {
if (window.viewModel)
return
$('.helphover').popover({animation: true, trigger: 'hover'});
$('#cancel').on('click', function () {
Expand Down Expand Up @@ -176,7 +187,7 @@
}
}
var viewModel = new ViewModel(
window.viewModel = new ViewModel(
activity,
site,
project,
Expand Down
5 changes: 4 additions & 1 deletion grails-app/views/bioActivity/pwaSettings.gsp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<title>PWA settings</title>
<asset:stylesheet src="pwa-settings-manifest.css"/>
<asset:javascript src="pwa-settings-manifest.js"/>
<asset:script>
<asset:script type="text/javascript">
var fcConfig = {
siteUrl: "/ws/site",
addActivityUrl: "/pwa/bioActivity/edit",
Expand All @@ -19,6 +19,9 @@
isCaching: ${params.getBoolean('cache', false)},
enableOffline: true
};
window.addEventListener('load', function () {
window.parent && window.parent.postMessage({event: 'viewmodelloadded', data: {}}, "*");
});
</asset:script>
</head>

Expand Down
Loading

0 comments on commit 4f2cb56

Please sign in to comment.