Initial commit
This commit is contained in:
commit
983cee0320
322 changed files with 57174 additions and 0 deletions
204
backup/first -fina app/app/templates/bank_import.html
Normal file
204
backup/first -fina app/app/templates/bank_import.html
Normal file
|
|
@ -0,0 +1,204 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ _('bank.import_title') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="page-header">
|
||||
<h1><i class="fas fa-file-import"></i> {{ _('bank.import_title') }}</h1>
|
||||
<p class="text-muted">{{ _('bank.import_subtitle') }}</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>{{ _('bank.upload_file') }}</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<!-- Upload Form -->
|
||||
<form method="POST" enctype="multipart/form-data" id="uploadForm">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<div class="form-group">
|
||||
<label for="file">{{ _('bank.select_file') }}</label>
|
||||
<div class="custom-file-upload" id="dropZone">
|
||||
<input type="file"
|
||||
id="file"
|
||||
name="file"
|
||||
accept=".pdf,.csv"
|
||||
required>
|
||||
<div class="upload-placeholder">
|
||||
<i class="fas fa-cloud-upload-alt fa-3x"></i>
|
||||
<p>{{ _('bank.drag_drop') }}</p>
|
||||
<p class="text-muted">{{ _('bank.or_click') }}</p>
|
||||
<button type="button" class="btn btn-secondary" onclick="document.getElementById('file').click()">
|
||||
{{ _('bank.browse_files') }}
|
||||
</button>
|
||||
</div>
|
||||
<div class="file-selected" style="display: none;">
|
||||
<i class="fas fa-file fa-2x"></i>
|
||||
<p id="fileName"></p>
|
||||
<button type="button" class="btn btn-sm btn-danger" onclick="clearFile()">
|
||||
<i class="fas fa-times"></i> {{ _('bank.remove') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="alert alert-info">
|
||||
<strong><i class="fas fa-info-circle"></i> {{ _('bank.supported_formats') }}:</strong>
|
||||
<ul>
|
||||
<li>{{ _('bank.format_pdf') }}</li>
|
||||
<li>{{ _('bank.format_csv') }}</li>
|
||||
</ul>
|
||||
<p class="mb-0"><small>{{ _('bank.format_hint') }}</small></p>
|
||||
</div>
|
||||
<div class="alert alert-warning">
|
||||
<i class="fas fa-exclamation-triangle"></i> {{ _('bank.not_all_banks_supported') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-block">
|
||||
<i class="fas fa-upload"></i> {{ _('bank.upload_parse') }}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Loading State -->
|
||||
<div id="loadingState" style="display: none;">
|
||||
<div class="text-center py-4">
|
||||
<div class="spinner-border text-primary" role="status">
|
||||
<span class="sr-only">{{ _('bank.processing') }}</span>
|
||||
</div>
|
||||
<p class="mt-3">{{ _('bank.processing') }}...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Help Section -->
|
||||
<div class="card mt-4">
|
||||
<div class="card-header">
|
||||
<h4><i class="fas fa-question-circle"></i> {{ _('bank.how_it_works') }}</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ol>
|
||||
<li>{{ _('bank.step_1') }}</li>
|
||||
<li>{{ _('bank.step_2') }}</li>
|
||||
<li>{{ _('bank.step_3') }}</li>
|
||||
<li>{{ _('bank.step_4') }}</li>
|
||||
<li>{{ _('bank.step_5') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.custom-file-upload {
|
||||
position: relative;
|
||||
border: 2px dashed #007bff;
|
||||
border-radius: 8px;
|
||||
padding: 40px 20px;
|
||||
text-align: center;
|
||||
background: #f8f9fa;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.custom-file-upload:hover {
|
||||
border-color: #0056b3;
|
||||
background: #e9ecef;
|
||||
}
|
||||
|
||||
.custom-file-upload.drag-over {
|
||||
border-color: #28a745;
|
||||
background: #d4edda;
|
||||
}
|
||||
|
||||
.custom-file-upload input[type="file"] {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.upload-placeholder i {
|
||||
color: #007bff;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.file-selected i {
|
||||
color: #28a745;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.custom-file-upload {
|
||||
padding: 30px 15px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
// File selection
|
||||
document.getElementById('file').addEventListener('change', function(e) {
|
||||
if (this.files.length > 0) {
|
||||
document.querySelector('.upload-placeholder').style.display = 'none';
|
||||
document.querySelector('.file-selected').style.display = 'block';
|
||||
document.getElementById('fileName').textContent = this.files[0].name;
|
||||
}
|
||||
});
|
||||
|
||||
// Clear file
|
||||
function clearFile() {
|
||||
document.getElementById('file').value = '';
|
||||
document.querySelector('.upload-placeholder').style.display = 'block';
|
||||
document.querySelector('.file-selected').style.display = 'none';
|
||||
}
|
||||
|
||||
// Drag and drop
|
||||
const dropZone = document.getElementById('dropZone');
|
||||
|
||||
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
|
||||
dropZone.addEventListener(eventName, preventDefaults, false);
|
||||
});
|
||||
|
||||
function preventDefaults(e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
|
||||
['dragenter', 'dragover'].forEach(eventName => {
|
||||
dropZone.addEventListener(eventName, () => {
|
||||
dropZone.classList.add('drag-over');
|
||||
});
|
||||
});
|
||||
|
||||
['dragleave', 'drop'].forEach(eventName => {
|
||||
dropZone.addEventListener(eventName, () => {
|
||||
dropZone.classList.remove('drag-over');
|
||||
});
|
||||
});
|
||||
|
||||
dropZone.addEventListener('drop', function(e) {
|
||||
const files = e.dataTransfer.files;
|
||||
if (files.length > 0) {
|
||||
document.getElementById('file').files = files;
|
||||
document.querySelector('.upload-placeholder').style.display = 'none';
|
||||
document.querySelector('.file-selected').style.display = 'block';
|
||||
document.getElementById('fileName').textContent = files[0].name;
|
||||
}
|
||||
});
|
||||
|
||||
// Show loading on submit
|
||||
document.getElementById('uploadForm').addEventListener('submit', function() {
|
||||
document.querySelector('.card-body').style.display = 'none';
|
||||
document.getElementById('loadingState').style.display = 'block';
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue