This commit is contained in:
Garrett K 2021-01-29 06:05:26 +00:00
parent 2dd3632c4e
commit e71860e9f4
3 changed files with 106 additions and 81 deletions

View File

@ -4,8 +4,8 @@ function drawCabinet(){
resizeCabinetCanvas();
clearCabinetConnections();
crawlCabinet();
drawCabinetConnections();
drawCabinetTrunks();
drawCabinetConnections();
}
function crawlCabinet(){
@ -97,6 +97,7 @@ function crawlCabinet(){
selectedPort = false;
}
} else {
connectionArray.push([selectedPort]);
selectedPort = false;
}
}
@ -124,78 +125,88 @@ function drawCabinetConnections(){
var pathData = $(document).data(pathDataType);
$.each(pathData, function(index, element){
var elemA = element[0];
var elemB = element[1];
var connectionStyle = $('#connectionStyle').val();
// Is pathData element a pair of ports?
if(element.length == 2) {
var elemA = element[0];
var elemB = element[1];
var elemACabinet = $(elemA).closest('.cabinetContainer');
var elemACabinetID = $(elemACabinet).data('cabinetId');
var elemACabinetDimensions = getDimensions(elemACabinet);
var elemADimensions = getDimensions(elemA);
var elemAPartition = $(elemA).closest('.partition');
var elemAPartitionDimensions = getDimensions(elemAPartition);
var connectionStyle = $('#connectionStyle').val();
cabinetCtx.moveTo(elemADimensions.centerX, elemADimensions.centerY);
var elemACabinet = $(elemA).closest('.cabinetContainer');
var elemACabinetID = $(elemACabinet).data('cabinetId');
var elemACabinetDimensions = getDimensions(elemACabinet);
var elemADimensions = getDimensions(elemA);
var elemAPartition = $(elemA).closest('.partition');
var elemAPartitionDimensions = getDimensions(elemAPartition);
if(typeof elemB == 'object') {
var elemBCabinet = $(elemB).closest('.cabinetContainer');
var elemBCabinetID = $(elemBCabinet).data('cabinetId');
var elemBCabinetDimensions = getDimensions(elemBCabinet);
var elemBDimensions = getDimensions(elemB);
var elemBPartition = $(elemB).closest('.partition');
var elemBPartitionDimensions = getDimensions(elemBPartition);
cabinetCtx.moveTo(elemADimensions.centerX, elemADimensions.centerY);
if(elemBDimensions.top >= elemADimensions.top) {
var elemAPartHBoundary = elemAPartitionDimensions.bottom;
var elemBPartHBoundary = elemBPartitionDimensions.top;
} else {
var elemAPartHBoundary = elemAPartitionDimensions.top;
var elemBPartHBoundary = elemBPartitionDimensions.bottom;
}
if(connectionStyle == 0) {
cabinetCtx.lineTo(elemADimensions.centerX, elemAPartHBoundary);
cabinetCtx.lineTo(elemACabinetDimensions.left - canvasInset, elemAPartHBoundary);
if(elemACabinetID != elemBCabinetID) {
// Ports are in different cabinets
if(elemACabinetDimensions.top >= elemBCabinetDimensions.top) {
// Connection should be routed up
var elemACabinetHBoundary = elemACabinetDimensions.top - canvasInset;
} else {
// Connection should be routed down
var elemACabinetHBoundary = elemACabinetDimensions.bottom + canvasInset;
}
cabinetCtx.lineTo(elemACabinetDimensions.left - canvasInset, elemACabinetHBoundary);
cabinetCtx.lineTo(elemBCabinetDimensions.left - canvasInset, elemACabinetHBoundary);
if(typeof elemB == 'object') {
var elemBCabinet = $(elemB).closest('.cabinetContainer');
var elemBCabinetID = $(elemBCabinet).data('cabinetId');
var elemBCabinetDimensions = getDimensions(elemBCabinet);
var elemBDimensions = getDimensions(elemB);
var elemBPartition = $(elemB).closest('.partition');
var elemBPartitionDimensions = getDimensions(elemBPartition);
if(elemBDimensions.top >= elemADimensions.top) {
var elemAPartHBoundary = elemAPartitionDimensions.bottom;
var elemBPartHBoundary = elemBPartitionDimensions.top;
} else {
var elemAPartHBoundary = elemAPartitionDimensions.top;
var elemBPartHBoundary = elemBPartitionDimensions.bottom;
}
cabinetCtx.lineTo(elemBCabinetDimensions.left - canvasInset, elemBPartHBoundary);
cabinetCtx.lineTo(elemBDimensions.centerX, elemBPartHBoundary);
cabinetCtx.lineTo(elemBDimensions.centerX, elemBDimensions.centerY);
} else if(connectionStyle == 1) {
cabinetCtx.lineTo(elemBDimensions.centerX, elemBDimensions.centerY);
} else if(connectionStyle == 2) {
var arcSize = 30;
cabinetCtx.bezierCurveTo((elemADimensions.centerX - arcSize), elemADimensions.centerY, (elemBDimensions.centerX - arcSize), elemBDimensions.centerY, elemBDimensions.centerX, elemBDimensions.centerY);
} else {
cabinetCtx.lineTo(elemBDimensions.centerX, elemBDimensions.centerY);
}
} else {
cabinetCtx.lineTo(elemADimensions.centerX, elemAPartitionDimensions.top);
cabinetCtx.lineTo(elemACabinetDimensions.left - canvasInset, elemAPartitionDimensions.top);
cabinetCtx.lineTo(elemACabinetDimensions.left - canvasInset, elemACabinetDimensions.top - canvasInset);
var left = elemACabinetDimensions.leftOrig - canvasInset;
var top = elemACabinetDimensions.topOrig - canvasInset;
addCabButton(left, top, elemB);
if(connectionStyle == 0) {
cabinetCtx.lineTo(elemADimensions.centerX, elemAPartHBoundary);
cabinetCtx.lineTo(elemACabinetDimensions.left - canvasInset, elemAPartHBoundary);
if(elemACabinetID != elemBCabinetID) {
// Ports are in different cabinets
if(elemACabinetDimensions.top >= elemBCabinetDimensions.top) {
// Connection should be routed up
var elemACabinetHBoundary = elemACabinetDimensions.top - canvasInset;
} else {
// Connection should be routed down
var elemACabinetHBoundary = elemACabinetDimensions.bottom + canvasInset;
}
cabinetCtx.lineTo(elemACabinetDimensions.left - canvasInset, elemACabinetHBoundary);
cabinetCtx.lineTo(elemBCabinetDimensions.left - canvasInset, elemACabinetHBoundary);
}
cabinetCtx.lineTo(elemBCabinetDimensions.left - canvasInset, elemBPartHBoundary);
cabinetCtx.lineTo(elemBDimensions.centerX, elemBPartHBoundary);
cabinetCtx.lineTo(elemBDimensions.centerX, elemBDimensions.centerY);
} else if(connectionStyle == 1) {
cabinetCtx.lineTo(elemBDimensions.centerX, elemBDimensions.centerY);
} else if(connectionStyle == 2) {
var arcSize = 30;
cabinetCtx.bezierCurveTo((elemADimensions.centerX - arcSize), elemADimensions.centerY, (elemBDimensions.centerX - arcSize), elemBDimensions.centerY, elemBDimensions.centerX, elemBDimensions.centerY);
} else {
cabinetCtx.lineTo(elemBDimensions.centerX, elemBDimensions.centerY);
}
} else {
cabinetCtx.lineTo(elemADimensions.centerX, elemAPartitionDimensions.top);
cabinetCtx.lineTo(elemACabinetDimensions.left - canvasInset, elemAPartitionDimensions.top);
cabinetCtx.lineTo(elemACabinetDimensions.left - canvasInset, elemACabinetDimensions.top - canvasInset);
var left = elemACabinetDimensions.leftOrig - canvasInset;
var top = elemACabinetDimensions.topOrig - canvasInset;
addCabButton(left, top, elemB);
}
}
// Highlight ports
$.each(element, function(portIndex, portObject){
if(typeof portObject == 'object') {
highlightElement(portObject, connectionLineColor);
}
});
});
});
cabinetCtx.stroke();
@ -228,6 +239,7 @@ function drawCabinetTrunks(){
var elemACabinetID = $(elemACabinet).data('cabinetId');
var elemACabinetDimensions = getDimensions($(elemA).closest('.cabinetContainer'));
var elemADimensions = getDimensions(elemA);
highlightElement(elemA, trunkLineColor);
cabinetCtx.moveTo(elemADimensions.right, elemADimensions.centerY);
@ -237,6 +249,7 @@ function drawCabinetTrunks(){
var elemBCabinetID = $(elemBCabinet).data('cabinetId');
var elemBCabinetDimensions = getDimensions($(elemB).closest('.cabinetContainer'));
var elemBDimensions = getDimensions(elemB);
highlightElement(elemB, trunkLineColor);
cabinetCtx.lineTo(elemACabinetDimensions.right + vertical, elemADimensions.centerY);
@ -283,8 +296,8 @@ function drawPath(){
clearPathConnections();
crawlPathConnections();
crawlPathTrunks();
drawPathConnections();
drawPathTrunks();
drawPathConnections();
}
function crawlPathConnections(){
@ -487,15 +500,20 @@ function addCabButton(left, top, globalID){
makeAddCabButtonClickable(addCab);
}
function highlightElement(elemArray, color){
$.each(elemArray, function(index, elem){
cabinetCtx.strokeStyle = color;
cabinetCtx.beginPath();
function highlightElement(elem, color){
var elemDimensions = getDimensions(elem);
// Store current line width
var origLineWidth = cabinetCtx.lineWidth;
cabinetCtx.strokeRect(elemDimensions.left, elemDimensions.top, elemDimensions.width, elemDimensions.height);
});
// Set port highlight properties
cabinetCtx.strokeStyle = color;
cabinetCtx.lineWidth = connectionLineWidth;
var elemDimensions = getDimensions(elem);
cabinetCtx.strokeRect(elemDimensions.left, elemDimensions.top, elemDimensions.width, elemDimensions.height);
// Restore line width
cabinetCtx.lineWidth = origLineWidth;
}
function makePortsHoverable(){

View File

@ -61,7 +61,8 @@ function buildFullPath(localConnectorCode39){
} else if ($(responseJSON.error).size() > 0){
displayError(responseJSON.error);
} else {
$('#pathContainer').html(responseJSON.success);
$('#containerFullPath').html(responseJSON.success);
drawPath();
$('.cableArrow').on('click', function(){
var data = {codeResult: {code: $(this).attr('data-Code39')}};
scanCallback(data);
@ -685,13 +686,15 @@ function postProcessCable(){
$(document).ready(function() {
$('#printFullPath').on('click', function(){
$('#pathContainer').printThis({
importStyle: true,
removeInline: true,
removeInlineSelector: "img"
$('#containerFullPath').parent().printThis({
canvas: true,
importStyle: true
});
});
// requires jquery.drawConnections.js
initializeCanvas();
$(document).data('verified', 'unknown');
$(document).data('localConnectorType', false);
$(document).data('remoteConnectorType', false);

View File

@ -141,7 +141,8 @@ $qls->Security->check_auth_page('operator.php');
</div>
<div class="card-block">
<blockquote class="card-blockquote">
<div id="pathContainer"></div>
<canvas id="canvasPath" style="z-index:1000;position:absolute; pointer-events:none;"></canvas>
<div id="containerFullPath"></div>
</blockquote>
</div>
</div>
@ -162,6 +163,9 @@ $qls->Security->check_auth_page('operator.php');
<!-- printThis Plugin -->
<script src="assets/plugins/printThis/printThis.js"></script>
<!-- draw connections functions -->
<script src="assets/pages/jquery.drawConnections.js"></script>
<!-- Quagga Plugin -->
<script type="text/javascript" src="assets/plugins/quagga/dist/quagga.js"></script>