diff --git a/main/api/mutations/users.py b/main/api/mutations/users.py
new file mode 100644
index 0000000..1b56a96
--- /dev/null
+++ b/main/api/mutations/users.py
@@ -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
diff --git a/main/api/schema.py b/main/api/schema.py
index 3114651..19ecc80 100644
--- a/main/api/schema.py
+++ b/main/api/schema.py
@@ -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
diff --git a/main/forms.py b/main/forms.py
index df56a0c..4fb1cc6 100644
--- a/main/forms.py
+++ b/main/forms.py
@@ -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):
diff --git a/main/urls.py b/main/urls.py
index eff2f59..ab0da23 100644
--- a/main/urls.py
+++ b/main/urls.py
@@ -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"})]
diff --git a/main/views/users.py b/main/views/users.py
deleted file mode 100644
index a0cac58..0000000
--- a/main/views/users.py
+++ /dev/null
@@ -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})
diff --git a/static/app/images/edb_brick.png b/static/app/images/edb_brick.png
deleted file mode 100644
index ca5e205..0000000
Binary files a/static/app/images/edb_brick.png and /dev/null differ
diff --git a/static/app/images/glyphicons-halflings-white.png b/static/app/images/glyphicons-halflings-white.png
deleted file mode 100755
index 3bf6484..0000000
Binary files a/static/app/images/glyphicons-halflings-white.png and /dev/null differ
diff --git a/static/app/images/glyphicons-halflings.png b/static/app/images/glyphicons-halflings.png
deleted file mode 100755
index a996999..0000000
Binary files a/static/app/images/glyphicons-halflings.png and /dev/null differ
diff --git a/static/app/images/grid.png b/static/app/images/grid.png
deleted file mode 100644
index 129d4a2..0000000
Binary files a/static/app/images/grid.png and /dev/null differ
diff --git a/static/app/images/product.png b/static/app/images/product.png
deleted file mode 100644
index 5cba7f3..0000000
Binary files a/static/app/images/product.png and /dev/null differ
diff --git a/static/app/images/unknown_person.png b/static/app/images/unknown_person.png
deleted file mode 100644
index c01cf9b..0000000
Binary files a/static/app/images/unknown_person.png and /dev/null differ
diff --git a/static/app/js/main.js b/static/app/js/main.js
deleted file mode 100644
index ff2eeda..0000000
--- a/static/app/js/main.js
+++ /dev/null
@@ -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);
- });
-});
\ No newline at end of file
diff --git a/static/app/js/profile.js b/static/app/js/profile.js
deleted file mode 100644
index 1dd8cdd..0000000
--- a/static/app/js/profile.js
+++ /dev/null
@@ -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
- });
- });
- }
-});
\ No newline at end of file
diff --git a/static/app/styles/_datepicker.scss b/static/app/styles/_datepicker.scss
deleted file mode 100644
index aa78b1d..0000000
--- a/static/app/styles/_datepicker.scss
+++ /dev/null
@@ -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;
-}
diff --git a/static/app/styles/_mixins.scss b/static/app/styles/_mixins.scss
deleted file mode 100644
index 19b26b6..0000000
--- a/static/app/styles/_mixins.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-@mixin inline-block-list() {
- clear: both;
- padding: 0;
- margin: 0;
- li {
- list-style: none;
- display: inline-block;
- white-space: nowrap;
- }
-}
\ No newline at end of file
diff --git a/static/app/styles/_variables.scss b/static/app/styles/_variables.scss
deleted file mode 100644
index aa332d8..0000000
--- a/static/app/styles/_variables.scss
+++ /dev/null
@@ -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;
diff --git a/static/app/styles/screen.scss b/static/app/styles/screen.scss
deleted file mode 100644
index caef2d6..0000000
--- a/static/app/styles/screen.scss
+++ /dev/null
@@ -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%;
- }
-
-}
diff --git a/static/app/sw/sw-toolbox-config.js b/static/app/sw/sw-toolbox-config.js
deleted file mode 100644
index 957dcda..0000000
--- a/static/app/sw/sw-toolbox-config.js
+++ /dev/null
@@ -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);
-// });
-//}
\ No newline at end of file
diff --git a/static/dist/js/app.min.js b/static/dist/js/app.min.js
deleted file mode 100644
index 3efcd28..0000000
--- a/static/dist/js/app.min.js
+++ /dev/null
@@ -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""+this.point.name+": "+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""+this.point.name+": "+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=[],o=0,s=t.length;o-1)r&&r.push(o);else if(h=ft.contains(o.ownerDocument,o),s=y(u.appendChild(o),"script"),h&&x(s),i)for(c=0;o=s[c++];)Xt.test(o.type||"")&&i.push(o);return u}function w(){return!0}function k(){return!1}function T(){try{return et.activeElement}catch(t){}}function M(t,e,i,n,r,o){var s,a;if("object"==typeof e){"string"!=typeof i&&(n=n||i,i=void 0);for(a in e)M(t,a,i,n,e[a],o);return t}if(null==n&&null==r?(r=i,n=i=void 0):null==r&&("string"==typeof i?(r=n,n=void 0):(r=n,n=i,i=void 0)),!1===r)r=k;else if(!r)return t;return 1===o&&(s=r,r=function(t){return ft().off(t),s.apply(this,arguments)},r.guid=s.guid||(s.guid=ft.guid++)),t.each(function(){ft.event.add(this,e,r,n,i)})}function C(t,e){return r(t,"table")&&r(11!==e.nodeType?e:e.firstChild,"tr")?ft(">tbody",t)[0]||t:t}function S(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function D(t){var e=ie.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function A(t,e){var i,n,r,o,s,a,l,h;if(1===e.nodeType){if(It.hasData(t)&&(o=It.access(t),s=It.set(e,o),h=o.events)){delete s.handle,s.events={};for(r in h)for(i=0,n=h[r].length;i1&&"string"==typeof f&&!dt.checkClone&&ee.test(f))return t.each(function(i){var o=t.eq(i);g&&(e[0]=f.call(this,i,o.html())),O(o,e,n,r)});if(d&&(o=b(e,t[0].ownerDocument,!1,t,r),s=o.firstChild,1===o.childNodes.length&&(o=s),s||r)){for(l=(a=ft.map(y(o,"script"),S)).length;u=0&&iw.cacheLength&&delete t[e.shift()],t[i+" "]=n}var e=[];return t}function n(t){return t[j]=!0,t}function r(t){var e=P.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var i=t.split("|"),n=i.length;n--;)w.attrHandle[i[n]]=e}function s(t,e){var i=e&&t,n=i&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(n)return n;if(i)for(;i=i.nextSibling;)if(i===e)return-1;return t?1:-1}function a(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&kt(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function l(t){return n(function(e){return e=+e,n(function(i,n){for(var r,o=t([],i.length,e),s=o.length;s--;)i[r=o[s]]&&(i[r]=!(n[r]=i[r]))})})}function h(t){return t&&void 0!==t.getElementsByTagName&&t}function c(){}function u(t){for(var e=0,i=t.length,n="";e1?function(e,i,n){for(var r=t.length;r--;)if(!t[r](e,i,n))return!1;return!0}:t[0]}function f(t,i,n){for(var r=0,o=i.length;r-1&&(n[h]=!(s[h]=u))}}else x=g(x===s?x.splice(m,x.length):x),o?o(null,s,x,l):K.apply(s,x)})}function v(t){for(var e,i,n,r=t.length,o=w.relative[t[0].type],s=o||w.relative[" "],a=o?1:0,l=d(function(t){return t===e},s,!0),h=d(function(t){return J(e,t)>-1},s,!0),c=[function(t,i,n){var r=!o&&(n||i!==D)||((e=i).nodeType?l(t,i,n):h(t,i,n));return e=null,r}];a1&&p(c),a>1&&u(t.slice(0,a-1).concat({value:" "===t[a-2].type?"*":""})).replace(ot,"$1"),i,a0,o=t.length>0,s=function(n,s,a,l,h){var c,u,d,p=0,f="0",m=n&&[],v=[],y=D,x=n||o&&w.find.TAG("*",h),b=H+=null==y?1:Math.random()||.1,k=x.length;for(h&&(D=s===P||s||h);f!==k&&null!=(c=x[f]);f++){if(o&&c){for(u=0,s||c.ownerDocument===P||(O(c),a=!N);d=t[u++];)if(d(c,s||P,a)){l.push(c);break}h&&(H=b)}r&&((c=!d&&c)&&p--,n&&m.push(c))}if(p+=f,r&&f!==p){for(u=0;d=i[u++];)d(m,v,s,a);if(n){if(p>0)for(;f--;)m[f]||v[f]||(v[f]=V.call(l));v=g(v)}K.apply(l,v),h&&!n&&v.length>0&&p+i.length>1&&e.uniqueSort(l)}return h&&(H=b,D=y),m};return r?n(s):s}var x,b,w,k,T,M,C,S,D,A,L,O,P,E,N,I,_,z,R,j="sizzle"+1*new Date,F=t.document,H=0,B=0,W=i(),G=i(),Y=i(),$=function(t,e){return t===e&&(L=!0),0},X={}.hasOwnProperty,U=[],V=U.pop,q=U.push,K=U.push,Z=U.slice,J=function(t,e){for(var i=0,n=t.length;i+~]|"+tt+")"+tt+"*"),lt=new RegExp("="+tt+"*([^\\]'\"]*?)"+tt+"*\\]","g"),ht=new RegExp(nt),ct=new RegExp("^"+et+"$"),ut={ID:new RegExp("^#("+et+")"),CLASS:new RegExp("^\\.("+et+")"),TAG:new RegExp("^("+et+"|[*])"),ATTR:new RegExp("^"+it),PSEUDO:new RegExp("^"+nt),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+tt+"*(even|odd|(([+-]|)(\\d*)n|)"+tt+"*(?:([+-]|)"+tt+"*(\\d+)|))"+tt+"*\\)|)","i"),bool:new RegExp("^(?:"+Q+")$","i"),needsContext:new RegExp("^"+tt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+tt+"*((?:-\\d)?\\d*)"+tt+"*\\)|)(?=[^-]|$)","i")},dt=/^(?:input|select|textarea|button)$/i,pt=/^h\d$/i,ft=/^[^{]+\{\s*\[native \w/,gt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,mt=/[+~]/,vt=new RegExp("\\\\([\\da-f]{1,6}"+tt+"?|("+tt+")|.)","ig"),yt=function(t,e,i){var n="0x"+e-65536;return n!==n||i?e:n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320)},xt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,bt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},wt=function(){O()},kt=d(function(t){return!0===t.disabled&&("form"in t||"label"in t)},{dir:"parentNode",next:"legend"});try{K.apply(U=Z.call(F.childNodes),F.childNodes),U[F.childNodes.length].nodeType}catch(t){K={apply:U.length?function(t,e){q.apply(t,Z.call(e))}:function(t,e){for(var i=t.length,n=0;t[i++]=e[n++];);t.length=i-1}}}b=e.support={},T=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},O=e.setDocument=function(t){var e,i,n=t?t.ownerDocument||t:F;return n!==P&&9===n.nodeType&&n.documentElement?(P=n,E=P.documentElement,N=!T(P),F!==P&&(i=P.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",wt,!1):i.attachEvent&&i.attachEvent("onunload",wt)),b.attributes=r(function(t){return t.className="i",!t.getAttribute("className")}),b.getElementsByTagName=r(function(t){return t.appendChild(P.createComment("")),!t.getElementsByTagName("*").length}),b.getElementsByClassName=ft.test(P.getElementsByClassName),b.getById=r(function(t){return E.appendChild(t).id=j,!P.getElementsByName||!P.getElementsByName(j).length}),b.getById?(w.filter.ID=function(t){var e=t.replace(vt,yt);return function(t){return t.getAttribute("id")===e}},w.find.ID=function(t,e){if(void 0!==e.getElementById&&N){var i=e.getElementById(t);return i?[i]:[]}}):(w.filter.ID=function(t){var e=t.replace(vt,yt);return function(t){var i=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return i&&i.value===e}},w.find.ID=function(t,e){if(void 0!==e.getElementById&&N){var i,n,r,o=e.getElementById(t);if(o){if((i=o.getAttributeNode("id"))&&i.value===t)return[o];for(r=e.getElementsByName(t),n=0;o=r[n++];)if((i=o.getAttributeNode("id"))&&i.value===t)return[o]}return[]}}),w.find.TAG=b.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):b.qsa?e.querySelectorAll(t):void 0}:function(t,e){var i,n=[],r=0,o=e.getElementsByTagName(t);if("*"===t){for(;i=o[r++];)1===i.nodeType&&n.push(i);return n}return o},w.find.CLASS=b.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&N)return e.getElementsByClassName(t)},_=[],I=[],(b.qsa=ft.test(P.querySelectorAll))&&(r(function(t){E.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]="+tt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||I.push("\\["+tt+"*(?:value|"+Q+")"),t.querySelectorAll("[id~="+j+"-]").length||I.push("~="),t.querySelectorAll(":checked").length||I.push(":checked"),t.querySelectorAll("a#"+j+"+*").length||I.push(".#.+[+~]")}),r(function(t){t.innerHTML="";var e=P.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&I.push("name"+tt+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&I.push(":enabled",":disabled"),E.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&I.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),I.push(",.*:")})),(b.matchesSelector=ft.test(z=E.matches||E.webkitMatchesSelector||E.mozMatchesSelector||E.oMatchesSelector||E.msMatchesSelector))&&r(function(t){b.disconnectedMatch=z.call(t,"*"),z.call(t,"[s!='']:x"),_.push("!=",nt)}),I=I.length&&new RegExp(I.join("|")),_=_.length&&new RegExp(_.join("|")),e=ft.test(E.compareDocumentPosition),R=e||ft.test(E.contains)?function(t,e){var i=9===t.nodeType?t.documentElement:t,n=e&&e.parentNode;return t===n||!(!n||1!==n.nodeType||!(i.contains?i.contains(n):t.compareDocumentPosition&&16&t.compareDocumentPosition(n)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},$=e?function(t,e){if(t===e)return L=!0,0;var i=!t.compareDocumentPosition-!e.compareDocumentPosition;return i||(1&(i=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!b.sortDetached&&e.compareDocumentPosition(t)===i?t===P||t.ownerDocument===F&&R(F,t)?-1:e===P||e.ownerDocument===F&&R(F,e)?1:A?J(A,t)-J(A,e):0:4&i?-1:1)}:function(t,e){if(t===e)return L=!0,0;var i,n=0,r=t.parentNode,o=e.parentNode,a=[t],l=[e];if(!r||!o)return t===P?-1:e===P?1:r?-1:o?1:A?J(A,t)-J(A,e):0;if(r===o)return s(t,e);for(i=t;i=i.parentNode;)a.unshift(i);for(i=e;i=i.parentNode;)l.unshift(i);for(;a[n]===l[n];)n++;return n?s(a[n],l[n]):a[n]===F?-1:l[n]===F?1:0},P):P},e.matches=function(t,i){return e(t,null,null,i)},e.matchesSelector=function(t,i){if((t.ownerDocument||t)!==P&&O(t),i=i.replace(lt,"='$1']"),b.matchesSelector&&N&&!Y[i+" "]&&(!_||!_.test(i))&&(!I||!I.test(i)))try{var n=z.call(t,i);if(n||b.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){}return e(i,P,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==P&&O(t),R(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==P&&O(t);var i=w.attrHandle[e.toLowerCase()],n=i&&X.call(w.attrHandle,e.toLowerCase())?i(t,e,!N):void 0;return void 0!==n?n:b.attributes||!N?t.getAttribute(e):(n=t.getAttributeNode(e))&&n.specified?n.value:null},e.escape=function(t){return(t+"").replace(xt,bt)},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,i=[],n=0,r=0;if(L=!b.detectDuplicates,A=!b.sortStable&&t.slice(0),t.sort($),L){for(;e=t[r++];)e===t[r]&&(n=i.push(r));for(;n--;)t.splice(i[n],1)}return A=null,t},k=e.getText=function(t){var e,i="",n=0,r=t.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)i+=k(t)}else if(3===r||4===r)return t.nodeValue}else for(;e=t[n++];)i+=k(e);return i},(w=e.selectors={cacheLength:50,createPseudo:n,match:ut,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(vt,yt),t[3]=(t[3]||t[4]||t[5]||"").replace(vt,yt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,i=!t[6]&&t[2];return ut.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":i&&ht.test(i)&&(e=M(i,!0))&&(e=i.indexOf(")",i.length-e)-i.length)&&(t[0]=t[0].slice(0,e),t[2]=i.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(vt,yt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=W[t+" "];return e||(e=new RegExp("(^|"+tt+")"+t+"("+tt+"|$)"))&&W(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,i,n){return function(r){var o=e.attr(r,t);return null==o?"!="===i:!i||(o+="","="===i?o===n:"!="===i?o!==n:"^="===i?n&&0===o.indexOf(n):"*="===i?n&&o.indexOf(n)>-1:"$="===i?n&&o.slice(-n.length)===n:"~="===i?(" "+o.replace(rt," ")+" ").indexOf(n)>-1:"|="===i&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,i,n,r){var o="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===n&&0===r?function(t){return!!t.parentNode}:function(e,i,l){var h,c,u,d,p,f,g=o!==s?"nextSibling":"previousSibling",m=e.parentNode,v=a&&e.nodeName.toLowerCase(),y=!l&&!a,x=!1;if(m){if(o){for(;g;){for(d=e;d=d[g];)if(a?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;f=g="only"===t&&!f&&"nextSibling"}return!0}if(f=[s?m.firstChild:m.lastChild],s&&y){for(x=(p=(h=(c=(u=(d=m)[j]||(d[j]={}))[d.uniqueID]||(u[d.uniqueID]={}))[t]||[])[0]===H&&h[1])&&h[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||f.pop();)if(1===d.nodeType&&++x&&d===e){c[t]=[H,p,x];break}}else if(y&&(d=e,u=d[j]||(d[j]={}),c=u[d.uniqueID]||(u[d.uniqueID]={}),h=c[t]||[],p=h[0]===H&&h[1],x=p),!1===x)for(;(d=++p&&d&&d[g]||(x=p=0)||f.pop())&&((a?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++x||(y&&(u=d[j]||(d[j]={}),c=u[d.uniqueID]||(u[d.uniqueID]={}),c[t]=[H,x]),d!==e)););return(x-=r)===n||x%n==0&&x/n>=0}}},PSEUDO:function(t,i){var r,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[j]?o(i):o.length>1?(r=[t,t,"",i],w.setFilters.hasOwnProperty(t.toLowerCase())?n(function(t,e){for(var n,r=o(t,i),s=r.length;s--;)n=J(t,r[s]),t[n]=!(e[n]=r[s])}):function(t){return o(t,0,r)}):o}},pseudos:{not:n(function(t){var e=[],i=[],r=C(t.replace(ot,"$1"));return r[j]?n(function(t,e,i,n){for(var o,s=r(t,null,n,[]),a=t.length;a--;)(o=s[a])&&(t[a]=!(e[a]=o))}):function(t,n,o){return e[0]=t,r(e,null,o,i),e[0]=null,!i.pop()}}),has:n(function(t){return function(i){return e(t,i).length>0}}),contains:n(function(t){return t=t.replace(vt,yt),function(e){return(e.textContent||e.innerText||k(e)).indexOf(t)>-1}}),lang:n(function(t){return ct.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(vt,yt).toLowerCase(),function(e){var i;do{if(i=N?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(i=i.toLowerCase())===t||0===i.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var i=t.location&&t.location.hash;return i&&i.slice(1)===e.id},root:function(t){return t===E},focus:function(t){return t===P.activeElement&&(!P.hasFocus||P.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:a(!1),disabled:a(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!w.pseudos.empty(t)},header:function(t){return pt.test(t.nodeName)},input:function(t){return dt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:l(function(){return[0]}),last:l(function(t,e){return[e-1]}),eq:l(function(t,e,i){return[i<0?i+e:i]}),even:l(function(t,e){for(var i=0;i=0;)t.push(n);return t}),gt:l(function(t,e,i){for(var n=i<0?i+e:i;++n2&&"ID"===(s=o[0]).type&&9===e.nodeType&&N&&w.relative[o[1].type]){if(!(e=(w.find.ID(s.matches[0].replace(vt,yt),e)||[])[0]))return i;c&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(r=ut.needsContext.test(t)?0:o.length;r--&&(s=o[r],!w.relative[a=s.type]);)if((l=w.find[a])&&(n=l(s.matches[0].replace(vt,yt),mt.test(o[0].type)&&h(e.parentNode)||e))){if(o.splice(r,1),!(t=n.length&&u(o)))return K.apply(i,n),i;break}}return(c||C(t,d))(n,e,!N,i,!e||mt.test(t)&&h(e.parentNode)||e),i},b.sortStable=j.split("").sort($).join("")===j,b.detectDuplicates=!!L,O(),b.sortDetached=r(function(t){return 1&t.compareDocumentPosition(P.createElement("fieldset"))}),r(function(t){return t.innerHTML="","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,i){if(!i)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),b.attributes&&r(function(t){return t.innerHTML="",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,i){if(!i&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),r(function(t){return null==t.getAttribute("disabled")})||o(Q,function(t,e,i){var n;if(!i)return!0===t[e]?e.toLowerCase():(n=t.getAttributeNode(e))&&n.specified?n.value:null}),e}(t);ft.find=xt,ft.expr=xt.selectors,ft.expr[":"]=ft.expr.pseudos,ft.uniqueSort=ft.unique=xt.uniqueSort,ft.text=xt.getText,ft.isXMLDoc=xt.isXML,ft.contains=xt.contains,ft.escapeSelector=xt.escape;var bt=function(t,e,i){for(var n=[],r=void 0!==i;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(r&&ft(t).is(i))break;n.push(t)}return n},wt=function(t,e){for(var i=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&i.push(t);return i},kt=ft.expr.match.needsContext,Tt=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Mt=/^.[^:#\[\.,]*$/;ft.filter=function(t,e,i){var n=e[0];return i&&(t=":not("+t+")"),1===e.length&&1===n.nodeType?ft.find.matchesSelector(n,t)?[n]:[]:ft.find.matches(t,ft.grep(e,function(t){return 1===t.nodeType}))},ft.fn.extend({find:function(t){var e,i,n=this.length,r=this;if("string"!=typeof t)return this.pushStack(ft(t).filter(function(){for(e=0;e1?ft.uniqueSort(i):i},filter:function(t){return this.pushStack(o(this,t||[],!1))},not:function(t){return this.pushStack(o(this,t||[],!0))},is:function(t){return!!o(this,"string"==typeof t&&kt.test(t)?ft(t):t||[],!1).length}});var Ct,St=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ft.fn.init=function(t,e,i){var n,r;if(!t)return this;if(i=i||Ct,"string"==typeof t){if(!(n="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:St.exec(t))||!n[1]&&e)return!e||e.jquery?(e||i).find(t):this.constructor(e).find(t);if(n[1]){if(e=e instanceof ft?e[0]:e,ft.merge(this,ft.parseHTML(n[1],e&&e.nodeType?e.ownerDocument||e:et,!0)),Tt.test(n[1])&&ft.isPlainObject(e))for(n in e)ft.isFunction(this[n])?this[n](e[n]):this.attr(n,e[n]);return this}return(r=et.getElementById(n[2]))&&(this[0]=r,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):ft.isFunction(t)?void 0!==i.ready?i.ready(t):t(ft):ft.makeArray(t,this)}).prototype=ft.fn,Ct=ft(et);var Dt=/^(?:parents|prev(?:Until|All))/,At={children:!0,contents:!0,next:!0,prev:!0};ft.fn.extend({has:function(t){var e=ft(t,this),i=e.length;return this.filter(function(){for(var t=0;t-1:1===i.nodeType&&ft.find.matchesSelector(i,t))){o.push(i);break}return this.pushStack(o.length>1?ft.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?st.call(ft(t),this[0]):st.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(ft.uniqueSort(ft.merge(this.get(),ft(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),ft.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return bt(t,"parentNode")},parentsUntil:function(t,e,i){return bt(t,"parentNode",i)},next:function(t){return s(t,"nextSibling")},prev:function(t){return s(t,"previousSibling")},nextAll:function(t){return bt(t,"nextSibling")},prevAll:function(t){return bt(t,"previousSibling")},nextUntil:function(t,e,i){return bt(t,"nextSibling",i)},prevUntil:function(t,e,i){return bt(t,"previousSibling",i)},siblings:function(t){return wt((t.parentNode||{}).firstChild,t)},children:function(t){return wt(t.firstChild)},contents:function(t){return r(t,"iframe")?t.contentDocument:(r(t,"template")&&(t=t.content||t),ft.merge([],t.childNodes))}},function(t,e){ft.fn[t]=function(i,n){var r=ft.map(this,e,i);return"Until"!==t.slice(-5)&&(n=i),n&&"string"==typeof n&&(r=ft.filter(n,r)),this.length>1&&(At[t]||ft.uniqueSort(r),Dt.test(t)&&r.reverse()),this.pushStack(r)}});var Lt=/[^\x20\t\r\n\f]+/g;ft.Callbacks=function(t){t="string"==typeof t?a(t):ft.extend({},t);var e,i,n,r,o=[],s=[],l=-1,h=function(){for(r=r||t.once,n=e=!0;s.length;l=-1)for(i=s.shift();++l-1;)o.splice(i,1),i<=l&&l--}),this},has:function(t){return t?ft.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return r=s=[],o=i="",this},disabled:function(){return!o},lock:function(){return r=s=[],i||e||(o=i=""),this},locked:function(){return!!r},fireWith:function(t,i){return r||(i=i||[],i=[t,i.slice?i.slice():i],s.push(i),e||h()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},ft.extend({Deferred:function(e){var i=[["notify","progress",ft.Callbacks("memory"),ft.Callbacks("memory"),2],["resolve","done",ft.Callbacks("once memory"),ft.Callbacks("once memory"),0,"resolved"],["reject","fail",ft.Callbacks("once memory"),ft.Callbacks("once memory"),1,"rejected"]],n="pending",r={state:function(){return n},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return r.then(null,t)},pipe:function(){var t=arguments;return ft.Deferred(function(e){ft.each(i,function(i,n){var r=ft.isFunction(t[n[4]])&&t[n[4]];o[n[1]](function(){var t=r&&r.apply(this,arguments);t&&ft.isFunction(t.promise)?t.promise().progress(e.notify).done(e.resolve).fail(e.reject):e[n[0]+"With"](this,r?[t]:arguments)})}),t=null}).promise()},then:function(e,n,r){function o(e,i,n,r){return function(){var a=this,c=arguments,u=function(){var t,u;if(!(e=s&&(n!==h&&(a=void 0,c=[t]),i.rejectWith(a,c))}};e?d():(ft.Deferred.getStackHook&&(d.stackTrace=ft.Deferred.getStackHook()),t.setTimeout(d))}}var s=0;return ft.Deferred(function(t){i[0][3].add(o(0,t,ft.isFunction(r)?r:l,t.notifyWith)),i[1][3].add(o(0,t,ft.isFunction(e)?e:l)),i[2][3].add(o(0,t,ft.isFunction(n)?n:h))}).promise()},promise:function(t){return null!=t?ft.extend(t,r):r}},o={};return ft.each(i,function(t,e){var s=e[2],a=e[5];r[e[1]]=s.add,a&&s.add(function(){n=a},i[3-t][2].disable,i[0][2].lock),s.add(e[3].fire),o[e[0]]=function(){return o[e[0]+"With"](this===o?void 0:this,arguments),this},o[e[0]+"With"]=s.fireWith}),r.promise(o),e&&e.call(o,o),o},when:function(t){var e=arguments.length,i=e,n=Array(i),r=nt.call(arguments),o=ft.Deferred(),s=function(t){return function(i){n[t]=this,r[t]=arguments.length>1?nt.call(arguments):i,--e||o.resolveWith(n,r)}};if(e<=1&&(c(t,o.done(s(i)).resolve,o.reject,!e),"pending"===o.state()||ft.isFunction(r[i]&&r[i].then)))return o.then();for(;i--;)c(r[i],s(i),o.reject);return o.promise()}});var Ot=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ft.Deferred.exceptionHook=function(e,i){t.console&&t.console.warn&&e&&Ot.test(e.name)&&t.console.warn("jQuery.Deferred exception: "+e.message,e.stack,i)},ft.readyException=function(e){t.setTimeout(function(){throw e})};var Pt=ft.Deferred();ft.fn.ready=function(t){return Pt.then(t).catch(function(t){ft.readyException(t)}),this},ft.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--ft.readyWait:ft.isReady)||(ft.isReady=!0,!0!==t&&--ft.readyWait>0||Pt.resolveWith(et,[ft]))}}),ft.ready.then=Pt.then,"complete"===et.readyState||"loading"!==et.readyState&&!et.documentElement.doScroll?t.setTimeout(ft.ready):(et.addEventListener("DOMContentLoaded",u),t.addEventListener("load",u));var Et=function(t,e,i,n,r,o,s){var a=0,l=t.length,h=null==i;if("object"===ft.type(i)){r=!0;for(a in i)Et(t,e,a,i[a],!0,o,s)}else if(void 0!==n&&(r=!0,ft.isFunction(n)||(s=!0),h&&(s?(e.call(t,n),e=null):(h=e,e=function(t,e,i){return h.call(ft(t),i)})),e))for(;a1,null,!0)},removeData:function(t){return this.each(function(){_t.remove(this,t)})}}),ft.extend({queue:function(t,e,i){var n;if(t)return e=(e||"fx")+"queue",n=It.get(t,e),i&&(!n||Array.isArray(i)?n=It.access(t,e,ft.makeArray(i)):n.push(i)),n||[]},dequeue:function(t,e){e=e||"fx";var i=ft.queue(t,e),n=i.length,r=i.shift(),o=ft._queueHooks(t,e);"inprogress"===r&&(r=i.shift(),n--),r&&("fx"===e&&i.unshift("inprogress"),delete o.stop,r.call(t,function(){ft.dequeue(t,e)},o)),!n&&o&&o.empty.fire()},_queueHooks:function(t,e){var i=e+"queueHooks";return It.get(t,i)||It.access(t,i,{empty:ft.Callbacks("once memory").add(function(){It.remove(t,[e+"queue",i])})})}}),ft.fn.extend({queue:function(t,e){var i=2;return"string"!=typeof t&&(e=t,t="fx",i--),arguments.length\x20\t\r\n\f]+)/i,Xt=/^$|\/(?:java|ecma)script/i,Ut={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};Ut.optgroup=Ut.option,Ut.tbody=Ut.tfoot=Ut.colgroup=Ut.caption=Ut.thead,Ut.th=Ut.td;var Vt=/<|?\w+;/;!function(){var t=et.createDocumentFragment().appendChild(et.createElement("div")),e=et.createElement("input");e.setAttribute("type","radio"),e.setAttribute("checked","checked"),e.setAttribute("name","t"),t.appendChild(e),dt.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",dt.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var qt=et.documentElement,Kt=/^key/,Zt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Jt=/^([^.]*)(?:\.(.+)|)/;ft.event={global:{},add:function(t,e,i,n,r){var o,s,a,l,h,c,u,d,p,f,g,m=It.get(t);if(m)for(i.handler&&(o=i,i=o.handler,r=o.selector),r&&ft.find.matchesSelector(qt,r),i.guid||(i.guid=ft.guid++),(l=m.events)||(l=m.events={}),(s=m.handle)||(s=m.handle=function(e){return void 0!==ft&&ft.event.triggered!==e.type?ft.event.dispatch.apply(t,arguments):void 0}),h=(e=(e||"").match(Lt)||[""]).length;h--;)a=Jt.exec(e[h])||[],p=g=a[1],f=(a[2]||"").split(".").sort(),p&&(u=ft.event.special[p]||{},p=(r?u.delegateType:u.bindType)||p,u=ft.event.special[p]||{},c=ft.extend({type:p,origType:g,data:n,handler:i,guid:i.guid,selector:r,needsContext:r&&ft.expr.match.needsContext.test(r),namespace:f.join(".")},o),(d=l[p])||(d=l[p]=[],d.delegateCount=0,u.setup&&!1!==u.setup.call(t,n,f,s)||t.addEventListener&&t.addEventListener(p,s)),u.add&&(u.add.call(t,c),c.handler.guid||(c.handler.guid=i.guid)),r?d.splice(d.delegateCount++,0,c):d.push(c),ft.event.global[p]=!0)},remove:function(t,e,i,n,r){var o,s,a,l,h,c,u,d,p,f,g,m=It.hasData(t)&&It.get(t);if(m&&(l=m.events)){for(h=(e=(e||"").match(Lt)||[""]).length;h--;)if(a=Jt.exec(e[h])||[],p=g=a[1],f=(a[2]||"").split(".").sort(),p){for(u=ft.event.special[p]||{},d=l[p=(n?u.delegateType:u.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=d.length;o--;)c=d[o],!r&&g!==c.origType||i&&i.guid!==c.guid||a&&!a.test(c.namespace)||n&&n!==c.selector&&("**"!==n||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,u.remove&&u.remove.call(t,c));s&&!d.length&&(u.teardown&&!1!==u.teardown.call(t,f,m.handle)||ft.removeEvent(t,p,m.handle),delete l[p])}else for(p in l)ft.event.remove(t,p+e[h],i,n,!0);ft.isEmptyObject(l)&&It.remove(t,"handle events")}},dispatch:function(t){var e,i,n,r,o,s,a=ft.event.fix(t),l=new Array(arguments.length),h=(It.get(this,"events")||{})[a.type]||[],c=ft.event.special[a.type]||{};for(l[0]=a,e=1;e=1))for(;h!==this;h=h.parentNode||this)if(1===h.nodeType&&("click"!==t.type||!0!==h.disabled)){for(o=[],s={},i=0;i-1:ft.find(r,this,null,[h]).length),s[r]&&o.push(n);o.length&&a.push({elem:h,handlers:o})}return h=this,l\x20\t\r\n\f]*)[^>]*)\/>/gi,te=/
-
{% block tailinc %}{% endblock %}