@smartnet360/svelte-components 0.0.117 → 0.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -50,8 +50,11 @@
|
|
|
50
50
|
let selectedAntenna2 = $state<Antenna | null>(null);
|
|
51
51
|
|
|
52
52
|
// External Bootstrap slider values
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
// Note: Electrical tilt is an INDEX into availableElectricalTilts array
|
|
54
|
+
// Mechanical tilt is a direct VALUE in degrees
|
|
55
|
+
// We initialize to 0 and set correct values in onMount after loading antenna data
|
|
56
|
+
let ant1ElectricalTilt = $state(0);
|
|
57
|
+
let ant2ElectricalTilt = $state(0);
|
|
55
58
|
let ant1MechanicalTilt = $state(initialMtilt1);
|
|
56
59
|
let ant2MechanicalTilt = $state(initialMtilt2);
|
|
57
60
|
|
|
@@ -72,6 +75,7 @@
|
|
|
72
75
|
let availableElectricalTilts = $state<string[]>(['0', '2', '4', '6', '8']);
|
|
73
76
|
|
|
74
77
|
// Handle antenna selection from controls
|
|
78
|
+
// Note: We no longer reset tilts here - tilts should persist unless explicitly changed
|
|
75
79
|
function handleAntenna1Change(antenna: Antenna | null) {
|
|
76
80
|
selectedAntenna = antenna;
|
|
77
81
|
if (antenna) {
|
|
@@ -79,18 +83,11 @@
|
|
|
79
83
|
availableElectricalTilts = antenna.tilt ?
|
|
80
84
|
antenna.tilt.split(',').map(t => t.trim()) :
|
|
81
85
|
['0', '2', '4', '6', '8'];
|
|
82
|
-
|
|
83
|
-
ant1ElectricalTilt = 0;
|
|
84
|
-
ant1MechanicalTilt = 0;
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
function handleAntenna2Change(antenna: Antenna | null) {
|
|
89
90
|
selectedAntenna2 = antenna;
|
|
90
|
-
if (antenna) {
|
|
91
|
-
ant2ElectricalTilt = 0;
|
|
92
|
-
ant2MechanicalTilt = 0;
|
|
93
|
-
}
|
|
94
91
|
}
|
|
95
92
|
|
|
96
93
|
// Handle electrical tilt changes from controls
|
|
@@ -145,6 +142,12 @@
|
|
|
145
142
|
}
|
|
146
143
|
}
|
|
147
144
|
|
|
145
|
+
// Helper to find tilt index from actual tilt value
|
|
146
|
+
function findTiltIndex(tilts: string[], tiltValue: number): number {
|
|
147
|
+
const index = tilts.findIndex(t => parseInt(t, 10) === tiltValue);
|
|
148
|
+
return index >= 0 ? index : 0; // Default to 0 if not found
|
|
149
|
+
}
|
|
150
|
+
|
|
148
151
|
onMount(async () => {
|
|
149
152
|
try {
|
|
150
153
|
// Load antenna data
|
|
@@ -153,30 +156,81 @@
|
|
|
153
156
|
if (antennas.length > 0) {
|
|
154
157
|
// Check if initial antenna names were provided (for external initialization)
|
|
155
158
|
if (initialAntenna1Name) {
|
|
156
|
-
//
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
159
|
+
// Try exact match first, then case-insensitive, then partial match
|
|
160
|
+
let found = antennas.find(a => a.name === initialAntenna1Name);
|
|
161
|
+
if (!found) {
|
|
162
|
+
found = antennas.find(a => a.name.toLowerCase() === initialAntenna1Name.toLowerCase());
|
|
163
|
+
}
|
|
164
|
+
if (!found) {
|
|
165
|
+
found = antennas.find(a => a.name.toLowerCase().includes(initialAntenna1Name.toLowerCase()));
|
|
166
|
+
}
|
|
167
|
+
if (!found) {
|
|
168
|
+
console.warn(`[AntennaDiagrams] Antenna not found: "${initialAntenna1Name}", using first available`);
|
|
169
|
+
}
|
|
160
170
|
selectedAntenna = found || antennas[0];
|
|
161
171
|
} else {
|
|
162
172
|
selectedAntenna = antennas[0];
|
|
163
173
|
}
|
|
164
174
|
|
|
165
|
-
|
|
166
|
-
|
|
175
|
+
// Collect ALL available tilts from all antennas with the same name
|
|
176
|
+
if (selectedAntenna) {
|
|
177
|
+
const sameName = antennas.filter(a => a.name === selectedAntenna!.name);
|
|
178
|
+
const allTilts = new Set<string>();
|
|
179
|
+
sameName.forEach(a => {
|
|
180
|
+
if (a.tilt) {
|
|
181
|
+
const tiltStr = a.tilt.toString();
|
|
182
|
+
if (tiltStr.includes(',')) {
|
|
183
|
+
tiltStr.split(',').forEach(t => allTilts.add(t.trim()));
|
|
184
|
+
} else {
|
|
185
|
+
allTilts.add(tiltStr.trim());
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
availableElectricalTilts = Array.from(allTilts).sort((a, b) => parseFloat(a) - parseFloat(b));
|
|
167
190
|
}
|
|
168
191
|
|
|
192
|
+
// Set initial electrical tilt for antenna 1 (convert value to index)
|
|
193
|
+
ant1ElectricalTilt = findTiltIndex(availableElectricalTilts, initialEtilt1);
|
|
194
|
+
|
|
169
195
|
// Set antenna 2 selection (for compare mode)
|
|
170
196
|
if (initialAntenna2Name) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
)
|
|
197
|
+
// Try exact match first, then case-insensitive, then partial match
|
|
198
|
+
let found = antennas.find(a => a.name === initialAntenna2Name);
|
|
199
|
+
if (!found) {
|
|
200
|
+
found = antennas.find(a => a.name.toLowerCase() === initialAntenna2Name.toLowerCase());
|
|
201
|
+
}
|
|
202
|
+
if (!found) {
|
|
203
|
+
found = antennas.find(a => a.name.toLowerCase().includes(initialAntenna2Name.toLowerCase()));
|
|
204
|
+
}
|
|
205
|
+
if (!found) {
|
|
206
|
+
console.warn(`[AntennaDiagrams] Antenna 2 not found: "${initialAntenna2Name}", using fallback`);
|
|
207
|
+
}
|
|
174
208
|
selectedAntenna2 = found || (antennas.length > 1 ? antennas[1] : antennas[0]);
|
|
175
209
|
} else if (antennas.length > 1) {
|
|
176
210
|
selectedAntenna2 = antennas[1];
|
|
177
211
|
} else {
|
|
178
212
|
selectedAntenna2 = antennas[0]; // Use same antenna if only one available
|
|
179
213
|
}
|
|
214
|
+
|
|
215
|
+
// Set initial electrical tilt for antenna 2 (convert value to index)
|
|
216
|
+
if (selectedAntenna2) {
|
|
217
|
+
// Collect ALL available tilts from all antennas with the same name
|
|
218
|
+
const sameName2 = antennas.filter(a => a.name === selectedAntenna2!.name);
|
|
219
|
+
const allTilts2 = new Set<string>();
|
|
220
|
+
sameName2.forEach(a => {
|
|
221
|
+
if (a.tilt) {
|
|
222
|
+
const tiltStr = a.tilt.toString();
|
|
223
|
+
if (tiltStr.includes(',')) {
|
|
224
|
+
tiltStr.split(',').forEach(t => allTilts2.add(t.trim()));
|
|
225
|
+
} else {
|
|
226
|
+
allTilts2.add(tiltStr.trim());
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
const ant2Tilts = Array.from(allTilts2).sort((a, b) => parseFloat(a) - parseFloat(b));
|
|
231
|
+
ant2ElectricalTilt = findTiltIndex(ant2Tilts, initialEtilt2);
|
|
232
|
+
}
|
|
233
|
+
// Mechanical tilt is a direct value, already set from prop
|
|
180
234
|
}
|
|
181
235
|
} catch (error) {
|
|
182
236
|
console.error('Failed to initialize:', error);
|