Skip to content

Commit 055fc1e

Browse files
committed
Refactor global unit change handling and modal event setup; improve code organization and readability
1 parent 0906847 commit 055fc1e

1 file changed

Lines changed: 62 additions & 56 deletions

File tree

src/index.js

Lines changed: 62 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1794,6 +1794,66 @@ function cacheDom() {
17941794
dom.distanceConfirmBtn = $('distanceConfirmBtn');
17951795
}
17961796

1797+
function handleGlobalUnitChange(e) {
1798+
state.preferredUnit = e.target.value;
1799+
// Refresh visualizations that use the unit
1800+
drawReferenceVisualization();
1801+
updateMeasureLabel();
1802+
1803+
// Also update all pinned measurement labels
1804+
state.measureMode.pinned.forEach((item) => {
1805+
if (item.ui.label) {
1806+
const sourceIcon = item.source === 'manual' ? '📏' : '📡';
1807+
item.ui.label.setIcon(L.divIcon({
1808+
className: 'measure-label',
1809+
html: createDistanceLabelHtml({
1810+
meters: item.meters,
1811+
color: COLORS.MEASURE,
1812+
icon: sourceIcon,
1813+
showPin: false,
1814+
extraClass: 'distance-label--measure',
1815+
}),
1816+
iconAnchor: [0, 0],
1817+
}));
1818+
}
1819+
});
1820+
1821+
saveSettings();
1822+
}
1823+
1824+
function setupModalEventHandlers() {
1825+
// Distance modal handlers
1826+
if (dom.distanceCancelBtn) {
1827+
dom.distanceCancelBtn.addEventListener('click', handleDistanceModalCancel);
1828+
}
1829+
if (dom.distanceConfirmBtn) {
1830+
dom.distanceConfirmBtn.addEventListener('click', handleDistanceModalConfirm);
1831+
}
1832+
if (dom.distanceInput) {
1833+
dom.distanceInput.addEventListener('keydown', (e) => {
1834+
if (e.key === 'Enter') {
1835+
handleDistanceModalConfirm();
1836+
}
1837+
});
1838+
dom.distanceInput.addEventListener('input', () => {
1839+
dom.distanceError.classList.add('hidden');
1840+
});
1841+
}
1842+
if (dom.distanceModal) {
1843+
dom.distanceModal.addEventListener('keydown', (e) => {
1844+
if (e.key === 'Escape') {
1845+
handleDistanceModalCancel();
1846+
}
1847+
});
1848+
// Close on backdrop click
1849+
dom.distanceModal.addEventListener('click', (e) => {
1850+
if (e.target === dom.distanceModal) {
1851+
handleDistanceModalCancel();
1852+
}
1853+
});
1854+
}
1855+
}
1856+
17971857
function setupEventHandlers() {
17981858
dom.mapImageInput.addEventListener('change', handleImageImport);
17991859
dom.addPairButton.addEventListener('click', beginPairMode);
@@ -1812,32 +1872,7 @@ function setupEventHandlers() {
18121872

18131873
// Global unit selector
18141874
if (dom.globalUnitSelect) {
1815-
dom.globalUnitSelect.addEventListener('change', (e) => {
1816-
state.preferredUnit = e.target.value;
1817-
// Refresh visualizations that use the unit
1818-
drawReferenceVisualization();
1819-
updateMeasureLabel();
1820-
1821-
// Also update all pinned measurement labels
1822-
state.measureMode.pinned.forEach((item) => {
1823-
if (item.ui.label) {
1824-
const sourceIcon = item.source === 'manual' ? '📏' : '📡';
1825-
item.ui.label.setIcon(L.divIcon({
1826-
className: 'measure-label',
1827-
html: createDistanceLabelHtml({
1828-
meters: item.meters,
1829-
color: COLORS.MEASURE,
1830-
icon: sourceIcon,
1831-
showPin: false,
1832-
extraClass: 'distance-label--measure',
1833-
}),
1834-
iconAnchor: [0, 0],
1835-
}));
1836-
}
1837-
});
1838-
1839-
saveSettings();
1840-
});
1875+
dom.globalUnitSelect.addEventListener('change', handleGlobalUnitChange);
18411876
}
18421877

18431878
// Scale and measure mode handlers
@@ -1857,36 +1892,7 @@ function setupEventHandlers() {
18571892
dom.clearMeasurementsButton.addEventListener('click', clearAllMeasurements);
18581893
}
18591894

1860-
// Distance modal handlers
1861-
if (dom.distanceCancelBtn) {
1862-
dom.distanceCancelBtn.addEventListener('click', handleDistanceModalCancel);
1863-
}
1864-
if (dom.distanceConfirmBtn) {
1865-
dom.distanceConfirmBtn.addEventListener('click', handleDistanceModalConfirm);
1866-
}
1867-
if (dom.distanceInput) {
1868-
dom.distanceInput.addEventListener('keydown', (e) => {
1869-
if (e.key === 'Enter') {
1870-
handleDistanceModalConfirm();
1871-
}
1872-
});
1873-
dom.distanceInput.addEventListener('input', () => {
1874-
dom.distanceError.classList.add('hidden');
1875-
});
1876-
}
1877-
if (dom.distanceModal) {
1878-
dom.distanceModal.addEventListener('keydown', (e) => {
1879-
if (e.key === 'Escape') {
1880-
handleDistanceModalCancel();
1881-
}
1882-
});
1883-
// Close on backdrop click
1884-
dom.distanceModal.addEventListener('click', (e) => {
1885-
if (e.target === dom.distanceModal) {
1886-
handleDistanceModalCancel();
1887-
}
1888-
});
1889-
}
1895+
setupModalEventHandlers();
18901896
}
18911897

18921898
function saveSettings() {

0 commit comments

Comments
 (0)