99 lines
2.8 KiB
Vue
99 lines
2.8 KiB
Vue
<template>
|
|
<div class="">
|
|
<el-radio-group
|
|
v-model="signalModal"
|
|
:disabled="disabled"
|
|
@change="onSignalModalUpdate"
|
|
>
|
|
<!-- 数字模式 -->
|
|
<el-radio-button :label="0">
|
|
<el-tooltip
|
|
effect="dark"
|
|
:content="t('toolbar.modal.common-digital')"
|
|
placement="bottom"
|
|
raw-content
|
|
>
|
|
<span class="iconfont icon-common-digital"></span>
|
|
</el-tooltip>
|
|
</el-radio-button>
|
|
<!-- 阶梯模拟 -->
|
|
<el-radio-button :label="1">
|
|
<el-tooltip
|
|
effect="dark"
|
|
:content="t('toolbar.modal.ladder-analog')"
|
|
placement="bottom"
|
|
raw-content
|
|
><span class="iconfont icon-ladder-analog"></span></el-tooltip>
|
|
</el-radio-button>
|
|
<!-- 折线模拟 -->
|
|
<el-radio-button :label="2">
|
|
<el-tooltip
|
|
effect="dark"
|
|
:content="t('toolbar.modal.line-analog')"
|
|
placement="bottom"
|
|
raw-content
|
|
><span class="iconfont icon-line-analog"></span></el-tooltip>
|
|
|
|
</el-radio-button>
|
|
</el-radio-group>
|
|
</div>
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
import { globalLookup } from '@/hook/global';
|
|
import { sidebarSelectedWires } from '@/hook/sidebar-select-wire';
|
|
import { defineComponent, nextTick, ref, watch } from 'vue';
|
|
import { useI18n } from 'vue-i18n';
|
|
|
|
// 负责展示波形形式的模块,分为数字形式、折线模拟形式、阶梯模拟形式
|
|
defineComponent({ name: 'signal-modal' });
|
|
const { t } = useI18n();
|
|
|
|
const signalModal = ref(0);
|
|
const disabled = ref(true);
|
|
|
|
function onSignalModalUpdate() {
|
|
console.log('enter change');
|
|
const links = globalLookup.sidebarSelectedWireLinks;
|
|
if (links.size > 0) {
|
|
const modal = signalModal.value;
|
|
// 更新渲染选项
|
|
for (const link of links) {
|
|
globalLookup.setRenderOption(link, 'renderModal', modal);
|
|
globalLookup.waveRender.resetVertice(link);
|
|
}
|
|
|
|
// 重新渲染
|
|
globalLookup.render();
|
|
}
|
|
}
|
|
|
|
|
|
sidebarSelectedWires.addToPipe(lastLink => {
|
|
if (lastLink) {
|
|
const option = globalLookup.currentSignalRenderOptions.get(lastLink);
|
|
if (option && typeof option.renderModal === 'number') {
|
|
signalModal.value = option.renderModal;
|
|
disabled.value = false;
|
|
} else {
|
|
signalModal.value = 0;
|
|
disabled.value = false;
|
|
}
|
|
} else {
|
|
signalModal.value = 0;
|
|
disabled.value = true;
|
|
}
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
.iconfont {
|
|
font-size: 1.10em;
|
|
font-weight: 800;
|
|
}
|
|
|
|
</style> |