Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 

473 righe
22 KiB

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>MPPTool</title>
  6. <style>
  7. body, table, td, th {text-align: left;font-size: 14px;line-height: 20px;font-weight: normal;font-style:normal;font-family: Arial, Verdana, sans-serif;}
  8. h1, h2, h3, h4, h5, h6, p, table {padding: 0;margin: 0;}
  9. td, th {padding: 0;vertical-align: top;font-weight: normal;}
  10. h1 {font-size: 24px;line-height: 32px;}
  11. h2 {font-size: 20px;line-height: 28px;}
  12. .right {text-align: right;}
  13. .userinfo {font-size: 12px;line-height: 17px;}
  14. .result {font-weight: bold;}
  15. .line {display: block;background: #000000;height: 1px;width: 100%;}
  16. .minitable,
  17. .minitable th,
  18. .minitable td {font-size: 12px;line-height: 17px;}
  19. .minitable td {page-break-inside: avoid;padding-top: 2px;padding-bottom: 2px;}
  20. .mini-all {background: #dddddd;}
  21. .minitable span {display: block;}
  22. .circle-2 {margin: 0 auto;width: 22px;height: 22px;overflow: hidden;position: relative;}
  23. .circle-2 .d1 {width: 20px;position: absolute;left: 1px;bottom: 0;background: #bbbbbb;}
  24. .mini-all .circle-2 .d1 {background: #ffffff;}
  25. .circle-2.green .d1,
  26. .mini-all .circle-2.green .d1 {background: #33cc00;}
  27. .circle-2.green-2 .d1,
  28. .mini-all .circle-2.green-2 .d1 {background: #669900;}
  29. .circle-2.yellow .d1,
  30. .mini-all .circle-2.yellow .d1 {background: #ffcc33;}
  31. .circle-2.red .d1,
  32. .mini-all .circle-2.red .d1 {background: #cc0000;}
  33. .circle-2 .d2 {position: absolute;left: 0;top: 0;width: 20px;height: 20px;border-radius: 50%;border: 1px solid #bbbbbb;}
  34. .mini-all .circle-2 .d2 {border-color: #ffffff;}
  35. .circle-2.green .d2,
  36. .mini-all .circle-2.green .d2 {border-color: #33cc00;}
  37. .circle-2.green-2 .d2,
  38. .mini-all .circle-2.green-2 .d2 {border-color: #669900;}
  39. .circle-2.yellow .d2,
  40. .mini-all .circle-2.yellow .d2 {border-color: #ffcc33;}
  41. .circle-2.red .d2,
  42. .mini-all .circle-2.red .d2 {border-color: #cc0000;}
  43. .circle-2 .d3 {position: absolute;left: -10px;top: -10px;width: 22px;height: 22px;border-radius: 50%;border: 10px solid #fff;}
  44. .mini-all .circle-2 .d3 {border-color: #dddddd;}
  45. </style>
  46. </head>
  47. <body>
  48. <table width="100%">
  49. <tr>
  50. <td colspan="2"><br /></td>
  51. </tr>
  52. <tr>
  53. <td width="70%"><h1>MPPTool<br />
  54. Ergebnis je Handlungsfeld und gesamt</h1></td>
  55. <td width="30%" style="text-align: right;"><img src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/logos/real-fm.png" alt="Canzler GmbH" style="display: block;width: auto;height: 40px;" /></td>
  56. </tr>
  57. <tr>
  58. <td colspan="2"><br /></td>
  59. </tr>
  60. </table>
  61. <table width="100%">
  62. <tr>
  63. <td></td>
  64. <td colspan="2">Dieses Dokument enthält die Bewertung des BIM-Reifegrades Ihrer FM- bzw. CREM-Organisation und erste Handlungsempfehlungen auf Basis des von Ihnen online ausgefüllten Fragenkataloges sowie eine Zusammenfassung der von Ihnen gegebenen Antworten.<br /><br />
  65. Mit dem Ergebnis sollen ggf. fehlende Voraussetzungen identifiziert und damit notwendige Maßnahmen zur Erreichung eines höheren BIM-Reifegrades abgeleitet werden können.<br /><br />
  66. In Anlehnung an die Handlungsfelder der VDI Agenda BIM war der Fragenkatalog in „Rahmenbedingungen“, „Prozesse“, „Menschen“ und „Technologien“ unterteilt.<br />
  67. Die Abstufung bei den Antworten reichte dabei von "nicht erfüllt" bis zu "umfassend erfüllt", soweit die Fragestellung derzeit überhaupt relevant für die zu bewertende Organisation ist.<br /></td>
  68. </tr>
  69. <tr>
  70. <td></td>
  71. <td colspan="2">
  72. <br />
  73. <span class="line"></span>
  74. <br />
  75. </td>
  76. </tr>
  77. <tr>
  78. <td></td>
  79. <td colspan="2">In die Bewertung gingen alle Fragen (bzw. Anforderungen) ein, die der Nutzer des Fragebogens für seine individuelle Organisation als relevant eingestuft hat, das heißt, für die nicht Antwort (A) ausgewählt wurde.<br /><br />
  80. Die einzelnen Fragen wurden für die Ermittlung der Prozentsätze von den an der Entwicklung Beteiligten auf Basis ihrer Expertise gewichtet.<br /><br />
  81. Das Ergebnis der Selbsteinschätzung wird als Prozentsatz des erreichbaren Wertes ausgegeben, und zwar gesamt sowie bezogen auf das jeweilige Handlungsfeld.<br /></td>
  82. </tr>
  83. <tr>
  84. <td></td>
  85. <td colspan="2">
  86. <br />
  87. <span class="line"></span>
  88. <br />
  89. </td>
  90. </tr>
  91. <tr>
  92. <td width="7%"></td>
  93. <td width="50%"><br /></td>
  94. <td width="43%"></td>
  95. </tr>
  96. </table>
  97. {% for cat, res in result %}
  98. <table width="100%">
  99. <tr>
  100. <td></td>
  101. <td colspan="2"><strong>{{ cat }}</strong></td>
  102. </tr>
  103. <tr>
  104. <td width="7%"></td>
  105. <td width="50%">Anzahl relevanter/beantworteter Fragen:</td>
  106. <td width="43%">{{ res.count }}</td>
  107. </tr>
  108. <tr>
  109. <td></td>
  110. <td>Anzahl Fragen Handlungsfeld gesamt:</td>
  111. <td>{{ res.countAll }}</td>
  112. </tr>
  113. <tr>
  114. <td></td>
  115. <td>Maximal erreichbare Punkte:</td>
  116. <td>{{ res.maxPoints }}</td>
  117. </tr>
  118. <tr>
  119. <td></td>
  120. <td>Erreichte Punktzahl:</td>
  121. <td>{{ res.points | round | replace({'.': ','}) }}</td>
  122. </tr>
  123. <tr>
  124. <td></td>
  125. <td>Erreichte Prozentzahl:</td>
  126. <td>{{ res.percentage | round(1) | replace({'.': ','}) }}%</td>
  127. </tr>
  128. <tr>
  129. <td></td>
  130. <td><br /></td>
  131. <td></td>
  132. </tr>
  133. </table>
  134. <table width="100%">
  135. <tr>
  136. <td width="7%"></td>
  137. <td width="50%"><strong>Einstufung:</strong></td>
  138. <td width="43%"></td>
  139. </tr>
  140. <tr>
  141. <td></td>
  142. <td colspan="2">{{ res.txtResult }}</td>
  143. </tr>
  144. <tr>
  145. <td></td>
  146. <td><br /></td>
  147. <td></td>
  148. </tr>
  149. </table>
  150. <table width="100%">
  151. <tr>
  152. <td width="7%"></td>
  153. <td width="50%"><strong>Handlungsempfehlung:</strong></td>
  154. <td width="43%"></td>
  155. </tr>
  156. <tr>
  157. <td></td>
  158. <td colspan="2">{{ res.txtAction }}</td>
  159. </tr>
  160. <tr>
  161. <td></td>
  162. <td colspan="2">
  163. <br />
  164. <span class="line"></span>
  165. <br />
  166. </td>
  167. </tr>
  168. <tr>
  169. <td></td>
  170. <td><br /></td>
  171. <td></td>
  172. </tr>
  173. </table>
  174. {% endfor %}
  175. <table width="100%">
  176. <tr>
  177. <td></td>
  178. <td colspan="2"><strong>Gesamt</strong></td>
  179. </tr>
  180. <tr>
  181. <td width="7%"></td>
  182. <td width="50%">Anzahl relevanter/beantworteter Fragen:</td>
  183. <td width="43%">{{ total.count }}</td>
  184. </tr>
  185. <tr>
  186. <td></td>
  187. <td>Anzahl Fragen Handlungsfeld gesamt:</td>
  188. <td>{{ total.countAll }}</td>
  189. </tr>
  190. <tr>
  191. <td></td>
  192. <td>Maximal erreichbare Punkte:</td>
  193. <td>{{ total.maxPoints }}</td>
  194. </tr>
  195. <tr>
  196. <td></td>
  197. <td>Erreichte Punktzahl:</td>
  198. <td>{{ total.points | round | replace({'.': ','}) }}</td>
  199. </tr>
  200. <tr>
  201. <td></td>
  202. <td>Erreichte Prozentzahl:</td>
  203. <td>{{ total.percentage | round(1) | replace({'.': ','}) }}%</td>
  204. </tr>
  205. <tr>
  206. <td></td>
  207. <td><br /></td>
  208. <td></td>
  209. </tr>
  210. </table>
  211. <table width="100%">
  212. <tr>
  213. <td width="7%"></td>
  214. <td width="50%"><strong>Einstufung:</strong></td>
  215. <td width="43%"></td>
  216. </tr>
  217. <tr>
  218. <td></td>
  219. <td colspan="2">{{ total.txtResult }}</td>
  220. </tr>
  221. <tr>
  222. <td></td>
  223. <td><br /></td>
  224. <td></td>
  225. </tr>
  226. </table>
  227. <table width="100%">
  228. <tr>
  229. <td width="7%"></td>
  230. <td width="50%"><strong>Handlungsempfehlung:</strong></td>
  231. <td width="43%"></td>
  232. </tr>
  233. <tr>
  234. <td></td>
  235. <td colspan="2">{{ total.txtAction }}</td>
  236. </tr>
  237. <tr>
  238. <td></td>
  239. <td><br /><br /></td>
  240. <td></td>
  241. </tr>
  242. </table>
  243. <div style="page-break-inside: avoid;">
  244. <table width="100%">
  245. <tr>
  246. <td><br /></td>
  247. </tr>
  248. <tr>
  249. <td width="100%"><h1>MPPTool<br />
  250. Ergebnisübersicht</h1></td>
  251. </tr>
  252. <tr>
  253. <td><br /></td>
  254. </tr>
  255. </table>
  256. <table width="100%" class="minitable">
  257. <tr>
  258. <td colspan="6"><br /></td>
  259. </tr>
  260. <tr class="mini-all">
  261. <td><span style="padding-left: 5px;vertical-align: middle;">Anforderungskategorie<br />
  262. (Handlungsfelder)</span></td>
  263. <td style="text-align: center;vertical-align: middle;">Anzahl beantworteter / relevanter Fragen</td>
  264. <td style="text-align: center;vertical-align: middle;">Maximal erreichbare Punktzahl</td>
  265. <td style="text-align: center;vertical-align: middle;">Erreichte Punktzahl</td>
  266. <td style="text-align: center;vertical-align: middle;">Erreichte Prozentzahl</td>
  267. {# <td style="text-align: center;vertical-align: middle;">Ergebnis</td>#}
  268. <td style="text-align: center;vertical-align: middle;">Ergebnis</td>
  269. </tr>
  270. {% for cat, res in result %}
  271. <tr>
  272. <td style="font-weight: bold;vertical-align: middle;"><span style="padding-left: 5px;">{{ cat }}</span></td>
  273. <td style="text-align: center;vertical-align: middle;">{{ res.count }}</td>
  274. <td style="text-align: center;vertical-align: middle;">{{ res.maxPoints }}</td>
  275. <td style="text-align: center;vertical-align: middle;">{{ res.points | round | replace({'.': ','}) }}</td>
  276. <td style="text-align: center;vertical-align: middle;">{{ res.percentage | round(1) | replace({'.': ','}) }}%</td>
  277. {# <td style="text-align: center;vertical-align: middle;">#}
  278. {# {% if res.percentage | round(1) > 67 %}#}
  279. {# <img style="width: 22px;height: auto;" src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/elements/512px-Eo_circle_green_white_checkmark.svg.png" alt="" />#}
  280. {# {% elseif res.percentage | round(1) > 50 %}#}
  281. {# <img style="width: 22px;height: auto;" src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/elements/yellow_circle.png" alt="" />#}
  282. {# {% else %}#}
  283. {# <img style="width: 22px;height: auto;" src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/elements/512px-Cross_red_circle.svg.png" alt="" />#}
  284. {# {% endif %}#}
  285. {# </td>#}
  286. <td style="text-align: center;vertical-align: middle;">
  287. <div class="circle-2 {% if res.percentage | round(1) >= 81 %}green{% elseif res.percentage | round(1) >= 67 %}green-2{% elseif res.percentage | round(1) >= 50 %}yellow{% else %}red{% endif %}"><div class="d1" style="height: {{ res.percentage | round(1) }}%;"></div><div class="d2"></div><div class="d3"></div></div>
  288. </td>
  289. </tr>
  290. {% endfor %}
  291. <tr class="mini-all">
  292. <td style="font-weight: bold;vertical-align: middle;"><span style="padding-left: 5px;">Gesamt</span></td>
  293. <td style="text-align: center;vertical-align: middle;">{{ total.count }}</td>
  294. <td style="text-align: center;vertical-align: middle;">{{ total.maxPoints }}</td>
  295. <td style="text-align: center;vertical-align: middle;">{{ total.points | round | replace({'.': ','}) }}</td>
  296. <td style="text-align: center;vertical-align: middle;">{{ total.percentage | round(1) | replace({'.': ','}) }}%</td>
  297. {# <td style="text-align: center;vertical-align: middle;">#}
  298. {# {% if total.percentage | round(1) > 67 %}#}
  299. {# <img style="width: 22px;height: auto;" src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/elements/512px-Eo_circle_green_white_checkmark.svg.png" alt="" />#}
  300. {# {% elseif total.percentage | round(1) > 50 %}#}
  301. {# <img style="width: 22px;height: auto;" src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/elements/yellow_circle.png" alt="" />#}
  302. {# {% else %}#}
  303. {# <img style="width: 22px;height: auto;" src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/elements/512px-Cross_red_circle.svg.png" alt="" />#}
  304. {# {% endif %}#}
  305. {# </td>#}
  306. <td style="text-align: center;vertical-align: middle;">
  307. <div class="circle-2 {% if total.percentage | round(1) >= 81 %}green{% elseif total.percentage | round(1) >= 67 %}green-2{% elseif total.percentage | round(1) >= 50 %}yellow{% else %}red{% endif %}"><div class="d1" style="height: {{ total.percentage | round(1) }}%;"></div><div class="d2"></div><div class="d3"></div></div>
  308. </td>
  309. </tr>
  310. <tr>
  311. <td colspan="6"><br /><br /></td>
  312. </tr>
  313. </table>
  314. </div>
  315. <table width="100%">
  316. <tr>
  317. <td colspan="4" width="100%"><h1>Beteiligte Beratungsunternehmen</h1></td>
  318. </tr>
  319. <tr>
  320. <td colspan="4"><br /></td>
  321. </tr>
  322. <tr>
  323. <td></td>
  324. <td colspan="3">Für weiterführende Erläuterungen/ Interpretationen Ihrer Ergebnisse, detailliertere Analysen, externe Audits, Projektunterstützung, Implementierungs-Beratung oder Unterstützung bei der Verbesserung Ihres BIM-Reifegrades stehen Ihnen folgende Ansprechpartner der beteiligten Beratungsunternehmen zur Verfügung:<br /><br /></td>
  325. </tr>
  326. <tr>
  327. <td width="7%">&nbsp;</td>
  328. <td width="15%" style="vertical-align: middle;"><img src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/logos/logo-drodin.png" alt="Dr. Odin GmbH" style="display: block;width: auto;height: 58px;margin:5px 0;" /></td>
  329. <td width="5%">&nbsp;</td>
  330. <td valign="center" width="73%" style="vertical-align: middle;">Ulrich Pieper // Dr. Odin GmbH (<a href="mailto:ulrich.pieper@dr-odin.de">ulrich.pieper@dr-odin.de</a>), <a href="https://www.dr-odin.de" target="_blank">https://www.dr-odin.de</a></td>
  331. </tr>
  332. <tr>
  333. <td></td>
  334. <td style="vertical-align: middle;"><img src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/logos/logo-tuev.png" alt="TÜV SÜD Advimo GmbH" style="display: block;width: auto;height: 58px;margin:5px 0;" /></td>
  335. <td></td>
  336. <td valign="center" style="vertical-align: middle;">Matthias Mosig // TÜV SÜD Advimo GmbH (<a href="mailto:matthias.mosig@tuvsud.com">matthias.mosig@tuvsud.com</a>), <a href="https://www.tuvsud.com/de-de/branchen/real-estate/immobilien/bauphysik-und-bautechnik/was-ist-bim/bim-beratung" target="_blank">https://www.tuvsud.com/de-de/branchen/real-estate/immobilien/bauphysik-und-bautechnik/was-ist-bim/bim-beratung</a></td>
  337. </tr>
  338. <tr>
  339. <td></td>
  340. <td style="vertical-align: middle;"><img src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/logos/logo-canzler.png" alt="Canzler GmbH" style="display: block;width: auto;height: 58px;margin:5px 0;" /></td>
  341. <td></td>
  342. <td valign="center" style="vertical-align: middle;">Andreas Rausch // Canzler GmbH (<a href="mailto:andreas.rausch@canzler.de">andreas.rausch@canzler.de</a>), <a href="https://www.canzler.de" target="_blank">https://www.canzler.de</a></td>
  343. </tr>
  344. <tr>
  345. <td></td>
  346. <td colspan="3"><br /><br />Verband und Arbeitskreis danken den oben genannten Unternehmen, die nicht nur ihr Know-How in die Entwicklung des Online-Tools „MPPTool“ eingebracht haben, sondern diese auch als Sponsoren unterstützt haben.<br /><br /></td>
  347. </tr>
  348. <tr>
  349. <td></td>
  350. <td colspan="3">
  351. <span class="line"></span>
  352. <br />
  353. </td>
  354. </tr>
  355. <tr>
  356. <td></td>
  357. <td style="vertical-align: middle;"><img src="{{ app.request.getSchemeAndHttpHost() }}/assets/images/logos/real-fm.png" alt="Canzler GmbH" style="display: block;width: auto;height: 58px;" /></td>
  358. <td></td>
  359. <td valign="center" style="vertical-align: middle;">RealFM e.V. | Schiffbauerdamm 40 / Büro 5407 | 10117 Berlin<br />
  360. <strong>T</strong> +49 (0)30 20 65 39 81 | <strong>E</strong> <a href="mailto:office@realfm.de">office@RealFM.de</a> | <strong>W</strong> <a href="https://www.realfm.de">www.RealFM.de</a></td>
  361. </tr>
  362. <tr>
  363. <td></td>
  364. <td></td>
  365. <td><br /><br /></td>
  366. <td></td>
  367. </tr>
  368. </table>
  369. <table width="100%">
  370. <tr>
  371. <td width="50%"><h1>BIM-Selbstbewertung</h1></td>
  372. <td width="50%"></td>
  373. </tr>
  374. <tr>
  375. <td></td>
  376. <td class="right userinfo">{{ user.firstname }} {{ user.lastname }}</td>
  377. </tr>
  378. <tr>
  379. <td></td>
  380. <td class="right userinfo">{{ user.email }}</td>
  381. </tr>
  382. <tr>
  383. <td></td>
  384. <td class="right userinfo">{{ user.company }}</td>
  385. </tr>
  386. </table>
  387. <br />
  388. <br />
  389. <br />
  390. {% set i = 1 %}
  391. {% set qType = "" %}
  392. <table width="100%">
  393. {% for catalogueDetail in catalogue.catalogueDetails %}
  394. {% if i != 1 %}
  395. <tr>
  396. <td></td>
  397. <td></td>
  398. <td>
  399. <span class="line"></span>
  400. <br />
  401. </td>
  402. </tr>
  403. {% endif %}
  404. {% if catalogueDetail.question.questionType.type != qType %}
  405. {% set qType = catalogueDetail.question.questionType.type %}
  406. <tr>
  407. <td width="5%"></td>
  408. <td width="2%"></td>
  409. <td width="95%">
  410. <h2>{{ catalogueDetail.question.questionType.type }}</h2>
  411. </td>
  412. </tr>
  413. <tr>
  414. <td><br /></td>
  415. <td></td>
  416. <td></td>
  417. </tr>
  418. {% endif %}
  419. <tr>
  420. <td class="right">{{ i }}<br /><br /></td>
  421. <td></td>
  422. <td>{{ catalogueDetail.question.questionText }}<br /><br /></td>
  423. </tr>
  424. <tr>
  425. <td></td>
  426. <td></td>
  427. <td class="result">
  428. {% if catalogueDetail.answer == 'fulfilled' %}
  429. (E) Umfassend erfüllt
  430. {% elseif catalogueDetail.answer == 'widely_fulfilled' %}
  431. (D) Weitgehend erfüllt
  432. {% elseif catalogueDetail.answer == 'partly_fulfilled' %}
  433. (C) Teilweise erfüllt
  434. {% elseif catalogueDetail.answer == 'not_fulfilled' %}
  435. (B) Nicht erfüllt
  436. {% else %}
  437. (A) Derzeit für meine Organisation nicht relevant
  438. {% endif %}
  439. <br />
  440. </td>
  441. </tr>
  442. <tr>
  443. <td></td>
  444. <td></td>
  445. <td>
  446. {% if catalogueDetail.answer == 'fulfilled' %}
  447. 100% von erreichbaren {{ catalogueDetail.question.weight }} Punkten = <strong>{{ catalogueDetail.question.weight }} Punkte</strong>
  448. {% elseif catalogueDetail.answer == 'widely_fulfilled' %}
  449. 66,67% von erreichbaren {{ catalogueDetail.question.weight }} Punkten = <strong>{{ catalogueDetail.question.weight * 0.6667 | round(1) }} Punkte</strong>
  450. {% elseif catalogueDetail.answer == 'partly_fulfilled' %}
  451. 33,33% von erreichbaren {{ catalogueDetail.question.weight }} Punkten = <strong>{{ catalogueDetail.question.weight * 0.3333 | round(1) }} Punkte</strong>
  452. {% elseif catalogueDetail.answer == 'not_fulfilled' %}
  453. 0% von erreichbaren {{ catalogueDetail.question.weight }} Punkten = <strong>0 Punkte</strong>
  454. {% endif %}
  455. <br /><br />
  456. </td>
  457. </tr>
  458. {% if catalogueDetail.note is not null and catalogueDetail.note != "" %}
  459. <tr>
  460. <td></td>
  461. <td></td>
  462. <td>
  463. Feststellung/Anmerkung:<br />
  464. {{ catalogueDetail.note | raw }}
  465. <br /><br />
  466. </td>
  467. </tr>
  468. {% endif %}
  469. {% set i = i + 1 %}
  470. {% endfor %}
  471. </table>
  472. </body>
  473. </html>