Speiseplan der Mensen der Georg-August-Universität Göttingen https://mensa.schneider-hosting.de
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
2.5 KiB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
  1. <template>
  2. <div id="app">
  3. <h1>Essen in Göttingen</h1>
  4. Wo? <select v-model="where">
  5. <option v-for="mensa in mensen" :value="mensa.url">{{mensa.name}}</option>
  6. </select>
  7. Wann? <select v-model="when">
  8. <option v-for="day in days" :value="day" :key="day">{{dayOfWeek[day]}}</option>
  9. </select>
  10. <router-view></router-view>
  11. <footer>
  12. <hr>
  13. <div>
  14. <span>
  15. Developed by <a href="https://webschneider.org">webschneider.org</a>
  16. &copy; {{ new Date().getFullYear() }}
  17. </span>
  18. <span><a href="https://webschneider.org/impress">Impressum</a></span>
  19. </div>
  20. </footer>
  21. </div>
  22. </template>
  23. <script>
  24. import Mensen from '@/lib/Mensen.js'
  25. export default {
  26. name: 'app',
  27. data () {
  28. return {
  29. menu: {},
  30. mensen: Mensen,
  31. days: [1, 2, 3, 4, 5, 6],
  32. dayOfWeek: {
  33. 1: 'Montag',
  34. 2: 'Dienstag',
  35. 3: 'Mittwoch',
  36. 4: 'Donnerstag',
  37. 5: 'Freitag',
  38. 6: 'Samstag'
  39. },
  40. where: 'zentralmensa',
  41. when: '' + (new Date().getDay() || 1)
  42. }
  43. },
  44. watch: {
  45. 'where': 'updateRoute',
  46. 'when': 'updateRoute'
  47. },
  48. methods: {
  49. updateRoute () {
  50. this.$router.push(`/${this.where}/${this.when}`)
  51. window.localStorage.setItem('where', this.where)
  52. },
  53. previousDay () {
  54. this.when === 1 ? this.when = 6 : this.when--
  55. },
  56. nextDay () {
  57. this.when === 6 ? this.when = 1 : this.when++
  58. }
  59. },
  60. filters: {
  61. noBreak (value) {
  62. return value.replace(/\s/g, '\u00a0')
  63. }
  64. },
  65. computed: {
  66. today () {
  67. return '' + new Date().getDay()
  68. }
  69. },
  70. created () {
  71. this.where = window.localStorage.getItem('where') || 'zentralmensa'
  72. let vm = this
  73. document.onkeydown = (evt) => {
  74. evt = evt || window.event
  75. switch (evt.keyCode) {
  76. case 37:
  77. vm.previousDay()
  78. break
  79. case 39:
  80. vm.nextDay()
  81. break
  82. }
  83. }
  84. }
  85. }
  86. </script>
  87. <style src="./assets/base.css"></style>
  88. <style src="./assets/links.css"></style>
  89. <style>
  90. #app {
  91. font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  92. -webkit-font-smoothing: antialiased;
  93. -moz-osx-font-smoothing: grayscale;
  94. text-align: center;
  95. color: #2c3e50;
  96. font-size: 16px;
  97. max-width: 30em;
  98. margin: 0 auto;
  99. }
  100. footer{
  101. margin: 1em 0;
  102. }
  103. footer > div {
  104. margin: 0.5em;
  105. }
  106. nav>a{
  107. margin: 0.3em;
  108. wrap: no-wrap;
  109. }
  110. .router-link-active:before{
  111. content: '>';
  112. }
  113. .router-link-active:after{
  114. content: '<';
  115. }
  116. </style>