<template>
	<view class="app-page">
		<view class="e-fixed"><tm-tabs color="light-blue" v-model="tab.activeIndex" :list="tab.list" align="center" @change="fnOnTabChange"></tm-tabs></view>
		<!-- 占位区域 -->
		<view style="width: 100vw;height: 90rpx;"></view>

		<!-- 骨架屏：加载区域 -->
		<view v-if="loading != 'success'" class="loading-wrap">
			<tm-skeleton model="listAvatr"></tm-skeleton>
			<tm-skeleton model="listAvatr"></tm-skeleton>
			<tm-skeleton model="listAvatr"></tm-skeleton>
		</view>

		<!-- 加载完成区域 -->
		<block v-else>
			<view v-if="dataList.length == 0" class="list-empty flex flex-center"><tm-empty icon="icon-shiliangzhinengduixiang-" label="暂无归档的文章"></tm-empty></view>
			<view v-else class="e-timeline tm-timeline mt-24">
				<block v-for="(item, index) in dataList" :key="index">
					<view class="tm-timeline-item tm-timeline-item--leftDir">
						<view style="width: 160rpx;">
							<view :style="{ width: '24rpx', height: '24rpx' }" :class="[black_tmeme ? 'bk' : '']" class="flex-center rounded tm-timeline-jidian border-white-a-2 grey-lighten-2 light-blue shadow-primary-4"></view>
							<view :style="{ marginTop: '-24rpx' }" :class="[index !== dataList.length - 1 ? 'tm-timeline-item-boder' : '', black_tmeme ? 'bk' : '']" class="grey-lighten-2"></view>
						</view>
						<view class="tm-timeline-item-content relative">
							<view class="tm-timeline-item-left">
								<view class="time text-weight-b mb-24">
									{{ item.year }}年
									<block v-if="tab.activeIndex == 0">{{ item.month }}月</block>
									<text class="text-size-s text-grey-darken-1 ml-24">（共发布 {{ item.posts.length }} 篇文章）</text>
								</view>
								<block v-if="item.posts.length != 0">
									<block v-for="(post, postIndex) in item.posts" :key="post.id">
										<tm-translate animation-name="fadeUp" :wait="calcAniWait(postIndex)">
											<view class="flex post shadow-3 pa-24 mb-24" :class="[globalAppSettings.layout.cardType]" @click="fnToArticleDetail(post)">
												<image class="post-thumbnail" :src="$utils.checkThumbnailUrl(post.thumbnail)" mode="aspectFill"></image>
												<view class="post-info pl-20">
													<view class="post-info_title text-overflow">{{ post.title }}</view>
													<view class="post-info_summary text-overflow-2 mt-12 text-size-s text-grey-darken-1">{{ post.summary }}</view>
													<view class="post-info_time mt-12  text-size-s text-grey-darken-1">
														<text class="iconfont icon-clock text-size-s mr-6"></text>
														<text class="time-label">发布时间：</text>
														{{ { d: post.createTime, f: 'yyyy年MM月dd日 星期w' } | formatTime }}
													</view>
												</view>
											</view>
										</tm-translate>
									</block>
								</block>
								<view v-else class="post-empty text-size-m text-grey-darken-1">该日期下暂无归档文章！</view>
							</view>
						</view>
					</view>
				</block>
			</view>
			<!-- 返回顶部 -->
			<tm-flotbutton @click="fnToTopPage" size="m" color="bg-gradient-light-blue-accent" icon="icon-angle-up"></tm-flotbutton>
		</block>
	</view>
</template>

