Compare commits

17 Commits

Author SHA1 Message Date
766d27a508 Increment version number to 1.0.4 2026-06-05 11:43:44 +01:00
3ebeea6cc7 Fixed closeout-due date for multi-year after year close-out done 2026-06-05 11:42:46 +01:00
7a92bdd6da Increment version number to 1.0.3 2026-03-27 09:20:08 +00:00
2aaa9f03f8 Added styling for fixed columns in DT 2026-03-27 09:20:00 +00:00
c6759959c8 Increment version number to 1.0.2 2026-03-18 10:30:11 +00:00
2aa6c4d447 Added an MNR notification function which produces shiny notifications with MNR settings included 2026-03-18 10:27:32 +00:00
0e056cb9e4 Increment version number to 1.0.1 2026-03-05 09:28:14 +00:00
9828fca49d Updated missing shiny app styles and form-control font size 2026-03-05 09:26:57 +00:00
5f1c9a5b6a Updated style errors missed in the accessibility sweep 2026-02-27 09:47:23 +00:00
4fa0ad3b54 Increased plotly geo plot text size so legend items are larger than 24px x 24px 2026-02-27 09:47:03 +00:00
7cffb9590f Increment version number to 1.0.0 2026-02-24 12:15:46 +00:00
2aa85146fb Increment version number to 0.3.0 2026-02-19 08:56:11 +00:00
d2dfd5260e Change table selection colour 2026-02-19 08:55:55 +00:00
a61347efda Increment version number to 0.2.0 2026-02-13 11:58:09 +00:00
42023475c8 Fixed frameHeight.js path 2026-02-13 11:57:54 +00:00
06d4e38804 Increment version number to 0.1.1 2026-02-10 18:44:07 +00:00
ae38af4358 Fixed recursion issues with bootConservationAreas 2026-02-10 18:43:58 +00:00
9 changed files with 183 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
Package: AVSDevR.MarineNoiseRegistry Package: AVSDevR.MarineNoiseRegistry
Title: Marine Noise Registry Common Code Package Title: Marine Noise Registry Common Code Package
Version: 0.1.0 Version: 1.0.4
Authors@R: Authors@R:
person("Craig", "Williams", , "craig@avsdev.uk", role = c("aut", "cre")) person("Craig", "Williams", , "craig@avsdev.uk", role = c("aut", "cre"))
Description: Comon code and assets for all of the Marine Noise Registry Description: Comon code and assets for all of the Marine Noise Registry

View File

@@ -9,6 +9,7 @@ export(MNR.DB.Organisations)
export(MNR.DB.Users) export(MNR.DB.Users)
export(MNR.GeoPlot) export(MNR.GeoPlot)
export(attachResourcePaths) export(attachResourcePaths)
export(mnrNotification)
export(resourcePrefix) export(resourcePrefix)
export(use_mnr_ui) export(use_mnr_ui)
import(dplyr) import(dplyr)

View File

