<!-- 
    filename: graph.vue
    author: liubin
    date: 2023-08-31 14:00:02
    description: 
-->

<template>
	<div class="chart-wrapper">
		<div class="blue-title">各设备加工数量</div>
		<div class="chart" ref="chart"></div>
	</div>
</template>

<script>
import * as echarts from 'echarts';

export default {
	name: 'LineChartInEquipmentProcessAmount',
	components: {},
	props: ['equipmentList', 'render'],
	data() {
		return {
			chart: null,
			option: {
				color: ['#288AFF'],
				grid: {
					top: 64,
					left: '8%',
					right: 64,
					bottom: 56,
				},
				title: {
					show: false,
					text: '各设备加工数量',
					textStyle: {
						color: '#232323',
						fontSize: 16,
					},
					left: 'center',
					top: 24,
				},
				yAxis: {
					type: 'category',
					axisLine: {
						show: true,
						lineStyle: {
							color: '#777',
						},
					},
					axisTick: {
						show: false,
					},
					// data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
					data: [],
					name: '设备名',
					nameTextStyle: {
						fontSize: 14,
					},
				},
				xAxis: {
					type: 'value',
					axisLine: {
						show: true,
						lineStyle: {
							color: '#777',
						},
					},
					name: '数量',
					nameTextStyle: {
						fontSize: 14,
					},
				},
				series: [
					{
						// data: [120, 200, 150, 80, 70, 110, 130],
						data: [],
						type: 'bar',
						barWidth: 20,
						label: {
							show: true,
							distance: 50,
							formatter: '{c}',
						},
						showBackground: true,
						backgroundStyle: {
							color: 'rgba(180, 180, 180, 0.2)',
						},
					},
				],
			},
		};
	},
	watch: {
		render: {
			handler: function (newVal, oldVal) {
				if (!this.chart) this.chart = echarts.init(this.$refs.chart);
				this.$nextTick(() => {
					if (this.chart) this.chart.setOption(this.updateConfig(this.option));
				});
			},
			deep: true,
		},
	},
	beforeDestroy() {
		if (this.chart) this.chart.dispose();
	},
	methods: {
		updateConfig(config) {
			let nameData = [];
			let valueData = [];
			this.equipmentList.map((eq) => {
				nameData.push(eq.equipmentName);
				valueData.push(eq.totalQuantity);
			});
			config.yAxis.data = nameData;
			config.series[0].data = valueData;
			return config;
		},
	},
};
</script>

<style scoped lang="scss">
.chart-wrapper {
	height: 100%;
	flex: 1;
	// background: #f9f9f9;
}

.chart {
	height: 100%;
	width: 100%;
	// background: lightcoral;
}

.blue-title {
	position: relative;
	padding: 4px 0;
	padding-left: 12px;
	font-size: 14px;

	&::before {
		content: '';
		position: absolute;
		left: 0;
		top: 6px;
		height: 16px;
		width: 4px;
		border-radius: 1px;
		background: #0b58ff;
	}
}
</style>