From 1c95a184f83f180414e0ec93dc6af8380ac20732 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期二, 02 十二月 2025 13:51:47 +0800
Subject: [PATCH] #
---
src/main/webapp/views/watch/console2.html | 121 ++++++++++++++++++++++++++++++---------
1 files changed, 92 insertions(+), 29 deletions(-)
diff --git a/src/main/webapp/views/watch/console2.html b/src/main/webapp/views/watch/console2.html
index ead3743..5657f1c 100644
--- a/src/main/webapp/views/watch/console2.html
+++ b/src/main/webapp/views/watch/console2.html
@@ -85,6 +85,8 @@
let pixiStaMap = new Map();
let pixiCrnMap = new Map();
let pixiShelfMap = new Map();
+ let pixiTrackMap = new Map();
+ let crnList = [];
let objectsContainer;
let objectsContainer2;
let graphicsShelf;
@@ -334,38 +336,80 @@
pixiStaMap = new Map();//閲嶇疆
objectsContainer.removeChildren()
- let bayWidthList = this.initWidth(map)
- map.forEach((item, index) => {
- for(let idx = 0;idx < item.length;idx++){
- let val = item[idx];
- if(val.cellWidth == undefined || val.cellWidth === ''){
- val.cellWidth = bayWidthList[idx];
- }
- }
- })
-
let bayHeightList = this.initHeight(map);
+ let bayWidthList = this.initWidth(map)
map.forEach((item, index) => {
for(let idx = 0;idx < item.length;idx++){
let val = item[idx];
if(val.cellHeight == undefined || val.cellHeight === ''){
val.cellHeight = bayHeightList[index];
}
+ if(val.cellWidth == undefined || val.cellWidth === ''){
+ val.cellWidth = bayWidthList[idx];
+ }
}
})
map.forEach((item, index) => {
for(let idx = 0;idx < item.length;idx++){
let val = item[idx];
- // 璁$畻鍚堝苟鍗曞厓鏍肩殑瀹為檯瀹介珮
let cellWidth = val.cellWidth / 40;
let cellHeight = val.cellHeight / 8;
val.width = cellWidth;
val.height = cellHeight;
- val.posX = idx * cellWidth;
- val.posY = index * cellHeight;
+ let mergeHeight = cellHeight;
+ if(val.rowSpan > 1) {
+ for(let i = 1;i < val.rowSpan;i++){
+ let nextMerge = map[index + i][idx];
+ if(nextMerge.type != 'merge'){
+ continue;
+ }
+
+ let mergeCellHeight = nextMerge.cellHeight / 8;
+ mergeHeight += mergeCellHeight;
+ }
+
+ val.height = mergeHeight;
+ }
+
+ let mergeWidth = cellWidth;
+ if(val.colSpan > 1) {
+ for(let i = 1;i < val.colSpan;i++){
+ let nextMerge = map[index][idx + i];
+ if(nextMerge.type != 'merge'){
+ continue;
+ }
+
+ let mergeCellWidth = nextMerge.cellWidth / 40;
+ mergeWidth += mergeCellWidth;
+ }
+
+ val.width = mergeWidth;
+ }
+ }
+ })
+
+ const rowHeightScaled = bayHeightList.map(h => (h != null && h !== -1) ? (h / 8) : (height));
+ let yOffsets = [];
+ let yCursor = 0;
+ for (let r = 0; r < map.length; r++) {
+ yOffsets[r] = yCursor;
+ yCursor += (rowHeightScaled[r] || 0);
+ }
+
+ map.forEach((row, rowIndex) => {
+ let xCursor = 0;
+ for (let colIndex = 0; colIndex < row.length; colIndex++) {
+ let val = row[colIndex];
+ let cellWidth = val.width;
+ let cellHeight = val.height;
+
+ val.posX = xCursor;
+ val.posY = yOffsets[rowIndex];
+
+ xCursor += cellWidth;
}
})
@@ -403,6 +447,26 @@
}
});
+ crnList.forEach((item) => {
+ let sprite = new PIXI.Sprite(graphicsCrn);
+ const deviceNo = getDeviceNo(item.value);
+ const taskNo = getTaskNo(item.value);
+ const style = new PIXI.TextStyle({ fontFamily: 'Arial', fontSize: 12, fill: '#ffffff', stroke: '#000000', strokeThickness: 2 });
+ const txt = taskNo > 0 ? (deviceNo + "(" + taskNo + ")") : String(deviceNo);
+ const text = new PIXI.Text(txt, style);
+ text.anchor.set(0.5);
+ text.position.set(sprite.width / 2, sprite.height / 2);
+ sprite.addChild(text);
+ sprite.textObj = text;
+ sprite.zIndex = 1;
+
+ sprite.position.set(item.posX, item.posY);
+ sprite.interactive = true; // 蹇呴』瑕佽缃墠鑳芥帴鏀朵簨浠�
+ sprite.buttonMode = true; // 璁╁厜鏍囧湪hover鏃跺彉涓烘墜鍨嬫寚閽�
+
+ pixiCrnMap.set(parseInt(deviceNo), sprite);
+ objectsContainer2.addChild(sprite);
+ })
//瑙嗚灞呬腑
@@ -663,6 +727,16 @@
return new PIXI.Sprite(texture);
}
+ function createTrackSprite(width, height) {
+ let idx = width + "-" + height;
+ let texture = pixiTrackMap.get(idx);
+ if (texture == undefined) {
+ texture = createTrackTexture(width, height);
+ pixiTrackMap.set(idx, texture);
+ }
+ return new PIXI.Sprite(texture);
+ }
+
function getContainer(type, width, height) {
let graphics = new PIXI.Graphics();
let drawBorder = true;
@@ -781,22 +855,11 @@
pixiStaMap.set(parseInt(siteId), sprite);
}
} else if (item.type == 'crn') {
- if (getDeviceNo(value) == -1) {
- sprite = new PIXI.Sprite(graphicsCrnTrack);
- sprite.zIndex = 0;
- } else {
- sprite = new PIXI.Sprite(graphicsCrn);
- const deviceNo = getDeviceNo(value);
- const taskNo = getTaskNo(value);
- const style = new PIXI.TextStyle({ fontFamily: 'Arial', fontSize: 12, fill: '#ffffff', stroke: '#000000', strokeThickness: 2 });
- const txt = taskNo > 0 ? (deviceNo + "(" + taskNo + ")") : String(deviceNo);
- const text = new PIXI.Text(txt, style);
- text.anchor.set(0.5);
- text.position.set(sprite.width / 2, sprite.height / 2);
- sprite.addChild(text);
- sprite.textObj = text;
- pixiCrnMap.set(parseInt(deviceNo), sprite);
- sprite.zIndex = 1;
+ sprite = createTrackSprite(item.width, item.height);
+ sprite.zIndex = 0;
+
+ if(getDeviceNo(value) > 0){
+ crnList.push(item);
}
} else {
return null;
--
Gitblit v1.9.1