wip
This commit is contained in:
		
							parent
							
								
									62152bfa6f
								
							
						
					
					
						commit
						363cd2a66b
					
				
					 5 changed files with 157 additions and 145 deletions
				
			
		| 
						 | 
				
			
			@ -1,143 +0,0 @@
 | 
			
		|||
<mk-broadcast-home-widget data-found={ broadcasts.length != 0 } data-melt={ data.design == 1 }>
 | 
			
		||||
	<div class="icon">
 | 
			
		||||
		<svg height="32" version="1.1" viewBox="0 0 32 32" width="32">
 | 
			
		||||
			<path class="tower" d="M16.04,11.24c1.79,0,3.239-1.45,3.239-3.24S17.83,4.76,16.04,4.76c-1.79,0-3.24,1.45-3.24,3.24 C12.78,9.78,14.24,11.24,16.04,11.24z M16.04,13.84c-0.82,0-1.66-0.2-2.4-0.6L7.34,29.98h2.98l1.72-2h8l1.681,2H24.7L18.42,13.24 C17.66,13.64,16.859,13.84,16.04,13.84z M16.02,14.8l2.02,7.2h-4L16.02,14.8z M12.04,25.98l2-2h4l2,2H12.04z"></path>
 | 
			
		||||
			<path class="wave a" d="M4.66,1.04c-0.508-0.508-1.332-0.508-1.84,0c-1.86,1.92-2.8,4.44-2.8,6.94c0,2.52,0.94,5.04,2.8,6.96 c0.5,0.52,1.32,0.52,1.82,0s0.5-1.36,0-1.88C3.28,11.66,2.6,9.82,2.6,7.98S3.28,4.3,4.64,2.9C5.157,2.391,5.166,1.56,4.66,1.04z"></path>
 | 
			
		||||
			<path class="wave b" d="M9.58,12.22c0.5-0.5,0.5-1.34,0-1.84C8.94,9.72,8.62,8.86,8.62,8s0.32-1.72,0.96-2.38c0.5-0.52,0.5-1.34,0-1.84 C9.346,3.534,9.02,3.396,8.68,3.4c-0.32,0-0.66,0.12-0.9,0.38C6.64,4.94,6.08,6.48,6.08,8s0.58,3.06,1.7,4.22 C8.28,12.72,9.1,12.72,9.58,12.22z"></path>
 | 
			
		||||
			<path class="wave c" d="M22.42,3.78c-0.5,0.5-0.5,1.34,0,1.84c0.641,0.66,0.96,1.52,0.96,2.38s-0.319,1.72-0.96,2.38c-0.5,0.52-0.5,1.34,0,1.84 c0.487,0.497,1.285,0.505,1.781,0.018c0.007-0.006,0.013-0.012,0.02-0.018c1.139-1.16,1.699-2.7,1.699-4.22s-0.561-3.06-1.699-4.22 c-0.494-0.497-1.297-0.5-1.794-0.007C22.424,3.775,22.422,3.778,22.42,3.78z"></path>
 | 
			
		||||
			<path class="wave d" d="M29.18,1.06c-0.479-0.502-1.273-0.522-1.775-0.044c-0.016,0.015-0.029,0.029-0.045,0.044c-0.5,0.52-0.5,1.36,0,1.88 c1.361,1.4,2.041,3.24,2.041,5.08s-0.68,3.66-2.041,5.08c-0.5,0.52-0.5,1.36,0,1.88c0.509,0.508,1.332,0.508,1.841,0 c1.86-1.92,2.8-4.44,2.8-6.96C31.99,5.424,30.98,2.931,29.18,1.06z"></path>
 | 
			
		||||
		</svg>
 | 
			
		||||
	</div>
 | 
			
		||||
	<p class="fetching" v-if="fetching">%i18n:desktop.tags.mk-broadcast-home-widget.fetching%<mk-ellipsis/></p>
 | 
			
		||||
	<h1 v-if="!fetching">{
 | 
			
		||||
		broadcasts.length == 0 ? '%i18n:desktop.tags.mk-broadcast-home-widget.no-broadcasts%' : broadcasts[i].title
 | 
			
		||||
	}</h1>
 | 
			
		||||
	<p v-if="!fetching"><mk-raw v-if="broadcasts.length != 0" content={ broadcasts[i].text }/><template v-if="broadcasts.length == 0">%i18n:desktop.tags.mk-broadcast-home-widget.have-a-nice-day%</template></p>
 | 
			
		||||
	<a v-if="broadcasts.length > 1" @click="next">%i18n:desktop.tags.mk-broadcast-home-widget.next% >></a>
 | 
			
		||||
	<style lang="stylus" scoped>
 | 
			
		||||
		:scope
 | 
			
		||||
			display block
 | 
			
		||||
			padding 10px
 | 
			
		||||
			border solid 1px #4078c0
 | 
			
		||||
			border-radius 6px
 | 
			
		||||
 | 
			
		||||
			&[data-melt]
 | 
			
		||||
				border none
 | 
			
		||||
 | 
			
		||||
			&[data-found]
 | 
			
		||||
				padding-left 50px
 | 
			
		||||
 | 
			
		||||
				> .icon
 | 
			
		||||
					display block
 | 
			
		||||
 | 
			
		||||
			&:after
 | 
			
		||||
				content ""
 | 
			
		||||
				display block
 | 
			
		||||
				clear both
 | 
			
		||||
 | 
			
		||||
			> .icon
 | 
			
		||||
				display none
 | 
			
		||||
				float left
 | 
			
		||||
				margin-left -40px
 | 
			
		||||
 | 
			
		||||
				> svg
 | 
			
		||||
					fill currentColor
 | 
			
		||||
					color #4078c0
 | 
			
		||||
 | 
			
		||||
					> .wave
 | 
			
		||||
						opacity 1
 | 
			
		||||
 | 
			
		||||
						&.a
 | 
			
		||||
							animation wave 20s ease-in-out 2.1s infinite
 | 
			
		||||
						&.b
 | 
			
		||||
							animation wave 20s ease-in-out 2s infinite
 | 
			
		||||
						&.c
 | 
			
		||||
							animation wave 20s ease-in-out 2s infinite
 | 
			
		||||
						&.d
 | 
			
		||||
							animation wave 20s ease-in-out 2.1s infinite
 | 
			
		||||
 | 
			
		||||
						@keyframes wave
 | 
			
		||||
							0%
 | 
			
		||||
								opacity 1
 | 
			
		||||
							1.5%
 | 
			
		||||
								opacity 0
 | 
			
		||||
							3.5%
 | 
			
		||||
								opacity 0
 | 
			
		||||
							5%
 | 
			
		||||
								opacity 1
 | 
			
		||||
							6.5%
 | 
			
		||||
								opacity 0
 | 
			
		||||
							8.5%
 | 
			
		||||
								opacity 0
 | 
			
		||||
							10%
 | 
			
		||||
								opacity 1
 | 
			
		||||
 | 
			
		||||
			> h1
 | 
			
		||||
				margin 0
 | 
			
		||||
				font-size 0.95em
 | 
			
		||||
				font-weight normal
 | 
			
		||||
				color #4078c0
 | 
			
		||||
 | 
			
		||||
			> p
 | 
			
		||||
				display block
 | 
			
		||||
				z-index 1
 | 
			
		||||
				margin 0
 | 
			
		||||
				font-size 0.7em
 | 
			
		||||
				color #555
 | 
			
		||||
 | 
			
		||||
				&.fetching
 | 
			
		||||
					text-align center
 | 
			
		||||
 | 
			
		||||
				a
 | 
			
		||||
					color #555
 | 
			
		||||
					text-decoration underline
 | 
			
		||||
 | 
			
		||||
			> a
 | 
			
		||||
				display block
 | 
			
		||||
				font-size 0.7em
 | 
			
		||||
 | 
			
		||||
	</style>
 | 
			
		||||
	<script lang="typescript">
 | 
			
		||||
		this.data = {
 | 
			
		||||
			design: 0
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		this.mixin('widget');
 | 
			
		||||
		this.mixin('os');
 | 
			
		||||
 | 
			
		||||
		this.i = 0;
 | 
			
		||||
		this.fetching = true;
 | 
			
		||||
		this.broadcasts = [];
 | 
			
		||||
 | 
			
		||||
		this.on('mount', () => {
 | 
			
		||||
			this.mios.getMeta().then(meta => {
 | 
			
		||||
				let broadcasts = [];
 | 
			
		||||
				if (meta.broadcasts) {
 | 
			
		||||
					meta.broadcasts.forEach(broadcast => {
 | 
			
		||||
						if (broadcast[_LANG_]) {
 | 
			
		||||
							broadcasts.push(broadcast[_LANG_]);
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
				}
 | 
			
		||||
				this.update({
 | 
			
		||||
					fetching: false,
 | 
			
		||||
					broadcasts: broadcasts
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		this.next = () => {
 | 
			
		||||
			if (this.i == this.broadcasts.length - 1) {
 | 
			
		||||
				this.i = 0;
 | 
			
		||||
			} else {
 | 
			
		||||
				this.i++;
 | 
			
		||||
			}
 | 
			
		||||
			this.update();
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		this.func = () => {
 | 
			
		||||
			if (++this.data.design == 2) this.data.design = 0;
 | 
			
		||||
			this.save();
 | 
			
		||||
		};
 | 
			
		||||
	</script>
 | 
			
		||||
</mk-broadcast-home-widget>
 | 
			
		||||
| 
						 | 
				
			
			@ -40,6 +40,7 @@ import wSlideshow from './widgets/slideshow.vue';
 | 
			
		|||
import wTips from './widgets/tips.vue';
 | 
			
		||||
import wDonation from './widgets/donation.vue';
 | 
			
		||||
import wNotifications from './widgets/notifications.vue';
 | 
			
		||||
import wBroadcast from './widgets/broadcast.vue';
 | 
			
		||||
 | 
			
		||||
Vue.component('mk-ui', ui);
 | 
			
		||||
Vue.component('mk-ui-header', uiHeader);
 | 
			
		||||
| 
						 | 
				
			
			@ -81,3 +82,4 @@ Vue.component('mkw-slideshoe', wSlideshow);
 | 
			
		|||
Vue.component('mkw-tips', wTips);
 | 
			
		||||
Vue.component('mkw-donation', wDonation);
 | 
			
		||||
Vue.component('mkw-notifications', wNotifications);
 | 
			
		||||
Vue.component('mkw-broadcast', wBroadcast);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										153
									
								
								src/web/app/desktop/views/components/widgets/broadcast.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								src/web/app/desktop/views/components/widgets/broadcast.vue
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,153 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="mkw-broadcast" :data-found="broadcasts.length != 0" :data-melt="props.design == 1">
 | 
			
		||||
	<div class="icon">
 | 
			
		||||
		<svg height="32" version="1.1" viewBox="0 0 32 32" width="32">
 | 
			
		||||
			<path class="tower" d="M16.04,11.24c1.79,0,3.239-1.45,3.239-3.24S17.83,4.76,16.04,4.76c-1.79,0-3.24,1.45-3.24,3.24 C12.78,9.78,14.24,11.24,16.04,11.24z M16.04,13.84c-0.82,0-1.66-0.2-2.4-0.6L7.34,29.98h2.98l1.72-2h8l1.681,2H24.7L18.42,13.24 C17.66,13.64,16.859,13.84,16.04,13.84z M16.02,14.8l2.02,7.2h-4L16.02,14.8z M12.04,25.98l2-2h4l2,2H12.04z"></path>
 | 
			
		||||
			<path class="wave a" d="M4.66,1.04c-0.508-0.508-1.332-0.508-1.84,0c-1.86,1.92-2.8,4.44-2.8,6.94c0,2.52,0.94,5.04,2.8,6.96 c0.5,0.52,1.32,0.52,1.82,0s0.5-1.36,0-1.88C3.28,11.66,2.6,9.82,2.6,7.98S3.28,4.3,4.64,2.9C5.157,2.391,5.166,1.56,4.66,1.04z"></path>
 | 
			
		||||
			<path class="wave b" d="M9.58,12.22c0.5-0.5,0.5-1.34,0-1.84C8.94,9.72,8.62,8.86,8.62,8s0.32-1.72,0.96-2.38c0.5-0.52,0.5-1.34,0-1.84 C9.346,3.534,9.02,3.396,8.68,3.4c-0.32,0-0.66,0.12-0.9,0.38C6.64,4.94,6.08,6.48,6.08,8s0.58,3.06,1.7,4.22 C8.28,12.72,9.1,12.72,9.58,12.22z"></path>
 | 
			
		||||
			<path class="wave c" d="M22.42,3.78c-0.5,0.5-0.5,1.34,0,1.84c0.641,0.66,0.96,1.52,0.96,2.38s-0.319,1.72-0.96,2.38c-0.5,0.52-0.5,1.34,0,1.84 c0.487,0.497,1.285,0.505,1.781,0.018c0.007-0.006,0.013-0.012,0.02-0.018c1.139-1.16,1.699-2.7,1.699-4.22s-0.561-3.06-1.699-4.22 c-0.494-0.497-1.297-0.5-1.794-0.007C22.424,3.775,22.422,3.778,22.42,3.78z"></path>
 | 
			
		||||
			<path class="wave d" d="M29.18,1.06c-0.479-0.502-1.273-0.522-1.775-0.044c-0.016,0.015-0.029,0.029-0.045,0.044c-0.5,0.52-0.5,1.36,0,1.88 c1.361,1.4,2.041,3.24,2.041,5.08s-0.68,3.66-2.041,5.08c-0.5,0.52-0.5,1.36,0,1.88c0.509,0.508,1.332,0.508,1.841,0 c1.86-1.92,2.8-4.44,2.8-6.96C31.99,5.424,30.98,2.931,29.18,1.06z"></path>
 | 
			
		||||
		</svg>
 | 
			
		||||
	</div>
 | 
			
		||||
	<p class="fetching" v-if="fetching">%i18n:desktop.tags.mk-broadcast-home-widget.fetching%<mk-ellipsis/></p>
 | 
			
		||||
	<h1 v-if="!fetching">{{ broadcasts.length == 0 ? '%i18n:desktop.tags.mk-broadcast-home-widget.no-broadcasts%' : broadcasts[i].title }}</h1>
 | 
			
		||||
	<p v-if="!fetching">
 | 
			
		||||
		<span v-if="broadcasts.length != 0" :v-html="broadcasts[i].text"></span>
 | 
			
		||||
		<template v-if="broadcasts.length == 0">%i18n:desktop.tags.mk-broadcast-home-widget.have-a-nice-day%</template>
 | 
			
		||||
	</p>
 | 
			
		||||
	<a v-if="broadcasts.length > 1" @click="next">%i18n:desktop.tags.mk-broadcast-home-widget.next% >></a>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import define from '../../../../common/define-widget';
 | 
			
		||||
import { lang } from '../../../../config';
 | 
			
		||||
 | 
			
		||||
export default define({
 | 
			
		||||
	name: 'broadcast',
 | 
			
		||||
	props: {
 | 
			
		||||
		design: 0
 | 
			
		||||
	}
 | 
			
		||||
}).extend({
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			i: 0,
 | 
			
		||||
			fetching: true,
 | 
			
		||||
			broadcasts: []
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		(this as any).os.getMeta().then(meta => {
 | 
			
		||||
			let broadcasts = [];
 | 
			
		||||
			if (meta.broadcasts) {
 | 
			
		||||
				meta.broadcasts.forEach(broadcast => {
 | 
			
		||||
					if (broadcast[lang]) {
 | 
			
		||||
						broadcasts.push(broadcast[lang]);
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
			this.fetching = false;
 | 
			
		||||
			this.broadcasts = broadcasts;
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		next() {
 | 
			
		||||
			if (this.i == this.broadcasts.length - 1) {
 | 
			
		||||
				this.i = 0;
 | 
			
		||||
			} else {
 | 
			
		||||
				this.i++;
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		func() {
 | 
			
		||||
			if (this.props.design == 1) {
 | 
			
		||||
				this.props.design = 0;
 | 
			
		||||
			} else {
 | 
			
		||||
				this.props.design++;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="stylus" scoped>
 | 
			
		||||
.mkw-broadcast
 | 
			
		||||
	padding 10px
 | 
			
		||||
	border solid 1px #4078c0
 | 
			
		||||
	border-radius 6px
 | 
			
		||||
 | 
			
		||||
	&[data-melt]
 | 
			
		||||
		border none
 | 
			
		||||
 | 
			
		||||
	&[data-found]
 | 
			
		||||
		padding-left 50px
 | 
			
		||||
 | 
			
		||||
		> .icon
 | 
			
		||||
			display block
 | 
			
		||||
 | 
			
		||||
	&:after
 | 
			
		||||
		content ""
 | 
			
		||||
		display block
 | 
			
		||||
		clear both
 | 
			
		||||
 | 
			
		||||
	> .icon
 | 
			
		||||
		display none
 | 
			
		||||
		float left
 | 
			
		||||
		margin-left -40px
 | 
			
		||||
 | 
			
		||||
		> svg
 | 
			
		||||
			fill currentColor
 | 
			
		||||
			color #4078c0
 | 
			
		||||
 | 
			
		||||
			> .wave
 | 
			
		||||
				opacity 1
 | 
			
		||||
 | 
			
		||||
				&.a
 | 
			
		||||
					animation wave 20s ease-in-out 2.1s infinite
 | 
			
		||||
				&.b
 | 
			
		||||
					animation wave 20s ease-in-out 2s infinite
 | 
			
		||||
				&.c
 | 
			
		||||
					animation wave 20s ease-in-out 2s infinite
 | 
			
		||||
				&.d
 | 
			
		||||
					animation wave 20s ease-in-out 2.1s infinite
 | 
			
		||||
 | 
			
		||||
				@keyframes wave
 | 
			
		||||
					0%
 | 
			
		||||
						opacity 1
 | 
			
		||||
					1.5%
 | 
			
		||||
						opacity 0
 | 
			
		||||
					3.5%
 | 
			
		||||
						opacity 0
 | 
			
		||||
					5%
 | 
			
		||||
						opacity 1
 | 
			
		||||
					6.5%
 | 
			
		||||
						opacity 0
 | 
			
		||||
					8.5%
 | 
			
		||||
						opacity 0
 | 
			
		||||
					10%
 | 
			
		||||
						opacity 1
 | 
			
		||||
 | 
			
		||||
	> h1
 | 
			
		||||
		margin 0
 | 
			
		||||
		font-size 0.95em
 | 
			
		||||
		font-weight normal
 | 
			
		||||
		color #4078c0
 | 
			
		||||
 | 
			
		||||
	> p
 | 
			
		||||
		display block
 | 
			
		||||
		z-index 1
 | 
			
		||||
		margin 0
 | 
			
		||||
		font-size 0.7em
 | 
			
		||||
		color #555
 | 
			
		||||
 | 
			
		||||
		&.fetching
 | 
			
		||||
			text-align center
 | 
			
		||||
 | 
			
		||||
		a
 | 
			
		||||
			color #555
 | 
			
		||||
			text-decoration underline
 | 
			
		||||
 | 
			
		||||
	> a
 | 
			
		||||
		display block
 | 
			
		||||
		font-size 0.7em
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
		<h1>%fa:heart%%i18n:desktop.tags.mk-donation-home-widget.title%</h1>
 | 
			
		||||
		<p>
 | 
			
		||||
			{{ '%i18n:desktop.tags.mk-donation-home-widget.text%'.substr(0, '%i18n:desktop.tags.mk-donation-home-widget.text%'.indexOf('{')) }}
 | 
			
		||||
			<a href="/syuilo" v-user-preview="@syuilo">@syuilo</a>
 | 
			
		||||
			<a href="https://syuilo.com">@syuilo</a>
 | 
			
		||||
			{{ '%i18n:desktop.tags.mk-donation-home-widget.text%'.substr('%i18n:desktop.tags.mk-donation-home-widget.text%'.indexOf('}') + 1) }}
 | 
			
		||||
		</p>
 | 
			
		||||
	</article>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="mkw-nav">
 | 
			
		||||
	<mk-nav-links/>
 | 
			
		||||
	<mk-nav/>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue