project_view.html 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. {% extends "base.html" %}
  2. {%block head%}
  3. <link rel="stylesheet" href="{{ url_for('static', filename='style/fontello/css/fontello.css') }}"" />
  4. </script>
  5. {%endblock%}
  6. {%block title%}{{selected_project.info.name}}{%endblock%}
  7. {%block content%}
  8. <div class="content">
  9. {%- if readme %}
  10. {{readme|safe}}
  11. {%-else%}
  12. <h1>{{selected_project.info.name}}</h1>
  13. <p>
  14. Here you can find artifacts for project &quot;{{selected_project.info.name}}&quot;
  15. </p>
  16. {%-endif%}
  17. </div>
  18. <h1 class="artifacts-header">Artifacts</h1>
  19. <hr />
  20. {%-for artifact in artifacts %}
  21. <div class="artifact-item">
  22. <div class="artifact-details">
  23. <span class="artifact-id">#{{artifact.id}}</span>
  24. {%-if artifact.hash%}
  25. <a class="hash-button" href="{{selected_project.info.commit_url}}/{{artifact.hash}}">{{artifact.hash[:8]}}</a>
  26. {%-endif%}
  27. <span>Build date: <span class="build-date">{{artifact.date}}</span></span>
  28. <span class="icon-down-open"></span>
  29. </div>
  30. <div class="artifact-contents content">
  31. <h2>Downloads</h2>
  32. <div class="artifacts-list">
  33. <span class="artifacts-head">Artifact</span>
  34. <span class="artifacts-desc">Description</span>
  35. {%-for download_item in artifact.artifacts%}
  36. <a class="artifact-link"
  37. href="{{ url_for('download_item', project_id=selected_project.id, artifact_id=artifact.id, download_item=download_item.file)}}">{{download_item.file}}</a>
  38. <span class="artifact-desc">{{download_item.description}}</span>
  39. {%-endfor%}
  40. </div>
  41. {%- if artifact.changelog %}
  42. <h2>Changelog</h2>
  43. <p>
  44. {{artifact.changelog|safe}}
  45. </p>
  46. {%- endif %}
  47. </div>
  48. </div>
  49. {%-endfor%}
  50. <script>
  51. function init() {
  52. let dates = document.querySelectorAll("span.build-date");
  53. for (let date of dates) {
  54. date.textContent = new Date(date.textContent).toLocaleString();
  55. }
  56. let artifacts = document.querySelectorAll("div.artifact-item");
  57. for (let artifact of artifacts) {
  58. let contents = artifact.querySelector(".artifact-contents");
  59. let details = artifact.querySelector(".artifact-details");
  60. if (!contents || !(contents instanceof HTMLElement))
  61. continue;
  62. details.addEventListener("click", e => {
  63. if(e.target instanceof HTMLElement && e.target.nodeName.toUpperCase() == "A")
  64. return;
  65. e.preventDefault();
  66. if (contents.classList.contains("contents-visible"))
  67. contents.classList.remove("contents-visible");
  68. else
  69. contents.classList.add("contents-visible");
  70. });
  71. }
  72. }
  73. init();
  74. </script>
  75. {%endblock%}