projectList.pug 6.92 KB
Newer Older
Rosanny Sihombing's avatar
Rosanny Sihombing committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
doctype html
html(lang="de")
  head
    title= "Projektdaten"
    meta(charset="UTF-8")
    meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
    link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.css")
    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;
            height: 12rem;
            overflow: hidden;
        }
        .card-title-bottom-left {
            position: absolute;
            bottom: 0px;
            width: 100%;
            color: black;
            font-weight: bold;
            background: rgb(255, 255, 255, 0.9);
            text-align: left;
            padding: 5px
        }
        .card-img-top {
            height: 100%;
            object-fit: contain;
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            margin-left: 0;
            margin-right: 0;
        }
        .card-img-bg {
            background-size: cover;
            filter: blur(30px);
            width: 100%;
            height: 100%;
        }
        .clamp-lines {
            display: -webkit-box;
            -webkit-line-clamp: 6;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }
  body
    div(class="container")
        div(class="row")
            div(class="col-md-12 margin_bottom_40")
                img(class="mx-auto" src="https://transfer.hft-stuttgart.de/img/ProjektcodeDaten.png" width="100%")
    div(class="container")
        p Hier finden Sie den direkten Zugang zu den Inhalten der bei uns gehosteten Projekte.
        p Weitere Informationen zu den bei uns gehosteten Projekten finden Sie <a href="/projektinformationen">hier</a>.
        p Wenn Sie zu einem Projekt beitragen möchten, oder eines erstellen möchten, finden Sie weitere Informationen <a href="/help/gitlab.html">hier</a>.

        div(class="container")
            p#projectCounter #{project.length} Projektdaten werden angezeigt
            div(class="pt-4 pb-4 form-row")
                div(class="form-group col-md-10")
                    input(id="searchInput", class="form-control form-control-lg", type="text", placeholder="Suchen Sie hier nach Themen und Projekten", onkeyup="searchFunction()")
                div(class="form-group col-md-2")
                    select#sortingSelect(class="form-control form-control-lg")
                        option(value="" disabled) Sort by
                        option(value="name") &nbsp; Name
                        option(value="created_at") &nbsp; Last created
                        option(value="updated_at") &nbsp; Last updated
            | <div class="row">
            for item in project
                div(class="card-deck py-4 col-sm")
                    div(class="card card-portrait" style="transform: rotate(0);")
                        div(class="title-container")
                            div(class="card-img-bg" style=`background-image: url(${item.logo});`)
                            img(class="card-img-top", src=item.logo)
                            h5(class="card-title-bottom-left") #{item.name}
                        div(class="card-body-fixed-height")
                            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 clamp-lines") #{item.desc}
                                a(href=item.weburl, class="no_text_decoration stretched-link", target="_blank")
            | </div>

    button(onclick="topFunction()" id="topBtn")
        i(class="fa fa-chevron-up")

    // jQuery
    script(src="https://code.jquery.com/jquery-3.3.1.min.js")
    script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
    // Bootstrap
    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
    // Header
    script(src="/js/headfoot.js")
    script(src="/js/mobile.js")
    // General functions
    script(src="/js/generalFunction.js")
    script.
        function searchFunction() {
            var input = document.getElementById("searchInput")
            var filter = input.value.toUpperCase()
            
            var cardsCol = document.getElementsByClassName("col-sm")
            var cardTitle, cardBadges, cardText, titleValue, badgesValue, textValue, allValues;
            
            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");
                cardBadges = [...cardsCol[i].getElementsByClassName("badge-pill")];
                cardText = cardsCol[i].getElementsByClassName("card-text");
                
                titleValue = cardTitle[0].textContent || cardTitle[0].innerText;
                badgesValue = cardBadges.map(b => b.textContent).join(" ");
                //bodyValue = cardBody[0].textContent || cardBody[0].innerText;
                textValue = cardText[0].textContent || cardText[0].innerText;
                allValues = [titleValue, badgesValue, textValue].map(v => v.toUpperCase()).join(" ");
                if (allValues.indexOf(filter)!= -1) {
                    cardsCol[i].style.display = "block"
                    counterBlock++
                } else {
                    cardsCol[i].style.display = "none"
                }
            }

            document.getElementById("projectCounter").innerHTML = counterBlock+" Projektdaten werden angezeigt"
        }

        $("#sortingSelect").change(function() {
            window.location.replace('/projektdaten?sort='+$("#sortingSelect").val())
        });
        function setSortSelect() {
            let sortKeyword = getQueryStringParams('sort', window.location.href)
            if (sortKeyword == "created_at") {
                $("#sortingSelect").val("created_at")
            } else if(sortKeyword == "updated_at") {
                $("#sortingSelect").val("updated_at")
            } else {
                $("#sortingSelect").val("name")
            }
        }
        setSortSelect()