From 43e446e871bacd0ae4ad244852979c7f1508950d Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Wed, 5 Sep 2018 11:27:22 +0400 Subject: [PATCH 1/9] get paper list --- src/main/resources/public/js/core.js | 249 +++++++++++++++++++++++ src/main/resources/public/js/papers.js | 17 ++ src/main/resources/templates/papers.html | 66 ++---- 3 files changed, 288 insertions(+), 44 deletions(-) create mode 100644 src/main/resources/public/js/core.js create mode 100644 src/main/resources/public/js/papers.js diff --git a/src/main/resources/public/js/core.js b/src/main/resources/public/js/core.js new file mode 100644 index 0000000..6755ab7 --- /dev/null +++ b/src/main/resources/public/js/core.js @@ -0,0 +1,249 @@ +// from config.js +/* global urlVersions */ + +/* exported MessageTypesEnum */ +var MessageTypesEnum = { + INFO: "info", + SUCCESS: "success", + WARNING: "warning", + DANGER: "danger" +}; +Object.freeze(MessageTypesEnum); + +function isEmpty(value) { + if (typeof value === "function") { + return false; + } + return (value == null || value.length === 0); +} + +/* exported showFeedbackMessage */ +function showFeedbackMessage(message, type) { + var drawMessage = function (message, type) { + var li = $( + "
  • " + + "" + message + "" + + "
  • " + ); + li.click(function () { + $(this).remove(); + }); + messageDiv.append(li); + }; + + var liveTimeMs = 15000; + var messageDiv = $("#messages"); + if (isEmpty(message)) { + messageDiv.html(""); + return; + } + drawMessage(message, (isEmpty(type) || isEmpty(MessageTypesEnum[type.toUpperCase()]) ? + MessageTypesEnum.INFO : type)); + setTimeout(function () { + messageDiv.find("li").first().remove(); + }, liveTimeMs); +} + +/* exported errorHandler */ +function errorHandler(response, callBack, errorCallBack) { + if (isEmpty(response)) { + showFeedbackMessage("Empty response", MessageTypesEnum.DANGER); + return; + } + if (!isEmpty(response.error)) { + // TODO: add l10n + // showFeedbackMessage(response.error.code + ": " + response.error.message, MessageTypesEnum.DANGER); + if (!isEmpty(errorCallBack)) { + errorCallBack(response.data); + } + throw response.error.code + ": " + response.error.message + + " / Details: " + response.error.data; + } + if (!isEmpty(callBack)) { + if (isLoginPageResponse(response)) { + window.location.href = "/"; + } else { + callBack(response.data); + } + } +} + +function isLoginPageResponse(response) { + return (typeof response) === 'string' && response.indexOf("") >= 0; +} + +/* exported getFromRest */ +function getFromRest(url, callBack, errorCallBack) { + $.ajax({ + url: url, + cache: false, + success: function (response) { + errorHandler(response, callBack, errorCallBack); + } + }); +} + +/* exported getFromRestWithVersion */ +function getFromRestWithVersion(url, callBack, errorCallBack) { + getFromRestWithVersionAndParams(url, "", callBack, errorCallBack); +} + +/* exported getFromRestWithVersionAndParams */ +function getFromRestWithVersionAndParams(url, params, callBack, errorCallBack) { + getCurrentVersion(function (version) { + $.ajax({ + url: url + "?versionId=" + version + params, + cache: false, + success: function (response) { + errorHandler(response, callBack, errorCallBack); + } + }); + }); +} + +/* exported postToRest */ +function postToRest(url, postData, callBack, completeCallback, errorCallBack) { + $.ajax({ + url: url, + cache: false, + dataType: "json", + data: postData, + contentType: "application/json; charset=utf-8", + processData: false, + method: "POST", + success: function (response) { + errorHandler(response, callBack, errorCallBack); + }, + complete: function () { + if (isEmpty(completeCallback)) { + return; + } + completeCallback(); + } + }); +} + +/* exported postToRestWithVersion */ +function postToRestWithVersion(url, postData, callBack, errorCallBack) { + postToRestWithVersionAndParams(url, postData, "", callBack, errorCallBack); +} + +/* exported postToRestWithVersionAndParams */ +function postToRestWithVersionAndParams(url, postData, params, callBack, errorCallBack) { + getCurrentVersion(function (version) { + $.ajax({ + url: url + "?versionId=" + version + params, + cache: false, + dataType: "json", + data: postData, + contentType: "application/json; charset=utf-8", + processData: false, + method: "POST", + success: function (response) { + errorHandler(response, callBack, errorCallBack); + } + }); + }); +} + +/* exported putToRestWithVersion */ +function putToRestWithVersion(url, putData, callBack, errorCallBack) { + putToRestWithVersionAndParams(url, putData, "", callBack, errorCallBack); +} + +/* exported putToRestWithVersionAndParams */ +function putToRestWithVersionAndParams(url, putData, params, callBack, errorCallBack) { + getCurrentVersion(function (version) { + $.ajax({ + url: url + "?versionId=" + version + params, + cache: false, + dataType: "json", + data: putData, + contentType: "application/json; charset=utf-8", + processData: false, + method: "PUT", + success: function (response) { + errorHandler(response, callBack, errorCallBack); + } + }); + }); +} + +/* exported deleteFromRest */ +function deleteFromRest(url, callBack, completeCallback, errorCallBack) { + $.ajax({ + url: url, + cache: false, + method: "DELETE", + success: function (response) { + errorHandler(response, callBack, errorCallBack); + }, + complete: function () { + if (isEmpty(completeCallback)) { + return; + } + completeCallback(); + } + }); +} + +/* exported getCurrentVersion */ +function getCurrentVersion(callBack, errorCallBack) { + var version = localStorage.getItem("currentVersion"); + + if (($("#select-versions")[0].options.length > 0) + && ($("#select-versions option[value='" + version + "']").length === 0)) { + localStorage.removeItem("currentVersion"); + version = ""; + } + + if (isEmpty(version)) { + getFromRest(urlVersions, + function (versions) { + if (isEmpty(versions) || versions.count === 0) { + return; + } + var currentVersion = versions.items[0]; + localStorage.setItem("currentVersion", currentVersion.id); + callBack(currentVersion.id); + }, + errorCallBack); + } else { + callBack(version); + } +} + +/* exported fillSelect */ +function fillSelect(selectElement, values) { + $(selectElement).html(""); + $.each(values, function (key, value) { + $(selectElement).append( + "" + ); + }); +} + +/* exported isUrlVarExists */ +function isUrlVarExists(key) { + var URL = window.location.href; + if (URL.indexOf("?" + key + "=") !== -1) { + return true; + } else if (URL.indexOf("&" + key + "=") !== -1) { + return true; + } else if (URL.indexOf("?" + key + "&") !== -1) { + return true; + } else if (URL.indexOf("&" + key + "&") !== -1) { + return true; + } else if (URL.endsWith("?" + key)) { + return true; + } else if (URL.endsWith("&" + key)) { + return true; + } + return false; +} + +/* exported getUrlVar */ +function getUrlVar(key) { + var result = new RegExp(key + "=([^&]*)", "i").exec(window.location.search); + return result && decodeURIComponent(result[1]) || ""; +} diff --git a/src/main/resources/public/js/papers.js b/src/main/resources/public/js/papers.js new file mode 100644 index 0000000..f428ff3 --- /dev/null +++ b/src/main/resources/public/js/papers.js @@ -0,0 +1,17 @@ +var urlPaperList = "https://localhost:8443/api/1.0/papers"; + +function showPapers(papersElement) { + getFromRest(urlPaperList, function (paperList) { + paperList.forEach(function (paper, index) { + $(papersElement).parent().append("
    " + + "
    " + + " \n" + + " " + + " " + + " " + + " " + paper.title + "" + + "
    "); + }); + }); +} \ No newline at end of file diff --git a/src/main/resources/templates/papers.html b/src/main/resources/templates/papers.html index 107c479..013fbc7 100644 --- a/src/main/resources/templates/papers.html +++ b/src/main/resources/templates/papers.html @@ -7,56 +7,34 @@
    -
    -
    + - - - + + + - - + + - - - + + + - - + + + + +
    From 5e4f137dbaf3a822ea8febed19ef508d02e6eef3 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Wed, 5 Sep 2018 13:31:51 +0400 Subject: [PATCH 2/9] add method for create paper --- src/main/resources/public/js/papers.js | 16 ++++++++++++++-- src/main/resources/templates/papers.html | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/resources/public/js/papers.js b/src/main/resources/public/js/papers.js index f428ff3..c7b721f 100644 --- a/src/main/resources/public/js/papers.js +++ b/src/main/resources/public/js/papers.js @@ -1,7 +1,7 @@ -var urlPaperList = "https://localhost:8443/api/1.0/papers"; +var urlPapers = "https://localhost:8443/api/1.0/papers"; function showPapers(papersElement) { - getFromRest(urlPaperList, function (paperList) { + getFromRest(urlPapers, function (paperList) { paperList.forEach(function (paper, index) { $(papersElement).parent().append("
    " + "
    " + @@ -14,4 +14,16 @@ function showPapers(papersElement) { "
    "); }); }); +} + +function addPaper(title, status, comment, locked) { + var paperData = JSON.stringify({ + "title": title, + "status": status, + "comment": comment, + "locked": locked + }); + postToRest(urlPapers, paperData, function(data) { + alert(data); + }); } \ No newline at end of file diff --git a/src/main/resources/templates/papers.html b/src/main/resources/templates/papers.html index 013fbc7..81b6952 100644 --- a/src/main/resources/templates/papers.html +++ b/src/main/resources/templates/papers.html @@ -34,6 +34,8 @@ From 294ed1838a46a5926b90106ba1dcdd7dd783be32 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Wed, 5 Sep 2018 13:45:20 +0400 Subject: [PATCH 3/9] fix paper colors --- src/main/resources/public/css/agency.css | 4 ++++ src/main/resources/public/js/papers.js | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/resources/public/css/agency.css b/src/main/resources/public/css/agency.css index 74b73a1..f6fefc7 100644 --- a/src/main/resources/public/css/agency.css +++ b/src/main/resources/public/css/agency.css @@ -15,6 +15,10 @@ a:hover { color: #fec503; } +.text-draft { + color: rgba(0, 0, 0, 0.48) !important; +} + .text-primary { color: #fed136 !important; } diff --git a/src/main/resources/public/js/papers.js b/src/main/resources/public/js/papers.js index c7b721f..a1a508c 100644 --- a/src/main/resources/public/js/papers.js +++ b/src/main/resources/public/js/papers.js @@ -6,7 +6,7 @@ function showPapers(papersElement) { $(papersElement).parent().append("
    " + "
    " + " \n" + - " " + + " " + " " + " " + " Date: Wed, 5 Sep 2018 14:50:49 +0400 Subject: [PATCH 4/9] sort papers --- src/main/java/ru/ulstu/paper/model/Paper.java | 2 +- .../ru/ulstu/paper/repository/PaperRepository.java | 2 ++ .../java/ru/ulstu/paper/service/PaperService.java | 14 +++++++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/ulstu/paper/model/Paper.java b/src/main/java/ru/ulstu/paper/model/Paper.java index ac65f50..ad6950a 100644 --- a/src/main/java/ru/ulstu/paper/model/Paper.java +++ b/src/main/java/ru/ulstu/paper/model/Paper.java @@ -12,7 +12,7 @@ import java.util.List; @Entity public class Paper extends BaseEntity { public enum PaperStatus { - DRAFT("Черновик"), ON_PREPARATION("На подготовке"), COMPLETED("Завершена"), ATTENTION("Обратить внимание"); + ATTENTION("Обратить внимание"), ON_PREPARATION("На подготовке"), DRAFT("Черновик"), COMPLETED("Завершена"); private String name; diff --git a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java index fb2f5c4..613bb6a 100644 --- a/src/main/java/ru/ulstu/paper/repository/PaperRepository.java +++ b/src/main/java/ru/ulstu/paper/repository/PaperRepository.java @@ -3,5 +3,7 @@ package ru.ulstu.paper.repository; import org.springframework.data.jpa.repository.JpaRepository; import ru.ulstu.paper.model.Paper; +import java.util.List; + public interface PaperRepository extends JpaRepository { } diff --git a/src/main/java/ru/ulstu/paper/service/PaperService.java b/src/main/java/ru/ulstu/paper/service/PaperService.java index 430e66c..563c86a 100644 --- a/src/main/java/ru/ulstu/paper/service/PaperService.java +++ b/src/main/java/ru/ulstu/paper/service/PaperService.java @@ -8,7 +8,9 @@ import ru.ulstu.paper.model.PaperDto; import ru.ulstu.paper.repository.PaperRepository; import java.io.IOException; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import static ru.ulstu.core.util.StreamApiUtils.convert; @@ -25,7 +27,17 @@ public class PaperService { } public List findAll() { - return convert(paperRepository.findAll(), PaperDto::new); + List allPapers = paperRepository.findAll(); + allPapers = allPapers.stream().sorted((paper1, paper2) -> { + int statusCompareResult = + Integer.valueOf(Arrays.asList(Paper.PaperStatus.values()).indexOf(paper1.getStatus())) + .compareTo(Integer.valueOf(Arrays.asList(Paper.PaperStatus.values()).indexOf(paper2.getStatus()))); + if (statusCompareResult != 0) { + return statusCompareResult; + } + return paper1.getTitle().compareTo(paper2.getTitle()); + }).collect(Collectors.toList()); + return convert(allPapers, PaperDto::new); } @Transactional From cbcc006b131ce5426145be2803571845bb3957ac Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Thu, 6 Sep 2018 22:50:34 +0400 Subject: [PATCH 5/9] deploy on vps --- .gitlab-ci.yml | 35 ++++++++++++++++++++++------------- deploy/gdccloud/deploy.sh | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 deploy/gdccloud/deploy.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 340d77f..8d76138 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: gradle:alpine +image: ubuntu:18.04 cache: key: "$CI_PROJECT_ID" @@ -8,10 +8,17 @@ cache: variables: GRADLE_OPTS: "-Dorg.gradle.daemon=false" -#before_script: +before_script: + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - apt-get install openjdk-8-jdk git -y + - eval $(ssh-agent -s) + - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + build: stage: build - script: gradle --build-cache assemble + script: ./gradlew assemble cache: key: "$CI_PROJECT_ID" policy: push @@ -19,13 +26,15 @@ build: - build - .gradle - -#test: -# stage: test -# script: gradle check -# cache: -# key: "$CI_PROJECT_ID" -# policy: pull -# paths: -# - build -# - .gradle \ No newline at end of file +deploy: + stage: deploy + script: + - sh deploy/gdccloud/deploy.sh + only: + - master + cache: + key: "$CI_PROJECT_ID" + policy: pull + paths: + - build + - .gradle \ No newline at end of file diff --git a/deploy/gdccloud/deploy.sh b/deploy/gdccloud/deploy.sh new file mode 100644 index 0000000..a76a5a4 --- /dev/null +++ b/deploy/gdccloud/deploy.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +USERSERVER="root@212.8.234.87" + +PROCESS_NAME="java -jar ng-tracker" + +PROCESS_RUNNING=`ssh -oStrictHostKeyChecking=no $USERSERVER "pgrep -f '$PROCESS_NAME' > /dev/null"` + +if $PROCESS_RUNNING +then + ssh $USERSERVER "pkill -f '$PROCESS_NAME'" +else + echo "not running" +fi + +./gradlew assemble + +ssh $USERSERVER "cd /tmp && rm -rf ng-tracker*.jar && echo `date` 'killed' >> log_ng" +scp build/libs/ng-tracker-0.1.0-SNAPSHOT.jar $USERSERVER:/tmp/ng-tracker-0.1.0-SNAPSHOT.jar +ssh $USERSERVER -f "cd /tmp/ && /opt/jdk1.8.0_144/bin/java -jar ng-tracker-0.1.0-SNAPSHOT.jar -Xms 512m -Xmx 1024m --server.port=8443 --server.http.port=8080 >> /home/user/logfile_ng" & +sleep 10 +echo "is deployed" \ No newline at end of file From 818c418565d78d4b9947da15af796f8897a82c0c Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Thu, 6 Sep 2018 23:01:39 +0400 Subject: [PATCH 6/9] add variable --- deploy/gdccloud/deploy.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/deploy/gdccloud/deploy.sh b/deploy/gdccloud/deploy.sh index a76a5a4..54b8571 100644 --- a/deploy/gdccloud/deploy.sh +++ b/deploy/gdccloud/deploy.sh @@ -2,7 +2,8 @@ USERSERVER="root@212.8.234.87" -PROCESS_NAME="java -jar ng-tracker" +ARTIFACT_NAME="ng-tracker" +PROCESS_NAME="java -jar $ARTIFACT_NAME" PROCESS_RUNNING=`ssh -oStrictHostKeyChecking=no $USERSERVER "pgrep -f '$PROCESS_NAME' > /dev/null"` @@ -15,8 +16,8 @@ fi ./gradlew assemble -ssh $USERSERVER "cd /tmp && rm -rf ng-tracker*.jar && echo `date` 'killed' >> log_ng" -scp build/libs/ng-tracker-0.1.0-SNAPSHOT.jar $USERSERVER:/tmp/ng-tracker-0.1.0-SNAPSHOT.jar -ssh $USERSERVER -f "cd /tmp/ && /opt/jdk1.8.0_144/bin/java -jar ng-tracker-0.1.0-SNAPSHOT.jar -Xms 512m -Xmx 1024m --server.port=8443 --server.http.port=8080 >> /home/user/logfile_ng" & +ssh $USERSERVER "cd /tmp && rm -rf $ARTIFACT_NAME*.jar && echo `date` 'killed' >> log_$ARTIFACT_NAME" +scp build/libs/$ARTIFACT_NAME-0.1.0-SNAPSHOT.jar $USERSERVER:/tmp/$ARTIFACT_NAME-0.1.0-SNAPSHOT.jar +ssh $USERSERVER -f "cd /tmp/ && /opt/jdk1.8.0_144/bin/java -jar $ARTIFACT_NAME-0.1.0-SNAPSHOT.jar -Xms 512m -Xmx 1024m --server.port=8443 --server.http.port=8080 >> /home/user/logfile_$ARTIFACT_NAME" & sleep 10 echo "is deployed" \ No newline at end of file From b93f7e3f8557581599885f204cff872a3dc4193e Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Thu, 6 Sep 2018 19:14:04 +0000 Subject: [PATCH 7/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e49ab34..f8dff44 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -landing +https://212.8.234.87:8443 demo --ng-tracker.dev-mode=true \ No newline at end of file From 1259b6ff2b3f2c55234b44d342f37c1dd9814fb4 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 8 Sep 2018 09:50:13 +0400 Subject: [PATCH 8/9] fix papers font --- src/main/resources/public/css/agency.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/public/css/agency.css b/src/main/resources/public/css/agency.css index f6fefc7..43f29c0 100644 --- a/src/main/resources/public/css/agency.css +++ b/src/main/resources/public/css/agency.css @@ -1,6 +1,6 @@ body { overflow-x: hidden; - font-family: 'Roboto Slab', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; } p { From 3688423602db2387bcd35a3a322efb79c1e9eeaf Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 8 Sep 2018 09:53:34 +0400 Subject: [PATCH 9/9] path to timeline --- src/main/resources/templates/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index b362a4c..f6e03e6 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -102,7 +102,7 @@