mirror of https://github.com/snachodog/mybuddy.git
Add Tempus Dominus date/time picker library and use for Baby birth date.
This commit is contained in:
parent
72818c5ec4
commit
0209314d0f
|
@ -0,0 +1,204 @@
|
||||||
|
/*@preserve
|
||||||
|
* Tempus Dominus Bootstrap4 v5.0.0-alpha7 (https://tempusdominus.github.io/bootstrap-4/)
|
||||||
|
* Copyright 2016-2017 Jonathan Peterson
|
||||||
|
* Licensed under MIT (https://github.com/tempusdominus/bootstrap-3/blob/master/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
.sr-only, .bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after, .bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after, .bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after, .bootstrap-datetimepicker-widget .btn[data-action="clear"]::after, .bootstrap-datetimepicker-widget .btn[data-action="today"]::after, .bootstrap-datetimepicker-widget .picker-switch::after, .bootstrap-datetimepicker-widget table th.prev::after, .bootstrap-datetimepicker-widget table th.next::after {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
padding: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
border: 0; }
|
||||||
|
|
||||||
|
.bootstrap-datetimepicker-widget {
|
||||||
|
list-style: none; }
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu {
|
||||||
|
display: block;
|
||||||
|
margin: 2px 0;
|
||||||
|
padding: 4px;
|
||||||
|
width: 12.8vw; }
|
||||||
|
@media (min-width: 576px) {
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em; } }
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em; } }
|
||||||
|
@media (min-width: 992px) {
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs {
|
||||||
|
width: 38em; } }
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu:before, .bootstrap-datetimepicker-widget.dropdown-menu:after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute; }
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before {
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-bottom: 7px solid #ccc;
|
||||||
|
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||||
|
top: -7px;
|
||||||
|
left: 7px; }
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after {
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid white;
|
||||||
|
top: -6px;
|
||||||
|
left: 8px; }
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.top:before {
|
||||||
|
border-left: 7px solid transparent;
|
||||||
|
border-right: 7px solid transparent;
|
||||||
|
border-top: 7px solid #ccc;
|
||||||
|
border-top-color: rgba(0, 0, 0, 0.2);
|
||||||
|
bottom: -7px;
|
||||||
|
left: 6px; }
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.top:after {
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-right: 6px solid transparent;
|
||||||
|
border-top: 6px solid white;
|
||||||
|
bottom: -6px;
|
||||||
|
left: 7px; }
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.float-right:before {
|
||||||
|
left: auto;
|
||||||
|
right: 6px; }
|
||||||
|
.bootstrap-datetimepicker-widget.dropdown-menu.float-right:after {
|
||||||
|
left: auto;
|
||||||
|
right: 7px; }
|
||||||
|
.bootstrap-datetimepicker-widget .list-unstyled {
|
||||||
|
margin: 0; }
|
||||||
|
.bootstrap-datetimepicker-widget a[data-action] {
|
||||||
|
padding: 6px 0; }
|
||||||
|
.bootstrap-datetimepicker-widget a[data-action]:active {
|
||||||
|
box-shadow: none; }
|
||||||
|
.bootstrap-datetimepicker-widget .timepicker-hour, .bootstrap-datetimepicker-widget .timepicker-minute, .bootstrap-datetimepicker-widget .timepicker-second {
|
||||||
|
width: 54px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.2em;
|
||||||
|
margin: 0; }
|
||||||
|
.bootstrap-datetimepicker-widget button[data-action] {
|
||||||
|
padding: 6px; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after {
|
||||||
|
content: "Increment Hours"; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after {
|
||||||
|
content: "Increment Minutes"; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after {
|
||||||
|
content: "Decrement Hours"; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after {
|
||||||
|
content: "Decrement Minutes"; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after {
|
||||||
|
content: "Show Hours"; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after {
|
||||||
|
content: "Show Minutes"; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after {
|
||||||
|
content: "Toggle AM/PM"; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after {
|
||||||
|
content: "Clear the picker"; }
|
||||||
|
.bootstrap-datetimepicker-widget .btn[data-action="today"]::after {
|
||||||
|
content: "Set the date to today"; }
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch {
|
||||||
|
text-align: center; }
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch::after {
|
||||||
|
content: "Toggle Date and Time Screens"; }
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch td {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
line-height: inherit; }
|
||||||
|
.bootstrap-datetimepicker-widget .picker-switch td span {
|
||||||
|
line-height: 2.5;
|
||||||
|
height: 2.5em;
|
||||||
|
width: 100%; }
|
||||||
|
.bootstrap-datetimepicker-widget table {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0; }
|
||||||
|
.bootstrap-datetimepicker-widget table td,
|
||||||
|
.bootstrap-datetimepicker-widget table th {
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 0.25rem; }
|
||||||
|
.bootstrap-datetimepicker-widget table th {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
width: 20px; }
|
||||||
|
.bootstrap-datetimepicker-widget table th.picker-switch {
|
||||||
|
width: 145px; }
|
||||||
|
.bootstrap-datetimepicker-widget table th.disabled, .bootstrap-datetimepicker-widget table th.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #636c72;
|
||||||
|
cursor: not-allowed; }
|
||||||
|
.bootstrap-datetimepicker-widget table th.prev::after {
|
||||||
|
content: "Previous Month"; }
|
||||||
|
.bootstrap-datetimepicker-widget table th.next::after {
|
||||||
|
content: "Next Month"; }
|
||||||
|
.bootstrap-datetimepicker-widget table thead tr:first-child th {
|
||||||
|
cursor: pointer; }
|
||||||
|
.bootstrap-datetimepicker-widget table thead tr:first-child th:hover {
|
||||||
|
background: #eceeef; }
|
||||||
|
.bootstrap-datetimepicker-widget table td {
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
width: 54px; }
|
||||||
|
.bootstrap-datetimepicker-widget table td.cw {
|
||||||
|
font-size: .8em;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
color: #636c72; }
|
||||||
|
.bootstrap-datetimepicker-widget table td.day {
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
width: 20px; }
|
||||||
|
.bootstrap-datetimepicker-widget table td.day:hover, .bootstrap-datetimepicker-widget table td.hour:hover, .bootstrap-datetimepicker-widget table td.minute:hover, .bootstrap-datetimepicker-widget table td.second:hover {
|
||||||
|
background: #eceeef;
|
||||||
|
cursor: pointer; }
|
||||||
|
.bootstrap-datetimepicker-widget table td.old, .bootstrap-datetimepicker-widget table td.new {
|
||||||
|
color: #636c72; }
|
||||||
|
.bootstrap-datetimepicker-widget table td.today {
|
||||||
|
position: relative; }
|
||||||
|
.bootstrap-datetimepicker-widget table td.today:before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
border: solid transparent;
|
||||||
|
border-width: 0 0 7px 7px;
|
||||||
|
border-bottom-color: #0275d8;
|
||||||
|
border-top-color: rgba(0, 0, 0, 0.2);
|
||||||
|
position: absolute;
|
||||||
|
bottom: 4px;
|
||||||
|
right: 4px; }
|
||||||
|
.bootstrap-datetimepicker-widget table td.active, .bootstrap-datetimepicker-widget table td.active:hover {
|
||||||
|
background-color: #0275d8;
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
|
||||||
|
.bootstrap-datetimepicker-widget table td.active.today:before {
|
||||||
|
border-bottom-color: #fff; }
|
||||||
|
.bootstrap-datetimepicker-widget table td.disabled, .bootstrap-datetimepicker-widget table td.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #636c72;
|
||||||
|
cursor: not-allowed; }
|
||||||
|
.bootstrap-datetimepicker-widget table td span {
|
||||||
|
display: inline-block;
|
||||||
|
width: 54px;
|
||||||
|
height: 54px;
|
||||||
|
line-height: 54px;
|
||||||
|
margin: 2px 1.5px;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 0.25rem; }
|
||||||
|
.bootstrap-datetimepicker-widget table td span:hover {
|
||||||
|
background: #eceeef; }
|
||||||
|
.bootstrap-datetimepicker-widget table td span.active {
|
||||||
|
background-color: #0275d8;
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
|
||||||
|
.bootstrap-datetimepicker-widget table td span.old {
|
||||||
|
color: #636c72; }
|
||||||
|
.bootstrap-datetimepicker-widget table td span.disabled, .bootstrap-datetimepicker-widget table td span.disabled:hover {
|
||||||
|
background: none;
|
||||||
|
color: #636c72;
|
||||||
|
cursor: not-allowed; }
|
||||||
|
.bootstrap-datetimepicker-widget.usetwentyfour td.hour {
|
||||||
|
height: 27px;
|
||||||
|
line-height: 27px; }
|
||||||
|
|
||||||
|
.input-group.date .input-group-addon {
|
||||||
|
cursor: pointer; }
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,19 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django import forms
|
||||||
|
|
||||||
|
from .models import Child
|
||||||
|
|
||||||
|
|
||||||
|
class ChildAddForm(forms.ModelForm):
|
||||||
|
class Meta:
|
||||||
|
model = Child
|
||||||
|
fields = ['first_name', 'last_name', 'birth_date']
|
||||||
|
widgets = {
|
||||||
|
'birth_date': forms.DateInput(attrs={
|
||||||
|
'class': 'datepicker-input',
|
||||||
|
'data-toggle': 'datetimepicker',
|
||||||
|
'data-target': '#id_birth_date',
|
||||||
|
}),
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
|
{% load static %}
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
|
@ -13,6 +15,7 @@
|
||||||
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
|
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
|
||||||
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN"
|
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN"
|
||||||
crossorigin="anonymous" />
|
crossorigin="anonymous" />
|
||||||
|
<link rel="stylesheet" href="{% static "css/tempusdominus-bootstrap-4.min.css" %}" />
|
||||||
</head>
|
</head>
|
||||||
<body style="padding-top: 5rem;">
|
<body style="padding-top: 5rem;">
|
||||||
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
|
||||||
|
@ -60,5 +63,10 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"
|
||||||
|
integrity="sha256-1hjUhpc44NwiNg8OwMu2QzJXhD8kcj+sJA3aCQZoUjg="
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
<script src="{% static "js/tempusdominus-bootstrap-4.min.js" %}"></script>
|
||||||
|
{% block javascript %}{% endblock %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -37,3 +37,14 @@
|
||||||
<a href="{% url 'child-list' %}" class="btn btn-default">Cancel</a>
|
<a href="{% url 'child-list' %}" class="btn btn-default">Cancel</a>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block javascript %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(function () {
|
||||||
|
$('#id_birth_date').datetimepicker({
|
||||||
|
viewMode: 'years',
|
||||||
|
format: 'YYYY-MM-DD'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
|
@ -7,6 +7,7 @@ from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||||
from django.views.generic.list import ListView
|
from django.views.generic.list import ListView
|
||||||
|
|
||||||
from .models import Child, DiaperChange, Feeding, Note, Sleep, TummyTime
|
from .models import Child, DiaperChange, Feeding, Note, Sleep, TummyTime
|
||||||
|
from .forms import ChildAddForm
|
||||||
|
|
||||||
|
|
||||||
class Dashboard(LoginRequiredMixin, TemplateView):
|
class Dashboard(LoginRequiredMixin, TemplateView):
|
||||||
|
@ -18,8 +19,8 @@ class ChildList(LoginRequiredMixin, ListView):
|
||||||
|
|
||||||
|
|
||||||
class ChildAdd(LoginRequiredMixin, CreateView):
|
class ChildAdd(LoginRequiredMixin, CreateView):
|
||||||
|
form_class = ChildAddForm
|
||||||
model = Child
|
model = Child
|
||||||
fields = ['first_name', 'last_name', 'birth_date']
|
|
||||||
success_url = '/children'
|
success_url = '/children'
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue