Files
Quality App Developer e1f3302c6b Implement boxes management module with auto-numbered box creation
- Add boxes_crates database table with BIGINT IDs and 8-digit auto-numbered box_numbers
- Implement boxes CRUD operations (add, edit, update, delete, delete_multiple)
- Create boxes route handlers with POST actions for all operations
- Add boxes.html template with 3-panel layout matching warehouse locations module
- Implement barcode generation and printing with JsBarcode and QZ Tray integration
- Add browser print fallback for when QZ Tray is not available
- Simplify create box form to single button with auto-generation
- Fix JavaScript null reference errors with proper element validation
- Convert tuple data to dictionaries for Jinja2 template compatibility
- Register boxes blueprint in Flask app initialization
2026-01-26 22:08:31 +02:00

143 lines
5.8 KiB
HTML

{% extends "base.html" %}
{% block title %}Search Logs - Settings{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<div class="row mb-4">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center">
<div>
<h1 class="mb-0">
<i class="fas fa-search"></i> Search Logs
</h1>
<p class="text-muted mb-0">Find entries in log files</p>
</div>
<a href="{{ url_for('settings.logs_explorer') }}" class="btn btn-secondary">
<i class="fas fa-arrow-left"></i> Back
</a>
</div>
</div>
</div>
<!-- Search Form -->
<div class="row mb-4">
<div class="col-12">
<div class="card shadow-sm">
<div class="card-header bg-light">
<h5 class="mb-0"><i class="fas fa-filter"></i> Search Options</h5>
</div>
<div class="card-body">
<form method="GET" action="{{ url_for('settings.search_logs') }}">
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label for="search_term">Search Term:</label>
<input type="text" id="search_term" name="q" class="form-control"
value="{{ search_term }}" placeholder="Enter search term..." required>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="log_file">Log File:</label>
<select id="log_file" name="file" class="form-control">
<option value="">All Files</option>
{% for log_file in log_files %}
<option value="{{ log_file.name }}" {% if log_file.name == selected_file %}selected{% endif %}>
{{ log_file.name }}
</option>
{% endfor %}
</select>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary">
<i class="fas fa-search"></i> Search
</button>
{% if search_term %}
<a href="{{ url_for('settings.search_logs') }}" class="btn btn-secondary">
<i class="fas fa-times"></i> Clear
</a>
{% endif %}
</form>
</div>
</div>
</div>
</div>
<!-- Search Results -->
{% if search_term %}
<div class="row">
<div class="col-12">
<div class="card shadow-sm">
<div class="card-header bg-light">
<h5 class="mb-0">
<i class="fas fa-list"></i> Results
{% if results %}
<span class="badge bg-primary">{{ results|length }} found</span>
{% endif %}
</h5>
</div>
<div class="card-body">
{% if results %}
<div class="list-group">
{% for result in results %}
<div class="list-group-item">
<div class="d-flex w-100 justify-content-between align-items-start">
<div>
<h6 class="mb-1">
<i class="fas fa-file-lines text-primary"></i>
{{ result.file }}
<span class="badge bg-secondary">Line {{ result.line_num }}</span>
</h6>
<p class="mb-0" style="font-family: 'Courier New', monospace; font-size: 12px; word-break: break-all;">
{{ result.line }}
</p>
</div>
<a href="{{ url_for('settings.view_log', filename=result.file) }}#line-{{ result.line_num }}"
class="btn btn-sm btn-outline-primary">
<i class="fas fa-eye"></i> View
</a>
</div>
</div>
{% endfor %}
</div>
{% else %}
<div class="alert alert-info mb-0">
<i class="fas fa-info-circle"></i> No results found for "{{ search_term }}"
</div>
{% endif %}
</div>
</div>
</div>
</div>
{% else %}
<div class="row">
<div class="col-12">
<div class="alert alert-info">
<i class="fas fa-search"></i> Enter a search term to find entries in your logs
</div>
</div>
</div>
{% endif %}
</div>
<style>
.list-group-item {
border-left: 3px solid #007bff;
padding: 15px;
}
.list-group-item:hover {
background-color: #f8f9fa;
}
pre {
font-family: 'Courier New', Courier, monospace;
font-size: 12px;
line-height: 1.4;
color: #333;
}
</style>
{% endblock %}