Start content
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
|
||||
<link href="{% static 'css/icons/bootstrap-icons.css' %}" rel="stylesheet">
|
||||
<title>{{ base.title }}</title>
|
||||
{% block customhead %}
|
||||
{% endblock customhead %}
|
||||
@@ -23,19 +24,25 @@
|
||||
<li class="nav-item"><a href="{{ item.link }}" class="nav-link {{ item.active_class }}">{{ item }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% if base.navbar.has_user %}
|
||||
<form action="" method="post" class="ms-auto">
|
||||
{% csrf_token %}
|
||||
<input type="search" name="qr_search" id="qr_search_field" aria-label="QR Scan" placeholder="QR Search" class="form-control me-2 text-success">
|
||||
</form>
|
||||
{% endif %}
|
||||
<ul class="navbar-nav ms-auto">
|
||||
{% if base.navbar.has_user %}
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="nav-link dropdown-toggle text-primary" id="navbar-user-dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">{{ base.navbar.username }}</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbar-user-dropdown">
|
||||
<li><a class="dropdown-item" href="#">Logout</a></li>
|
||||
<li><a class="dropdown-item" href="{% url 'logout' %}">Logout</a></li>
|
||||
{% if base.navbar.show_admin %}
|
||||
<li><a class="dropdown-item text-warning" href="{% url 'admin:index' %}">Administration</a></li>
|
||||
<li><a class="dropdown-item text-success" href="{% url 'admin:index' %}">Administration</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="nav-item"><a href="#" class="nav-link">Login</a></li>
|
||||
<li class="nav-item"><a href="{% url 'login' %}" class="nav-link{% if base.login_active %} active{% endif %}">Login</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
5
shimatta_kenkyusho/templates/parts/components.html
Normal file
5
shimatta_kenkyusho/templates/parts/components.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Components</h1>
|
||||
{% endblock content %}
|
48
shimatta_kenkyusho/templates/parts/login.html
Normal file
48
shimatta_kenkyusho/templates/parts/login.html
Normal file
@@ -0,0 +1,48 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<form action="" method="post">
|
||||
{% csrf_token %}
|
||||
<div class="row mb-3 justify-content-center">
|
||||
<div class="col-sm-5">
|
||||
<label for="{{form.username.id_for_label}}">Username</label>
|
||||
<div class="input-group has-validation">
|
||||
<span class="input-group-text" id="username_prepend">@</span>
|
||||
<input type="text" class="form-control{% if form.username.errors or form.non_field_errors %} is-invalid{% endif %}" id="{{form.username.id_for_label}}" name="{{form.username.name}}" aria-describedby="username_prepend validationServerUsernameFeedback" required>
|
||||
<div id="validationServerUsernameFeedback" class="invalid-feedback">
|
||||
{% for msg in form.username.errors %}
|
||||
{{msg}}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3 justify-content-center">
|
||||
<div class="col-sm-5">
|
||||
<label for="{{form.password.id_for_label}}">Password</label>
|
||||
<div class="input-group has-validation">
|
||||
<input type="password" class="form-control{% if form.password.errors or form.non_field_errors %} is-invalid{% endif %}" name="{{form.password.name}}" id="{{form.password.id_for_label}}" aria-describedby="validationPassword"required>
|
||||
<div id="validationPassword" class="invalid-feedback">
|
||||
{% for msg in form.password.errors %}
|
||||
{{msg}}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3 justify-content-center">
|
||||
{% if form.non_field_errors %}
|
||||
{% for error in form.non_field_errors %}
|
||||
<p class="text-danger text-center">{{ error }}</p>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="row mb-3 justify-content-center">
|
||||
<div class="col-sm-5">
|
||||
<input class="btn btn-primary mb-3 px-4" type="submit" value="Login">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock content %}
|
19
shimatta_kenkyusho/templates/parts/stocks-detail.html
Normal file
19
shimatta_kenkyusho/templates/parts/stocks-detail.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load qr_code %}
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<nav aria-label="breadcrumb" class="fs-4">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"></li>
|
||||
{% for crumb in breadcrumbs %}
|
||||
<li class="breadcrumb-item"><a href="{% url 'parts-stocks-detail' uuid=crumb.id %}">{{crumb.name}}</a></li>
|
||||
{% endfor %}
|
||||
<li class="breadcrumb-item active" aria-current="page">{{object.name}}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<h1>Stocks in {{object.get_full_path }}</h1>
|
||||
{% qr_from_text object.get_qr_code size="m" image_format="svg" %}
|
||||
|
||||
</div>
|
||||
{% endblock content %}
|
53
shimatta_kenkyusho/templates/parts/stocks.html
Normal file
53
shimatta_kenkyusho/templates/parts/stocks.html
Normal file
@@ -0,0 +1,53 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md">
|
||||
<h1>Low Stocks</h1>
|
||||
<div class="list-group">
|
||||
{% for low in low_stocks %}
|
||||
<a href="{% url 'parts-stocks-detail' uuid=low.storage.id %}" class="text-decoration-none">
|
||||
<li class="list-group-item list-group-item-action d-flex justify-content-between align-items-center">
|
||||
<div class="flex-shrink-0">
|
||||
{% if low.component.get_resolved_image %}
|
||||
<img src="{{low.component.get_resolved_image}}" style="max-width:64px;max-height:64px;" alt="{{ low.component.name }}" class="mr-3">
|
||||
{% else %}
|
||||
{% load static %}
|
||||
<img src="{% static 'css/icons/card-image.svg' %}" style="width:64px;max-height:64px;" alt="{{ low.component.name }}" class="mr-3">
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="flex-grow-1 ms-3">
|
||||
<h5 class="mt-0">{{ low.component.name }} in {{ low.component.package }}</h5>
|
||||
{{ low.storage }}
|
||||
</div>
|
||||
|
||||
{% if low.storage.responsible.username == view.request.user.username %}
|
||||
<span class="badge bg-danger rounded-pill">{{low.amount}} / {{low.watermark}}</span>
|
||||
{% else %}
|
||||
<span class="badge bg-primary rounded-pill">{{low.amount}} / {{low.watermark}}</span>
|
||||
{% endif %}
|
||||
</li></a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<h1>Storages</h1>
|
||||
<div class="list-group">
|
||||
{% for storage in storages %}
|
||||
<a href="{% url 'parts-stocks-detail' uuid=storage.id %}" class="text-decoration-none">
|
||||
<li class="list-group-item list-group-item-action justify-content-between align-items-center d-flex">
|
||||
<div>
|
||||
<h5>{{storage.name}}</h5>
|
||||
Responsible: {{ storage.responsible }}
|
||||
</div>
|
||||
<span class="badge bg-primary rounded-pill">{{storage.get_total_stock_amount}}</span>
|
||||
</li>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
Reference in New Issue
Block a user