@smartnet360/svelte-components 0.0.119 → 0.0.120

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.
Files changed (53) hide show
  1. package/dist/apps/antenna-tools/band-config.d.ts +53 -0
  2. package/dist/apps/antenna-tools/band-config.js +112 -0
  3. package/dist/apps/antenna-tools/components/AntennaControls.svelte +558 -0
  4. package/dist/apps/antenna-tools/components/AntennaControls.svelte.d.ts +16 -0
  5. package/dist/apps/antenna-tools/components/AntennaSettingsModal.svelte +304 -0
  6. package/dist/apps/antenna-tools/components/AntennaSettingsModal.svelte.d.ts +8 -0
  7. package/dist/apps/antenna-tools/components/AntennaTools.svelte +597 -0
  8. package/dist/apps/antenna-tools/components/AntennaTools.svelte.d.ts +42 -0
  9. package/dist/apps/antenna-tools/components/DatabaseViewer.svelte +278 -0
  10. package/dist/apps/antenna-tools/components/DatabaseViewer.svelte.d.ts +3 -0
  11. package/dist/apps/antenna-tools/components/DbNotification.svelte +67 -0
  12. package/dist/apps/antenna-tools/components/DbNotification.svelte.d.ts +18 -0
  13. package/dist/apps/antenna-tools/components/JsonImporter.svelte +115 -0
  14. package/dist/apps/antenna-tools/components/JsonImporter.svelte.d.ts +6 -0
  15. package/dist/apps/antenna-tools/components/MSIConverter.svelte +282 -0
  16. package/dist/apps/antenna-tools/components/MSIConverter.svelte.d.ts +6 -0
  17. package/dist/apps/antenna-tools/components/chart-engines/PolarAreaChart.svelte +123 -0
  18. package/dist/apps/antenna-tools/components/chart-engines/PolarAreaChart.svelte.d.ts +16 -0
  19. package/dist/apps/antenna-tools/components/chart-engines/PolarLineChart.svelte +123 -0
  20. package/dist/apps/antenna-tools/components/chart-engines/PolarLineChart.svelte.d.ts +16 -0
  21. package/dist/apps/antenna-tools/components/chart-engines/index.d.ts +9 -0
  22. package/dist/apps/antenna-tools/components/chart-engines/index.js +9 -0
  23. package/dist/apps/antenna-tools/components/index.d.ts +8 -0
  24. package/dist/apps/antenna-tools/components/index.js +10 -0
  25. package/dist/apps/antenna-tools/db.d.ts +28 -0
  26. package/dist/apps/antenna-tools/db.js +45 -0
  27. package/dist/apps/antenna-tools/index.d.ts +26 -0
  28. package/dist/apps/antenna-tools/index.js +40 -0
  29. package/dist/apps/antenna-tools/stores/antennas.d.ts +13 -0
  30. package/dist/apps/antenna-tools/stores/antennas.js +25 -0
  31. package/dist/apps/antenna-tools/stores/db-status.d.ts +32 -0
  32. package/dist/apps/antenna-tools/stores/db-status.js +38 -0
  33. package/dist/apps/antenna-tools/stores/index.d.ts +5 -0
  34. package/dist/apps/antenna-tools/stores/index.js +5 -0
  35. package/dist/apps/antenna-tools/types.d.ts +137 -0
  36. package/dist/apps/antenna-tools/types.js +16 -0
  37. package/dist/apps/antenna-tools/utils/antenna-helpers.d.ts +83 -0
  38. package/dist/apps/antenna-tools/utils/antenna-helpers.js +198 -0
  39. package/dist/apps/antenna-tools/utils/chart-engines/index.d.ts +5 -0
  40. package/dist/apps/antenna-tools/utils/chart-engines/index.js +5 -0
  41. package/dist/apps/antenna-tools/utils/chart-engines/polar-area-utils.d.ts +94 -0
  42. package/dist/apps/antenna-tools/utils/chart-engines/polar-area-utils.js +151 -0
  43. package/dist/apps/antenna-tools/utils/chart-engines/polar-line-utils.d.ts +93 -0
  44. package/dist/apps/antenna-tools/utils/chart-engines/polar-line-utils.js +139 -0
  45. package/dist/apps/antenna-tools/utils/db-utils.d.ts +50 -0
  46. package/dist/apps/antenna-tools/utils/db-utils.js +266 -0
  47. package/dist/apps/antenna-tools/utils/index.d.ts +7 -0
  48. package/dist/apps/antenna-tools/utils/index.js +7 -0
  49. package/dist/apps/antenna-tools/utils/msi-parser.d.ts +21 -0
  50. package/dist/apps/antenna-tools/utils/msi-parser.js +215 -0
  51. package/dist/apps/antenna-tools/utils/recent-antennas.d.ts +24 -0
  52. package/dist/apps/antenna-tools/utils/recent-antennas.js +64 -0
  53. package/package.json +1 -1
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Antenna Tools - Band Configuration
3
+ * Frequency band definitions and purge utilities
4
+ */
5
+ import type { BandDefinition, Antenna, RawAntenna } from './types';
6
+ import { STANDARD_BANDS } from './types';
7
+ export { STANDARD_BANDS };
8
+ export type { BandDefinition };
9
+ /**
10
+ * Get the center frequency of a band
11
+ */
12
+ export declare function getBandCenterFrequency(band: BandDefinition): number;
13
+ /**
14
+ * Find which band a frequency belongs to
15
+ * @returns Band definition or null if not in any standard band
16
+ */
17
+ export declare function findBandForFrequency(frequencyMHz: number): BandDefinition | null;
18
+ /**
19
+ * Check if a frequency is within any standard band
20
+ */
21
+ export declare function isFrequencyInStandardBand(frequencyMHz: number): boolean;
22
+ /**
23
+ * Purge antennas - keep only one per band (closest to center frequency)
24
+ *
25
+ * For each antenna name + tilt combination:
26
+ * - For each standard band, find antennas within the band's frequency range
27
+ * - Keep only the one closest to the center frequency
28
+ * - Update frequency to band name (700, 800, etc.)
29
+ * - Store original frequency in originalFrequency field
30
+ *
31
+ * @param rawAntennas - Antennas parsed from MSI files (with actual MHz frequencies)
32
+ * @returns Purged antennas with band names as frequencies
33
+ */
34
+ export declare function purgeAntennas(rawAntennas: RawAntenna[]): Antenna[];
35
+ /**
36
+ * Get purge statistics
37
+ */
38
+ export interface PurgeStats {
39
+ /** Total raw antennas before purge */
40
+ totalBefore: number;
41
+ /** Total antennas after purge */
42
+ totalAfter: number;
43
+ /** Number of antennas removed */
44
+ removed: number;
45
+ /** Reduction percentage */
46
+ reductionPercent: number;
47
+ /** Antennas per band */
48
+ perBand: Record<string, number>;
49
+ }
50
+ /**
51
+ * Calculate purge statistics
52
+ */
53
+ export declare function calculatePurgeStats(rawCount: number, purgedAntennas: Antenna[]): PurgeStats;
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Antenna Tools - Band Configuration
3
+ * Frequency band definitions and purge utilities
4
+ */
5
+ import { STANDARD_BANDS } from './types';
6
+ // Re-export for convenience
7
+ export { STANDARD_BANDS };
8
+ /**
9
+ * Get the center frequency of a band
10
+ */
11
+ export function getBandCenterFrequency(band) {
12
+ return (band.dlMin + band.dlMax) / 2;
13
+ }
14
+ /**
15
+ * Find which band a frequency belongs to
16
+ * @returns Band definition or null if not in any standard band
17
+ */
18
+ export function findBandForFrequency(frequencyMHz) {
19
+ return STANDARD_BANDS.find(band => frequencyMHz >= band.dlMin && frequencyMHz <= band.dlMax) || null;
20
+ }
21
+ /**
22
+ * Check if a frequency is within any standard band
23
+ */
24
+ export function isFrequencyInStandardBand(frequencyMHz) {
25
+ return findBandForFrequency(frequencyMHz) !== null;
26
+ }
27
+ /**
28
+ * Group raw antennas by name and tilt
29
+ */
30
+ function groupByNameAndTilt(antennas) {
31
+ const groups = new Map();
32
+ for (const antenna of antennas) {
33
+ const key = `${antenna.name}__${antenna.tilt}`;
34
+ const group = groups.get(key) || [];
35
+ group.push(antenna);
36
+ groups.set(key, group);
37
+ }
38
+ return groups;
39
+ }
40
+ /**
41
+ * Purge antennas - keep only one per band (closest to center frequency)
42
+ *
43
+ * For each antenna name + tilt combination:
44
+ * - For each standard band, find antennas within the band's frequency range
45
+ * - Keep only the one closest to the center frequency
46
+ * - Update frequency to band name (700, 800, etc.)
47
+ * - Store original frequency in originalFrequency field
48
+ *
49
+ * @param rawAntennas - Antennas parsed from MSI files (with actual MHz frequencies)
50
+ * @returns Purged antennas with band names as frequencies
51
+ */
52
+ export function purgeAntennas(rawAntennas) {
53
+ const purged = [];
54
+ // Group by antenna name + tilt
55
+ const groups = groupByNameAndTilt(rawAntennas);
56
+ for (const [_key, group] of groups) {
57
+ // For each standard band
58
+ for (const band of STANDARD_BANDS) {
59
+ // Find antennas in this band's frequency range
60
+ const inBand = group.filter(a => a.frequency >= band.dlMin && a.frequency <= band.dlMax);
61
+ if (inBand.length === 0)
62
+ continue;
63
+ // Find the one closest to center frequency
64
+ const centerFreq = getBandCenterFrequency(band);
65
+ const closest = inBand.reduce((best, current) => {
66
+ const bestDist = Math.abs(best.frequency - centerFreq);
67
+ const currDist = Math.abs(current.frequency - centerFreq);
68
+ return currDist < bestDist ? current : best;
69
+ });
70
+ // Create purged antenna with band name as frequency
71
+ // Explicitly copy only serializable properties (avoid spread which may include non-cloneable data)
72
+ const purgedAntenna = {
73
+ name: closest.name,
74
+ frequency: parseInt(band.name, 10), // Use band name as frequency (700, 800, etc.)
75
+ originalFrequency: closest.frequency, // Store original MHz
76
+ gain_dBd: closest.gain_dBd,
77
+ tilt: closest.tilt,
78
+ comment: closest.comment,
79
+ horizontal: closest.horizontal,
80
+ pattern: Array.isArray(closest.pattern) ? [...closest.pattern] : [],
81
+ vertical_pattern: Array.isArray(closest.vertical_pattern) ? [...closest.vertical_pattern] : [],
82
+ polarization: closest.polarization,
83
+ x_pol: closest.x_pol,
84
+ co: closest.co,
85
+ tilt_from_filename: closest.tilt_from_filename,
86
+ sourcePath: closest.sourcePath,
87
+ };
88
+ purged.push(purgedAntenna);
89
+ }
90
+ }
91
+ return purged;
92
+ }
93
+ /**
94
+ * Calculate purge statistics
95
+ */
96
+ export function calculatePurgeStats(rawCount, purgedAntennas) {
97
+ const perBand = {};
98
+ for (const antenna of purgedAntennas) {
99
+ const bandName = antenna.frequency.toString();
100
+ perBand[bandName] = (perBand[bandName] || 0) + 1;
101
+ }
102
+ const totalAfter = purgedAntennas.length;
103
+ const removed = rawCount - totalAfter;
104
+ const reductionPercent = rawCount > 0 ? Math.round((removed / rawCount) * 100) : 0;
105
+ return {
106
+ totalBefore: rawCount,
107
+ totalAfter,
108
+ removed,
109
+ reductionPercent,
110
+ perBand
111
+ };
112
+ }