Published
Edited
Jan 22, 2022
1 fork
1 star
Insert cell
Insert cell
Insert cell
await toAdifRSA(`

2021-05-20 | 05:34 | OH2BCI | 579 | 579 | KP20FF | A0-7 | A | Jussi |
2021-09-22 | 05:38 | SA5IKN | 579 | 579 | J089TT | RS-44 | B | Max |
2022-01-20 | 09:42 | EA1RX | 59 | 59 | IN52OD | FO-29 | J | Carlos |
2022-01-17 | 20:49 | RA3FP | 579 | 579 | KO94AV | QO-100 | Q | Andrej |


`)
Insert cell
toAdifRSA = desc => {

const text2array = rows =>
((typeof rows === 'string') ? rows.trim().split('\n') : rows)
.map((row, i) =>
((typeof row === 'string') ? row.trim().split('|') : row)
.map(cell => cell.trim()));

const stringify = (fields, p) => fields
.split(/\s+/)
.map(e => {
const val = (p[e] || '???').toString().toUpperCase();
return '<' + e + ':' + val.length + '>' + val;
})
.join('') + '\n<EOR>';
let arr = text2array(desc);

return arr.map(e => {

const p = {};
p.QSO_DATE = e[0].replace(/-/g, '');
p.TIME_ON = e[1].replace(/:/, '');
p.CALL = e[2];
p.RST_RCVD = e[3];
p.RST_SENT = e[4];
p.GRIDSQUARE = e[5];
p.SAT_NAME = e[6];

switch (e[7]) {
case 'A': p.BAND = '2M'; p.FREQ = 146; p.BAND_RX = '10M'; p.FREQ_RX = 29.4; break;
case 'B': p.BAND = '2M'; p.FREQ = 146; p.BAND_RX = '70M'; p.FREQ_RX = 435; break;
case 'J': p.BAND = '70CM'; p.FREQ = 435; p.BAND_RX = '2M'; p.FREQ_RX = 146; break;
case 'Q': p.BAND = '13CM'; p.FREQ = 2400; p.BAND_RX = '3CM'; p.FREQ_RX = 10489; break;
}

p.MODE = (p.RST_SENT.length === 3) ? 'CW' : 'SSB';

p.PROP_MODE = 'SAT';
p.MY_GRIDSQUARE = 'KO34KI';

return stringify(
'QSO_DATE TIME_ON CALL MODE BAND FREQ BAND_RX FREQ_RX PROP_MODE SAT_NAME MY_GRIDSQUARE RST_RCVD RST_SENT GRIDSQUARE',
p
);
}).join('\n');
}
Insert cell
мои недоделки-хотелки по ЧЕТЫРЕМ ПАРАМЕТРАМ
если view=A, тогда BAND=2M, FREQ=146, BAND_RX=10M, FREQ_RX=29.4
если view=B, тогда BAND=2M, FREQ=146, BAND_RX=70CM, FREQ_RX=435
если view=J, тогда BAND=70CM, FREQ=435, BAND_RX=2M, FREQ_RX=146
если view=Q, тогда BAND=13CM, FREQ=2400, BAND_RX=3CM, FREQ_RX=10489

Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more