@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
- let ant1ElectricalTilt = $state(initialEtilt1);
54
- let ant2ElectricalTilt = $state(initialEtilt2);
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
- // Find antenna by name (case-insensitive partial match)
157
- const found = antennas.find(a =>
158
- a.name.toLowerCase().includes(initialAntenna1Name.toLowerCase())
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
- if (selectedAntenna.tilt) {
166
- availableElectricalTilts = selectedAntenna.tilt.split(',').map(t => t.trim());
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
- const found = antennas.find(a =>
172
- a.name.toLowerCase().includes(initialAntenna2Name.toLowerCase())
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartnet360/svelte-components",
3
- "version": "0.0.117",
3
+ "version": "0.0.118",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build && npm run prepack",