<script>
	import tmSkeleton from '@/tm-vuetify/components/tm-skeleton/tm-skeleton.vue';
	import tmTranslate from '@/tm-vuetify/components/tm-translate/tm-translate.vue';
	import tmFlotbutton from '@/tm-vuetify/components/tm-flotbutton/tm-flotbutton.vue';
	import tmTabs from '@/tm-vuetify/components/tm-tabs/tm-tabs.vue';
	import tmEmpty from '@/tm-vuetify/components/tm-empty/tm-empty.vue';

	export default {
		components: {
			tmSkeleton,
			tmTranslate,
			tmFlotbutton,
			tmTabs,
			tmEmpty
		},
		data() {
			return {
				loading: 'loading',
				tab: {
					activeIndex: 0,
					list: ['按月份查看', '按年份查看']
				},
				queryParams: {
					size: 10,
					page: 0
				},
				result: null,
				dataList: [],
				api: 'getMonthArchives'
			};
		},
		computed: {
			black_tmeme: function() {
				return this.$tm.vx.state().tmVuetify.black;
			},
			color_tmeme: function() {
				return this.$tm.vx.state().tmVuetify.color;
			}
		},
		created() {
			this.fnGetData();
		},
		onPullDownRefresh() {
			this.fnGetData();
			this.queryParams.page = 0;
		},

		methods: {
			fnOnTabChange(index) {
				this.fnResetSetAniWaitIndex();
				const _api = ['getMonthArchives', 'getYearArchives'];
				this.api = _api[index];
				this.queryParams.page = 0;
				this.fnGetData();
			},
			fnGetData() {
				this.loading = 'loading';
				uni.showLoading({
					mask: true,
					title: '加载中...'
				});
				this.$httpApi[this.api](this.queryParams)
					.then(res => {
						this.result = res.data;
						this.dataList = res.data;
						setTimeout(() => {
							this.loading = 'success';
						}, 500);
					})
					.catch(err => {
						console.error(err);
						this.loading = 'error';
					})
					.finally(() => {
						setTimeout(() => {
							uni.hideLoading();
							uni.stopPullDownRefresh();
						}, 500);
					});
			},
			//跳转文章详情
			fnToArticleDetail(article) {
				uni.navigateTo({
					url: '/pagesA/article-detail/article-detail?articleId=' + article.id,
					animationType: 'slide-in-right'
				});
			}
		}
	};
</script>

<style lang="scss" scoped>
	.app-page {
		width: 100vw;
		min-height: 100vh;
		display: flex;
		flex-direction: column;
		background-color: #fafafd;
	}

	.loading-wrap {
		padding: 24rpx;
	}

	.list-empty {
		width: 100vw;
		height: 100vh;
	}

	.statistics {
		background-color: #ffffff;
	}

	.e-timeline {
		::v-deep {
			.tm-timeline-item>view:first-child {
				width: 110rpx !important;
			}

			.tm-timeline-item-left {
				max-width: 580rpx !important;
				width: 100% !important;
			}
		}
	}

	.tm-timeline {
		.tm-timeline-item {

			.tm-timeline-item-left,
			.tm-timeline-item-right {
				width: 200rpx;
				flex-shrink: 0;
			}

			.tm-timeline-item-content {
				display: flex;
				justify-content: center;
				align-items: flex-start;
				align-content: flex-start;
			}

			.tm-timeline-jidian {
				margin: auto;
			}

			&.tm-timeline-item--leftDir {
				display: flex;
				flex-flow: row;

				&.endright {
					justify-content: flex-end;
				}

				.tm-timeline-item-left,
				.tm-timeline-item-right {
					width: auto;
					max-width: 400rpx;
				}

				.tm-timeline-item-boder {
					height: 100%;
					width: 1px;
					margin: auto;
				}

				.tm-timeline-jidian {
					position: relative;
					margin: auto;
					z-index: 2;
				}

				.tm-timeline-item-content {
					display: flex;
					justify-content: flex-start;
					align-items: flex-start;
					align-content: flex-start;
				}
			}
		}
	}

	.post {
		width: 560rpx;
		border-radius: 12rpx;
		background-color: #fff;

		&.lr_image_text {}

		&.lr_text_image {
			.post-thumbnail {
				order: 2;
			}

			.post-info {
				order: 1;
				padding-left: 0;
				padding-right: 24rpx;
			}
		}

		&.tb_image_text {
			flex-direction: column;

			.post-thumbnail {
				width: 100%;
				height: 220rpx;
			}

			.post-info {
				width: 100%;
				padding-left: 0;

				&_title {
					margin-top: 12rpx;
				}

				&_time {
					.iconfont {
						display: none;
					}

					.time-label {
						display: inline-block;
					}
				}
			}
		}

		&.tb_text_image {
			flex-direction: column;

			.post-thumbnail {
				order: 2;
				width: 100%;
				height: 220rpx;
				margin-top: 12rpx;
			}

			.post-info {
				order: 1;
				width: 100%;
				padding-left: 0;

				&_time {
					.iconfont {
						display: none;
					}

					.time-label {
						display: inline-block;
					}
				}
			}
		}

		&.only_text {
			.post-info {
				padding: 6rpx;

				&_time {
					margin-top: 20rpx;

					.iconfont {
						display: none;
					}

					.time-label {
						display: inline-block;
					}
				}
			}

			.post-thumbnail {
				display: none;
			}
		}
	}

	.post-thumbnail {
		border-radius: 6rpx;
		width: 200rpx;
		height: 170rpx;
	}

	.post-info {
		width: 0;
		flex-grow: 1;

		&_title {
			color: #303133;
			font-size: 28rpx;
			font-weight: bold;
		}

		&_summary {
			display: -webkit-box;
			line-height: 1.6;
		}

		&_time {
			.time-label {
				display: none;
			}
		}
	}
</style>