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=/\s*$/g;ft.extend({htmlPrefilter:function(t){return t.replace(Qt,"<$1>")},clone:function(t,e,i){var n,r,o,s,a=t.cloneNode(!0),l=ft.contains(t.ownerDocument,t);if(!(dt.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||ft.isXMLDoc(t)))for(s=y(a),o=y(t),n=0,r=o.length;n0&&x(s,!l&&y(t,"script")),a},cleanData:function(t){for(var e,i,n,r=ft.event.special,o=0;void 0!==(i=t[o]);o++)if(Nt(i)){if(e=i[It.expando]){if(e.events)for(n in e.events)r[n]?ft.event.remove(i,n):ft.removeEvent(i,n,e.handle);i[It.expando]=void 0}i[_t.expando]&&(i[_t.expando]=void 0)}}}),ft.fn.extend({detach:function(t){return P(this,t,!0)},remove:function(t){return P(this,t)},text:function(t){return Et(this,function(t){return void 0===t?ft.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return O(this,arguments,function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||C(this,t).appendChild(t)})},prepend:function(){return O(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=C(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return O(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return O(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(ft.cleanData(y(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return ft.clone(this,t,e)})},html:function(t){return Et(this,function(t){var e=this[0]||{},i=0,n=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!te.test(t)&&!Ut[($t.exec(t)||["",""])[1].toLowerCase()]){t=ft.htmlPrefilter(t);try{for(;i1)}}),ft.Tween=F,F.prototype={constructor:F,init:function(t,e,i,n,r,o){this.elem=t,this.prop=i,this.easing=r||ft.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=n,this.unit=o||(ft.cssNumber[i]?"":"px")},cur:function(){var t=F.propHooks[this.prop];return t&&t.get?t.get(this):F.propHooks._default.get(this)},run:function(t){var e,i=F.propHooks[this.prop];return this.options.duration?this.pos=e=ft.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),i&&i.set?i.set(this):F.propHooks._default.set(this),this}},F.prototype.init.prototype=F.prototype,F.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=ft.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){ft.fx.step[t.prop]?ft.fx.step[t.prop](t):1!==t.elem.nodeType||null==t.elem.style[ft.cssProps[t.prop]]&&!ft.cssHooks[t.prop]?t.elem[t.prop]=t.now:ft.style(t.elem,t.prop,t.now+t.unit)}}},F.propHooks.scrollTop=F.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},ft.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},ft.fx=F.prototype.init,ft.fx.step={};var pe,fe,ge=/^(?:toggle|show|hide)$/,me=/queueHooks$/;ft.Animation=ft.extend($,{tweeners:{"*":[function(t,e){var i=this.createTween(t,e);return g(i.elem,t,Ft.exec(e),i),i}]},tweener:function(t,e){ft.isFunction(t)?(e=t,t=["*"]):t=t.match(Lt);for(var i,n=0,r=t.length;n1)},removeAttr:function(t){return this.each(function(){ft.removeAttr(this,t)})}}),ft.extend({attr:function(t,e,i){var n,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?ft.prop(t,e,i):(1===o&&ft.isXMLDoc(t)||(r=ft.attrHooks[e.toLowerCase()]||(ft.expr.match.bool.test(e)?ve:void 0)),void 0!==i?null===i?void ft.removeAttr(t,e):r&&"set"in r&&void 0!==(n=r.set(t,i,e))?n:(t.setAttribute(e,i+""),i):r&&"get"in r&&null!==(n=r.get(t,e))?n:null==(n=ft.find.attr(t,e))?void 0:n)},attrHooks:{type:{set:function(t,e){if(!dt.radioValue&&"radio"===e&&r(t,"input")){var i=t.value;return t.setAttribute("type",e),i&&(t.value=i),e}}}},removeAttr:function(t,e){var i,n=0,r=e&&e.match(Lt);if(r&&1===t.nodeType)for(;i=r[n++];)t.removeAttribute(i)}}),ve={set:function(t,e,i){return!1===e?ft.removeAttr(t,i):t.setAttribute(i,i),i}},ft.each(ft.expr.match.bool.source.match(/\w+/g),function(t,e){var i=ye[e]||ft.find.attr;ye[e]=function(t,e,n){var r,o,s=e.toLowerCase();return n||(o=ye[s],ye[s]=r,r=null!=i(t,e,n)?s:null,ye[s]=o),r}});var xe=/^(?:input|select|textarea|button)$/i,be=/^(?:a|area)$/i;ft.fn.extend({prop:function(t,e){return Et(this,ft.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[ft.propFix[t]||t]})}}),ft.extend({prop:function(t,e,i){var n,r,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ft.isXMLDoc(t)||(e=ft.propFix[e]||e,r=ft.propHooks[e]),void 0!==i?r&&"set"in r&&void 0!==(n=r.set(t,i,e))?n:t[e]=i:r&&"get"in r&&null!==(n=r.get(t,e))?n:t[e]},propHooks:{tabIndex:{get:function(t){var e=ft.find.attr(t,"tabindex");return e?parseInt(e,10):xe.test(t.nodeName)||be.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),dt.optSelected||(ft.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),ft.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ft.propFix[this.toLowerCase()]=this}),ft.fn.extend({addClass:function(t){var e,i,n,r,o,s,a,l=0;if(ft.isFunction(t))return this.each(function(e){ft(this).addClass(t.call(this,e,U(this)))});if("string"==typeof t&&t)for(e=t.match(Lt)||[];i=this[l++];)if(r=U(i),n=1===i.nodeType&&" "+X(r)+" "){for(s=0;o=e[s++];)n.indexOf(" "+o+" ")<0&&(n+=o+" ");r!==(a=X(n))&&i.setAttribute("class",a)}return this},removeClass:function(t){var e,i,n,r,o,s,a,l=0;if(ft.isFunction(t))return this.each(function(e){ft(this).removeClass(t.call(this,e,U(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof t&&t)for(e=t.match(Lt)||[];i=this[l++];)if(r=U(i),n=1===i.nodeType&&" "+X(r)+" "){for(s=0;o=e[s++];)for(;n.indexOf(" "+o+" ")>-1;)n=n.replace(" "+o+" "," ");r!==(a=X(n))&&i.setAttribute("class",a)}return this},toggleClass:function(t,e){var i=typeof t;return"boolean"==typeof e&&"string"===i?e?this.addClass(t):this.removeClass(t):ft.isFunction(t)?this.each(function(i){ft(this).toggleClass(t.call(this,i,U(this),e),e)}):this.each(function(){var e,n,r,o;if("string"===i)for(n=0,r=ft(this),o=t.match(Lt)||[];e=o[n++];)r.hasClass(e)?r.removeClass(e):r.addClass(e);else void 0!==t&&"boolean"!==i||((e=U(this))&&It.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":It.get(this,"__className__")||""))})},hasClass:function(t){var e,i,n=0;for(e=" "+t+" ";i=this[n++];)if(1===i.nodeType&&(" "+X(U(i))+" ").indexOf(e)>-1)return!0;return!1}});var we=/\r/g;ft.fn.extend({val:function(t){var e,i,n,r=this[0];return arguments.length?(n=ft.isFunction(t),this.each(function(i){var r;1===this.nodeType&&(null==(r=n?t.call(this,i,ft(this).val()):t)?r="":"number"==typeof r?r+="":Array.isArray(r)&&(r=ft.map(r,function(t){return null==t?"":t+""})),(e=ft.valHooks[this.type]||ft.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,r,"value")||(this.value=r))})):r?(e=ft.valHooks[r.type]||ft.valHooks[r.nodeName.toLowerCase()])&&"get"in e&&void 0!==(i=e.get(r,"value"))?i:"string"==typeof(i=r.value)?i.replace(we,""):null==i?"":i:void 0}}),ft.extend({valHooks:{option:{get:function(t){var e=ft.find.attr(t,"value");return null!=e?e:X(ft.text(t))}},select:{get:function(t){var e,i,n,o=t.options,s=t.selectedIndex,a="select-one"===t.type,l=a?null:[],h=a?s+1:o.length;for(n=s<0?h:a?s:0;n-1)&&(i=!0);return i||(t.selectedIndex=-1),o}}}}),ft.each(["radio","checkbox"],function(){ft.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=ft.inArray(ft(t).val(),e)>-1}},dt.checkOn||(ft.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})});var ke=/^(?:focusinfocus|focusoutblur)$/;ft.extend(ft.event,{trigger:function(e,i,n,r){var o,s,a,l,h,c,u,d=[n||et],p=ht.call(e,"type")?e.type:e,f=ht.call(e,"namespace")?e.namespace.split("."):[];if(s=a=n=n||et,3!==n.nodeType&&8!==n.nodeType&&!ke.test(p+ft.event.triggered)&&(p.indexOf(".")>-1&&(f=p.split("."),p=f.shift(),f.sort()),h=p.indexOf(":")<0&&"on"+p,e=e[ft.expando]?e:new ft.Event(p,"object"==typeof e&&e),e.isTrigger=r?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),i=null==i?[e]:ft.makeArray(i,[e]),u=ft.event.special[p]||{},r||!u.trigger||!1!==u.trigger.apply(n,i))){if(!r&&!u.noBubble&&!ft.isWindow(n)){for(l=u.delegateType||p,ke.test(l+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),a=s;a===(n.ownerDocument||et)&&d.push(a.defaultView||a.parentWindow||t)}for(o=0;(s=d[o++])&&!e.isPropagationStopped();)e.type=o>1?l:u.bindType||p,(c=(It.get(s,"events")||{})[e.type]&&It.get(s,"handle"))&&c.apply(s,i),(c=h&&s[h])&&c.apply&&Nt(s)&&(e.result=c.apply(s,i),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||u._default&&!1!==u._default.apply(d.pop(),i)||!Nt(n)||h&&ft.isFunction(n[p])&&!ft.isWindow(n)&&((a=n[h])&&(n[h]=null),ft.event.triggered=p,n[p](),ft.event.triggered=void 0,a&&(n[h]=a)),e.result}},simulate:function(t,e,i){var n=ft.extend(new ft.Event,i,{type:t,isSimulated:!0});ft.event.trigger(n,null,e)}}),ft.fn.extend({trigger:function(t,e){return this.each(function(){ft.event.trigger(t,e,this)})},triggerHandler:function(t,e){var i=this[0];if(i)return ft.event.trigger(t,e,i,!0)}}),ft.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){ft.fn[e]=function(t,i){return arguments.length>0?this.on(e,null,t,i):this.trigger(e)}}),ft.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),dt.focusin="onfocusin"in t,dt.focusin||ft.each({focus:"focusin",blur:"focusout"},function(t,e){var i=function(t){ft.event.simulate(e,t.target,ft.event.fix(t))};ft.event.special[e]={setup:function(){var n=this.ownerDocument||this,r=It.access(n,e);r||n.addEventListener(t,i,!0),It.access(n,e,(r||0)+1)},teardown:function(){var n=this.ownerDocument||this,r=It.access(n,e)-1;r?It.access(n,e,r):(n.removeEventListener(t,i,!0),It.remove(n,e))}}});var Te=t.location,Me=ft.now(),Ce=/\?/;ft.parseXML=function(e){var i;if(!e||"string"!=typeof e)return null;try{i=(new t.DOMParser).parseFromString(e,"text/xml")}catch(t){i=void 0}return i&&!i.getElementsByTagName("parsererror").length||ft.error("Invalid XML: "+e),i};var Se=/\[\]$/,De=/\r?\n/g,Ae=/^(?:submit|button|image|reset|file)$/i,Le=/^(?:input|select|textarea|keygen)/i;ft.param=function(t,e){var i,n=[],r=function(t,e){var i=ft.isFunction(e)?e():e;n[n.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==i?"":i)};if(Array.isArray(t)||t.jquery&&!ft.isPlainObject(t))ft.each(t,function(){r(this.name,this.value)});else for(i in t)V(i,t[i],e,r);return n.join("&")},ft.fn.extend({serialize:function(){return ft.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=ft.prop(this,"elements");return t?ft.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!ft(this).is(":disabled")&&Le.test(this.nodeName)&&!Ae.test(t)&&(this.checked||!Yt.test(t))}).map(function(t,e){var i=ft(this).val();return null==i?null:Array.isArray(i)?ft.map(i,function(t){return{name:e.name,value:t.replace(De,"\r\n")}}):{name:e.name,value:i.replace(De,"\r\n")}}).get()}});var Oe=/%20/g,Pe=/#.*$/,Ee=/([?&])_=[^&]*/,Ne=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ie=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,_e=/^(?:GET|HEAD)$/,ze=/^\/\//,Re={},je={},Fe="*/".concat("*"),He=et.createElement("a");He.href=Te.href,ft.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:Ie.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Fe,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ft.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?Z(Z(t,ft.ajaxSettings),e):Z(ft.ajaxSettings,t)},ajaxPrefilter:q(Re),ajaxTransport:q(je),ajax:function(e,i){function n(e,i,n,a){var h,d,p,b,w,k=i;c||(c=!0,l&&t.clearTimeout(l),r=void 0,s=a||"",T.readyState=e>0?4:0,h=e>=200&&e<300||304===e,n&&(b=J(f,T,n)),b=Q(f,b,T,h),h?(f.ifModified&&((w=T.getResponseHeader("Last-Modified"))&&(ft.lastModified[o]=w),(w=T.getResponseHeader("etag"))&&(ft.etag[o]=w)),204===e||"HEAD"===f.type?k="nocontent":304===e?k="notmodified":(k=b.state,d=b.data,p=b.error,h=!p)):(p=k,!e&&k||(k="error",e<0&&(e=0))),T.status=e,T.statusText=(i||k)+"",h?v.resolveWith(g,[d,k,T]):v.rejectWith(g,[T,k,p]),T.statusCode(x),x=void 0,u&&m.trigger(h?"ajaxSuccess":"ajaxError",[T,f,h?d:p]),y.fireWith(g,[T,k]),u&&(m.trigger("ajaxComplete",[T,f]),--ft.active||ft.event.trigger("ajaxStop")))}"object"==typeof e&&(i=e,e=void 0),i=i||{};var r,o,s,a,l,h,c,u,d,p,f=ft.ajaxSetup({},i),g=f.context||f,m=f.context&&(g.nodeType||g.jquery)?ft(g):ft.event,v=ft.Deferred(),y=ft.Callbacks("once memory"),x=f.statusCode||{},b={},w={},k="canceled",T={readyState:0,getResponseHeader:function(t){var e;if(c){if(!a)for(a={};e=Ne.exec(s);)a[e[1].toLowerCase()]=e[2];e=a[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return c?s:null},setRequestHeader:function(t,e){return null==c&&(t=w[t.toLowerCase()]=w[t.toLowerCase()]||t,b[t]=e),this},overrideMimeType:function(t){return null==c&&(f.mimeType=t),this},statusCode:function(t){var e;if(t)if(c)T.always(t[T.status]);else for(e in t)x[e]=[x[e],t[e]];return this},abort:function(t){var e=t||k;return r&&r.abort(e),n(0,e),this}};if(v.promise(T),f.url=((e||f.url||Te.href)+"").replace(ze,Te.protocol+"//"),f.type=i.method||i.type||f.method||f.type,f.dataTypes=(f.dataType||"*").toLowerCase().match(Lt)||[""],null==f.crossDomain){h=et.createElement("a");try{h.href=f.url,h.href=h.href,f.crossDomain=He.protocol+"//"+He.host!=h.protocol+"//"+h.host}catch(t){f.crossDomain=!0}}if(f.data&&f.processData&&"string"!=typeof f.data&&(f.data=ft.param(f.data,f.traditional)),K(Re,f,i,T),c)return T;(u=ft.event&&f.global)&&0==ft.active++&&ft.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!_e.test(f.type),o=f.url.replace(Pe,""),f.hasContent?f.data&&f.processData&&0===(f.contentType||"").indexOf("application/x-www-form-urlencoded")&&(f.data=f.data.replace(Oe,"+")):(p=f.url.slice(o.length),f.data&&(o+=(Ce.test(o)?"&":"?")+f.data,delete f.data),!1===f.cache&&(o=o.replace(Ee,"$1"),p=(Ce.test(o)?"&":"?")+"_="+Me+++p),f.url=o+p),f.ifModified&&(ft.lastModified[o]&&T.setRequestHeader("If-Modified-Since",ft.lastModified[o]),ft.etag[o]&&T.setRequestHeader("If-None-Match",ft.etag[o])),(f.data&&f.hasContent&&!1!==f.contentType||i.contentType)&&T.setRequestHeader("Content-Type",f.contentType),T.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+Fe+"; q=0.01":""):f.accepts["*"]);for(d in f.headers)T.setRequestHeader(d,f.headers[d]);if(f.beforeSend&&(!1===f.beforeSend.call(g,T,f)||c))return T.abort();if(k="abort",y.add(f.complete),T.done(f.success),T.fail(f.error),r=K(je,f,i,T)){if(T.readyState=1,u&&m.trigger("ajaxSend",[T,f]),c)return T;f.async&&f.timeout>0&&(l=t.setTimeout(function(){T.abort("timeout")},f.timeout));try{c=!1,r.send(b,n)}catch(t){if(c)throw t;n(-1,t)}}else n(-1,"No Transport");return T},getJSON:function(t,e,i){return ft.get(t,e,i,"json")},getScript:function(t,e){return ft.get(t,void 0,e,"script")}}),ft.each(["get","post"],function(t,e){ft[e]=function(t,i,n,r){return ft.isFunction(i)&&(r=r||n,n=i,i=void 0),ft.ajax(ft.extend({url:t,type:e,dataType:r,data:i,success:n},ft.isPlainObject(t)&&t))}}),ft._evalUrl=function(t){return ft.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},ft.fn.extend({wrapAll:function(t){var e;return this[0]&&(ft.isFunction(t)&&(t=t.call(this[0])),e=ft(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return ft.isFunction(t)?this.each(function(e){ft(this).wrapInner(t.call(this,e))}):this.each(function(){var e=ft(this),i=e.contents();i.length?i.wrapAll(t):e.append(t)})},wrap:function(t){var e=ft.isFunction(t);return this.each(function(i){ft(this).wrapAll(e?t.call(this,i):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){ft(this).replaceWith(this.childNodes)}),this}}),ft.expr.pseudos.hidden=function(t){return!ft.expr.pseudos.visible(t)},ft.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},ft.ajaxSettings.xhr=function(){try{return new t.XMLHttpRequest}catch(t){}};var Be={0:200,1223:204},We=ft.ajaxSettings.xhr();dt.cors=!!We&&"withCredentials"in We,dt.ajax=We=!!We,ft.ajaxTransport(function(e){var i,n;if(dt.cors||We&&!e.crossDomain)return{send:function(r,o){var s,a=e.xhr();if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(s in e.xhrFields)a[s]=e.xhrFields[s];e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(s in r)a.setRequestHeader(s,r[s]);i=function(t){return function(){i&&(i=n=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?o(0,"error"):o(a.status,a.statusText):o(Be[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=i(),n=a.onerror=i("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&t.setTimeout(function(){i&&n()})},i=i("abort");try{a.send(e.hasContent&&e.data||null)}catch(t){if(i)throw t}},abort:function(){i&&i()}}}),ft.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),ft.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return ft.globalEval(t),t}}}),ft.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),ft.ajaxTransport("script",function(t){if(t.crossDomain){var e,i;return{send:function(n,r){e=ft(" - {% block tailinc %}{% endblock %} diff --git a/templates/inventory.html b/templates/inventory.html index 1d93656..958b60e 100644 --- a/templates/inventory.html +++ b/templates/inventory.html @@ -6,13 +6,6 @@

Varebeholdning

- - diff --git a/templates/inventory_add.html b/templates/inventory_add.html index 8ab9a03..6c2f39b 100644 --- a/templates/inventory_add.html +++ b/templates/inventory_add.html @@ -25,7 +25,7 @@ {{ form }} - Tilbake + Tilbake diff --git a/templates/modal-delete-order.html b/templates/modal-delete-order.html deleted file mode 100644 index fc01eff..0000000 --- a/templates/modal-delete-order.html +++ /dev/null @@ -1,30 +0,0 @@ - diff --git a/templates/modal-delete-transaction.html b/templates/modal-delete-transaction.html deleted file mode 100644 index 8c5a451..0000000 --- a/templates/modal-delete-transaction.html +++ /dev/null @@ -1,18 +0,0 @@ - diff --git a/templates/registration/create_user.html b/templates/registration/create_user.html deleted file mode 100644 index 9d5b909..0000000 --- a/templates/registration/create_user.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "base.html" %} - -{% block title %}Lag ny bruker {% endblock %} - -{% block active_create_user %}active{% endblock %} - -{% block content %} - {% if perms.auth.can_add_user %} -
-
- {% for message in messages %} -
{{ message }}×
- {% endfor %} -
-
-
-
-

Legg til ny bruker

- {% if form.non_field_errors %} -

{{ form.non_field_errors}}.

- {% endif %} - -
- {% csrf_token %} - -
- {{ form.first_name}}{{ form.first_name.errors }} - {{ form.last_name}}{{ form.last_name.errors }} -
-
- {{ form.email}}{{ form.email.errors }} -
- - Tilbake - -
-
- {% endif %} -{% endblock %} diff --git a/templates/registration/login.html b/templates/registration/login.html deleted file mode 100644 index a90a497..0000000 --- a/templates/registration/login.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "base.html" %} - -{% block title %}Logg inn{% endblock %} - -{% block content %} -{% include "registration/login_form.html" %} - -{% endblock %} -{% block footer %}{% endblock %} diff --git a/templates/registration/login_form.html b/templates/registration/login_form.html deleted file mode 100644 index ae54dd5..0000000 --- a/templates/registration/login_form.html +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/templates/registration/logout.html b/templates/registration/logout.html deleted file mode 100644 index 22b4bf8..0000000 --- a/templates/registration/logout.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "base.html" %} - -{% block title %}Logg inn{% endblock %} - -{% block content %} -
-
-

Du er logget ut.

-

Vil du logge inn igjen?

-
-
-{% endblock %}