Florian Eisenmenger 2 yıl önce
ebeveyn
işleme
5491a118f9
7 değiştirilmiş dosya ile 858 ekleme ve 479 silme
  1. +3
    -0
      README.md
  2. +43
    -37
      httpdocs/public/assets/js/my-bim-score.js
  3. +76
    -0
      httpdocs/public/assets/scss/components/_basic.scss
  4. +611
    -366
      httpdocs/public/assets/scss/styles.css
  5. +1
    -7
      httpdocs/public/assets/scss/styles.css.map
  6. +110
    -61
      httpdocs/templates/pages/risk_analysis.html.twig
  7. +14
    -8
      httpdocs/templates/pages/start.html.twig

+ 3
- 0
README.md Dosyayı Görüntüle

@@ -23,3 +23,6 @@ password: $2y$12$ZxLx8P4p6PfsvYn5o7DXHuhjE.GL1m4YG4HKp5dEoLtPUwvv1eD42 = test

generate password:
in httpdocs: php pw_gen.php


SCSS Generierung: Über PHP Storm

+ 43
- 37
httpdocs/public/assets/js/my-bim-score.js Dosyayı Görüntüle

@@ -1,10 +1,15 @@
$(document).ready(function() {
addUser();
listing();
onChangeDinAsset();
onCalculate();
onWorksheet();
downloadWorksheet();
if ($("#form-risk").length) {
onCalculate();
onCreateWorksheet();
loadDinAssetData();
$("#asset").on("change", function(e) {
loadDinAssetData();
});
}
});

// Message Box for alerts
@@ -116,40 +121,38 @@ function listing() {
});
}

