Squashed commit of the following:
All checks were successful
local-test-CICD / Docker-Build (push) Successful in 2m41s
All checks were successful
local-test-CICD / Docker-Build (push) Successful in 2m41s
commit16230d77e4
Author: joylink_zhaoerwei <Bob_Engineer@163.com> Date: Mon Oct 14 17:12:22 2024 +0800 ISCS底部报警 commit0787c7419e
Author: joylink_fanyuhong <18706759286@163.com> Date: Mon Oct 14 15:36:57 2024 +0800 代码调整 commitaacfdf8b2d
Author: joylink_zhaoerwei <Bob_Engineer@163.com> Date: Sat Oct 12 17:02:24 2024 +0800 完善绘制风格配置 commit975a8a89aa
Merge:37c56e2
38bc44f
Author: joylink_fanyuhong <18706759286@163.com> Date: Fri Oct 11 17:14:10 2024 +0800 Merge branch 'develop' of https://gitea.joylink.club/joylink/rtss-simulation-app-client into develop commit37c56e2962
Author: joylink_fanyuhong <18706759286@163.com> Date: Fri Oct 11 17:14:08 2024 +0800 删除fas遗留文件 commit38bc44f2f9
Author: joylink_zhaoerwei <Bob_Engineer@163.com> Date: Fri Oct 11 17:07:53 2024 +0800 绘制选择bug赞提(粗处理) commit8dc7214ceb
Author: joylink_zhaoerwei <Bob_Engineer@163.com> Date: Fri Oct 11 15:16:31 2024 +0800 公共的图形——圆 commitc5beb9fbfd
Merge:fd0bfb0
63eff00
Author: joylink_fanyuhong <18706759286@163.com> Date: Fri Oct 11 09:57:41 2024 +0800 Merge branch 'develop' of https://gitea.joylink.club/joylink/rtss-simulation-app-client into develop commitfd0bfb0ab2
Author: joylink_fanyuhong <18706759286@163.com> Date: Fri Oct 11 09:52:46 2024 +0800 同步数据调整 commit63eff006b0
Author: joylink_zhaoerwei <Bob_Engineer@163.com> Date: Thu Oct 10 17:19:36 2024 +0800 修改矩形碰撞检测+动态加载绘制工具
This commit is contained in:
parent
afcd3954e1
commit
901f38be6c
@ -18,7 +18,7 @@
|
||||
"@quasar/extras": "^1.16.4",
|
||||
"axios": "^1.2.1",
|
||||
"google-protobuf": "^3.21.4",
|
||||
"jl-graphic": "git+https://gitea.joylink.club/joylink/graphic-pixi.git#v0.1.18",
|
||||
"jl-graphic": "git+https://gitea.joylink.club/joylink/graphic-pixi.git#v0.1.19",
|
||||
"js-base64": "^3.7.5",
|
||||
"pinia": "^2.0.11",
|
||||
"quasar": "^2.16.0",
|
||||
|
246
src/components/Iscs/IscsBottomAlarm.vue
Normal file
246
src/components/Iscs/IscsBottomAlarm.vue
Normal file
@ -0,0 +1,246 @@
|
||||
<template>
|
||||
<div class="bottom-alarm">
|
||||
<div class="bottom-alarm-left">
|
||||
<div class="left-up">
|
||||
<div class="left-up-icon">
|
||||
<q-icon size="20px" color="indigo-8" name="notifications" />
|
||||
</div>
|
||||
<q-separator vertical />
|
||||
<div class="left-up-text">
|
||||
<div class="left-up-text-up">
|
||||
当前报警总数:{{ showData.currentAlarmTotal }}
|
||||
</div>
|
||||
<div>未确认报警数:{{ showData.noConfirmNumber }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<q-separator />
|
||||
<div class="left-down">
|
||||
<div>当前用户:{{ showData.currentUser }}</div>
|
||||
<div>
|
||||
当前用户组:<span class="left-down-text">{{
|
||||
showData.currentUserGroup
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<q-markup-table separator="cell" ref="tableRef" class="bottom-alarm-middle">
|
||||
<thead class="table-head">
|
||||
<tr class="table-head-tr">
|
||||
<th v-for="header in columnDefs" :key="header.name">
|
||||
{{ header.label }}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="row in rows" :key="row.dataKey">
|
||||
<td
|
||||
class="table-body-tr"
|
||||
align="center"
|
||||
v-for="header in columnDefs"
|
||||
:key="header.name"
|
||||
>
|
||||
{{ row[header.field] }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</q-markup-table>
|
||||
<div class="bottom-alarm-right">
|
||||
<div class="right-text">
|
||||
<q-img
|
||||
src="https://joylink.club/oss-rtss/logo/favicon_login.png"
|
||||
class="right-img"
|
||||
/>玖链科技
|
||||
</div>
|
||||
<div class="right-icon">
|
||||
<q-btn flat class="icon-button">
|
||||
<q-icon size="30px" color="indigo-10" name="volume_up" />
|
||||
</q-btn>
|
||||
<q-btn flat class="icon-button">
|
||||
<q-icon size="30px" color="indigo-10" name="warning_amber" />
|
||||
</q-btn>
|
||||
<q-btn flat class="icon-button">
|
||||
<q-icon size="30px" color="indigo-10" name="search" />
|
||||
</q-btn>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, onMounted } from 'vue';
|
||||
import { useQuasar, type QTableColumn } from 'quasar';
|
||||
import { PagingQueryParams, userPageQuery } from 'src/api/UserApi';
|
||||
import { ApiError } from 'src/boot/axios';
|
||||
|
||||
const $q = useQuasar();
|
||||
|
||||
onMounted(() => {
|
||||
//onRequest();
|
||||
});
|
||||
|
||||
const columnDefs: QTableColumn[] = [
|
||||
{ name: 'id', label: '是否确认', field: 'id', align: 'center' },
|
||||
{
|
||||
name: 'name',
|
||||
label: '产生时间',
|
||||
field: 'name',
|
||||
required: true,
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
name: 'createdAt',
|
||||
label: '车站名',
|
||||
field: (row) => new Date(row.createdAt).toLocaleString(),
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
name: 'mobile',
|
||||
label: '子系统名',
|
||||
field: 'mobile',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
name: 'email',
|
||||
label: '优先级',
|
||||
field: 'email',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
name: 'email',
|
||||
label: '描述',
|
||||
field: 'email',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
name: 'email',
|
||||
label: '值',
|
||||
field: 'email',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
name: 'email',
|
||||
label: '重复次数',
|
||||
field: 'email',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
name: 'email',
|
||||
label: '当前状态',
|
||||
field: 'email',
|
||||
align: 'center',
|
||||
},
|
||||
];
|
||||
|
||||
const rows = reactive([]);
|
||||
|
||||
const showData = reactive({
|
||||
currentAlarmTotal: 2,
|
||||
noConfirmNumber: 2,
|
||||
currentUser: '赵',
|
||||
currentUserGroup: '值班员',
|
||||
});
|
||||
|
||||
// eslint-disable-next-line
|
||||
async function onRequest() {
|
||||
const variables: PagingQueryParams = {
|
||||
page: {
|
||||
page: 1,
|
||||
itemsPerPage: 10,
|
||||
},
|
||||
query: {},
|
||||
};
|
||||
try {
|
||||
const response = await userPageQuery(variables);
|
||||
rows.splice(0, rows.length, ...(response.items as []));
|
||||
} catch (err) {
|
||||
const error = err as ApiError;
|
||||
$q.notify({
|
||||
type: 'negative',
|
||||
message: error.title,
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.bottom-alarm {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 140px;
|
||||
background-color: #002060;
|
||||
padding: 8px;
|
||||
.bottom-alarm-left {
|
||||
width: 160px;
|
||||
background-image: linear-gradient(to bottom, #e1e5f1, #b5bede);
|
||||
margin-right: 8px;
|
||||
padding: 5px;
|
||||
.left-up {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 50%;
|
||||
.left-up-icon {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.left-up-text {
|
||||
margin-left: 10px;
|
||||
color: black;
|
||||
.left-up-text-up {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.left-down {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
height: 50%;
|
||||
color: black;
|
||||
.left-down-text {
|
||||
font-weight: 800;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom-alarm-middle {
|
||||
flex-grow: 1;
|
||||
.table-head {
|
||||
background-color: #efebde;
|
||||
.table-head-tr {
|
||||
height: 33px !important;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
.table-body-tr {
|
||||
height: 33px !important;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
.bottom-alarm-right {
|
||||
width: 200px;
|
||||
background-image: linear-gradient(to bottom, #e1e5f1, #b5bede);
|
||||
margin-left: 8px;
|
||||
.right-text {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 50%;
|
||||
color: #29519c;
|
||||
font-size: 28px;
|
||||
font-weight: 800;
|
||||
.right-img {
|
||||
width: 50px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
.right-icon {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 50%;
|
||||
.icon-button {
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,50 +0,0 @@
|
||||
<template>
|
||||
<!-- 绘制图形模板属性 -->
|
||||
<div v-if="drawStore.drawMode">
|
||||
<q-card flat>
|
||||
<q-card-section>
|
||||
<div class="text-h6">{{ drawStore.drawGraphicName + ' 模板' }}</div>
|
||||
</q-card-section>
|
||||
<q-separator inset></q-separator>
|
||||
<q-card-section> </q-card-section>
|
||||
</q-card>
|
||||
</div>
|
||||
<!-- 画布或图形对象属性 -->
|
||||
<div v-else-if="drawStore.selectedGraphics !== null">
|
||||
<q-card flat>
|
||||
<q-card-section>
|
||||
<div class="text-h6">{{ drawStore.selectedObjName + ' 属性' }}</div>
|
||||
</q-card-section>
|
||||
<q-separator inset></q-separator>
|
||||
<template v-if="drawStore.selectedGraphics.length === 0">
|
||||
<q-card-section>
|
||||
<canvas-property></canvas-property>
|
||||
</q-card-section>
|
||||
</template>
|
||||
<template v-else-if="drawStore.selectedGraphics.length === 1">
|
||||
<q-card-section>
|
||||
<iscs-text-property
|
||||
v-if="drawStore.selectedGraphicType === TextContent.Type"
|
||||
/>
|
||||
<rect-property
|
||||
v-else-if="drawStore.selectedGraphicType === Rect.Type"
|
||||
/>
|
||||
</q-card-section>
|
||||
</template>
|
||||
<template v-else-if="drawStore.selectedGraphics.length > 1">
|
||||
<multiple-select-property></multiple-select-property>
|
||||
</template>
|
||||
</q-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useDrawStore } from 'src/stores/draw-store';
|
||||
import CanvasProperty from './properties/FireAlarm/CanvasFireAlarmProperty.vue';
|
||||
import IscsTextProperty from './properties/IscsTextProperty.vue';
|
||||
import { TextContent } from 'src/graphics/textContent/TextContent';
|
||||
import RectProperty from './properties/RectProperty.vue';
|
||||
import { Rect } from 'src/graphics/rect/Rect';
|
||||
|
||||
const drawStore = useDrawStore();
|
||||
</script>
|
@ -36,6 +36,9 @@
|
||||
<line-property
|
||||
v-else-if="drawStore.selectedGraphicType === Line.Type"
|
||||
/>
|
||||
<circle-property
|
||||
v-else-if="drawStore.selectedGraphicType === Circle.Type"
|
||||
/>
|
||||
<cctv-button-property
|
||||
v-else-if="drawStore.selectedGraphicType === CCTVButton.Type"
|
||||
/>
|
||||
@ -50,7 +53,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useDrawStore } from 'src/stores/draw-store';
|
||||
import CanvasProperty from './properties/CCTV/CanvasCCTVProperty.vue';
|
||||
import CanvasProperty from './properties/CanvasIscsProperty.vue';
|
||||
import IscsTextProperty from './properties/IscsTextProperty.vue';
|
||||
import { TextContent } from 'src/graphics/textContent/TextContent';
|
||||
import cctvButtonProperty from './properties/CCTV/CCTVButtonProperty.vue';
|
||||
@ -60,6 +63,13 @@ import { Rect } from 'src/graphics/rect/Rect';
|
||||
import LineTemplate from './templates/LineTemplate.vue';
|
||||
import LineProperty from './properties/LineProperty.vue';
|
||||
import { Line } from 'src/graphics/line/Line';
|
||||
import CircleProperty from './properties/CircleProperty.vue';
|
||||
import { Circle } from 'src/graphics/circle/Circle';
|
||||
import { watch } from 'vue';
|
||||
|
||||
const drawStore = useDrawStore();
|
||||
watch(
|
||||
() => drawStore.selectedGraphics,
|
||||
() => {}
|
||||
);
|
||||
</script>
|
||||
|
94
src/components/draw-app/properties/CircleProperty.vue
Normal file
94
src/components/draw-app/properties/CircleProperty.vue
Normal file
@ -0,0 +1,94 @@
|
||||
<template>
|
||||
<q-form class="q-gutter-sm">
|
||||
<q-input outlined readonly v-model="circleModel.id" label="id" />
|
||||
<q-input
|
||||
outlined
|
||||
v-model.number="circleModel.lineWidth"
|
||||
type="number"
|
||||
@blur="onUpdate"
|
||||
label="线宽"
|
||||
lazy-rules
|
||||
:rules="[(val) => (val && val > 0) || '线宽必须大于0']"
|
||||
/>
|
||||
<q-input
|
||||
outlined
|
||||
v-model="circleModel.lineColor"
|
||||
@blur="onUpdate"
|
||||
label="线色"
|
||||
lazy-rules
|
||||
:rules="[(val) => (val && val.length > 0) || '线色不能为空']"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon name="colorize" class="cursor-pointer">
|
||||
<q-popup-proxy cover transition-show="scale" transition-hide="scale">
|
||||
<q-color
|
||||
v-model="circleModel.lineColor"
|
||||
@change="
|
||||
(val) => {
|
||||
circleModel.lineColor = val;
|
||||
onUpdate();
|
||||
}
|
||||
"
|
||||
/>
|
||||
</q-popup-proxy>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
<q-input
|
||||
outlined
|
||||
v-model="circleModel.fillColor"
|
||||
@change="onUpdate"
|
||||
label="填充色"
|
||||
lazy-rules
|
||||
:rules="[(val) => (val && val.length > 0) || '线色不能为空']"
|
||||
>
|
||||
<template v-slot:append>
|
||||
<q-icon name="colorize" class="cursor-pointer">
|
||||
<q-popup-proxy cover transition-show="scale" transition-hide="scale">
|
||||
<q-color
|
||||
v-model="circleModel.fillColor"
|
||||
@change="
|
||||
(val) => {
|
||||
circleModel.fillColor = val;
|
||||
onUpdate();
|
||||
}
|
||||
"
|
||||
/>
|
||||
</q-popup-proxy>
|
||||
</q-icon>
|
||||
</template>
|
||||
</q-input>
|
||||
<q-input
|
||||
outlined
|
||||
v-model="circleModel.alpha"
|
||||
mask="#.###"
|
||||
@blur="onUpdate"
|
||||
label="透明度"
|
||||
lazy-rules
|
||||
:rules="[
|
||||
(val) => (val && val > 0 && val <= 1) || '透明度必须大于0且小于等于1',
|
||||
]"
|
||||
/>
|
||||
<q-input
|
||||
outlined
|
||||
v-model.number="circleModel.radius"
|
||||
type="number"
|
||||
@blur="onUpdate"
|
||||
label="圆半径"
|
||||
lazy-rules
|
||||
:rules="[(val) => val >= 0 || '圆半径必须大于等于0']"
|
||||
/>
|
||||
</q-form>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useFormData } from 'src/components/DrawAppFormUtils';
|
||||
import { CircleData } from 'src/drawApp/graphics/CircleInteraction';
|
||||
import { useDrawStore } from 'src/stores/draw-store';
|
||||
|
||||
const drawStore = useDrawStore();
|
||||
const { data: circleModel, onUpdate } = useFormData(
|
||||
new CircleData(),
|
||||
drawStore.getDrawApp()
|
||||
);
|
||||
</script>
|
@ -37,7 +37,7 @@
|
||||
<q-input
|
||||
outlined
|
||||
v-model="rectModel.fillColor"
|
||||
@blur="onUpdate"
|
||||
@change="onUpdate"
|
||||
label="填充色"
|
||||
lazy-rules
|
||||
:rules="[(val) => (val && val.length > 0) || '线色不能为空']"
|
||||
@ -61,6 +61,7 @@
|
||||
<q-input
|
||||
outlined
|
||||
v-model="rectModel.alpha"
|
||||
mask="#.###"
|
||||
@blur="onUpdate"
|
||||
label="透明度"
|
||||
lazy-rules
|
||||
@ -93,7 +94,7 @@
|
||||
@blur="onUpdate"
|
||||
label="圆角半径"
|
||||
lazy-rules
|
||||
:rules="[(val) => (val && val > 0) || '圆角半径必须大于0']"
|
||||
:rules="[(val) => val >= 0 || '圆角半径必须大于等于0']"
|
||||
/>
|
||||
</q-form>
|
||||
</template>
|
||||
|
@ -1,118 +1,182 @@
|
||||
import { IscsStyle } from 'src/api/DraftApi';
|
||||
|
||||
export interface I_DA_SHI_ZHI_NENG {
|
||||
menuName: string;
|
||||
icon: string;
|
||||
activeIcon: string;
|
||||
sunMenu: {
|
||||
sunMenuName: string;
|
||||
displayForm: DisplayForm;
|
||||
heightPercent?: number; //绘制占的百分比
|
||||
}[];
|
||||
}
|
||||
|
||||
export enum DisplayForm {
|
||||
draw,
|
||||
component,
|
||||
drawAndComponent,
|
||||
}
|
||||
|
||||
//达实智能(福州一号线)
|
||||
const DA_SHI_ZHI_NENG = [
|
||||
const DA_SHI_ZHI_NENG: I_DA_SHI_ZHI_NENG[] = [
|
||||
{
|
||||
menuName: 'Plan',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-Plan',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-Plan-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [
|
||||
{ sunMenuName: '设备运行图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '站厅布局图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '站台布局图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '出入口布局图', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'PSCADA',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-PSCADA',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-PSCADA-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [
|
||||
{ sunMenuName: '一次图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '自动化系统图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '定值召唤', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '实时SOE', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '历史SOE', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '光字幕', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '交流直屏', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'BAS',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-BAS',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-BAS-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [
|
||||
{ sunMenuName: '大系统', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '小系统', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '隧道通风系统', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '水系统', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '给排水', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '电扶梯', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '照明系统', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '传感器', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '导向标识/广告', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '人防门', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: 'BAS系统', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '模式控制', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '时间表', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '操作场所切换', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'FAS',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-FAS',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-FAS-active',
|
||||
sunMenu: [
|
||||
{ sunMenuName: '设备分区图' },
|
||||
{ sunMenuName: '火灾报警平面图' },
|
||||
{ sunMenuName: 'FAS气灭系统图' },
|
||||
{ sunMenuName: '设备分区图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '火灾报警平面图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: 'FAS气灭系统图', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'TFDS',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-TFDS',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-TFDS-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [
|
||||
{ sunMenuName: '感温光纤状态监视图', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'AFC',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-AFC',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-AFC-active',
|
||||
sunMenu: [{ sunMenuName: '屏蔽门' }],
|
||||
sunMenu: [
|
||||
{ sunMenuName: '自动售检票系统监视图', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'CCTV',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-CCTV',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-CCTV-active',
|
||||
sunMenu: [{ sunMenuName: '监控布局图' }, { sunMenuName: 'CCTV设备布局图' }],
|
||||
sunMenu: [
|
||||
{ sunMenuName: '监控布局图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: 'CCTV设备布局图', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'PIS',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-PIS',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-PIS-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [{ sunMenuName: 'PIS监控', displayForm: DisplayForm.draw }],
|
||||
},
|
||||
{
|
||||
menuName: 'PA',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-PA',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-PA-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [{ sunMenuName: 'PA监控', displayForm: DisplayForm.draw }],
|
||||
},
|
||||
{
|
||||
menuName: 'SIG/RAD',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-SIG/RAD',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-SIG/RAD-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [{ sunMenuName: '子目录', displayForm: DisplayForm.component }],
|
||||
},
|
||||
{
|
||||
menuName: 'ACS',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-ACS',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-ACS-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [
|
||||
{ sunMenuName: '门禁总览图', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '门禁监视布局图-站厅', displayForm: DisplayForm.draw },
|
||||
{ sunMenuName: '门禁监视布局图-站台', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'PSD',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-PSD',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-PSD-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [{ sunMenuName: '屏蔽门系统图', displayForm: DisplayForm.draw }],
|
||||
},
|
||||
{
|
||||
menuName: 'FG',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-FG',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-FG-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [
|
||||
{ sunMenuName: '防淹门状态监视图', displayForm: DisplayForm.draw },
|
||||
],
|
||||
},
|
||||
{
|
||||
menuName: 'ALM',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-ALM',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-ALM-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [{ sunMenuName: '子目录', displayForm: DisplayForm.component }],
|
||||
},
|
||||
{
|
||||
menuName: 'NMS',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-NMS',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-NMS-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [{ sunMenuName: '网络状态监视图', displayForm: DisplayForm.draw }],
|
||||
},
|
||||
{
|
||||
menuName: 'OPS',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-OPS',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-OPS-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [{ sunMenuName: '子目录', displayForm: DisplayForm.component }],
|
||||
},
|
||||
{
|
||||
menuName: '数据',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-Data',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-Data-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [{ sunMenuName: '子目录', displayForm: DisplayForm.component }],
|
||||
},
|
||||
{
|
||||
menuName: '联动',
|
||||
icon: 'svguse:../iscsMenuIcon.svg#icon-Linkage',
|
||||
activeIcon: 'svguse:../iscsMenuIcon.svg#icon-Linkage-active',
|
||||
sunMenu: [{ sunMenuName: '子目录' }],
|
||||
sunMenu: [
|
||||
{
|
||||
sunMenuName: '子目录',
|
||||
displayForm: DisplayForm.drawAndComponent,
|
||||
heightPercent: 50,
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
|
@ -26,6 +26,9 @@ import { sync_data_message } from 'src/protos/sync_data_message';
|
||||
import { LineDraw } from 'src/graphics/line/LineDrawAssistant';
|
||||
import { Line, LineTemplate } from 'src/graphics/line/Line';
|
||||
import { LineData } from './graphics/LineInteraction';
|
||||
import { CircleDraw } from 'src/graphics/circle/CircleDrawAssistant';
|
||||
import { Circle, CircleTemplate } from 'src/graphics/circle/Circle';
|
||||
import { CircleData } from './graphics/CircleInteraction';
|
||||
|
||||
const UndoOptions: MenuItemOptions = {
|
||||
name: '撤销',
|
||||
@ -54,6 +57,7 @@ export function initCommonDrawApp(app: IDrawApp) {
|
||||
new TextContentDraw(app, new TextContentTemplate(new IscsTextData()));
|
||||
new RectDraw(app, new RectTemplate(new RectData()));
|
||||
new LineDraw(app, new LineTemplate(new LineData()));
|
||||
new CircleDraw(app, new CircleTemplate(new CircleData()));
|
||||
// 画布右键菜单
|
||||
app.registerMenu(DefaultCanvasMenu);
|
||||
|
||||
@ -83,6 +87,7 @@ interface ICommonStorage {
|
||||
texts: iscsGraphicData.Text[];
|
||||
rects: iscsGraphicData.Rect[];
|
||||
lines: iscsGraphicData.Line[];
|
||||
circles: iscsGraphicData.Circle[];
|
||||
};
|
||||
}
|
||||
export function loadCommonDrawDatas(storage: ICommonStorage): GraphicData[] {
|
||||
@ -100,6 +105,9 @@ export function loadCommonDrawDatas(storage: ICommonStorage): GraphicData[] {
|
||||
storage.commonGraphicStorage.lines.forEach((line) => {
|
||||
datas.push(new LineData(line));
|
||||
});
|
||||
storage.commonGraphicStorage.circles.forEach((circle) => {
|
||||
datas.push(new CircleData(circle));
|
||||
});
|
||||
return datas;
|
||||
}
|
||||
|
||||
@ -118,13 +126,20 @@ export function saveCommonDrawDatas(app: IDrawApp, storage: ICommonStorage) {
|
||||
storage.commonGraphicStorage.arrows.push((arrowData as ArrowData).data);
|
||||
} else if (g instanceof TextContent) {
|
||||
const textContentData = g.saveData();
|
||||
storage.commonGraphicStorage.texts.push((textContentData as IscsTextData).data);
|
||||
storage.commonGraphicStorage.texts.push(
|
||||
(textContentData as IscsTextData).data
|
||||
);
|
||||
} else if (g instanceof Rect) {
|
||||
const rectData = g.saveData();
|
||||
storage.commonGraphicStorage.rects.push((rectData as RectData).data);
|
||||
} else if (g instanceof Line) {
|
||||
const lineData = g.saveData();
|
||||
storage.commonGraphicStorage.lines.push((lineData as LineData).data);
|
||||
} else if (g instanceof Circle) {
|
||||
const circleData = g.saveData();
|
||||
storage.commonGraphicStorage.circles.push(
|
||||
(circleData as CircleData).data
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
@ -194,11 +209,19 @@ export function handlerNoEditCommonData(
|
||||
break;
|
||||
case Arrow.Type:
|
||||
const arrowData = iscsGraphicData.Arrow.deserialize(data.data);
|
||||
syncNoEditData(operationType, arrowData, storage.commonGraphicStorage.arrows);
|
||||
syncNoEditData(
|
||||
operationType,
|
||||
arrowData,
|
||||
storage.commonGraphicStorage.arrows
|
||||
);
|
||||
break;
|
||||
case TextContent.Type:
|
||||
const iscsTextData = iscsGraphicData.Text.deserialize(data.data);
|
||||
syncNoEditData(operationType, iscsTextData, storage.commonGraphicStorage.texts);
|
||||
syncNoEditData(
|
||||
operationType,
|
||||
iscsTextData,
|
||||
storage.commonGraphicStorage.texts
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,89 +0,0 @@
|
||||
import {
|
||||
CombinationKey,
|
||||
IDrawApp,
|
||||
IGraphicStorage,
|
||||
JlGraphic,
|
||||
KeyListener,
|
||||
newDrawApp,
|
||||
} from 'jl-graphic';
|
||||
import { FASGraphicData } from 'src/protos/fas_graphic_data';
|
||||
import { fromUint8Array } from 'js-base64';
|
||||
import {
|
||||
initCommonDrawApp,
|
||||
saveCommonDrawDatas,
|
||||
saveDrawToServer,
|
||||
} from './commonApp';
|
||||
import { useDrawStore } from 'src/stores/draw-store';
|
||||
|
||||
let drawApp: IDrawApp | null = null;
|
||||
|
||||
export function getFASDrawApp(): IDrawApp | null {
|
||||
return drawApp;
|
||||
}
|
||||
|
||||
export function destroyFASDrawApp(): void {
|
||||
if (drawApp) {
|
||||
drawApp.destroy();
|
||||
drawApp = null;
|
||||
}
|
||||
}
|
||||
|
||||
export function initFASDrawApp(): IDrawApp {
|
||||
const isSupportDeletion = (g: JlGraphic) => {
|
||||
console.log(g);
|
||||
return true;
|
||||
};
|
||||
drawApp = newDrawApp({
|
||||
dataLoader: loadDrawDatas,
|
||||
isSupportDeletion: isSupportDeletion,
|
||||
});
|
||||
const app = drawApp;
|
||||
initCommonDrawApp(app);
|
||||
// new CCTVButtonDraw(app, new CCTVButtonTemplate(new CCTVButtonData()));
|
||||
|
||||
app.addKeyboardListener(
|
||||
new KeyListener({
|
||||
value: 'KeyS',
|
||||
global: true,
|
||||
combinations: [CombinationKey.Ctrl],
|
||||
onPress: () => {
|
||||
saveDrawToServer(saveDrawDatas(app));
|
||||
},
|
||||
})
|
||||
);
|
||||
return drawApp;
|
||||
}
|
||||
|
||||
export async function loadDrawDatas(): Promise<IGraphicStorage> {
|
||||
const drawStore = useDrawStore();
|
||||
const id = drawStore.draftId;
|
||||
if (!id) {
|
||||
throw new Error('获取数据异常:为获取到草稿地图ID');
|
||||
}
|
||||
/* const { proto: base64 } = await getDraft(id);
|
||||
if (base64) {
|
||||
const storage = iscsGraphicData.IscsGraphicStorage.deserialize(
|
||||
toUint8Array(base64)
|
||||
);
|
||||
const datas = loadCommonDrawDatas(storage);} */
|
||||
return Promise.resolve({
|
||||
datas: [],
|
||||
});
|
||||
}
|
||||
|
||||
export function saveDrawDatas(app: IDrawApp) {
|
||||
let storage = new FASGraphicData.FASGraphicStorage();
|
||||
storage = saveCommonDrawDatas(
|
||||
app,
|
||||
storage
|
||||
) as FASGraphicData.FASGraphicStorage;
|
||||
const graphics = app.queryStore.getAllGraphics();
|
||||
/* graphics.forEach((g) => {
|
||||
if (TrackSection.Type === g.type) {
|
||||
const trackSectionData = (g as TrackSection).saveData();
|
||||
storage.trackSections.push((trackSectionData as TrackSectionData).data);
|
||||
} }) */
|
||||
console.log(storage, '保存数据', graphics);
|
||||
const base64 = fromUint8Array(storage.serialize());
|
||||
return base64;
|
||||
}
|
76
src/drawApp/graphics/CircleInteraction.ts
Normal file
76
src/drawApp/graphics/CircleInteraction.ts
Normal file
@ -0,0 +1,76 @@
|
||||
import * as pb_1 from 'google-protobuf';
|
||||
import { IPointData } from 'pixi.js';
|
||||
import { ICircleData, Circle } from 'src/graphics/circle/Circle';
|
||||
import { iscsGraphicData } from 'src/protos/iscs_graphic_data';
|
||||
import { GraphicDataBase } from './GraphicDataBase';
|
||||
import { common } from 'src/protos/common';
|
||||
|
||||
export class CircleData extends GraphicDataBase implements ICircleData {
|
||||
constructor(data?: iscsGraphicData.Circle) {
|
||||
let circle;
|
||||
if (!data) {
|
||||
circle = new iscsGraphicData.Circle({
|
||||
common: GraphicDataBase.defaultCommonInfo(Circle.Type),
|
||||
});
|
||||
} else {
|
||||
circle = data;
|
||||
}
|
||||
super(circle);
|
||||
}
|
||||
|
||||
public get data(): iscsGraphicData.Circle {
|
||||
return this.getData<iscsGraphicData.Circle>();
|
||||
}
|
||||
|
||||
get code(): string {
|
||||
return this.data.code;
|
||||
}
|
||||
set code(v: string) {
|
||||
this.data.code = v;
|
||||
}
|
||||
get lineWidth(): number {
|
||||
return this.data.lineWidth;
|
||||
}
|
||||
set lineWidth(v: number) {
|
||||
this.data.lineWidth = v;
|
||||
}
|
||||
get lineColor(): string {
|
||||
return this.data.lineColor;
|
||||
}
|
||||
set lineColor(v: string) {
|
||||
this.data.lineColor = v;
|
||||
}
|
||||
get position(): IPointData {
|
||||
return this.data.position;
|
||||
}
|
||||
set position(point: IPointData) {
|
||||
this.data.position = new common.Point({ x: point.x, y: point.y });
|
||||
}
|
||||
get radius(): number {
|
||||
return this.data.radius;
|
||||
}
|
||||
set radius(v: number) {
|
||||
this.data.radius = v;
|
||||
}
|
||||
get fillColor(): string {
|
||||
return this.data.fillColor;
|
||||
}
|
||||
set fillColor(v: string) {
|
||||
this.data.fillColor = v;
|
||||
}
|
||||
get alpha(): number {
|
||||
return this.data.alpha;
|
||||
}
|
||||
set alpha(v: number) {
|
||||
this.data.alpha = v;
|
||||
}
|
||||
clone(): CircleData {
|
||||
return new CircleData(this.data.cloneMessage());
|
||||
}
|
||||
copyFrom(data: CircleData): void {
|
||||
pb_1.Message.copyInto(data.data, this.data);
|
||||
}
|
||||
eq(other: CircleData): boolean {
|
||||
return pb_1.Message.equals(this.data, other.data);
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import {
|
||||
KeyListener,
|
||||
newDrawApp,
|
||||
ClientEngine,
|
||||
GraphicIdGenerator,
|
||||
} from 'jl-graphic';
|
||||
|
||||
import {
|
||||
@ -18,7 +19,10 @@ import {
|
||||
} from './commonApp';
|
||||
import { CCTVButtonData } from './graphics/CCTV/CCTVButtonInteraction';
|
||||
import { CCTVButtonDraw } from 'src/graphics/CCTV/cctvButton/CCTVButtonDrawAssistant';
|
||||
import { CCTVButtonTemplate } from 'src/graphics/CCTV/cctvButton/CCTVButton';
|
||||
import {
|
||||
CCTVButton,
|
||||
CCTVButtonTemplate,
|
||||
} from 'src/graphics/CCTV/cctvButton/CCTVButton';
|
||||
import { useDrawStore } from 'src/stores/draw-store';
|
||||
import { iscsGraphicData } from 'src/protos/iscs_graphic_data';
|
||||
import { getDraft } from 'src/api/DraftApi';
|
||||
@ -27,6 +31,7 @@ import { fromUint8Array, toUint8Array } from 'js-base64';
|
||||
import { getWebsocketUrl } from 'src/configs/UrlManage';
|
||||
import { sync_data_message } from 'src/protos/sync_data_message';
|
||||
import { useAuthStore } from 'src/stores/auth-store';
|
||||
import { common } from 'src/protos/common';
|
||||
// import { getOnlyToken } from 'src/configs/TokenManage';
|
||||
|
||||
let drawApp: IDrawApp | null = null;
|
||||
@ -103,6 +108,10 @@ function handleSubscribe(app: IDrawApp) {
|
||||
const proto = handlerTypeData(data);
|
||||
const template = app.getGraphicTemplatesByType(proto.graphicType);
|
||||
const g = template.new();
|
||||
if (app.queryStore.checkIdExist(proto.id)) {
|
||||
const newId = GraphicIdGenerator.next();
|
||||
proto.id = newId;
|
||||
}
|
||||
g.loadData(proto);
|
||||
app.addGraphics(g);
|
||||
});
|
||||
@ -119,6 +128,11 @@ function handleSubscribe(app: IDrawApp) {
|
||||
graphics.push(g);
|
||||
});
|
||||
app.deleteGraphics(...graphics);
|
||||
} else if (syncData.operationType === 'update-canvas') {
|
||||
// console.log(common.Canvas.deserialize(syncData.datas[0].data));
|
||||
// common.Canvas.deserialize(syncData.datas[0].data);
|
||||
// app.updateCanvasAndRecord()
|
||||
app.canvas.update(common.Canvas.deserialize(syncData.datas[0].data));
|
||||
}
|
||||
} else {
|
||||
if (syncData.submenu === '火灾报警平面图') {
|
||||
@ -273,6 +287,7 @@ export function saveDrawDatas(app: IDrawApp) {
|
||||
)
|
||||
);
|
||||
}
|
||||
const graphics = app.queryStore.getAllGraphics();
|
||||
switch (drawStore.selectSubmenuAndStation.submenu) {
|
||||
case '火灾报警平面图':
|
||||
for (let i = 0; i < storage.fasOfPlatformAlarmStorages.length; i++) {
|
||||
@ -310,6 +325,15 @@ export function saveDrawDatas(app: IDrawApp) {
|
||||
app,
|
||||
cctvOfStationControl
|
||||
) as iscsGraphicData.CCTVOfStationControlStorage;
|
||||
|
||||
graphics.forEach((g) => {
|
||||
if (g instanceof CCTVButton) {
|
||||
const cctvButtonData = g.saveData();
|
||||
cctvStorage.cctvButtons.push(
|
||||
(cctvButtonData as CCTVButtonData).data
|
||||
);
|
||||
}
|
||||
});
|
||||
storage.cctvOfStationControlStorages[i] = cctvStorage;
|
||||
break;
|
||||
}
|
||||
@ -319,12 +343,6 @@ export function saveDrawDatas(app: IDrawApp) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
const graphics = app.queryStore.getAllGraphics();
|
||||
/* graphics.forEach((g) => {
|
||||
if (TrackSection.Type === g.type) {
|
||||
const trackSectionData = (g as TrackSection).saveData();
|
||||
storage.trackSections.push((trackSectionData as TrackSectionData).data);
|
||||
} }) */
|
||||
console.log(storage, '保存数据', graphics);
|
||||
const base64 = fromUint8Array(storage.serialize());
|
||||
return base64;
|
||||
|
86
src/graphics/circle/Circle.ts
Normal file
86
src/graphics/circle/Circle.ts
Normal file
@ -0,0 +1,86 @@
|
||||
import { Color, Graphics, IPointData } from 'pixi.js';
|
||||
import { GraphicData, JlGraphic, JlGraphicTemplate } from 'jl-graphic';
|
||||
|
||||
export interface ICircleData extends GraphicData {
|
||||
get code(): string; // 编号
|
||||
set code(v: string);
|
||||
get position(): IPointData; // 位置坐标
|
||||
set position(point: IPointData);
|
||||
get radius(): number; // 圆的半径
|
||||
set radius(v: number);
|
||||
get lineWidth(): number; // 线宽
|
||||
set lineWidth(v: number);
|
||||
get lineColor(): string; // 线色
|
||||
set lineColor(v: string);
|
||||
get fillColor(): string; // 填充色
|
||||
set fillColor(v: string);
|
||||
get alpha(): number; // 透明度
|
||||
set alpha(v: number);
|
||||
clone(): ICircleData;
|
||||
copyFrom(data: ICircleData): void;
|
||||
eq(other: ICircleData): boolean;
|
||||
}
|
||||
|
||||
const circleConsts = {
|
||||
lineWidth: 2,
|
||||
lineColor: '0xff0000',
|
||||
fillColor: '0xff0000',
|
||||
alpha: 0.001,
|
||||
};
|
||||
|
||||
export class Circle extends JlGraphic {
|
||||
static Type = 'Circle';
|
||||
circleGraphic: Graphics = new Graphics();
|
||||
constructor() {
|
||||
super(Circle.Type);
|
||||
this.addChild(this.circleGraphic);
|
||||
}
|
||||
|
||||
get datas(): ICircleData {
|
||||
return this.getDatas<ICircleData>();
|
||||
}
|
||||
doRepaint(): void {
|
||||
const circleGraphic = this.circleGraphic;
|
||||
circleGraphic.clear();
|
||||
circleGraphic.lineStyle(
|
||||
this.datas.lineWidth,
|
||||
new Color(this.datas.lineColor)
|
||||
);
|
||||
circleGraphic.beginFill(this.datas.fillColor, this.datas.alpha);
|
||||
circleGraphic.drawCircle(
|
||||
this.datas.position.x,
|
||||
this.datas.position.y,
|
||||
this.datas.radius
|
||||
);
|
||||
circleGraphic.endFill;
|
||||
circleGraphic.pivot = this.datas.position;
|
||||
const transformPos = this.datas.transform.position;
|
||||
if (transformPos.x == 0 && transformPos.y == 0) {
|
||||
this.position.set(this.datas.position.x, this.datas.position.y);
|
||||
} else {
|
||||
this.position.set(
|
||||
this.datas.transform.position.x,
|
||||
this.datas.transform.position.y
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export class CircleTemplate extends JlGraphicTemplate<Circle> {
|
||||
lineWidth: number;
|
||||
lineColor: string;
|
||||
fillColor: string;
|
||||
alpha: number;
|
||||
constructor(dataTemplate: ICircleData) {
|
||||
super(Circle.Type, {
|
||||
dataTemplate,
|
||||
});
|
||||
this.lineWidth = circleConsts.lineWidth;
|
||||
this.lineColor = circleConsts.lineColor;
|
||||
this.fillColor = circleConsts.fillColor;
|
||||
this.alpha = circleConsts.alpha;
|
||||
}
|
||||
new(): Circle {
|
||||
return new Circle();
|
||||
}
|
||||
}
|
117
src/graphics/circle/CircleDrawAssistant.ts
Normal file
117
src/graphics/circle/CircleDrawAssistant.ts
Normal file
@ -0,0 +1,117 @@
|
||||
import { FederatedPointerEvent, Graphics, IHitArea, Point } from 'pixi.js';
|
||||
import {
|
||||
circlePoint2,
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
} from 'jl-graphic';
|
||||
|
||||
import { ICircleData, Circle, CircleTemplate } from './Circle';
|
||||
|
||||
export class CircleDraw extends GraphicDrawAssistant<
|
||||
CircleTemplate,
|
||||
ICircleData
|
||||
> {
|
||||
point1: Point | null = null;
|
||||
point2: Point | null = null;
|
||||
circleGraphic: Graphics = new Graphics();
|
||||
|
||||
constructor(app: IDrawApp, template: CircleTemplate) {
|
||||
super(app, template, 'sym_o_circle', '圆Circle');
|
||||
this.container.addChild(this.circleGraphic);
|
||||
circleInteraction.init(app);
|
||||
}
|
||||
|
||||
clearCache(): void {
|
||||
this.circleGraphic.clear();
|
||||
}
|
||||
onLeftDown(e: FederatedPointerEvent): void {
|
||||
const { x, y } = this.toCanvasCoordinates(e.global);
|
||||
const p = new Point(x, y);
|
||||
if (this.point1 === null) {
|
||||
this.point1 = p;
|
||||
} else {
|
||||
this.point2 = p;
|
||||
this.createAndStore(true);
|
||||
this.point1 = null;
|
||||
this.point2 = null;
|
||||
}
|
||||
}
|
||||
|
||||
redraw(p: Point): void {
|
||||
const template = this.graphicTemplate;
|
||||
if (this.point1 === null) return;
|
||||
const circleGraphic = this.circleGraphic;
|
||||
circleGraphic.clear();
|
||||
circleGraphic.lineStyle(template.lineWidth, template.lineColor);
|
||||
circleGraphic.drawCircle(...this.normalize(this.point1, p));
|
||||
}
|
||||
private normalize(p1: Point, p2: Point): [number, number, number] {
|
||||
const { abs } = Math;
|
||||
const x = p1.x < p2.x ? p1.x : p2.x;
|
||||
const y = p1.y < p2.y ? p1.y : p2.y;
|
||||
const r = abs(p1.x - p2.x);
|
||||
return [x, y, r];
|
||||
}
|
||||
prepareData(data: ICircleData): boolean {
|
||||
const p1 = this.point1 as Point;
|
||||
const p2 = this.point2 as Point;
|
||||
const [x, y, radius] = this.normalize(p1, p2);
|
||||
const template = this.graphicTemplate;
|
||||
data.position = new Point(x, y);
|
||||
data.lineWidth = template.lineWidth;
|
||||
data.lineColor = template.lineColor;
|
||||
data.fillColor = template.fillColor;
|
||||
data.alpha = template.alpha;
|
||||
data.radius = radius;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//碰撞检测
|
||||
export class CircleGraphicHitArea implements IHitArea {
|
||||
circle: Circle;
|
||||
constructor(circle: Circle) {
|
||||
this.circle = circle;
|
||||
}
|
||||
contains(x: number, y: number): boolean {
|
||||
const datas = this.circle.datas;
|
||||
const tolerance = datas.lineWidth;
|
||||
return circlePoint2(
|
||||
datas.position.x,
|
||||
datas.position.y,
|
||||
Math.abs(datas.radius),
|
||||
x,
|
||||
y,
|
||||
tolerance
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class circleInteraction extends GraphicInteractionPlugin<Circle> {
|
||||
static Name = 'circle_transform';
|
||||
constructor(app: IDrawApp) {
|
||||
super(circleInteraction.Name, app);
|
||||
}
|
||||
static init(app: IDrawApp) {
|
||||
return new circleInteraction(app);
|
||||
}
|
||||
filter(...grahpics: JlGraphic[]): Circle[] | undefined {
|
||||
return grahpics
|
||||
.filter((g) => g.type === Circle.Type)
|
||||
.map((g) => g as Circle);
|
||||
}
|
||||
bind(g: Circle): void {
|
||||
g.eventMode = 'static';
|
||||
g.cursor = 'pointer';
|
||||
g.scalable = true;
|
||||
g.rotatable = true;
|
||||
g.circleGraphic.hitArea = new CircleGraphicHitArea(g);
|
||||
}
|
||||
unbind(g: Circle): void {
|
||||
g.eventMode = 'none';
|
||||
g.scalable = false;
|
||||
g.rotatable = false;
|
||||
}
|
||||
}
|
@ -1,17 +1,14 @@
|
||||
import { FederatedPointerEvent, Graphics, Point } from 'pixi.js';
|
||||
import { FederatedPointerEvent, Graphics, IHitArea, Point } from 'pixi.js';
|
||||
import {
|
||||
GraphicDrawAssistant,
|
||||
GraphicInteractionPlugin,
|
||||
IDrawApp,
|
||||
JlGraphic,
|
||||
linePoint,
|
||||
} from 'jl-graphic';
|
||||
|
||||
import { IRectData, Rect, RectTemplate } from './Rect';
|
||||
|
||||
export interface IRectDrawOptions {
|
||||
newData: () => IRectData;
|
||||
}
|
||||
|
||||
export class RectDraw extends GraphicDrawAssistant<RectTemplate, IRectData> {
|
||||
point1: Point | null = null;
|
||||
point2: Point | null = null;
|
||||
@ -72,8 +69,30 @@ export class RectDraw extends GraphicDrawAssistant<RectTemplate, IRectData> {
|
||||
}
|
||||
}
|
||||
|
||||
//碰撞检测
|
||||
export class RectGraphicHitArea implements IHitArea {
|
||||
rect: Rect;
|
||||
constructor(rect: Rect) {
|
||||
this.rect = rect;
|
||||
}
|
||||
contains(x: number, y: number): boolean {
|
||||
let contains = false;
|
||||
const datas = this.rect.datas;
|
||||
const tolerance = datas.lineWidth;
|
||||
const p1 = new Point(0, 0);
|
||||
const p2 = new Point(p1.x + datas.width, p1.y);
|
||||
const p3 = new Point(p1.x + datas.width, p1.y + datas.height);
|
||||
const p4 = new Point(p1.x, p1.y + datas.height);
|
||||
const p = new Point(x, y);
|
||||
contains = contains || linePoint(p1, p2, p, tolerance);
|
||||
contains = contains || linePoint(p2, p3, p, tolerance);
|
||||
contains = contains || linePoint(p3, p4, p, tolerance);
|
||||
contains = contains || linePoint(p4, p1, p, tolerance);
|
||||
return contains;
|
||||
}
|
||||
}
|
||||
export class rectInteraction extends GraphicInteractionPlugin<Rect> {
|
||||
static Name = 'platform_transform';
|
||||
static Name = 'rect_transform';
|
||||
constructor(app: IDrawApp) {
|
||||
super(rectInteraction.Name, app);
|
||||
}
|
||||
@ -88,6 +107,7 @@ export class rectInteraction extends GraphicInteractionPlugin<Rect> {
|
||||
g.cursor = 'pointer';
|
||||
g.scalable = true;
|
||||
g.rotatable = true;
|
||||
g.rectGraphic.hitArea = new RectGraphicHitArea(g);
|
||||
}
|
||||
unbind(g: Rect): void {
|
||||
g.eventMode = 'none';
|
||||
|
@ -1,260 +0,0 @@
|
||||
<template>
|
||||
<q-layout view="hHh LpR fFf">
|
||||
<q-header reveal class="bg-primary text-white">
|
||||
<q-toolbar>
|
||||
<q-toolbar-title class="q-gutter-sm">
|
||||
<q-btn color="accent" label="功能菜单">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 100px">
|
||||
<q-item
|
||||
v-for="item in leftMenuConfig"
|
||||
:key="item.label"
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="item.click"
|
||||
>
|
||||
<q-item-section>{{ item.label }}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
<q-btn-toggle
|
||||
v-model="selectUtil"
|
||||
color="brown"
|
||||
text-color="white"
|
||||
toggle-color="orange"
|
||||
toggle-text-color="black"
|
||||
:options="utilsOption"
|
||||
@update:model-value="drawSelect"
|
||||
>
|
||||
<template
|
||||
v-for="(ctl, idx) in utilsOption"
|
||||
:key="idx"
|
||||
v-slot:[ctl.value]
|
||||
>
|
||||
<q-tooltip>{{ ctl.tip }}</q-tooltip>
|
||||
</template>
|
||||
</q-btn-toggle>
|
||||
</q-toolbar-title>
|
||||
<q-btn square color="purple" style="margin-right: 10px" icon="search">
|
||||
<q-popup-edit
|
||||
ref="popupEdit"
|
||||
v-model="searchId"
|
||||
:cover="false"
|
||||
:offset="[0, 10]"
|
||||
v-slot="scope"
|
||||
>
|
||||
<q-input
|
||||
color="accent"
|
||||
v-model="scope.value"
|
||||
label="设备Id"
|
||||
dense
|
||||
autofocus
|
||||
@keyup.enter="scope.set"
|
||||
>
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="search" color="accent" />
|
||||
</template>
|
||||
</q-input>
|
||||
</q-popup-edit>
|
||||
</q-btn>
|
||||
<q-btn color="info" label="返回" @click="backConfirm" />
|
||||
<q-btn dense flat round icon="menu" @click="toggleRightDrawer" />
|
||||
</q-toolbar>
|
||||
<q-resize-observer @resize="onHeaderResize" />
|
||||
</q-header>
|
||||
|
||||
<q-drawer show-if-above bordered v-model="rightDrawerOpen" side="right">
|
||||
<q-resize-observer @resize="onRightResize" />
|
||||
|
||||
<fire-alarm-draw-properties></fire-alarm-draw-properties>
|
||||
</q-drawer>
|
||||
|
||||
<q-page-container>
|
||||
<div id="draw-app-container" class="overflow-hidden"></div>
|
||||
</q-page-container>
|
||||
|
||||
<q-dialog
|
||||
v-model="saveAsDialog"
|
||||
persistent
|
||||
transition-show="scale"
|
||||
transition-hide="scale"
|
||||
>
|
||||
<q-card style="width: 300px">
|
||||
<q-card-section>
|
||||
<div class="text-h6">另存为</div>
|
||||
</q-card-section>
|
||||
|
||||
<q-card-section>
|
||||
<q-input
|
||||
outlined
|
||||
label="草稿名称"
|
||||
v-model="saveAsName"
|
||||
:rules="[(val) => val.trim() != '' || '草稿名称不能为空']"
|
||||
/>
|
||||
</q-card-section>
|
||||
|
||||
<q-card-actions align="right">
|
||||
<q-btn color="primary" label="提交" @click="saveAs(saveAsName)" />
|
||||
<q-btn label="取消" v-close-popup />
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
<q-resize-observer @resize="onResize" />
|
||||
</q-layout>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import FireAlarmDrawProperties from 'src/components/draw-app/FireAlarmDrawProperties.vue';
|
||||
import { onMounted, reactive, ref, watch } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import { successNotify } from 'src/utils/CommonNotify';
|
||||
import { useQuasar } from 'quasar';
|
||||
import { useDrawStore } from 'src/stores/draw-store';
|
||||
import { PictureType } from 'src/protos/picture';
|
||||
import { Arrow } from 'src/graphics/arrow/Arrow';
|
||||
import { TextContent } from 'src/graphics/textContent/TextContent';
|
||||
import { Rect } from 'src/graphics/rect/Rect';
|
||||
|
||||
const $q = useQuasar();
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const searchId = ref(0);
|
||||
|
||||
const drawStore = useDrawStore();
|
||||
|
||||
watch(
|
||||
() => drawStore.drawMode,
|
||||
(drawMode) => {
|
||||
if (!drawMode) {
|
||||
selectUtil.value = '';
|
||||
}
|
||||
}
|
||||
);
|
||||
watch(
|
||||
() => searchId.value,
|
||||
() => {
|
||||
try {
|
||||
if (searchId.value) {
|
||||
const device = drawStore
|
||||
.getDrawApp()
|
||||
.queryStore.queryById(searchId.value);
|
||||
drawStore.getDrawApp().makeGraphicCenterShow(device);
|
||||
drawStore.getDrawApp().updateSelected(device);
|
||||
searchId.value = 0;
|
||||
}
|
||||
} catch (err) {
|
||||
$q.notify({
|
||||
type: 'negative',
|
||||
message: `未查找到id为【${searchId.value}】的设备`,
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const rightDrawerOpen = ref(false);
|
||||
function toggleRightDrawer() {
|
||||
rightDrawerOpen.value = !rightDrawerOpen.value;
|
||||
onResize();
|
||||
}
|
||||
|
||||
//工具栏所用
|
||||
const selectUtil = ref();
|
||||
const utilsOption: ControlItem[] = reactive([]);
|
||||
const drawSelect = (item: string) => {
|
||||
drawStore.getDrawApp().interactionPlugin(item).resume();
|
||||
};
|
||||
class ControlItem {
|
||||
value: string;
|
||||
slot: string;
|
||||
icon: string;
|
||||
tip: string;
|
||||
show = true;
|
||||
|
||||
constructor(value: string, icon: string, tip: string, show?: boolean) {
|
||||
this.value = value;
|
||||
this.slot = value;
|
||||
this.icon = icon;
|
||||
this.tip = tip;
|
||||
if (show != undefined) {
|
||||
this.show = show;
|
||||
}
|
||||
}
|
||||
}
|
||||
//左侧功能按钮
|
||||
const leftMenuConfig = [
|
||||
{ label: '保存', click: saveAllDrawDatas },
|
||||
{ label: '另存为', click: () => (saveAsDialog.value = true) },
|
||||
];
|
||||
|
||||
onMounted(() => {
|
||||
console.log('绘制应用layout mounted');
|
||||
drawStore.drawPictureType = PictureType.FireAlarm;
|
||||
const dom = document.getElementById('draw-app-container');
|
||||
if (dom) {
|
||||
drawStore.setDraftId(+route.params.id as number);
|
||||
const drawApp = drawStore.initDrawApp();
|
||||
drawApp.bindDom(dom);
|
||||
drawApp.reload();
|
||||
onResize();
|
||||
} else {
|
||||
drawStore.setDraftId(null);
|
||||
}
|
||||
const drawAssistantsTypes = [Arrow.Type, TextContent.Type, Rect.Type];
|
||||
drawAssistantsTypes.forEach((type) => {
|
||||
const drawAssistant = drawStore.getDrawApp().getDrawAssistant(type);
|
||||
if (drawAssistant) {
|
||||
utilsOption.push(
|
||||
new ControlItem(
|
||||
drawAssistant.name,
|
||||
drawAssistant.icon,
|
||||
drawAssistant.description || drawAssistant.name
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const canvasWidth = ref(0);
|
||||
const canvasHeight = ref(0);
|
||||
const headerHeight = ref(0);
|
||||
const rightWidth = ref(0);
|
||||
|
||||
function onHeaderResize(size: { height: number; width: number }) {
|
||||
headerHeight.value = size.height;
|
||||
onResize();
|
||||
}
|
||||
|
||||
function onRightResize(size: { height: number; width: number }) {
|
||||
rightWidth.value = size.width;
|
||||
onResize();
|
||||
}
|
||||
|
||||
function onResize() {
|
||||
const clientWidth = document.documentElement.clientWidth;
|
||||
const clientHeight = document.documentElement.clientHeight;
|
||||
canvasWidth.value =
|
||||
clientWidth - (rightDrawerOpen.value ? rightWidth.value : 0);
|
||||
canvasHeight.value = clientHeight - headerHeight.value;
|
||||
const dom = document.getElementById('draw-app-container');
|
||||
if (dom) {
|
||||
dom.style.width = canvasWidth.value + 'px';
|
||||
dom.style.height = canvasHeight.value + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
function saveAllDrawDatas() {
|
||||
// const drawApp = drawStore.getDrawApp();
|
||||
}
|
||||
|
||||
function backConfirm() {
|
||||
router.go(-1);
|
||||
}
|
||||
|
||||
const saveAsDialog = ref(false);
|
||||
const saveAsName = ref('');
|
||||
|
||||
async function saveAs(name: string) {
|
||||
successNotify('另存为成功' + name);
|
||||
}
|
||||
</script>
|
@ -8,6 +8,14 @@
|
||||
<span class="data-margin">{{ currentTime }}</span>
|
||||
</div>
|
||||
<div class="top-menu-right">
|
||||
<q-btn
|
||||
round
|
||||
dense
|
||||
flat
|
||||
color="white"
|
||||
:icon="$q.fullscreen.isActive ? 'fullscreen_exit' : 'fullscreen'"
|
||||
@click="$q.fullscreen.toggle()"
|
||||
/>
|
||||
<q-btn color="accent" label="功能菜单">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 100px">
|
||||
@ -167,13 +175,26 @@
|
||||
</q-drawer>
|
||||
|
||||
<q-page-container>
|
||||
<div id="draw-app-container" class="overflow-hidden"></div>
|
||||
<div
|
||||
ref="drawAppContainer"
|
||||
v-show="subMenuDisplayForm !== DisplayForm.component"
|
||||
id="draw-app-container"
|
||||
class="overflow-hidden"
|
||||
></div>
|
||||
<q-separator
|
||||
inset
|
||||
v-show="subMenuDisplayForm == DisplayForm.drawAndComponent"
|
||||
></q-separator>
|
||||
<div
|
||||
v-if="subMenuDisplayForm !== DisplayForm.draw"
|
||||
class="overflow-hidden"
|
||||
>
|
||||
组件展示
|
||||
</div>
|
||||
</q-page-container>
|
||||
|
||||
<q-footer>
|
||||
<q-toolbar>
|
||||
<q-toolbar-title>状态栏</q-toolbar-title>
|
||||
</q-toolbar>
|
||||
<iscs-bottom-alarm />
|
||||
<q-resize-observer @resize="onFooterResize" />
|
||||
</q-footer>
|
||||
|
||||
@ -210,16 +231,8 @@
|
||||
:height="drawDialogHeight"
|
||||
v-model="showDrawTool"
|
||||
canNotClose
|
||||
position="left"
|
||||
>
|
||||
<!-- <q-btn-toggle
|
||||
v-model="selectUtil"
|
||||
color="brown"
|
||||
text-color="white"
|
||||
toggle-color="orange"
|
||||
toggle-text-color="black"
|
||||
:options="utilsOption"
|
||||
@update:model-value="drawSelect"
|
||||
> -->
|
||||
<div class="row wrap">
|
||||
<template v-for="(ctl, idx) in utilsOption" :key="idx">
|
||||
<q-btn
|
||||
@ -232,9 +245,6 @@
|
||||
</q-btn>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<!-- <q-tooltip>{{ ctl.tip }}</q-tooltip> -->
|
||||
<!-- </q-btn-toggle> -->
|
||||
</draggable-dialog>
|
||||
<q-resize-observer @resize="onResize" />
|
||||
</q-layout>
|
||||
@ -250,7 +260,11 @@ import { CCTVButton } from 'src/graphics/CCTV/cctvButton/CCTVButton';
|
||||
import { Arrow } from 'src/graphics/arrow/Arrow';
|
||||
import { TextContent } from 'src/graphics/textContent/TextContent';
|
||||
import { Rect } from 'src/graphics/rect/Rect';
|
||||
import { getIscsStyleConfig } from 'src/configs/iscsStyleConfig';
|
||||
import {
|
||||
DisplayForm,
|
||||
getIscsStyleConfig,
|
||||
I_DA_SHI_ZHI_NENG,
|
||||
} from 'src/configs/iscsStyleConfig';
|
||||
import { IscsStyle, saveAsDraft } from 'src/api/DraftApi';
|
||||
import DraggableDialog from 'src/components/common/DraggableDialog.vue';
|
||||
import { successNotify } from 'src/utils/CommonNotify';
|
||||
@ -259,6 +273,11 @@ import { saveDrawToServer } from 'src/drawApp/commonApp';
|
||||
import { sync_data_message } from 'src/protos/sync_data_message';
|
||||
import { useAuthStore } from 'src/stores/auth-store';
|
||||
import { Line } from 'src/graphics/line/Line';
|
||||
import { JlOperation } from 'jl-graphic';
|
||||
import { common } from 'src/protos/common';
|
||||
import { toStorageTransform } from 'src/drawApp/graphics/GraphicDataBase';
|
||||
import { Circle } from 'src/graphics/circle/Circle';
|
||||
import IscsBottomAlarm from 'src/components/Iscs/IscsBottomAlarm.vue';
|
||||
|
||||
const $q = useQuasar();
|
||||
const route = useRoute();
|
||||
@ -305,7 +324,7 @@ function toggleRightDrawer() {
|
||||
|
||||
//工具栏所用
|
||||
const selectUtil = ref();
|
||||
const utilsOption: ControlItem[] = reactive([]);
|
||||
let utilsOption: ControlItem[] = reactive([]);
|
||||
|
||||
function drawSelect(item: string) {
|
||||
drawStore.getDrawApp().interactionPlugin(item).resume();
|
||||
@ -327,6 +346,36 @@ class ControlItem {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function handleUtilsOption() {
|
||||
utilsOption = [];
|
||||
const drawAssistantsTypes = [
|
||||
Arrow.Type,
|
||||
TextContent.Type,
|
||||
Circle.Type,
|
||||
Rect.Type,
|
||||
Line.Type,
|
||||
];
|
||||
switch (drawStore.selectSubmenuAndStation.submenu) {
|
||||
case '监控布局图':
|
||||
drawAssistantsTypes.push(CCTVButton.Type);
|
||||
break;
|
||||
}
|
||||
drawAssistantsTypes.forEach((type) => {
|
||||
const drawAssistant = drawStore.getDrawApp().getDrawAssistant(type);
|
||||
if (drawAssistant) {
|
||||
utilsOption.push(
|
||||
new ControlItem(
|
||||
drawAssistant.name,
|
||||
drawAssistant.icon,
|
||||
drawAssistant.description || drawAssistant.name
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
drawDialogHeight.value = 0;
|
||||
drawDialogHeight.value = 44 * Math.ceil(utilsOption.length / 2);
|
||||
}
|
||||
//左侧功能按钮
|
||||
const leftMenuConfig = [
|
||||
{ label: '保存', click: saveAllDrawDatas },
|
||||
@ -346,46 +395,128 @@ onMounted(() => {
|
||||
if (route.query.isShared == '1') {
|
||||
const _record = drawApp.opRecord.record;
|
||||
drawApp.opRecord.record = function (op) {
|
||||
handleRecordData(op);
|
||||
_record.call(drawApp.opRecord, op);
|
||||
handleRecordData(op);
|
||||
saveAllDrawDatas();
|
||||
};
|
||||
const _undo = drawApp.opRecord.undo;
|
||||
drawApp.opRecord.undo = function () {
|
||||
const op =
|
||||
drawApp.opRecord.undoStack[drawApp.opRecord.undoStack.length - 1];
|
||||
_undo.call(drawApp.opRecord);
|
||||
console.log('undo');
|
||||
console.log(op, 'undo');
|
||||
handleUnDoData(op);
|
||||
saveAllDrawDatas();
|
||||
console.log('undo', drawApp);
|
||||
};
|
||||
const _redo = drawApp.opRecord.redo;
|
||||
drawApp.opRecord.redo = function () {
|
||||
const op =
|
||||
drawApp.opRecord.redoStack[drawApp.opRecord.redoStack.length - 1];
|
||||
_redo.call(drawApp.opRecord);
|
||||
console.log('redo');
|
||||
console.log(op, 'redo');
|
||||
handleRecordData(op);
|
||||
saveAllDrawDatas();
|
||||
console.log('redo', drawApp);
|
||||
};
|
||||
}
|
||||
onResize();
|
||||
} else {
|
||||
drawStore.setDraftId(null);
|
||||
}
|
||||
const drawAssistantsTypes = [
|
||||
Arrow.Type,
|
||||
TextContent.Type,
|
||||
Rect.Type,
|
||||
Line.Type,
|
||||
CCTVButton.Type,
|
||||
];
|
||||
drawAssistantsTypes.forEach((type) => {
|
||||
const drawAssistant = drawStore.getDrawApp().getDrawAssistant(type);
|
||||
if (drawAssistant) {
|
||||
utilsOption.push(
|
||||
new ControlItem(
|
||||
drawAssistant.name,
|
||||
drawAssistant.icon,
|
||||
drawAssistant.description || drawAssistant.name
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
drawDialogHeight.value = 44 * Math.ceil(utilsOption.length / 2);
|
||||
handleUtilsOption();
|
||||
});
|
||||
|
||||
function handleUnDoData(op: JlOperation) {
|
||||
const drawApp = drawStore.getDrawApp();
|
||||
let operationType = op.type;
|
||||
if (operationType == 'graphic-create') {
|
||||
operationType = 'graphic-delete';
|
||||
} else if (operationType == 'graphic-delete') {
|
||||
operationType = 'graphic-create';
|
||||
}
|
||||
const syncData = {
|
||||
operationType: operationType,
|
||||
datas: [],
|
||||
submenu: drawStore.selectSubmenuAndStation.submenu,
|
||||
station: drawStore.selectSubmenuAndStation.station,
|
||||
userId: useAuthStore().userId,
|
||||
};
|
||||
if (op.type === 'update-canvas') {
|
||||
const canvasData = op.obj.saveData();
|
||||
syncData.datas.push(
|
||||
new sync_data_message.UpdataData({
|
||||
id: 0,
|
||||
type: op.obj.type,
|
||||
data: new common.Canvas({
|
||||
width: canvasData.width,
|
||||
height: canvasData.height,
|
||||
backgroundColor: canvasData.backgroundColor,
|
||||
viewportTransform: toStorageTransform(canvasData.viewportTransform),
|
||||
}).serialize(),
|
||||
})
|
||||
);
|
||||
} else {
|
||||
op.obj.forEach((g) => {
|
||||
const gData = g.saveData();
|
||||
syncData.datas.push(
|
||||
new sync_data_message.UpdataData({
|
||||
id: g.id,
|
||||
type: g.type,
|
||||
data: gData.data.serialize(),
|
||||
})
|
||||
);
|
||||
});
|
||||
}
|
||||
drawApp.publishMessage(
|
||||
`/rtss_simulation/draft/iscs/${drawStore.draftId}`,
|
||||
new sync_data_message.SyncData({ ...syncData }).serialize()
|
||||
);
|
||||
}
|
||||
|
||||
function handleRecordData(op: JlOperation) {
|
||||
const drawApp = drawStore.getDrawApp();
|
||||
const syncData = {
|
||||
operationType: op.type,
|
||||
datas: [],
|
||||
submenu: drawStore.selectSubmenuAndStation.submenu,
|
||||
station: drawStore.selectSubmenuAndStation.station,
|
||||
userId: useAuthStore().userId,
|
||||
};
|
||||
if (op.type === 'update-canvas') {
|
||||
const canvasData = op.obj.saveData();
|
||||
console.log(canvasData, 'canvasData');
|
||||
syncData.datas.push(
|
||||
new sync_data_message.UpdataData({
|
||||
id: 0,
|
||||
type: op.obj.type,
|
||||
data: new common.Canvas({
|
||||
width: canvasData.width,
|
||||
height: canvasData.height,
|
||||
backgroundColor: canvasData.backgroundColor,
|
||||
viewportTransform: toStorageTransform(canvasData.viewportTransform),
|
||||
}).serialize(),
|
||||
})
|
||||
);
|
||||
} else {
|
||||
op.obj.forEach((g) => {
|
||||
const gData = g.saveData();
|
||||
syncData.datas.push(
|
||||
new sync_data_message.UpdataData({
|
||||
id: g.id,
|
||||
type: g.type,
|
||||
data: gData.data.serialize(),
|
||||
})
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
drawApp.publishMessage(
|
||||
`/rtss_simulation/draft/iscs/${drawStore.draftId}`,
|
||||
new sync_data_message.SyncData({ ...syncData }).serialize()
|
||||
);
|
||||
}
|
||||
|
||||
const canvasWidth = ref(0);
|
||||
const canvasHeight = ref(0);
|
||||
const headerHeight = ref(0);
|
||||
@ -415,8 +546,16 @@ function onResize() {
|
||||
canvasHeight.value = clientHeight - headerHeight.value - footerHeight.value;
|
||||
const dom = document.getElementById('draw-app-container');
|
||||
if (dom) {
|
||||
dom.style.width = canvasWidth.value + 'px';
|
||||
dom.style.height = canvasHeight.value + 'px';
|
||||
if (subMenuDisplayForm.value == DisplayForm.draw) {
|
||||
dom.style.width = canvasWidth.value + 'px';
|
||||
dom.style.height = canvasHeight.value + 'px';
|
||||
} else if (subMenuDisplayForm.value == DisplayForm.drawAndComponent) {
|
||||
const heightPercent = subMenuOption.value.find(
|
||||
(subMenu) => subMenu.value == selectSubMenuName.value
|
||||
).heightPercent;
|
||||
dom.style.width = canvasWidth.value + 'px';
|
||||
dom.style.height = (heightPercent / 100) * canvasHeight.value + 'px';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -459,6 +598,7 @@ const updateTime = () => {
|
||||
};
|
||||
|
||||
//目录车站切换
|
||||
const subMenuDisplayForm = ref(DisplayForm.draw);
|
||||
const selectMenuName = ref('');
|
||||
let menuOption = [];
|
||||
function selectedMenu(menuName: string) {
|
||||
@ -466,7 +606,12 @@ function selectedMenu(menuName: string) {
|
||||
for (let i = 0; i < iscsTypeConfig.length; i++) {
|
||||
if (iscsTypeConfig[i].menuName == menuName) {
|
||||
subMenuOption.value = iscsTypeConfig[i].sunMenu.map((sunMenu) => {
|
||||
return { label: sunMenu.sunMenuName, value: sunMenu.sunMenuName };
|
||||
return {
|
||||
label: sunMenu.sunMenuName,
|
||||
value: sunMenu.sunMenuName,
|
||||
displayForm: sunMenu.displayForm,
|
||||
heightPercent: sunMenu?.heightPercent || 0,
|
||||
};
|
||||
});
|
||||
selectSubMenuName.value = subMenuOption.value[0].value;
|
||||
selectedSubMenu(selectSubMenuName.value);
|
||||
@ -476,18 +621,30 @@ function selectedMenu(menuName: string) {
|
||||
}
|
||||
|
||||
const selectSubMenuName = ref('');
|
||||
const subMenuOption = ref([]);
|
||||
const subMenuOption = ref<
|
||||
{
|
||||
label: string;
|
||||
value: string;
|
||||
displayForm: DisplayForm;
|
||||
heightPercent?: number;
|
||||
}[]
|
||||
>([]);
|
||||
function selectedSubMenu(subName: string) {
|
||||
drawStore.selectSubmenuAndStation.submenu = subName;
|
||||
forceReloadDate();
|
||||
subMenuDisplayForm.value = subMenuOption.value.find(
|
||||
(subMenu) => subMenu.value == subName
|
||||
).displayForm;
|
||||
if (subMenuDisplayForm.value !== DisplayForm.component) {
|
||||
showDrawTool.value = true;
|
||||
forceReloadDate();
|
||||
handleUtilsOption();
|
||||
} else {
|
||||
showDrawTool.value = false;
|
||||
}
|
||||
onResize();
|
||||
}
|
||||
|
||||
let iscsTypeConfig: {
|
||||
menuName: string;
|
||||
icon: string;
|
||||
activeIcon: string;
|
||||
sunMenu: { sunMenuName: string }[];
|
||||
}[] = [];
|
||||
let iscsTypeConfig: I_DA_SHI_ZHI_NENG[] = [];
|
||||
function initMunuOption() {
|
||||
iscsTypeConfig = getIscsStyleConfig(route.query.iscsStyle as IscsStyle);
|
||||
menuOption = iscsTypeConfig.map((menu) => {
|
||||
@ -500,9 +657,17 @@ function initMunuOption() {
|
||||
});
|
||||
selectMenuName.value = menuOption[0].value;
|
||||
subMenuOption.value = iscsTypeConfig[0].sunMenu.map((sunMenu) => {
|
||||
return { label: sunMenu.sunMenuName, value: sunMenu.sunMenuName };
|
||||
return {
|
||||
label: sunMenu.sunMenuName,
|
||||
value: sunMenu.sunMenuName,
|
||||
displayForm: sunMenu.displayForm,
|
||||
heightPercent: sunMenu?.heightPercent || 0,
|
||||
};
|
||||
});
|
||||
selectSubMenuName.value = subMenuOption.value[0].value;
|
||||
subMenuDisplayForm.value = subMenuOption.value[0].displayForm;
|
||||
showDrawTool.value =
|
||||
subMenuOption.value[0].displayForm !== DisplayForm.component;
|
||||
drawStore.selectSubmenuAndStation.submenu = selectSubMenuName.value;
|
||||
drawStore.selectSubmenuAndStation.station = stationOption[0].value;
|
||||
}
|
||||
@ -531,30 +696,6 @@ function selectedStation(name: string) {
|
||||
forceReloadDate();
|
||||
}
|
||||
|
||||
function handleRecordData(op) {
|
||||
const drawApp = drawStore.getDrawApp();
|
||||
const syncData = {
|
||||
operationType: op.type,
|
||||
datas: [],
|
||||
submenu: drawStore.selectSubmenuAndStation.submenu,
|
||||
station: drawStore.selectSubmenuAndStation.station,
|
||||
userId: useAuthStore().userId,
|
||||
};
|
||||
op.obj.forEach((g) => {
|
||||
const gData = g.saveData();
|
||||
syncData.datas.push(
|
||||
new sync_data_message.UpdataData({
|
||||
id: g.id,
|
||||
type: g.type,
|
||||
data: gData.data.serialize(),
|
||||
})
|
||||
);
|
||||
});
|
||||
drawApp.publishMessage(
|
||||
`/rtss_simulation/draft/iscs/${drawStore.draftId}`,
|
||||
new sync_data_message.SyncData({ ...syncData }).serialize()
|
||||
);
|
||||
}
|
||||
function forceReloadDate() {
|
||||
const drawApp = drawStore.getDrawApp();
|
||||
const graphics = drawApp.queryStore.getAllGraphics();
|
||||
@ -639,7 +780,7 @@ onUnmounted(() => {
|
||||
top: 10px;
|
||||
}
|
||||
.menu-nav-text {
|
||||
width: 90px;
|
||||
width: 4.8vw;
|
||||
margin-top: 28px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
|
@ -1,682 +0,0 @@
|
||||
/**
|
||||
* Generated by the protoc-gen-ts. DO NOT EDIT!
|
||||
* compiler version: 5.27.4
|
||||
* source: fas_graphic_data.proto
|
||||
* git: https://github.com/thesayyn/protoc-gen-ts */
|
||||
import * as dependency_1 from "./iscs_graphic_data";
|
||||
import * as pb_1 from "google-protobuf";
|
||||
export namespace FASGraphicData {
|
||||
export class FASGraphicStorage extends pb_1.Message {
|
||||
#one_of_decls: number[][] = [];
|
||||
constructor(data?: any[] | {
|
||||
canvas?: dependency_1.iscsGraphicData.Canvas;
|
||||
arrows?: dependency_1.iscsGraphicData.Arrow[];
|
||||
iscsTexts?: dependency_1.iscsGraphicData.IscsText[];
|
||||
rects?: dependency_1.iscsGraphicData.Rect[];
|
||||
manualAlarmButtons?: ManualAlarmButton[];
|
||||
hydrantAlarmButtons?: HydrantAlarmButton[];
|
||||
gasExtinguishings?: GasExtinguishing[];
|
||||
}) {
|
||||
super();
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 3, 4, 5, 6, 7], this.#one_of_decls);
|
||||
if (!Array.isArray(data) && typeof data == "object") {
|
||||
if ("canvas" in data && data.canvas != undefined) {
|
||||
this.canvas = data.canvas;
|
||||
}
|
||||
if ("arrows" in data && data.arrows != undefined) {
|
||||
this.arrows = data.arrows;
|
||||
}
|
||||
if ("iscsTexts" in data && data.iscsTexts != undefined) {
|
||||
this.iscsTexts = data.iscsTexts;
|
||||
}
|
||||
if ("rects" in data && data.rects != undefined) {
|
||||
this.rects = data.rects;
|
||||
}
|
||||
if ("manualAlarmButtons" in data && data.manualAlarmButtons != undefined) {
|
||||
this.manualAlarmButtons = data.manualAlarmButtons;
|
||||
}
|
||||
if ("hydrantAlarmButtons" in data && data.hydrantAlarmButtons != undefined) {
|
||||
this.hydrantAlarmButtons = data.hydrantAlarmButtons;
|
||||
}
|
||||
if ("gasExtinguishings" in data && data.gasExtinguishings != undefined) {
|
||||
this.gasExtinguishings = data.gasExtinguishings;
|
||||
}
|
||||
}
|
||||
}
|
||||
get canvas() {
|
||||
return pb_1.Message.getWrapperField(this, dependency_1.iscsGraphicData.Canvas, 1) as dependency_1.iscsGraphicData.Canvas;
|
||||
}
|
||||
set canvas(value: dependency_1.iscsGraphicData.Canvas) {
|
||||
pb_1.Message.setWrapperField(this, 1, value);
|
||||
}
|
||||
get has_canvas() {
|
||||
return pb_1.Message.getField(this, 1) != null;
|
||||
}
|
||||
get arrows() {
|
||||
return pb_1.Message.getRepeatedWrapperField(this, dependency_1.iscsGraphicData.Arrow, 2) as dependency_1.iscsGraphicData.Arrow[];
|
||||
}
|
||||
set arrows(value: dependency_1.iscsGraphicData.Arrow[]) {
|
||||
pb_1.Message.setRepeatedWrapperField(this, 2, value);
|
||||
}
|
||||
get iscsTexts() {
|
||||
return pb_1.Message.getRepeatedWrapperField(this, dependency_1.iscsGraphicData.IscsText, 3) as dependency_1.iscsGraphicData.IscsText[];
|
||||
}
|
||||
set iscsTexts(value: dependency_1.iscsGraphicData.IscsText[]) {
|
||||
pb_1.Message.setRepeatedWrapperField(this, 3, value);
|
||||
}
|
||||
get rects() {
|
||||
return pb_1.Message.getRepeatedWrapperField(this, dependency_1.iscsGraphicData.Rect, 4) as dependency_1.iscsGraphicData.Rect[];
|
||||
}
|
||||
set rects(value: dependency_1.iscsGraphicData.Rect[]) {
|
||||
pb_1.Message.setRepeatedWrapperField(this, 4, value);
|
||||
}
|
||||
get manualAlarmButtons() {
|
||||
return pb_1.Message.getRepeatedWrapperField(this, ManualAlarmButton, 5) as ManualAlarmButton[];
|
||||
}
|
||||
set manualAlarmButtons(value: ManualAlarmButton[]) {
|
||||
pb_1.Message.setRepeatedWrapperField(this, 5, value);
|
||||
}
|
||||
get hydrantAlarmButtons() {
|
||||
return pb_1.Message.getRepeatedWrapperField(this, HydrantAlarmButton, 6) as HydrantAlarmButton[];
|
||||
}
|
||||
set hydrantAlarmButtons(value: HydrantAlarmButton[]) {
|
||||
pb_1.Message.setRepeatedWrapperField(this, 6, value);
|
||||
}
|
||||
get gasExtinguishings() {
|
||||
return pb_1.Message.getRepeatedWrapperField(this, GasExtinguishing, 7) as GasExtinguishing[];
|
||||
}
|
||||
set gasExtinguishings(value: GasExtinguishing[]) {
|
||||
pb_1.Message.setRepeatedWrapperField(this, 7, value);
|
||||
}
|
||||
static fromObject(data: {
|
||||
canvas?: ReturnType<typeof dependency_1.iscsGraphicData.Canvas.prototype.toObject>;
|
||||
arrows?: ReturnType<typeof dependency_1.iscsGraphicData.Arrow.prototype.toObject>[];
|
||||
iscsTexts?: ReturnType<typeof dependency_1.iscsGraphicData.IscsText.prototype.toObject>[];
|
||||
rects?: ReturnType<typeof dependency_1.iscsGraphicData.Rect.prototype.toObject>[];
|
||||
manualAlarmButtons?: ReturnType<typeof ManualAlarmButton.prototype.toObject>[];
|
||||
hydrantAlarmButtons?: ReturnType<typeof HydrantAlarmButton.prototype.toObject>[];
|
||||
gasExtinguishings?: ReturnType<typeof GasExtinguishing.prototype.toObject>[];
|
||||
}): FASGraphicStorage {
|
||||
const message = new FASGraphicStorage({});
|
||||
if (data.canvas != null) {
|
||||
message.canvas = dependency_1.iscsGraphicData.Canvas.fromObject(data.canvas);
|
||||
}
|
||||
if (data.arrows != null) {
|
||||
message.arrows = data.arrows.map(item => dependency_1.iscsGraphicData.Arrow.fromObject(item));
|
||||
}
|
||||
if (data.iscsTexts != null) {
|
||||
message.iscsTexts = data.iscsTexts.map(item => dependency_1.iscsGraphicData.IscsText.fromObject(item));
|
||||
}
|
||||
if (data.rects != null) {
|
||||
message.rects = data.rects.map(item => dependency_1.iscsGraphicData.Rect.fromObject(item));
|
||||
}
|
||||
if (data.manualAlarmButtons != null) {
|
||||
message.manualAlarmButtons = data.manualAlarmButtons.map(item => ManualAlarmButton.fromObject(item));
|
||||
}
|
||||
if (data.hydrantAlarmButtons != null) {
|
||||
message.hydrantAlarmButtons = data.hydrantAlarmButtons.map(item => HydrantAlarmButton.fromObject(item));
|
||||
}
|
||||
if (data.gasExtinguishings != null) {
|
||||
message.gasExtinguishings = data.gasExtinguishings.map(item => GasExtinguishing.fromObject(item));
|
||||
}
|
||||
return message;
|
||||
}
|
||||
toObject() {
|
||||
const data: {
|
||||
canvas?: ReturnType<typeof dependency_1.iscsGraphicData.Canvas.prototype.toObject>;
|
||||
arrows?: ReturnType<typeof dependency_1.iscsGraphicData.Arrow.prototype.toObject>[];
|
||||
iscsTexts?: ReturnType<typeof dependency_1.iscsGraphicData.IscsText.prototype.toObject>[];
|
||||
rects?: ReturnType<typeof dependency_1.iscsGraphicData.Rect.prototype.toObject>[];
|
||||
manualAlarmButtons?: ReturnType<typeof ManualAlarmButton.prototype.toObject>[];
|
||||
hydrantAlarmButtons?: ReturnType<typeof HydrantAlarmButton.prototype.toObject>[];
|
||||
gasExtinguishings?: ReturnType<typeof GasExtinguishing.prototype.toObject>[];
|
||||
} = {};
|
||||
if (this.canvas != null) {
|
||||
data.canvas = this.canvas.toObject();
|
||||
}
|
||||
if (this.arrows != null) {
|
||||
data.arrows = this.arrows.map((item: dependency_1.iscsGraphicData.Arrow) => item.toObject());
|
||||
}
|
||||
if (this.iscsTexts != null) {
|
||||
data.iscsTexts = this.iscsTexts.map((item: dependency_1.iscsGraphicData.IscsText) => item.toObject());
|
||||
}
|
||||
if (this.rects != null) {
|
||||
data.rects = this.rects.map((item: dependency_1.iscsGraphicData.Rect) => item.toObject());
|
||||
}
|
||||
if (this.manualAlarmButtons != null) {
|
||||
data.manualAlarmButtons = this.manualAlarmButtons.map((item: ManualAlarmButton) => item.toObject());
|
||||
}
|
||||
if (this.hydrantAlarmButtons != null) {
|
||||
data.hydrantAlarmButtons = this.hydrantAlarmButtons.map((item: HydrantAlarmButton) => item.toObject());
|
||||
}
|
||||
if (this.gasExtinguishings != null) {
|
||||
data.gasExtinguishings = this.gasExtinguishings.map((item: GasExtinguishing) => item.toObject());
|
||||
}
|
||||
return data;
|
||||
}
|
||||
serialize(): Uint8Array;
|
||||
serialize(w: pb_1.BinaryWriter): void;
|
||||
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
|
||||
const writer = w || new pb_1.BinaryWriter();
|
||||
if (this.has_canvas)
|
||||
writer.writeMessage(1, this.canvas, () => this.canvas.serialize(writer));
|
||||
if (this.arrows.length)
|
||||
writer.writeRepeatedMessage(2, this.arrows, (item: dependency_1.iscsGraphicData.Arrow) => item.serialize(writer));
|
||||
if (this.iscsTexts.length)
|
||||
writer.writeRepeatedMessage(3, this.iscsTexts, (item: dependency_1.iscsGraphicData.IscsText) => item.serialize(writer));
|
||||
if (this.rects.length)
|
||||
writer.writeRepeatedMessage(4, this.rects, (item: dependency_1.iscsGraphicData.Rect) => item.serialize(writer));
|
||||
if (this.manualAlarmButtons.length)
|
||||
writer.writeRepeatedMessage(5, this.manualAlarmButtons, (item: ManualAlarmButton) => item.serialize(writer));
|
||||
if (this.hydrantAlarmButtons.length)
|
||||
writer.writeRepeatedMessage(6, this.hydrantAlarmButtons, (item: HydrantAlarmButton) => item.serialize(writer));
|
||||
if (this.gasExtinguishings.length)
|
||||
writer.writeRepeatedMessage(7, this.gasExtinguishings, (item: GasExtinguishing) => item.serialize(writer));
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FASGraphicStorage {
|
||||
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FASGraphicStorage();
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup())
|
||||
break;
|
||||
switch (reader.getFieldNumber()) {
|
||||
case 1:
|
||||
reader.readMessage(message.canvas, () => message.canvas = dependency_1.iscsGraphicData.Canvas.deserialize(reader));
|
||||
break;
|
||||
case 2:
|
||||
reader.readMessage(message.arrows, () => pb_1.Message.addToRepeatedWrapperField(message, 2, dependency_1.iscsGraphicData.Arrow.deserialize(reader), dependency_1.iscsGraphicData.Arrow));
|
||||
break;
|
||||
case 3:
|
||||
reader.readMessage(message.iscsTexts, () => pb_1.Message.addToRepeatedWrapperField(message, 3, dependency_1.iscsGraphicData.IscsText.deserialize(reader), dependency_1.iscsGraphicData.IscsText));
|
||||
break;
|
||||
case 4:
|
||||
reader.readMessage(message.rects, () => pb_1.Message.addToRepeatedWrapperField(message, 4, dependency_1.iscsGraphicData.Rect.deserialize(reader), dependency_1.iscsGraphicData.Rect));
|
||||
break;
|
||||
case 5:
|
||||
reader.readMessage(message.manualAlarmButtons, () => pb_1.Message.addToRepeatedWrapperField(message, 5, ManualAlarmButton.deserialize(reader), ManualAlarmButton));
|
||||
break;
|
||||
case 6:
|
||||
reader.readMessage(message.hydrantAlarmButtons, () => pb_1.Message.addToRepeatedWrapperField(message, 6, HydrantAlarmButton.deserialize(reader), HydrantAlarmButton));
|
||||
break;
|
||||
case 7:
|
||||
reader.readMessage(message.gasExtinguishings, () => pb_1.Message.addToRepeatedWrapperField(message, 7, GasExtinguishing.deserialize(reader), GasExtinguishing));
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
serializeBinary(): Uint8Array {
|
||||
return this.serialize();
|
||||
}
|
||||
static deserializeBinary(bytes: Uint8Array): FASGraphicStorage {
|
||||
return FASGraphicStorage.deserialize(bytes);
|
||||
}
|
||||
}
|
||||
export class ManualAlarmButton extends pb_1.Message {
|
||||
#one_of_decls: number[][] = [];
|
||||
constructor(data?: any[] | {
|
||||
common?: dependency_1.iscsGraphicData.CommonInfo;
|
||||
code?: string;
|
||||
}) {
|
||||
super();
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
|
||||
if (!Array.isArray(data) && typeof data == "object") {
|
||||
if ("common" in data && data.common != undefined) {
|
||||
this.common = data.common;
|
||||
}
|
||||
if ("code" in data && data.code != undefined) {
|
||||
this.code = data.code;
|
||||
}
|
||||
}
|
||||
}
|
||||
get common() {
|
||||
return pb_1.Message.getWrapperField(this, dependency_1.iscsGraphicData.CommonInfo, 1) as dependency_1.iscsGraphicData.CommonInfo;
|
||||
}
|
||||
set common(value: dependency_1.iscsGraphicData.CommonInfo) {
|
||||
pb_1.Message.setWrapperField(this, 1, value);
|
||||
}
|
||||
get has_common() {
|
||||
return pb_1.Message.getField(this, 1) != null;
|
||||
}
|
||||
get code() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
|
||||
}
|
||||
set code(value: string) {
|
||||
pb_1.Message.setField(this, 2, value);
|
||||
}
|
||||
static fromObject(data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
}): ManualAlarmButton {
|
||||
const message = new ManualAlarmButton({});
|
||||
if (data.common != null) {
|
||||
message.common = dependency_1.iscsGraphicData.CommonInfo.fromObject(data.common);
|
||||
}
|
||||
if (data.code != null) {
|
||||
message.code = data.code;
|
||||
}
|
||||
return message;
|
||||
}
|
||||
toObject() {
|
||||
const data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
} = {};
|
||||
if (this.common != null) {
|
||||
data.common = this.common.toObject();
|
||||
}
|
||||
if (this.code != null) {
|
||||
data.code = this.code;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
serialize(): Uint8Array;
|
||||
serialize(w: pb_1.BinaryWriter): void;
|
||||
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
|
||||
const writer = w || new pb_1.BinaryWriter();
|
||||
if (this.has_common)
|
||||
writer.writeMessage(1, this.common, () => this.common.serialize(writer));
|
||||
if (this.code.length)
|
||||
writer.writeString(2, this.code);
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ManualAlarmButton {
|
||||
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ManualAlarmButton();
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup())
|
||||
break;
|
||||
switch (reader.getFieldNumber()) {
|
||||
case 1:
|
||||
reader.readMessage(message.common, () => message.common = dependency_1.iscsGraphicData.CommonInfo.deserialize(reader));
|
||||
break;
|
||||
case 2:
|
||||
message.code = reader.readString();
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
serializeBinary(): Uint8Array {
|
||||
return this.serialize();
|
||||
}
|
||||
static deserializeBinary(bytes: Uint8Array): ManualAlarmButton {
|
||||
return ManualAlarmButton.deserialize(bytes);
|
||||
}
|
||||
}
|
||||
export class HydrantAlarmButton extends pb_1.Message {
|
||||
#one_of_decls: number[][] = [];
|
||||
constructor(data?: any[] | {
|
||||
common?: dependency_1.iscsGraphicData.CommonInfo;
|
||||
code?: string;
|
||||
}) {
|
||||
super();
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
|
||||
if (!Array.isArray(data) && typeof data == "object") {
|
||||
if ("common" in data && data.common != undefined) {
|
||||
this.common = data.common;
|
||||
}
|
||||
if ("code" in data && data.code != undefined) {
|
||||
this.code = data.code;
|
||||
}
|
||||
}
|
||||
}
|
||||
get common() {
|
||||
return pb_1.Message.getWrapperField(this, dependency_1.iscsGraphicData.CommonInfo, 1) as dependency_1.iscsGraphicData.CommonInfo;
|
||||
}
|
||||
set common(value: dependency_1.iscsGraphicData.CommonInfo) {
|
||||
pb_1.Message.setWrapperField(this, 1, value);
|
||||
}
|
||||
get has_common() {
|
||||
return pb_1.Message.getField(this, 1) != null;
|
||||
}
|
||||
get code() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
|
||||
}
|
||||
set code(value: string) {
|
||||
pb_1.Message.setField(this, 2, value);
|
||||
}
|
||||
static fromObject(data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
}): HydrantAlarmButton {
|
||||
const message = new HydrantAlarmButton({});
|
||||
if (data.common != null) {
|
||||
message.common = dependency_1.iscsGraphicData.CommonInfo.fromObject(data.common);
|
||||
}
|
||||
if (data.code != null) {
|
||||
message.code = data.code;
|
||||
}
|
||||
return message;
|
||||
}
|
||||
toObject() {
|
||||
const data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
} = {};
|
||||
if (this.common != null) {
|
||||
data.common = this.common.toObject();
|
||||
}
|
||||
if (this.code != null) {
|
||||
data.code = this.code;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
serialize(): Uint8Array;
|
||||
serialize(w: pb_1.BinaryWriter): void;
|
||||
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
|
||||
const writer = w || new pb_1.BinaryWriter();
|
||||
if (this.has_common)
|
||||
writer.writeMessage(1, this.common, () => this.common.serialize(writer));
|
||||
if (this.code.length)
|
||||
writer.writeString(2, this.code);
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): HydrantAlarmButton {
|
||||
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new HydrantAlarmButton();
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup())
|
||||
break;
|
||||
switch (reader.getFieldNumber()) {
|
||||
case 1:
|
||||
reader.readMessage(message.common, () => message.common = dependency_1.iscsGraphicData.CommonInfo.deserialize(reader));
|
||||
break;
|
||||
case 2:
|
||||
message.code = reader.readString();
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
serializeBinary(): Uint8Array {
|
||||
return this.serialize();
|
||||
}
|
||||
static deserializeBinary(bytes: Uint8Array): HydrantAlarmButton {
|
||||
return HydrantAlarmButton.deserialize(bytes);
|
||||
}
|
||||
}
|
||||
export class GasExtinguishing extends pb_1.Message {
|
||||
#one_of_decls: number[][] = [];
|
||||
constructor(data?: any[] | {
|
||||
common?: dependency_1.iscsGraphicData.CommonInfo;
|
||||
code?: string;
|
||||
}) {
|
||||
super();
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
|
||||
if (!Array.isArray(data) && typeof data == "object") {
|
||||
if ("common" in data && data.common != undefined) {
|
||||
this.common = data.common;
|
||||
}
|
||||
if ("code" in data && data.code != undefined) {
|
||||
this.code = data.code;
|
||||
}
|
||||
}
|
||||
}
|
||||
get common() {
|
||||
return pb_1.Message.getWrapperField(this, dependency_1.iscsGraphicData.CommonInfo, 1) as dependency_1.iscsGraphicData.CommonInfo;
|
||||
}
|
||||
set common(value: dependency_1.iscsGraphicData.CommonInfo) {
|
||||
pb_1.Message.setWrapperField(this, 1, value);
|
||||
}
|
||||
get has_common() {
|
||||
return pb_1.Message.getField(this, 1) != null;
|
||||
}
|
||||
get code() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
|
||||
}
|
||||
set code(value: string) {
|
||||
pb_1.Message.setField(this, 2, value);
|
||||
}
|
||||
static fromObject(data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
}): GasExtinguishing {
|
||||
const message = new GasExtinguishing({});
|
||||
if (data.common != null) {
|
||||
message.common = dependency_1.iscsGraphicData.CommonInfo.fromObject(data.common);
|
||||
}
|
||||
if (data.code != null) {
|
||||
message.code = data.code;
|
||||
}
|
||||
return message;
|
||||
}
|
||||
toObject() {
|
||||
const data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
} = {};
|
||||
if (this.common != null) {
|
||||
data.common = this.common.toObject();
|
||||
}
|
||||
if (this.code != null) {
|
||||
data.code = this.code;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
serialize(): Uint8Array;
|
||||
serialize(w: pb_1.BinaryWriter): void;
|
||||
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
|
||||
const writer = w || new pb_1.BinaryWriter();
|
||||
if (this.has_common)
|
||||
writer.writeMessage(1, this.common, () => this.common.serialize(writer));
|
||||
if (this.code.length)
|
||||
writer.writeString(2, this.code);
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): GasExtinguishing {
|
||||
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new GasExtinguishing();
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup())
|
||||
break;
|
||||
switch (reader.getFieldNumber()) {
|
||||
case 1:
|
||||
reader.readMessage(message.common, () => message.common = dependency_1.iscsGraphicData.CommonInfo.deserialize(reader));
|
||||
break;
|
||||
case 2:
|
||||
message.code = reader.readString();
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
serializeBinary(): Uint8Array {
|
||||
return this.serialize();
|
||||
}
|
||||
static deserializeBinary(bytes: Uint8Array): GasExtinguishing {
|
||||
return GasExtinguishing.deserialize(bytes);
|
||||
}
|
||||
}
|
||||
export class SmokeDetector extends pb_1.Message {
|
||||
#one_of_decls: number[][] = [];
|
||||
constructor(data?: any[] | {
|
||||
common?: dependency_1.iscsGraphicData.CommonInfo;
|
||||
code?: string;
|
||||
}) {
|
||||
super();
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
|
||||
if (!Array.isArray(data) && typeof data == "object") {
|
||||
if ("common" in data && data.common != undefined) {
|
||||
this.common = data.common;
|
||||
}
|
||||
if ("code" in data && data.code != undefined) {
|
||||
this.code = data.code;
|
||||
}
|
||||
}
|
||||
}
|
||||
get common() {
|
||||
return pb_1.Message.getWrapperField(this, dependency_1.iscsGraphicData.CommonInfo, 1) as dependency_1.iscsGraphicData.CommonInfo;
|
||||
}
|
||||
set common(value: dependency_1.iscsGraphicData.CommonInfo) {
|
||||
pb_1.Message.setWrapperField(this, 1, value);
|
||||
}
|
||||
get has_common() {
|
||||
return pb_1.Message.getField(this, 1) != null;
|
||||
}
|
||||
get code() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
|
||||
}
|
||||
set code(value: string) {
|
||||
pb_1.Message.setField(this, 2, value);
|
||||
}
|
||||
static fromObject(data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
}): SmokeDetector {
|
||||
const message = new SmokeDetector({});
|
||||
if (data.common != null) {
|
||||
message.common = dependency_1.iscsGraphicData.CommonInfo.fromObject(data.common);
|
||||
}
|
||||
if (data.code != null) {
|
||||
message.code = data.code;
|
||||
}
|
||||
return message;
|
||||
}
|
||||
toObject() {
|
||||
const data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
} = {};
|
||||
if (this.common != null) {
|
||||
data.common = this.common.toObject();
|
||||
}
|
||||
if (this.code != null) {
|
||||
data.code = this.code;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
serialize(): Uint8Array;
|
||||
serialize(w: pb_1.BinaryWriter): void;
|
||||
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
|
||||
const writer = w || new pb_1.BinaryWriter();
|
||||
if (this.has_common)
|
||||
writer.writeMessage(1, this.common, () => this.common.serialize(writer));
|
||||
if (this.code.length)
|
||||
writer.writeString(2, this.code);
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): SmokeDetector {
|
||||
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new SmokeDetector();
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup())
|
||||
break;
|
||||
switch (reader.getFieldNumber()) {
|
||||
case 1:
|
||||
reader.readMessage(message.common, () => message.common = dependency_1.iscsGraphicData.CommonInfo.deserialize(reader));
|
||||
break;
|
||||
case 2:
|
||||
message.code = reader.readString();
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
serializeBinary(): Uint8Array {
|
||||
return this.serialize();
|
||||
}
|
||||
static deserializeBinary(bytes: Uint8Array): SmokeDetector {
|
||||
return SmokeDetector.deserialize(bytes);
|
||||
}
|
||||
}
|
||||
export class TemperatureDetector extends pb_1.Message {
|
||||
#one_of_decls: number[][] = [];
|
||||
constructor(data?: any[] | {
|
||||
common?: dependency_1.iscsGraphicData.CommonInfo;
|
||||
code?: string;
|
||||
}) {
|
||||
super();
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
|
||||
if (!Array.isArray(data) && typeof data == "object") {
|
||||
if ("common" in data && data.common != undefined) {
|
||||
this.common = data.common;
|
||||
}
|
||||
if ("code" in data && data.code != undefined) {
|
||||
this.code = data.code;
|
||||
}
|
||||
}
|
||||
}
|
||||
get common() {
|
||||
return pb_1.Message.getWrapperField(this, dependency_1.iscsGraphicData.CommonInfo, 1) as dependency_1.iscsGraphicData.CommonInfo;
|
||||
}
|
||||
set common(value: dependency_1.iscsGraphicData.CommonInfo) {
|
||||
pb_1.Message.setWrapperField(this, 1, value);
|
||||
}
|
||||
get has_common() {
|
||||
return pb_1.Message.getField(this, 1) != null;
|
||||
}
|
||||
get code() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
|
||||
}
|
||||
set code(value: string) {
|
||||
pb_1.Message.setField(this, 2, value);
|
||||
}
|
||||
static fromObject(data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
}): TemperatureDetector {
|
||||
const message = new TemperatureDetector({});
|
||||
if (data.common != null) {
|
||||
message.common = dependency_1.iscsGraphicData.CommonInfo.fromObject(data.common);
|
||||
}
|
||||
if (data.code != null) {
|
||||
message.code = data.code;
|
||||
}
|
||||
return message;
|
||||
}
|
||||
toObject() {
|
||||
const data: {
|
||||
common?: ReturnType<typeof dependency_1.iscsGraphicData.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
} = {};
|
||||
if (this.common != null) {
|
||||
data.common = this.common.toObject();
|
||||
}
|
||||
if (this.code != null) {
|
||||
data.code = this.code;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
serialize(): Uint8Array;
|
||||
serialize(w: pb_1.BinaryWriter): void;
|
||||
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
|
||||
const writer = w || new pb_1.BinaryWriter();
|
||||
if (this.has_common)
|
||||
writer.writeMessage(1, this.common, () => this.common.serialize(writer));
|
||||
if (this.code.length)
|
||||
writer.writeString(2, this.code);
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): TemperatureDetector {
|
||||
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new TemperatureDetector();
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup())
|
||||
break;
|
||||
switch (reader.getFieldNumber()) {
|
||||
case 1:
|
||||
reader.readMessage(message.common, () => message.common = dependency_1.iscsGraphicData.CommonInfo.deserialize(reader));
|
||||
break;
|
||||
case 2:
|
||||
message.code = reader.readString();
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
serializeBinary(): Uint8Array {
|
||||
return this.serialize();
|
||||
}
|
||||
static deserializeBinary(bytes: Uint8Array): TemperatureDetector {
|
||||
return TemperatureDetector.deserialize(bytes);
|
||||
}
|
||||
}
|
||||
}
|
@ -216,9 +216,10 @@ export namespace iscsGraphicData {
|
||||
texts?: Text[];
|
||||
rects?: Rect[];
|
||||
lines?: Line[];
|
||||
circles?: Circle[];
|
||||
}) {
|
||||
super();
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 2, 3, 4], this.#one_of_decls);
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 2, 3, 4, 5], this.#one_of_decls);
|
||||
if (!Array.isArray(data) && typeof data == "object") {
|
||||
if ("arrows" in data && data.arrows != undefined) {
|
||||
this.arrows = data.arrows;
|
||||
@ -232,6 +233,9 @@ export namespace iscsGraphicData {
|
||||
if ("lines" in data && data.lines != undefined) {
|
||||
this.lines = data.lines;
|
||||
}
|
||||
if ("circles" in data && data.circles != undefined) {
|
||||
this.circles = data.circles;
|
||||
}
|
||||
}
|
||||
}
|
||||
get arrows() {
|
||||
@ -258,11 +262,18 @@ export namespace iscsGraphicData {
|
||||
set lines(value: Line[]) {
|
||||
pb_1.Message.setRepeatedWrapperField(this, 4, value);
|
||||
}
|
||||
get circles() {
|
||||
return pb_1.Message.getRepeatedWrapperField(this, Circle, 5) as Circle[];
|
||||
}
|
||||
set circles(value: Circle[]) {
|
||||
pb_1.Message.setRepeatedWrapperField(this, 5, value);
|
||||
}
|
||||
static fromObject(data: {
|
||||
arrows?: ReturnType<typeof Arrow.prototype.toObject>[];
|
||||
texts?: ReturnType<typeof Text.prototype.toObject>[];
|
||||
rects?: ReturnType<typeof Rect.prototype.toObject>[];
|
||||
lines?: ReturnType<typeof Line.prototype.toObject>[];
|
||||
circles?: ReturnType<typeof Circle.prototype.toObject>[];
|
||||
}): CommonGraphicStorage {
|
||||
const message = new CommonGraphicStorage({});
|
||||
if (data.arrows != null) {
|
||||
@ -277,6 +288,9 @@ export namespace iscsGraphicData {
|
||||
if (data.lines != null) {
|
||||
message.lines = data.lines.map(item => Line.fromObject(item));
|
||||
}
|
||||
if (data.circles != null) {
|
||||
message.circles = data.circles.map(item => Circle.fromObject(item));
|
||||
}
|
||||
return message;
|
||||
}
|
||||
toObject() {
|
||||
@ -285,6 +299,7 @@ export namespace iscsGraphicData {
|
||||
texts?: ReturnType<typeof Text.prototype.toObject>[];
|
||||
rects?: ReturnType<typeof Rect.prototype.toObject>[];
|
||||
lines?: ReturnType<typeof Line.prototype.toObject>[];
|
||||
circles?: ReturnType<typeof Circle.prototype.toObject>[];
|
||||
} = {};
|
||||
if (this.arrows != null) {
|
||||
data.arrows = this.arrows.map((item: Arrow) => item.toObject());
|
||||
@ -298,6 +313,9 @@ export namespace iscsGraphicData {
|
||||
if (this.lines != null) {
|
||||
data.lines = this.lines.map((item: Line) => item.toObject());
|
||||
}
|
||||
if (this.circles != null) {
|
||||
data.circles = this.circles.map((item: Circle) => item.toObject());
|
||||
}
|
||||
return data;
|
||||
}
|
||||
serialize(): Uint8Array;
|
||||
@ -312,6 +330,8 @@ export namespace iscsGraphicData {
|
||||
writer.writeRepeatedMessage(3, this.rects, (item: Rect) => item.serialize(writer));
|
||||
if (this.lines.length)
|
||||
writer.writeRepeatedMessage(4, this.lines, (item: Line) => item.serialize(writer));
|
||||
if (this.circles.length)
|
||||
writer.writeRepeatedMessage(5, this.circles, (item: Circle) => item.serialize(writer));
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
@ -333,6 +353,9 @@ export namespace iscsGraphicData {
|
||||
case 4:
|
||||
reader.readMessage(message.lines, () => pb_1.Message.addToRepeatedWrapperField(message, 4, Line.deserialize(reader), Line));
|
||||
break;
|
||||
case 5:
|
||||
reader.readMessage(message.circles, () => pb_1.Message.addToRepeatedWrapperField(message, 5, Circle.deserialize(reader), Circle));
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
}
|
||||
@ -1111,6 +1134,240 @@ export namespace iscsGraphicData {
|
||||
return Line.deserialize(bytes);
|
||||
}
|
||||
}
|
||||
export class Circle extends pb_1.Message {
|
||||
#one_of_decls: number[][] = [];
|
||||
constructor(data?: any[] | {
|
||||
common?: dependency_1.common.CommonInfo;
|
||||
code?: string;
|
||||
position?: dependency_1.common.Point;
|
||||
radius?: number;
|
||||
lineWidth?: number;
|
||||
lineColor?: string;
|
||||
fillColor?: string;
|
||||
alpha?: number;
|
||||
}) {
|
||||
super();
|
||||
pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
|
||||
if (!Array.isArray(data) && typeof data == "object") {
|
||||
if ("common" in data && data.common != undefined) {
|
||||
this.common = data.common;
|
||||
}
|
||||
if ("code" in data && data.code != undefined) {
|
||||
this.code = data.code;
|
||||
}
|
||||
if ("position" in data && data.position != undefined) {
|
||||
this.position = data.position;
|
||||
}
|
||||
if ("radius" in data && data.radius != undefined) {
|
||||
this.radius = data.radius;
|
||||
}
|
||||
if ("lineWidth" in data && data.lineWidth != undefined) {
|
||||
this.lineWidth = data.lineWidth;
|
||||
}
|
||||
if ("lineColor" in data && data.lineColor != undefined) {
|
||||
this.lineColor = data.lineColor;
|
||||
}
|
||||
if ("fillColor" in data && data.fillColor != undefined) {
|
||||
this.fillColor = data.fillColor;
|
||||
}
|
||||
if ("alpha" in data && data.alpha != undefined) {
|
||||
this.alpha = data.alpha;
|
||||
}
|
||||
}
|
||||
}
|
||||
get common() {
|
||||
return pb_1.Message.getWrapperField(this, dependency_1.common.CommonInfo, 1) as dependency_1.common.CommonInfo;
|
||||
}
|
||||
set common(value: dependency_1.common.CommonInfo) {
|
||||
pb_1.Message.setWrapperField(this, 1, value);
|
||||
}
|
||||
get has_common() {
|
||||
return pb_1.Message.getField(this, 1) != null;
|
||||
}
|
||||
get code() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
|
||||
}
|
||||
set code(value: string) {
|
||||
pb_1.Message.setField(this, 2, value);
|
||||
}
|
||||
get position() {
|
||||
return pb_1.Message.getWrapperField(this, dependency_1.common.Point, 3) as dependency_1.common.Point;
|
||||
}
|
||||
set position(value: dependency_1.common.Point) {
|
||||
pb_1.Message.setWrapperField(this, 3, value);
|
||||
}
|
||||
get has_position() {
|
||||
return pb_1.Message.getField(this, 3) != null;
|
||||
}
|
||||
get radius() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
|
||||
}
|
||||
set radius(value: number) {
|
||||
pb_1.Message.setField(this, 4, value);
|
||||
}
|
||||
get lineWidth() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
|
||||
}
|
||||
set lineWidth(value: number) {
|
||||
pb_1.Message.setField(this, 5, value);
|
||||
}
|
||||
get lineColor() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 6, "") as string;
|
||||
}
|
||||
set lineColor(value: string) {
|
||||
pb_1.Message.setField(this, 6, value);
|
||||
}
|
||||
get fillColor() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 7, "") as string;
|
||||
}
|
||||
set fillColor(value: string) {
|
||||
pb_1.Message.setField(this, 7, value);
|
||||
}
|
||||
get alpha() {
|
||||
return pb_1.Message.getFieldWithDefault(this, 8, 0) as number;
|
||||
}
|
||||
set alpha(value: number) {
|
||||
pb_1.Message.setField(this, 8, value);
|
||||
}
|
||||
static fromObject(data: {
|
||||
common?: ReturnType<typeof dependency_1.common.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
position?: ReturnType<typeof dependency_1.common.Point.prototype.toObject>;
|
||||
radius?: number;
|
||||
lineWidth?: number;
|
||||
lineColor?: string;
|
||||
fillColor?: string;
|
||||
alpha?: number;
|
||||
}): Circle {
|
||||
const message = new Circle({});
|
||||
if (data.common != null) {
|
||||
message.common = dependency_1.common.CommonInfo.fromObject(data.common);
|
||||
}
|
||||
if (data.code != null) {
|
||||
message.code = data.code;
|
||||
}
|
||||
if (data.position != null) {
|
||||
message.position = dependency_1.common.Point.fromObject(data.position);
|
||||
}
|
||||
if (data.radius != null) {
|
||||
message.radius = data.radius;
|
||||
}
|
||||
if (data.lineWidth != null) {
|
||||
message.lineWidth = data.lineWidth;
|
||||
}
|
||||
if (data.lineColor != null) {
|
||||
message.lineColor = data.lineColor;
|
||||
}
|
||||
if (data.fillColor != null) {
|
||||
message.fillColor = data.fillColor;
|
||||
}
|
||||
if (data.alpha != null) {
|
||||
message.alpha = data.alpha;
|
||||
}
|
||||
return message;
|
||||
}
|
||||
toObject() {
|
||||
const data: {
|
||||
common?: ReturnType<typeof dependency_1.common.CommonInfo.prototype.toObject>;
|
||||
code?: string;
|
||||
position?: ReturnType<typeof dependency_1.common.Point.prototype.toObject>;
|
||||
radius?: number;
|
||||
lineWidth?: number;
|
||||
lineColor?: string;
|
||||
fillColor?: string;
|
||||
alpha?: number;
|
||||
} = {};
|
||||
if (this.common != null) {
|
||||
data.common = this.common.toObject();
|
||||
}
|
||||
if (this.code != null) {
|
||||
data.code = this.code;
|
||||
}
|
||||
if (this.position != null) {
|
||||
data.position = this.position.toObject();
|
||||
}
|
||||
if (this.radius != null) {
|
||||
data.radius = this.radius;
|
||||
}
|
||||
if (this.lineWidth != null) {
|
||||
data.lineWidth = this.lineWidth;
|
||||
}
|
||||
if (this.lineColor != null) {
|
||||
data.lineColor = this.lineColor;
|
||||
}
|
||||
if (this.fillColor != null) {
|
||||
data.fillColor = this.fillColor;
|
||||
}
|
||||
if (this.alpha != null) {
|
||||
data.alpha = this.alpha;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
serialize(): Uint8Array;
|
||||
serialize(w: pb_1.BinaryWriter): void;
|
||||
serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
|
||||
const writer = w || new pb_1.BinaryWriter();
|
||||
if (this.has_common)
|
||||
writer.writeMessage(1, this.common, () => this.common.serialize(writer));
|
||||
if (this.code.length)
|
||||
writer.writeString(2, this.code);
|
||||
if (this.has_position)
|
||||
writer.writeMessage(3, this.position, () => this.position.serialize(writer));
|
||||
if (this.radius != 0)
|
||||
writer.writeFloat(4, this.radius);
|
||||
if (this.lineWidth != 0)
|
||||
writer.writeInt32(5, this.lineWidth);
|
||||
if (this.lineColor.length)
|
||||
writer.writeString(6, this.lineColor);
|
||||
if (this.fillColor.length)
|
||||
writer.writeString(7, this.fillColor);
|
||||
if (this.alpha != 0)
|
||||
writer.writeFloat(8, this.alpha);
|
||||
if (!w)
|
||||
return writer.getResultBuffer();
|
||||
}
|
||||
static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Circle {
|
||||
const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Circle();
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup())
|
||||
break;
|
||||
switch (reader.getFieldNumber()) {
|
||||
case 1:
|
||||
reader.readMessage(message.common, () => message.common = dependency_1.common.CommonInfo.deserialize(reader));
|
||||
break;
|
||||
case 2:
|
||||
message.code = reader.readString();
|
||||
break;
|
||||
case 3:
|
||||
reader.readMessage(message.position, () => message.position = dependency_1.common.Point.deserialize(reader));
|
||||
break;
|
||||
case 4:
|
||||
message.radius = reader.readFloat();
|
||||
break;
|
||||
case 5:
|
||||
message.lineWidth = reader.readInt32();
|
||||
break;
|
||||
case 6:
|
||||
message.lineColor = reader.readString();
|
||||
break;
|
||||
case 7:
|
||||
message.fillColor = reader.readString();
|
||||
break;
|
||||
case 8:
|
||||
message.alpha = reader.readFloat();
|
||||
break;
|
||||
default: reader.skipField();
|
||||
}
|
||||
}
|
||||
return message;
|
||||
}
|
||||
serializeBinary(): Uint8Array {
|
||||
return this.serialize();
|
||||
}
|
||||
static deserializeBinary(bytes: Uint8Array): Circle {
|
||||
return Circle.deserialize(bytes);
|
||||
}
|
||||
}
|
||||
export class CCTVButton extends pb_1.Message {
|
||||
#one_of_decls: number[][] = [];
|
||||
constructor(data?: any[] | {
|
||||
|
@ -2528,9 +2528,9 @@ isobject@^3.0.1:
|
||||
resolved "https://mirrors.huaweicloud.com/repository/npm/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
|
||||
integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
|
||||
|
||||
"jl-graphic@git+https://gitea.joylink.club/joylink/graphic-pixi.git#v0.1.18":
|
||||
version "0.1.16"
|
||||
resolved "git+https://gitea.joylink.club/joylink/graphic-pixi.git#38045a10271f81b65820db402051fefc62b0a2cd"
|
||||
"jl-graphic@git+https://gitea.joylink.club/joylink/graphic-pixi.git#v0.1.19":
|
||||
version "0.1.18"
|
||||
resolved "git+https://gitea.joylink.club/joylink/graphic-pixi.git#1c803d096585e258be3f60d3d95d1bd0c318d316"
|
||||
dependencies:
|
||||
"@pixi/graphics-extras" "^7.3.2"
|
||||
"@pixi/utils" "^7.3.2"
|
||||
|
Loading…
Reference in New Issue
Block a user