Commit Graph

109 Commits

Author SHA1 Message Date
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
Chris Hill-Scott
8dae4f771a Show the content of the alert on the dashboard
The content is as important as which areas you’ve sent the broadcast to.
2020-10-14 13:21:19 +01:00
Chris Hill-Scott
0cd08a94ff Rename dashboard to ‘current alerts’
The dashboard for normal services is quite general, because it tells
you a bit about channels, templates and spend.

What is now the dashboard for broadcast services is much more specific,
therefore less like a dashboard. We can reflect this by giving it a more
specific name. This should reduce the amount of navigation surfing
people need to do in order to find the thing they’re looking for.
2020-10-13 14:47:27 +01:00
Chris Hill-Scott
698f98389c Remove previous broadcasts from the dashboard
Since they have their own page now they don’t need to also appear on the
dashboard.
2020-10-13 14:47:10 +01:00
Chris Hill-Scott
f0220fa9fb Make a separate page for previous alerts
Previous alerts are much less important than ones that are live or
waiting for approval.

Therefore we can make the dashboard more focused by moving previous
alerts to their own page.
2020-10-13 14:45:08 +01:00
Chris Hill-Scott
3f338d45ca Rename CSS classes for consistency
This prefixes everything to do with areas/the map with `area-list`, so
from looking at one element you know which `.scss` file will contain the
relevant code.
2020-10-12 15:53:09 +01:00
Chris Hill-Scott
d3a599a3d5 Adjust spacing and border on details map
We hide the map inside a details element.

Because the map has such a strong shape I don’t think it needs the grey
border to contain it. This commit removes the border, and adjusts the
spacing to group things by proximity alone.

By removing the border and associated gutter we can give more space to
the map, and make the page look less busy.
2020-10-12 15:53:09 +01:00
Chris Hill-Scott
3c7364408b Make selected areas more tag-like
I’ve never liked the style of the selected areas on the preview of a
broadcast message. They were a compromise, taking what’s on the map page
and giving it a shaded background so it looks less like a text box.

The trouble is all these stroked elements jumbled together made the page
look very busy. I think it can be a bit calmer if they look more like
the ‘tag’ component[1] from the Design System, which only uses shading.

Going for black text not blue, because it’s one less piece of visual
differentiation – again, trying to keep the busyness level down.

1. https://design-system.service.gov.uk/components/tag/
2020-10-12 15:53:09 +01:00
Pea M. Tyczynska
f4f2e5d13a Merge pull request #3622 from alphagov/searchbox-make-autofocus-optional
Autofocus off by default on live-search
2020-09-29 10:58:00 +01:00
Chris Hill-Scott
f79a5ca020 Style ‘likely’ area with a dashed line
We’ve had some feedback that relying only on luminosity and position to
differentiate between the ‘will get alert’ and ‘likely to get alert’
areas on the map might not be enough.

We don’t want to introduce another colour because:
- it will make the map look very busy
- not many other colours contrast with the map tiles as well as blue
- relying on colour only to communicate information is also bad for
  accessibility

Instead we can make one of the lines a different style. I’ve gone for
dashed on the ‘likely’ line because it looks nice, and gives some
suggestion of a porous boundary.

Implementing this means using CSS border image, because a `dashed`
border (which we still have as a fallback) doesn’t render with
consistent dash sizes from browser to browser. We need consistency to
match the dashes that the map will be drawing (which use SVG not CSS
so don’t have the same problem).
2020-09-24 16:15:31 +01:00
Chris Hill-Scott
eb4a7907a4 Make estimated phone count clearer
We’ve had some feedback from user research that difference between
‘will get alert’ and ‘likely to get alert’ is not clear, and it’s hard
to tell if the latter is inclusive of the former. This leads people to
question the validity of these numbers, which is important, because an
the estimate should give you some idea of the impact of what you’re
about to do.

This commit reformats the number as a range, for example 1,000 to 2,000
phones.

If the range is small, eg 40,000,000 to 40,800,000 then this suggests
a false level of accuracy. So instead we just give one number and say
it’s an estimate, eg ‘40,000,000 phones estimated’
2020-09-24 15:53:07 +01:00
Pea Tyczynska
ad6dc670f1 Turn autofocus on for broadcast areas search box
Accessibility audit uncovered issues screen-reader users would
have with autofocus on Notify pages. Autofocus can lead to
confusion for those types of users and make them miss parts
of the page.

Hence, we decided that autofocus will be turned off by default
for live-search component.

We decided to keep the autofocus on for live-search text box when:
1. the page is a task page - as opposed to browsing pages, where
user wonders freely, task pages have more established flow, so
page focusing on textbox can actually be helpful.
2. page does not have actionable elements above the autofocus.
2020-09-24 12:55:30 +01:00
Chris Hill-Scott
0482c62cb8 Fix styling of ‘Training’ tag on tour step 5
It was missing the base class so didn’t get all the styling (like the
spacing and uppercase text).

Already fixed this for step 6, but less haste, more speed.
2020-09-23 17:38:39 +01:00
Chris Hill-Scott
59bf38e623 Fix styling of ‘Training’ tag on tour step 6
It was missing the base class so didn’t get all the styling (like the
spacing and uppercase text).
2020-09-23 16:03:05 +01:00
Chris Hill-Scott
9becb2b817 Merge pull request #3641 from alphagov/area-suggestions
Suggest previously-used areas when adding new area
2020-09-23 15:00:21 +01:00
Chris Hill-Scott
dcd48f99dd Merge pull request #3632 from alphagov/training-broadcast-approved
Add a tour screen once a broadcast is approved
2020-09-23 11:07:03 +01:00
Chris Hill-Scott
f50ef84c0d Suggest previously-used areas when adding new area
If you’re adding another area to your broadcast it’s likely to be close
to one of the areas you’ve already added.

But we make you start by choosing a library, then you have to find the
local authority again from the long list. This is clunky, and it
interrupts the task the user is trying to complete.

We thought about redirecting you somewhere deep into the hierarchy,
perhaps by sending you to either:
- the parent of the last area you’d chosen
- the common ancestor of all the areas you’d chosen

This approach would however mean you’d need a way to navigate back up
the hierarchy if we’d dropped you in the wrong place. And we don’t have
a pattern for that at the moment.

So instead this commit adds some ‘shortcuts’ to the chose library page,
giving you a choice of all the parents of the areas you’ve currently
selected. In most cases this will be one (unitary authority) or two
(county and district) choices, but it will scale to adding areas from
multiple different authorities.

It does mean an extra click compared to the redirect approach, but this
is still fewer, easier clicks compared to now.

This meant a couple of under-the-hood changes:
- making `BroadcastArea`s hashable so it’s possible to do
  `set([BroadcastArea(…), BroadcastArea(…), BroadcastArea(…)])`
- making `BroadcastArea`s aware of which library they live in, so we can
  link to the correct _Choose area_ page
2020-09-22 17:33:04 +01:00
Leo Hemsted
422825f03b Merge pull request #3629 from alphagov/fix-broadcast-back-links
fix back links for broadcast libraries
2020-09-21 11:37:21 +01:00
Leo Hemsted
a6b25b5991 add back links
previously the back link went to choosing a library.

Now, if you view a district from a county, go back to the county page.
Otherwise, go back to the top level of the library.
2020-09-21 11:24:05 +01:00
Chris Hill-Scott
fec8dc8911 Adjust wording of first paragraph
I’ve swapped the order of the first paragraph so it joins into one
sentence, and leads with ‘Notify has not broadcast your alert’ which
is the response to what the user has just done. I don’t think we need
to say ‘still’ because the idea is users will swap back and forth
between training and real depending on the situation.
2020-09-21 10:53:39 +01:00
Chris Hill-Scott
5c22bd56ce Add a tour screen once a broadcast is approved
For a training broadcast the user doesn’t get that immediate feedback
that something has happened, like they would with a real alert, or even
sending themselves a text message.

This commit adds another tour-style page which will interrupt their
journey and hopefully reinforce the message we’ve given them earlier in
the tour.

We’re adding this because we’ve found in research that users don’t have
a good grasp of the consequences and severity of emergency alerts,
versus regular text messages.
2020-09-21 09:41:19 +01:00
Chris Hill-Scott
8ea3f0141c Give estimates of the number of phones in a broadcast area
We need to give people a better feel for the consequences of
broadcasting an alert. We’ve seen in research that some users will
assume it is subscription based, or opt-in, rather than going to every
phone in the area.

I reckon that the most effective way to communicate this is to put some
numbers next to the areas, to give people an idea of how many people
will get alerted.

We can estimate how many phones are in an area by:
- taking the population of all electoral wards in that area
- multiplying it by the percentage of people who own an internet
  connected phone[1]

The Office for National Statistics publish both these datasets.

The number of people who own an intenet connected phone varies a lot by
age. Since the population data for each ward is broken down by age we
can factor this in. Simplified, the calculation looks like this:
- take the _Abbey_ ward of _Barking and Dagenham_
- in this ward there are 26 people aged 80
- 40% of people over 65 have an internet-connected phone
- therefore 10 of these 80-year-olds would be likely to receive a
  broadcast
- (repeat for all other ages)

These numbers won’t be exact, but should be enough to give people a feel
for the severity of what they’re about to do. We can see if they acheive
this aim in user research.

1. This is a proxy for the number of people who are likely to have a 4G
   capable phone, because only 4G capable phones will be receiving
   broadcasts to begin with
2020-09-14 16:26:09 +01:00
Chris Hill-Scott
5e579ed45c Merge pull request #3595 from alphagov/map-key
Add a key to the map
2020-09-09 16:03:27 +01:00
Leo Hemsted
256d2b2b60 add counties page
What was previously ward -> local authority is now a ward -> local
authority -> county. County only covers rural counties and not
metropolitan boroughs and other unitary authorities. Previously, there
was a page full of local authorities (unitary authorities and
districts), and each one of those would have a list of electoral wards.
However, now there are counties that contain a list of districts - so
this needs a new page - a checkbox for "select the county" and then a
list of links to district pages.

If you want to select multiple districts, you'll need to go into each
one of those sub-sections in turn and click select all.

Needed to tweak the query to retrieve the list of areas in a list for a
library. Previously, it just returned anything at top level (ie: didn't
have a parent). However, rural districts now have parents (the rural
counties themselves). So the query now returns "everything that isn't a
leaf node", or in more specific terms, everything that has at least
other row referring to it as a parent. So no electoral wards, since
they dont have any children, but yes to districts and counties.
2020-09-09 14:39:12 +01:00
Chris Hill-Scott
f553158846 Add estimated areas for non-visual users
Since the key relies on visual association between the shapes on the
maps and the styling of the key, it won’t work for non-visual users.
An alternative way of giving them the same information is by providing
the size of the area numerically.
2020-09-08 16:56:39 +01:00
Chris Hill-Scott
0369472a76 Add a key to the map
To help people understand that broadcasting is not a precise technology,
we have shown the estimate bleed area on the map.

Because people aren’t familiar with the technology a visual only clue is
not enough. So this commit adds a key to the map, which explains what
the different outlines mean.

It also removes the sticky footer from this page to:
- make the key visible on the page
- make people scroll and review the map before they get to the big green
  button
- not reduce the size of the map any further
2020-09-08 16:44:49 +01:00
David McDonald
9664af387e Merge pull request #3608 from alphagov/more-maps
Add map of broadcast areas to view-broadcast page
2020-09-08 14:26:16 +01:00
Chris Hill-Scott
3af8ed521d Merge pull request #3594 from alphagov/fix-live-search-sub-areas
Don’t filter ‘All of’ choice with live search
2020-09-07 12:57:58 +01:00
David McDonald
bf5ee37d6c Add margin to area list above map as looks cleaner 2020-09-04 10:27:19 +01:00
David McDonald
be563e73c6 Add map in details to broadcast view
Avoided using `closest` as not supported by IE8-11
https://caniuse.com/#search=closest

