gnss_qc/report/summary/
bias.rs

1use crate::prelude::QcContext;
2use maud::{html, Markup, Render};
3// use crate::report::tooltipped;
4// use rinex::prelude::{GroundPosition, TimeScale};
5
6pub struct QcBiasSummary {
7    iono_bias_cancelling: bool,
8    iono_bias_model_optimization: bool,
9    tropo_bias_model_optimization: bool,
10}
11
12impl QcBiasSummary {
13    pub fn new(context: &QcContext) -> Self {
14        Self {
15            iono_bias_cancelling: { context.is_cpp_navigation_compatible() },
16            iono_bias_model_optimization: context.iono_bias_model_optimization(),
17            tropo_bias_model_optimization: context.tropo_bias_model_optimization(),
18        }
19    }
20}
21
22impl Render for QcBiasSummary {
23    fn render(&self) -> Markup {
24        html! {
25            table class="table" {
26                tbody {
27                    tr {
28                        th {
29                            button aria-label="Troposphere bias cancelling" data-balloon-pos="up" {
30                                "Troposphere Bias"
31                            }
32                        }
33                        @if self.tropo_bias_model_optimization {
34                            td {
35                                span class="icon" style="color:green" {
36                                    i class="fa-solid fa-circle-check" {}
37                                }
38                                button aria-label="Troposphere bias model can be optimized.
39        Standard internal model is optimized with regional measurements" data-balloon-pos="up" {
40                                    "Model optimization"
41                                }
42                            }
43                        } @else {
44                            td {
45                                span class="icon" style="color:red" {
46                                    i class="fa-solid fa-circle-xmark" {}
47                                }
48                                button aria-label="Troposphere bias model cannot be optimized: missing Meteo IONEX.
49        Bias modelling will solely rely on internal standard models." data-balloon-pos="up" {
50                                    "Model optimization"
51                                }
52                            }
53                        }
54                    }
55                    tr {
56                        th {
57                            button aria-label="Ionosphere bias cancelling" data-balloon-pos="up" {
58                                "Ionosphere Bias"
59                            }
60                        }
61                        @if self.iono_bias_model_optimization {
62                            td {
63                                span class="icon" style="color:green" {
64                                    i class="fa-solid fa-circle-check" {}
65                                }
66                                button aria-label="Ionosphere bias model optimized by IONEX measurement/prediction.
67        This will not impact your solutions if direct cancellation is feasible." data-balloon-pos="up" {
68                                    "Model optimization"
69                                }
70                            }
71                        } @else {
72                            td {
73                                span class="icon" style="color:red" {
74                                    i class="fa-solid fa-circle-xmark" {}
75                                }
76                                button aria-label="Ionosphere bias model cannot be optimized: import a IONEX (special RINEX).
77        This will not impact your solutions if direct cancellation is feasible." data-balloon-pos="up" {
78                                    "Model optimization"
79                                }
80                            }
81                        }
82                        @if self.iono_bias_cancelling {
83                            td {
84                                span class="icon" style="color:green" {
85                                    i class="fa-solid fa-circle-check" {}
86                                }
87                                button aria-label="Direct IONOD cancellation by signal observation." data-balloon-pos="up" {
88                                    "Cancelling"
89                                }
90                            }
91                        } @else {
92                            td {
93                                span class="icon" style="color:red" {
94                                    i class="fa-solid fa-circle-xmark" {}
95                                }
96                                button aria-label="Direct IONOD cancellation is not feasible: missing secondary frequency." data-balloon-pos="up" {
97                                    "Cancelling"
98                                }
99                            }
100                        }
101                    }
102                }
103            }
104        }
105    }
106}