function onChangeDinAsset() {
$("#asset").on("change", function(e) {
$.ajax({
url: "/get-benchmark-data",
method: "get",
data: { assetId: $("#asset").val() },
success: function (data) {
$("#cycle").attr({
"min" : data.cycleMin,
"max" : data.cycleMax
}).val('');
function loadDinAssetData() {
$.ajax({
url: "/get-benchmark-data",
method: "get",
data: { assetId: $("#asset").val() },
success: function (data) {
$("#cycle").attr({
"min" : data.cycleMin,
"max" : data.cycleMax
}).val('');

$('#benchmark')
.find('option')
.remove()
.end()
;
$('#benchmark')
.find('option')
.remove()
.end()
;

for (let i in data.benchmarkValues) {
noBenchmarkData = true;
$('#benchmark').append('<option value="' + i + '">' + data.benchmarkValues[i] + '</option>');
}
for (let i in data.benchmarkValues) {
noBenchmarkData = true;
$('#benchmark').append('<option value="' + i + '">' + data.benchmarkValues[i] + '</option>');
}

if (Object.keys(data.benchmarkValues).length < 1) {
$('#no-benchmark-data').show();
} else {
$('#no-benchmark-data').hide();
}
},
error: function (xhr, msg, three) {
messageBox(false, "Fehler bei der Anfrage.");
},
dataType: "json"
});
if (Object.keys(data.benchmarkValues).length < 1) {
$('#no-benchmark-data').show();
} else {
$('#no-benchmark-data').hide();
}
},
error: function (xhr, msg, three) {
messageBox(false, "Fehler bei der Anfrage.");
},
dataType: "json"
});
}

@@ -165,8 +168,11 @@ function onCalculate() {
console.log(data);
$('#resInspection').text(data['recCycleInspection']);
$('#resMaintenance').text(data['recCycleMaintenance']);
$('#resPercentage').text(data['costDiffCurRecPercentage'] + " %");
$('#resEuro').text(data['costDiffCurCycleRecCycle'] + " €");
$('#resPercentage').text((data['costDiffCurRecPercentage'] * 100) + " %");
$('#resEuro').text(data['costDiffCurCycleRecCycle'].toString().replace(/\./g, ",") + " €");
$('html, body').animate({
scrollTop: $('#result-box').offset().top - 200
}, 500);
},
error: function (xhr, msg, three) {
messageBox(false, "Fehler bei der Anfrage.");
@@ -177,7 +183,7 @@ function onCalculate() {
});
}

function onWorksheet() {
function onCreateWorksheet() {
$("#worksheet").on("click", function (e) {
e.preventDefault();
if (checkInputs()) {


+ 76
- 0
httpdocs/public/assets/scss/components/_basic.scss Dosyayı Görüntüle

@@ -397,3 +397,79 @@ textarea:-ms-input-placeholder {
padding: 1.5rem;
}
}

/* New MPP */

.row-box {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.col-box {
width: 60%;
&:nth-child(2) {
width: 30%;
}
.col-box {
width: 48%;
}
}
}

#main {
.form--catalogue {
padding-top: 20px;
h2 {
padding-bottom: 10px;
}
}
}

.form-fields {
padding: 0 0 30px 0;
label {
display: block;
font-size: 16px;
}
input, select {
display: block;
width: 100%;
max-width: 350px;
background: #fff;
border: 1px solid #000;
padding: 10px 10px;
}
}

.result-box {
background: rgba(118,127,134,.3);
padding: 30px 20px;
dl {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 0 0 20px 0;
dt, dd {
padding: 0 0 10px 0;
margin: 0 0 10px 0;
border-bottom: 1px solid #000;
&:last-of-type {
border-bottom: none;
}
}
dt {
flex-basis: 80%;
font-weight: normal;
}
dd {
flex-basis: 20%;
font-weight: bold;
text-align: right;
}
}
h3 {
text-align: left;
}
.btn {
margin: 0 auto;
}
}

+ 611
- 366
httpdocs/public/assets/scss/styles.css
Dosya farkı çok büyük olduğundan ihmal edildi
Dosyayı Görüntüle


+ 1
- 7
httpdocs/public/assets/scss/styles.css.map
Dosya farkı çok büyük olduğundan ihmal edildi
Dosyayı Görüntüle


+ 110
- 61
httpdocs/templates/pages/risk_analysis.html.twig Dosyayı Görüntüle

@@ -6,66 +6,115 @@
<h1>MPP-Tool</h1>
<p id="instruction">Bitte füllen sie alle Felder aus, um eine Risikoanalyse zu erstellen.</p>
<form method="post" id="form-risk" class="form form--catalogue">
<label for="asset">Bitte wählen sie eine Anlage.</label>
<select name="asset" id="asset">
{% for asset in dinAssets %}
<option value="{{ asset.id }}">{{ asset.dinNumber }} - {{ asset.name }}</option>
{% endfor %}
</select>
<div id="no-benchmark-data" class="denk-dir-was-aus-flo" style="color: #6D0507; display: {% if benchmarkValues|length < 1 %} block {% else %} none {% endif %}" >Für sind Anlage leider keine Benchmark-Daten vorhanden!</div>
<h2>Risikoanalyse</h2>
<label for="failure">Wie hoch ist die Ausfallwahrscheinlichkeit?:</label>
<select name="failure" id="failure">
{% for key, failure in riskFailure %}
<option value="{{ key }}">{{ failure[0] }}</option>
{% endfor %}
</select>
<label for="costs">Wie hoch ist der Schaden bei Ausfall?</label>
<select name="costs" id="costs">
{% for key, costs in riskCosts %}
<option value="{{ key }}">{{ costs[0] }}</option>
{% endfor %}
</select>
<h2>Optimierungsckeck</h2>
<label for="maintenance">Wird durch die Wartung der Abnutzungsvorrat positiv beeinflusst?</label>
<select name="maintenance" id="maintenance">
<option value="0">Nein</option>
<option value="1">Ja</option>
</select>
<label for="inspection">Kann durch eine Inspektion der Zustand der Anlage erkannt werden?</label>
<select name="inspection" id="inspection">
<option value="0">Nein</option>
<option value="1">Ja</option>
</select>
<label for="check">Genügt eine einfache Sichtkontrolle im Rahmen des regelmäßigen Rundgangs?</label>
<select name="check" id="check">
<option value="0">Nein</option>
<option value="1">Ja</option>
</select>
<label for="cycle">Aktueller Zyklus (in Monaten)</label>
{% if initialDinAsset is not null %}
<input name="cycle" type="number" id="cycle" value="" min="{{ initialDinAsset.cycleMonthsMin }}" max ="{{ initialDinAsset.cycleMonthsMax }}">
{% else %}
<input name="cycle" type="number" id="cycle" disabled>
{% endif %}

<label for="benchmark">Bandbreite Anlage</label>
<select name="benchmark" id="benchmark">
{% for key, benchmarkValue in benchmarkValues %}
<option value="{{ key }}">{{ benchmarkValue }}</option>
{% endfor %}
</select>
<span class="btn" id="calculate">Berechnen</span>
<dl>
<dt>Inspektion (empfohlener Zyklus in Monaten)</dt>
<dd id="resInspection"></dd>
<dt>Wartung (empfohlener Zyklus in Monaten)</dt>
<dd id="resMaintenance"></dd>
<dt>Kostenersparnis in Prozent</dt>
<dd id="resPercentage"></dd>
<dt>Kostenersparnis in Euro</dt>
<dd id="resEuro"></dd>
</dl>
<span class="btn" id="worksheet">Arbeitskarte erstellen</span>
<div class="row-box">
<div class="col-box">
<div class="form-fields">
<label for="asset">Bitte wählen sie eine Anlage.</label>
<select name="asset" id="asset">
{% for asset in dinAssets %}
<option value="{{ asset.id }}">{{ asset.dinNumber }} - {{ asset.name }}</option>
{% endfor %}
</select>
<div id="no-benchmark-data" class="denk-dir-was-aus-flo" style="color: #6D0507; display: {% if benchmarkValues|length < 1 %} block {% else %} none {% endif %}" >Für sind Anlage leider keine Benchmark-Daten vorhanden!</div>
</div>
<div class="benchmark-available">
<h2>Risikoanalyse</h2>
<div class="row-box">
<div class="col-box">
<div class="form-fields">
<label for="failure">Wie hoch ist die Ausfallwahrscheinlichkeit?</label>
<select name="failure" id="failure">
{% for key, failure in riskFailure %}
<option value="{{ key }}">{{ failure[0] }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="col-box">
<div class="form-fields">
<label for="costs">Wie hoch ist der Schaden bei Ausfall?</label>
<select name="costs" id="costs">
{% for key, costs in riskCosts %}
<option value="{{ key }}">{{ costs[0] }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
<h2>Optimierungsckeck</h2>
<div class="row-box">
<div class="col-box">
<div class="form-fields">
<label for="maintenance">Wird durch die Wartung der Abnutzungsvorrat positiv beeinflusst?</label>
<select name="maintenance" id="maintenance">
<option value="0">Nein</option>
<option value="1">Ja</option>
</select>
</div>
</div>
<div class="col-box">
<div class="form-fields">
<label for="inspection">Kann durch eine Inspektion der Zustand der Anlage erkannt werden?</label>
<select name="inspection" id="inspection">
<option value="0">Nein</option>
<option value="1">Ja</option>
</select>
</div>
</div>
<div class="col-box">
<div class="form-fields">
<label for="check">Genügt eine einfache Sichtkontrolle im Rahmen des regelmäßigen Rundgangs?</label>
<select name="check" id="check">
<option value="0">Nein</option>
<option value="1">Ja</option>
</select>
</div>
</div>
</div>
<h2>Weitere Angaben</h2>
<div class="row-box">
<div class="col-box">
<div class="form-fields">
<label for="cycle">Aktueller Zyklus (in Monaten)</label>
{% if initialDinAsset is not null %}
<input name="cycle" type="number" id="cycle" value="" min="{{ initialDinAsset.cycleMonthsMin }}" max ="{{ initialDinAsset.cycleMonthsMax }}">
{% else %}
<input name="cycle" type="number" id="cycle" disabled>
{% endif %}
</div>
</div>
<div class="col-box">
<div class="form-fields">
<label for="benchmark">Bandbreite Anlage</label>
<select name="benchmark" id="benchmark">
{% for key, benchmarkValue in benchmarkValues %}
<option value="{{ key }}">{{ benchmarkValue }}</option>
{% endfor %}
</select>
</div>
</div>
</div>
<span class="btn" id="calculate">Berechnen</span>
</div>
</div>
<div class="col-box">
<div class="result-box" id="result-box">
<h3>Ergebnis</h3>
<dl>
<dt>Inspektion<br />
(empfohlener Zyklus in Monaten)</dt>
<dd id="resInspection"></dd>
<dt>Wartung<br />
(empfohlener Zyklus in Monaten)</dt>
<dd id="resMaintenance"></dd>
<dt>Kostenersparnis in Prozent</dt>
<dd id="resPercentage"></dd>
<dt>Kostenersparnis in Euro</dt>
<dd id="resEuro"></dd>
</dl>
<span class="btn" id="worksheet">Arbeitskarte erstellen</span>
</div>
</div>
</div>
</form>
{% endblock %}

+ 14
- 8
httpdocs/templates/pages/start.html.twig Dosyayı Görüntüle

@@ -4,15 +4,21 @@

{% block body %}
<h1>Übersicht</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore.</p>
{% if numWorksheetsLeft <= 0 %}
<p>Sie haben die maximale Anzahl an Durchgängen erreicht. Bitte wenden sie sich an uns, wenn sie weitere Analysen benötigen.</p>
{% else %}
<div class="container">
<a href="{{ path('risk_analysis') }}" class="btn">Neue Arbeitskarte erstellen</a>
<div class="row-box">
<div class="col-box">
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore.</p>
</div>
<div>(noch {{ numWorksheetsLeft }} Durchgänge möglich)</div>
{% endif %}
<div class="col-box">
{% if numWorksheetsLeft <= 0 %}
<p>Sie haben die maximale Anzahl an Durchgängen erreicht. Bitte wenden sie sich an uns, wenn sie weitere Analysen benötigen.</p>
{% else %}
<div class="container">
<a href="{{ path('risk_analysis') }}" class="btn">Neue Arbeitskarte erstellen</a>
</div>
<div>(noch {{ numWorksheetsLeft }} Durchgänge möglich)</div>
{% endif %}
</div>
</div>

<h2>Ihre bisher abgeschlossenen Arbeitskarten:</h2>
<ul>


Yükleniyor…
İptal
Kaydet