mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Moved color themes CSS sheets to own folder, nicer crispy form for selecting theme
This commit is contained in:
parent
8e2d568a42
commit
896fa131f0
@ -9,7 +9,7 @@ from django.utils.translation import ugettext as _
|
||||
from django import forms
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Layout, Field
|
||||
from crispy_forms.bootstrap import PrependedText, AppendedText, PrependedAppendedText, StrictButton
|
||||
from crispy_forms.bootstrap import PrependedText, AppendedText, PrependedAppendedText, StrictButton, Div
|
||||
from django.contrib.auth.models import User
|
||||
from common.models import ColorTheme
|
||||
|
||||
@ -165,8 +165,7 @@ class SetPasswordForm(HelperForm):
|
||||
|
||||
|
||||
class ColorThemeSelectForm(forms.ModelForm):
|
||||
""" Form for setting color theme
|
||||
"""
|
||||
""" Form for setting color theme """
|
||||
|
||||
class Meta:
|
||||
model = ColorTheme
|
||||
@ -179,8 +178,14 @@ class ColorThemeSelectForm(forms.ModelForm):
|
||||
self.helper = FormHelper()
|
||||
# Form rendering
|
||||
self.helper.form_show_labels = False
|
||||
self.helper.form_class = 'form-inline'
|
||||
self.helper.layout = Layout(
|
||||
Field('name'),
|
||||
StrictButton(_('Apply Theme'), css_class='btn btn-primary', type='submit')
|
||||
Div(
|
||||
Div(Field('name'),
|
||||
css_class='col-sm-6',
|
||||
style='width: 200px;'),
|
||||
Div(StrictButton(_('Apply Theme'), css_class='btn btn-primary', type='submit'),
|
||||
css_class='col-sm-6',
|
||||
style='width: auto;'),
|
||||
css_class='row',
|
||||
),
|
||||
)
|
||||
|
2793
InvenTree/InvenTree/static/css/color-themes/dark-reader.css
Normal file
2793
InvenTree/InvenTree/static/css/color-themes/dark-reader.css
Normal file
File diff suppressed because it is too large
Load Diff
42
InvenTree/InvenTree/static/css/color-themes/darker.css
Normal file
42
InvenTree/InvenTree/static/css/color-themes/darker.css
Normal file
@ -0,0 +1,42 @@
|
||||
/* Color Theme: "Darker" by Radek Hladik */
|
||||
|
||||
.navbar-nav > li {
|
||||
border-color: rgb(179, 179, 179);
|
||||
}
|
||||
|
||||
.navbar-nav > li > a {
|
||||
color:#0b2a62 !important;
|
||||
}
|
||||
|
||||
.navbar-nav > li > a:hover {
|
||||
color:#202020 !important;
|
||||
}
|
||||
|
||||
.navbar-nav > .open > a {
|
||||
color:#202020 !important;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
background-color: rgb(189, 189, 189);
|
||||
}
|
||||
|
||||
.table-condensed > tbody > tr > td {
|
||||
border-top: 1px solid #062152 !important ;
|
||||
}
|
||||
|
||||
.table-striped > tbody > tr > td {
|
||||
border-top: 1px solid #92b3f1 ;
|
||||
}
|
||||
|
||||
.table-bordered, .table-bordered > tbody > tr > td {
|
||||
border: 1px solid rgb(182,182,182);
|
||||
}
|
||||
|
||||
.table-bordered > thead > tr > th {
|
||||
border: 1px solid rgb(182, 182, 182);
|
||||
background-color: rgb(235, 235, 235);
|
||||
}
|
||||
|
||||
h3 {
|
||||
color:#06255d;
|
||||
}
|
1
InvenTree/InvenTree/static/css/color-themes/default.css
Normal file
1
InvenTree/InvenTree/static/css/color-themes/default.css
Normal file
@ -0,0 +1 @@
|
||||
/* Color Theme: "Default" */
|
@ -1,785 +0,0 @@
|
||||
:root {
|
||||
--primary-color: #335d88;
|
||||
--secondary-color: #b69c80;
|
||||
--highlight-color: #f5efe8;
|
||||
--basic-color: #333;
|
||||
|
||||
--label-red: #e35a57;
|
||||
--label-blue: #4194bd;
|
||||
--label-green: #50aa51;
|
||||
--label-grey: #aaa;
|
||||
--label-yellow: #fdc82a;
|
||||
}
|
||||
|
||||
.markdownx .row {
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
border: 1px solid #cce;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.markdownx-editor {
|
||||
width: 100%;
|
||||
border: 1px solid #cce;
|
||||
border-radius: 3px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.panel-content {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.markdownx-preview {
|
||||
border: 1px solid #cce;
|
||||
border-radius: 3px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* Progress bars */
|
||||
|
||||
.progress {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
margin-bottom: 0px;
|
||||
background: #eeeef5;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
opacity: 60%;
|
||||
background: #2aa02a;
|
||||
}
|
||||
|
||||
.progress-bar-under {
|
||||
background: #eeaa33;
|
||||
}
|
||||
|
||||
.progress-bar-over {
|
||||
background: #337ab7;
|
||||
}
|
||||
|
||||
.progress-value {
|
||||
width: 100%;
|
||||
color: #333;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
font-size: 110%;
|
||||
}
|
||||
|
||||
.qr-code {
|
||||
max-width: 400px;
|
||||
max-height: 400px;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.qr-container {
|
||||
width: 100%;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.navbar-barcode-li {
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.navbar-nav > li {
|
||||
border-left: 1px solid;
|
||||
border-right: 1px solid;
|
||||
border-color: rgb(179, 179, 179);
|
||||
|
||||
}
|
||||
|
||||
.navbar-nav > li > a {
|
||||
color:#0b2a62 !important;
|
||||
}
|
||||
|
||||
.navbar-nav > li > a:hover {
|
||||
color:#202020 !important;
|
||||
}
|
||||
|
||||
.navbar-nav > .open > a {
|
||||
color:#202020 !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.navbar-form {
|
||||
padding-right: 3px;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
background-color: rgb(189, 189, 189);
|
||||
}
|
||||
|
||||
.table-condensed > tbody > tr > td {
|
||||
border-top: 1px solid #062152 !important ;
|
||||
}
|
||||
|
||||
.table-striped > tbody > tr > td {
|
||||
border-top: 1px solid #92b3f1 ;
|
||||
}
|
||||
|
||||
.table-bordered, .table-bordered > tbody > tr > td {
|
||||
border: 1px solid rgb(182,182,182);
|
||||
}
|
||||
|
||||
.table-bordered > thead > tr > th {
|
||||
border: 1px solid rgb(182, 182, 182);
|
||||
background-color: rgb(235, 235, 235);
|
||||
}
|
||||
|
||||
h3 {
|
||||
color:#06255d;
|
||||
}
|
||||
|
||||
#barcode-scan {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.icon-header {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.glyphicon {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
|
||||
.glyphicon-small {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.glyphicon-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.starred-part {
|
||||
color: #ffbb00;
|
||||
}
|
||||
|
||||
.red-cell {
|
||||
background-color: #ec7f7f;
|
||||
}
|
||||
|
||||
.part-price {
|
||||
color: rgb(13, 245, 25);
|
||||
}
|
||||
|
||||
.icon-red {
|
||||
color: #c55;
|
||||
}
|
||||
|
||||
.icon-green {
|
||||
color: #43bb43;
|
||||
}
|
||||
|
||||
.icon-blue {
|
||||
color: #55c;
|
||||
}
|
||||
|
||||
.icon-yellow {
|
||||
color: #CC2;
|
||||
}
|
||||
|
||||
/* CSS overrides for treeview */
|
||||
.expand-icon {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.treeview .badge {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.treeview .list-group-item {
|
||||
padding: 6px 12px;
|
||||
}
|
||||
|
||||
.list-group-item-condensed {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
/* Extra label styles */
|
||||
|
||||
.label-large {
|
||||
margin: 3px;
|
||||
font-size: 100%;
|
||||
border: 3px solid;
|
||||
border-radius: 15px;
|
||||
background: none;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.label-large-red {
|
||||
color: var(--label-red);
|
||||
border-color: var(--label-red);
|
||||
}
|
||||
|
||||
.label-red {
|
||||
background: var(--label-red);
|
||||
}
|
||||
|
||||
.label-large-blue {
|
||||
color: var(--label-blue);
|
||||
border-color: var(--label-blue);
|
||||
}
|
||||
|
||||
.label-blue {
|
||||
background: var(--label-blue);
|
||||
}
|
||||
|
||||
.label-large-green {
|
||||
color: var(--label-green);
|
||||
border-color: var(--label-green);
|
||||
}
|
||||
|
||||
.label-green {
|
||||
background: var(--label-green);
|
||||
}
|
||||
|
||||
.label-large-grey {
|
||||
color: var(--label-grey);
|
||||
border-color: var(--label-grey);
|
||||
}
|
||||
|
||||
.label-grey {
|
||||
background: var(--label-grey);
|
||||
}
|
||||
|
||||
.label-large-yellow {
|
||||
color: var(--label-yellow);
|
||||
border-color: var(--label-yellow);
|
||||
}
|
||||
|
||||
.label-yellow {
|
||||
background: var(--label-yellow);
|
||||
}
|
||||
|
||||
.label-right {
|
||||
float: right;
|
||||
margin-left: 3px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
/* Bootstrap table overrides */
|
||||
|
||||
.stock-sub-group td {
|
||||
background-color: #ebf4f4;
|
||||
}
|
||||
|
||||
.sub-table {
|
||||
margin-left: 45px;
|
||||
margin-right: 45px;
|
||||
}
|
||||
|
||||
.detail-icon .glyphicon {
|
||||
color: #98d296;
|
||||
}
|
||||
|
||||
/* Force select2 elements in modal forms to be full width */
|
||||
.select-full-width {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.basecurrency {
|
||||
color: #050;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.bomselect {
|
||||
max-width: 250px;
|
||||
}
|
||||
|
||||
.rowvalid {
|
||||
color: #050;
|
||||
}
|
||||
|
||||
.rowinvalid {
|
||||
color: #A00;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
padding-left: 1px;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
.dropdown-buttons {
|
||||
display: inline-block
|
||||
}
|
||||
|
||||
.dropdown-menu .open{
|
||||
z-index: 1000;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/* Styles for table buttons and filtering */
|
||||
.button-toolbar .btn {
|
||||
margin-left: 1px;
|
||||
margin-right: 1px;
|
||||
}
|
||||
|
||||
.filter-list {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
margin-bottom: 1px;
|
||||
margin-top: 1px;
|
||||
vertical-align: middle;
|
||||
margin: 1px;
|
||||
padding: 2px;
|
||||
background: #eee;
|
||||
border: 1px solid #eee;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.filter-list .close {
|
||||
cursor: pointer;
|
||||
right: 0%;
|
||||
padding-right: 2px;
|
||||
padding-left: 2px;
|
||||
transform: translate(0%, -25%);
|
||||
}
|
||||
|
||||
.filter-list .close:hover {background: #bbb;}
|
||||
|
||||
.filter-tag {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
zoom: 1;
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
background: #eee;
|
||||
margin: 1px;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.filter-input {
|
||||
display: inline-block;
|
||||
*display: inline;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.filter-tag:hover {
|
||||
background: #ddd;
|
||||
}
|
||||
|
||||
/* Part image icons with full-display on mouse hover */
|
||||
|
||||
.hover-img-thumb {
|
||||
background: #eee;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
object-fit: contain;
|
||||
border: 1px solid #cce;
|
||||
}
|
||||
|
||||
.hover-img-large {
|
||||
background: #eee;
|
||||
display: none;
|
||||
position: absolute;
|
||||
z-index: 400;
|
||||
border: 1px solid #555;
|
||||
max-width: 250px;
|
||||
}
|
||||
|
||||
.hover-icon {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.hover-icon:hover > .hover-img-large {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* dropzone class - for Drag-n-Drop file uploads */
|
||||
.dropzone {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
/*
|
||||
.dropzone * {
|
||||
pointer-events: none;
|
||||
}
|
||||
*/
|
||||
|
||||
.dragover {
|
||||
background-color: #55A;
|
||||
border: 1px dashed #111;
|
||||
opacity: 0.1;
|
||||
-moz-opacity: 10%;
|
||||
-webkit-opacity: 10%;
|
||||
}
|
||||
|
||||
/* grid display for part images */
|
||||
|
||||
.table-img-grid tr {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.table-img-grid td {
|
||||
padding: 10px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.table-img-grid .grid-image {
|
||||
|
||||
height: 128px;
|
||||
width: 128px;
|
||||
object-fit: contain;
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
.btn-glyph {
|
||||
padding-left: 6px;
|
||||
padding-right: 6px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.action-button {
|
||||
font-size: 125%;
|
||||
}
|
||||
|
||||
.action-buttons .btn {
|
||||
font-size: 175%;
|
||||
align-content: center;
|
||||
vertical-align: middle;
|
||||
padding-left: 6px;
|
||||
padding-right: 6px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 2px;
|
||||
};
|
||||
|
||||
.panel-heading .badge {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.badge {
|
||||
float: right;
|
||||
background-color: #777;
|
||||
color: #fff;
|
||||
border-radius: 5px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.badge-alert {
|
||||
background-color: #f33;
|
||||
}
|
||||
|
||||
.part-thumb {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: 2px;
|
||||
padding: 3px;
|
||||
object-fit: contain;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.part-thumb-container:hover .part-thumb-overlay {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.part-thumb-overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
opacity: 0;
|
||||
transition: .25s ease;
|
||||
padding: 15px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.checkboxinput {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.media {
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.media-body {
|
||||
padding-top: 10px;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.navigation {
|
||||
}
|
||||
|
||||
.nav-tabs {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.settings-container {
|
||||
width: 90%;
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.settings-nav {
|
||||
height: 100%;
|
||||
width: 160px;
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
//top: 0;
|
||||
//left: 0;
|
||||
overflow-x: hidden;
|
||||
padding-top: 20px;
|
||||
padding-right: 25px;
|
||||
}
|
||||
|
||||
.settings-content {
|
||||
margin-left: 175px;
|
||||
padding: 0px 10px;
|
||||
}
|
||||
|
||||
.breadcrump {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.inventree-body {
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.inventree-pre-content {
|
||||
width: 100%;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.inventree-content {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-top: 5px;
|
||||
width: auto;
|
||||
transition: 0.1s;
|
||||
}
|
||||
|
||||
.body {
|
||||
padding-top: 70px;
|
||||
}
|
||||
|
||||
.modal {
|
||||
overflow: hidden;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.modal-primary {
|
||||
z-index: 10000;
|
||||
}
|
||||
|
||||
.modal-secondary {
|
||||
z-index: 11000;
|
||||
}
|
||||
|
||||
.js-modal-form .checkbox {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.modal-dialog {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
.modal-secondary .modal-dialog {
|
||||
width: 40%;
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.modal-content h3 {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.modal-form-content {
|
||||
border-radius: 0;
|
||||
position:relative;
|
||||
height: auto !important;
|
||||
max-height: calc(100vh - 200px) !important;
|
||||
overflow-y: scroll;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.modal input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
input[type="submit"] {
|
||||
color: #333;
|
||||
background-color: #e6e6e6;
|
||||
border-color: #adadad;
|
||||
}
|
||||
|
||||
.modal textarea {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Force a control-label div to be 100% width */
|
||||
.modal .control-label {
|
||||
width: 100%;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.modal .control-label .btn {
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
.modal .btn-secondary {
|
||||
background-color: #5e7d87;
|
||||
}
|
||||
|
||||
/* The side navigation menu */
|
||||
.sidenav {
|
||||
height: 100%; /* 100% Full-height */
|
||||
width: 0px; /* 0 width - change this with JavaScript */
|
||||
position: fixed; /* Stay in place */
|
||||
background-color: #fff; /* Black*/
|
||||
overflow-x: hidden; /* Disable horizontal scroll */
|
||||
transition: 0.1s; /* 0.5 second transition effect to slide in the sidenav */
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
align-items: stretch;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.help-inline {
|
||||
color: #A11;
|
||||
}
|
||||
|
||||
.notification-area {
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
margin-top: 20px;
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
z-index: 5000;
|
||||
pointer-events: none; // Prevent this div from blocking links underneath
|
||||
}
|
||||
|
||||
.alert {
|
||||
display: none;
|
||||
border-radius: 5px;
|
||||
opacity: 0.9;
|
||||
pointer-events: all;
|
||||
}
|
||||
|
||||
.alert-block {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.btn-remove {
|
||||
padding: 3px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
color: #A11;
|
||||
}
|
||||
|
||||
.btn-create {
|
||||
padding: 3px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
color: #1A1;
|
||||
}
|
||||
|
||||
.btn-edit {
|
||||
padding: 3px;
|
||||
padding: 3px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
color: #55E;
|
||||
}
|
||||
|
||||
.button-toolbar {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.panel-group {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.panel-group .panel {
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
padding: 5px 10px;
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.float-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.warning-msg {
|
||||
color: #e00;
|
||||
}
|
||||
|
||||
.login {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.part-allocation {
|
||||
padding: 3px 10px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.part-allocation-pass {
|
||||
background-color: #dbf0db;
|
||||
}
|
||||
|
||||
.part-allocation-underallocated {
|
||||
background-color: #f0dbdb;
|
||||
}
|
||||
|
||||
.part-allocation-overallocated {
|
||||
background-color: #ccf5ff;
|
||||
}
|
||||
|
||||
.glyphicon-refresh-animate {
|
||||
-animation: spin .7s infinite linear;
|
||||
-webkit-animation: spin2 .7s infinite linear;
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin2 {
|
||||
from { -webkit-transform: rotate(0deg);}
|
||||
to { -webkit-transform: rotate(360deg);}
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
from { transform: scale(1) rotate(0deg);}
|
||||
to { transform: scale(1) rotate(360deg);}
|
||||
}
|
||||
|
@ -157,11 +157,12 @@ class Currency(models.Model):
|
||||
|
||||
|
||||
class ColorTheme(models.Model):
|
||||
""" Color Theme setting """
|
||||
""" Color Theme Setting """
|
||||
|
||||
class ColorThemeChoices(models.TextChoices):
|
||||
DEFAULT = '', _('Default')
|
||||
DARKER = '-darker', _('Darker')
|
||||
DARKER = 'darker', _('Darker')
|
||||
DARK_READER = 'dark-reader', _('Dark Reader')
|
||||
|
||||
name = models.CharField(max_length=20,
|
||||
choices=ColorThemeChoices.choices,
|
||||
|
@ -1,6 +1,7 @@
|
||||
""" This module provides template tags for extra functionality
|
||||
over and above the built-in Django tags.
|
||||
"""
|
||||
import os
|
||||
|
||||
from django import template
|
||||
from InvenTree import version, settings
|
||||
@ -91,9 +92,18 @@ def inventree_setting(key, *args, **kwargs):
|
||||
|
||||
|
||||
@register.simple_tag()
|
||||
def get_theme_css(username):
|
||||
def get_color_theme_css(username):
|
||||
try:
|
||||
user_theme = ColorTheme.objects.filter(user=username).get().name
|
||||
if not user_theme:
|
||||
user_theme = 'default'
|
||||
except ColorTheme.DoesNotExist:
|
||||
user_theme = ''
|
||||
return f'{settings.STATIC_URL}css/inventree' + user_theme + '.css'
|
||||
user_theme = 'default'
|
||||
|
||||
# Build path to CSS sheet
|
||||
inventree_css_sheet = os.path.join('css', 'color-themes', user_theme + '.css')
|
||||
|
||||
# Build static URL
|
||||
inventree_css_static_url = os.path.join(settings.STATIC_URL, inventree_css_sheet)
|
||||
|
||||
return inventree_css_static_url
|
||||
|
@ -14,16 +14,10 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='row'>
|
||||
<div class='col-sm-6'>
|
||||
<div style='float: left;'>
|
||||
<form action="{% url 'settings-theme' %}" method="post">
|
||||
{% csrf_token %}
|
||||
{% load crispy_forms_tags %}
|
||||
{% crispy form %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{% url 'settings-theme' %}" method="post">
|
||||
{% csrf_token %}
|
||||
{% load crispy_forms_tags %}
|
||||
{% crispy form %}
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
@ -39,7 +39,8 @@
|
||||
<link rel="stylesheet" href="{% static 'css/select2.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'css/select2-bootstrap.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'css/bootstrap-toggle.css' %}">
|
||||
<link rel="stylesheet" href="{% get_theme_css user.get_username %}">
|
||||
<link rel="stylesheet" href="{% static 'css/inventree.css' %}">
|
||||
<link rel="stylesheet" href="{% get_color_theme_css user.get_username %}">
|
||||
|
||||
{% block css %}
|
||||
{% endblock %}
|
||||
|
Loading…
Reference in New Issue
Block a user