Commit Graph

148 Commits

Author SHA1 Message Date
Ben Thorner
d2784d0d8a Rename "parents" methods to "ancestors"
Resolves: https://github.com/alphagov/notifications-admin/pull/3980#discussion_r694002952

A grandparent is not a parent, so the return value of these methods
were misleading. This makes it clearer.
2021-08-23 16:50:18 +01:00
Katie Smith
0f0b8b8ae4 Move back link outside of main where it was used in the page header
The page_header macro includes an optional back link. Since the
page_header is always used inside `<main>`, where the back link should
not be, this stops setting the back link in the page header and instead
sets it in the new `backLink` block.
2021-08-03 11:28:15 +01:00
Katie Smith
1860b2b690 Move back link above main content for straightforward cases
This moves the back link to be above the `<main>` tag by making use of
the new `backLink` block. This doesn't change the pages which are using
a back link as part of the `page_header` macro yet.
2021-08-03 11:28:15 +01:00
Katie Smith
8b08661902 Remove check for send_messages permission from broadcast pages
The `send_messages` permission has been deprecated for use with
broadcast services, so we can drop support for it in the code. We
were supporting both the old permissions and new permissions
(`create_broadcasts` and `approve_broadcasts`) while we switched people
over.

This removes `send_messages` from the `user_has_permissions` decorator
around the broadcast routes and from the page to view a broadcast and
broadcast dashboards. We can now git rid of a lot of the parameterization
that was temporarily added to the tests.
2021-07-26 10:58:16 +01:00
Chris Hill-Scott
b71f0c6795 Disambiguate sent and created
At the moment we say that you either ‘add’ an alert or ‘send’ it.

This is confusing because:
- an alert isn’t received on people’s phones until it’s approved, so
  this is really when it is ‘sent’ conceptually
- an alert can be rejected before anyone receives it, so the UI can say
  an alert that no-one ever received was sent

This commit re-labels things so that the the first part of the process
is ‘creating’ the alert.

This makes all the permissions nice and distinct from each other. Adding
templates and adding alerts feel conceptually quite different things
(what are you adding the alert to?).
2021-07-23 10:07:05 +01:00
Katie Smith
7e8c638865 Change /broadcast/view-message.html page to work with both permissions
The buttons and links on this page now work with the original
permissions and the two new broadcast permissions. Since the new
broadcast permissions have the effect of splitting the `send_messages`
permission this means that additional sections of if/else logic were
required.
2021-07-19 14:40:14 +01:00
Katie Smith
b6905c435b Use new permissions for the button on the broadcast dashboard
The broadcast dashboards contain a button to create a new broadcast.
This adds the new `create_broadcasts` permission as one of the
permissions needed to see the button.
2021-07-19 14:40:14 +01:00
Chris Hill-Scott
ceca92c84e Merge pull request #3952 from alphagov/emergency-alerts-content-review
Emergency alerts content review
2021-07-08 09:33:54 +01:00
Chris Hill-Scott
9ac51481d7 Remove most uses of broadcast from the tour
We prefer send now.

I think broadcast as a verb is still good in explaining how it coming
straight from the towers is different to a normal text message.
2021-07-07 16:31:28 +01:00
Chris Hill-Scott
2accf8434a Remove false precision from area estimates
We give estimates of the area for those who can’t see the map. These
estimates were needlessly precise, gave a false sense of accuracy and
were causing intermittent test failures between different environments.

This commit rounds them in the same way that we round the count of
phones.
2021-07-06 17:00:51 +01:00
karlchillmaid
cd6574c28d Change 'broadcasting' to 'sending' 2021-07-05 17:42:37 +01:00
karlchillmaid
4b198fdf72 Change 'cancel' to 'reject' 2021-07-05 17:22:35 +01:00
karlchillmaid
2cc1ccfd7e Change 'withdraw' to 'discard' 2021-07-05 17:10:35 +01:00
karlchillmaid
2b8a495dc7 Update preview button content 2021-07-05 16:50:49 +01:00
karlchillmaid
d7e2b0b783 Replace 'broadcast' and 'prepared' 2021-07-05 16:41:17 +01:00
karlchillmaid
f910c91a9d Remove use of 'broadcast' 2021-07-05 16:23:55 +01:00
karlchillmaid
64b0fb769b Remove use of 'broadcast' 2021-07-05 16:23:25 +01:00
karlchillmaid
5ffb2a8594 Remove use of 'broadcast' 2021-07-05 16:22:47 +01:00
karlchillmaid
4d2e769400 Replace use of 'broadcast' 2021-07-05 15:57:37 +01:00
karlchillmaid
72e83adb19 Replace use of 'broadcast' 2021-07-05 15:56:21 +01:00
Chris Hill-Scott
016f38db9b Refactor service name code to reduce duplication
This makes the code shareable between:
- the broadcast tour pages
- the broadcast settings platform admin page
- the regular service navigation

On the training mode tour pages we don’t want to confuse people with the
organisation name or _Switch service_ links, so those are omitted and
the code is therefore slightly different.
2021-05-19 11:48:59 +01:00
Chris Hill-Scott
766df5d1ca Add a version of the tour for live services
At the moment if you’re invited to a live broadcast service you get the
training mode tour. This is misleading, and could make people think they
weren’t in danger of sending a real alert.

