Compare commits
2 commits
2c9efb1df8
...
add9214f6b
| Author | SHA1 | Date | |
|---|---|---|---|
| add9214f6b | |||
| 7f67007a12 |
3 changed files with 74 additions and 6 deletions
|
|
@ -1,11 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<v-app>
|
<v-app>
|
||||||
<v-main>
|
<v-main>
|
||||||
<TitleBar>
|
<TitleBar :title="title_html" />
|
||||||
<div v-html="title_html" />
|
|
||||||
</TitleBar>
|
|
||||||
<HelloWorld />
|
<HelloWorld />
|
||||||
</v-main>
|
</v-main>
|
||||||
|
<TickerBar :content="ticker_html" />
|
||||||
</v-app>
|
</v-app>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -13,15 +12,18 @@
|
||||||
import { Component, Vue } from "vue-property-decorator";
|
import { Component, Vue } from "vue-property-decorator";
|
||||||
import HelloWorld from "./components/HelloWorld.vue";
|
import HelloWorld from "./components/HelloWorld.vue";
|
||||||
import TitleBar from "./components/TitleBar.vue";
|
import TitleBar from "./components/TitleBar.vue";
|
||||||
|
import TickerBar from "./components/TickerBar.vue";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
components: {
|
components: {
|
||||||
HelloWorld,
|
HelloWorld,
|
||||||
TitleBar,
|
TitleBar,
|
||||||
|
TickerBar,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
export default class App extends Vue {
|
export default class App extends Vue {
|
||||||
private title_html = "<h1>changeme</h1>";
|
private title_html = "<h1>changeme</h1>";
|
||||||
|
private ticker_html = "<p>changeme</p>";
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
60
ui/src/components/TickerBar.vue
Normal file
60
ui/src/components/TickerBar.vue
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
<template>
|
||||||
|
<v-footer color="primary" dark>
|
||||||
|
<span
|
||||||
|
class="text-h6"
|
||||||
|
:style="{ 'animation-duration': marqueeDuration }"
|
||||||
|
ref="slotWrapper"
|
||||||
|
>
|
||||||
|
<div v-html="content" />
|
||||||
|
</span>
|
||||||
|
</v-footer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Component, Prop, Vue } from "vue-property-decorator";
|
||||||
|
|
||||||
|
@Component
|
||||||
|
export default class TickerBar extends Vue {
|
||||||
|
@Prop()
|
||||||
|
public content!: string;
|
||||||
|
|
||||||
|
get marqueeDuration(): string {
|
||||||
|
// 10 seconds + another second per 7 chars
|
||||||
|
let dv = this.content ? Math.round(this.content.length / 7) : 0;
|
||||||
|
return 10 + dv + "s";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@keyframes marquee {
|
||||||
|
0% {
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translate(-100%, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.v-footer {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
> span {
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 100%;
|
||||||
|
text-indent: 0;
|
||||||
|
animation: marquee 30s linear infinite;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
animation-play-state: paused;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.v-footer p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -5,9 +5,10 @@
|
||||||
<THWLogo :above="logo_above" :below="logo_below" />
|
<THWLogo :above="logo_above" :below="logo_below" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="d-flex justify-center text-center mx-auto text-h6 text-md-h5">
|
<div
|
||||||
<slot> <h1>TITLE</h1> </slot>
|
class="d-flex justify-center text-center mx-auto text-h6 text-md-h5"
|
||||||
</div>
|
v-html="title"
|
||||||
|
/>
|
||||||
|
|
||||||
<div class="d-none d-sm-flex justify-end text-right text-no-wrap">
|
<div class="d-none d-sm-flex justify-end text-right text-no-wrap">
|
||||||
<div class="flex-column">
|
<div class="flex-column">
|
||||||
|
|
@ -46,6 +47,11 @@ export default class TitleBar extends Vue {
|
||||||
default: "OV Musterstadt",
|
default: "OV Musterstadt",
|
||||||
})
|
})
|
||||||
public logo_below!: string;
|
public logo_below!: string;
|
||||||
|
|
||||||
|
@Prop({
|
||||||
|
default: "TITLE",
|
||||||
|
})
|
||||||
|
public title!: string;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue