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.

130 lines
2.6 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. }
  41. },
  42. methods: {
  43. previousDay () {
  44. this.when === 1 ? this.when = 6 : this.when--
  45. },
  46. nextDay () {
  47. this.when === 6 ? this.when = 1 : this.when++
  48. }
  49. },
  50. filters: {
  51. noBreak (value) {
  52. return value.replace(/\s/g, '\u00a0')
  53. }
  54. },
  55. computed: {
  56. where: {
  57. get () {
  58. return this.$store.state.where
  59. },
  60. set (value) {
  61. this.$store.dispatch('loadMeals', {
  62. when: this.when,
  63. where: value
  64. })
  65. }
  66. },
  67. when: {
  68. get () {
  69. return this.$store.state.when
  70. },
  71. set (value) {
  72. this.$store.dispatch('loadMeals', {
  73. when: value,
  74. where: this.where
  75. })
  76. }
  77. }
  78. },
  79. created () {
  80. let vm = this
  81. document.onkeydown = (evt) => {
  82. evt = evt || window.event
  83. switch (evt.keyCode) {
  84. case 37:
  85. vm.previousDay()
  86. break
  87. case 39:
  88. vm.nextDay()
  89. break
  90. }
  91. }
  92. }
  93. }
  94. </script>
  95. <style src="./assets/base.css"></style>
  96. <style src="./assets/links.css"></style>
  97. <style>
  98. #app {
  99. font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  100. -webkit-font-smoothing: antialiased;
  101. -moz-osx-font-smoothing: grayscale;
  102. text-align: center;
  103. color: #2c3e50;
  104. font-size: 16px;
  105. max-width: 30em;
  106. margin: 0 auto;
  107. }
  108. footer{
  109. margin: 1em 0;
  110. }
  111. footer > div {
  112. margin: 0.5em;
  113. }
  114. nav>a{
  115. margin: 0.3em;
  116. wrap: no-wrap;
  117. }
  118. .router-link-active:before{
  119. content: '>';
  120. }
  121. .router-link-active:after{
  122. content: '<';
  123. }
  124. </style>