kopia lustrzana https://github.com/OpenDroneMap/WebODM
Added processing node view info page mockup
rodzic
804193b9a1
commit
d383c25e5f
|
@ -421,9 +421,9 @@
|
||||||
padding-left: 16px;
|
padding-left: 16px;
|
||||||
background: url(../img/icon-deletelink.svg) 0 1px no-repeat; }
|
background: url(../img/icon-deletelink.svg) 0 1px no-repeat; }
|
||||||
.admin-area a.deletelink:link, .admin-area a.deletelink:visited {
|
.admin-area a.deletelink:link, .admin-area a.deletelink:visited {
|
||||||
color: #CC3434; }
|
color: #fff; }
|
||||||
.admin-area a.deletelink:focus, .admin-area a.deletelink:hover {
|
.admin-area a.deletelink:focus, .admin-area a.deletelink:hover {
|
||||||
color: #993333;
|
color: #fff;
|
||||||
text-decoration: none; }
|
text-decoration: none; }
|
||||||
.admin-area .object-tools {
|
.admin-area .object-tools {
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -658,11 +658,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
a.deletelink:link, a.deletelink:visited {
|
a.deletelink:link, a.deletelink:visited {
|
||||||
color: #CC3434;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.deletelink:focus, a.deletelink:hover {
|
a.deletelink:focus, a.deletelink:hover {
|
||||||
color: #993333;
|
color: #fff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,424 +1,258 @@
|
||||||
@import url('widgets.css');
|
@import url("widgets.css");
|
||||||
|
|
||||||
/* FORM ROWS */
|
/* FORM ROWS */
|
||||||
|
.admin-area {
|
||||||
.form-row {
|
/* FORM LABELS */
|
||||||
|
/* RADIO BUTTONS */
|
||||||
|
/* ALIGNED FIELDSETS */
|
||||||
|
/* WIDE FIELDSETS */
|
||||||
|
/* COLLAPSED FIELDSETS */
|
||||||
|
/* MONOSPACE TEXTAREAS */
|
||||||
|
/* SUBMIT ROW */
|
||||||
|
/* CUSTOM FORM FIELDS */
|
||||||
|
/* INLINES */
|
||||||
|
/* RELATED FIELD ADD ONE / LOOKUP */ }
|
||||||
|
.admin-area .form-row {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee; }
|
||||||
}
|
.admin-area .form-row img, .admin-area .form-row input {
|
||||||
|
vertical-align: middle; }
|
||||||
.form-row img, .form-row input {
|
.admin-area .form-row label input[type="checkbox"] {
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-row label input[type="checkbox"] {
|
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
vertical-align: 0;
|
vertical-align: 0; }
|
||||||
}
|
.admin-area form .form-row p {
|
||||||
|
padding-left: 0; }
|
||||||
form .form-row p {
|
.admin-area .hidden {
|
||||||
padding-left: 0;
|
display: none; }
|
||||||
}
|
.admin-area label {
|
||||||
|
|
||||||
.hidden {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* FORM LABELS */
|
|
||||||
|
|
||||||
label {
|
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: #666;
|
color: #666;
|
||||||
font-size: 13px;
|
font-size: 13px; }
|
||||||
}
|
.admin-area .required label, .admin-area label.required {
|
||||||
|
|
||||||
.required label, label.required {
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #333;
|
color: #333; }
|
||||||
}
|
.admin-area form ul.radiolist li {
|
||||||
|
list-style-type: none; }
|
||||||
/* RADIO BUTTONS */
|
.admin-area form ul.radiolist label {
|
||||||
|
|
||||||
form ul.radiolist li {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
form ul.radiolist label {
|
|
||||||
float: none;
|
float: none;
|
||||||
display: inline;
|
display: inline; }
|
||||||
}
|
.admin-area form ul.radiolist input[type="radio"] {
|
||||||
|
|
||||||
form ul.radiolist input[type="radio"] {
|
|
||||||
margin: -2px 4px 0 0;
|
margin: -2px 4px 0 0;
|
||||||
padding: 0;
|
padding: 0; }
|
||||||
}
|
.admin-area form ul.inline {
|
||||||
|
|
||||||
form ul.inline {
|
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
padding: 0;
|
padding: 0; }
|
||||||
}
|
.admin-area form ul.inline li {
|
||||||
|
|
||||||
form ul.inline li {
|
|
||||||
float: left;
|
float: left;
|
||||||
padding-right: 7px;
|
padding-right: 7px; }
|
||||||
}
|
.admin-area .aligned label {
|
||||||
|
|
||||||
/* ALIGNED FIELDSETS */
|
|
||||||
|
|
||||||
.aligned label {
|
|
||||||
display: block;
|
display: block;
|
||||||
padding: 4px 10px 0 0;
|
padding: 4px 10px 0 0;
|
||||||
float: left;
|
float: left;
|
||||||
width: 160px;
|
width: 160px;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
line-height: 1;
|
line-height: 1; }
|
||||||
}
|
.admin-area .aligned label:not(.vCheckboxLabel):after {
|
||||||
|
|
||||||
.aligned label:not(.vCheckboxLabel):after {
|
|
||||||
content: '';
|
content: '';
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
height: 26px;
|
height: 26px; }
|
||||||
}
|
.admin-area .aligned label + p {
|
||||||
|
|
||||||
.aligned label + p {
|
|
||||||
padding: 6px 0;
|
padding: 6px 0;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
margin-left: 170px;
|
margin-left: 170px; }
|
||||||
}
|
.admin-area .aligned ul label {
|
||||||
|
|
||||||
.aligned ul label {
|
|
||||||
display: inline;
|
display: inline;
|
||||||
float: none;
|
float: none;
|
||||||
width: auto;
|
width: auto; }
|
||||||
}
|
.admin-area .aligned .form-row input {
|
||||||
|
margin-bottom: 0; }
|
||||||
.aligned .form-row input {
|
.admin-area .colMS .aligned .vLargeTextField, .admin-area .colMS .aligned .vXMLLargeTextField {
|
||||||
margin-bottom: 0;
|
width: 350px; }
|
||||||
}
|
.admin-area form .aligned ul {
|
||||||
|
|
||||||
.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {
|
|
||||||
width: 350px;
|
|
||||||
}
|
|
||||||
|
|
||||||
form .aligned ul {
|
|
||||||
margin-left: 160px;
|
margin-left: 160px;
|
||||||
padding-left: 10px;
|
padding-left: 10px; }
|
||||||
}
|
.admin-area form .aligned ul.radiolist {
|
||||||
|
|
||||||
form .aligned ul.radiolist {
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0; }
|
||||||
}
|
.admin-area form .aligned p.help {
|
||||||
|
|
||||||
form .aligned p.help {
|
|
||||||
clear: left;
|
clear: left;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-left: 160px;
|
margin-left: 160px;
|
||||||
padding-left: 10px;
|
padding-left: 10px; }
|
||||||
}
|
.admin-area form .aligned label + p.help {
|
||||||
|
|
||||||
form .aligned label + p.help {
|
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
padding-left: 0;
|
padding-left: 0; }
|
||||||
}
|
.admin-area form .aligned p.help:last-child {
|
||||||
|
|
||||||
form .aligned p.help:last-child {
|
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
padding-bottom: 0;
|
padding-bottom: 0; }
|
||||||
}
|
.admin-area form .aligned input + p.help,
|
||||||
|
.admin-area form .aligned textarea + p.help,
|
||||||
form .aligned input + p.help,
|
.admin-area form .aligned select + p.help {
|
||||||
form .aligned textarea + p.help,
|
|
||||||
form .aligned select + p.help {
|
|
||||||
margin-left: 160px;
|
margin-left: 160px;
|
||||||
padding-left: 10px;
|
padding-left: 10px; }
|
||||||
}
|
.admin-area form .aligned ul li {
|
||||||
|
list-style: none; }
|
||||||
form .aligned ul li {
|
.admin-area form .aligned table p {
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
form .aligned table p {
|
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
padding-left: 0;
|
padding-left: 0; }
|
||||||
}
|
.admin-area .aligned .vCheckboxLabel {
|
||||||
|
|
||||||
.aligned .vCheckboxLabel {
|
|
||||||
float: none;
|
float: none;
|
||||||
width: auto;
|
width: auto;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: -3px;
|
vertical-align: -3px;
|
||||||
padding: 0 0 5px 5px;
|
padding: 0 0 5px 5px; }
|
||||||
}
|
.admin-area .aligned .vCheckboxLabel + p.help {
|
||||||
|
margin-top: -4px; }
|
||||||
.aligned .vCheckboxLabel + p.help {
|
.admin-area .colM .aligned .vLargeTextField, .admin-area .colM .aligned .vXMLLargeTextField {
|
||||||
margin-top: -4px;
|
width: 610px; }
|
||||||
}
|
.admin-area .checkbox-row p.help {
|
||||||
|
|
||||||
.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {
|
|
||||||
width: 610px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-row p.help {
|
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
padding-left: 0;
|
padding-left: 0; }
|
||||||
}
|
.admin-area fieldset .field-box {
|
||||||
|
|
||||||
fieldset .field-box {
|
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 20px;
|
margin-right: 20px; }
|
||||||
}
|
.admin-area .wide label {
|
||||||
|
width: 200px; }
|
||||||
/* WIDE FIELDSETS */
|
.admin-area form .wide p, .admin-area form .wide input + p.help {
|
||||||
|
margin-left: 200px; }
|
||||||
.wide label {
|
.admin-area form .wide p.help {
|
||||||
width: 200px;
|
padding-left: 38px; }
|
||||||
}
|
.admin-area .colM fieldset.wide .vLargeTextField, .admin-area .colM fieldset.wide .vXMLLargeTextField {
|
||||||
|
width: 450px; }
|
||||||
form .wide p, form .wide input + p.help {
|
.admin-area fieldset.collapsed * {
|
||||||
margin-left: 200px;
|
display: none; }
|
||||||
}
|
.admin-area fieldset.collapsed h2, .admin-area fieldset.collapsed {
|
||||||
|
display: block; }
|
||||||
form .wide p.help {
|
.admin-area fieldset.collapsed {
|
||||||
padding-left: 38px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {
|
|
||||||
width: 450px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* COLLAPSED FIELDSETS */
|
|
||||||
|
|
||||||
fieldset.collapsed * {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.collapsed h2, fieldset.collapsed {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.collapsed {
|
|
||||||
border: 1px solid #eee;
|
border: 1px solid #eee;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
overflow: hidden;
|
overflow: hidden; }
|
||||||
}
|
.admin-area fieldset.collapsed h2 {
|
||||||
|
|
||||||
fieldset.collapsed h2 {
|
|
||||||
background: #f8f8f8;
|
background: #f8f8f8;
|
||||||
color: #666;
|
color: #666; }
|
||||||
}
|
.admin-area fieldset .collapse-toggle {
|
||||||
|
color: #fff; }
|
||||||
fieldset .collapse-toggle {
|
.admin-area fieldset.collapsed .collapse-toggle {
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.collapsed .collapse-toggle {
|
|
||||||
background: transparent;
|
background: transparent;
|
||||||
display: inline;
|
display: inline;
|
||||||
color: #447e9b;
|
color: #447e9b; }
|
||||||
}
|
.admin-area fieldset.monospace textarea {
|
||||||
|
font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; }
|
||||||
/* MONOSPACE TEXTAREAS */
|
.admin-area .submit-row {
|
||||||
|
|
||||||
fieldset.monospace textarea {
|
|
||||||
font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SUBMIT ROW */
|
|
||||||
|
|
||||||
.submit-row {
|
|
||||||
padding: 12px 14px;
|
padding: 12px 14px;
|
||||||
margin: 0 0 20px;
|
margin: 0 0 20px;
|
||||||
background: #f8f8f8;
|
background: #f8f8f8;
|
||||||
border: 1px solid #eee;
|
border: 1px solid #eee;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
overflow: hidden;
|
overflow: hidden; }
|
||||||
}
|
.admin-area body.popup .submit-row {
|
||||||
|
overflow: auto; }
|
||||||
body.popup .submit-row {
|
.admin-area .submit-row input {
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-row input {
|
|
||||||
height: 35px;
|
height: 35px;
|
||||||
line-height: 15px;
|
line-height: 15px;
|
||||||
margin: 0 0 0 5px;
|
margin: 0 0 0 5px; }
|
||||||
}
|
.admin-area .submit-row input.default {
|
||||||
|
|
||||||
.submit-row input.default {
|
|
||||||
margin: 0 0 0 8px;
|
margin: 0 0 0 8px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase; }
|
||||||
}
|
.admin-area .submit-row p {
|
||||||
|
margin: 0.3em; }
|
||||||
.submit-row p {
|
.admin-area .submit-row p.deletelink-box {
|
||||||
margin: 0.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-row p.deletelink-box {
|
|
||||||
float: left;
|
float: left;
|
||||||
margin: 0;
|
margin: 0; }
|
||||||
}
|
.admin-area .submit-row a.deletelink {
|
||||||
|
|
||||||
.submit-row a.deletelink {
|
|
||||||
display: block;
|
display: block;
|
||||||
background: #ba2121;
|
background: #ba2121;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
height: 15px;
|
|
||||||
line-height: 15px;
|
line-height: 15px;
|
||||||
color: #fff;
|
color: #fff; }
|
||||||
}
|
.admin-area .submit-row a.deletelink:focus,
|
||||||
|
.admin-area .submit-row a.deletelink:hover,
|
||||||
.submit-row a.deletelink:focus,
|
.admin-area .submit-row a.deletelink:active {
|
||||||
.submit-row a.deletelink:hover,
|
background: #a41515; }
|
||||||
.submit-row a.deletelink:active {
|
.admin-area .vSelectMultipleField {
|
||||||
background: #a41515;
|
vertical-align: top; }
|
||||||
}
|
.admin-area .vCheckboxField {
|
||||||
|
border: none; }
|
||||||
/* CUSTOM FORM FIELDS */
|
.admin-area .vDateField, .admin-area .vTimeField {
|
||||||
|
|
||||||
.vSelectMultipleField {
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vCheckboxField {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vDateField, .vTimeField {
|
|
||||||
margin-right: 2px;
|
margin-right: 2px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px; }
|
||||||
}
|
.admin-area .vDateField {
|
||||||
|
min-width: 6.85em; }
|
||||||
.vDateField {
|
.admin-area .vTimeField {
|
||||||
min-width: 6.85em;
|
min-width: 4.7em; }
|
||||||
}
|
.admin-area .vURLField {
|
||||||
|
width: 30em; }
|
||||||
.vTimeField {
|
.admin-area .vLargeTextField, .admin-area .vXMLLargeTextField {
|
||||||
min-width: 4.7em;
|
width: 48em; }
|
||||||
}
|
.admin-area .flatpages-flatpage #id_content {
|
||||||
|
height: 40.2em; }
|
||||||
.vURLField {
|
.admin-area .module table .vPositiveSmallIntegerField {
|
||||||
width: 30em;
|
width: 2.2em; }
|
||||||
}
|
.admin-area .vTextField {
|
||||||
|
width: 20em; }
|
||||||
.vLargeTextField, .vXMLLargeTextField {
|
.admin-area .vIntegerField {
|
||||||
width: 48em;
|
width: 5em; }
|
||||||
}
|
.admin-area .vBigIntegerField {
|
||||||
|
width: 10em; }
|
||||||
.flatpages-flatpage #id_content {
|
.admin-area .vForeignKeyRawIdAdminField {
|
||||||
height: 40.2em;
|
width: 5em; }
|
||||||
}
|
.admin-area .inline-group {
|
||||||
|
|
||||||
.module table .vPositiveSmallIntegerField {
|
|
||||||
width: 2.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vTextField {
|
|
||||||
width: 20em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vIntegerField {
|
|
||||||
width: 5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vBigIntegerField {
|
|
||||||
width: 10em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.vForeignKeyRawIdAdminField {
|
|
||||||
width: 5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* INLINES */
|
|
||||||
|
|
||||||
.inline-group {
|
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0 0 30px;
|
margin: 0 0 30px; }
|
||||||
}
|
.admin-area .inline-group thead th {
|
||||||
|
padding: 8px 10px; }
|
||||||
.inline-group thead th {
|
.admin-area .inline-group .aligned label {
|
||||||
padding: 8px 10px;
|
width: 160px; }
|
||||||
}
|
.admin-area .inline-related {
|
||||||
|
position: relative; }
|
||||||
.inline-group .aligned label {
|
.admin-area .inline-related h3 {
|
||||||
width: 160px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inline-related {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inline-related h3 {
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
color: #666;
|
color: #666;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
background: #f8f8f8;
|
background: #f8f8f8;
|
||||||
border-top: 1px solid #eee;
|
border-top: 1px solid #eee;
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee; }
|
||||||
}
|
.admin-area .inline-related h3 span.delete {
|
||||||
|
float: right; }
|
||||||
.inline-related h3 span.delete {
|
.admin-area .inline-related h3 span.delete label {
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inline-related h3 span.delete label {
|
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
font-size: 11px;
|
font-size: 11px; }
|
||||||
}
|
.admin-area .inline-related fieldset {
|
||||||
|
|
||||||
.inline-related fieldset {
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border: none;
|
border: none;
|
||||||
width: 100%;
|
width: 100%; }
|
||||||
}
|
.admin-area .inline-related fieldset.module h3 {
|
||||||
|
|
||||||
.inline-related fieldset.module h3 {
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 2px 5px 3px 5px;
|
padding: 2px 5px 3px 5px;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
background: #bcd;
|
background: #bcd;
|
||||||
color: #fff;
|
color: #fff; }
|
||||||
}
|
.admin-area .inline-group .tabular fieldset.module {
|
||||||
|
border: none; }
|
||||||
.inline-group .tabular fieldset.module {
|
.admin-area .inline-related.tabular fieldset.module table {
|
||||||
border: none;
|
width: 100%; }
|
||||||
}
|
.admin-area .last-related fieldset {
|
||||||
|
border: none; }
|
||||||
.inline-related.tabular fieldset.module table {
|
.admin-area .inline-group .tabular tr.has_original td {
|
||||||
width: 100%;
|
padding-top: 2em; }
|
||||||
}
|
.admin-area .inline-group .tabular tr td.original {
|
||||||
|
|
||||||
.last-related fieldset {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inline-group .tabular tr.has_original td {
|
|
||||||
padding-top: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inline-group .tabular tr td.original {
|
|
||||||
padding: 2px 0 0 0;
|
padding: 2px 0 0 0;
|
||||||
width: 0;
|
width: 0;
|
||||||
_position: relative;
|
_position: relative; }
|
||||||
}
|
.admin-area .inline-group .tabular th.original {
|
||||||
|
|
||||||
.inline-group .tabular th.original {
|
|
||||||
width: 0px;
|
width: 0px;
|
||||||
padding: 0;
|
padding: 0; }
|
||||||
}
|
.admin-area .inline-group .tabular td.original p {
|
||||||
|
|
||||||
.inline-group .tabular td.original p {
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
height: 1.1em;
|
height: 1.1em;
|
||||||
|
@ -427,73 +261,50 @@ body.popup .submit-row {
|
||||||
font-size: 9px;
|
font-size: 9px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #666;
|
color: #666;
|
||||||
_width: 700px;
|
_width: 700px; }
|
||||||
}
|
.admin-area .inline-group ul.tools {
|
||||||
|
|
||||||
.inline-group ul.tools {
|
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
list-style: none;
|
list-style: none; }
|
||||||
}
|
.admin-area .inline-group ul.tools li {
|
||||||
|
|
||||||
.inline-group ul.tools li {
|
|
||||||
display: inline;
|
display: inline;
|
||||||
padding: 0 5px;
|
padding: 0 5px; }
|
||||||
}
|
.admin-area .inline-group div.add-row,
|
||||||
|
.admin-area .inline-group .tabular tr.add-row td {
|
||||||
.inline-group div.add-row,
|
|
||||||
.inline-group .tabular tr.add-row td {
|
|
||||||
color: #666;
|
color: #666;
|
||||||
background: #f8f8f8;
|
background: #f8f8f8;
|
||||||
padding: 8px 10px;
|
padding: 8px 10px;
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee; }
|
||||||
}
|
.admin-area .inline-group .tabular tr.add-row td {
|
||||||
|
|
||||||
.inline-group .tabular tr.add-row td {
|
|
||||||
padding: 8px 10px;
|
padding: 8px 10px;
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee; }
|
||||||
}
|
.admin-area .inline-group ul.tools a.add,
|
||||||
|
.admin-area .inline-group div.add-row a,
|
||||||
.inline-group ul.tools a.add,
|
.admin-area .inline-group .tabular tr.add-row td a {
|
||||||
.inline-group div.add-row a,
|
|
||||||
.inline-group .tabular tr.add-row td a {
|
|
||||||
background: url(../img/icon-addlink.svg) 0 1px no-repeat;
|
background: url(../img/icon-addlink.svg) 0 1px no-repeat;
|
||||||
padding-left: 16px;
|
padding-left: 16px;
|
||||||
font-size: 12px;
|
font-size: 12px; }
|
||||||
}
|
.admin-area .empty-form {
|
||||||
|
display: none; }
|
||||||
.empty-form {
|
.admin-area .add-another, .admin-area .related-lookup {
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* RELATED FIELD ADD ONE / LOOKUP */
|
|
||||||
|
|
||||||
.add-another, .related-lookup {
|
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: 14px;
|
background-size: 14px; }
|
||||||
}
|
.admin-area .add-another {
|
||||||
|
|
||||||
.add-another {
|
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background-image: url(../img/icon-addlink.svg);
|
background-image: url(../img/icon-addlink.svg); }
|
||||||
}
|
.admin-area .related-lookup {
|
||||||
|
|
||||||
.related-lookup {
|
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
background-image: url(../img/search.svg);
|
background-image: url(../img/search.svg); }
|
||||||
}
|
.admin-area form .related-widget-wrapper ul {
|
||||||
|
|
||||||
form .related-widget-wrapper ul {
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
padding-left: 0;
|
padding-left: 0; }
|
||||||
}
|
.admin-area .clearable-file-input input {
|
||||||
|
margin-top: 0; }
|
||||||
|
|
||||||
.clearable-file-input input {
|
/*# sourceMappingURL=forms.css.map */
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,499 @@
|
||||||
|
@import url('widgets.css');
|
||||||
|
|
||||||
|
/* FORM ROWS */
|
||||||
|
.admin-area{
|
||||||
|
.form-row {
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 13px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-row img, .form-row input {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-row label input[type="checkbox"] {
|
||||||
|
margin-top: 0;
|
||||||
|
vertical-align: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .form-row p {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FORM LABELS */
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-weight: normal;
|
||||||
|
color: #666;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.required label, label.required {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* RADIO BUTTONS */
|
||||||
|
|
||||||
|
form ul.radiolist li {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
form ul.radiolist label {
|
||||||
|
float: none;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
form ul.radiolist input[type="radio"] {
|
||||||
|
margin: -2px 4px 0 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form ul.inline {
|
||||||
|
margin-left: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form ul.inline li {
|
||||||
|
float: left;
|
||||||
|
padding-right: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ALIGNED FIELDSETS */
|
||||||
|
|
||||||
|
.aligned label {
|
||||||
|
display: block;
|
||||||
|
padding: 4px 10px 0 0;
|
||||||
|
float: left;
|
||||||
|
width: 160px;
|
||||||
|
word-wrap: break-word;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aligned label:not(.vCheckboxLabel):after {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
height: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aligned label + p {
|
||||||
|
padding: 6px 0;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 170px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aligned ul label {
|
||||||
|
display: inline;
|
||||||
|
float: none;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aligned .form-row input {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {
|
||||||
|
width: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .aligned ul {
|
||||||
|
margin-left: 160px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .aligned ul.radiolist {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .aligned p.help {
|
||||||
|
clear: left;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 160px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .aligned label + p.help {
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .aligned p.help:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .aligned input + p.help,
|
||||||
|
form .aligned textarea + p.help,
|
||||||
|
form .aligned select + p.help {
|
||||||
|
margin-left: 160px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .aligned ul li {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .aligned table p {
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aligned .vCheckboxLabel {
|
||||||
|
float: none;
|
||||||
|
width: auto;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: -3px;
|
||||||
|
padding: 0 0 5px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.aligned .vCheckboxLabel + p.help {
|
||||||
|
margin-top: -4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {
|
||||||
|
width: 610px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkbox-row p.help {
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset .field-box {
|
||||||
|
float: left;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* WIDE FIELDSETS */
|
||||||
|
|
||||||
|
.wide label {
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .wide p, form .wide input + p.help {
|
||||||
|
margin-left: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form .wide p.help {
|
||||||
|
padding-left: 38px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {
|
||||||
|
width: 450px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* COLLAPSED FIELDSETS */
|
||||||
|
|
||||||
|
fieldset.collapsed * {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset.collapsed h2, fieldset.collapsed {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset.collapsed {
|
||||||
|
border: 1px solid #eee;
|
||||||
|
border-radius: 4px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset.collapsed h2 {
|
||||||
|
background: #f8f8f8;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset .collapse-toggle {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset.collapsed .collapse-toggle {
|
||||||
|
background: transparent;
|
||||||
|
display: inline;
|
||||||
|
color: #447e9b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MONOSPACE TEXTAREAS */
|
||||||
|
|
||||||
|
fieldset.monospace textarea {
|
||||||
|
font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SUBMIT ROW */
|
||||||
|
|
||||||
|
.submit-row {
|
||||||
|
padding: 12px 14px;
|
||||||
|
margin: 0 0 20px;
|
||||||
|
background: #f8f8f8;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
border-radius: 4px;
|
||||||
|
text-align: right;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.popup .submit-row {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-row input {
|
||||||
|
height: 35px;
|
||||||
|
line-height: 15px;
|
||||||
|
margin: 0 0 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-row input.default {
|
||||||
|
margin: 0 0 0 8px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-row p {
|
||||||
|
margin: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-row p.deletelink-box {
|
||||||
|
float: left;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-row a.deletelink {
|
||||||
|
display: block;
|
||||||
|
background: #ba2121;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 10px 15px;
|
||||||
|
line-height: 15px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit-row a.deletelink:focus,
|
||||||
|
.submit-row a.deletelink:hover,
|
||||||
|
.submit-row a.deletelink:active {
|
||||||
|
background: #a41515;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CUSTOM FORM FIELDS */
|
||||||
|
|
||||||
|
.vSelectMultipleField {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vCheckboxField {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vDateField, .vTimeField {
|
||||||
|
margin-right: 2px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vDateField {
|
||||||
|
min-width: 6.85em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vTimeField {
|
||||||
|
min-width: 4.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vURLField {
|
||||||
|
width: 30em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vLargeTextField, .vXMLLargeTextField {
|
||||||
|
width: 48em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpages-flatpage #id_content {
|
||||||
|
height: 40.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.module table .vPositiveSmallIntegerField {
|
||||||
|
width: 2.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vTextField {
|
||||||
|
width: 20em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vIntegerField {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vBigIntegerField {
|
||||||
|
width: 10em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vForeignKeyRawIdAdminField {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* INLINES */
|
||||||
|
|
||||||
|
.inline-group {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group thead th {
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group .aligned label {
|
||||||
|
width: 160px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-related {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-related h3 {
|
||||||
|
margin: 0;
|
||||||
|
color: #666;
|
||||||
|
padding: 5px;
|
||||||
|
font-size: 13px;
|
||||||
|
background: #f8f8f8;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-related h3 span.delete {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-related h3 span.delete label {
|
||||||
|
margin-left: 2px;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-related fieldset {
|
||||||
|
margin: 0;
|
||||||
|
background: #fff;
|
||||||
|
border: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-related fieldset.module h3 {
|
||||||
|
margin: 0;
|
||||||
|
padding: 2px 5px 3px 5px;
|
||||||
|
font-size: 11px;
|
||||||
|
text-align: left;
|
||||||
|
font-weight: bold;
|
||||||
|
background: #bcd;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group .tabular fieldset.module {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-related.tabular fieldset.module table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.last-related fieldset {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group .tabular tr.has_original td {
|
||||||
|
padding-top: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group .tabular tr td.original {
|
||||||
|
padding: 2px 0 0 0;
|
||||||
|
width: 0;
|
||||||
|
_position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group .tabular th.original {
|
||||||
|
width: 0px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group .tabular td.original p {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
height: 1.1em;
|
||||||
|
padding: 2px 9px;
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: 9px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #666;
|
||||||
|
_width: 700px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group ul.tools {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group ul.tools li {
|
||||||
|
display: inline;
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group div.add-row,
|
||||||
|
.inline-group .tabular tr.add-row td {
|
||||||
|
color: #666;
|
||||||
|
background: #f8f8f8;
|
||||||
|
padding: 8px 10px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group .tabular tr.add-row td {
|
||||||
|
padding: 8px 10px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-group ul.tools a.add,
|
||||||
|
.inline-group div.add-row a,
|
||||||
|
.inline-group .tabular tr.add-row td a {
|
||||||
|
background: url(../img/icon-addlink.svg) 0 1px no-repeat;
|
||||||
|
padding-left: 16px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-form {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* RELATED FIELD ADD ONE / LOOKUP */
|
||||||
|
|
||||||
|
.add-another, .related-lookup {
|
||||||
|
margin-left: 5px;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-another {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background-image: url(../img/icon-addlink.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.related-lookup {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
background-image: url(../img/search.svg);
|
||||||
|
}
|
||||||
|
|
||||||
|
form .related-widget-wrapper ul {
|
||||||
|
display: inline-block;
|
||||||
|
margin-left: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearable-file-input input {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
}
|
|
@ -39,4 +39,10 @@ ul#side-menu.nav a {
|
||||||
.navbar-default {
|
.navbar-default {
|
||||||
background-color: white; }
|
background-color: white; }
|
||||||
|
|
||||||
|
.alert {
|
||||||
|
margin-bottom: 10px; }
|
||||||
|
|
||||||
|
table.table-first-col-bold td:first-child {
|
||||||
|
font-weight: bold; }
|
||||||
|
|
||||||
/*# sourceMappingURL=main.css.map */
|
/*# sourceMappingURL=main.css.map */
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"mappings": "AAAA,WAAW;EACP,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;EAChB,gBAAgB,EAAE,OAAO;EAEzB,yBAAa;IACT,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,GAAG;EAEhB,wBAAY;IACR,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,GAAG;EAGpB,8BAAkB;IACd,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,IAAI;EAIrB,+CAAiB;IACb,KAAK,EAAE,KAAK;EAGhB,qHAAyB;IACrB,gBAAgB,EAAE,OAAO;EAM7B,kEAAgB;IACZ,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,OAAO;EAIjC,kDAAsC;IAClC,MAAM,EAAE,IAAI;EAGhB,yBAAa;IACT,OAAO,EAAE,KAAK;IAEd,gCAAM;MACF,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,IAAI;;AAMnB,kBAAC;EACG,KAAK,EAAE,IAAI;;AAInB,QAAQ;EACJ,KAAK,EAAE,IAAI;;AAGf,WAAY;EACR,UAAU,EAAE,IAAI;;AAGpB,eAAe;EACX,gBAAgB,EAAE,KAAK",
|
"mappings": "AAAA,WAAW;EACP,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;EAChB,gBAAgB,EAAE,OAAO;EAEzB,yBAAa;IACT,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,GAAG;EAEhB,wBAAY;IACR,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,GAAG;EAGpB,8BAAkB;IACd,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,IAAI;EAIrB,+CAAiB;IACb,KAAK,EAAE,KAAK;EAGhB,qHAAyB;IACrB,gBAAgB,EAAE,OAAO;EAM7B,kEAAgB;IACZ,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,OAAO;EAIjC,kDAAsC;IAClC,MAAM,EAAE,IAAI;EAGhB,yBAAa;IACT,OAAO,EAAE,KAAK;IAEd,gCAAM;MACF,SAAS,EAAE,GAAG;MACd,KAAK,EAAE,IAAI;;AAMnB,kBAAC;EACG,KAAK,EAAE,IAAI;;AAInB,QAAQ;EACJ,KAAK,EAAE,IAAI;;AAGf,WAAY;EACR,UAAU,EAAE,IAAI;;AAGpB,eAAe;EACX,gBAAgB,EAAE,KAAK;;AAG3B,MAAM;EACF,aAAa,EAAE,IAAI;;AAInB,yCAAc;EACV,WAAW,EAAE,IAAI",
|
||||||
"sources": ["main.scss"],
|
"sources": ["main.scss"],
|
||||||
"names": [],
|
"names": [],
|
||||||
"file": "main.css"
|
"file": "main.css"
|
||||||
|
|
|
@ -66,4 +66,14 @@ ul#side-menu.nav{
|
||||||
|
|
||||||
.navbar-default{
|
.navbar-default{
|
||||||
background-color: white;
|
background-color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.alert{
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-first-col-bold{
|
||||||
|
td:first-child{
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
{% block extra-headers %}{% endblock %}
|
{% block extra-headers %}{% endblock %}
|
||||||
<link rel="stylesheet" type="text/css" href="{% static 'app/css/main.css' %}" />
|
<link rel="stylesheet" type="text/css" href="{% static 'app/css/main.css' %}" />
|
||||||
<script src="{% static 'app/js/vendor/modernizr-2.8.3.min.js' %}"></script>
|
<script src="{% static 'app/js/vendor/modernizr-2.8.3.min.js' %}"></script>
|
||||||
|
<script src="{% static 'app/js/vendor/jquery-1.11.2.min.js' %}"></script>
|
||||||
<title>{{title|default:"Login"}} - WebODM</title>
|
<title>{{title|default:"Login"}} - WebODM</title>
|
||||||
</head>
|
</head>
|
||||||
<body data-admin-utc-offset="{% now "Z" %}">
|
<body data-admin-utc-offset="{% now "Z" %}">
|
||||||
|
@ -67,8 +68,6 @@
|
||||||
{% block page-wrapper %}{% endblock %}
|
{% block page-wrapper %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
|
|
||||||
<script>window.jQuery || document.write('<script src="{% static 'app/js/vendor/jquery-1.11.2.min.js' %}"><\/script>')</script>
|
|
||||||
<script src="{% static 'app/js/vendor/bootstrap.min.js' %}"></script>
|
<script src="{% static 'app/js/vendor/bootstrap.min.js' %}"></script>
|
||||||
<script src="{% static 'app/js/vendor/metisMenu.min.js' %}"></script>
|
<script src="{% static 'app/js/vendor/metisMenu.min.js' %}"></script>
|
||||||
<script src="{% static 'app/js/main.js' %}"></script>
|
<script src="{% static 'app/js/main.js' %}"></script>
|
||||||
|
|
|
@ -248,7 +248,7 @@
|
||||||
|
|
||||||
{% for node in nodes %}
|
{% for node in nodes %}
|
||||||
<li>
|
<li>
|
||||||
<a href="#"><span class="fa fa-laptop"></span> {{node}}</a>
|
<a href="{% url 'processing_node' node.id %}"><span class="fa fa-laptop"></span> {{node}}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<li>
|
<li>
|
||||||
|
@ -277,6 +277,15 @@
|
||||||
<div id="page-wrapper">
|
<div id="page-wrapper">
|
||||||
<section class="main">
|
<section class="main">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
{% block messages %}
|
||||||
|
{% for message in messages %}
|
||||||
|
<div class="alert alert-{{ message.tags }} alert-dismissible">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||||
|
{{ message }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
{% extends "app/logged_in_base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h3>Processing Node</h3>
|
||||||
|
<table class="table table-bordered table-first-col-bold">
|
||||||
|
<tr>
|
||||||
|
<td>{% trans "Hostname" %}</td>
|
||||||
|
<td>{{ processing_node.hostname }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans "Port" %}</td>
|
||||||
|
<td>{{ processing_node.port }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans "API Version" %}</td>
|
||||||
|
<td>{{ processing_node.api_version }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans "Queue Count" %}</td>
|
||||||
|
<td>{{ processing_node.queue_count }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans "Last Refreshed" %}</td>
|
||||||
|
<td>{{ processing_node.last_refreshed }}</td> <!-- TODO: timezone? -->
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans "Options (JSON)" %}</td>
|
||||||
|
<td><div id="processing_node_json"></div></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
// TODO: we'll need a prettier console library to display stuff like
|
||||||
|
// json, console output, etc.
|
||||||
|
// this is temporary!
|
||||||
|
var optionsText = JSON.stringify(JSON.parse("{{ available_options_json|escapejs }}"), null, 4);
|
||||||
|
$("#processing_node_json")
|
||||||
|
.html(optionsText.replace(/\n/g, "<br/>").replace(/ /g, " "))
|
||||||
|
.css({
|
||||||
|
'overflow': 'auto',
|
||||||
|
'max-height': '200px'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{% endblock %}
|
|
@ -4,4 +4,5 @@ from . import views
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^$', views.index, name='index'),
|
url(r'^$', views.index, name='index'),
|
||||||
url(r'^dashboard/$', views.dashboard, name='dashboard'),
|
url(r'^dashboard/$', views.dashboard, name='dashboard'),
|
||||||
|
url(r'^processingnode/([\d]+)/$', views.processing_node, name='processing_node'),
|
||||||
]
|
]
|
18
app/views.py
18
app/views.py
|
@ -1,5 +1,7 @@
|
||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect, get_object_or_404
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
from nodeodm.models import ProcessingNode
|
||||||
|
from django.contrib import messages
|
||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
|
@ -7,4 +9,16 @@ def index(request):
|
||||||
else 'login')
|
else 'login')
|
||||||
|
|
||||||
def dashboard(request):
|
def dashboard(request):
|
||||||
return render(request, 'app/dashboard.html', {'title': "Dashboard"})
|
return render(request, 'app/dashboard.html', {'title': 'Dashboard'})
|
||||||
|
|
||||||
|
def processing_node(request, processing_node_id):
|
||||||
|
pn = get_object_or_404(ProcessingNode, pk=processing_node_id)
|
||||||
|
if not pn.update_node_info():
|
||||||
|
messages.add_message(request, messages.constants.WARNING, '{} seems to be offline.'.format(pn))
|
||||||
|
|
||||||
|
return render(request, 'app/processing_node.html',
|
||||||
|
{
|
||||||
|
'title': 'Processing Node',
|
||||||
|
'processing_node': pn,
|
||||||
|
'available_options_json': pn.get_available_options_json()
|
||||||
|
})
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
A wrapper around Bravado to communicate with a node-OpenDroneMap node.
|
A wrapper around Bravado to communicate with a node-OpenDroneMap node.
|
||||||
"""
|
"""
|
||||||
from bravado.client import SwaggerClient
|
from bravado.client import SwaggerClient
|
||||||
|
from bravado.exception import HTTPError
|
||||||
from requests import ConnectionError
|
from requests import ConnectionError
|
||||||
|
|
||||||
class ApiClient:
|
class ApiClient:
|
||||||
|
@ -15,9 +16,10 @@ class ApiClient:
|
||||||
if not hasattr(self, 'client'):
|
if not hasattr(self, 'client'):
|
||||||
try:
|
try:
|
||||||
self.client = SwaggerClient.from_url('http://{}:{}/swagger.json'.format(self.host, self.port))
|
self.client = SwaggerClient.from_url('http://{}:{}/swagger.json'.format(self.host, self.port))
|
||||||
except ConnectionError as err:
|
except (ConnectionError, HTTPError) as err:
|
||||||
print("{}:{} seems offline: {}".format(self.host, self.port, err))
|
print("{}:{} seems offline: {}".format(self.host, self.port, err))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return func(self, *args, **kwargs)
|
return func(self, *args, **kwargs)
|
||||||
return check
|
return check
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ from django.db import models
|
||||||
from django.contrib.postgres import fields
|
from django.contrib.postgres import fields
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from .api_client import ApiClient
|
from .api_client import ApiClient
|
||||||
|
import json
|
||||||
|
|
||||||
class ProcessingNode(models.Model):
|
class ProcessingNode(models.Model):
|
||||||
hostname = models.CharField(max_length=255, help_text="Hostname where the node is located (can be an internal hostname as well)")
|
hostname = models.CharField(max_length=255, help_text="Hostname where the node is located (can be an internal hostname as well)")
|
||||||
|
@ -24,8 +25,10 @@ class ProcessingNode(models.Model):
|
||||||
|
|
||||||
def update_node_info(self):
|
def update_node_info(self):
|
||||||
"""
|
"""
|
||||||
Retrieves information and options from the node
|
Retrieves information and options from the node API
|
||||||
and saves it into the database
|
and saves it into the database.
|
||||||
|
|
||||||
|
:returns: True if information could be updated, False otherwise
|
||||||
"""
|
"""
|
||||||
info = self.api_client.info()
|
info = self.api_client.info()
|
||||||
if info != None:
|
if info != None:
|
||||||
|
@ -38,3 +41,11 @@ class ProcessingNode(models.Model):
|
||||||
self.last_refreshed = timezone.now()
|
self.last_refreshed = timezone.now()
|
||||||
|
|
||||||
self.save()
|
self.save()
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def get_available_options_json(self):
|
||||||
|
"""
|
||||||
|
:returns available options in JSON string format
|
||||||
|
"""
|
||||||
|
return json.dumps(self.available_options)
|
||||||
|
|
|
@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/1.10/ref/settings/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
from django.contrib.messages import constants as messages
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
@ -136,6 +137,12 @@ LOGIN_URL = '/login/'
|
||||||
# File uploads
|
# File uploads
|
||||||
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
||||||
|
|
||||||
|
# Store flash messages in cookies
|
||||||
|
MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
|
||||||
|
MESSAGE_TAGS = {
|
||||||
|
messages.ERROR: 'danger' # Bootstrap 3 compatibility
|
||||||
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from .local_settings import *
|
from .local_settings import *
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
|
Ładowanie…
Reference in New Issue