This commit adds a short, 2 step tour for users invited to a live
broadcast service.
2021-05-19 09:41:58 +01:00
Chris Hill-Scott
7d66dadcd7 Add a confirmation checkbox for live broadcasts
We want people to be really sure before sending a live broadcast, not
just clicking through the green buttons.

This commit adds a checkbox which explains exactly the consequences of
what they’re about to do, tailored to the channel they’re on, and the
area chosen by the person creating the alert.
2021-05-18 15:58:41 +01:00
Pea Tyczynska
0c0d9dd72f Admins won't see buttons for broadcast actions they can't do
These actions are creating, accepting and rejecting broadcasts.
2021-04-20 17:27:56 +01:00
Chris Hill-Scott
06f2c7eaaa Remove verbs from old alerts
Now we’ve split the old alerts onto two pages the verbs (‘Broadcast’ and
‘Rejected’) will always be the same for each alert – so they’re not
adding any differentiation.

The specifics of what the datetime means is available on the page for
each alert.

Removing the verbs makes the page a bit less cluttered and makes it
easier to scan down the right hand column.
2021-04-08 14:19:36 +01:00
Chris Hill-Scott
4da38e42e3 Make alert page work for rejected broadcasts
The code for this page was making assumptions about properties which
aren’t present on rejected broadcasts.

This commit accounts for those properties and presents the relevant
elements on the page.
2021-04-08 14:19:36 +01:00
Chris Hill-Scott
9977028a83 Make Jinja template generic
This will let us reuse the same code for displaying pages of previous
and rejected alerts.
2021-04-08 13:38:54 +01:00
Chris Hill-Scott
0bdd5cab2d Show rejected broadcasts on ‘Previous alerts’ page
Two reasons to not hide rejected broadcasts:
- if a broadcast was rejected by mistake then it’s useful to have an
  audit of who did that
- it means you can still see old broadcasts without having to leave
  in pending-approval, which is dangerous because they might
  accidentally be approved
2021-04-08 10:51:01 +01:00
Chris Hill-Scott
738ac1d818 Vary bleed amount based on population density
There are basically two kinds of 4G masts:

Frequency | Range       | Bandwidth
----------|-------------|----------------------------------
800MHz    | Long (500m) | Low (can handle a bit of traffic)
1800Mhz   | Short (5km) | High (can handle lots of traffic)

The 1800Mhz masts are better in terms of how much traffic they can
handle and how fast a connection they provide. But because they have
quite short range, it’s only economical to install them in very built up
areas†.

In more rural areas the 800MHz masts are better because they cover a
wider area, and have enough bandwidth for the lower population density.

The net effect of this is that cell broadcasts in rural areas are likely
to bleed further, because the masts they are being broadcast from are
less precise.

We can use population density as a proxy for how likely it is to be
covered by 1800Mhz masts, and therefore how much bleed we should expect.
So this commit varies the amount of bleed shown based on the population
density.

I came up with the formula based on 3 fixed points:
- The most remote areas (for example the Scottish Highlands) should have
  the highest average bleed, estimated at 5km
- An town, like Crewe, should have about the same bleed as we were
  estimating before (1.5km) – Pete D thinks this is about right based on
  his knowledge of the area around his office in Crewe
- The most built up areas, like London boroughs, could have as little as
  500m of bleed

Based on these three figures I came up with the following formula, which
roughly gives the right bleed distance (`b`) for each of their population
densities (`d`):
```
b = 5900 - (log10(d) × 1_250)
```

Plotted on a curve it looks like this:

This is based on averages – remember that the UI shows where is _likely_
to receive the alert, based on bleed, not where it’s _possible_ to
receive the alert.

Here’s what it looks like on the map:

---

†There are some additional subtleties which make this not strictly true:
- The 800Mhz masts are also used in built up areas to fill in the gaps
  between the areas covered by the 1800Mhz masts
- Switching between masts is inefficient, so if you’re moving fast
  through a built up area (for example on a train) your phone will only
  use the 800MHz masts so that you have to handoff from one mast to
  another less often
2021-03-18 09:37:23 +00:00
Chris Hill-Scott
5ae53b625b Show broadcasts created by the API
Broadcasts created by the API are different in that:
- they aren’t created by any user, so don’t have a `created_by_id`
- they are created instantly, not in steps, so don’t have an
  `updated_at` time

This commit alters the views to account for when these pieces of
information aren’t present.
2021-01-27 11:34:43 +00:00
Chris Hill-Scott
506e8cc773 Add extra space between back link and legend
Co-authored-by: Tom Byers <tombaromba@gmail.com>
2021-01-20 16:15:40 +00:00
Chris Hill-Scott
066aca4673 Use legend as H1
…seeing as the radios are the only control in the form.

Follows the pattern in
https://github.com/alphagov/notifications-admin/pull/3771/files
2021-01-20 15:43:58 +00:00
Chris Hill-Scott
8e7ff4c71f Merge two consecutive two-thirds columns 2021-01-20 15:32:51 +00:00
Chris Hill-Scott
db4d9f886c Display broadcasts without a template
At the moment the admin app expects all broadcasts to have a template,
and expects the content of the alert to come from the template.

This commit makes it so those pages can still get a `Template` instance,
but populated with content straight from the `content` field in the
database.
2021-01-20 11:18:13 +00:00
Chris Hill-Scott
74243a88fb Remove prompt from dashboard
It’s no longer true to say that you need a template to create an alert.
The grey button should be the primary call to action on this page
instead.
2021-01-18 17:09:01 +00:00
Chris Hill-Scott
8f2dc72881 Add the new alert button to previous alerts page
Feels like it should behave the same way as the current alerts page.
2021-01-18 17:09:01 +00:00
Chris Hill-Scott
99b7d8a66f Add flow for composing an alert without a template
We think that in some cases alerts will be composed in the moment, and
therefore making people first create a template is:
- not a good use of their time
- adding some conceptual complexity which they don’t need

This commit makes it possible to type some words and have them go
straight into the `content` field in the database.

In the future we might want to progressively enhance the radio buttons
so they show on the same page (like we do with the grey buttons on the
templates page).
2021-01-18 17:09:01 +00:00
Chris Hill-Scott
51af3dcac6 Remove word ‘still’ from training mode slide
You might alternate between training mode and live mode. It’s not like
normal Notify where you start in one mode and then transition out of it
– which is what ‘still’ implies.
2020-10-28 17:20:59 +00:00
Chris Hill-Scott
cc04a924d0 Make list of areas on dashboard use full width
When the list of areas is restricted to half the width of the page it
starts to look pretty higgledy-piggledy when you have lots of areas or
areas with very long names.

To do this I’ve ripped out the table markup in favour of headings,
paragraphs and lists. Probably pros and cons for each, but it was really
hard to do the layout with the content in a table.
2020-10-27 15:19:10 +00:00
Chris Hill-Scott
74e92e708e Add status to alerts pending approval
Now that pending alerts aren’t in their own section there’s nothing to
label them as pending. So this commit replaces the extra metadata we
show for a pending alert (the name of the person who created it, which
was only ever a reckon) with an explicit label that says it’s waiting
for approval.
2020-10-27 13:12:36 +00:00
Chris Hill-Scott
24bafba29c Combine current and pending broadcasts
Splitting the dashboard into multiple sections was confusing, and people
sometimes mistook the headings as labels, especially when a section was
empty. It just wasn’t clear what the hierarchy of the page was.

This commit combines the current and pending broadcasts into one list
on the dashboard. Previous broadcasts have already moved to their own
page.
2020-10-27 13:12:25 +00:00
Chris Hill-Scott
f3cf080a5c Rename variable to be more precise 2020-10-26 11:09:13 +00:00
Chris Hill-Scott
d793d08ae7 Fix back links when viewing a broadcast
Where you go back to from a broadcast can now depend on whether it’s
a current or previous broadcast.
2020-10-26 10:50:09 +00:00
Chris Hill-Scott
b54d49196b Ensure correct selected nav item on broadcast page
Once a broadcast has been submitted for approval it either lives on the
‘Current alerts’ or ‘Previous alerts’ page, depending on where it is
in its lifecycle.

Therefore when clicking into a broadcast from one of those pages the
same navigation item should remain selected.

Because we select the navigation items based on the request endpoint,
this means we need an endpoint for each navigation page, even if the
content of the pages will be the same in both cases.

This commit adds the two new end points, removes the old, single
endpoint and updates links to point to the new endpoint.
2020-10-26 10:50:09 +00:00
Chris Hill-Scott
0e39208546 Associate start time with live
Start time is much more important than end time.
2020-10-19 14:29:50 +01:00
Chris Hill-Scott
91e74929eb Use live indicator on individual broadcast page
So the view of an individual broadcast feel consistent when coming from
the dashboard.
2020-10-19 14:29:09 +01:00
Chris Hill-Scott
ba535523df Move end time to bottom of page
End time is less important than the status of the broadcast, or when it
was started (eg when it was received by most people in the area).
2020-10-19 14:29:09 +01:00
Chris Hill-Scott
6937e06ad5 Move the ‘who did what’ stuff to the bottom
The most important part of the broadcast is what content was sent where
(and when).

This commit reduces the priority of the ‘meta’ information, like who
prepared and approved the broadcast. I also think that the ‘end’ time is
a lot less important than the start time, since most people will receive
the alert at or near to the start time.
2020-10-19 14:25:42 +01:00
Chris Hill-Scott
a43321cbb3 Swap order of message and areas
This then matches the order in which the message is drafted, first the
content, then the areas. It also matches the order we’re going to have
on the new dashboard.
2020-10-19 14:25:42 +01:00
Chris Hill-Scott
e2f16e414d Style areas on dashboard the same as alert preview
Our style for areas is pale blue background with black keylines or bold
black text.

This commit makes the display of area names on the dashboard consistent
with that visual style.

This also means that we’re not truncating the list of areas, which is
appropriate because no one area is more important than any of the
others.
2020-10-14 13:22:00 +01:00