@smartnet360/svelte-components 0.0.119 → 0.0.121
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.
- package/dist/apps/antenna-tools/band-config.d.ts +53 -0
- package/dist/apps/antenna-tools/band-config.js +112 -0
- package/dist/apps/antenna-tools/components/AntennaControls.svelte +558 -0
- package/dist/apps/antenna-tools/components/AntennaControls.svelte.d.ts +16 -0
- package/dist/apps/antenna-tools/components/AntennaSettingsModal.svelte +304 -0
- package/dist/apps/antenna-tools/components/AntennaSettingsModal.svelte.d.ts +8 -0
- package/dist/apps/antenna-tools/components/AntennaTools.svelte +597 -0
- package/dist/apps/antenna-tools/components/AntennaTools.svelte.d.ts +42 -0
- package/dist/apps/antenna-tools/components/DatabaseViewer.svelte +278 -0
- package/dist/apps/antenna-tools/components/DatabaseViewer.svelte.d.ts +3 -0
- package/dist/apps/antenna-tools/components/DbNotification.svelte +67 -0
- package/dist/apps/antenna-tools/components/DbNotification.svelte.d.ts +18 -0
- package/dist/apps/antenna-tools/components/JsonImporter.svelte +115 -0
- package/dist/apps/antenna-tools/components/JsonImporter.svelte.d.ts +6 -0
- package/dist/apps/antenna-tools/components/MSIConverter.svelte +282 -0
- package/dist/apps/antenna-tools/components/MSIConverter.svelte.d.ts +6 -0
- package/dist/apps/antenna-tools/components/chart-engines/PolarAreaChart.svelte +123 -0
- package/dist/apps/antenna-tools/components/chart-engines/PolarAreaChart.svelte.d.ts +16 -0
- package/dist/apps/antenna-tools/components/chart-engines/PolarLineChart.svelte +123 -0
- package/dist/apps/antenna-tools/components/chart-engines/PolarLineChart.svelte.d.ts +16 -0
- package/dist/apps/antenna-tools/components/chart-engines/index.d.ts +9 -0
- package/dist/apps/antenna-tools/components/chart-engines/index.js +9 -0
- package/dist/apps/antenna-tools/components/index.d.ts +8 -0
- package/dist/apps/antenna-tools/components/index.js +10 -0
- package/dist/apps/antenna-tools/db.d.ts +28 -0
- package/dist/apps/antenna-tools/db.js +45 -0
- package/dist/apps/antenna-tools/index.d.ts +26 -0
- package/dist/apps/antenna-tools/index.js +40 -0
- package/dist/apps/antenna-tools/stores/antennas.d.ts +13 -0
- package/dist/apps/antenna-tools/stores/antennas.js +25 -0
- package/dist/apps/antenna-tools/stores/db-status.d.ts +32 -0
- package/dist/apps/antenna-tools/stores/db-status.js +38 -0
- package/dist/apps/antenna-tools/stores/index.d.ts +5 -0
- package/dist/apps/antenna-tools/stores/index.js +5 -0
- package/dist/apps/antenna-tools/types.d.ts +137 -0
- package/dist/apps/antenna-tools/types.js +16 -0
- package/dist/apps/antenna-tools/utils/antenna-helpers.d.ts +83 -0
- package/dist/apps/antenna-tools/utils/antenna-helpers.js +198 -0
- package/dist/apps/antenna-tools/utils/chart-engines/index.d.ts +5 -0
- package/dist/apps/antenna-tools/utils/chart-engines/index.js +5 -0
- package/dist/apps/antenna-tools/utils/chart-engines/polar-area-utils.d.ts +94 -0
- package/dist/apps/antenna-tools/utils/chart-engines/polar-area-utils.js +151 -0
- package/dist/apps/antenna-tools/utils/chart-engines/polar-line-utils.d.ts +93 -0
- package/dist/apps/antenna-tools/utils/chart-engines/polar-line-utils.js +139 -0
- package/dist/apps/antenna-tools/utils/db-utils.d.ts +50 -0
- package/dist/apps/antenna-tools/utils/db-utils.js +266 -0
- package/dist/apps/antenna-tools/utils/index.d.ts +7 -0
- package/dist/apps/antenna-tools/utils/index.js +7 -0
- package/dist/apps/antenna-tools/utils/msi-parser.d.ts +21 -0
- package/dist/apps/antenna-tools/utils/msi-parser.js +215 -0
- package/dist/apps/antenna-tools/utils/recent-antennas.d.ts +24 -0
- package/dist/apps/antenna-tools/utils/recent-antennas.js +64 -0
- package/dist/apps/index.d.ts +1 -0
- package/dist/apps/index.js +4 -1
- 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
|
+
}
|