Link to Page on calendar event click

This commit is contained in:
Zack Arnett 2020-04-21 14:42:52 -04:00
parent 7fb76df33a
commit a71eb279ad
3 changed files with 194 additions and 183 deletions

View File

@ -1,278 +1,277 @@
/* Main style customizations */ /* Main style customizations */
body { body {
font-family: 'Noto Sans', sans-serif; font-family: "Noto Sans", sans-serif;
} }
.content-text { .content-text {
font-size: 0.85rem; font-size: 0.85rem;
} }
.responsive-button { .responsive-button {
white-space: normal; white-space: normal;
} }
.timeago-contextual { .timeago-contextual {
font-style: italic; font-style: italic;
font-size: 0.8em; font-size: 0.8em;
} }
a.discrete-link { a.discrete-link {
color: inherit !important; color: inherit !important;
transition: all 0.3s !important; transition: all 0.3s !important;
} }
a.discrete-link:hover { a.discrete-link:hover {
color: #337ab7 !important; color: #337ab7 !important;
text-decoration: none !important; text-decoration: none !important;
} }
a.discrete-link:focus { a.discrete-link:focus {
color: #ab2230 !important; color: #ab2230 !important;
text-decoration: none !important; text-decoration: none !important;
} }
.card { .card {
border: 2px solid; border: 2px solid;
border-color: #d6d6d6; border-color: #d6d6d6;
border-radius: 0; border-radius: 0;
} }
.card-header { .card-header {
background-color: #e5e5e5; background-color: #e5e5e5;
} }
.card-header:first-child { .card-header:first-child {
border-radius: 0; border-radius: 0;
} }
.card-body { .card-body {
flex-grow: 0; flex-grow: 0;
} }
.content-text .invalid-feedback { .content-text .invalid-feedback {
font-size: 95%; font-size: 95%;
} }
.fullscreen { .fullscreen {
z-index: 8888; z-index: 8888;
height: 100%; height: 100%;
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
overflow: auto; overflow: auto;
background-color: #ffffff; background-color: #ffffff;
width: 100%; width: 100%;
} }
/* Fixes smooth scrolling on iOS */ /* Fixes smooth scrolling on iOS */
#sidebarResponsive, #sidebarResponsive,
.fullscreen { .fullscreen {
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
} }
.fullscreen-card .card-header-fullscreen { .fullscreen-card .card-header-fullscreen {
z-index: 9999; z-index: 9999;
width: 100%; width: 100%;
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
}
body.fullscreen-card {
overflow: hidden;
}
.fullscreen-card .hide-on-fullscreen-card {
display: none;
} }
.form-check-input.is-valid ~ .form-check-label, body.fullscreen-card {
.was-validated .form-check-input:valid ~ .form-check-label { overflow: hidden;
color: inherit; }
.fullscreen-card .hide-on-fullscreen-card {
display: none;
}
.form-check-input.is-valid ~ .form-check-label,
.was-validated .form-check-input:valid ~ .form-check-label {
color: inherit;
} }
.text-strike-through { .text-strike-through {
text-decoration: line-through; text-decoration: line-through;
} }
button.disabled { button.disabled {
pointer-events: none; pointer-events: none;
} }
.embedded .hide-when-embedded { .embedded .hide-when-embedded {
display: none; display: none;
} }
body.embedded.fixed-nav { body.embedded.fixed-nav {
padding-top: 0; padding-top: 0;
} }
.embedded .content-wrapper { .embedded .content-wrapper {
margin-left: 0; margin-left: 0;
} }
iframe { iframe {
border: 0; border: 0;
} }
/* Hide the default up/down arrow buttons for number inputs because we use our own buttons in numberpicker */ /* Hide the default up/down arrow buttons for number inputs because we use our own buttons in numberpicker */
input[type='number'] { input[type="number"] {
-moz-appearance: textfield; -moz-appearance: textfield;
} }
input::-webkit-outer-spin-button, input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button { input::-webkit-inner-spin-button {
-webkit-appearance: none; -webkit-appearance: none;
} }
/* Navigation style customizations */ /* Navigation style customizations */
#mainNav { #mainNav {
line-height: 1; line-height: 1;
background-color: #e5e5e5 !important; background-color: #e5e5e5 !important;
border-bottom: 2px solid !important; border-bottom: 2px solid !important;
border-color: #d6d6d6 !important; border-color: #d6d6d6 !important;
padding-bottom: 0.3rem; padding-bottom: 0.3rem;
} }
#mainNav .dropdown-menu { #mainNav .dropdown-menu {
line-height: 1.5; line-height: 1.5;
} }
.navbar-sidenav { .navbar-sidenav {
overflow-x: hidden; overflow-x: hidden;
overflow-y: overlay; overflow-y: overlay;
border-top: 2px solid !important; border-top: 2px solid !important;
} }
.navbar-sidenav, .navbar-sidenav,
.sidenav-second-level { .sidenav-second-level {
background-color: #e5e5e5 !important; background-color: #e5e5e5 !important;
border-right: 2px solid !important; border-right: 2px solid !important;
border-color: #d6d6d6 !important; border-color: #d6d6d6 !important;
} }
.navbar-nav .dropdown-menu { .navbar-nav .dropdown-menu {
background-color: #e5e5e5 !important; background-color: #e5e5e5 !important;
border: 0; border: 0;
border-radius: 0; border-radius: 0;
} }
.navbar-nav .dropdown-divider, .navbar-nav .dropdown-divider,
.nav-item-divider { .nav-item-divider {
border-top: 2px solid !important; border-top: 2px solid !important;
border-color: #d6d6d6 !important; border-color: #d6d6d6 !important;
} }
.sidenav-toggler { .sidenav-toggler {
background-color: #d6d6d6 !important; background-color: #d6d6d6 !important;
border-right: 2px solid !important; border-right: 2px solid !important;
border-color: #d6d6d6 !important; border-color: #d6d6d6 !important;
} }
.navbar-sidenav > li, .navbar-sidenav > li,
.sidenav-second-level > li { .sidenav-second-level > li {
transition: all 0.3s !important; transition: all 0.3s !important;
} }
.navbar-sidenav > li:hover, .navbar-sidenav > li:hover,
.sidenav-second-level > li:hover, .sidenav-second-level > li:hover,
.navbar-nav .dropdown-item:hover { .navbar-nav .dropdown-item:hover {
box-shadow: inset 5px 0 0 #337ab7 !important; box-shadow: inset 5px 0 0 #337ab7 !important;
background-color: #d6d6d6 !important; background-color: #d6d6d6 !important;
} }
.navbar-sidenav > li > a:focus, .navbar-sidenav > li > a:focus,
.sidenav-second-level > li > a:focus, .sidenav-second-level > li > a:focus,
.navbar-nav .dropdown-item:focus { .navbar-nav .dropdown-item:focus {
box-shadow: inset 5px 0 0 #ab2230 !important; box-shadow: inset 5px 0 0 #ab2230 !important;
background-color: #d6d6d6 !important; background-color: #d6d6d6 !important;
} }
.active-page { .active-page {
box-shadow: inset 5px 0 0 #ab2230 !important; box-shadow: inset 5px 0 0 #ab2230 !important;
background-color: #d6d6d6 !important; background-color: #d6d6d6 !important;
} }
.navbar-brand { .navbar-brand {
margin-right: 0; margin-right: 0;
} }
.cursor-link { .cursor-link {
cursor: pointer; cursor: pointer;
} }
.cursor-busy { .cursor-busy {
cursor: wait; cursor: wait;
} }
.expandable-text .collapse, .module .collapsing { .expandable-text .collapse,
height: 2.4rem; .module .collapsing {
height: 2.4rem;
} }
.expandable-text .collapse { .expandable-text .collapse {
position: relative; position: relative;
display: block; display: block;
overflow: hidden; overflow: hidden;
} }
.expandable-text .collapse:before { .expandable-text .collapse:before {
position: absolute; position: absolute;
right: 0; right: 0;
bottom: 0; bottom: 0;
} }
.expandable-text .collapse.show { .expandable-text .collapse.show {
height: auto; height: auto;
} }
.expandable-text .collapse.show:before { .expandable-text .collapse.show:before {
display: none; display: none;
} }
.table-inline-menu.dropdown-menu { .table-inline-menu.dropdown-menu {
padding-left: 12px; padding-left: 12px;
padding-right: 12px; padding-right: 12px;
width: 96vw; /* Set width of popup menu to screen size */ width: 96vw; /* Set width of popup menu to screen size */
} }
/* Set width of popup menu to fixed value on larger devices */ /* Set width of popup menu to fixed value on larger devices */
@media (min-width: 400px) { @media (min-width: 400px) {
.table-inline-menu.dropdown-menu { .table-inline-menu.dropdown-menu {
width: 400px; width: 400px;
} }
} }
.table-inline-menu .dropdown-item { .table-inline-menu .dropdown-item {
width: auto; width: auto;
text-indent: -24px; text-indent: -24px;
} }
.table-inline-menu .dropdown-item .dropdown-item-icon { .table-inline-menu .dropdown-item .dropdown-item-icon {
min-width: 24px; min-width: 24px;
padding-left:20px; padding-left: 20px;
text-align: center; text-align: center;
display: inline; display: inline;
} }
.table-inline-menu .dropdown-item .dropdown-item-text { .table-inline-menu .dropdown-item .dropdown-item-text {
display: inline; display: inline;
padding: 0; padding: 0;
word-wrap: break-word; word-wrap: break-word;
white-space: pre-wrap; white-space: pre-wrap;
color: inherit; color: inherit;
} }
/* Barcodescanner Quagga */ /* Barcodescanner Quagga */
#barcodescanner-container { #barcodescanner-container {
max-height: 90vw; max-height: 90vw;
} }
#livestream-container { #livestream-container {
max-height: 100%; max-height: 100%;
} }
#barcodescanner-livestream video { #barcodescanner-livestream video {
width: 100%; width: 100%;
} }
#barcodescanner-livestream canvas { #barcodescanner-livestream canvas {
width: 100%; width: 100%;
} }
/* Third party component customizations - Bootstrap */ /* Third party component customizations - Bootstrap */
@ -282,157 +281,157 @@ input::-webkit-inner-spin-button {
.was-validated .form-control:invalid, .was-validated .form-control:invalid,
.form-control.is-valid, .form-control.is-valid,
.was-validated .form-control:valid { .was-validated .form-control:valid {
background-size: 0 0; background-size: 0 0;
} }
/* There is a little too much padding on form inputs */ /* There is a little too much padding on form inputs */
.form-control { .form-control {
padding-right: 0.75rem !important; padding-right: 0.75rem !important;
} }
.btn-group-xs > .btn, .btn-xs { .btn-group-xs > .btn,
padding : 0.25rem 0.4rem; .btn-xs {
font-size : 0.875rem; padding: 0.25rem 0.4rem;
line-height : 0.5; font-size: 0.875rem;
border-radius: 0.2rem; line-height: 0.5;
border-radius: 0.2rem;
} }
.text-larger { .text-larger {
font-size: 125%; font-size: 125%;
} }
.input-group > .form-control:focus { .input-group > .form-control:focus {
z-index: inherit; z-index: inherit;
} }
.list-group { .list-group {
flex-shrink: 0; flex-shrink: 0;
} }
/* Always show modals over everything else */ /* Always show modals over everything else */
.modal { .modal {
z-index: 99999; z-index: 99999;
} }
/* Third party component customizations - DataTables */ /* Third party component customizations - DataTables */
.dataTable td { .dataTable td {
vertical-align: middle !important; vertical-align: middle !important;
} }
.table td.fit-content, .table td.fit-content,
.table th.fit-content { .table th.fit-content {
white-space: nowrap; white-space: nowrap;
width: 1%; width: 1%;
} }
.dataTables_filter, .dataTables_filter,
.dataTables_info { .dataTables_info {
display: none; display: none;
} }
.dataTables_scrollBody { .dataTables_scrollBody {
overflow: visible !important; overflow: visible !important;
} }
/* Third party component customizations - toastr */ /* Third party component customizations - toastr */
#toast-container > div { #toast-container > div {
opacity: 1; opacity: 1;
filter: alpha(opacity=100); filter: alpha(opacity=100);
} }
.toast-success { .toast-success {
background-color: #28a745; background-color: #28a745;
} }
.toast-error { .toast-error {
background-color: #dc3545; background-color: #dc3545;
} }
#toast-container > div { #toast-container > div {
box-shadow: none; box-shadow: none;
} }
/* Third party component customizations - Font Awesome */ /* Third party component customizations - Font Awesome */
.fa-custom-sigma-sign:before { .fa-custom-sigma-sign:before {
content: "\03a3"; content: "\03a3";
font-family: sans-serif; font-family: sans-serif;
} }
/* Third party component customizations - SB Admin 2 */ /* Third party component customizations - SB Admin 2 */
#mainNav .navbar-collapse .navbar-nav > .nav-item.dropdown > .nav-link:after, #mainNav .navbar-collapse .navbar-nav > .nav-item.dropdown > .nav-link:after,
#mainNav .navbar-collapse .navbar-sidenav .nav-link-collapse:after { #mainNav .navbar-collapse .navbar-sidenav .nav-link-collapse:after {
font-family: 'Font Awesome 5 Free'; font-family: "Font Awesome 5 Free";
font-weight: 900; font-weight: 900;
} }
@media (max-width:992px) { @media (max-width: 992px) {
#mainNav .navbar-collapse .navbar-sidenav > .nav-item > .nav-link { #mainNav .navbar-collapse .navbar-sidenav > .nav-item > .nav-link {
padding: 0.8em; padding: 0.8em;
} }
} }
@media (min-width:992px) { @media (min-width: 992px) {
#mainNav .navbar-collapse .navbar-sidenav { #mainNav .navbar-collapse .navbar-sidenav {
margin-top: 46px; margin-top: 46px;
} }
#mainNav.fixed-top .navbar-sidenav { #mainNav.fixed-top .navbar-sidenav {
height: calc(100vh - 94px) height: calc(100vh - 94px);
} }
#mainNav.fixed-top .sidenav-toggler { #mainNav.fixed-top .sidenav-toggler {
margin-top:calc(100vh - 48px); margin-top: calc(100vh - 48px);
} }
.content-wrapper { .content-wrapper {
margin-left: 245px; margin-left: 245px;
} }
} }
body.fixed-nav { body.fixed-nav {
padding-top: 54px; padding-top: 54px;
} }
html { html {
min-height: inherit; min-height: inherit;
} }
.dropdown-toggle::after { .dropdown-toggle::after {
margin-left: -0.15em !important; margin-left: -0.15em !important;
} }
#mainNav .navbar-collapse .navbar-sidenav > .nav-item > .nav-link { #mainNav .navbar-collapse .navbar-sidenav > .nav-item > .nav-link {
padding-right: 1.25em !important; padding-right: 1.25em !important;
} }
#sidebarResponsive .nav-item-sidebar { #sidebarResponsive .nav-item-sidebar {
line-height: 1; line-height: 1;
} }
/* Third party component customizations - Tempus Dominus */ /* Third party component customizations - Tempus Dominus */
.bootstrap-datetimepicker-widget.dropdown-menu { .bootstrap-datetimepicker-widget.dropdown-menu {
width: auto !important; width: auto !important;
} }
/* Third party component customizations - Bootstrap Combobox */ /* Third party component customizations - Bootstrap Combobox */
.typeahead .active { .typeahead .active {
background-color: #e5e5e5; background-color: #e5e5e5;
} }
/* Third party component customizations - Popper.js */ /* Third party component customizations - Popper.js */
.tooltip { .tooltip {
pointer-events: none; pointer-events: none;
} }
/* Third party component customizations - QuaggaJS */ /* Third party component customizations - QuaggaJS */
canvas.drawing, canvas.drawing,
canvas.drawingBuffer { canvas.drawingBuffer {
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
} }
.warning-message, .warning-message,
.error-message, .error-message,
.normal-message { .normal-message {
@ -506,16 +505,20 @@ canvas.drawingBuffer {
} }
.recipe-card-name { .recipe-card-name {
font-size: 16px; font-size: 16px;
text-align: center; text-align: center;
width: 100%; width: 100%;
} }
.recipe-expand { .recipe-expand {
right: 1.25rem; right: 1.25rem;
top: .75rem; top: 0.75rem;
} }
.recipe-servings-input { .recipe-servings-input {
width: 125px; width: 125px;
} }
.fc-event {
cursor: pointer;
}

View File

@ -16,7 +16,10 @@ var calendar = $("#calendar").fullCalendar({
"firstDay": firstDay, "firstDay": firstDay,
"eventLimit": false, "eventLimit": false,
"height": "auto", "height": "auto",
"eventSources": fullcalendarEventSources "eventSources": fullcalendarEventSources,
eventClick: function(info) {
location.href = info.link;
}
}); });
$("#ical-button").on("click", function(e) $("#ical-button").on("click", function(e)

View File

@ -31,7 +31,8 @@ class CalendarService extends BaseService
$stockEvents[] = array( $stockEvents[] = array(
'title' => $titlePrefix . FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name, 'title' => $titlePrefix . FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name,
'start' => $currentStockEntry->best_before_date, 'start' => $currentStockEntry->best_before_date,
'date_format' => 'date' 'date_format' => 'date',
'link' => $this->UrlManager->ConstructUrl('/stockoverview')
); );
} }
} }
@ -46,7 +47,8 @@ class CalendarService extends BaseService
$taskEvents[] = array( $taskEvents[] = array(
'title' => $titlePrefix . $currentTaskEntry->name, 'title' => $titlePrefix . $currentTaskEntry->name,
'start' => $currentTaskEntry->due_date, 'start' => $currentTaskEntry->due_date,
'date_format' => 'date' 'date_format' => 'date',
'link' => $this->UrlManager->ConstructUrl('/tasks')
); );
} }
} }
@ -71,7 +73,8 @@ class CalendarService extends BaseService
$choreEvents[] = array( $choreEvents[] = array(
'title' => $titlePrefix . $chore->name . $assignedToText, 'title' => $titlePrefix . $chore->name . $assignedToText,
'start' => $currentChoreEntry->next_estimated_execution_time, 'start' => $currentChoreEntry->next_estimated_execution_time,
'date_format' => 'datetime' 'date_format' => 'datetime',
'link' => $this->UrlManager->ConstructUrl('/choresoverview')
); );
} }
} }
@ -86,7 +89,8 @@ class CalendarService extends BaseService
$batteryEvents[] = array( $batteryEvents[] = array(
'title' => $titlePrefix . FindObjectInArrayByPropertyValue($batteries, 'id', $currentBatteryEntry->battery_id)->name, 'title' => $titlePrefix . FindObjectInArrayByPropertyValue($batteries, 'id', $currentBatteryEntry->battery_id)->name,
'start' => $currentBatteryEntry->next_estimated_charge_time, 'start' => $currentBatteryEntry->next_estimated_charge_time,
'date_format' => 'datetime' 'date_format' => 'datetime',
'link' => $this->UrlManager->ConstructUrl('/batteriesoverview')
); );
} }
} }
@ -107,7 +111,8 @@ class CalendarService extends BaseService
'title' => $titlePrefix . FindObjectInArrayByPropertyValue($recipes, 'id', $recipeOfCurrentDay->includes_recipe_id)->name, 'title' => $titlePrefix . FindObjectInArrayByPropertyValue($recipes, 'id', $recipeOfCurrentDay->includes_recipe_id)->name,
'start' => FindObjectInArrayByPropertyValue($recipes, 'id', $recipeOfCurrentDay->recipe_id)->name, 'start' => FindObjectInArrayByPropertyValue($recipes, 'id', $recipeOfCurrentDay->recipe_id)->name,
'date_format' => 'date', 'date_format' => 'date',
'description' => $this->UrlManager->ConstructUrl('/mealplan' . '?week=' . FindObjectInArrayByPropertyValue($recipes, 'id', $recipeOfCurrentDay->recipe_id)->name) 'description' => $this->UrlManager->ConstructUrl('/mealplan' . '?week=' . FindObjectInArrayByPropertyValue($recipes, 'id', $recipeOfCurrentDay->recipe_id)->name),
'link' => $this->UrlManager->ConstructUrl('/recipes' . '?recipe=' . $recipeOfCurrentDay->includes_recipe_id . "#fullscreen")
); );
} }
} }