diff --git a/README.md b/README.md
index 389813a..75f4a30 100644
--- a/README.md
+++ b/README.md
@@ -131,6 +131,12 @@ The checkboxes determine which data is displayed.
signal-to-noise ratio. Rectangles will be darker grey when the
signal was low and the noise was high.
+ * "strict": Reduce the rendering to only cases where all pings were
+ dropped for the second (d=1) for obstructed, beta downtime, and no
+ satellites. This seems to be what the "Ping Success" plot at the
+ top of Starlink's own statistics view shows. This checkbox also
+ reduces the signal-to-noise ratio plot to only cases where snr=0.
+
## Results
The idea behind the viewer is that the beam between the dish and the
diff --git a/viewer/index.html b/viewer/index.html
index 96a2353..7d235c7 100644
--- a/viewer/index.html
+++ b/viewer/index.html
@@ -57,6 +57,7 @@
beta downtime
no satellites
signal-to-noise ratio
+ strict
diff --git a/viewer/viewer.js b/viewer/viewer.js
index 37fc21e..dbcbaa5 100644
--- a/viewer/viewer.js
+++ b/viewer/viewer.js
@@ -8,6 +8,7 @@ var display = {
"betadown": false,
"nosatellite": false,
"snr": false,
+ "strict": false
};
var lengthBox = document.getElementById("stripeLength")
@@ -95,6 +96,7 @@ attachCheckbox("obstructed");
attachCheckbox("betadown");
attachCheckbox("nosatellite");
attachCheckbox("snr");
+attachCheckbox("strict");
function attachButtons(prefix, actionFunc) {
var buttons = {
@@ -146,13 +148,16 @@ function plot() {
for (var i = offset; i < data.length; i++) {
var boxX = ((i-offset) % stripeLength) * boxWidth
var boxY = Math.floor((i-offset) / stripeLength) * boxHeight
- if (display["snr"] && data[i].n < 9) {
+ if (display["snr"] &&
+ ((!display["strict"] && data[i].n < 9) ||
+ (display["strict"] && data[i].n == 0))) {
viewer.append(makeBox(boxX, boxY, "#999999", 1-(data[i].n/9)));
}
if (((display["obstructed"] && data[i].o) ||
(display["nosatellite"] && !data[i].s) ||
(display["betadown"] && data[i].s && !data[i].o)) &&
- data[i].d < 1) {
+ ((!display["strict"] && data[i].d > 0) ||
+ (display["strict"] && data[i].d == 1))) {
var red = (data[i].o && display["obstructed"]) ? "ff" : "00"
var green = (!data[i].s && display["nosatellite"]) ? "ff" : "00"