From 31e7fe3761ae280ad776e2d550d27b12820e84ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sven=20K=C3=A4stle?= <sven.kaestle@gmx.de> Date: Thu, 6 Sep 2018 13:34:28 +0200 Subject: [PATCH] feat: Add projectId to full submission and redirect user after button click --- .../controller/SubmissionController.java | 7 ++++--- .../submission/model/FullSubmission.java | 13 ++++++++++++- .../model/FullSubmissionPostRequest.java | 13 ++++++++++++- .../main/webapp/assets/js/project-student.js | 2 +- .../webapp/assets/js/unstructuredAnnotation.js | 18 ++++++++++++++---- .../main/webapp/assets/js/unstructuredRest.js | 3 ++- .../webapp/assets/js/unstructuredUpload.js | 14 +++++++------- .../src/main/webapp/assets/js/utility.js | 11 +++++++++++ .../src/scripts/dbschema/fltrail.sql | 1 + 9 files changed, 64 insertions(+), 18 deletions(-) diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java index b3b86098..6053a7f4 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java @@ -30,8 +30,8 @@ public class SubmissionController implements ISubmission { connection.connect(); // build and execute request - String request = "INSERT INTO fullsubmissions (`id`, `user`, `text`) VALUES (?,?,?);"; - connection.issueInsertOrDeleteStatement(request, uuid, fullSubmissionPostRequest.getUser(), fullSubmissionPostRequest.getText()); + String request = "INSERT INTO fullsubmissions (`id`, `user`, `text`, `projectId`) VALUES (?,?,?,?);"; + connection.issueInsertOrDeleteStatement(request, uuid, fullSubmissionPostRequest.getUser(), fullSubmissionPostRequest.getText(), fullSubmissionPostRequest.getProjectId()); // get the new submission from database FullSubmission fullSubmission = getFullSubmission(uuid); @@ -283,8 +283,9 @@ public class SubmissionController implements ISubmission { long timestamp = rs.getTimestamp("timestamp").getTime(); String user = rs.getString("user"); String text = rs.getString("text"); + String projectId = rs.getString("projectId"); - return new FullSubmission(id, timestamp, user, text); + return new FullSubmission(id, timestamp, user, text, projectId); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java index 725db4b2..37b35c9f 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmission.java @@ -11,13 +11,15 @@ public class FullSubmission { private long timestamp; private String user; private String text; + private String projectId; // constructor - public FullSubmission(String id, long timestamp, String user, String text) { + public FullSubmission(String id, long timestamp, String user, String text, String projectId) { this.id = id; this.timestamp = timestamp; this.user = user; this.text = text; + this.projectId = projectId; } // methods @@ -53,6 +55,14 @@ public class FullSubmission { this.text = text; } + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + @Override public String toString() { return "FullSubmission{" + @@ -60,6 +70,7 @@ public class FullSubmission { ", timestamp=" + timestamp + ", user='" + user + '\'' + ", text='" + text + '\'' + + ", projectId='" + projectId + '\'' + '}'; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java index a807283a..48a2dfe7 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/model/FullSubmissionPostRequest.java @@ -9,11 +9,13 @@ public class FullSubmissionPostRequest { // variables private String user; private String text; + private String projectId; // constructors - public FullSubmissionPostRequest(String user, String text) { + public FullSubmissionPostRequest(String user, String text, String projectId) { this.user = user; this.text = text; + this.projectId = projectId; } public FullSubmissionPostRequest() {} @@ -35,11 +37,20 @@ public class FullSubmissionPostRequest { this.text = text; } + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + @Override public String toString() { return "FullSubmissionPostRequest{" + "user='" + user + '\'' + ", text='" + text + '\'' + + ", projectId='" + projectId + '\'' + '}'; } diff --git a/gemeinsamforschen/src/main/webapp/assets/js/project-student.js b/gemeinsamforschen/src/main/webapp/assets/js/project-student.js index b8f739b4..3a487384 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/project-student.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/project-student.js @@ -18,6 +18,6 @@ $(document).ready(function(){ }); $('#btnUnstructuredUpload').click(function () { - location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl(); + location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); }) }); \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js index 8c770dfd..6ffb2c1a 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredAnnotation.js @@ -26,7 +26,7 @@ $(document).ready(function() { }, function () { // jump to upload page on error - location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl(); + location.href="unstructured-upload.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); }); // set click listener to save button @@ -246,6 +246,8 @@ function addSelectionDataToList(startCharacter, endCharacter, category) { function saveButtonHandler() { // show alert message if (window.confirm("Möchten Sie wirklich ihre Annotationen speichern?")) { + // declare array of promises + let promises = [] $('#annotations').find('.category-card').each(function () { let array = $(this).data('array'); if (array != null) { @@ -273,13 +275,21 @@ function saveButtonHandler() { submissionPartPostRequest.body.push(submissionPartBodyElement); } - // send the post request to the back-end - createSubmissionPart(submissionPartPostRequest, function (response) { + // send the post request to the back-end and save promise + promises.push(createSubmissionPart(submissionPartPostRequest, function (response) { console.log("send " + response.category + "'s post request to back-end") - }) + })); } }); + + $.when.apply($, promises).then(function () { + // redirect user to project page after saving + location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); + }); + + // redirect user to project page after saving + // location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); } } diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js index 047018ef..3e678ca6 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredRest.js @@ -48,11 +48,12 @@ function getFullSubmission(id, responseHandler, errorHandler) { * * @param submissionPartPostRequest The post request * @param responseHandler The response handler + * @returns A promise object */ function createSubmissionPart(submissionPartPostRequest, responseHandler) { var url = "../rest/submissions/part/"; var json = JSON.stringify(submissionPartPostRequest); - $.ajax({ + return $.ajax({ url: url, type: "POST", data: json, diff --git a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js index e9beb2f4..265a0a90 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/unstructuredUpload.js @@ -13,7 +13,8 @@ $(document).ready(function() { // build request var fullSubmissionPostRequest = { user: user, - text: text + text: text, + projectId: getProjectIdFromUrl() }; // save request in database @@ -22,7 +23,7 @@ $(document).ready(function() { $('#upload-textarea').val(""); // jump to next page - location.href="unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&submission=" + response.id; + location.href="unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl() + "&submission=" + response.id; }); } }); @@ -36,13 +37,15 @@ $(document).ready(function() { $('#upload-textarea').val(""); // jump to previous page - location.href="project-student.jsp?token="+getUserTokenFromUrl(); + window.history.back(); + //location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); } } // nothing to check else { // jump to previous page - location.href="project-student.jsp?token="+getUserTokenFromUrl(); + window.history.back(); + //location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl(); } }); @@ -63,6 +66,3 @@ $(document).ready(function() { }); }); - - - diff --git a/gemeinsamforschen/src/main/webapp/assets/js/utility.js b/gemeinsamforschen/src/main/webapp/assets/js/utility.js index 33be09a5..ad821640 100644 --- a/gemeinsamforschen/src/main/webapp/assets/js/utility.js +++ b/gemeinsamforschen/src/main/webapp/assets/js/utility.js @@ -13,3 +13,14 @@ function getUserTokenFromUrl() { } +function getProjectIdFromUrl() { + var parts = window.location.search.substr(1).split("&"); + var $_GET = {}; + for (var i = 0; i < parts.length; i++) { + var temp = parts[i].split("="); + $_GET[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]); + } + return $_GET['projectId']; + +} + diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql index 1a069f1b..978bd4b9 100644 --- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql +++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql @@ -126,6 +126,7 @@ CREATE TABLE if not exists `fullsubmissions` ( `timestamp` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `user` VARCHAR(120) NOT NULL, `text` MEDIUMTEXT NOT NULL, + `projectId` VARCHAR(120) NOT NULL, PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET=utf8; -- GitLab