Commit 01cdb1f6 authored by Rosanny Sihombing's avatar Rosanny Sihombing
Browse files

Merge branch 'MLAB-300' into 'testing'

Mlab 300

See merge request !16
parents cb8fc6fa df85a828
Pipeline #981 passed with stage
in 10 seconds
This diff is collapsed.
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"test": "" "test": ""
}, },
"dependencies": { "dependencies": {
"async": "^3.2.0",
"axios": "^0.20.0", "axios": "^0.20.0",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"compression": "^1.7.4", "compression": "^1.7.4",
...@@ -32,9 +33,8 @@ ...@@ -32,9 +33,8 @@
"helmet": "^3.23.3", "helmet": "^3.23.3",
"morgan": "^1.10.0", "morgan": "^1.10.0",
"mysql": "^2.18.1", "mysql": "^2.18.1",
"nodemon": "1.9.2",
"passport": "0.3.2", "passport": "0.3.2",
"passport-saml": "0.15.0", "passport-saml": "^1.3.4",
"pug": "^2.0.4" "pug": "^2.0.4"
}, },
"engines": { "engines": {
......
...@@ -364,10 +364,9 @@ module.exports = function (app) { ...@@ -364,10 +364,9 @@ module.exports = function (app) {
app.get('/projectlist', async function(req, res){ app.get('/projectlist', async function(req, res){
let projectArr = [] let projectArr = []
let websiteArr = [] let pagesArr = []
let isProject = true let isProject = true
let firstId = 0 let firstId = 0
let webname = "";
while (isProject == true) { while (isProject == true) {
let projects = await getProjectsFromGitlab(10, firstId) let projects = await getProjectsFromGitlab(10, firstId)
...@@ -382,42 +381,53 @@ module.exports = function (app) { ...@@ -382,42 +381,53 @@ module.exports = function (app) {
if (projectData[i].name == "template_gitlab_page") { if (projectData[i].name == "template_gitlab_page") {
continue continue
} }
// M4_LAB logo for all projects that do not have logo // M4_LAB logo for all projects that do not have logo
if (projectData[i].avatar_url == null) { if (projectData[i].avatar_url == null) {
projectData[i].avatar_url = "https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png" projectData[i].avatar_url = "https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png"
} }
// for all projects that have no description
if (projectData[i].description == "") {
projectData[i].description = "- no description -"
}
// websites // websites
if (projectData[i].tag_list.includes('website')) { if (projectData[i].tag_list.includes('website')) {
// customize website name // customize website name
if (projectData[i].name == "Visualization") { if (projectData[i].name == "Visualization") {
webname = "https://transfer.hft-stuttgart.de/pages/visualization" projectData[i].web_url = "https://transfer.hft-stuttgart.de/pages/visualization"
} }
else if (projectData[i].name == "IN-Source") { else if (projectData[i].name == "IN-Source") {
webname = "https://transfer.hft-stuttgart.de/pages/INsource" projectData[i].web_url = "https://transfer.hft-stuttgart.de/pages/INsource"
} }
else if (projectData[i].name == "3DS_Visualization_Cesium") { else if (projectData[i].name == "3DS_Visualization_Cesium") {
webname = "https://transfer.hft-stuttgart.de/pages/3ds_visualization_cesium" projectData[i].web_url = "https://transfer.hft-stuttgart.de/pages/3ds_visualization_cesium"
} }
else { else {
webname = "https://transfer.hft-stuttgart.de/pages/"+projectData[i].name projectData[i].web_url = "https://transfer.hft-stuttgart.de/pages/"+projectData[i].name
}
// remove 'website' from tag list
const index = projectData[i].tag_list.indexOf('website');
if (index > -1) {
projectData[i].tag_list.splice(index, 1);
} }
let website = {
// fill in pagesArr
let pages = {
logo: projectData[i].avatar_url, logo: projectData[i].avatar_url,
name: projectData[i].name, name: projectData[i].name,
weburl: webname, weburl: projectData[i].web_url,
desc: projectData[i].description desc: projectData[i].description,
keywords: projectData[i].tag_list
} }
websiteArr.push(website) pagesArr.push(pages)
} }
// project repo
else { else {
let project = { let project = {
logo: projectData[i].avatar_url, logo: projectData[i].avatar_url,
name: projectData[i].name, name: projectData[i].name,
weburl: projectData[i].web_url, weburl: projectData[i].web_url,
desc: projectData[i].description desc: projectData[i].description,
keywords: projectData[i].tag_list
} }
projectArr.push(project) projectArr.push(project)
} }
...@@ -429,7 +439,7 @@ module.exports = function (app) { ...@@ -429,7 +439,7 @@ module.exports = function (app) {
res.render(lang+'/project/projectList', { res.render(lang+'/project/projectList', {
project: projectArr, project: projectArr,
website: websiteArr pages: pagesArr
}) })
}) })
......
...@@ -7,30 +7,84 @@ html(lang="de") ...@@ -7,30 +7,84 @@ html(lang="de")
link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.min.css") link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.min.css")
link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/m4lab.css") link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/m4lab.css")
link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous") link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
style.
.title-container {
position: relative;
color: white;
}
.card-title-bottom-left {
position: absolute;
bottom: 0px;
width: 100%;
color: black;
font-weight: bold;
background: rgb(255, 255, 255, 0.5);
text-align: left;
padding: 5px
}
.card-img-top {
height: 15vw;
object-fit: cover;
}
body body
div(class="container") div(class="container")
div(class="pt-4 pb-4") div(class="pt-4 pb-4 form-row")
input(id="searchInput", class="form-control form-control-dark w-100", type="text", placeholder="Suchen Sie hier nach Themen und Projekten", onkeyup="searchFunction()") div(class="form-group col-md-10")
h3(class="mb-3 font-weight-bold") Projekte input(id="searchInput", class="form-control", type="text", placeholder="Suchen Sie hier nach Themen und Projekten", onkeyup="searchFunction()")
table(class="table table-striped") div(class="form-group col-md-2")
tbody select(class="form-control")
for item in project option uncategorized
tr h3(class="mb-3 font-weight-bold") Projektinformationen
td p(class="font-italic") Hier finden Sie Informationen zu den bei uns gehosteten Projekten, wie z.B. Projektbeschreibungen, Projektwebseiten, Visualisierungen, Demonstrationen.
img(src=item.logo, width="40", height="40")
td <a href="#{item.weburl}" target="_blank">#{item.name}</a>
td #{item.desc}
if website.length > 0 div(class="container")
h3(class="mb-3 font-weight-bold") Websites //p#pagesCounter #{pages.length} Projektinformationen werden angezeigt
table(class="table table-striped") | <div class="row">
for item in website for item in pages
tr div(class="py-4 col-sm")
td div(class="card", style="width: 18rem;")
img(src=item.logo, width="40", height="40") div(class="title-container")
td <a href="#{item.weburl}" target="_blank">#{item.name}</a> h5(class="card-title-bottom-left") #{item.name}
td #{item.desc} img(class="card-img-top", src=item.logo)
div(class="card-body")
div(class="row")
each key in item.keywords
h6
span(class="badge badge-pill badge-primary px-2") #{key}
| &nbsp;
div(class="row")
div(class="col-9")
p(class="card-text") #{item.desc}
div(class="col-3")
svg(class="bi bi-chevron-right", width="32", height="32", viewBox="0 0 20 20", fill="currentColor", xmlns="http://www.w3.org/2000/svg")
| <a xlink:href="#{item.weburl}" target="_blank"><path fill-rule="evenodd" d="M6.646 3.646a.5.5 0 01.708 0l6 6a.5.5 0 010 .708l-6 6a.5.5 0 01-.708-.708L12.293 10 6.646 4.354a.5.5 0 010-.708z"></path></a>
| </div>
h3(class="mb-3 font-weight-bold") Projektdaten
p(class="font-italic") Hier finden Sie den direkten Zugang zu den Inalten der bei uns gehosteten Projekte.
div(class="container")
//p#projectCounter #{project.length} Projektdaten werden angezeigt
| <div class="row">
for item in project
div(class="py-4 col-sm")
div(class="card", style="width: 18rem;")
div(class="title-container")
h5(class="card-title-bottom-left") #{item.name}
img(class="card-img-top", src=item.logo)
div(class="card-body")
div(class="row")
each key in item.keywords
h6
span(class="badge badge-pill badge-primary px-2") #{key}
| &nbsp;
div(class="row")
div(class="col-9")
p(class="card-text") #{item.desc}
div(class="col-3")
svg(class="bi bi-chevron-right", width="32", height="32", viewBox="0 0 20 20", fill="currentColor", xmlns="http://www.w3.org/2000/svg")
| <a xlink:href="#{item.weburl}" target="_blank"><path fill-rule="evenodd" d="M6.646 3.646a.5.5 0 01.708 0l6 6a.5.5 0 010 .708l-6 6a.5.5 0 01-.708-.708L12.293 10 6.646 4.354a.5.5 0 010-.708z"></path></a>
| </div>
// jQuery // jQuery
script(src="https://code.jquery.com/jquery-3.3.1.min.js") script(src="https://code.jquery.com/jquery-3.3.1.min.js")
...@@ -41,29 +95,31 @@ html(lang="de") ...@@ -41,29 +95,31 @@ html(lang="de")
script(src="https://transfer.hft-stuttgart.de/js/headfoot.js") script(src="https://transfer.hft-stuttgart.de/js/headfoot.js")
script. script.
function searchFunction() { function searchFunction() {
var input, filter, rows, col, txtValue; var input = document.getElementById("searchInput")
var isFound = true; var filter = input.value.toUpperCase()
input = document.getElementById("searchInput");
filter = input.value.toUpperCase(); var cardsCol = document.getElementsByClassName("col-sm")
var cardTitle, cardText, titleValue, textValue
var i
var counterBlock = 0
for (i = 0; i < cardsCol.length; i++) {
cardTitle = cardsCol[i].getElementsByClassName("card-title-bottom-left");
cardBody = cardsCol[i].getElementsByClassName("card-body");
cardText = cardsCol[i].getElementsByClassName("card-text");
titleValue = cardTitle[0].textContent || cardTitle[0].innerText;
bodyValue = cardBody[0].textContent || cardBody[0].innerText;
textValue = cardText[0].textContent || cardText[0].innerText;
rows = document.getElementsByTagName("tr"); if (titleValue.toUpperCase().indexOf(filter) > -1 || bodyValue.toUpperCase().indexOf(filter) > -1 || textValue.toUpperCase().indexOf(filter) > -1) {
for (i = 0; i < rows.length; i++) { cardsCol[i].style.display = "block"
cols = rows[i].getElementsByTagName("td"); counterBlock++
// check all cos
for (j = 0; j < cols.length; j++) {
txtValue = cols[j].textContent || cols[j].innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
isFound = true;
break;
} else { } else {
isFound = false; cardsCol[i].style.display = "none"
}
}
if (isFound) {
rows[i].style.display = "block";
}
else {
rows[i].style.display = "none";
} }
} }
//document.getElementById("pagesCounter").innerHTML = counterBlock+" Projekte werden angezeigt"
//document.getElementById("projectCounter").innerHTML = counterBlock+" Projekte werden angezeigt"
} }
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment