✨ Add user register mutation
🔥 Remove a bunch of legacy code
This commit is contained in:
1 parent
a47de48243
commit
b5c9094b64
34 files changed
+42
-7540
No files matched your search
@@ -0,0 +1,32 @@
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db import transaction
|
||||
from strawberry_django import auto
|
||||
|
||||
from main import models
|
||||
from main.api.types.users import User
|
||||
|
||||
DjangoUser = get_user_model()
|
||||
|
||||
|
||||
@strawberry_django.input(DjangoUser)
|
||||
class UserInput:
|
||||
email: auto
|
||||
first_name: auto
|
||||
last_name: auto
|
||||
|
||||
|
||||
@strawberry.mutation
|
||||
@transaction.atomic
|
||||
def register_mutation(input: UserInput) -> User:
|
||||
user = DjangoUser.objects.create_user(
|
||||
first_name=input.first_name, last_name=input.last_name, email=input.email, username=input.email
|
||||
)
|
||||
models.UserProfile.objects.create(user=user)
|
||||
return user
|
||||
|
||||
|
||||
@strawberry.type
|
||||
class UsersMutations:
|
||||
register = register_mutation
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
import strawberry
|
||||
|
||||
from main.api.mutations.shop import ShopMutations
|
||||
from main.api.mutations.users import UsersMutations
|
||||
from main.api.queries.inventory import InventoryQueries
|
||||
from main.api.queries.shop import ShopQueries
|
||||
from main.api.queries.users import UsersQueries
|
||||
@@ -12,7 +13,7 @@ class Query(InventoryQueries, ShopQueries, UsersQueries):
|
||||
|
||||
|
||||
@strawberry.type
|
||||
class Mutation(ShopMutations):
|
||||
class Mutation(ShopMutations, UsersMutations):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
+1
-24
@@ -1,29 +1,6 @@
|
||||
from django import forms
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from main.models import InventoryTransaction, Product, UserProfile
|
||||
from main.utils import format_username
|
||||
|
||||
|
||||
class SimpleCreateUserForm(forms.Form):
|
||||
first_name = forms.CharField(required=True, label="Fornavn")
|
||||
last_name = forms.CharField(required=True, label="Etternavn")
|
||||
email = forms.EmailField(required=True, label="E-post")
|
||||
|
||||
def save(self, commit=True):
|
||||
username = format_username(self.cleaned_data["first_name"], self.cleaned_data["last_name"])
|
||||
user = User.objects.create_user(username, email=self.cleaned_data["email"])
|
||||
user.first_name = self.cleaned_data["first_name"]
|
||||
user.last_name = self.cleaned_data["last_name"]
|
||||
|
||||
profile = UserProfile.objects.create(user=user)
|
||||
profile.image = self._get_facebook_url()
|
||||
|
||||
if commit:
|
||||
user.save()
|
||||
profile.save()
|
||||
|
||||
return user
|
||||
from main.models import InventoryTransaction, Product
|
||||
|
||||
|
||||
class InventoryTransactionForm(forms.ModelForm):
|
||||
|
||||
@@ -1,18 +1,11 @@
|
||||
from django.contrib.staticfiles.views import serve
|
||||
from django.urls import re_path
|
||||
|
||||
from main.views.reports import inventory, inventory_add, report
|
||||
from main.views.users import create_user
|
||||
|
||||
urlpatterns = [
|
||||
# TODO: migrate to SPA
|
||||
# Users
|
||||
re_path(r"^user/create/$", create_user, name="create-user"),
|
||||
# Reports
|
||||
re_path(r"^inventory/$", inventory, name="inventory"),
|
||||
re_path(r"^inventory/add/$", inventory_add, name="inventory-add"),
|
||||
re_path(r"^report$", report, name="report"),
|
||||
]
|
||||
|
||||
# Root level service-worker.js
|
||||
urlpatterns += [re_path(r"^service-worker\.js$", serve, kwargs={"path": "dist/service-worker.js"})]
|
||||
@@ -1,21 +0,0 @@
|
||||
from django.contrib import messages
|
||||
from django.shortcuts import redirect, render
|
||||
|
||||
from main.forms import SimpleCreateUserForm
|
||||
|
||||
|
||||
def create_user(request):
|
||||
if request.method == "POST":
|
||||
form = SimpleCreateUserForm(data=request.POST)
|
||||
if form.is_valid():
|
||||
user = form.save()
|
||||
messages.success(request, f"Hurra! {user.first_name}{user.last_name} er lagt til")
|
||||
return redirect("create-user")
|
||||
|
||||
else:
|
||||
messages.error(request, "Feil med skjemaet, se under.")
|
||||
form = SimpleCreateUserForm(data=request.POST)
|
||||
else:
|
||||
form = SimpleCreateUserForm()
|
||||
|
||||
return render(request, "registration/create_user.html", {"form": form})
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 923 B |
Binary file not shown.
|
Before Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 206 B |
Binary file not shown.
|
Before Width: | Height: | Size: 3.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -1,180 +0,0 @@
|
||||
function enable_all_customers() {
|
||||
$("li.customer").each(function(i) {
|
||||
$(this).removeClass("marked");
|
||||
$(this).show();
|
||||
});
|
||||
}
|
||||
function filter_customers(typed) {
|
||||
setTimeout(function() {
|
||||
$("li.customer").each(function(i) {
|
||||
var pattern = new RegExp(typed,"i");
|
||||
var name = $(this).children("span.name").text();
|
||||
if(!pattern.test(name)) {
|
||||
$(this).hide();
|
||||
$(this).removeClass("marked");
|
||||
} else {
|
||||
$(this).show();
|
||||
var full_match = name.toLowerCase() == typed.toLowerCase();
|
||||
// FIXME: needs one more char.
|
||||
var single_match = $("li.customer:visible").length == 1;
|
||||
console.log(full_match, single_match);
|
||||
//if(full_match || single_match) {
|
||||
if(full_match) {
|
||||
$(this).addClass("marked");
|
||||
} else {
|
||||
$(this).removeClass("marked");
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 50);
|
||||
}
|
||||
function enable_all_products() {
|
||||
$("li.product").each(function(i) {
|
||||
$(this).removeClass("marked");
|
||||
$(this).show();
|
||||
});
|
||||
}
|
||||
function reset_qtys() {
|
||||
$(".qty").each(function(i) {
|
||||
$(this).html('0');
|
||||
});
|
||||
|
||||
$("input[name$=amount]").each(function(i) {
|
||||
$(this).val("0");
|
||||
});
|
||||
}
|
||||
function update_total() {
|
||||
var total = 0;
|
||||
$('li.product').each(function() {
|
||||
var amount = Number($(this).find('[name$=amount]').val());
|
||||
|
||||
var price_selector = '.sale_price_int';
|
||||
if($("#id_customer_typeahead").val() === "Ekstern") {
|
||||
price_selector = '.sale_price_ext';
|
||||
}
|
||||
var sale_price = Number($(this).find(price_selector).text());
|
||||
|
||||
total += amount * sale_price;
|
||||
});
|
||||
if(total === 0) {
|
||||
total = "";
|
||||
}
|
||||
$("span.total_text").html(total);
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
var $alerts = $("a[data-dismiss=alert]");
|
||||
/* Hide alert messages */
|
||||
$alerts.click(function(){
|
||||
$(this).parent().parent().parent().slideUp();
|
||||
});
|
||||
setTimeout( function() {
|
||||
$alerts.parent().parent().parent().slideUp();
|
||||
}, 5000);
|
||||
|
||||
/* Tooltips */
|
||||
$("h2").tooltip({placement: 'right'});
|
||||
$("img.customer").tooltip();
|
||||
$("a.product").tooltip();
|
||||
$(".love").tooltip();
|
||||
|
||||
/*
|
||||
* View: Deposit and register
|
||||
*/
|
||||
|
||||
/* Customer search */
|
||||
$('#id_customer_typeahead').keyup(function(event) {
|
||||
filter_customers(event.target.value);
|
||||
});
|
||||
/* Customer selection */
|
||||
$("li.customer").click( function() {
|
||||
enable_all_customers();
|
||||
/* Disable the customer button just clicked */
|
||||
$(this).addClass("marked");
|
||||
/* Update the typeahead field */
|
||||
var name = $(this).children("span.name").text();
|
||||
$("#id_customer_typeahead").val(name);
|
||||
/* Update the select field */
|
||||
var id = $(this).children("span.id").text();
|
||||
$("#id_customer option, #id_user option").removeAttr('selected');
|
||||
if(id === "") {
|
||||
// External user
|
||||
$("#id_customer option:first-child, #id_user option:first-child").attr('selected','selected');
|
||||
} else {
|
||||
$("#id_customer option[value="+id+"], #id_user option[value="+id+"]").attr('selected','selected');
|
||||
}
|
||||
update_total(this);
|
||||
});
|
||||
|
||||
/* Set Global Highcharts options */
|
||||
|
||||
Highcharts.setOptions({
|
||||
credits: {
|
||||
enabled: false
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* View: Register
|
||||
*/
|
||||
|
||||
/* Product amount controls */
|
||||
$("#register li.product").click( function() {
|
||||
/* Mark the product as selected */
|
||||
$(this).addClass("marked");
|
||||
/* Update amounts */
|
||||
var form_field = $(this).children("input[name$=amount]");
|
||||
var display = $(this).children(".qty");
|
||||
var qty = Number(form_field.val()) + 1;
|
||||
form_field.val(qty);
|
||||
display.html(qty);
|
||||
/* Update total*/
|
||||
update_total(this);
|
||||
});
|
||||
/* Form reset */
|
||||
$("#register button[type=reset]").click( function() {
|
||||
$('#id_customer option').removeAttr('selected');
|
||||
$("#id_customer_typeahead").val("");
|
||||
$("span.total_text").html("");
|
||||
enable_all_customers();
|
||||
enable_all_products();
|
||||
reset_qtys();
|
||||
});
|
||||
|
||||
/* Toggle infrequent users */
|
||||
$(".toggle-infrequent-users").on('click', function(e) {
|
||||
e.preventDefault();
|
||||
$("li.customer.infrequent").toggleClass('hidden');
|
||||
$(".users-description .infrequent-users").toggleClass('hidden');
|
||||
if($(this).text() === "Vis alle") {
|
||||
$(this).text("Skjul gamliser");
|
||||
}
|
||||
else {
|
||||
$(this).text("Vis alle");
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* View: Inventory report
|
||||
*/
|
||||
var start_field = $(".inventory-report-form #id_start_time");
|
||||
start_field.datepicker({
|
||||
language: 'nb',
|
||||
format: 'yyyy-mm-dd',
|
||||
todayHighlight: true,
|
||||
weekStart: 1,
|
||||
endDate: new Date()
|
||||
}).on('changeDate', function(e) {
|
||||
end_field.datepicker('setStartDate', e.date);
|
||||
});
|
||||
var end_field = $(".inventory-report-form #id_end_time");
|
||||
end_field.datepicker({
|
||||
language: 'nb',
|
||||
format: 'yyyy-mm-dd',
|
||||
todayHighlight: true,
|
||||
weekStart: 1,
|
||||
endDate: new Date()
|
||||
}).on('changeDate', function(e) {
|
||||
start_field.datepicker('setEndDate', e.date);
|
||||
});
|
||||
});
|
||||
@@ -1,37 +0,0 @@
|
||||
/* View: Profile */
|
||||
|
||||
$(document).ready(function() {
|
||||
var $userProfile = $('#user-profile');
|
||||
if ($userProfile.length) {
|
||||
var products_by_user_url = '/stats/products/by_user/';
|
||||
var user_id = $('#user-profile').attr('data-user-id');
|
||||
|
||||
$.getJSON(products_by_user_url + user_id, function (data) {
|
||||
if (data.hasOwnProperty('error')) {
|
||||
return;
|
||||
}
|
||||
$(".profile-stats-orderline").highcharts({
|
||||
title: {
|
||||
text: false
|
||||
},
|
||||
xAxis: {
|
||||
type: "datetime"
|
||||
},
|
||||
yAxis: {
|
||||
title: {
|
||||
text: "Kjøp"
|
||||
}
|
||||
},
|
||||
|
||||
plotOptions: {
|
||||
series: {
|
||||
marker: {
|
||||
radius: 3
|
||||
}
|
||||
}
|
||||
},
|
||||
series: data
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -1,790 +0,0 @@
|
||||
/*!
|
||||
* Datepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datepicker {
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
}
|
||||
.datepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datepicker.datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datepicker.datepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datepicker-dropdown {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.datepicker-dropdown:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-top: 0;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-top: 0;
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:before {
|
||||
left: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:after {
|
||||
left: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:before {
|
||||
right: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:after {
|
||||
right: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:before {
|
||||
top: -7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:after {
|
||||
top: -6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:before {
|
||||
bottom: -7px;
|
||||
border-bottom: 0;
|
||||
border-top: 7px solid #999;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:after {
|
||||
bottom: -6px;
|
||||
border-bottom: 0;
|
||||
border-top: 6px solid #fff;
|
||||
}
|
||||
.datepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datepicker.days div.datepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.months div.datepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.years div.datepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datepicker table {
|
||||
margin: 0;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.datepicker table tr td,
|
||||
.datepicker table tr th {
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datepicker table tr td,
|
||||
.table-striped .datepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datepicker table tr td.day:hover,
|
||||
.datepicker table tr td.day.focused {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker table tr td.old,
|
||||
.datepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker table tr td.disabled,
|
||||
.datepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td.today,
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today.disabled:hover {
|
||||
color: #000000;
|
||||
background-color: #ffdb99;
|
||||
border-color: #ffb733;
|
||||
}
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today:hover:hover,
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover:hover,
|
||||
.datepicker table tr td.today:focus,
|
||||
.datepicker table tr td.today:hover:focus,
|
||||
.datepicker table tr td.today.disabled:focus,
|
||||
.datepicker table tr td.today.disabled:hover:focus,
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.today,
|
||||
.open .dropdown-toggle.datepicker table tr td.today:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.today.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
|
||||
color: #000000;
|
||||
background-color: #ffcd70;
|
||||
border-color: #f59e00;
|
||||
}
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.today,
|
||||
.open .dropdown-toggle.datepicker table tr td.today:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.today.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today:hover.disabled,
|
||||
.datepicker table tr td.today.disabled.disabled,
|
||||
.datepicker table tr td.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.today[disabled],
|
||||
.datepicker table tr td.today:hover[disabled],
|
||||
.datepicker table tr td.today.disabled[disabled],
|
||||
.datepicker table tr td.today.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td.today,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today:hover.disabled:hover,
|
||||
.datepicker table tr td.today.disabled.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td.today[disabled]:hover,
|
||||
.datepicker table tr td.today:hover[disabled]:hover,
|
||||
.datepicker table tr td.today.disabled[disabled]:hover,
|
||||
.datepicker table tr td.today.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
|
||||
.datepicker table tr td.today.disabled:focus,
|
||||
.datepicker table tr td.today:hover.disabled:focus,
|
||||
.datepicker table tr td.today.disabled.disabled:focus,
|
||||
.datepicker table tr td.today.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td.today[disabled]:focus,
|
||||
.datepicker table tr td.today:hover[disabled]:focus,
|
||||
.datepicker table tr td.today.disabled[disabled]:focus,
|
||||
.datepicker table tr td.today.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today:hover.disabled:active,
|
||||
.datepicker table tr td.today.disabled.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover.disabled:active,
|
||||
.datepicker table tr td.today[disabled]:active,
|
||||
.datepicker table tr td.today:hover[disabled]:active,
|
||||
.datepicker table tr td.today.disabled[disabled]:active,
|
||||
.datepicker table tr td.today.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td.today:active,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today:hover.disabled.active,
|
||||
.datepicker table tr td.today.disabled.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.disabled.active,
|
||||
.datepicker table tr td.today[disabled].active,
|
||||
.datepicker table tr td.today:hover[disabled].active,
|
||||
.datepicker table tr td.today.disabled[disabled].active,
|
||||
.datepicker table tr td.today.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td.today.active,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #ffdb99;
|
||||
border-color: #ffb733;
|
||||
}
|
||||
.datepicker table tr td.today:hover:hover {
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today.active:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.datepicker table tr td.range,
|
||||
.datepicker table tr td.range:hover,
|
||||
.datepicker table tr td.range.disabled,
|
||||
.datepicker table tr td.range.disabled:hover {
|
||||
background: #eeeeee;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today,
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover {
|
||||
color: #000000;
|
||||
background-color: #f7ca77;
|
||||
border-color: #f1a417;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today:hover:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover:hover,
|
||||
.datepicker table tr td.range.today:focus,
|
||||
.datepicker table tr td.range.today:hover:focus,
|
||||
.datepicker table tr td.range.today.disabled:focus,
|
||||
.datepicker table tr td.range.today.disabled:hover:focus,
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
|
||||
color: #000000;
|
||||
background-color: #f4bb51;
|
||||
border-color: #bf800c;
|
||||
}
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today:hover.disabled,
|
||||
.datepicker table tr td.range.today.disabled.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.range.today[disabled],
|
||||
.datepicker table tr td.range.today:hover[disabled],
|
||||
.datepicker table tr td.range.today.disabled[disabled],
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td.range.today,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today:hover.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td.range.today[disabled]:hover,
|
||||
.datepicker table tr td.range.today:hover[disabled]:hover,
|
||||
.datepicker table tr td.range.today.disabled[disabled]:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
|
||||
.datepicker table tr td.range.today.disabled:focus,
|
||||
.datepicker table tr td.range.today:hover.disabled:focus,
|
||||
.datepicker table tr td.range.today.disabled.disabled:focus,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td.range.today[disabled]:focus,
|
||||
.datepicker table tr td.range.today:hover[disabled]:focus,
|
||||
.datepicker table tr td.range.today.disabled[disabled]:focus,
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today:hover.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled:active,
|
||||
.datepicker table tr td.range.today[disabled]:active,
|
||||
.datepicker table tr td.range.today:hover[disabled]:active,
|
||||
.datepicker table tr td.range.today.disabled[disabled]:active,
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today:hover.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled.active,
|
||||
.datepicker table tr td.range.today[disabled].active,
|
||||
.datepicker table tr td.range.today:hover[disabled].active,
|
||||
.datepicker table tr td.range.today.disabled[disabled].active,
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
|
||||
background-color: #f7ca77;
|
||||
border-color: #f1a417;
|
||||
}
|
||||
.datepicker table tr td.selected,
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #999999;
|
||||
border-color: #555555;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected:hover:hover,
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover:hover,
|
||||
.datepicker table tr td.selected:focus,
|
||||
.datepicker table tr td.selected:hover:focus,
|
||||
.datepicker table tr td.selected.disabled:focus,
|
||||
.datepicker table tr td.selected.disabled:hover:focus,
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #858585;
|
||||
border-color: #373737;
|
||||
}
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected:hover.disabled,
|
||||
.datepicker table tr td.selected.disabled.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled,
|
||||
.datepicker table tr td.selected[disabled],
|
||||
.datepicker table tr td.selected:hover[disabled],
|
||||
.datepicker table tr td.selected.disabled[disabled],
|
||||
.datepicker table tr td.selected.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td.selected,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected:hover.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td.selected[disabled]:hover,
|
||||
.datepicker table tr td.selected:hover[disabled]:hover,
|
||||
.datepicker table tr td.selected.disabled[disabled]:hover,
|
||||
.datepicker table tr td.selected.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
|
||||
.datepicker table tr td.selected.disabled:focus,
|
||||
.datepicker table tr td.selected:hover.disabled:focus,
|
||||
.datepicker table tr td.selected.disabled.disabled:focus,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td.selected[disabled]:focus,
|
||||
.datepicker table tr td.selected:hover[disabled]:focus,
|
||||
.datepicker table tr td.selected.disabled[disabled]:focus,
|
||||
.datepicker table tr td.selected.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected:hover.disabled:active,
|
||||
.datepicker table tr td.selected.disabled.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled:active,
|
||||
.datepicker table tr td.selected[disabled]:active,
|
||||
.datepicker table tr td.selected:hover[disabled]:active,
|
||||
.datepicker table tr td.selected.disabled[disabled]:active,
|
||||
.datepicker table tr td.selected.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td.selected:active,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected:hover.disabled.active,
|
||||
.datepicker table tr td.selected.disabled.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled.active,
|
||||
.datepicker table tr td.selected[disabled].active,
|
||||
.datepicker table tr td.selected:hover[disabled].active,
|
||||
.datepicker table tr td.selected.disabled[disabled].active,
|
||||
.datepicker table tr td.selected.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.active,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
|
||||
background-color: #999999;
|
||||
border-color: #555555;
|
||||
}
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #428bca;
|
||||
border-color: #357ebd;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active:hover:hover,
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover:hover,
|
||||
.datepicker table tr td.active:focus,
|
||||
.datepicker table tr td.active:hover:focus,
|
||||
.datepicker table tr td.active.disabled:focus,
|
||||
.datepicker table tr td.active.disabled:hover:focus,
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.active:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.active.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #3276b1;
|
||||
border-color: #285e8e;
|
||||
}
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.active,
|
||||
.open .dropdown-toggle.datepicker table tr td.active:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td.active.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active:hover.disabled,
|
||||
.datepicker table tr td.active.disabled.disabled,
|
||||
.datepicker table tr td.active.disabled:hover.disabled,
|
||||
.datepicker table tr td.active[disabled],
|
||||
.datepicker table tr td.active:hover[disabled],
|
||||
.datepicker table tr td.active.disabled[disabled],
|
||||
.datepicker table tr td.active.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td.active,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active:hover.disabled:hover,
|
||||
.datepicker table tr td.active.disabled.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td.active[disabled]:hover,
|
||||
.datepicker table tr td.active:hover[disabled]:hover,
|
||||
.datepicker table tr td.active.disabled[disabled]:hover,
|
||||
.datepicker table tr td.active.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
|
||||
.datepicker table tr td.active.disabled:focus,
|
||||
.datepicker table tr td.active:hover.disabled:focus,
|
||||
.datepicker table tr td.active.disabled.disabled:focus,
|
||||
.datepicker table tr td.active.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td.active[disabled]:focus,
|
||||
.datepicker table tr td.active:hover[disabled]:focus,
|
||||
.datepicker table tr td.active.disabled[disabled]:focus,
|
||||
.datepicker table tr td.active.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active:hover.disabled:active,
|
||||
.datepicker table tr td.active.disabled.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover.disabled:active,
|
||||
.datepicker table tr td.active[disabled]:active,
|
||||
.datepicker table tr td.active:hover[disabled]:active,
|
||||
.datepicker table tr td.active.disabled[disabled]:active,
|
||||
.datepicker table tr td.active.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td.active:active,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active:hover.disabled.active,
|
||||
.datepicker table tr td.active.disabled.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.disabled.active,
|
||||
.datepicker table tr td.active[disabled].active,
|
||||
.datepicker table tr td.active:hover[disabled].active,
|
||||
.datepicker table tr td.active.disabled[disabled].active,
|
||||
.datepicker table tr td.active.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td.active.active,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #428bca;
|
||||
border-color: #357ebd;
|
||||
}
|
||||
.datepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker table tr td span.disabled,
|
||||
.datepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td span.active,
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #428bca;
|
||||
border-color: #357ebd;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active:focus,
|
||||
.datepicker table tr td span.active:hover:focus,
|
||||
.datepicker table tr td span.active.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled:hover:focus,
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #3276b1;
|
||||
border-color: #285e8e;
|
||||
}
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active:hover,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
|
||||
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
|
||||
background-image: none;
|
||||
}
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active:hover.disabled,
|
||||
.datepicker table tr td span.active.disabled.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datepicker table tr td span.active[disabled],
|
||||
.datepicker table tr td span.active:hover[disabled],
|
||||
.datepicker table tr td span.active.disabled[disabled],
|
||||
.datepicker table tr td span.active.disabled:hover[disabled],
|
||||
fieldset[disabled] .datepicker table tr td span.active,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active:hover.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td span.active[disabled]:hover,
|
||||
.datepicker table tr td span.active:hover[disabled]:hover,
|
||||
.datepicker table tr td span.active.disabled[disabled]:hover,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:focus,
|
||||
.datepicker table tr td span.active:hover.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td span.active[disabled]:focus,
|
||||
.datepicker table tr td span.active:hover[disabled]:focus,
|
||||
.datepicker table tr td span.active.disabled[disabled]:focus,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active:hover.disabled:active,
|
||||
.datepicker table tr td span.active.disabled.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:active,
|
||||
.datepicker table tr td span.active[disabled]:active,
|
||||
.datepicker table tr td span.active:hover[disabled]:active,
|
||||
.datepicker table tr td span.active.disabled[disabled]:active,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:active,
|
||||
fieldset[disabled] .datepicker table tr td span.active:active,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active:hover.disabled.active,
|
||||
.datepicker table tr td span.active.disabled.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled.active,
|
||||
.datepicker table tr td span.active[disabled].active,
|
||||
.datepicker table tr td span.active:hover[disabled].active,
|
||||
.datepicker table tr td span.active.disabled[disabled].active,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled].active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.active,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover.active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled.active,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #428bca;
|
||||
border-color: #357ebd;
|
||||
}
|
||||
.datepicker table tr td span.old,
|
||||
.datepicker table tr td span.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker th.datepicker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datepicker thead tr:first-child th,
|
||||
.datepicker tfoot tr th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker thead tr:first-child th:hover,
|
||||
.datepicker tfoot tr th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker .cw {
|
||||
font-size: 10px;
|
||||
width: 12px;
|
||||
padding: 0 2px 0 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.datepicker thead tr:first-child th.cw {
|
||||
cursor: default;
|
||||
background-color: transparent;
|
||||
}
|
||||
.input-group.date .input-group-addon i {
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.input-daterange input {
|
||||
text-align: center;
|
||||
}
|
||||
.input-daterange input:first-child {
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.input-daterange input:last-child {
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.input-daterange .input-group-addon {
|
||||
width: auto;
|
||||
min-width: 16px;
|
||||
padding: 4px 5px;
|
||||
font-weight: normal;
|
||||
line-height: 1.428571429;
|
||||
text-align: center;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
vertical-align: middle;
|
||||
background-color: #eeeeee;
|
||||
border: solid #cccccc;
|
||||
border-width: 1px 0;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
||||
.datepicker.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
float: left;
|
||||
display: none;
|
||||
min-width: 160px;
|
||||
list-style: none;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
border-radius: 5px;
|
||||
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
color: #333333;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
line-height: 1.428571429;
|
||||
}
|
||||
.datepicker.dropdown-menu th,
|
||||
.datepicker.dropdown-menu td {
|
||||
padding: 4px 5px;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
@mixin inline-block-list() {
|
||||
clear: both;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
li {
|
||||
list-style: none;
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
@@ -1,606 +0,0 @@
|
||||
// Override Bootstrap variables here (defaults copied from bootstrap-sass version 3.0.2.1):
|
||||
//
|
||||
// Variables
|
||||
// --------------------------------------------------
|
||||
|
||||
// Global values
|
||||
// --------------------------------------------------
|
||||
|
||||
// Grays
|
||||
// -------------------------
|
||||
|
||||
//$gray-darker: lighten(#000, 13.5%); // #222
|
||||
//$gray-dark: lighten(#000, 20%); // #333
|
||||
//$gray: lighten(#000, 33.5%); // #555
|
||||
//$gray-light: lighten(#000, 60%); // #999
|
||||
//$gray-lighter: lighten(#000, 93.5%); // #eee
|
||||
|
||||
// Brand colors
|
||||
// -------------------------
|
||||
|
||||
//$brand-primary: #428bca;
|
||||
//$brand-success: #5cb85c;
|
||||
//$brand-warning: #f0ad4e;
|
||||
//$brand-danger: #d9534f;
|
||||
//$brand-info: #5bc0de;
|
||||
|
||||
// Scaffolding
|
||||
// -------------------------
|
||||
|
||||
//$body-bg: #fff;
|
||||
//$text-color: $gray-dark;
|
||||
|
||||
// Links
|
||||
// -------------------------
|
||||
|
||||
//$link-color: $brand-primary;
|
||||
//$link-hover-color: darken($link-color, 15%);
|
||||
|
||||
// Typography
|
||||
// -------------------------
|
||||
|
||||
//$font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
//$font-family-serif: Georgia, "Times New Roman", Times, serif;
|
||||
//$font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace;
|
||||
//$font-family-base: $font-family-sans-serif;
|
||||
|
||||
//$font-size-base: 14px;
|
||||
//$font-size-large: ceil($font-size-base * 1.25); // ~18px
|
||||
//$font-size-small: ceil($font-size-base * 0.85); // ~12px
|
||||
|
||||
//$font-size-h1: floor($font-size-base * 2.6); // ~36px
|
||||
//$font-size-h2: floor($font-size-base * 2.15); // ~30px
|
||||
//$font-size-h3: ceil($font-size-base * 1.7); // ~24px
|
||||
//$font-size-h4: ceil($font-size-base * 1.25); // ~18px
|
||||
//$font-size-h5: $font-size-base;
|
||||
//$font-size-h6: ceil($font-size-base * 0.85); // ~12px
|
||||
|
||||
//$line-height-base: 1.428571429; // 20/14
|
||||
//$line-height-computed: floor($font-size-base * $line-height-base); // ~20px
|
||||
|
||||
//$headings-font-family: $font-family-base;
|
||||
//$headings-font-weight: 500;
|
||||
//$headings-line-height: 1.1;
|
||||
//$headings-color: inherit;
|
||||
|
||||
// Iconography
|
||||
// -------------------------
|
||||
|
||||
$icon-font-path: "/static/dist/fonts/";
|
||||
//$icon-font-name: "glyphicons-halflings-regular";
|
||||
|
||||
// Components
|
||||
// -------------------------
|
||||
// Based on 14px font-size and 1.428 line-height (~20px to start)
|
||||
|
||||
//$padding-base-vertical: 6px;
|
||||
//$padding-base-horizontal: 12px;
|
||||
|
||||
//$padding-large-vertical: 10px;
|
||||
//$padding-large-horizontal: 16px;
|
||||
|
||||
//$padding-small-vertical: 5px;
|
||||
//$padding-small-horizontal: 10px;
|
||||
|
||||
//$line-height-large: 1.33;
|
||||
//$line-height-small: 1.5;
|
||||
|
||||
//$border-radius-base: 4px;
|
||||
//$border-radius-large: 6px;
|
||||
//$border-radius-small: 3px;
|
||||
|
||||
//$component-active-color: #fff;
|
||||
//$component-active-bg: $brand-primary;
|
||||
|
||||
//$caret-width-base: 4px;
|
||||
//$caret-width-large: 5px;
|
||||
|
||||
// Tables
|
||||
// -------------------------
|
||||
|
||||
//$table-cell-padding: 8px;
|
||||
//$table-condensed-cell-padding: 5px;
|
||||
|
||||
//$table-bg: transparent; // overall background-color
|
||||
//$table-bg-accent: #f9f9f9; // for striping
|
||||
//$table-bg-hover: #f5f5f5;
|
||||
//$table-bg-active: $table-bg-hover;
|
||||
|
||||
//$table-border-color: #ddd; // table and cell border
|
||||
|
||||
// Buttons
|
||||
// -------------------------
|
||||
|
||||
//$btn-font-weight: normal;
|
||||
|
||||
//$btn-default-color: #333;
|
||||
//$btn-default-bg: #fff;
|
||||
//$btn-default-border: #ccc;
|
||||
|
||||
//$btn-primary-color: #fff;
|
||||
//$btn-primary-bg: $brand-primary;
|
||||
//$btn-primary-border: darken($btn-primary-bg, 5%);
|
||||
|
||||
//$btn-success-color: #fff;
|
||||
//$btn-success-bg: $brand-success;
|
||||
//$btn-success-border: darken($btn-success-bg, 5%);
|
||||
|
||||
//$btn-warning-color: #fff;
|
||||
//$btn-warning-bg: $brand-warning;
|
||||
//$btn-warning-border: darken($btn-warning-bg, 5%);
|
||||
|
||||
//$btn-danger-color: #fff;
|
||||
//$btn-danger-bg: $brand-danger;
|
||||
//$btn-danger-border: darken($btn-danger-bg, 5%);
|
||||
|
||||
//$btn-info-color: #fff;
|
||||
//$btn-info-bg: $brand-info;
|
||||
//$btn-info-border: darken($btn-info-bg, 5%);
|
||||
|
||||
//$btn-link-disabled-color: $gray-light;
|
||||
|
||||
// Forms
|
||||
// -------------------------
|
||||
|
||||
//$input-bg: #fff;
|
||||
//$input-bg-disabled: $gray-lighter;
|
||||
|
||||
//$input-color: $gray;
|
||||
//$input-border: #ccc;
|
||||
//$input-border-radius: $border-radius-base;
|
||||
//$input-border-focus: #66afe9;
|
||||
|
||||
//$input-color-placeholder: $gray-light;
|
||||
|
||||
//$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2);
|
||||
//$input-height-large: (floor($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2);
|
||||
//$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2);
|
||||
|
||||
//$legend-color: $gray-dark;
|
||||
//$legend-border-color: #e5e5e5;
|
||||
|
||||
//$input-group-addon-bg: $gray-lighter;
|
||||
//$input-group-addon-border-color: $input-border;
|
||||
|
||||
// Dropdowns
|
||||
// -------------------------
|
||||
|
||||
//$dropdown-bg: #fff;
|
||||
//$dropdown-border: rgba(0,0,0,.15);
|
||||
//$dropdown-fallback-border: #ccc;
|
||||
//$dropdown-divider-bg: #e5e5e5;
|
||||
|
||||
//$dropdown-link-color: $gray-dark;
|
||||
//$dropdown-link-hover-color: darken($gray-dark, 5%);
|
||||
//$dropdown-link-hover-bg: #f5f5f5;
|
||||
|
||||
//$dropdown-link-active-color: $component-active-color;
|
||||
//$dropdown-link-active-bg: $component-active-bg;
|
||||
|
||||
//$dropdown-link-disabled-color: $gray-light;
|
||||
|
||||
//$dropdown-header-color: $gray-light;
|
||||
|
||||
//$dropdown-caret-color: #000;
|
||||
|
||||
// COMPONENT VARIABLES
|
||||
// --------------------------------------------------
|
||||
|
||||
// Z-index master list
|
||||
// -------------------------
|
||||
// Used for a bird's eye view of components dependent on the z-axis
|
||||
// Try to avoid customizing these :)
|
||||
|
||||
//$zindex-navbar: 1000;
|
||||
//$zindex-dropdown: 1000;
|
||||
//$zindex-popover: 1010;
|
||||
//$zindex-tooltip: 1030;
|
||||
//$zindex-navbar-fixed: 1030;
|
||||
//$zindex-modal-background: 1040;
|
||||
//$zindex-modal: 1050;
|
||||
|
||||
// Media queries breakpoints
|
||||
// --------------------------------------------------
|
||||
|
||||
// Extra small screen / phone
|
||||
// Note: Deprecated $screen-xs and $screen-phone as of v3.0.1
|
||||
//$screen-xs: 480px;
|
||||
//$screen-xs-min: $screen-xs;
|
||||
//$screen-phone: $screen-xs-min;
|
||||
|
||||
// Small screen / tablet
|
||||
// Note: Deprecated $screen-sm and $screen-tablet as of v3.0.1
|
||||
//$screen-sm: 768px;
|
||||
//$screen-sm-min: $screen-sm;
|
||||
//$screen-tablet: $screen-sm-min;
|
||||
|
||||
// Medium screen / desktop
|
||||
// Note: Deprecated $screen-md and $screen-desktop as of v3.0.1
|
||||
//$screen-md: 992px;
|
||||
//$screen-md-min: $screen-md;
|
||||
//$screen-desktop: $screen-md-min;
|
||||
|
||||
// Large screen / wide desktop
|
||||
// Note: Deprecated $screen-lg and $screen-lg-desktop as of v3.0.1
|
||||
//$screen-lg: 1200px;
|
||||
//$screen-lg-min: $screen-lg;
|
||||
//$screen-lg-desktop: $screen-lg-min;
|
||||
|
||||
// So media queries don't overlap when required, provide a maximum
|
||||
//$screen-xs-max: ($screen-sm-min - 1);
|
||||
//$screen-sm-max: ($screen-md-min - 1);
|
||||
//$screen-md-max: ($screen-lg-min - 1);
|
||||
|
||||
// Grid system
|
||||
// --------------------------------------------------
|
||||
|
||||
// Number of columns in the grid system
|
||||
//$grid-columns: 12;
|
||||
// Padding, to be divided by two and applied to the left and right of all columns
|
||||
//$grid-gutter-width: 30px;
|
||||
// Point at which the navbar stops collapsing
|
||||
//$grid-float-breakpoint: $screen-sm-min;
|
||||
|
||||
// Navbar
|
||||
// -------------------------
|
||||
|
||||
// Basics of a navbar
|
||||
//$navbar-height: 50px;
|
||||
//$navbar-margin-bottom: $line-height-computed;
|
||||
//$navbar-border-radius: $border-radius-base;
|
||||
//$navbar-padding-horizontal: floor($grid-gutter-width / 2);
|
||||
//$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2);
|
||||
|
||||
//$navbar-default-color: #777;
|
||||
//$navbar-default-bg: #f8f8f8;
|
||||
//$navbar-default-border: darken($navbar-default-bg, 6.5%);
|
||||
|
||||
// Navbar links
|
||||
//$navbar-default-link-color: #777;
|
||||
//$navbar-default-link-hover-color: #333;
|
||||
//$navbar-default-link-hover-bg: transparent;
|
||||
//$navbar-default-link-active-color: #555;
|
||||
//$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%);
|
||||
//$navbar-default-link-disabled-color: #ccc;
|
||||
//$navbar-default-link-disabled-bg: transparent;
|
||||
|
||||
// Navbar brand label
|
||||
//$navbar-default-brand-color: $navbar-default-link-color;
|
||||
//$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%);
|
||||
//$navbar-default-brand-hover-bg: transparent;
|
||||
|
||||
// Navbar toggle
|
||||
//$navbar-default-toggle-hover-bg: #ddd;
|
||||
//$navbar-default-toggle-icon-bar-bg: #ccc;
|
||||
//$navbar-default-toggle-border-color: #ddd;
|
||||
|
||||
// Inverted navbar
|
||||
//
|
||||
// Reset inverted navbar basics
|
||||
//$navbar-inverse-color: $gray-light;
|
||||
//$navbar-inverse-bg: #222;
|
||||
//$navbar-inverse-border: darken($navbar-inverse-bg, 10%);
|
||||
|
||||
// Inverted navbar links
|
||||
//$navbar-inverse-link-color: $gray-light;
|
||||
//$navbar-inverse-link-hover-color: #fff;
|
||||
//$navbar-inverse-link-hover-bg: transparent;
|
||||
//$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color;
|
||||
//$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%);
|
||||
//$navbar-inverse-link-disabled-color: #444;
|
||||
//$navbar-inverse-link-disabled-bg: transparent;
|
||||
|
||||
// Inverted navbar brand label
|
||||
//$navbar-inverse-brand-color: $navbar-inverse-link-color;
|
||||
//$navbar-inverse-brand-hover-color: #fff;
|
||||
//$navbar-inverse-brand-hover-bg: transparent;
|
||||
|
||||
// Inverted navbar toggle
|
||||
//$navbar-inverse-toggle-hover-bg: #333;
|
||||
//$navbar-inverse-toggle-icon-bar-bg: #fff;
|
||||
//$navbar-inverse-toggle-border-color: #333;
|
||||
|
||||
// Navs
|
||||
// -------------------------
|
||||
|
||||
//$nav-link-padding: 10px 15px;
|
||||
//$nav-link-hover-bg: $gray-lighter;
|
||||
|
||||
//$nav-disabled-link-color: $gray-light;
|
||||
//$nav-disabled-link-hover-color: $gray-light;
|
||||
|
||||
//$nav-open-link-hover-color: #fff;
|
||||
//$nav-open-caret-border-color: #fff;
|
||||
|
||||
// Tabs
|
||||
//$nav-tabs-border-color: #ddd;
|
||||
|
||||
//$nav-tabs-link-hover-border-color: $gray-lighter;
|
||||
|
||||
//$nav-tabs-active-link-hover-bg: $body-bg;
|
||||
//$nav-tabs-active-link-hover-color: $gray;
|
||||
//$nav-tabs-active-link-hover-border-color: #ddd;
|
||||
|
||||
//$nav-tabs-justified-link-border-color: #ddd;
|
||||
//$nav-tabs-justified-active-link-border-color: $body-bg;
|
||||
|
||||
// Pills
|
||||
//$nav-pills-border-radius: $border-radius-base;
|
||||
//$nav-pills-active-link-hover-bg: $component-active-bg;
|
||||
//$nav-pills-active-link-hover-color: $component-active-color;
|
||||
|
||||
// Pagination
|
||||
// -------------------------
|
||||
|
||||
//$pagination-bg: #fff;
|
||||
//$pagination-border: #ddd;
|
||||
|
||||
//$pagination-hover-bg: $gray-lighter;
|
||||
|
||||
//$pagination-active-bg: $brand-primary;
|
||||
//$pagination-active-color: #fff;
|
||||
|
||||
//$pagination-disabled-color: $gray-light;
|
||||
|
||||
// Pager
|
||||
// -------------------------
|
||||
|
||||
//$pager-border-radius: 15px;
|
||||
//$pager-disabled-color: $gray-light;
|
||||
|
||||
// Jumbotron
|
||||
// -------------------------
|
||||
|
||||
//$jumbotron-padding: 30px;
|
||||
//$jumbotron-color: inherit;
|
||||
//$jumbotron-bg: $gray-lighter;
|
||||
//$jumbotron-heading-color: inherit;
|
||||
//$jumbotron-font-size: ceil($font-size-base * 1.5);
|
||||
|
||||
// Form states and alerts
|
||||
// -------------------------
|
||||
|
||||
//$state-success-text: #468847;
|
||||
//$state-success-bg: #dff0d8;
|
||||
//$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%);
|
||||
|
||||
//$state-info-text: #3a87ad;
|
||||
//$state-info-bg: #d9edf7;
|
||||
//$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%);
|
||||
|
||||
//$state-warning-text: #c09853;
|
||||
//$state-warning-bg: #fcf8e3;
|
||||
//$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%);
|
||||
|
||||
//$state-danger-text: #b94a48;
|
||||
//$state-danger-bg: #f2dede;
|
||||
//$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%);
|
||||
|
||||
// Tooltips
|
||||
// -------------------------
|
||||
//$tooltip-max-width: 200px;
|
||||
//$tooltip-color: #fff;
|
||||
//$tooltip-bg: #000;
|
||||
|
||||
//$tooltip-arrow-width: 5px;
|
||||
//$tooltip-arrow-color: $tooltip-bg;
|
||||
|
||||
// Popovers
|
||||
// -------------------------
|
||||
//$popover-bg: #fff;
|
||||
//$popover-max-width: 276px;
|
||||
//$popover-border-color: rgba(0,0,0,.2);
|
||||
//$popover-fallback-border-color: #ccc;
|
||||
|
||||
//$popover-title-bg: darken($popover-bg, 3%);
|
||||
|
||||
//$popover-arrow-width: 10px;
|
||||
//$popover-arrow-color: #fff;
|
||||
|
||||
//$popover-arrow-outer-width: ($popover-arrow-width + 1);
|
||||
//$popover-arrow-outer-color: rgba(0,0,0,.25);
|
||||
//$popover-arrow-outer-fallback-color: #999;
|
||||
|
||||
// Labels
|
||||
// -------------------------
|
||||
|
||||
//$label-default-bg: $gray-light;
|
||||
//$label-primary-bg: $brand-primary;
|
||||
//$label-success-bg: $brand-success;
|
||||
//$label-info-bg: $brand-info;
|
||||
//$label-warning-bg: $brand-warning;
|
||||
//$label-danger-bg: $brand-danger;
|
||||
|
||||
//$label-color: #fff;
|
||||
//$label-link-hover-color: #fff;
|
||||
|
||||
// Modals
|
||||
// -------------------------
|
||||
//$modal-inner-padding: 20px;
|
||||
|
||||
//$modal-title-padding: 15px;
|
||||
//$modal-title-line-height: $line-height-base;
|
||||
|
||||
//$modal-content-bg: #fff;
|
||||
//$modal-content-border-color: rgba(0,0,0,.2);
|
||||
//$modal-content-fallback-border-color: #999;
|
||||
|
||||
//$modal-backdrop-bg: #000;
|
||||
//$modal-header-border-color: #e5e5e5;
|
||||
//$modal-footer-border-color: $modal-header-border-color;
|
||||
|
||||
// Alerts
|
||||
// -------------------------
|
||||
//$alert-padding: 15px;
|
||||
//$alert-border-radius: $border-radius-base;
|
||||
//$alert-link-font-weight: bold;
|
||||
|
||||
//$alert-success-bg: $state-success-bg;
|
||||
//$alert-success-text: $state-success-text;
|
||||
//$alert-success-border: $state-success-border;
|
||||
|
||||
//$alert-info-bg: $state-info-bg;
|
||||
//$alert-info-text: $state-info-text;
|
||||
//$alert-info-border: $state-info-border;
|
||||
|
||||
//$alert-warning-bg: $state-warning-bg;
|
||||
//$alert-warning-text: $state-warning-text;
|
||||
//$alert-warning-border: $state-warning-border;
|
||||
|
||||
//$alert-danger-bg: $state-danger-bg;
|
||||
//$alert-danger-text: $state-danger-text;
|
||||
//$alert-danger-border: $state-danger-border;
|
||||
|
||||
// Progress bars
|
||||
// -------------------------
|
||||
//$progress-bg: #f5f5f5;
|
||||
//$progress-bar-color: #fff;
|
||||
|
||||
//$progress-bar-bg: $brand-primary;
|
||||
//$progress-bar-success-bg: $brand-success;
|
||||
//$progress-bar-warning-bg: $brand-warning;
|
||||
//$progress-bar-danger-bg: $brand-danger;
|
||||
//$progress-bar-info-bg: $brand-info;
|
||||
|
||||
// List group
|
||||
// -------------------------
|
||||
//$list-group-bg: #fff;
|
||||
//$list-group-border: #ddd;
|
||||
//$list-group-border-radius: $border-radius-base;
|
||||
|
||||
//$list-group-hover-bg: #f5f5f5;
|
||||
//$list-group-active-color: $component-active-color;
|
||||
//$list-group-active-bg: $component-active-bg;
|
||||
//$list-group-active-border: $list-group-active-bg;
|
||||
|
||||
//$list-group-link-color: #555;
|
||||
//$list-group-link-heading-color: #333;
|
||||
|
||||
// Panels
|
||||
// -------------------------
|
||||
//$panel-bg: #fff;
|
||||
//$panel-inner-border: #ddd;
|
||||
//$panel-border-radius: $border-radius-base;
|
||||
//$panel-footer-bg: #f5f5f5;
|
||||
|
||||
//$panel-default-text: $gray-dark;
|
||||
//$panel-default-border: #ddd;
|
||||
//$panel-default-heading-bg: #f5f5f5;
|
||||
|
||||
//$panel-primary-text: #fff;
|
||||
//$panel-primary-border: $brand-primary;
|
||||
//$panel-primary-heading-bg: $brand-primary;
|
||||
|
||||
//$panel-success-text: $state-success-text;
|
||||
//$panel-success-border: $state-success-border;
|
||||
//$panel-success-heading-bg: $state-success-bg;
|
||||
|
||||
//$panel-warning-text: $state-warning-text;
|
||||
//$panel-warning-border: $state-warning-border;
|
||||
//$panel-warning-heading-bg: $state-warning-bg;
|
||||
|
||||
//$panel-danger-text: $state-danger-text;
|
||||
//$panel-danger-border: $state-danger-border;
|
||||
//$panel-danger-heading-bg: $state-danger-bg;
|
||||
|
||||
//$panel-info-text: $state-info-text;
|
||||
//$panel-info-border: $state-info-border;
|
||||
//$panel-info-heading-bg: $state-info-bg;
|
||||
|
||||
// Thumbnails
|
||||
// -------------------------
|
||||
//$thumbnail-padding: 4px;
|
||||
//$thumbnail-bg: $body-bg;
|
||||
//$thumbnail-border: #ddd;
|
||||
//$thumbnail-border-radius: $border-radius-base;
|
||||
|
||||
//$thumbnail-caption-color: $text-color;
|
||||
//$thumbnail-caption-padding: 9px;
|
||||
|
||||
// Wells
|
||||
// -------------------------
|
||||
//$well-bg: #f5f5f5;
|
||||
|
||||
// Badges
|
||||
// -------------------------
|
||||
//$badge-color: #fff;
|
||||
//$badge-link-hover-color: #fff;
|
||||
//$badge-bg: $gray-light;
|
||||
|
||||
//$badge-active-color: $link-color;
|
||||
//$badge-active-bg: #fff;
|
||||
|
||||
//$badge-font-weight: bold;
|
||||
//$badge-line-height: 1;
|
||||
//$badge-border-radius: 10px;
|
||||
|
||||
// Breadcrumbs
|
||||
// -------------------------
|
||||
//$breadcrumb-bg: #f5f5f5;
|
||||
//$breadcrumb-color: #ccc;
|
||||
//$breadcrumb-active-color: $gray-light;
|
||||
//$breadcrumb-separator: "/";
|
||||
|
||||
// Carousel
|
||||
// ------------------------
|
||||
|
||||
//$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
|
||||
|
||||
//$carousel-control-color: #fff;
|
||||
//$carousel-control-width: 15%;
|
||||
//$carousel-control-opacity: .5;
|
||||
//$carousel-control-font-size: 20px;
|
||||
|
||||
//$carousel-indicator-active-bg: #fff;
|
||||
//$carousel-indicator-border-color: #fff;
|
||||
|
||||
//$carousel-caption-color: #fff;
|
||||
|
||||
// Close
|
||||
// ------------------------
|
||||
//$close-font-weight: bold;
|
||||
//$close-color: #000;
|
||||
//$close-text-shadow: 0 1px 0 #fff;
|
||||
|
||||
// Code
|
||||
// ------------------------
|
||||
//$code-color: #c7254e;
|
||||
//$code-bg: #f9f2f4;
|
||||
|
||||
//$pre-bg: #f5f5f5;
|
||||
//$pre-color: $gray-dark;
|
||||
//$pre-border-color: #ccc;
|
||||
//$pre-scrollable-max-height: 340px;
|
||||
|
||||
// Type
|
||||
// ------------------------
|
||||
//$text-muted: $gray-light;
|
||||
//$abbr-border-color: $gray-light;
|
||||
//$headings-small-color: $gray-light;
|
||||
//$blockquote-small-color: $gray-light;
|
||||
//$blockquote-border-color: $gray-lighter;
|
||||
//$page-header-border-color: $gray-lighter;
|
||||
|
||||
// Miscellaneous
|
||||
// -------------------------
|
||||
|
||||
// Hr border color
|
||||
//$hr-border: $gray-lighter;
|
||||
|
||||
// Horizontal forms & lists
|
||||
//$component-offset-horizontal: 180px;
|
||||
|
||||
// Container sizes
|
||||
// --------------------------------------------------
|
||||
|
||||
// Small screen / tablet
|
||||
//$container-tablet: ((720px + $grid-gutter-width));
|
||||
//$container-sm: $container-tablet;
|
||||
|
||||
// Medium screen / desktop
|
||||
//$container-desktop: ((940px + $grid-gutter-width));
|
||||
//$container-md: $container-desktop;
|
||||
|
||||
// Large screen / wide desktop
|
||||
//$container-large-desktop: ((1140px + $grid-gutter-width));
|
||||
//$container-lg: $container-large-desktop;
|
||||
@@ -1,225 +0,0 @@
|
||||
@import "variables";
|
||||
@import "mixins";
|
||||
@import "../../node_modules/bootstrap-sass/assets/stylesheets/bootstrap.scss";
|
||||
@import "datepicker";
|
||||
|
||||
body {
|
||||
h2 {
|
||||
margin-top: 0;
|
||||
}
|
||||
.glyphicon .white {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
.navbar .dropdown-toggle {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
|
||||
img {
|
||||
width: 40px;
|
||||
border-radius: 50% 50%;
|
||||
}
|
||||
.name {
|
||||
display: inline-block;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
padding-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
#customer {
|
||||
ul {
|
||||
@include inline-block-list;
|
||||
|
||||
li {
|
||||
padding-top: 10px;
|
||||
text-align: center;
|
||||
width: 79px;
|
||||
overflow: hidden;
|
||||
|
||||
&:hover {
|
||||
background-color: #dddddd;
|
||||
cursor: pointer;
|
||||
}
|
||||
&.marked {
|
||||
color: #468847;
|
||||
background-color: #DFF0D8;
|
||||
}
|
||||
&.hidden {
|
||||
display: none !important;
|
||||
}
|
||||
.name {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
img.profile {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
#register {
|
||||
#products {
|
||||
margin-bottom:2em;
|
||||
ul {
|
||||
@include inline-block-list;
|
||||
|
||||
li {
|
||||
padding-top: 10px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
text-align: center;
|
||||
|
||||
&:hover {
|
||||
background-color: #dddddd;
|
||||
cursor: pointer;
|
||||
}
|
||||
&.marked {
|
||||
color: #468847;
|
||||
background-color: #DFF0D8;
|
||||
}
|
||||
.qty {
|
||||
font-size: 1.7em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.name {
|
||||
font-weight: bold;
|
||||
}
|
||||
img.product {
|
||||
width: 64px;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.product {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.total {
|
||||
color: #ffffff;
|
||||
background-color: #222;
|
||||
padding: 0 10px;
|
||||
min-width:115px;
|
||||
h2 {
|
||||
color: #ffffff;
|
||||
margin: 0.2em 0;
|
||||
}
|
||||
}
|
||||
h2 {
|
||||
display: inline-block;
|
||||
}
|
||||
input[name=customer_name] {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
#log {
|
||||
img.customer {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
h2 {
|
||||
display: inline-block;
|
||||
}
|
||||
table {
|
||||
tr {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.amount {
|
||||
font-size: 2em;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
#inventory {
|
||||
tr {
|
||||
&.info {
|
||||
border-left: 8px solid #d9edf7;
|
||||
}
|
||||
&.warning {
|
||||
border-left: 8px solid #da7878;
|
||||
|
||||
.product-amount {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
&.success {
|
||||
border-left: 8px solid darken(#dff0d8, 10%);
|
||||
}
|
||||
> td {
|
||||
background-color: inherit;
|
||||
}
|
||||
&:nth-child(odd) td {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
&.inactive {
|
||||
color: #888;
|
||||
}
|
||||
}
|
||||
}
|
||||
#inventory-report {
|
||||
.form-control {
|
||||
width: auto;
|
||||
}
|
||||
table {
|
||||
.positive {
|
||||
color: #468847;
|
||||
}
|
||||
.negative {
|
||||
color: #da7878;
|
||||
}
|
||||
}
|
||||
}
|
||||
#transactions {
|
||||
img.customer {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
#user-profile {
|
||||
.profile-name {
|
||||
display: inline-block;
|
||||
line-height: 50px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
.profile-image {
|
||||
border-radius: 50% 50%;
|
||||
}
|
||||
}
|
||||
#footer .credits {
|
||||
text-align: center;
|
||||
margin: 2em;
|
||||
font-size: 10px;
|
||||
color: grey;
|
||||
|
||||
img {
|
||||
margin-top: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
.love {
|
||||
color: #faafba;
|
||||
}
|
||||
}
|
||||
.alert-error {
|
||||
@extend .alert-danger;
|
||||
}
|
||||
.facebook-image {
|
||||
img {
|
||||
height: 32px;
|
||||
}
|
||||
}
|
||||
.form-login {
|
||||
max-width: 320px;
|
||||
margin: 4em auto;
|
||||
[type=submit] {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
toolbox.router.get('/(.*)/picture/', toolbox.fastest, {
|
||||
origin: /^https:\/\/graph\.facebook\.com$/
|
||||
});
|
||||
|
||||
//var MISSING_IMAGE = '/static/dist/images/unknown_person.png';
|
||||
//toolbox.cache(MISSING_IMAGE);
|
||||
//
|
||||
//function imageHandler(request, values, options) {
|
||||
// return toolbox.cacheFirst(request, values, options).catch(function () {
|
||||
// return caches.match(MISSING_IMAGE);
|
||||
// });
|
||||
//}
|
||||
Vendored
-1
@@ -1 +0,0 @@
|
||||
function enable_all_customers(){$("li.customer").each(function(t){$(this).removeClass("marked"),$(this).show()})}function filter_customers(t){setTimeout(function(){$("li.customer").each(function(e){var i=new RegExp(t,"i"),n=$(this).children("span.name").text();if(i.test(n)){$(this).show();var r=n.toLowerCase()==t.toLowerCase(),o=1==$("li.customer:visible").length;console.log(r,o),r?$(this).addClass("marked"):$(this).removeClass("marked")}else $(this).hide(),$(this).removeClass("marked")})},50)}function enable_all_products(){$("li.product").each(function(t){$(this).removeClass("marked"),$(this).show()})}function reset_qtys(){$(".qty").each(function(t){$(this).html("0")}),$("input[name$=amount]").each(function(t){$(this).val("0")})}function update_total(){var t=0;$("li.product").each(function(){var e=Number($(this).find("[name$=amount]").val()),i=".sale_price_int";"Ekstern"===$("#id_customer_typeahead").val()&&(i=".sale_price_ext");var n=Number($(this).find(i).text());t+=e*n}),0===t&&(t=""),$("span.total_text").html(t)}function productFormatter(){return"<b>"+this.point.name+"</b>: "+Highcharts.numberFormat(this.percentage,1)+" %"}function parse_products_realtime_data(t,e){for(var i in t.products){null===e.get(i)&&e.addSeries({data:[],id:i,name:i});var n=e.get(i);_.each(t.products[i],function(t){null===e.get(t[0])&&n.addPoint({id:t[0],x:t[0],y:t[1]})})}}function get_products_realtime_data(){$.ajax({url:products_realtime_url,dataType:"json",success:function(t){parse_products_realtime_data(t,products_realtime_chart),setTimeout(function(){get_products_realtime_data()},15e3)},cache:!1})}function renderProductCharts(t){for(var e in t){var i="product_chart"+t[e].id,n=t[e].counts;n=_.map(n,function(t){return[t.full_name,t.amount_total]}),new Highcharts.Chart({chart:{renderTo:i,plotBackgroundColor:null,plotBorderWidth:null,plotShadow:!1},title:{text:t[e].name},tooltip:{formatter:productFormatter},plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!0,color:"#000000",connectorColor:"#000000",formatter:function(){return"<b>"+this.point.name+"</b>: "+this.y}}}},series:[{type:"pie",name:"Orders",data:n}]})}}function renderOrdersGroupedChart(t){var e=t.grouping,i="order_chart_"+e;new Highcharts.Chart({chart:{renderTo:i,type:"column"},title:{text:"Ordre - "+e},tooltip:{formatter:function(){return this.y+" stk"}},yAxis:{title:{text:"Ordre"}},xAxis:{title:{text:"Tid"},labels:{formatter:orderFormatters[e]}},plotOptions:{column:{minPointLength:3,colorByPoint:!0},series:{groupPadding:0,pointPadding:.05}},series:[{name:"Ordre",data:t.orders}]})}!function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){"use strict";function i(t,e){var i=(e=e||et).createElement("script");i.text=t,e.head.appendChild(i).parentNode.removeChild(i)}function n(t){var e=!!t&&"length"in t&&t.length,i=ft.type(t);return"function"!==i&&!ft.isWindow(t)&&("array"===i||0===e||"number"==typeof e&&e>0&&e-1 in t)}function r(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}function o(t,e,i){return ft.isFunction(e)?ft.grep(t,function(t,n){return!!e.call(t,n,t)!==i}):e.nodeType?ft.grep(t,function(t){return t===e!==i}):"string"!=typeof e?ft.grep(t,function(t){return st.call(e,t)>-1!==i}):Mt.test(e)?ft.filter(e,t,i):(e=ft.filter(e,t),ft.grep(t,function(t){return st.call(e,t)>-1!==i&&1===t.nodeType}))}function s(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function a(t){var e={};return ft.each(t.match(Lt)||[],function(t,i){e[i]=!0}),e}function l(t){return t}function h(t){throw t}function c(t,e,i,n){var r;try{t&&ft.isFunction(r=t.promise)?r.call(t).done(e).fail(i):t&&ft.isFunction(r=t.then)?r.call(t,e,i):e.apply(void 0,[t].slice(n))}catch(t){i.apply(void 0,[t])}}function u(){et.removeEventListener("DOMContentLoaded",u),t.removeEventListener("load",u),ft.ready()}function d(){this.expando=ft.expando+d.uid++}function p(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:zt.test(t)?JSON.parse(t):t)}function f(t,e,i){var n;if(void 0===i&&1===t.nodeType)if(n="data-"+e.replace(Rt,"-$&").toLowerCase(),"string"==typeof(i=t.getAttribute(n))){try{i=p(i)}catch(t){}_t.set(t,e,i)}else i=void 0;return i}function g(t,e,i,n){var r,o=1,s=20,a=n?function(){return n.cur()}:function(){return ft.css(t,e,"")},l=a(),h=i&&i[3]||(ft.cssNumber[e]?"":"px"),c=(ft.cssNumber[e]||"px"!==h&&+l)&&Ft.exec(ft.css(t,e));if(c&&c[3]!==h){h=h||c[3],i=i||[],c=+l||1;do{o=o||".5",c/=o,ft.style(t,e,c+h)}while(o!==(o=a()/l)&&1!==o&&--s)}return i&&(c=+c||+l||0,r=i[1]?c+(i[1]+1)*i[2]:+i[2],n&&(n.unit=h,n.start=c,n.end=r)),r}function m(t){var e,i=t.ownerDocument,n=t.nodeName,r=Gt[n];return r||(e=i.body.appendChild(i.createElement(n)),r=ft.css(e,"display"),e.parentNode.removeChild(e),"none"===r&&(r="block"),Gt[n]=r,r)}function v(t,e){for(var i,n,r=[]Line truncated
|
||||
Vendored
-270
@@ -1,270 +0,0 @@
|
||||
/**
|
||||
* Copyright 2016 Google Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// DO NOT EDIT THIS GENERATED OUTPUT DIRECTLY!
|
||||
// This file should be overwritten as part of your build process.
|
||||
// If you need to extend the behavior of the generated service worker, the best approach is to write
|
||||
// additional code and include it using the importScripts option:
|
||||
// https://github.com/GoogleChrome/sw-precache#importscripts-arraystring
|
||||
//
|
||||
// Alternatively, it's possible to make changes to the underlying template file and then use that as the
|
||||
// new base for generating output, via the templateFilePath option:
|
||||
// https://github.com/GoogleChrome/sw-precache#templatefilepath-string
|
||||
//
|
||||
// If you go that route, make sure that whenever you update your sw-precache dependency, you reconcile any
|
||||
// changes made to this original template file with your modified copy.
|
||||
|
||||
// This generated service worker JavaScript will precache your site's resources.
|
||||
// The code needs to be saved in a .js file at the top-level of your site, and registered
|
||||
// from your pages in order to be used. See
|
||||
// https://github.com/googlechrome/sw-precache/blob/master/demo/app/js/service-worker-registration.js
|
||||
// for an example of how you can register this script and handle various service worker events.
|
||||
|
||||
/* eslint-env worker, serviceworker */
|
||||
/* eslint-disable indent, no-unused-vars, no-multiple-empty-lines, max-nested-callbacks, space-before-function-paren, quotes, comma-spacing */
|
||||
'use strict';
|
||||
|
||||
var precacheConfig = [["/static/dist/images/edb_brick.png","75041f9210c3ea1acba1803f084554c2"],["/static/dist/images/glyphicons-halflings-white.png","9bbc6e9602998a385c2ea13df56470fd"],["/static/dist/images/glyphicons-halflings.png","180b8ed9ed811c62d74be57249bcb023"],["/static/dist/images/grid.png","f0fc02ae7a6a36a27a25070ea6e1be99"],["/static/dist/images/product.png","5f928b37e652601f70b8218c1203c24d"],["/static/dist/images/unknown_person.png","e35b26c92725c362cd4f9ed477e9ad4f"],["/static/dist/js/app.min.js","2666821d79b38505ea623c0f9bd182f5"],["/static/dist/styles/screen.css","6325d1c5d658d523d65e8c3ed86a215d"]];
|
||||
var cacheName = 'sw-precache-v3--' + (self.registration ? self.registration.scope : '');
|
||||
|
||||
|
||||
var ignoreUrlParametersMatching = [/^utm_/];
|
||||
|
||||
|
||||
|
||||
var addDirectoryIndex = function (originalUrl, index) {
|
||||
var url = new URL(originalUrl);
|
||||
if (url.pathname.slice(-1) === '/') {
|
||||
url.pathname += index;
|
||||
}
|
||||
return url.toString();
|
||||
};
|
||||
|
||||
var cleanResponse = function (originalResponse) {
|
||||
// If this is not a redirected response, then we don't have to do anything.
|
||||
if (!originalResponse.redirected) {
|
||||
return Promise.resolve(originalResponse);
|
||||
}
|
||||
|
||||
// Firefox 50 and below doesn't support the Response.body stream, so we may
|
||||
// need to read the entire body to memory as a Blob.
|
||||
var bodyPromise = 'body' in originalResponse ?
|
||||
Promise.resolve(originalResponse.body) :
|
||||
originalResponse.blob();
|
||||
|
||||
return bodyPromise.then(function(body) {
|
||||
// new Response() is happy when passed either a stream or a Blob.
|
||||
return new Response(body, {
|
||||
headers: originalResponse.headers,
|
||||
status: originalResponse.status,
|
||||
statusText: originalResponse.statusText
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var createCacheKey = function (originalUrl, paramName, paramValue,
|
||||
dontCacheBustUrlsMatching) {
|
||||
// Create a new URL object to avoid modifying originalUrl.
|
||||
var url = new URL(originalUrl);
|
||||
|
||||
// If dontCacheBustUrlsMatching is not set, or if we don't have a match,
|
||||
// then add in the extra cache-busting URL parameter.
|
||||
if (!dontCacheBustUrlsMatching ||
|
||||
!(url.pathname.match(dontCacheBustUrlsMatching))) {
|
||||
url.search += (url.search ? '&' : '') +
|
||||
encodeURIComponent(paramName) + '=' + encodeURIComponent(paramValue);
|
||||
}
|
||||
|
||||
return url.toString();
|
||||
};
|
||||
|
||||
var isPathWhitelisted = function (whitelist, absoluteUrlString) {
|
||||
// If the whitelist is empty, then consider all URLs to be whitelisted.
|
||||
if (whitelist.length === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Otherwise compare each path regex to the path of the URL passed in.
|
||||
var path = (new URL(absoluteUrlString)).pathname;
|
||||
return whitelist.some(function(whitelistedPathRegex) {
|
||||
return path.match(whitelistedPathRegex);
|
||||
});
|
||||
};
|
||||
|
||||
var stripIgnoredUrlParameters = function (originalUrl,
|
||||
ignoreUrlParametersMatching) {
|
||||
var url = new URL(originalUrl);
|
||||
// Remove the hash; see https://github.com/GoogleChrome/sw-precache/issues/290
|
||||
url.hash = '';
|
||||
|
||||
url.search = url.search.slice(1) // Exclude initial '?'
|
||||
.split('&') // Split into an array of 'key=value' strings
|
||||
.map(function(kv) {
|
||||
return kv.split('='); // Split each 'key=value' string into a [key, value] array
|
||||
})
|
||||
.filter(function(kv) {
|
||||
return ignoreUrlParametersMatching.every(function(ignoredRegex) {
|
||||
return !ignoredRegex.test(kv[0]); // Return true iff the key doesn't match any of the regexes.
|
||||
});
|
||||
})
|
||||
.map(function(kv) {
|
||||
return kv.join('='); // Join each [key, value] array into a 'key=value' string
|
||||
})
|
||||
.join('&'); // Join the array of 'key=value' strings into a string with '&' in between each
|
||||
|
||||
return url.toString();
|
||||
};
|
||||
|
||||
|
||||
var hashParamName = '_sw-precache';
|
||||
var urlsToCacheKeys = new Map(
|
||||
precacheConfig.map(function(item) {
|
||||
var relativeUrl = item[0];
|
||||
var hash = item[1];
|
||||
var absoluteUrl = new URL(relativeUrl, self.location);
|
||||
var cacheKey = createCacheKey(absoluteUrl, hashParamName, hash, false);
|
||||
return [absoluteUrl.toString(), cacheKey];
|
||||
})
|
||||
);
|
||||
|
||||
function setOfCachedUrls(cache) {
|
||||
return cache.keys().then(function(requests) {
|
||||
return requests.map(function(request) {
|
||||
return request.url;
|
||||
});
|
||||
}).then(function(urls) {
|
||||
return new Set(urls);
|
||||
});
|
||||
}
|
||||
|
||||
self.addEventListener('install', function(event) {
|
||||
event.waitUntil(
|
||||
caches.open(cacheName).then(function(cache) {
|
||||
return setOfCachedUrls(cache).then(function(cachedUrls) {
|
||||
return Promise.all(
|
||||
Array.from(urlsToCacheKeys.values()).map(function(cacheKey) {
|
||||
// If we don't have a key matching url in the cache already, add it.
|
||||
if (!cachedUrls.has(cacheKey)) {
|
||||
var request = new Request(cacheKey, {credentials: 'same-origin'});
|
||||
return fetch(request).then(function(response) {
|
||||
// Bail out of installation unless we get back a 200 OK for
|
||||
// every request.
|
||||
if (!response.ok) {
|
||||
throw new Error('Request for ' + cacheKey + ' returned a ' +
|
||||
'response with status ' + response.status);
|
||||
}
|
||||
|
||||
return cleanResponse(response).then(function(responseToCache) {
|
||||
return cache.put(cacheKey, responseToCache);
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
);
|
||||
});
|
||||
}).then(function() {
|
||||
|
||||
// Force the SW to transition from installing -> active state
|
||||
return self.skipWaiting();
|
||||
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('activate', function(event) {
|
||||
var setOfExpectedUrls = new Set(urlsToCacheKeys.values());
|
||||
|
||||
event.waitUntil(
|
||||
caches.open(cacheName).then(function(cache) {
|
||||
return cache.keys().then(function(existingRequests) {
|
||||
return Promise.all(
|
||||
existingRequests.map(function(existingRequest) {
|
||||
if (!setOfExpectedUrls.has(existingRequest.url)) {
|
||||
return cache.delete(existingRequest);
|
||||
}
|
||||
})
|
||||
);
|
||||
});
|
||||
}).then(function() {
|
||||
|
||||
return self.clients.claim();
|
||||
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
self.addEventListener('fetch', function(event) {
|
||||
if (event.request.method === 'GET') {
|
||||
// Should we call event.respondWith() inside this fetch event handler?
|
||||
// This needs to be determined synchronously, which will give other fetch
|
||||
// handlers a chance to handle the request if need be.
|
||||
var shouldRespond;
|
||||
|
||||
// First, remove all the ignored parameters and hash fragment, and see if we
|
||||
// have that URL in our cache. If so, great! shouldRespond will be true.
|
||||
var url = stripIgnoredUrlParameters(event.request.url, ignoreUrlParametersMatching);
|
||||
shouldRespond = urlsToCacheKeys.has(url);
|
||||
|
||||
// If shouldRespond is false, check again, this time with 'index.html'
|
||||
// (or whatever the directoryIndex option is set to) at the end.
|
||||
var directoryIndex = 'index.html';
|
||||
if (!shouldRespond && directoryIndex) {
|
||||
url = addDirectoryIndex(url, directoryIndex);
|
||||
shouldRespond = urlsToCacheKeys.has(url);
|
||||
}
|
||||
|
||||
// If shouldRespond is still false, check to see if this is a navigation
|
||||
// request, and if so, whether the URL matches navigateFallbackWhitelist.
|
||||
var navigateFallback = '';
|
||||
if (!shouldRespond &&
|
||||
navigateFallback &&
|
||||
(event.request.mode === 'navigate') &&
|
||||
isPathWhitelisted([], event.request.url)) {
|
||||
url = new URL(navigateFallback, self.location).toString();
|
||||
shouldRespond = urlsToCacheKeys.has(url);
|
||||
}
|
||||
|
||||
// If shouldRespond was set to true at any point, then call
|
||||
// event.respondWith(), using the appropriate cache key.
|
||||
if (shouldRespond) {
|
||||
event.respondWith(
|
||||
caches.open(cacheName).then(function(cache) {
|
||||
return cache.match(urlsToCacheKeys.get(url)).then(function(response) {
|
||||
if (response) {
|
||||
return response;
|
||||
}
|
||||
throw Error('The cached response that was expected is missing.');
|
||||
});
|
||||
}).catch(function(e) {
|
||||
// Fall back to just fetch()ing the request if some unexpected error
|
||||
// prevented the cached response from being valid.
|
||||
console.warn('Couldn\'t serve response for "%s" from cache: %O', event.request.url, e);
|
||||
return fetch(event.request);
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
importScripts("/static/dist/sw/sw-toolbox.js","/static/dist/sw/sw-toolbox-config.js");
|
||||
|
||||
Vendored
-12
@@ -1,12 +0,0 @@
|
||||
toolbox.router.get('/(.*)/picture/', toolbox.fastest, {
|
||||
origin: /^https:\/\/graph\.facebook\.com$/
|
||||
});
|
||||
|
||||
//var MISSING_IMAGE = '/static/dist/images/unknown_person.png';
|
||||
//toolbox.cache(MISSING_IMAGE);
|
||||
//
|
||||
//function imageHandler(request, values, options) {
|
||||
// return toolbox.cacheFirst(request, values, options).catch(function () {
|
||||
// return caches.match(MISSING_IMAGE);
|
||||
// });
|
||||
//}
|
||||
Vendored
-16
@@ -1,16 +0,0 @@
|
||||
/*
|
||||
Copyright 2016 Google Inc. All Rights Reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.toolbox=e()}}(function(){return function e(t,n,r){function o(c,s){if(!n[c]){if(!t[c]){var a="function"==typeof require&&require;if(!s&&a)return a(c,!0);if(i)return i(c,!0);var u=new Error("Cannot find module '"+c+"'");throw u.code="MODULE_NOT_FOUND",u}var f=n[c]={exports:{}};t[c][0].call(f.exports,function(e){var n=t[c][1][e];return o(n?n:e)},f,f.exports,e,t,n,r)}return n[c].exports}for(var i="function"==typeof require&&require,c=0;c<r.length;c++)o(r[c]);return o}({1:[function(e,t,n){"use strict";function r(e,t){t=t||{};var n=t.debug||m.debug;n&&console.log("[sw-toolbox] "+e)}function o(e){var t;return e&&e.cache&&(t=e.cache.name),t=t||m.cache.name,caches.open(t)}function i(e,t){t=t||{};var n=t.successResponses||m.successResponses;return fetch(e.clone()).then(function(r){return"GET"===e.method&&n.test(r.status)&&o(t).then(function(n){n.put(e,r).then(function(){var r=t.cache||m.cache;(r.maxEntries||r.maxAgeSeconds)&&r.name&&c(e,n,r)})}),r.clone()})}function c(e,t,n){var r=s.bind(null,e,t,n);d=d?d.then(r):r()}function s(e,t,n){var o=e.url,i=n.maxAgeSeconds,c=n.maxEntries,s=n.name,a=Date.now();return r("Updating LRU order for "+o+". Max entries is "+c+", max age is "+i),g.getDb(s).then(function(e){return g.setTimestampForUrl(e,o,a)}).then(function(e){return g.expireEntries(e,c,i,a)}).then(function(e){r("Successfully updated IDB.");var n=e.map(function(e){return t.delete(e)});return Promise.all(n).then(function(){r("Done with cache cleanup.")})}).catch(function(e){r(e)})}function a(e,t,n){return r("Renaming cache: ["+e+"] to ["+t+"]",n),caches.delete(t).then(function(){return Promise.all([caches.open(e),caches.open(t)]).then(function(t){var n=t[0],r=t[1];return n.keys().then(function(e){return Promise.all(e.map(function(e){return n.match(e).then(function(t){return r.put(e,t)})}))}).then(function(){return caches.delete(e)})})})}function u(e,t){return o(t).then(function(t){return t.add(e)})}function f(e,t){return o(t).then(function(t){return t.delete(e)})}function h(e){e instanceof Promise||p(e),m.preCacheItems=m.preCacheItems.concat(e)}function p(e){var t=Array.isArray(e);if(t&&e.forEach(function(e){"string"==typeof e||e instanceof Request||(t=!1)}),!t)throw new TypeError("The precache method expects either an array of strings and/or Requests or a Promise that resolves to an array of strings and/or Requests.");return e}function l(e,t,n){if(!e)return!1;if(t){var r=e.headers.get("date");if(r){var o=new Date(r);if(o.getTime()+1e3*t<n)return!1}}return!0}var d,m=e("./options"),g=e("./idb-cache-expiration");t.exports={debug:r,fetchAndCache:i,openCache:o,renameCache:a,cache:u,uncache:f,precache:h,validatePrecacheInput:p,isResponseFresh:l}},{"./idb-cache-expiration":2,"./options":4}],2:[function(e,t,n){"use strict";function r(e){return new Promise(function(t,n){var r=indexedDB.open(u+e,f);r.onupgradeneeded=function(){var e=r.result.createObjectStore(h,{keyPath:p});e.createIndex(l,l,{unique:!1})},r.onsuccess=function(){t(r.result)},r.onerror=function(){n(r.error)}})}function o(e){return e in d||(d[e]=r(e)),d[e]}function i(e,t,n){return new Promise(function(r,o){var i=e.transaction(h,"readwrite"),c=i.objectStore(h);c.put({url:t,timestamp:n}),i.oncomplete=function(){r(e)},i.onabort=function(){o(i.error)}})}function c(e,t,n){return t?new Promise(function(r,o){var i=1e3*t,c=[],s=e.transaction(h,"readwrite"),a=s.objectStore(h),u=a.index(l);u.openCursor().onsuccess=function(e){var t=e.target.result;if(t&&n-i>t.value[l]){var r=t.value[p];c.push(r),a.delete(r),t.continue()}},s.oncomplete=function(){r(c)},s.onabort=o}):Promise.resolve([])}function s(e,t){return t?new Promise(function(n,r){var o=[],i=e.transaction(h,"readwrite"),c=i.objectStore(h),s=c.index(l),a=s.count();s.count().onsuccess=function(){var e=a.result;e>t&&(s.openCursor().onsuccess=function(n){var r=n.target.result;if(r){var i=r.value[p];o.push(i),c.delete(i),e-o.length>t&&r.continue()}})},i.oncomplete=function(){n(o)},i.onabort=r}):Promise.resolve([])}function a(e,t,n,r){return c(e,n,r).then(function(n){return s(e,t).then(function(e){return n.concat(e)})})}var u="sw-toolbox-",f=1,h="store",p="url",l="timestamp",d={};t.exports={getDb:o,setTimestampForUrl:i,expireEntries:a}},{}],3:[function(e,t,n){"use strict";function r(e){var t=a.match(e.request);t?e.respondWith(t(e.request)):a.default&&"GET"===e.request.method&&0===e.request.url.indexOf("http")&&e.respondWith(a.default(e.request))}function o(e){s.debug("activate event fired");var t=u.cache.name+"$$$inactive$$$";e.waitUntil(s.renameCache(t,u.cache.name))}function i(e){return e.reduce(function(e,t){return e.concat(t)},[])}function c(e){var t=u.cache.name+"$$$inactive$$$";s.debug("install event fired"),s.debug("creating cache ["+t+"]"),e.waitUntil(s.opeLine truncated
|
||||
//# sourceMappingURL=sw-toolbox.js.map
|
||||
@@ -1,125 +0,0 @@
|
||||
'use strict';
|
||||
var gulp = require('gulp');
|
||||
|
||||
var $ = require('gulp-load-plugins')();
|
||||
var del = require('del');
|
||||
var runSequence = require('run-sequence').use(gulp);
|
||||
var browserSync = require('browser-sync').create();
|
||||
var reload = browserSync.reload;
|
||||
|
||||
var vendorSources = [
|
||||
'node_modules/jquery/dist/jquery.min.js',
|
||||
'node_modules/bootstrap-sass/assets/javascripts/bootstrap/collapse.js',
|
||||
'node_modules/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js',
|
||||
'node_modules/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js',
|
||||
'node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js',
|
||||
'node_modules/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js',
|
||||
'node_modules/highcharts/highcharts.js',
|
||||
'node_modules/underscore/underscore-min.js'
|
||||
];
|
||||
|
||||
gulp.task('styles', function () {
|
||||
return gulp.src('app/styles/*.scss')
|
||||
.pipe($.sass({
|
||||
sourceComments: 'map'
|
||||
}).on('error', $.sass.logError))
|
||||
.pipe($.autoprefixer('last 1 version'))
|
||||
.pipe(gulp.dest('dist/styles'))
|
||||
});
|
||||
|
||||
gulp.task('scripts', function () {
|
||||
var myAppScripts = ['app/js/**/*.js'];
|
||||
var myFilter = $.filter(myAppScripts, {restore: true});
|
||||
return gulp.src(vendorSources.concat(myAppScripts))
|
||||
.pipe(myFilter)
|
||||
.pipe($.jshint())
|
||||
.pipe($.jshint.reporter(require('jshint-stylish')))
|
||||
.pipe(myFilter.restore)
|
||||
.pipe($.concat('app.min.js'))
|
||||
.pipe(gulp.dest('dist/js'))
|
||||
});
|
||||
|
||||
gulp.task('diststyles', function () {
|
||||
return gulp.src('app/styles/*.scss')
|
||||
.pipe($.sass()
|
||||
.on('error', $.sass.logError))
|
||||
.pipe($.autoprefixer('last 1 version'))
|
||||
.pipe($.csso())
|
||||
.pipe(gulp.dest('dist/styles'))
|
||||
});
|
||||
|
||||
gulp.task('distscripts', function () {
|
||||
return gulp.src(vendorSources.concat(['app/js/**/*.js']))
|
||||
.pipe($.concat('app.min.js'))
|
||||
.pipe($.uglify())
|
||||
.pipe(gulp.dest('dist/js'))
|
||||
});
|
||||
|
||||
gulp.task('images', function () {
|
||||
return gulp.src('app/images/**/*')
|
||||
.pipe($.imagemin({
|
||||
optimizationLevel: 3,
|
||||
progressive: true,
|
||||
interlaced: true
|
||||
}))
|
||||
.pipe(gulp.dest('dist/images'))
|
||||
});
|
||||
|
||||
gulp.task('fonts', function () {
|
||||
return gulp.src(['node_modules/bootstrap-sass/assets/fonts/**/*'])
|
||||
.pipe($.filter('**/*.{eot,svg,ttf,woff,woff2}'))
|
||||
.pipe($.flatten())
|
||||
.pipe(gulp.dest('dist/fonts'))
|
||||
});
|
||||
|
||||
gulp.task('clean', function (cb) {
|
||||
return del('dist', cb);
|
||||
});
|
||||
|
||||
gulp.task(
|
||||
'build',
|
||||
['distscripts', 'diststyles', 'images', 'fonts'],
|
||||
function() {
|
||||
return gulp.src('dist/**/*').pipe($.size({title: 'build', gzip: true}));
|
||||
}
|
||||
);
|
||||
gulp.task('default', ['clean'], function (cb) {
|
||||
runSequence('build', 'generate-service-worker', cb);
|
||||
});
|
||||
|
||||
gulp.task('serve', ['styles'], function () {
|
||||
});
|
||||
|
||||
gulp.task('watch', ['serve'], function () {
|
||||
browserSync.init({
|
||||
proxy: '127.0.0.1:8000'
|
||||
});
|
||||
|
||||
// watch for changes
|
||||
gulp.watch([
|
||||
'../templates/**/*.html',
|
||||
'app/js/**/*.js',
|
||||
'app/images/**/*'
|
||||
]).on('change', reload);
|
||||
|
||||
gulp.watch('app/styles/**/*.scss', ['styles']);
|
||||
gulp.watch('app/js/**/*.js', ['scripts']);
|
||||
gulp.watch('app/images/**/*', ['images']);
|
||||
});
|
||||
|
||||
gulp.task('generate-service-worker', function(callback) {
|
||||
var path = require('path');
|
||||
var swPrecache = require('sw-precache');
|
||||
var rootDir = 'dist';
|
||||
var srvRootDir = '/static/'+rootDir;
|
||||
|
||||
gulp.src(['node_modules/sw-toolbox/sw-toolbox.js', 'app/sw/sw-toolbox-config.js'])
|
||||
.pipe(gulp.dest('dist/sw'));
|
||||
|
||||
swPrecache.write(path.join(rootDir, 'service-worker.js'), {
|
||||
staticFileGlobs: [rootDir + '/**/*.{js,html,css,png,jpg,gif}'],
|
||||
stripPrefix: rootDir,
|
||||
replacePrefix: srvRootDir,
|
||||
importScripts: [srvRootDir + '/sw/sw-toolbox.js', srvRootDir + '/sw/sw-toolbox-config.js']
|
||||
}, callback);
|
||||
});
|
||||
@@ -1,38 +0,0 @@
|
||||
{
|
||||
"name": "bbs",
|
||||
"description": "Biceps Bar System",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"browser-sync": "^2.10.0",
|
||||
"del": "^3.0.0",
|
||||
"glob": "^7.1.2",
|
||||
"gulp": "^3.9.0",
|
||||
"gulp-autoprefixer": "4.0.0",
|
||||
"gulp-cache": "^0.4.6",
|
||||
"gulp-concat": "^2.6.0",
|
||||
"gulp-csso": "^3.0.0",
|
||||
"gulp-filter": "^5.0.1",
|
||||
"gulp-flatten": "0.3.1",
|
||||
"gulp-if": "^2.0.0",
|
||||
"gulp-imagemin": "^3.3.0",
|
||||
"gulp-jshint": "^2.0.0",
|
||||
"gulp-load-plugins": "^1.1.0",
|
||||
"gulp-sass": "^3.1.0",
|
||||
"gulp-size": "^2.0.0",
|
||||
"gulp-uglify": "^3.0.0",
|
||||
"gulp-uncss": "^1.0.4",
|
||||
"jshint-stylish": "^2.1.0",
|
||||
"run-sequence": "^2.2.0",
|
||||
"sw-precache": "^5.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap-datepicker": "^1.7.1",
|
||||
"bootstrap-sass": "^3.3.7",
|
||||
"highcharts": "^5.0.14",
|
||||
"jquery": "^3.2.1",
|
||||
"jshint": "^2.9.5",
|
||||
"sw-toolbox": "^3.6.0",
|
||||
"underscore": "^1.8.3"
|
||||
}
|
||||
}
|
||||
-5000
File diff suppressed because it is too large.
Load diff
+6
-34
@@ -22,31 +22,17 @@
|
||||
</button>
|
||||
<a class="navbar-brand" href="/">Biceps Bar System - BBS</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav">
|
||||
<li><a href="/"><i class="glyphicon glyphicon-home white"></i> Til fremtiden</a></li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
{% if not user.is_authenticated %}
|
||||
<li><a href="{% url 'django.contrib.auth.views.login' %}">Logg inn</a></li>
|
||||
{% if user.is_authenticated %}
|
||||
<li class="{% block active_inventory %}{% endblock %}"><a href="{% url 'inventory' %}"><i class="glyphicon glyphicon-briefcase"></i> Varebeholdning</a></li>
|
||||
<li class="{% block active_report %}{% endblock %}"><a href="{% url 'report' %}"><i class="glyphicon glyphicon-briefcase"></i> Rapport</a></li>
|
||||
<li><a href="/admin"><i class="glyphicon glyphicon-cog"></i> Administrasjon</a></li>
|
||||
<li><a href="{% url 'django.contrib.auth.views.logout' %}">Logg ut</a></li>
|
||||
{% else %}
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><img src="{{ user.profile.profile_image_url }}" /><span class="name">{{ user.first_name }}</span> <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
{% if user.is_authenticated %}<li class="{% block active_profile %}{% endblock %}"><a href="{% url 'profile' %}"><i class="glyphicon glyphicon-user"></i> Profil</a></li>{% endif %}
|
||||
<li class="{% block active_create_user %}{% endblock %}"><a href="{% url 'create-user' %}"><i class="glyphicon glyphicon-plus"></i> Ny bruker</a></li>
|
||||
{% if user.is_superuser %}<li><a href="/admin"><i class="glyphicon glyphicon-cog"></i> Administrasjon</a></li>{% endif %}
|
||||
{% if user.is_superuser %}<li class="{% block active_inventory %}{% endblock %}"><a href="{% url 'inventory' %}"><i class="glyphicon glyphicon-briefcase"></i> Varebeholdning</a></li>{% endif %}
|
||||
{% if user.is_superuser %}<li class="{% block active_report %}{% endblock %}"><a href="{% url 'report' %}"><i class="glyphicon glyphicon-briefcase"></i> Rapport</a></li>{% endif %}
|
||||
<li class="divider"></li>
|
||||
<li><a href="{% url 'django.contrib.auth.views.logout' %}"><i class="glyphicon glyphicon-log-out"></i> Logg ut</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="{% url 'django.contrib.auth.views.login' %}">Logg inn</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div><!-- /.navbar-collapse -->
|
||||
</nav>
|
||||
{% endblock %}
|
||||
</header>
|
||||
@@ -64,20 +50,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{% static "dist/js/app.min.js" %}"></script>
|
||||
<script>
|
||||
if('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('/service-worker.js', { scope: '/' })
|
||||
.then(function(registration) {
|
||||
console.log("Service Worker Registered");
|
||||
});
|
||||
|
||||
navigator.serviceWorker.ready.then(function(registration) {
|
||||
console.log("Service Worker Ready");
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{% block tailinc %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,13 +6,6 @@
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
<h2>Varebeholdning</h2>
|
||||
<!-- TODO History view -->
|
||||
<!--<div class="text-right">
|
||||
<div class="btn-group">
|
||||
<a href="#list" class="btn btn-default"><i class="glyphicon glyphicon-list"></i> Liste</a>
|
||||
<a href="#stats" class="btn btn-default"><i class="glyphicon glyphicon-stats"></i> Historikk</a>
|
||||
</div>
|
||||
</div>-->
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
{{ form }}
|
||||
|
||||
<input type="submit" value="Legg til" class="btn btn-primary btn-lg" />
|
||||
<a href="{% url 'inventory' %}" class="btn btn-default" />Tilbake</a>
|
||||
<a href="{% url 'inventory' %}" class="btn btn-default">Tilbake</a>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
<div id="modal-order-{{order.id}}" class="modal" style="display: none;">
|
||||
<div class="modal-header">
|
||||
<a href="#" class="close" data-dismiss="modal">×</a>
|
||||
<h3>Er du sikker?</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
Orderen til <strong>{{ order.customer.first_name }} {{ order.customer.last_name|slice:":1"}}</strong> fra {{ order.created }} vil bli <em>slettet</em>.</p>
|
||||
<p>
|
||||
Orderen inneholdt:
|
||||
<ul>
|
||||
{% for line in order.orderlines.all %}
|
||||
<li>
|
||||
<span class="bold">{{ line.amount}}</span>
|
||||
<a href="#" class="product" title="{{ line.unit_price}} per">{{ line.product }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
Totalt: {{ order.order_sum }},-
|
||||
</p>
|
||||
<p>
|
||||
<strong>{{ order.customer.first_name }} {{ order.customer.last_name|slice:":1"}}</strong> sin saldo vil bli kreditert {{ order.order_sum }} kr.
|
||||
</p>
|
||||
<p>Vil du fortsette?</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn" data-dismiss="modal">Nei</a>
|
||||
<a href="#" class="btn btn-danger"><i class="icon-trash icon-white"></i> Ja</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,18 +0,0 @@
|
||||
<div id="modal-trans-{{t.id}}" class="modal" style="display: none;">
|
||||
<div class="modal-header">
|
||||
<a href="#" class="close" data-dismiss="modal">×</a>
|
||||
<h3>Er du sikker?</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>
|
||||
Inskuddet til <strong>{{ t.user.first_name }} {{ t.user.last_name|slice:":1"}}</strong> på <strong>{{ t.amount }}</strong> fra {{ t.created }} vil bli <em>slettet</em>.</p>
|
||||
<p>
|
||||
<strong>{{ t.user.first_name }} {{ t.user.last_name|slice:":1"}}</strong> sin saldo vil debiteres med {{ t.amount }} kr.
|
||||
</p>
|
||||
<p>Vil du fortsette?</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn" data-dismiss="modal">Nei</a>
|
||||
<a href="#" class="btn btn-danger"><i class="icon-trash icon-white"></i> Ja</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,39 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Lag ny bruker {% endblock %}
|
||||
|
||||
{% block active_create_user %}active{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if perms.auth.can_add_user %}
|
||||
<section class="row">
|
||||
<div class="col-md-4">
|
||||
{% for message in messages %}
|
||||
<div {% if message.tags %} class="alert alert-{{ message.tags }}"{% endif %}>{{ message }}<a class="close" data-dismiss="alert">×</a></div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
<section class="row">
|
||||
<div class="col-md-5">
|
||||
<h1>Legg til ny bruker</h1>
|
||||
{% if form.non_field_errors %}
|
||||
<p>{{ form.non_field_errors}}.</p>
|
||||
{% endif %}
|
||||
|
||||
<form method="post" role="form">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="id_first_name">{{ form.first_name.label }}</label>{{ form.first_name}}{{ form.first_name.errors }}
|
||||
<label for="id_last_name">{{ form.last_name.label }}</label>{{ form.last_name}}{{ form.last_name.errors }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="id_email">{{ form.email.label }}</label>{{ form.email}}{{ form.email.errors }}
|
||||
</div>
|
||||
<input type="submit" value="Legg til" class="btn btn-primary btn-lg" />
|
||||
<a href="{% url 'home' %}" class="btn btn-default">Tilbake</a>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -1,9 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Logg inn{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include "registration/login_form.html" %}
|
||||
|
||||
{% endblock %}
|
||||
{% block footer %}{% endblock %}
|
||||
@@ -1,15 +0,0 @@
|
||||
<div class="form-login">
|
||||
{% if form.errors %}
|
||||
<p class="alert alert-danger">Brukernavn og passord stemmer ikke overens. Prøv igjen.</p>
|
||||
{% endif %}
|
||||
|
||||
<form method="post" action="{% url 'django.contrib.auth.views.login' %}" class="">
|
||||
{% csrf_token %}
|
||||
<label for="id_username">Brukernavn:</label>
|
||||
{{ form.username }}
|
||||
<label for="id_password">Passord: </label>
|
||||
{{ form.password }}<br/>
|
||||
<input type="submit" value="Logg inn" class="btn btn-primary btn-lg"/>
|
||||
<input type="hidden" name="next" value="{{ next }}" />
|
||||
</form>
|
||||
</div>
|
||||
@@ -1,12 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Logg inn{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<p class="alert alert-success">Du er logget ut.</p>
|
||||
<p>Vil du <a href="{% url 'home' %}">logge inn igjen?</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in new issue
Block a user