Used `parentElement` supported by IE9+
https://caniuse.com/#search=parentElement

Used `className` as supported by IE9+
https://caniuse.com/#search=className

Also rearranged the javascript for maps such that figuring out the
polygon array is done first and then the time when we need to have the
details component open before closing it again is kept to minimum
2020-09-04 10:20:54 +01:00
David McDonald
32a794aacd Move styling into separate files for reuse 2020-09-03 10:50:58 +01:00
Chris Hill-Scott
344d8646a3 Merge pull request #3590 from alphagov/buffer-de-buffer
Make simplification of polygons more sophisticated
2020-08-28 10:15:49 +01:00
Chris Hill-Scott
459b7b6018 Reword title of screen 4 of broadcast tour
We want to emphasise the difference over the similarity.
2020-08-27 11:34:21 +01:00
karlchillmaid
8913eee803 Add 'you can' for clarity and readability 2020-08-26 21:52:55 +01:00
Chris Hill-Scott
dbfe293b4e Improve pacing and sequence of information in the broadcast tour
This commit refines which information we show on each page.

Specifically we’re
- adding some wording (‘at exactly the same time’) to try to communicate
  the immediacy
- giving the ‘loud noises’ message it’s own screen to really draw
  attention to it
- moving the ‘no phone numbers bit’ later in the journey, and
  experimenting with explaining why that is, to make it clearer how it’s
  different to a text message
2020-08-26 16:42:52 +01:00
Chris Hill-Scott
2ede3ef8f0 Don’t filter ‘All of’ choice with live search
Because the ‘All of’ choice appears above the search field, it shouldn’t
be filtered by the search field.

We can fix this by wrapping the sub-areas in a `<div>` and make the
selector more specific.
2020-08-26 10:59:29 +01:00
Chris Hill-Scott
64291c8c95 Remove padding on map render
We don’t need it now we’re projecting a bigger bleed.
2020-08-26 09:18:25 +01:00
Chris Hill-Scott
3d9d663b27 Refactor coordinate processing into Polygons class
We have a bunch of stuff for doing lat/long transformation in the
`BroadcastMessage` class. This is not a good separation of concerns, now
that we have a separate class for dealing with polygons and coordinates.
2020-08-26 09:17:03 +01:00
Chris Hill-Scott
c49a6338af Store simplifed polygons in the SQLite database
This commit does two things:
- uses our new polygon-simplifying library to process the polygons
  before storing them, rather than processing them in real time
- stores only the polygons in the database, rather than the whole
  GeoJSON feature, because we don’t need any of the other information
  about the feature
2020-08-26 09:09:45 +01:00
Chris Hill-Scott
3470c5bb31 Make simplification of polygons more sophisticated
Simplifying polygons means reducing the number of points used to render
them. This commit implements simplification such that, for any given
input polygons, the combined point count of the simplified polygons is
less than 100.

When simplifying the polygons we are trying to get the smallest number
of points while meeting these two rules:
1. No part of the area the user has chosen can be cut off
2. The area of the simplified polygon should be as small as possible

This commit introduces two techniques we weren’t using before:
1. Dilating and eroding the area to fill in concave details of the
   shape, like inlets and harbours[1]
2. Making the simplification threshold proportionate to the perimeter of
   all polygons, so bigger and crinklier polygons get more
   simplification applied

It also shows the estimated bleed as a separate polygon. This lets us
make it bigger (so it’s more closer the the approximate bleed) without
having to send a bigger area to the CBC and compounding the amount of
actual bleed.

1. Inspired by this blog post about ‘removing the crinkley bits’ from
   Vancouver Island:
   http://blog.cleverelephant.ca/2010/11/removing-complexities.html
2020-08-26 09:04:54 +01:00