//const SamlStrategy = require('passport-saml').Strategy import async from 'async' import methods from '../functions/methods' import gitlab from '../functions/gitlab' import helpers from '../functions/helpers' module.exports = function (app:any, lang:string) { // ======== APP ROUTES - PROJECT ==================== app.get('/', function (req:any, res:any) { res.render(lang+'/project/project-simplified') }) app.get('/mailinglists', function (req:any, res:any) { async.waterfall([ function(done:any) { methods.getAllMailinglists(function(mailinglistOverview:any, err:any) { if (!err) { done(err, mailinglistOverview) } }) }, // create JSON object of mailinglists for front-end function(mailinglistOverview:any) { var allMailingLists = [] // JSON object for (let i = 0; i < mailinglistOverview.length; i++) { // add data to JSON object allMailingLists.push({ id: mailinglistOverview[i].id, name: mailinglistOverview[i].name, src: mailinglistOverview[i].src, projectstatus: mailinglistOverview[i].projectstatus, project_title: mailinglistOverview[i].project_title, keywords: mailinglistOverview[i].keywords }); } res.render(lang+'/project/mailinglists', { //isUserAuthenticated: req.isAuthenticated(), //user: req.user, mailinglists: allMailingLists }); } ]) }) app.get('/projectoverview', function(req:any, res:any){ async.waterfall([ function(done:any) { methods.getProjectOverviewById(req.query.projectID, function(projectOverview:any, err:any) { if (!err) { done(err, projectOverview) } }) }, function(projectOverview:any, done:any){ methods.getProjectImagesById(req.query.projectID, function(projectImages:any, err:any) { if (!err) { done(err, projectImages, projectOverview) } }) }, // render projectOverview page function(projectImages:any, projectOverview:any) { //console.log(projectImages) let partnerWebsites = helpers.stringToArray(projectOverview[0].partner_website) let partnerNames = helpers.stringToArray(projectOverview[0].partner_name) let awardSites = helpers.stringToArray(projectOverview[0].award_website) let awardNames = helpers.stringToArray(projectOverview[0].award_name) let sponsorWebsites = helpers.stringToArray(projectOverview[0].sponsor_website) let sponsorImgs = helpers.stringToArray(projectOverview[0].sponsor_img) let sponsorNames = helpers.stringToArray(projectOverview[0].sponsor_name) res.render(lang+'/project/projectOverview', { //isUserAuthenticated: req.isAuthenticated(), //user: req.user, projectOV: projectOverview, projectImgs: projectImages, partnerWS: partnerWebsites, partnerN: partnerNames, awardWS: awardSites, awardN: awardNames, sponsorWS: sponsorWebsites, sponsorIMG: sponsorImgs, sponsorN: sponsorNames }); } ]) }) // Projektdaten app.get('/projektdaten', async function(req:any, res:any){ let projectArr = [] let isProject = true let firstId = 0 while (isProject == true) { let projects = await gitlab.getProjects(100, firstId) let projectData = projects.data[0] if (projectData.length == 0) { isProject = false } else { for(let i = 0; i < projectData.length; i++){ // M4_LAB logo for all projects that do not have logo if (projectData[i].avatar_url == null) { 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 -" } let project = { logo: projectData[i].avatar_url, name: projectData[i].name, weburl: projectData[i].web_url, desc: projectData[i].description, keywords: projectData[i].tag_list } projectArr.push(project) } firstId = projectData[projectData.length-1].id } } res.render(lang+'/project/projectList', { project: projectArr }) }) // Projektinformationen app.get('/projektinformationen', async function(req:any, res:any){ let pagesArr = [] let isProject = true let firstId = 0 while (isProject == true) { let projects = await gitlab.getProjects(100, firstId) let pagesData = projects.data[1] if (pagesData.length == 0) { isProject = false } else { for(let i = 0; i < pagesData.length; i++){ let status = await gitlab.getLatestPipelineStatus(pagesData[i].id) if (status) { // M4_LAB logo for all projects that do not have logo if (pagesData[i].avatar_url == null) { pagesData[i].avatar_url = "https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png" } // for all projects that have no description if (pagesData[i].description == "") { pagesData[i].description = "- no description -" } // customized website name if (pagesData[i].name == "Visualization") { //todo: update URL - user? group? pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/visualization" } else if (pagesData[i].name == "IN-Source") { //todo: update URL pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/INsource" } else if (pagesData[i].name == "3DS_Visualization_Cesium") { //todo: update URL pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/3ds_visualization_cesium" } else { //todo: update URL pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/"+pagesData[i].name } // remove 'website' from tag list let index = pagesData[i].tag_list.indexOf('website') if (index > -1) { pagesData[i].tag_list.splice(index, 1) } // fill in pagesArr let pages = { logo: pagesData[i].avatar_url, name: pagesData[i].name, weburl: pagesData[i].web_url, desc: pagesData[i].description, keywords: pagesData[i].tag_list } pagesArr.push(pages) } } firstId = pagesData[pagesData.length-1].id } } res.render(lang+'/project/pagesList', { pages: pagesArr }) }) };