added size to line markers
This commit is contained in:
parent
5d8360dd87
commit
82af925ac1
@ -12,6 +12,7 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
let photoAnnotations = {};
|
let photoAnnotations = {};
|
||||||
let partColors = {};
|
let partColors = {};
|
||||||
|
let partSizes = {}; // memorizza la dimensione specifica per parte
|
||||||
let selectedPartNumber = null;
|
let selectedPartNumber = null;
|
||||||
let unsavedChanges = false;
|
let unsavedChanges = false;
|
||||||
let fabricCanvas = null;
|
let fabricCanvas = null;
|
||||||
@ -616,12 +617,19 @@ $(document).ready(function () {
|
|||||||
)
|
)
|
||||||
.join("");
|
.join("");
|
||||||
const listItem = `
|
const listItem = `
|
||||||
<li class="list-group-item" data-part-number="${partNumber}">
|
<li class="list-group-item" data-part-number="${partNumber}">
|
||||||
<span class="part-info" style="cursor: pointer;">${partNumber} - ${partDescription}</span>
|
<span class="part-info" style="cursor: pointer;">${partNumber} - ${partDescription}</span>
|
||||||
<div class="color-picker-container" style="display: inline-block; position: relative; overflow: visible; z-index: 2000;">
|
<div class="color-picker-container" style="display:inline-block; position: relative; overflow: visible; z-index: 2000; margin-left:5px;">
|
||||||
<div class="color-option selected-color" style="background-color: ${partColor}; width: 20px; height: 20px; display: inline-block; margin-left: 5px; cursor: pointer; pointer-events: auto;"></div>
|
<div class="color-option selected-color" style="background-color: ${partColor}; width: 20px; height: 20px; display: inline-block; cursor: pointer; pointer-events: auto;"></div>
|
||||||
<div class="color-picker" style="display: none; position: absolute; right: 0; z-index: 2000; background: #fff; border: 1px solid #ccc; padding: 5px;">${colorOptions}</div>
|
<div class="color-picker" style="display: none; position: absolute; right: 0; z-index: 2000; background: #fff; border: 1px solid #ccc; padding: 5px;">${colorOptions}</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div style="display:inline-flex; align-items:center; gap:4px; margin-left:5px;">
|
||||||
|
<input type="range" class="marker-size-slider"
|
||||||
|
min="12" max="48" step="2"
|
||||||
|
value="${partSizes[partNumber] || globalMarkerSize}"
|
||||||
|
style="width:70px;">
|
||||||
|
<span class="marker-size-value" style="font-size:0.8rem;">${partSizes[partNumber] || globalMarkerSize}px</span>
|
||||||
|
</div>
|
||||||
</li>`;
|
</li>`;
|
||||||
partsListElement.append(listItem);
|
partsListElement.append(listItem);
|
||||||
}
|
}
|
||||||
@ -670,30 +678,77 @@ $(document).ready(function () {
|
|||||||
$picker.toggle();
|
$picker.toggle();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// === Gestione cambio colore ===
|
||||||
partsListElement
|
partsListElement
|
||||||
.off("click.colorOption")
|
.off("click.colorOption")
|
||||||
.on("click.colorOption", ".color-option", function (e) {
|
.on("click.colorOption", ".color-option", function (e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const $this = $(this);
|
const $this = $(this);
|
||||||
const color = $this.data("color");
|
const color = $this.data("color");
|
||||||
const $listItem = $this.closest("li");
|
const $listItem = $this.closest("li");
|
||||||
const partNumber = $listItem.data("part-number");
|
const partNumber = $listItem.data("part-number");
|
||||||
|
|
||||||
console.log(
|
console.log(
|
||||||
"Cliccato .color-option, colore:",
|
"Cliccato .color-option, colore:",
|
||||||
color,
|
color,
|
||||||
"per parte:",
|
"per parte:",
|
||||||
partNumber,
|
partNumber,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Salva il nuovo colore
|
||||||
partColors[partNumber] = color;
|
partColors[partNumber] = color;
|
||||||
|
|
||||||
|
// Aggiorna il colore visivo nel selettore
|
||||||
$listItem
|
$listItem
|
||||||
.find(".selected-color")
|
.find(".selected-color")
|
||||||
.css("background-color", color);
|
.css("background-color", color);
|
||||||
|
|
||||||
|
// Se il marker è già presente, aggiorna anche sul canvas
|
||||||
|
if (markerObjects[partNumber]) {
|
||||||
|
const group = markerObjects[partNumber];
|
||||||
|
const circle = group.item(0); // il cerchio
|
||||||
|
circle.set("fill", color);
|
||||||
|
circle.set("stroke", color);
|
||||||
|
fabricCanvas.renderAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chiudi la palette e aggiorna canvas
|
||||||
$this.closest(".color-picker").hide();
|
$this.closest(".color-picker").hide();
|
||||||
updateMarkers();
|
updateMarkers();
|
||||||
markUnsaved();
|
markUnsaved();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// === Slider locale per dimensione marker ===
|
||||||
|
partsListElement
|
||||||
|
.off("input.localMarkerSize")
|
||||||
|
.on("input.localMarkerSize", ".marker-size-slider", function (e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
// Riferimenti alla parte e valore scelto
|
||||||
|
const $slider = $(this);
|
||||||
|
const partNumber = $slider.closest("li").data("part-number");
|
||||||
|
const newSize = parseInt($slider.val());
|
||||||
|
|
||||||
|
// Aggiorna il valore visivo accanto allo slider
|
||||||
|
$slider.siblings(".marker-size-value").text(newSize + "px");
|
||||||
|
|
||||||
|
// Memorizza la nuova dimensione per quella parte
|
||||||
|
partSizes[partNumber] = newSize;
|
||||||
|
|
||||||
|
// Aggiorna i marker sul canvas
|
||||||
|
updateMarkers();
|
||||||
|
|
||||||
|
// Segnala modifiche non salvate
|
||||||
|
markUnsaved();
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
`Dimensione marker aggiornata per parte ${partNumber}: ${newSize}px`,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
$(document)
|
$(document)
|
||||||
.off("click.colorPicker")
|
.off("click.colorPicker")
|
||||||
.on("click.colorPicker", function (e) {
|
.on("click.colorPicker", function (e) {
|
||||||
@ -875,8 +930,10 @@ $(document).ready(function () {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const radius = globalMarkerSize / 2;
|
const size = partSizes[marker.partNumber] || globalMarkerSize;
|
||||||
const fontSize = Math.max(10, Math.round(globalMarkerSize * 0.65));
|
const radius = size / 2;
|
||||||
|
const fontSize = Math.max(10, Math.round(size * 0.65));
|
||||||
|
|
||||||
const markerColor =
|
const markerColor =
|
||||||
marker.color || partColors[marker.partNumber] || "#ff0000";
|
marker.color || partColors[marker.partNumber] || "#ff0000";
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- COLONNA SINISTRA RIDOTTA -->
|
<!-- COLONNA SINISTRA RIDOTTA -->
|
||||||
<div class="col-md-4">
|
<div class="col-md-6">
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
|
||||||
<h6 style="margin: 0;">Elenco Parti</h6>
|
<h6 style="margin: 0;">Elenco Parti</h6>
|
||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
@ -29,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- COLONNA DESTRA PIÙ GRANDE -->
|
<!-- COLONNA DESTRA PIÙ GRANDE -->
|
||||||
<div class="col-md-8">
|
<div class="col-md-6">
|
||||||
<h6>Foto del Campione</h6>
|
<h6>Foto del Campione</h6>
|
||||||
<div style="display: flex; align-items: center; margin-bottom: 10px;">
|
<div style="display: flex; align-items: center; margin-bottom: 10px;">
|
||||||
<button type="button" class="btn btn-primary btn-sm" id="downloadPhotoBtnAnnotations" style="padding: 0.1rem 0.5rem; font-size: 0.8rem; margin-right: 10px;"><i class="fas fa-download"></i></button>
|
<button type="button" class="btn btn-primary btn-sm" id="downloadPhotoBtnAnnotations" style="padding: 0.1rem 0.5rem; font-size: 0.8rem; margin-right: 10px;"><i class="fas fa-download"></i></button>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user