From b0c2d48c2bcc1538f646f3f76942c7274c7403e9 Mon Sep 17 00:00:00 2001 From: Ayzen Date: Tue, 30 Sep 2025 16:25:35 +0300 Subject: [PATCH] some refactoring --- reference_data_acquisition/vna_protocol.bin | Bin 0 -> 73330 bytes vna_system/binary_input/current_input.bin | 2 +- vna_system/calibration/current_calibration | 1 + .../core/processors/configs/bscan_config.json | 12 +- .../processors/configs/magnitude_config.json | 2 +- .../implementations/bscan_processor.py | 4 +- .../implementations/magnitude_processor.py | 11 +- vna_system/core/processors/manager.py | 3 +- vna_system/references/current_reference | 2 +- .../asd/info.json | 7 + .../asd/sweep_data.json | 4007 +++++++++++++++++ vna_system/web_ui/static/css/layout.css | 58 +- vna_system/web_ui/static/css/settings.css | 92 +- .../web_ui/static/js/modules/settings.js | 130 +- .../js/modules/settings/preset-manager.js | 50 +- .../js/modules/settings/reference-manager.js | 20 +- vna_system/web_ui/templates/index.html | 37 +- 17 files changed, 4324 insertions(+), 114 deletions(-) create mode 100644 reference_data_acquisition/vna_protocol.bin create mode 120000 vna_system/calibration/current_calibration create mode 100644 vna_system/references/s11_start100_stop8800_points1000_bw1khz/asd/info.json create mode 100644 vna_system/references/s11_start100_stop8800_points1000_bw1khz/asd/sweep_data.json diff --git a/reference_data_acquisition/vna_protocol.bin b/reference_data_acquisition/vna_protocol.bin new file mode 100644 index 0000000000000000000000000000000000000000..f6b1ca7d120e78f76086c72276eefa366d223744 GIT binary patch literal 73330 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 ihA%SvNPKkUvEX dict[str, Any]: + def process_sweep(self, sweep_data: SweepData, calibrated_data: SweepData, vna_config: dict[str, Any]) -> dict[str, Any]: """ Produce magnitude trace (dB) and ancillary info from a calibrated sweep. @@ -70,15 +71,21 @@ class MagnitudeProcessor(BaseProcessor): # Magnitude in dB (clamp zero magnitude to -120 dB) mags_db: list[float] = [] phases_deg: list[float] = [] + # real_points: list[str] = [] + # imag_points: list[str] = [] for real, imag in points: complex_val = complex(real, imag) + # real_points.append(str(real)) + # imag_points.append(str(imag)) mag = abs(complex_val) mags_db.append(20.0 * np.log10(mag) if mag > 0.0 else -120.0) phases_deg.append(np.degrees(np.angle(complex_val))) result = { "frequencies": freqs, + # "real_points" : real_points, + # "imag_points" : imag_points, "magnitudes_db": mags_db, "phases_deg": phases_deg, "y_min": float(self._config.get("y_min", -80)), diff --git a/vna_system/core/processors/manager.py b/vna_system/core/processors/manager.py index c0e5be1..249d339 100644 --- a/vna_system/core/processors/manager.py +++ b/vna_system/core/processors/manager.py @@ -270,9 +270,10 @@ class ProcessorManager: from .implementations.magnitude_processor import MagnitudeProcessor from .implementations.bscan_processor import BScanProcessor - self.register_processor(MagnitudeProcessor(self.config_dir)) + # self.register_processor(PhaseProcessor(self.config_dir)) self.register_processor(BScanProcessor(self.config_dir)) + self.register_processor(MagnitudeProcessor(self.config_dir)) # self.register_processor(SmithChartProcessor(self.config_dir)) logger.info("Default processors registered", count=len(self._processors)) diff --git a/vna_system/references/current_reference b/vna_system/references/current_reference index 0911f55..8264ba0 120000 --- a/vna_system/references/current_reference +++ b/vna_system/references/current_reference @@ -1 +1 @@ -s11_start100_stop8800_points1000_bw1khz/test1 \ No newline at end of file +s21_start100_stop8800_points1000_bw1khz/testet \ No newline at end of file diff --git a/vna_system/references/s11_start100_stop8800_points1000_bw1khz/asd/info.json b/vna_system/references/s11_start100_stop8800_points1000_bw1khz/asd/info.json new file mode 100644 index 0000000..45d1b21 --- /dev/null +++ b/vna_system/references/s11_start100_stop8800_points1000_bw1khz/asd/info.json @@ -0,0 +1,7 @@ +{ + "name": "asd", + "timestamp": "2025-09-30T15:20:21.546972", + "preset_filename": "s11_start100_stop8800_points1000_bw1khz.bin", + "description": "asd", + "metadata": {} +} \ No newline at end of file diff --git a/vna_system/references/s11_start100_stop8800_points1000_bw1khz/asd/sweep_data.json b/vna_system/references/s11_start100_stop8800_points1000_bw1khz/asd/sweep_data.json new file mode 100644 index 0000000..6e056d8 --- /dev/null +++ b/vna_system/references/s11_start100_stop8800_points1000_bw1khz/asd/sweep_data.json @@ -0,0 +1,4007 @@ +{ + "sweep_number": 208, + "timestamp": 1759234821.541183, + "points": [ + [ + -2.673565626144409, + 0.45116427540779114 + ], + [ + -2.6656813621520996, + 0.5137245655059814 + ], + [ + -2.6552414894104004, + 0.575756311416626 + ], + [ + -2.6458754539489746, + 0.6360990405082703 + ], + [ + -2.6337196826934814, + 0.6958416700363159 + ], + [ + -3.403756856918335, + 0.9202976822853088 + ], + [ + -3.388270378112793, + 1.00452721118927 + ], + [ + -3.376314878463745, + 1.0779086351394653 + ], + [ + -3.3490140438079834, + 1.1564695835113525 + ], + [ + -3.3282864093780518, + 1.2334160804748535 + ], + [ + -3.3056790828704834, + 1.3099498748779297 + ], + [ + -3.2883119583129883, + 1.3827167749404907 + ], + [ + -3.2620062828063965, + 1.4624518156051636 + ], + [ + -3.235482931137085, + 1.5383557081222534 + ], + [ + -3.206298589706421, + 1.616023302078247 + ], + [ + -3.1778554916381836, + 1.6923396587371826 + ], + [ + -3.150444507598877, + 1.7642732858657837 + ], + [ + -3.1090571880340576, + 1.8353354930877686 + ], + [ + -3.076094150543213, + 1.9117639064788818 + ], + [ + -3.043433427810669, + 1.9831832647323608 + ], + [ + -3.007033109664917, + 2.056340217590332 + ], + [ + -2.964776039123535, + 2.1247973442077637 + ], + [ + -2.9242990016937256, + 2.2041642665863037 + ], + [ + -2.884627103805542, + 2.275818347930908 + ], + [ + -2.8383285999298096, + 2.347762107849121 + ], + [ + -2.799283981323242, + 2.4144177436828613 + ], + [ + -2.751110315322876, + 2.4884438514709473 + ], + [ + -2.7036516666412354, + 2.562277317047119 + ], + [ + -2.6577539443969727, + 2.6356451511383057 + ], + [ + -2.6003026962280273, + 2.7068185806274414 + ], + [ + -2.557800531387329, + 2.7716903686523438 + ], + [ + -2.5051286220550537, + 2.835324764251709 + ], + [ + -2.451317071914673, + 2.901798725128174 + ], + [ + -2.3929009437561035, + 2.969348669052124 + ], + [ + -2.3316993713378906, + 3.0374832153320312 + ], + [ + -2.265857219696045, + 3.104797124862671 + ], + [ + -2.198521852493286, + 3.1625924110412598 + ], + [ + -2.1297097206115723, + 3.226527214050293 + ], + [ + -2.0549283027648926, + 3.2934446334838867 + ], + [ + -1.9897171258926392, + 3.3563060760498047 + ], + [ + -1.9174346923828125, + 3.4154655933380127 + ], + [ + -1.84732985496521, + 3.4776463508605957 + ], + [ + -1.7729038000106812, + 3.538546562194824 + ], + [ + -1.6926435232162476, + 3.5946261882781982 + ], + [ + -1.6193088293075562, + 3.655383825302124 + ], + [ + -1.5314526557922363, + 3.7058606147766113 + ], + [ + -1.4484809637069702, + 3.7570858001708984 + ], + [ + -1.3592077493667603, + 3.811819076538086 + ], + [ + -1.2726013660430908, + 3.8639163970947266 + ], + [ + -1.179045557975769, + 3.913818597793579 + ], + [ + -1.0938091278076172, + 3.968156337738037 + ], + [ + -0.9956288933753967, + 4.007333278656006 + ], + [ + -0.8990021347999573, + 4.059115886688232 + ], + [ + -0.7999036312103271, + 4.101059913635254 + ], + [ + -0.709750771522522, + 4.147965431213379 + ], + [ + -0.602721095085144, + 4.183753490447998 + ], + [ + -0.4988913834095001, + 4.2250142097473145 + ], + [ + -0.3965775966644287, + 4.259474277496338 + ], + [ + -0.28651610016822815, + 4.289792060852051 + ], + [ + -0.17845480144023895, + 4.3197526931762695 + ], + [ + -0.06545595824718475, + 4.339405536651611 + ], + [ + 0.058778416365385056, + 4.365509986877441 + ], + [ + 0.17838497459888458, + 4.381104469299316 + ], + [ + 0.30639249086380005, + 4.401107311248779 + ], + [ + 0.42309504747390747, + 4.407057285308838 + ], + [ + 0.5435478091239929, + 4.419037818908691 + ], + [ + 0.6678239703178406, + 4.429128646850586 + ], + [ + 0.7912883162498474, + 4.430088043212891 + ], + [ + 0.9209880232810974, + 4.44419002532959 + ], + [ + 1.048499345779419, + 4.436034202575684 + ], + [ + 1.194473147392273, + 4.434474468231201 + ], + [ + 1.3185722827911377, + 4.421215057373047 + ], + [ + 1.4575685262680054, + 4.407434463500977 + ], + [ + 1.5928910970687866, + 4.376117706298828 + ], + [ + 1.7220426797866821, + 4.3526434898376465 + ], + [ + 1.8741416931152344, + 4.3169846534729 + ], + [ + 1.9983526468276978, + 4.291341304779053 + ], + [ + 2.141277313232422, + 4.251984119415283 + ], + [ + 2.2686944007873535, + 4.208477973937988 + ], + [ + 2.3962278366088867, + 4.162106513977051 + ], + [ + 2.5303287506103516, + 4.100673198699951 + ], + [ + 2.6629414558410645, + 4.045809745788574 + ], + [ + 2.7844691276550293, + 3.9852161407470703 + ], + [ + 2.9046406745910645, + 3.9255123138427734 + ], + [ + 3.0236799716949463, + 3.8580610752105713 + ], + [ + 3.1500799655914307, + 3.785982847213745 + ], + [ + 3.263472318649292, + 3.6921558380126953 + ], + [ + 3.3778398036956787, + 3.6141114234924316 + ], + [ + 3.501213550567627, + 3.526379108428955 + ], + [ + 3.6108036041259766, + 3.427213191986084 + ], + [ + 3.7131950855255127, + 3.3264198303222656 + ], + [ + 3.8287336826324463, + 3.2249789237976074 + ], + [ + 3.9392406940460205, + 3.114331007003784 + ], + [ + 4.038949012756348, + 2.994906425476074 + ], + [ + 4.150544166564941, + 2.8664474487304688 + ], + [ + 4.254537105560303, + 2.7487921714782715 + ], + [ + 4.353126049041748, + 2.617408514022827 + ], + [ + 4.435250759124756, + 2.4757211208343506 + ], + [ + 4.523613452911377, + 2.340426445007324 + ], + [ + 4.593565940856934, + 2.1932785511016846 + ], + [ + 4.667832374572754, + 2.055448055267334 + ], + [ + 4.73592472076416, + 1.9022738933563232 + ], + [ + 4.797405242919922, + 1.7411619424819946 + ], + [ + 4.846621990203857, + 1.5867527723312378 + ], + [ + 4.894033908843994, + 1.4243395328521729 + ], + [ + 4.940122127532959, + 1.2629179954528809 + ], + [ + 4.984976291656494, + 1.1100208759307861 + ], + [ + 5.011409759521484, + 0.9319339394569397 + ], + [ + 5.039988994598389, + 0.7663321495056152 + ], + [ + 5.056887626647949, + 0.5987592339515686 + ], + [ + 5.087705612182617, + 0.44846025109291077 + ], + [ + 5.086050510406494, + 0.27324405312538147 + ], + [ + 5.083710193634033, + 0.10791771113872528 + ], + [ + 5.072287559509277, + -0.05192594230175018 + ], + [ + 5.049464225769043, + -0.22824732959270477 + ], + [ + 5.024069309234619, + -0.3500550389289856 + ], + [ + 4.994563102722168, + -0.5025498270988464 + ], + [ + 4.959274768829346, + -0.6523891091346741 + ], + [ + 4.917263507843018, + -0.7947450280189514 + ], + [ + 4.868744850158691, + -0.938439130783081 + ], + [ + 4.806164264678955, + -1.0775727033615112 + ], + [ + 4.748088359832764, + -1.2122186422348022 + ], + [ + 4.667496204376221, + -1.3455865383148193 + ], + [ + 4.592746734619141, + -1.4919488430023193 + ], + [ + 4.514658451080322, + -1.6129822731018066 + ], + [ + 4.425142288208008, + -1.7523880004882812 + ], + [ + 4.3418731689453125, + -1.88327157497406 + ], + [ + 4.243729591369629, + -2.0126562118530273 + ], + [ + 4.143952369689941, + -2.150196075439453 + ], + [ + 4.055149078369141, + -2.274822473526001 + ], + [ + 3.951740026473999, + -2.394291639328003 + ], + [ + 3.8545594215393066, + -2.529545783996582 + ], + [ + 3.7561914920806885, + -2.629901647567749 + ], + [ + 3.6475226879119873, + -2.746523141860962 + ], + [ + 3.5651981830596924, + -2.8438408374786377 + ], + [ + 3.456165075302124, + -2.9379937648773193 + ], + [ + 3.3632702827453613, + -3.023461103439331 + ], + [ + 3.266427516937256, + -3.0823380947113037 + ], + [ + 3.160092830657959, + -3.147714614868164 + ], + [ + 3.0595133304595947, + -3.196848154067993 + ], + [ + 2.956920623779297, + -3.2202413082122803 + ], + [ + 2.8557631969451904, + -3.2749598026275635 + ], + [ + 2.7480874061584473, + -3.2893383502960205 + ], + [ + 2.6248996257781982, + -3.302492380142212 + ], + [ + 2.5269997119903564, + -3.3365557193756104 + ], + [ + 2.4154348373413086, + -3.338155508041382 + ], + [ + 2.2981042861938477, + -3.3486716747283936 + ], + [ + 2.194411516189575, + -3.3648264408111572 + ], + [ + 2.08211350440979, + -3.371595859527588 + ], + [ + 1.9570941925048828, + -3.385507106781006 + ], + [ + 1.8620754480361938, + -3.3927903175354004 + ], + [ + 1.7329272031784058, + -3.4023988246917725 + ], + [ + 1.6131600141525269, + -3.422834873199463 + ], + [ + 1.4712669849395752, + -3.623210906982422 + ], + [ + 1.3664392232894897, + -3.6245577335357666 + ], + [ + 1.2609766721725464, + -3.626932144165039 + ], + [ + 1.1771351099014282, + -3.6124682426452637 + ], + [ + 1.0771557092666626, + -3.6132216453552246 + ], + [ + 0.9780215620994568, + -3.600660562515259 + ], + [ + 0.8794789910316467, + -3.5914928913116455 + ], + [ + 0.781623125076294, + -3.5841736793518066 + ], + [ + 0.6874527931213379, + -3.571871280670166 + ], + [ + 0.5932562351226807, + -3.556065320968628 + ], + [ + 0.5001349449157715, + -3.5428216457366943 + ], + [ + 0.417007714509964, + -3.5212104320526123 + ], + [ + 0.3277859389781952, + -3.493227243423462 + ], + [ + 0.24680602550506592, + -3.4734463691711426 + ], + [ + 0.16597530245780945, + -3.453805685043335 + ], + [ + 0.08517835289239883, + -3.434833288192749 + ], + [ + 0.005083039402961731, + -3.40932035446167 + ], + [ + -0.06756678968667984, + -3.380143642425537 + ], + [ + -0.14056366682052612, + -3.3524763584136963 + ], + [ + -0.21196196973323822, + -3.3318796157836914 + ], + [ + -0.27465957403182983, + -3.3010425567626953 + ], + [ + -0.3448498845100403, + -3.273355484008789 + ], + [ + -0.4105629622936249, + -3.2544898986816406 + ], + [ + -0.46337446570396423, + -3.220167875289917 + ], + [ + -0.5318975448608398, + -3.1911697387695312 + ], + [ + -0.5881290435791016, + -3.1595709323883057 + ], + [ + -0.6446848511695862, + -3.1289167404174805 + ], + [ + -0.7057645320892334, + -3.095999240875244 + ], + [ + -0.758942723274231, + -3.072220802307129 + ], + [ + -0.8184359669685364, + -3.03031587600708 + ], + [ + -0.8777862191200256, + -3.0001208782196045 + ], + [ + -0.93394535779953, + -2.965778112411499 + ], + [ + -0.9828482270240784, + -2.9264862537384033 + ], + [ + -1.0350850820541382, + -2.8926308155059814 + ], + [ + -1.0855863094329834, + -2.857201099395752 + ], + [ + -1.1374479532241821, + -2.8256094455718994 + ], + [ + -1.1912492513656616, + -2.7930819988250732 + ], + [ + -1.2348603010177612, + -2.757244348526001 + ], + [ + -1.2796574831008911, + -2.722414970397949 + ], + [ + -1.3251807689666748, + -2.685720682144165 + ], + [ + -1.368201494216919, + -2.648806095123291 + ], + [ + -1.4063594341278076, + -2.6117327213287354 + ], + [ + -1.45609450340271, + -2.5680081844329834 + ], + [ + -1.4924556016921997, + -2.529996633529663 + ], + [ + -1.528954029083252, + -2.484738349914551 + ], + [ + -1.570415735244751, + -2.439656972885132 + ], + [ + -1.5698552131652832, + -2.371317148208618 + ], + [ + -1.6141173839569092, + -2.3170456886291504 + ], + [ + -1.6650179624557495, + -2.2691221237182617 + ], + [ + -1.704233169555664, + -2.2245984077453613 + ], + [ + -1.7568460702896118, + -2.1714963912963867 + ], + [ + -1.8071691989898682, + -2.117353677749634 + ], + [ + -1.841353416442871, + -2.0717082023620605 + ], + [ + -1.8879971504211426, + -2.021674156188965 + ], + [ + -1.9379514455795288, + -1.9663022756576538 + ], + [ + -1.971327304840088, + -1.915307641029358 + ], + [ + -2.012483835220337, + -1.8620672225952148 + ], + [ + -2.0525004863739014, + -1.8139052391052246 + ], + [ + -2.082798957824707, + -1.765459656715393 + ], + [ + -2.1203033924102783, + -1.71322762966156 + ], + [ + -2.156503438949585, + -1.6645489931106567 + ], + [ + -2.1789016723632812, + -1.6208120584487915 + ], + [ + -2.2137904167175293, + -1.5594472885131836 + ], + [ + -2.244065761566162, + -1.5123529434204102 + ], + [ + -2.2613518238067627, + -1.4656062126159668 + ], + [ + -2.2901580333709717, + -1.4114450216293335 + ], + [ + -2.307647228240967, + -1.363504409790039 + ], + [ + -2.3218350410461426, + -1.3161271810531616 + ], + [ + -2.3443703651428223, + -1.2643238306045532 + ], + [ + -2.358952522277832, + -1.2161152362823486 + ], + [ + -2.3725168704986572, + -1.1690953969955444 + ], + [ + -2.3826377391815186, + -1.1172280311584473 + ], + [ + -2.397002935409546, + -1.0690889358520508 + ], + [ + -2.4028193950653076, + -1.0200718641281128 + ], + [ + -2.4066269397735596, + -0.970595121383667 + ], + [ + -2.4210777282714844, + -0.915166437625885 + ], + [ + -2.429453134536743, + -0.8635829091072083 + ], + [ + -2.4405741691589355, + -0.8050417900085449 + ], + [ + -2.45169734954834, + -0.744501531124115 + ], + [ + -2.4580702781677246, + -0.6918973922729492 + ], + [ + -2.4699907302856445, + -0.632025957107544 + ], + [ + -2.4802019596099854, + -0.568907618522644 + ], + [ + -2.4926443099975586, + -0.5138462781906128 + ], + [ + -2.50496768951416, + -0.4514085650444031 + ], + [ + -2.5174803733825684, + -0.38860592246055603 + ], + [ + -2.527311325073242, + -0.32796379923820496 + ], + [ + -2.532444477081299, + -0.2700045704841614 + ], + [ + -2.539435386657715, + -0.21011902391910553 + ], + [ + -2.5434529781341553, + -0.15539099276065826 + ], + [ + -2.5303657054901123, + -0.09986753016710281 + ], + [ + -2.5251576900482178, + -0.04545968025922775 + ], + [ + -2.519052028656006, + 0.011226581409573555 + ], + [ + -2.5179662704467773, + 0.06422913074493408 + ], + [ + -2.5091569423675537, + 0.11907844245433807 + ], + [ + -2.5052595138549805, + 0.17680349946022034 + ], + [ + -2.4972712993621826, + 0.2368515431880951 + ], + [ + -2.491549015045166, + 0.29675978422164917 + ], + [ + -2.4812004566192627, + 0.3485954999923706 + ], + [ + -2.471989631652832, + 0.4070999324321747 + ], + [ + -2.4632363319396973, + 0.4677562713623047 + ], + [ + -2.452303409576416, + 0.5271735787391663 + ], + [ + -2.447099447250366, + 0.5879557728767395 + ], + [ + -2.429957866668701, + 0.6409167647361755 + ], + [ + -2.4214606285095215, + 0.7045494914054871 + ], + [ + -2.409613609313965, + 0.7646074891090393 + ], + [ + -2.4031879901885986, + 0.8245601058006287 + ], + [ + -2.399340867996216, + 0.8864275217056274 + ], + [ + -2.3762311935424805, + 0.9403054714202881 + ], + [ + -2.365683078765869, + 1.0025454759597778 + ], + [ + -2.3570404052734375, + 1.0596786737442017 + ], + [ + -2.3515148162841797, + 1.113701343536377 + ], + [ + -2.3439218997955322, + 1.1636251211166382 + ], + [ + -2.31671142578125, + 1.2190943956375122 + ], + [ + -2.310853958129883, + 1.2735410928726196 + ], + [ + -2.2989625930786133, + 1.3209418058395386 + ], + [ + -2.2868916988372803, + 1.3647230863571167 + ], + [ + -2.2753348350524902, + 1.4012330770492554 + ], + [ + -2.257392406463623, + 1.4345121383666992 + ], + [ + -2.234255790710449, + 1.4946537017822266 + ], + [ + -2.217745780944824, + 1.5336918830871582 + ], + [ + -2.193103075027466, + 1.563831090927124 + ], + [ + -2.1638383865356445, + 1.592268705368042 + ], + [ + -2.1263937950134277, + 1.6267834901809692 + ], + [ + -2.098369598388672, + 1.6876027584075928 + ], + [ + -2.060269832611084, + 1.7120674848556519 + ], + [ + -2.01259446144104, + 1.7456082105636597 + ], + [ + -1.9631059169769287, + 1.781449794769287 + ], + [ + -1.9065057039260864, + 1.8220852613449097 + ], + [ + -1.849961757659912, + 1.8696905374526978 + ], + [ + -1.8127667903900146, + 1.916001558303833 + ], + [ + -1.750095248222351, + 1.961168646812439 + ], + [ + -1.6885496377944946, + 2.0045182704925537 + ], + [ + -1.6229145526885986, + 2.0610129833221436 + ], + [ + -1.5583034753799438, + 2.12886905670166 + ], + [ + -1.5124061107635498, + 2.168555736541748 + ], + [ + -1.4512147903442383, + 2.224752902984619 + ], + [ + -1.3952226638793945, + 2.2991833686828613 + ], + [ + -1.3296798467636108, + 2.3526651859283447 + ], + [ + -1.2705334424972534, + 2.4241981506347656 + ], + [ + -1.2240204811096191, + 2.5066347122192383 + ], + [ + -1.1642742156982422, + 2.5402469635009766 + ], + [ + -1.1134001016616821, + 2.592752695083618 + ], + [ + -1.0535751581192017, + 2.665320873260498 + ], + [ + -1.0039362907409668, + 2.7179744243621826 + ], + [ + -0.9560591578483582, + 2.781625986099243 + ], + [ + -0.8934528231620789, + 2.8222551345825195 + ], + [ + -0.8360759019851685, + 2.866152048110962 + ], + [ + -0.7756204009056091, + 2.9133691787719727 + ], + [ + -0.7088898420333862, + 2.954401731491089 + ], + [ + -0.646295428276062, + 3.007746458053589 + ], + [ + -0.589481770992279, + 3.047438144683838 + ], + [ + -0.5251596570014954, + 3.079993486404419 + ], + [ + -0.4402637183666229, + 3.1202051639556885 + ], + [ + -0.3654383718967438, + 3.156399726867676 + ], + [ + -0.3022022843360901, + 3.1869659423828125 + ], + [ + -0.22979770600795746, + 3.214689016342163 + ], + [ + -0.15688832104206085, + 3.233384370803833 + ], + [ + -0.07195815443992615, + 3.2651281356811523 + ], + [ + 0.014438876882195473, + 3.290045738220215 + ], + [ + 0.09068680554628372, + 3.3019957542419434 + ], + [ + 0.1704729050397873, + 3.3112359046936035 + ], + [ + 0.2464071661233902, + 3.33359694480896 + ], + [ + 0.32167887687683105, + 3.3318099975585938 + ], + [ + 0.39877423644065857, + 3.3290255069732666 + ], + [ + 0.611967921257019, + 3.2194414138793945 + ], + [ + 0.6984997987747192, + 3.2124617099761963 + ], + [ + 0.8117514848709106, + 3.2146923542022705 + ], + [ + 0.9075869917869568, + 3.2034518718719482 + ], + [ + 1.0070127248764038, + 3.200429677963257 + ], + [ + 1.1027823686599731, + 3.186481237411499 + ], + [ + 1.1919678449630737, + 3.18194317817688 + ], + [ + 1.3020557165145874, + 3.1507434844970703 + ], + [ + 1.39469313621521, + 3.141079902648926 + ], + [ + 1.490206241607666, + 3.107835292816162 + ], + [ + 1.5767765045166016, + 3.0945701599121094 + ], + [ + 1.657688856124878, + 3.0506441593170166 + ], + [ + 1.7700778245925903, + 3.021702289581299 + ], + [ + 1.8564825057983398, + 2.9807991981506348 + ], + [ + 1.9440622329711914, + 2.9399712085723877 + ], + [ + 2.017791748046875, + 2.88606595993042 + ], + [ + 2.0983328819274902, + 2.829883575439453 + ], + [ + 2.196361541748047, + 2.786304473876953 + ], + [ + 2.2609267234802246, + 2.7211391925811768 + ], + [ + 2.333956003189087, + 2.647343635559082 + ], + [ + 2.4068429470062256, + 2.579876184463501 + ], + [ + 2.4756624698638916, + 2.4901392459869385 + ], + [ + 2.554903030395508, + 2.4345614910125732 + ], + [ + 2.628176689147949, + 2.3436005115509033 + ], + [ + 2.689887285232544, + 2.2526612281799316 + ], + [ + 2.7591419219970703, + 2.1574621200561523 + ], + [ + 2.8241727352142334, + 2.0603983402252197 + ], + [ + 2.8847246170043945, + 1.9530259370803833 + ], + [ + 2.9481067657470703, + 1.8698402643203735 + ], + [ + 3.0045359134674072, + 1.7638219594955444 + ], + [ + 3.0686228275299072, + 1.6592400074005127 + ], + [ + 3.1211764812469482, + 1.554263949394226 + ], + [ + 3.179692506790161, + 1.448191523551941 + ], + [ + 3.220425605773926, + 1.3520883321762085 + ], + [ + 3.2663345336914062, + 1.2459195852279663 + ], + [ + 3.3203389644622803, + 1.1411343812942505 + ], + [ + 3.357081651687622, + 1.0424540042877197 + ], + [ + 3.3951523303985596, + 0.9366125464439392 + ], + [ + 3.429147958755493, + 0.8378911018371582 + ], + [ + 3.4491074085235596, + 0.7448635101318359 + ], + [ + 3.4741082191467285, + 0.6497449278831482 + ], + [ + 3.489467144012451, + 0.5577705502510071 + ], + [ + 3.502983808517456, + 0.46688902378082275 + ], + [ + 3.50787091255188, + 0.37495115399360657 + ], + [ + 3.5102999210357666, + 0.28662341833114624 + ], + [ + 3.506148099899292, + 0.1963791698217392 + ], + [ + 3.4973626136779785, + 0.11097176373004913 + ], + [ + 3.485323905944824, + 0.02084435522556305 + ], + [ + 3.4634146690368652, + -0.0665149912238121 + ], + [ + 3.4448773860931396, + -0.16134531795978546 + ], + [ + 3.4210314750671387, + -0.26115280389785767 + ], + [ + 3.39363169670105, + -0.3456045985221863 + ], + [ + 3.363438367843628, + -0.4467039406299591 + ], + [ + 3.339721202850342, + -0.5464423298835754 + ], + [ + 3.3164472579956055, + -0.6523231267929077 + ], + [ + 3.2898294925689697, + -0.7533025741577148 + ], + [ + 3.2781412601470947, + -0.8549384474754333 + ], + [ + 3.273810625076294, + -0.9501970410346985 + ], + [ + 3.2443950176239014, + -1.045616865158081 + ], + [ + 3.2442634105682373, + -1.13193678855896 + ], + [ + 3.2387654781341553, + -1.2055481672286987 + ], + [ + 3.2327322959899902, + -1.2749263048171997 + ], + [ + 3.218219041824341, + -1.3361485004425049 + ], + [ + 3.2089881896972656, + -1.3707520961761475 + ], + [ + 3.185059070587158, + -1.4281063079833984 + ], + [ + 3.1666500568389893, + -1.467042088508606 + ], + [ + 3.1298115253448486, + -1.499009132385254 + ], + [ + 3.092073440551758, + -1.5325738191604614 + ], + [ + 3.048287868499756, + -1.5608669519424438 + ], + [ + 2.9907445907592773, + -1.5850598812103271 + ], + [ + 2.9280812740325928, + -1.6162389516830444 + ], + [ + 2.8727056980133057, + -1.6501648426055908 + ], + [ + 2.8084068298339844, + -1.66936194896698 + ], + [ + 2.740647077560425, + -1.7048619985580444 + ], + [ + 2.6753182411193848, + -1.7381601333618164 + ], + [ + 2.611057996749878, + -1.7762260437011719 + ], + [ + 2.548384428024292, + -1.8132392168045044 + ], + [ + 2.4793248176574707, + -1.8481276035308838 + ], + [ + 2.4041285514831543, + -1.8723171949386597 + ], + [ + 2.3292043209075928, + -1.9069454669952393 + ], + [ + 2.2484796047210693, + -1.943587303161621 + ], + [ + 2.1713781356811523, + -1.9862147569656372 + ], + [ + 2.1018621921539307, + -2.0301923751831055 + ], + [ + 2.0211756229400635, + -2.0842068195343018 + ], + [ + 1.9497449398040771, + -2.1408848762512207 + ], + [ + 1.8892513513565063, + -2.181532144546509 + ], + [ + 1.8147850036621094, + -2.2199745178222656 + ], + [ + 1.7460445165634155, + -2.271362066268921 + ], + [ + 1.6876208782196045, + -2.319087028503418 + ], + [ + 1.6254479885101318, + -2.3770525455474854 + ], + [ + 1.554864764213562, + -2.4224467277526855 + ], + [ + 1.5096033811569214, + -2.4655487537384033 + ], + [ + 1.464123010635376, + -2.5171561241149902 + ], + [ + 1.511777400970459, + -2.437337636947632 + ], + [ + 1.433635950088501, + -2.468316078186035 + ], + [ + 1.3610332012176514, + -2.4897806644439697 + ], + [ + 1.2796211242675781, + -2.5196313858032227 + ], + [ + 1.2119483947753906, + -2.5397746562957764 + ], + [ + 1.1507171392440796, + -2.5609209537506104 + ], + [ + 1.1160273551940918, + -2.584155559539795 + ], + [ + 1.039048671722412, + -2.6021294593811035 + ], + [ + 0.9741151332855225, + -2.624804973602295 + ], + [ + 0.9148171544075012, + -2.6504709720611572 + ], + [ + 0.8502357602119446, + -2.678514242172241 + ], + [ + 0.778400719165802, + -2.6890385150909424 + ], + [ + 0.7437519431114197, + -2.684354782104492 + ], + [ + 0.6944791078567505, + -2.6930487155914307 + ], + [ + 0.6295535564422607, + -2.707439661026001 + ], + [ + 0.5656899809837341, + -2.7328133583068848 + ], + [ + 0.5090932846069336, + -2.755047082901001 + ], + [ + 0.4562597870826721, + -2.7703444957733154 + ], + [ + 0.39461150765419006, + -2.7479355335235596 + ], + [ + 0.3386745750904083, + -2.7606201171875 + ], + [ + 0.2915944457054138, + -2.7685739994049072 + ], + [ + 0.24458736181259155, + -2.7765138149261475 + ], + [ + 0.1938885599374771, + -2.7811872959136963 + ], + [ + 0.15876036882400513, + -2.8032493591308594 + ], + [ + 0.08362212777137756, + -2.775117874145508 + ], + [ + 0.03041999414563179, + -2.7673072814941406 + ], + [ + -0.013755652122199535, + -2.7777583599090576 + ], + [ + -0.0553840808570385, + -2.7762291431427 + ], + [ + -0.08917714655399323, + -2.772143602371216 + ], + [ + -0.1333334594964981, + -2.7591331005096436 + ], + [ + -0.19773277640342712, + -2.7466797828674316 + ], + [ + -0.2533676028251648, + -2.7507622241973877 + ], + [ + -0.2925993800163269, + -2.742262125015259 + ], + [ + -0.32649660110473633, + -2.7283802032470703 + ], + [ + -0.3684251010417938, + -2.7126400470733643 + ], + [ + -0.3980896770954132, + -2.6926138401031494 + ], + [ + -0.44426023960113525, + -2.6792941093444824 + ], + [ + -0.5026360154151917, + -2.6756646633148193 + ], + [ + -0.5401818752288818, + -2.667381763458252 + ], + [ + -0.5826342701911926, + -2.6473615169525146 + ], + [ + -0.6171247363090515, + -2.6236939430236816 + ], + [ + -0.6573880910873413, + -2.6034321784973145 + ], + [ + -0.7001950740814209, + -2.5680973529815674 + ], + [ + -0.7372730374336243, + -2.5733861923217773 + ], + [ + -0.7783359289169312, + -2.554731607437134 + ], + [ + -0.8171892762184143, + -2.518935203552246 + ], + [ + -0.8573025465011597, + -2.4965426921844482 + ], + [ + -0.893268883228302, + -2.4663124084472656 + ], + [ + -0.9367859959602356, + -2.426037073135376 + ], + [ + -0.9748829007148743, + -2.397326707839966 + ], + [ + -1.003208875656128, + -2.390115737915039 + ], + [ + -1.0438032150268555, + -2.3555619716644287 + ], + [ + -1.088500738143921, + -2.323457956314087 + ], + [ + -1.1366695165634155, + -2.2831084728240967 + ], + [ + -1.1868537664413452, + -2.2470574378967285 + ], + [ + -1.2345410585403442, + -2.2106566429138184 + ], + [ + -1.2928500175476074, + -2.1746888160705566 + ], + [ + -1.306487798690796, + -2.159517526626587 + ], + [ + -1.361864447593689, + -2.119474411010742 + ], + [ + -1.4114149808883667, + -2.0794594287872314 + ], + [ + -1.4694842100143433, + -2.048192262649536 + ], + [ + -1.5220963954925537, + -2.0255684852600098 + ], + [ + -1.585252285003662, + -2.001296043395996 + ], + [ + -1.6409894227981567, + -1.973669171333313 + ], + [ + -1.6665431261062622, + -1.942260503768921 + ], + [ + -1.7126028537750244, + -1.9104963541030884 + ], + [ + -1.7638309001922607, + -1.890023112297058 + ], + [ + -1.8165044784545898, + -1.8742774724960327 + ], + [ + -1.8627840280532837, + -1.8612334728240967 + ], + [ + -1.9027436971664429, + -1.842311143875122 + ], + [ + -1.9361766576766968, + -1.8259012699127197 + ], + [ + -1.9685189723968506, + -1.816699743270874 + ], + [ + -2.0102524757385254, + -1.76907479763031 + ], + [ + -2.041616678237915, + -1.7537137269973755 + ], + [ + -2.0712332725524902, + -1.7430647611618042 + ], + [ + -2.0988588333129883, + -1.721824049949646 + ], + [ + -2.1168441772460938, + -1.7027053833007812 + ], + [ + -2.1366429328918457, + -1.6803278923034668 + ], + [ + -2.1574132442474365, + -1.654842495918274 + ], + [ + -2.1726486682891846, + -1.6224205493927002 + ], + [ + -2.2146363258361816, + -1.5832512378692627 + ], + [ + -2.230710744857788, + -1.5580613613128662 + ], + [ + -2.2367630004882812, + -1.519519329071045 + ], + [ + -2.2526931762695312, + -1.4832121133804321 + ], + [ + -2.7936298847198486, + -1.9213887453079224 + ], + [ + -2.8219358921051025, + -1.8704017400741577 + ], + [ + -2.8606719970703125, + -1.8227845430374146 + ], + [ + -2.901721954345703, + -1.7638503313064575 + ], + [ + -2.9417872428894043, + -1.7075657844543457 + ], + [ + -2.978193759918213, + -1.6483131647109985 + ], + [ + -3.0079381465911865, + -1.5906116962432861 + ], + [ + -3.0437817573547363, + -1.5272263288497925 + ], + [ + -3.0749166011810303, + -1.4683866500854492 + ], + [ + -3.1139414310455322, + -1.4044164419174194 + ], + [ + -3.1454954147338867, + -1.3381140232086182 + ], + [ + -3.1764869689941406, + -1.26907479763031 + ], + [ + -1.9459608793258667, + -0.6861114501953125 + ], + [ + -1.9652037620544434, + -0.6401185393333435 + ], + [ + -1.9802254438400269, + -0.5982058048248291 + ], + [ + -1.9951105117797852, + -0.5539867877960205 + ], + [ + -2.0092694759368896, + -0.5080002546310425 + ], + [ + -2.0217435359954834, + -0.46194955706596375 + ], + [ + -2.034604549407959, + -0.41333499550819397 + ], + [ + -2.045097827911377, + -0.36613792181015015 + ], + [ + -2.0544819831848145, + -0.3167561888694763 + ], + [ + -2.0632247924804688, + -0.26812294125556946 + ], + [ + -2.0698840618133545, + -0.21824781596660614 + ], + [ + -2.0763425827026367, + -0.16767901182174683 + ], + [ + -2.080977201461792, + -0.11817596852779388 + ], + [ + -2.085012912750244, + -0.06711170077323914 + ], + [ + -2.0860676765441895, + -0.01586427167057991 + ], + [ + -2.087454319000244, + 0.032600030303001404 + ], + [ + -2.0877201557159424, + 0.08449400961399078 + ], + [ + -2.0862956047058105, + 0.1356000155210495 + ], + [ + -2.083289861679077, + 0.18701224029064178 + ], + [ + -2.081596612930298, + 0.2381150871515274 + ], + [ + -2.0735902786254883, + 0.2910008728504181 + ], + [ + -2.0683999061584473, + 0.3439560830593109 + ], + [ + -2.0606439113616943, + 0.3926254212856293 + ], + [ + -2.053243398666382, + 0.44349366426467896 + ], + [ + -2.042027711868286, + 0.49629175662994385 + ], + [ + -2.0287647247314453, + 0.5442829132080078 + ], + [ + -2.0116524696350098, + 0.5964592099189758 + ], + [ + -2.0034520626068115, + 0.6470811367034912 + ], + [ + -1.9882367849349976, + 0.6953976154327393 + ], + [ + -1.9700981378555298, + 0.7487432360649109 + ], + [ + -1.9555854797363281, + 0.7978733777999878 + ], + [ + -1.9310756921768188, + 0.8452919721603394 + ], + [ + -1.9105243682861328, + 0.898220956325531 + ], + [ + -1.8872729539871216, + 0.9454725384712219 + ], + [ + -1.865592360496521, + 0.9914072751998901 + ], + [ + -1.84126615524292, + 1.0410655736923218 + ], + [ + -1.8139920234680176, + 1.0886739492416382 + ], + [ + -1.785301685333252, + 1.1371856927871704 + ], + [ + -1.758167028427124, + 1.1780158281326294 + ], + [ + -1.726958155632019, + 1.2222673892974854 + ], + [ + -1.692543387413025, + 1.2620667219161987 + ], + [ + -1.661798357963562, + 1.3108476400375366 + ], + [ + -1.6267884969711304, + 1.3518353700637817 + ], + [ + -1.5920006036758423, + 1.3946893215179443 + ], + [ + -1.5532777309417725, + 1.4362919330596924 + ], + [ + -1.520512342453003, + 1.4769511222839355 + ], + [ + -1.479565143585205, + 1.5140180587768555 + ], + [ + -1.4447811841964722, + 1.5533677339553833 + ], + [ + -1.405845284461975, + 1.5920530557632446 + ], + [ + -1.3592714071273804, + 1.6265902519226074 + ], + [ + -1.317220687866211, + 1.6572967767715454 + ], + [ + -1.2715754508972168, + 1.6980416774749756 + ], + [ + -1.228000521659851, + 1.7252612113952637 + ], + [ + -1.1899724006652832, + 1.7520780563354492 + ], + [ + -1.1450456380844116, + 1.780039668083191 + ], + [ + -1.1020545959472656, + 1.810593605041504 + ], + [ + -1.0598829984664917, + 1.8378090858459473 + ], + [ + -1.0204914808273315, + 1.8383175134658813 + ], + [ + -0.9604700207710266, + 1.8763399124145508 + ], + [ + -0.9155614972114563, + 1.895161747932434 + ], + [ + -0.8667241930961609, + 1.9305669069290161 + ], + [ + -0.8235692977905273, + 1.945513367652893 + ], + [ + -0.770804226398468, + 1.9649611711502075 + ], + [ + -0.7308144569396973, + 1.9767364263534546 + ], + [ + -0.6864765286445618, + 1.9910430908203125 + ], + [ + -0.6235260963439941, + 2.004852056503296 + ], + [ + -0.5817754864692688, + 2.0181779861450195 + ], + [ + -0.528957724571228, + 2.0265746116638184 + ], + [ + -0.47303953766822815, + 2.0414133071899414 + ], + [ + -0.43667006492614746, + 2.0369722843170166 + ], + [ + -0.3771652281284332, + 2.044952154159546 + ], + [ + -0.3227597773075104, + 2.056699752807617 + ], + [ + -0.27727237343788147, + 2.045673370361328 + ], + [ + -0.20591939985752106, + 2.0735394954681396 + ], + [ + -0.17788028717041016, + 2.0611109733581543 + ], + [ + -0.12059900909662247, + 2.0697262287139893 + ], + [ + -0.06402347981929779, + 2.061009407043457 + ], + [ + -0.006658658850938082, + 2.066558361053467 + ], + [ + 0.04372616112232208, + 2.0564284324645996 + ], + [ + 0.09109124541282654, + 2.055434465408325 + ], + [ + 0.13978062570095062, + 2.062476873397827 + ], + [ + 0.18395663797855377, + 2.052319049835205 + ], + [ + 0.23857423663139343, + 2.0404579639434814 + ], + [ + 0.2902390956878662, + 2.0209343433380127 + ], + [ + 0.33240655064582825, + 2.0196664333343506 + ], + [ + 0.3821125328540802, + 1.9971251487731934 + ], + [ + 0.4403720796108246, + 1.9875038862228394 + ], + [ + 0.4963839054107666, + 1.9691524505615234 + ], + [ + 0.5423737168312073, + 1.951072335243225 + ], + [ + 0.5951283574104309, + 1.937015414237976 + ], + [ + 0.6394990086555481, + 1.9203904867172241 + ], + [ + 0.6908435821533203, + 1.895341396331787 + ], + [ + 0.7330618500709534, + 1.8767473697662354 + ], + [ + 0.7980152368545532, + 1.8467694520950317 + ], + [ + 0.8402811288833618, + 1.8243736028671265 + ], + [ + 0.8826697468757629, + 1.7942339181900024 + ], + [ + 0.9364378452301025, + 1.7650766372680664 + ], + [ + 0.9841527342796326, + 1.7265326976776123 + ], + [ + 1.0287437438964844, + 1.7057452201843262 + ], + [ + 1.0701833963394165, + 1.6715261936187744 + ], + [ + 1.1161569356918335, + 1.6356277465820312 + ], + [ + 1.1603572368621826, + 1.5980077981948853 + ], + [ + 1.1955888271331787, + 1.5755720138549805 + ], + [ + 1.2521369457244873, + 1.5344982147216797 + ], + [ + 1.2802461385726929, + 1.4948784112930298 + ], + [ + 1.3325847387313843, + 1.4623594284057617 + ], + [ + 1.3686742782592773, + 1.4179400205612183 + ], + [ + 1.4065287113189697, + 1.375778317451477 + ], + [ + 1.4510926008224487, + 1.334742546081543 + ], + [ + 1.4791454076766968, + 1.287514090538025 + ], + [ + 1.5205434560775757, + 1.2445322275161743 + ], + [ + 1.5551702976226807, + 1.2056573629379272 + ], + [ + 1.587006688117981, + 1.1593759059906006 + ], + [ + 1.6270084381103516, + 1.1151074171066284 + ], + [ + 1.6513609886169434, + 1.0691781044006348 + ], + [ + 1.6853357553482056, + 1.016253113746643 + ], + [ + 1.7165212631225586, + 0.9726642966270447 + ], + [ + 1.7454206943511963, + 0.923740804195404 + ], + [ + 1.7726987600326538, + 0.8745564222335815 + ], + [ + 1.7968285083770752, + 0.8278589248657227 + ], + [ + 1.8236849308013916, + 0.7746590971946716 + ], + [ + 1.8461438417434692, + 0.7246137261390686 + ], + [ + 1.8695170879364014, + 0.6717315316200256 + ], + [ + 1.8906558752059937, + 0.6204254627227783 + ], + [ + 1.9142203330993652, + 0.5671297311782837 + ], + [ + 1.9325798749923706, + 0.513958752155304 + ], + [ + 1.9500938653945923, + 0.4578929543495178 + ], + [ + 1.964703917503357, + 0.40455761551856995 + ], + [ + 1.980220079421997, + 0.3496655225753784 + ], + [ + 1.9954888820648193, + 0.2929741144180298 + ], + [ + 2.006561279296875, + 0.2385748028755188 + ], + [ + 2.016836643218994, + 0.18232722580432892 + ], + [ + 2.0260651111602783, + 0.12720675766468048 + ], + [ + 2.031747341156006, + 0.07082538306713104 + ], + [ + 2.042339563369751, + 0.013518706895411015 + ], + [ + 2.0418286323547363, + -0.042875856161117554 + ], + [ + 2.047318935394287, + -0.09777381271123886 + ], + [ + 2.0481812953948975, + -0.15250666439533234 + ], + [ + 2.0471816062927246, + -0.2028331756591797 + ], + [ + 2.0443153381347656, + -0.25771844387054443 + ], + [ + 2.0435352325439453, + -0.3122040927410126 + ], + [ + 2.039417028427124, + -0.37047842144966125 + ], + [ + 2.040287971496582, + -0.42342519760131836 + ], + [ + 2.032681941986084, + -0.47848162055015564 + ], + [ + 2.025634288787842, + -0.5375373959541321 + ], + [ + 2.0147135257720947, + -0.5847360491752625 + ], + [ + 2.0121524333953857, + -0.6484998464584351 + ], + [ + 1.9932470321655273, + -0.6926149725914001 + ], + [ + 1.982198715209961, + -0.7509189248085022 + ], + [ + 1.9675726890563965, + -0.8081321120262146 + ], + [ + 1.9483129978179932, + -0.8586784601211548 + ], + [ + 1.937340259552002, + -0.9054781794548035 + ], + [ + 1.9161163568496704, + -0.9528237581253052 + ], + [ + 1.896592378616333, + -1.0090866088867188 + ], + [ + 1.8825697898864746, + -1.0583981275558472 + ], + [ + 1.8588669300079346, + -1.108545184135437 + ], + [ + 1.8425298929214478, + -1.158422589302063 + ], + [ + 1.8141615390777588, + -1.2035430669784546 + ], + [ + 1.7868070602416992, + -1.2556543350219727 + ], + [ + 1.7568771839141846, + -1.293493628501892 + ], + [ + 1.734115719795227, + -1.341096043586731 + ], + [ + 1.7056341171264648, + -1.3856717348098755 + ], + [ + 1.6662331819534302, + -1.4346776008605957 + ], + [ + 1.6382941007614136, + -1.4756830930709839 + ], + [ + 1.605541706085205, + -1.5158026218414307 + ], + [ + 1.5727931261062622, + -1.5604523420333862 + ], + [ + 1.5418733358383179, + -1.5989495515823364 + ], + [ + 1.5046370029449463, + -1.6373013257980347 + ], + [ + 1.4627655744552612, + -1.6475218534469604 + ], + [ + 1.4160569906234741, + -1.6870858669281006 + ], + [ + 1.3649190664291382, + -1.7200837135314941 + ], + [ + 1.3356900215148926, + -1.752590537071228 + ], + [ + 1.3006995916366577, + -1.7860100269317627 + ], + [ + 1.2521007061004639, + -1.8153226375579834 + ], + [ + 1.2127084732055664, + -1.8491519689559937 + ], + [ + 1.1695561408996582, + -1.8780659437179565 + ], + [ + 1.1260894536972046, + -1.8991636037826538 + ], + [ + 1.0812761783599854, + -1.9350874423980713 + ], + [ + 1.0118917226791382, + -1.9002642631530762 + ], + [ + 0.9535278081893921, + -1.9175820350646973 + ], + [ + 0.912358283996582, + -1.9427766799926758 + ], + [ + 0.8718228936195374, + -1.961212396621704 + ], + [ + 0.8261508941650391, + -2.015604257583618 + ], + [ + 0.7900270819664001, + -2.045496940612793 + ], + [ + 0.7516372799873352, + -2.0903289318084717 + ], + [ + 0.70807945728302, + -2.1267032623291016 + ], + [ + 0.6492659449577332, + -2.1718122959136963 + ], + [ + 0.58734130859375, + -2.211627244949341 + ], + [ + 0.5076678991317749, + -2.1773264408111572 + ], + [ + 0.4259823262691498, + -2.1837453842163086 + ], + [ + 0.3263620436191559, + -2.1657254695892334 + ], + [ + 0.19341742992401123, + -2.143484354019165 + ], + [ + 0.06282500177621841, + -2.086060047149658 + ], + [ + -0.13115249574184418, + -1.9655487537384033 + ], + [ + -0.29092392325401306, + -1.842512607574463 + ], + [ + -0.4161047339439392, + -1.6967500448226929 + ], + [ + -0.4997539520263672, + -1.6064453125 + ], + [ + -0.5395010709762573, + -1.5795016288757324 + ], + [ + -0.5562373399734497, + -1.5961891412734985 + ], + [ + -0.6035471558570862, + -1.9270379543304443 + ], + [ + -0.6278324127197266, + -1.9756180047988892 + ], + [ + -0.6644409894943237, + -1.9790871143341064 + ], + [ + -0.6781140565872192, + -1.9451930522918701 + ], + [ + -0.6735978722572327, + -1.8834408521652222 + ], + [ + -0.6617145538330078, + -1.7849400043487549 + ], + [ + -0.6500927805900574, + -1.698134183883667 + ], + [ + -0.6127457618713379, + -1.61251962184906 + ], + [ + -0.5696239471435547, + -1.5257824659347534 + ], + [ + -0.5336162447929382, + -1.4700247049331665 + ], + [ + -0.4936690628528595, + -1.436972975730896 + ], + [ + -0.5778018832206726, + -1.5260932445526123 + ], + [ + -0.5414689183235168, + -1.465340495109558 + ], + [ + -0.5314018130302429, + -1.4424415826797485 + ], + [ + -0.49331218004226685, + -1.437474012374878 + ], + [ + -0.5015113949775696, + -1.473227620124817 + ], + [ + -0.5637298822402954, + -1.5799401998519897 + ], + [ + -0.6889797449111938, + -1.7664276361465454 + ], + [ + -0.8660627603530884, + -1.9388573169708252 + ], + [ + -1.005185604095459, + -2.0941102504730225 + ], + [ + -1.129868507385254, + -2.1753957271575928 + ], + [ + -1.230324149131775, + -2.1754348278045654 + ], + [ + -1.3064273595809937, + -2.1445834636688232 + ], + [ + -1.3199691772460938, + -2.113675594329834 + ], + [ + -1.3952053785324097, + -2.083737850189209 + ], + [ + -1.4728262424468994, + -2.0444436073303223 + ], + [ + -1.5307731628417969, + -1.992955207824707 + ], + [ + -1.6029467582702637, + -1.9329040050506592 + ], + [ + -1.6564549207687378, + -1.857965111732483 + ], + [ + -1.6908602714538574, + -1.7758569717407227 + ], + [ + -1.724656343460083, + -1.680925726890564 + ], + [ + -1.735837459564209, + -1.5929746627807617 + ], + [ + -1.7504152059555054, + -1.5329922437667847 + ], + [ + -1.770708441734314, + -1.4841829538345337 + ], + [ + -1.7995060682296753, + -1.4670037031173706 + ], + [ + -1.8845102787017822, + -1.4611225128173828 + ], + [ + -1.9328784942626953, + -1.4565922021865845 + ], + [ + -1.9941757917404175, + -1.4586613178253174 + ], + [ + -2.061934471130371, + -1.4738255739212036 + ], + [ + -2.138526201248169, + -1.4830354452133179 + ], + [ + -2.2242743968963623, + -1.484837293624878 + ], + [ + -2.296983242034912, + -1.4773999452590942 + ], + [ + -2.372288465499878, + -1.4461804628372192 + ], + [ + -2.435014247894287, + -1.4093635082244873 + ], + [ + -2.499687433242798, + -1.3588062524795532 + ], + [ + -2.5517520904541016, + -1.2954427003860474 + ], + [ + -2.599118709564209, + -1.228668451309204 + ], + [ + -2.651815176010132, + -1.1732088327407837 + ], + [ + -2.7008397579193115, + -1.106345772743225 + ], + [ + -2.7433531284332275, + -1.040196180343628 + ], + [ + -2.7786660194396973, + -0.9647761583328247 + ], + [ + -2.8164608478546143, + -0.89781653881073 + ], + [ + -2.8400418758392334, + -0.826678454875946 + ], + [ + -2.8683366775512695, + -0.7503847479820251 + ], + [ + -2.885441303253174, + -0.6802036762237549 + ], + [ + -2.8987936973571777, + -0.6036429405212402 + ], + [ + -2.904998302459717, + -0.5314478278160095 + ], + [ + -2.9143917560577393, + -0.4602030813694 + ], + [ + -2.9160544872283936, + -0.3813187777996063 + ], + [ + -2.9160401821136475, + -0.30927878618240356 + ], + [ + -3.014133930206299, + -0.2222793847322464 + ], + [ + -3.0255303382873535, + -0.14988365769386292 + ], + [ + -3.0319533348083496, + -0.07200662046670914 + ], + [ + -3.034043788909912, + 0.008355392143130302 + ], + [ + -3.032017469406128, + 0.08308340609073639 + ], + [ + -3.0296006202697754, + 0.16095487773418427 + ], + [ + -3.022428274154663, + 0.2373012751340866 + ], + [ + -3.019695997238159, + 0.30473974347114563 + ], + [ + -3.009525775909424, + 0.38272491097450256 + ], + [ + -2.993626117706299, + 0.4595666527748108 + ], + [ + -2.981994867324829, + 0.5303322076797485 + ], + [ + -2.96045184135437, + 0.6011537313461304 + ], + [ + -2.9474692344665527, + 0.6776984333992004 + ], + [ + -2.9779059886932373, + 0.7789232730865479 + ], + [ + -2.9486522674560547, + 0.8522771596908569 + ], + [ + -2.9360320568084717, + 0.9247283935546875 + ], + [ + -2.9167423248291016, + 0.992242693901062 + ], + [ + -2.8961663246154785, + 1.0586509704589844 + ], + [ + -2.8682777881622314, + 1.1300806999206543 + ], + [ + -2.8432371616363525, + 1.2063385248184204 + ], + [ + -2.8250339031219482, + 1.2779128551483154 + ], + [ + -2.799100160598755, + 1.3596545457839966 + ], + [ + -2.753608465194702, + 1.4337559938430786 + ], + [ + -2.712364435195923, + 1.5162193775177002 + ], + [ + -2.657693386077881, + 1.5890040397644043 + ], + [ + -2.5834903717041016, + 1.6459919214248657 + ], + [ + -2.512814521789551, + 1.6929512023925781 + ], + [ + -2.471365213394165, + 1.755268931388855 + ], + [ + -2.4185986518859863, + 1.7867653369903564 + ], + [ + -2.3805675506591797, + 1.8241887092590332 + ], + [ + -2.333798885345459, + 1.8471028804779053 + ], + [ + -2.2910096645355225, + 1.8996329307556152 + ], + [ + -2.245710611343384, + 1.935479998588562 + ], + [ + -2.2034597396850586, + 1.9667253494262695 + ], + [ + -2.1615331172943115, + 2.009481906890869 + ], + [ + -2.1067492961883545, + 2.0526602268218994 + ], + [ + -2.057168483734131, + 2.0920968055725098 + ], + [ + -2.009150743484497, + 2.1352593898773193 + ], + [ + -1.9501385688781738, + 2.157172679901123 + ], + [ + -1.891403079032898, + 2.194749355316162 + ], + [ + -1.8468751907348633, + 2.239149808883667 + ], + [ + -1.7779206037521362, + 2.283015489578247 + ], + [ + -1.726028561592102, + 2.2995553016662598 + ], + [ + -1.6845428943634033, + 2.3230643272399902 + ], + [ + -1.6093631982803345, + 2.336301803588867 + ], + [ + -1.5734806060791016, + 2.366074323654175 + ], + [ + -1.5028072595596313, + 2.3711414337158203 + ], + [ + -1.4407134056091309, + 2.3993759155273438 + ], + [ + -1.3894600868225098, + 2.4183011054992676 + ], + [ + -1.3492003679275513, + 2.4179062843322754 + ], + [ + -1.2773021459579468, + 2.4431374073028564 + ], + [ + -1.2306805849075317, + 2.4600400924682617 + ], + [ + -1.1686859130859375, + 2.465120553970337 + ], + [ + -1.1098145246505737, + 2.4707601070404053 + ], + [ + -1.0503175258636475, + 2.495852470397949 + ], + [ + -0.992815375328064, + 2.4977622032165527 + ], + [ + -0.9282429814338684, + 2.5140061378479004 + ], + [ + -0.8755359649658203, + 2.5103487968444824 + ], + [ + -0.8257607221603394, + 2.5233724117279053 + ], + [ + -0.7781040072441101, + 2.5235705375671387 + ], + [ + -0.718024492263794, + 2.515141010284424 + ], + [ + -0.6701514720916748, + 2.522469997406006 + ], + [ + -0.6283256411552429, + 2.535329818725586 + ], + [ + -0.5807893872261047, + 2.5152440071105957 + ], + [ + -0.5266401767730713, + 2.5385336875915527 + ], + [ + -0.46960335969924927, + 2.512422800064087 + ], + [ + -0.4402403235435486, + 2.519559860229492 + ], + [ + -0.38434693217277527, + 2.533888816833496 + ], + [ + -0.3341313302516937, + 2.522469997406006 + ], + [ + -0.30331677198410034, + 2.5230391025543213 + ], + [ + -0.25844258069992065, + 2.5327470302581787 + ], + [ + -0.21236637234687805, + 2.5348238945007324 + ], + [ + -0.1511351317167282, + 2.531519651412964 + ], + [ + -0.09311021864414215, + 2.541757345199585 + ], + [ + -0.02478034794330597, + 2.549605369567871 + ], + [ + 0.004652024246752262, + 2.5757806301116943 + ], + [ + 0.07611851394176483, + 2.5483345985412598 + ], + [ + 0.12316085398197174, + 2.5704877376556396 + ], + [ + 0.17619521915912628, + 2.538695812225342 + ], + [ + 0.24979910254478455, + 2.5459959506988525 + ], + [ + 0.2888847887516022, + 2.542450428009033 + ], + [ + 0.3644310235977173, + 2.531355619430542 + ], + [ + 0.4008951485157013, + 2.5386900901794434 + ], + [ + 0.47889718413352966, + 2.4966580867767334 + ], + [ + 0.5320435762405396, + 2.4970545768737793 + ], + [ + 0.6034441590309143, + 2.503403425216675 + ], + [ + 0.6679888963699341, + 2.4816479682922363 + ], + [ + 0.7131733894348145, + 2.452549695968628 + ], + [ + 0.8080291748046875, + 2.44242262840271 + ], + [ + 0.8543142676353455, + 2.4473910331726074 + ], + [ + 0.9138693809509277, + 2.404317617416382 + ], + [ + 0.9808793663978577, + 2.363959312438965 + ], + [ + 1.05167555809021, + 2.346146821975708 + ], + [ + 1.1056253910064697, + 2.3316266536712646 + ], + [ + 1.1537197828292847, + 2.299647569656372 + ], + [ + 1.2285205125808716, + 2.271240711212158 + ], + [ + 1.297705054283142, + 2.235638380050659 + ], + [ + 1.3547955751419067, + 2.202505588531494 + ], + [ + 1.4222121238708496, + 2.157590389251709 + ], + [ + 1.464374303817749, + 2.12394642829895 + ], + [ + 1.5187848806381226, + 2.0988521575927734 + ], + [ + 1.5990430116653442, + 2.0641376972198486 + ], + [ + 1.6539355516433716, + 2.023745536804199 + ], + [ + 1.7008119821548462, + 1.9838838577270508 + ], + [ + 1.7761355638504028, + 1.9346710443496704 + ], + [ + 1.8335834741592407, + 1.8883376121520996 + ], + [ + 1.8891854286193848, + 1.8449677228927612 + ], + [ + 1.939863920211792, + 1.8047107458114624 + ], + [ + 1.9964779615402222, + 1.7525012493133545 + ], + [ + 2.0504682064056396, + 1.698355793952942 + ], + [ + 2.108424186706543, + 1.646470069885254 + ], + [ + 2.145421028137207, + 1.594067931175232 + ], + [ + 2.2001733779907227, + 1.5521998405456543 + ], + [ + 2.2504074573516846, + 1.4909181594848633 + ], + [ + 2.298129081726074, + 1.4289121627807617 + ], + [ + 2.353762626647949, + 1.3800536394119263 + ], + [ + 2.410667896270752, + 1.3264979124069214 + ], + [ + 2.4450533390045166, + 1.2679641246795654 + ], + [ + 2.48217511177063, + 1.1937446594238281 + ], + [ + 2.538017988204956, + 1.1399486064910889 + ], + [ + 2.5806884765625, + 1.0680643320083618 + ], + [ + 2.6243205070495605, + 0.9991070032119751 + ], + [ + 2.6654179096221924, + 0.9311591982841492 + ], + [ + 2.700122833251953, + 0.8676578402519226 + ], + [ + 2.7311599254608154, + 0.7994180917739868 + ], + [ + 2.7681005001068115, + 0.7247393727302551 + ], + [ + 2.8055789470672607, + 0.654347836971283 + ], + [ + 2.8355729579925537, + 0.5792958736419678 + ], + [ + 2.8655507564544678, + 0.5030249953269958 + ], + [ + 2.892328977584839, + 0.4230291545391083 + ], + [ + 2.9242031574249268, + 0.3397740423679352 + ], + [ + 2.9546523094177246, + 0.2527519464492798 + ], + [ + 2.974015951156616, + 0.1680860072374344 + ], + [ + 3.0043351650238037, + 0.08119115233421326 + ], + [ + 3.0296666622161865, + -0.018470562994480133 + ], + [ + 3.0517539978027344, + -0.09997892379760742 + ], + [ + 3.049988031387329, + -0.17885956168174744 + ], + [ + 3.0688984394073486, + -0.265476793050766 + ], + [ + 3.0729730129241943, + -0.35872748494148254 + ], + [ + 3.0826539993286133, + -0.45728248357772827 + ], + [ + 3.087244749069214, + -0.5418731570243835 + ], + [ + 3.0960679054260254, + -0.6458765864372253 + ], + [ + 3.1004350185394287, + -0.7467633485794067 + ], + [ + 3.103656768798828, + -0.8473579287528992 + ], + [ + 3.083415985107422, + -0.948530375957489 + ], + [ + 3.0816450119018555, + -1.0542892217636108 + ], + [ + 3.085540533065796, + -1.1559743881225586 + ], + [ + 3.0867080688476562, + -1.264012098312378 + ], + [ + 3.0863823890686035, + -1.3732608556747437 + ], + [ + 3.0104291439056396, + -1.4691309928894043 + ], + [ + 2.9835236072540283, + -1.5644780397415161 + ], + [ + 2.9637668132781982, + -1.6834464073181152 + ], + [ + 2.921919107437134, + -1.7772095203399658 + ], + [ + 2.883415460586548, + -1.8883017301559448 + ], + [ + 2.839106559753418, + -1.9926586151123047 + ], + [ + 2.7994556427001953, + -2.1168372631073 + ], + [ + 2.739821672439575, + -2.2150394916534424 + ], + [ + 2.670450448989868, + -2.3428125381469727 + ], + [ + 2.624347448348999, + -2.4415619373321533 + ], + [ + 2.5409440994262695, + -2.5669381618499756 + ], + [ + 2.447296142578125, + -2.6467409133911133 + ], + [ + 2.344093084335327, + -2.7767810821533203 + ], + [ + 2.2608399391174316, + -2.8609535694122314 + ], + [ + 2.163165807723999, + -2.9233157634735107 + ], + [ + 2.097046375274658, + -3.0158705711364746 + ], + [ + 1.97257661819458, + -3.1243748664855957 + ], + [ + 1.846123456954956, + -3.2403388023376465 + ], + [ + 1.7235485315322876, + -3.2822885513305664 + ], + [ + 1.6022957563400269, + -3.373460292816162 + ], + [ + 1.480346918106079, + -3.4550833702087402 + ], + [ + 1.327256441116333, + -3.507237434387207 + ], + [ + 1.1469225883483887, + -3.5654423236846924 + ], + [ + 0.9656786322593689, + -3.565605401992798 + ], + [ + 0.7936630249023438, + -3.6408016681671143 + ], + [ + 0.6013606190681458, + -3.6205270290374756 + ], + [ + 0.38317179679870605, + -3.641388177871704 + ], + [ + 0.42081883549690247, + -3.680149555206299 + ], + [ + 0.2960982620716095, + -3.7941951751708984 + ], + [ + 0.16363447904586792, + -3.851482629776001 + ], + [ + 0.016586100682616234, + -3.8719606399536133 + ], + [ + -0.17768867313861847, + -3.9224138259887695 + ], + [ + -0.3070555031299591, + -3.9718053340911865 + ], + [ + -0.4421673119068146, + -4.025603771209717 + ], + [ + -0.6372238397598267, + -3.9522628784179688 + ], + [ + -0.800797700881958, + -3.940406322479248 + ], + [ + -1.010321855545044, + -3.8857979774475098 + ], + [ + -1.1793673038482666, + -3.824997901916504 + ], + [ + -1.3402009010314941, + -3.745770215988159 + ], + [ + -1.5571541786193848, + -3.6375067234039307 + ], + [ + -3.2587201595306396, + -7.0783467292785645 + ], + [ + -3.217923879623413, + -7.506102561950684 + ], + [ + -3.586113452911377, + -7.5273942947387695 + ], + [ + -3.8986096382141113, + -7.558767318725586 + ], + [ + -4.2148613929748535, + -7.4695658683776855 + ], + [ + -4.4913859367370605, + -7.475625514984131 + ], + [ + -4.818096160888672, + -7.343639373779297 + ], + [ + -5.120263576507568, + -7.19155740737915 + ], + [ + -5.465209484100342, + -7.054903030395508 + ], + [ + -5.744510173797607, + -6.830625534057617 + ], + [ + -6.011559009552002, + -6.622929096221924 + ], + [ + -6.307190895080566, + -6.334005355834961 + ], + [ + -6.474546432495117, + -6.047586441040039 + ], + [ + -6.6832170486450195, + -5.67002534866333 + ], + [ + -6.871180534362793, + -5.330004692077637 + ], + [ + -7.2260894775390625, + -5.75900411605835 + ], + [ + -7.5362629890441895, + -5.58389139175415 + ], + [ + -7.778262138366699, + -5.385204315185547 + ], + [ + -8.0059814453125, + -5.179511070251465 + ], + [ + -8.189661979675293, + -4.907506465911865 + ], + [ + -8.389363288879395, + -4.582245826721191 + ], + [ + -8.529106140136719, + -4.3390889167785645 + ], + [ + -8.70797061920166, + -4.0870490074157715 + ], + [ + -8.817471504211426, + -3.7913756370544434 + ], + [ + -8.929003715515137, + -3.496785879135132 + ], + [ + -9.052221298217773, + -3.2037224769592285 + ], + [ + -9.147464752197266, + -2.946242570877075 + ], + [ + -9.210366249084473, + -2.6706254482269287 + ], + [ + -9.232288360595703, + -2.371818780899048 + ], + [ + -9.248930931091309, + -2.0634751319885254 + ], + [ + -9.21683120727539, + -1.7474071979522705 + ], + [ + -9.589516639709473, + -1.5317386388778687 + ], + [ + -9.601168632507324, + -1.2711156606674194 + ], + [ + -9.64538288116455, + -0.9829033613204956 + ], + [ + -9.6473388671875, + -0.7275633215904236 + ], + [ + -9.669573783874512, + -0.45115435123443604 + ], + [ + -9.668879508972168, + -0.20274199545383453 + ], + [ + -9.678165435791016, + 0.0385093055665493 + ], + [ + -9.687119483947754, + 0.2958582937717438 + ], + [ + -9.67812728881836, + 0.558168351650238 + ], + [ + -9.652984619140625, + 0.7992923855781555 + ], + [ + -9.586408615112305, + 1.03945791721344 + ], + [ + -9.588035583496094, + 1.2987393140792847 + ], + [ + -9.5113525390625, + 1.5567079782485962 + ], + [ + -9.508760452270508, + 1.7755874395370483 + ], + [ + -9.447062492370605, + 2.0408477783203125 + ] + ], + "total_points": 1000 +} \ No newline at end of file diff --git a/vna_system/web_ui/static/css/layout.css b/vna_system/web_ui/static/css/layout.css index 8ede981..fe90a0b 100644 --- a/vna_system/web_ui/static/css/layout.css +++ b/vna_system/web_ui/static/css/layout.css @@ -38,6 +38,7 @@ body { display: flex; align-items: center; gap: var(--space-3); + flex-wrap: wrap; } .header__icon { @@ -52,12 +53,57 @@ body { color: var(--text-primary); } -.header__subtitle { - font-size: var(--font-size-sm); - color: var(--text-tertiary); - padding: var(--space-1) var(--space-2); +.header__summary { + display: flex; + align-items: center; + gap: var(--space-3); + padding: var(--space-2) var(--space-4); background-color: var(--bg-tertiary); - border-radius: var(--radius-default); + border: 1px solid var(--border-primary); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); +} + +.header-summary__item { + display: flex; + flex-direction: column; + gap: var(--space-1); +} + +.header-summary__label { + font-size: var(--font-size-xs); + color: var(--text-tertiary); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.header-summary__value { + font-size: var(--font-size-sm); + color: var(--text-primary); + font-family: var(--font-mono); +} + +.header-summary__divider { + width: 1px; + height: 32px; + background-color: var(--border-primary); +} + +@media (max-width: 768px) { + .header__summary { + width: 100%; + justify-content: space-between; + flex-wrap: wrap; + row-gap: var(--space-2); + } + + .header-summary__divider { + display: none; + } + + .header-summary__item { + flex: 1 1 45%; + } } .header__status { @@ -374,4 +420,4 @@ body { grid-template-columns: 1fr; gap: var(--space-4); } -} \ No newline at end of file +} diff --git a/vna_system/web_ui/static/css/settings.css b/vna_system/web_ui/static/css/settings.css index 9cad7d4..1a23524 100644 --- a/vna_system/web_ui/static/css/settings.css +++ b/vna_system/web_ui/static/css/settings.css @@ -131,40 +131,43 @@ align-items: stretch; } -.preset-dropdown, -.calibration-dropdown { +:is(.settings-select, .preset-dropdown, .calibration-dropdown, .reference-dropdown) { flex: 1; + min-width: 220px; padding: var(--space-3) var(--space-4); + padding-right: var(--space-10); background: var(--bg-primary); border: 1px solid var(--border-primary); border-radius: var(--radius-lg); color: var(--text-primary); font-size: var(--font-size-sm); - min-height: 3rem; font-weight: var(--font-weight-medium); transition: all var(--transition-fast); box-shadow: var(--shadow-sm); + appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' stroke-width='1.5' stroke='%2394a3b8' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right var(--space-4) center; + background-size: 14px 14px; } -.preset-dropdown:focus, -.calibration-dropdown:focus { +:is(.settings-select, .preset-dropdown, .calibration-dropdown, .reference-dropdown):focus { outline: none; border-color: var(--color-primary-500); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); background: var(--bg-surface); } -.preset-dropdown:hover, -.calibration-dropdown:hover { +:is(.settings-select, .preset-dropdown, .calibration-dropdown, .reference-dropdown):hover:not(:disabled) { border-color: var(--color-primary-500); transform: translateY(-1px); box-shadow: var(--shadow-md); } -.preset-dropdown:disabled, -.calibration-dropdown:disabled { +:is(.settings-select, .preset-dropdown, .calibration-dropdown, .reference-dropdown):disabled { opacity: 0.6; cursor: not-allowed; + transform: none; } .preset-info { @@ -301,14 +304,18 @@ } /* Calibration Actions */ -.calibration-actions { +:is(.settings-action-group, .calibration-actions, .reference-actions) { display: flex; gap: var(--space-3); align-items: stretch; + flex-wrap: wrap; +} + +.calibration-actions { margin-top: var(--space-4); } -.calibration-name-input { +:is(.settings-input, .calibration-name-input, .reference-name-input, .reference-description-input) { flex: 1; padding: var(--space-3) var(--space-4); background: var(--bg-primary); @@ -316,30 +323,33 @@ border-radius: var(--radius-lg); color: var(--text-primary); font-size: var(--font-size-sm); - min-height: 2.5rem; + min-height: 2.75rem; transition: all var(--transition-fast); + box-shadow: var(--shadow-sm); } -.calibration-name-input:focus { +:is(.settings-input, .calibration-name-input, .reference-name-input, .reference-description-input):focus { outline: none; border-color: var(--color-primary-500); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } -.calibration-name-input:disabled { +:is(.settings-input, .calibration-name-input, .reference-name-input, .reference-description-input):disabled { opacity: 0.6; cursor: not-allowed; } -.calibration-name-input::placeholder { +:is(.settings-input, .calibration-name-input, .reference-name-input, .reference-description-input)::placeholder { color: var(--text-tertiary); } /* Existing Calibrations */ -.existing-calibrations { +.existing-calibrations, +.existing-references { display: flex; gap: var(--space-3); align-items: stretch; + flex-wrap: wrap; } /* Status Grid */ @@ -390,7 +400,8 @@ flex-direction: column; } - .existing-calibrations { + .existing-calibrations, + .existing-references { flex-direction: column; } @@ -503,53 +514,8 @@ margin-bottom: var(--space-4); } -.reference-name-input, -.reference-description-input { - padding: var(--space-2) var(--space-3); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - font-size: var(--text-sm); - background: var(--color-bg); - color: var(--color-text); - transition: all 0.2s ease; -} - -.reference-name-input:focus, -.reference-description-input:focus { - outline: none; - border-color: var(--color-primary-500); - box-shadow: 0 0 0 3px var(--color-primary-100); -} - -.reference-name-input::placeholder, -.reference-description-input::placeholder { - color: var(--color-text-secondary); -} - -/* Reference Actions */ .reference-actions { - display: flex; - gap: var(--space-3); - align-items: stretch; margin-top: var(--space-3); - flex-wrap: wrap; -} - -.reference-dropdown { - flex: 1; - min-width: 200px; - padding: var(--space-2) var(--space-3); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - font-size: var(--text-sm); - background: var(--color-bg); - color: var(--color-text); -} - -.reference-dropdown:disabled { - opacity: 0.6; - cursor: not-allowed; - background: var(--color-gray-50); } /* Current Reference Info */ @@ -623,4 +589,4 @@ .reference-dropdown { min-width: unset; } -} \ No newline at end of file +} diff --git a/vna_system/web_ui/static/js/modules/settings.js b/vna_system/web_ui/static/js/modules/settings.js index e5c0218..31cbcf1 100644 --- a/vna_system/web_ui/static/js/modules/settings.js +++ b/vna_system/web_ui/static/js/modules/settings.js @@ -26,6 +26,7 @@ export class SettingsManager { this.isInitialized = false; this.elements = {}; + this.headerElements = {}; this.debouncer = new Debouncer(); // Sub-managers @@ -99,6 +100,12 @@ export class SettingsManager { calibrationCount: document.getElementById('calibrationCount'), systemStatus: document.getElementById('systemStatus') }; + + this.headerElements = { + preset: document.getElementById('headerPresetSummary'), + calibration: document.getElementById('headerCalibrationSummary'), + reference: document.getElementById('headerReferenceSummary') + }; } initSubManagers() { @@ -109,10 +116,9 @@ export class SettingsManager { // Setup callbacks this.presetManager.onPresetChanged = async () => { await this.loadStatus(); - const preset = this.presetManager.getCurrentPreset(); - this.calibrationManager.setCurrentPreset(preset); this.calibrationManager.reset(); - this.referenceManager.setCurrentPreset(preset); + await this.calibrationManager.loadWorkingCalibration(); + this.updateReferenceSummary(this.referenceManager.getCurrentReference()); }; this.calibrationManager.onCalibrationSaved = async () => { @@ -122,6 +128,10 @@ export class SettingsManager { this.calibrationManager.onCalibrationSet = async () => { await this.loadStatus(); }; + + this.referenceManager.onReferenceUpdated = (reference) => { + this.updateReferenceSummary(reference); + }; } setupEventHandlers() { @@ -130,12 +140,9 @@ export class SettingsManager { } async loadInitialData() { - await Promise.all([ - this.presetManager.loadPresets(), - this.loadStatus(), - this.calibrationManager.loadWorkingCalibration(), - this.referenceManager.loadReferences() - ]); + await this.presetManager.loadPresets(); + await this.loadStatus(); + await this.calibrationManager.loadWorkingCalibration(); } async loadStatus() { @@ -158,6 +165,9 @@ export class SettingsManager { this.elements.presetCount.textContent = status.available_presets || 0; this.elements.calibrationCount.textContent = status.available_calibrations || 0; this.elements.systemStatus.textContent = 'Ready'; + + this.updateHeaderSummary(status); + this.updateReferenceSummary(this.referenceManager.getCurrentReference()); } async handleViewPlots() { @@ -475,6 +485,108 @@ export class SettingsManager { console.log('Settings Manager destroyed'); } + formatFrequency(value) { + if (value === null || value === undefined) return null; + const numeric = Number(value); + if (!Number.isFinite(numeric)) return null; + const abs = Math.abs(numeric); + const units = [ + { divider: 1e9, suffix: 'GHz' }, + { divider: 1e6, suffix: 'MHz' }, + { divider: 1e3, suffix: 'kHz' } + ]; + + for (const unit of units) { + if (abs >= unit.divider) { + const scaled = numeric / unit.divider; + const formatted = scaled >= 10 ? scaled.toFixed(0) : scaled.toFixed(2); + return `${formatted} ${unit.suffix}`; + } + } + + return `${numeric.toFixed(0)} Hz`; + } + + formatPresetSummary(preset) { + if (!preset) return 'Not selected'; + + const parts = []; + if (preset.mode) { + parts.push(preset.mode.toUpperCase()); + } + + const start = this.formatFrequency(preset.start_freq); + const stop = this.formatFrequency(preset.stop_freq); + if (start && stop) { + parts.push(`${start} – ${stop}`); + } else if (start || stop) { + parts.push(start || stop); + } + + if (preset.points) { + parts.push(`${preset.points} pts`); + } + + if (preset.bandwidth) { + const bw = this.formatFrequency(preset.bandwidth); + if (bw) parts.push(`BW ${bw}`); + } + + return parts.join(' • ') || 'Preset configured'; + } + + formatCalibrationSummary(status) { + const active = status?.current_calibration; + if (active?.calibration_name) { + return `Active • ${active.calibration_name}`; + } + + const working = status?.working_calibration; + if (working?.progress) { + const missingCount = working.missing_standards?.length || 0; + const missingText = missingCount ? ` • ${missingCount} missing` : ''; + return `In progress • ${working.progress}${missingText}`; + } + + return 'Not set'; + } + + updateHeaderSummary(status) { + if (!this.headerElements) return; + const { preset, calibration } = this.headerElements; + if (preset) { + preset.textContent = this.formatPresetSummary(status?.current_preset); + } + if (calibration) { + calibration.textContent = this.formatCalibrationSummary(status); + } + } + + updateReferenceSummary(reference) { + const target = this.headerElements?.reference; + if (!target) return; + + if (!reference) { + target.textContent = 'Not captured'; + return; + } + + const name = reference.name || 'Reference'; + let timestampText = ''; + if (reference.timestamp) { + const timestamp = new Date(reference.timestamp); + if (!Number.isNaN(timestamp.getTime())) { + timestampText = timestamp.toLocaleString(undefined, { dateStyle: 'short', timeStyle: 'short' }); + } + } + + const summaryParts = ['Active', name]; + if (timestampText) { + summaryParts.push(timestampText); + } + target.textContent = summaryParts.join(' • '); + } + notify(type, title, message) { this.notifications?.show?.({ type, title, message }); } diff --git a/vna_system/web_ui/static/js/modules/settings/preset-manager.js b/vna_system/web_ui/static/js/modules/settings/preset-manager.js index 5646888..aafdd9b 100644 --- a/vna_system/web_ui/static/js/modules/settings/preset-manager.js +++ b/vna_system/web_ui/static/js/modules/settings/preset-manager.js @@ -5,7 +5,9 @@ import { Debouncer, RequestGuard, ButtonState } from '../utils.js'; import { apiGet, apiPost } from '../api-client.js'; -import { API, TIMING } from '../constants.js'; +import { API, TIMING, NOTIFICATION_TYPES } from '../constants.js'; + +const { SUCCESS, ERROR } = NOTIFICATION_TYPES; export class PresetManager { constructor(notifications) { @@ -36,7 +38,7 @@ export class PresetManager { this.populateDropdown(presets); } catch (e) { console.error('Presets load failed:', e); - this.notify('error', 'Load Error', 'Failed to load configuration presets'); + this.notify(ERROR, 'Load Error', 'Failed to load configuration presets'); } } @@ -47,7 +49,9 @@ export class PresetManager { if (!presets.length) { dd.innerHTML = ''; dd.disabled = true; - this.elements.setPresetBtn.disabled = true; + if (this.elements.setPresetBtn) { + this.elements.setPresetBtn.disabled = true; + } return; } @@ -60,7 +64,7 @@ export class PresetManager { }); dd.disabled = false; - this.elements.setPresetBtn.disabled = true; + this.syncSelectedPreset(); } formatDisplay(p) { @@ -75,8 +79,7 @@ export class PresetManager { } handlePresetChange() { - const v = this.elements.presetDropdown.value; - this.elements.setPresetBtn.disabled = !v; + this.updateSetButtonState(); } async handleSetPreset() { @@ -90,17 +93,19 @@ export class PresetManager { const result = await apiPost(API.SETTINGS.PRESET_SET, { filename }); - this.notify('success', 'Preset Set', result.message); + this.notify(SUCCESS, 'Preset Set', result.message); this.currentPreset = { filename }; if (this.onPresetChanged) { await this.onPresetChanged(); } + this.syncSelectedPreset(); } catch (e) { console.error('Set preset failed:', e); - this.notify('error', 'Preset Error', 'Failed to set configuration preset'); + this.notify(ERROR, 'Preset Error', 'Failed to set configuration preset'); } finally { ButtonState.set(this.elements.setPresetBtn, { state: 'normal', icon: 'check', text: 'Set Active' }); + this.updateSetButtonState(); } }), TIMING.DEBOUNCE_PRESET ); @@ -114,13 +119,40 @@ export class PresetManager { this.currentPreset = null; this.elements.currentPreset.textContent = 'None'; } + this.syncSelectedPreset(); } getCurrentPreset() { return this.currentPreset; } + syncSelectedPreset() { + const dd = this.elements.presetDropdown; + if (!dd) return; + + const active = this.currentPreset?.filename || ''; + if (active) { + const hasOption = Array.from(dd.options).some(opt => opt.value === active); + dd.value = hasOption ? active : ''; + } else { + dd.value = ''; + } + + this.updateSetButtonState(); + } + + updateSetButtonState() { + const dd = this.elements.presetDropdown; + const btn = this.elements.setPresetBtn; + if (!dd || !btn) return; + + const selected = dd.value; + const hasSelection = selected !== ''; + const isActive = this.currentPreset?.filename === selected; + btn.disabled = !hasSelection || isActive; + } + notify(type, title, message) { this.notifications?.show?.({ type, title, message }); } -} \ No newline at end of file +} diff --git a/vna_system/web_ui/static/js/modules/settings/reference-manager.js b/vna_system/web_ui/static/js/modules/settings/reference-manager.js index 14c9aba..975684e 100644 --- a/vna_system/web_ui/static/js/modules/settings/reference-manager.js +++ b/vna_system/web_ui/static/js/modules/settings/reference-manager.js @@ -18,6 +18,7 @@ export class ReferenceManager { this.elements = {}; this.debouncer = new Debouncer(); this.reqGuard = new RequestGuard(); + this.onReferenceUpdated = null; this.handleCreateReference = this.handleCreateReference.bind(this); this.handleReferenceChange = this.handleReferenceChange.bind(this); @@ -79,6 +80,10 @@ export class ReferenceManager { } } + getCurrentReference() { + return this.currentReference; + } + renderDropdown(references) { if (!this.elements.referenceDropdown) return; @@ -120,10 +125,16 @@ export class ReferenceManager { } updateInfo(reference) { - if (!this.elements.currentReferenceInfo) return; + this.currentReference = reference; + + if (!this.elements.currentReferenceInfo) { + this.onReferenceUpdated?.(reference || null); + return; + } if (!reference) { this.elements.currentReferenceInfo.style.display = 'none'; + this.onReferenceUpdated?.(null); return; } @@ -134,12 +145,17 @@ export class ReferenceManager { } if (this.elements.currentReferenceTimestamp) { - this.elements.currentReferenceTimestamp.textContent = new Date(reference.timestamp).toLocaleString(); + const timestamp = new Date(reference.timestamp); + this.elements.currentReferenceTimestamp.textContent = Number.isNaN(timestamp.getTime()) + ? '-' + : timestamp.toLocaleString(); } if (this.elements.currentReferenceDescription) { this.elements.currentReferenceDescription.textContent = reference.description || ''; } + + this.onReferenceUpdated?.(reference); } async handleCreateReference() { diff --git a/vna_system/web_ui/templates/index.html b/vna_system/web_ui/templates/index.html index 400c6cd..4f8a3ad 100644 --- a/vna_system/web_ui/templates/index.html +++ b/vna_system/web_ui/templates/index.html @@ -41,7 +41,22 @@

VNA System

- Real-time Analysis +
+
+ Preset + Not selected +
+ +
+ Calibration + Not set +
+ +
+ Reference + Not captured +
+
@@ -149,7 +164,7 @@
-
-
+
- +