@@ -278,6 +278,8 @@ MNR.DB.Applications <- R6::R6Class(
) )
# Include user what-ifs # Include user what-ifs
| (user_match & organisation_id == -1 & state_whatif) | (user_match & organisation_id == -1 & state_whatif)
# Include organisation what-ifs
| (!user_match & organisation_match & app_submitter & state_whatif)
# Admin override # Admin override
| (!!flag_admin & organisation_id == -1) | (!!flag_admin & organisation_id == -1)
) %>% ) %>%
@@ -355,7 +357,9 @@ MNR.DB.Applications <- R6::R6Class(
# Work out what the closeout closeout year should be # Work out what the closeout closeout year should be
dplyr::mutate( dplyr::mutate(
closeout_year = as.Date(paste( closeout_year = as.Date(paste(
lubridate::year(pmax(start_date, closed_at, na.rm = TRUE)), lubridate::year(
pmax(start_date, last_closeout_at, closed_at, na.rm = TRUE)
),
12L, 12L,
31L, 31L,
sep = "-" sep = "-"

View File

@@ -157,9 +157,9 @@ MNR.GeoPlot <- R6::R6Class(
"conservation_area_colours", conservation_area_colours, "conservation_area_colours", conservation_area_colours,
envir = mnr_geoplot_env envir = mnr_geoplot_env
) )
assign("conservation_areas", TRUE, envir = mnr_geoplot_env) assign("conservation_areas_loaded", TRUE, envir = mnr_geoplot_env)
invisible(self$bootConservationAreas()) invisible(self$bootConservationAreas(db_client))
}, },
#' @description Generates a base plotly map with optional layers included #' @description Generates a base plotly map with optional layers included
@@ -181,6 +181,10 @@ MNR.GeoPlot <- R6::R6Class(
private$addJNCCLayers(with_jncc_layers) %>% private$addJNCCLayers(with_jncc_layers) %>%
private$addConservationAreas(with_conservation_areas) %>% private$addConservationAreas(with_conservation_areas) %>%
plotly::layout( plotly::layout(
font = list(
family = "Roboto, \"Helvetica Neue\", Helvetica, Arial, sans-serif",
size = 15
),
mapbox = list(style = "carto-positron"), mapbox = list(style = "carto-positron"),
legend = list( legend = list(
groupclick = "toggleitem", groupclick = "toggleitem",

22
R/notification.R Normal file
View File

@@ -0,0 +1,22 @@
#' Displays a shiny notification with MNR specific settings
#'
#' @inheritParams shiny::showNotification
#' @param message Character string to display in the notification
#'
#' @export
mnrNotification <- function(
message, type = "message", session = shiny::getDefaultReactiveDomain()
) {
shiny::showNotification(
message,
type = type,
duration = ifelse(
type %in% c("warning", "error"),
getOption("mnr.error_duration", 30),
getOption("mnr.notify_duration", 15)
),
closeButton = TRUE,
session = session
)
}

View File

@@ -17,7 +17,7 @@ use_mnr_ui <- function() {
), ),
htmltools::singleton( htmltools::singleton(
htmltools::HTML(paste0( htmltools::HTML(paste0(
"<script src='", resourcePrefix(), "js/frameHeight.js'></script>" "<script src='", resourcePrefix(), "/js/frameHeight.js'></script>"
)) ))
) )
) )

View File

@@ -9,4 +9,108 @@ input[type="text"], input[type="password"], input[type="number"] {
.selectize-input input[type="text"] { .selectize-input input[type="text"] {
height: 27px !important; height: 27px !important;
}
.selectize-control .selectize-input.disabled {
cursor: not-allowed !important;
opacity: 1;
background-color: #eee;
}
.selectize-input.disabled, .selectize-input.disabled * {
cursor: not-allowed !important;
}
.table.dataTable tbody tr td.actions-col, .table.dataTable thead tr th.actions-col {
min-width: 140px;
}
.row-header {
padding-bottom: 0;
margin-bottom: 0;
margin-top: 30px;
text-decoration: underline;
}
.form-group.has-success div div.selectize-control div.selectize-input {
border-color: #00a65a;
box-shadow: none;
}
.tab-content {
border-left: 1px solid #ddd;
padding: 8px;
padding-left: 15px;
}
.noise-parameter {
display: inline-block;
width: 32%;
padding: 0px 20px 0px 0px;
}
dl.parameters {
display: grid;
grid-template-columns: max-content auto;
}
dl.parameters dt {
grid-column-start: 1;
}
dl.parameters dt::after {
content: ":";
margin-right: 10px;
}
dl.parameters dd {
grid-column-start: 2;
}
tr.deleted-row {
text-decoration: line-through;
color: #BBB;
}
hr {
color: #BBB;
}
.vr {
color: #BBB;
opacity: 1.0;
width: 2px;
}
.shiny-notification-close {
font-size: 2em !important;
}
.dt-scroll-x {
overflow-x: auto;
clear: both;
}
.dt-scroll-x table {
width: 150% !important;
}
.dt-sticky-left-border {
border-right: 3px double #000000;
}
.dt-sticky-right-border {
border-left: 3px double #000000;
}
@media(max-width:1200px) {
.dtfc-fixed-left {
position: inherit !important;
}
.dtfc-fixed-right {
position: inherit !important;
}
.dt-sticky-left-border {
border-right: 0;
}
.dt-sticky-right-border {
border-left: 0;
}
} }

View File

@@ -87,17 +87,20 @@ h6 {
.table.dataTable > tbody > td.active, .table.dataTable > tbody > td.active,
.table.dataTable > tbody > tr.active td { .table.dataTable > tbody > tr.active td {
background-color: #3f9c35 !important; color: #000000 !important;
background-color: #6bc961 !important;
} }
table.dataTable > tbody > tr.selected > * { table.dataTable > tbody > tr.selected > * {
box-shadow: inset 0 0 0 9999px #3f9c35 !important; color: #000000 !important;
box-shadow: inset 0 0 0 9999px #6bc961 !important;
} }
table.dataTable.hover > tbody > tr.even.selected:hover > *, table.dataTable.hover > tbody > tr.even.selected:hover > *,
table.dataTable.display > tbody > tr.even.selected:hover > *, table.dataTable.display > tbody > tr.even.selected:hover > *,
table.dataTable.hover > tbody > tr.odd.selected:hover > *, table.dataTable.hover > tbody > tr.odd.selected:hover > *,
table.dataTable.display > tbody > tr.odd.selected:hover > * { table.dataTable.display > tbody > tr.odd.selected:hover > * {
color: #FFFFFF !important;
box-shadow: inset 0 0 0 9999px #44a939 !important; box-shadow: inset 0 0 0 9999px #44a939 !important;
} }
@@ -438,6 +441,17 @@ a:focus {
text-decoration: underline; text-decoration: underline;
} }
.form-control {
font-size: 12pt;
}
.form-group.has-success label {
color: #008549;
}
.form-group.has-error label {
color: #DA3A25;
}
.btn { .btn {
font-size: 14pt; font-size: 14pt;
/* /*
@@ -480,9 +494,14 @@ input[type="text"], input[type="password"], input[type="number"] {
overflow: hidden; overflow: hidden;
} }
.content-jump-link:focus { .content-jump-link:focus {
position: static; position: absolute;
width: auto; width: auto;
height: auto; height: auto;
z-index: 1500;
background-color: #ecf0f5;
padding: 5px 10px;
left: 0;
color: #2D6B8F;
} }
.box-header > i { .box-header > i {
@@ -547,7 +566,7 @@ input[type="text"], input[type="password"], input[type="number"] {
text-decoration: none; text-decoration: none;
} }
.skin-green .sidebar-menu > li.header { .sidebar-menu > li.header {
color: #70979E; color: #70979E;
font-weight: bolder; font-weight: bolder;
} }
@@ -566,4 +585,4 @@ input[type="text"], input[type="password"], input[type="number"] {
.badge { .badge {
padding: 6px 9px 3px 9px; padding: 6px 9px 3px 9px;
} }

19
man/mnrNotification.Rd Normal file
View File

@@ -0,0 +1,19 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/notification.R
\name{mnrNotification}
\alias{mnrNotification}
\title{Displays a shiny notification with MNR specific settings}
\usage{
mnrNotification(message, type, session = shiny::getDefaultReactiveDomain())
}
\arguments{
\item{message}{Character string to display in the notification}
\item{type}{A string which controls the color of the notification. One of
"default" (gray), "message" (blue), "warning" (yellow), or "error" (red).}
\item{session}{Session object to send notification to.}
}
\description{
Displays a shiny notification with MNR specific settings
}