Add company management module with registration and entity switching
This commit is contained in:
@@ -64,7 +64,7 @@
|
||||
<button class="navbar-toggler d-md-none me-2" type="button" id="sidebarToggle" aria-label="Toggle navigation">
|
||||
<i class="bi bi-list text-white"></i>
|
||||
</button>
|
||||
<h5 class="mb-0">Zanzibar Digital Freezone</h5>
|
||||
<h5 class="mb-0">Zanzibar Digital Freezone {% if entity_name %}| <span class="text-info">{{ entity_name }}</span>{% endif %}</h5>
|
||||
</div>
|
||||
<div class="d-none d-md-flex">
|
||||
<ul class="navbar-nav flex-row">
|
||||
@@ -155,6 +155,11 @@
|
||||
<i class="bi bi-bank me-2"></i> DeFi Platform
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link d-flex align-items-center ps-3 py-2 {% if active_page == 'company' %}active fw-bold border-start border-4 border-primary bg-light{% endif %}" href="/company">
|
||||
<i class="bi bi-building me-2"></i> Companies
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link d-flex align-items-center ps-3 py-2 {% if active_page == 'marketplace' %}active fw-bold border-start border-4 border-primary bg-light{% endif %}" href="/marketplace">
|
||||
<i class="bi bi-shop me-2"></i> Marketplace
|
||||
@@ -206,6 +211,33 @@
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<!-- Toast container for notifications -->
|
||||
<div class="toast-container position-fixed bottom-0 end-0 p-3">
|
||||
{% if success %}
|
||||
<div class="toast show" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header bg-success text-white">
|
||||
<strong class="me-auto">Success</strong>
|
||||
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="toast" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
{{ success }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if error %}
|
||||
<div class="toast show" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
<div class="toast-header bg-danger text-white">
|
||||
<strong class="me-auto">Error</strong>
|
||||
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="toast" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
{{ error }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<script src="/static/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="https://unpkg.com/unpoly@3.7.2/unpoly.min.js"></script>
|
||||
<script src="https://unpkg.com/unpoly@3.7.2/unpoly-bootstrap5.min.js"></script>
|
||||
@@ -214,6 +246,17 @@
|
||||
document.getElementById('sidebarToggle').addEventListener('click', function() {
|
||||
document.getElementById('sidebar').classList.toggle('show');
|
||||
});
|
||||
|
||||
// Auto-hide toasts after 5 seconds
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const toasts = document.querySelectorAll('.toast.show');
|
||||
toasts.forEach(toast => {
|
||||
setTimeout(() => {
|
||||
const bsToast = new bootstrap.Toast(toast);
|
||||
bsToast.hide();
|
||||
}, 5000);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% block extra_js %}{% endblock %}
|
||||
</body>
|
||||
|
111
actix_mvc_app/src/views/company/index.html
Normal file
111
actix_mvc_app/src/views/company/index.html
Normal file
@@ -0,0 +1,111 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Company Management{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<style>
|
||||
.toast {
|
||||
position: fixed;
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
z-index: 9999;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<!-- Toast notification for success messages -->
|
||||
{% if success_message %}
|
||||
<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
|
||||
<div class="toast show" role="alert" aria-live="assertive" aria-atomic="true" data-bs-autohide="true" data-bs-delay="5000">
|
||||
<div class="toast-header bg-success text-white">
|
||||
<i class="bi bi-check-circle me-2"></i>
|
||||
<strong class="me-auto">Success</strong>
|
||||
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="toast" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
{{ success_message }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="container-fluid py-4">
|
||||
<h2 class="mb-4">Company & Legal Entity Management (Freezone)</h2>
|
||||
|
||||
<!-- Company Management Tabs -->
|
||||
<div class="mb-4">
|
||||
<div class="card-body">
|
||||
<ul class="nav nav-tabs" id="companyTabs" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="manage-tab" data-bs-toggle="tab" data-bs-target="#manage" type="button" role="tab" aria-controls="manage" aria-selected="true">
|
||||
<i class="bi bi-building me-1"></i> Manage Companies
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="register-tab" data-bs-toggle="tab" data-bs-target="#register" type="button" role="tab" aria-controls="register" aria-selected="false">
|
||||
<i class="bi bi-file-earmark-plus me-1"></i> Register New Company
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content mt-3" id="companyTabsContent">
|
||||
<div class="tab-pane fade show active" id="manage" role="tabpanel" aria-labelledby="manage-tab">
|
||||
{% include "company/manage.html" %}
|
||||
</div>
|
||||
<div class="tab-pane fade" id="register" role="tabpanel" aria-labelledby="register-tab">
|
||||
{% include "company/register.html" %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<script src="/static/js/company.js"></script>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Show toast if success message exists
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const successMessage = urlParams.get('success');
|
||||
if (successMessage) {
|
||||
const toastEl = document.querySelector('.toast');
|
||||
if (toastEl) {
|
||||
const toastBody = toastEl.querySelector('.toast-body');
|
||||
toastBody.textContent = decodeURIComponent(successMessage);
|
||||
const toast = new bootstrap.Toast(toastEl);
|
||||
toast.show();
|
||||
|
||||
// Auto-hide after 5 seconds
|
||||
setTimeout(function() {
|
||||
toast.hide();
|
||||
}, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle tab tracking in URL
|
||||
const tabParam = urlParams.get('tab');
|
||||
if (tabParam) {
|
||||
const tabButton = document.querySelector(`button[data-bs-target="#${tabParam}"]`);
|
||||
if (tabButton) {
|
||||
const tab = new bootstrap.Tab(tabButton);
|
||||
tab.show();
|
||||
}
|
||||
}
|
||||
|
||||
// Update URL when tab changes
|
||||
const tabButtons = document.querySelectorAll('button[data-bs-toggle="tab"]');
|
||||
tabButtons.forEach(function(button) {
|
||||
button.addEventListener('shown.bs.tab', function(event) {
|
||||
const targetId = event.target.getAttribute('data-bs-target').substring(1);
|
||||
const url = new URL(window.location);
|
||||
url.searchParams.set('tab', targetId);
|
||||
window.history.replaceState({}, '', url);
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
193
actix_mvc_app/src/views/company/manage.html
Normal file
193
actix_mvc_app/src/views/company/manage.html
Normal file
@@ -0,0 +1,193 @@
|
||||
<div class="card mb-4">
|
||||
<div class="card-header bg-primary text-white">
|
||||
<i class="bi bi-building me-1"></i> Your Companies
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<!-- Company list table -->
|
||||
<table class="table table-hover align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Status</th>
|
||||
<th>Date Registered</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!-- Example rows -->
|
||||
<tr>
|
||||
<td>Zanzibar Digital Solutions</td>
|
||||
<td>Startup FZC</td>
|
||||
<td><span class="badge bg-success">Active</span></td>
|
||||
<td>2025-04-01</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<a href="/company/view/company1" class="btn btn-sm btn-outline-primary"><i class="bi bi-eye"></i> View</a>
|
||||
<a href="/company/switch/company1" class="btn btn-sm btn-primary"><i class="bi bi-box-arrow-in-right"></i> Switch to Entity</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Blockchain Innovations Ltd</td>
|
||||
<td>Growth FZC</td>
|
||||
<td><span class="badge bg-success">Active</span></td>
|
||||
<td>2025-03-15</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<a href="/company/view/company2" class="btn btn-sm btn-outline-primary"><i class="bi bi-eye"></i> View</a>
|
||||
<a href="/company/switch/company2" class="btn btn-sm btn-primary"><i class="bi bi-box-arrow-in-right"></i> Switch to Entity</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Sustainable Energy Cooperative</td>
|
||||
<td>Cooperative FZC</td>
|
||||
<td><span class="badge bg-warning text-dark">Pending</span></td>
|
||||
<td>2025-05-01</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<a href="/company/view/company3" class="btn btn-sm btn-outline-primary"><i class="bi bi-eye"></i> View</a>
|
||||
<a href="/company/switch/company3" class="btn btn-sm btn-primary"><i class="bi bi-box-arrow-in-right"></i> Switch to Entity</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- More rows dynamically rendered here -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Company Details Modal -->
|
||||
<div class="modal fade" id="companyDetailsModal" tabindex="-1" aria-labelledby="companyDetailsModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header bg-light">
|
||||
<h5 class="modal-title" id="companyDetailsModalLabel"><i class="bi bi-building me-2"></i>Company Details</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div id="companyDetailsContent">
|
||||
<!-- Company details will be loaded here -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header">General Information</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<th>Company Name:</th>
|
||||
<td id="modal-company-name">Zanzibar Digital Solutions</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Type:</th>
|
||||
<td id="modal-company-type">Startup FZC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Registration Date:</th>
|
||||
<td id="modal-registration-date">2025-04-01</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Status:</th>
|
||||
<td id="modal-status"><span class="badge bg-success">Active</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Purpose:</th>
|
||||
<td id="modal-purpose">Digital solutions and blockchain development</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header">Billing Information</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<th>Plan:</th>
|
||||
<td id="modal-plan">Startup FZC - $50/month</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Next Billing:</th>
|
||||
<td id="modal-next-billing">2025-06-01</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Payment Method:</th>
|
||||
<td id="modal-payment-method">Credit Card (****4582)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header">Shareholders</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Percentage</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="modal-shareholders">
|
||||
<tr>
|
||||
<td>John Smith</td>
|
||||
<td>60%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Sarah Johnson</td>
|
||||
<td>40%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header">Contracts</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Contract</th>
|
||||
<th>Status</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="modal-contracts">
|
||||
<tr>
|
||||
<td>Articles of Incorporation</td>
|
||||
<td><span class="badge bg-success">Signed</span></td>
|
||||
<td><button class="btn btn-sm btn-outline-primary">View</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Terms & Conditions</td>
|
||||
<td><span class="badge bg-success">Signed</span></td>
|
||||
<td><button class="btn btn-sm btn-outline-primary">View</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Digital Asset Issuance</td>
|
||||
<td><span class="badge bg-success">Signed</span></td>
|
||||
<td><button class="btn btn-sm btn-outline-primary">View</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-primary" onclick="switchToEntityFromModal()"><i class="bi bi-box-arrow-in-right me-1"></i>Switch to Entity</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
1196
actix_mvc_app/src/views/company/register.html
Normal file
1196
actix_mvc_app/src/views/company/register.html
Normal file
File diff suppressed because it is too large
Load Diff
21
actix_mvc_app/src/views/company/tabs.html
Normal file
21
actix_mvc_app/src/views/company/tabs.html
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
<ul class="nav nav-tabs" id="companyTabs" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="manage-tab" data-bs-toggle="tab" data-bs-target="#manage" type="button" role="tab" aria-controls="manage" aria-selected="true">
|
||||
<i class="bi bi-building me-1"></i> Manage Companies
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="register-tab" data-bs-toggle="tab" data-bs-target="#register" type="button" role="tab" aria-controls="register" aria-selected="false">
|
||||
<i class="bi bi-file-earmark-plus me-1"></i> Register New Company
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content mt-4" id="companyTabsContent">
|
||||
<div class="tab-pane fade show active" id="manage" role="tabpanel" aria-labelledby="manage-tab">
|
||||
{% include "company/manage.html" %}
|
||||
</div>
|
||||
<div class="tab-pane fade" id="register" role="tabpanel" aria-labelledby="register-tab">
|
||||
{% include "company/register.html" %}
|
||||
</div>
|
||||
</div>
|
177
actix_mvc_app/src/views/company/view.html
Normal file
177
actix_mvc_app/src/views/company/view.html
Normal file
@@ -0,0 +1,177 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ company_name }} - Company Details{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
<style>
|
||||
.badge-signed {
|
||||
background-color: #198754;
|
||||
color: white;
|
||||
}
|
||||
.badge-pending {
|
||||
background-color: #ffc107;
|
||||
color: #212529;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container-fluid py-4">
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-building me-2"></i>{{ company_name }}</h2>
|
||||
<div>
|
||||
<a href="/company" class="btn btn-outline-secondary me-2"><i class="bi bi-arrow-left me-1"></i>Back to Companies</a>
|
||||
<a href="/company/switch/{{ company_id }}" class="btn btn-primary"><i class="bi bi-box-arrow-in-right me-1"></i>Switch to Entity</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header bg-light">
|
||||
<h5 class="mb-0"><i class="bi bi-info-circle me-2"></i>General Information</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<th style="width: 30%">Company Name:</th>
|
||||
<td>{{ company_name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Type:</th>
|
||||
<td>{{ company_type }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Registration Date:</th>
|
||||
<td>{{ registration_date }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Status:</th>
|
||||
<td>
|
||||
{% if status == "Active" %}
|
||||
<span class="badge bg-success">{{ status }}</span>
|
||||
{% else %}
|
||||
<span class="badge bg-warning text-dark">{{ status }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Purpose:</th>
|
||||
<td>{{ purpose }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header bg-light">
|
||||
<h5 class="mb-0"><i class="bi bi-credit-card me-2"></i>Billing Information</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-borderless">
|
||||
<tr>
|
||||
<th style="width: 30%">Plan:</th>
|
||||
<td>{{ plan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Next Billing:</th>
|
||||
<td>{{ next_billing }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Payment Method:</th>
|
||||
<td>{{ payment_method }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header bg-light">
|
||||
<h5 class="mb-0"><i class="bi bi-people me-2"></i>Shareholders</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Percentage</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for shareholder in shareholders %}
|
||||
<tr>
|
||||
<td>{{ shareholder.0 }}</td>
|
||||
<td>{{ shareholder.1 }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100">
|
||||
<div class="card-header bg-light">
|
||||
<h5 class="mb-0"><i class="bi bi-file-earmark-text me-2"></i>Contracts</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Contract</th>
|
||||
<th>Status</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for contract in contracts %}
|
||||
<tr>
|
||||
<td>{{ contract.0 }}</td>
|
||||
<td>
|
||||
{% if contract.1 == "Signed" %}
|
||||
<span class="badge bg-success">{{ contract.1 }}</span>
|
||||
{% else %}
|
||||
<span class="badge bg-warning text-dark">{{ contract.1 }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<a href="/contracts/view/{{ contract.0 | lower | replace(from=' ', to='-') }}" class="btn btn-sm btn-outline-primary">View</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header bg-light">
|
||||
<h5 class="mb-0"><i class="bi bi-gear me-2"></i>Actions</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-flex gap-2">
|
||||
<a href="/company/edit/{{ company_id }}" class="btn btn-outline-primary"><i class="bi bi-pencil me-1"></i>Edit Company</a>
|
||||
<a href="/company/documents/{{ company_id }}" class="btn btn-outline-secondary"><i class="bi bi-file-earmark me-1"></i>Manage Documents</a>
|
||||
<a href="/company/switch/{{ company_id }}" class="btn btn-primary"><i class="bi bi-box-arrow-in-right me-1"></i>Switch to Entity</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
console.log('Company view page loaded');
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
@@ -24,11 +24,11 @@
|
||||
<option value="" selected disabled>Choose an asset</option>
|
||||
<!-- Tokens -->
|
||||
<optgroup label="Tokens">
|
||||
<option value="TFT" data-type="token" data-value="5000" data-amount="10000" data-unit="TFT" data-img="/static/img/tokens/tft.png">
|
||||
ThreeFold Token (TFT) - 10,000 TFT ($5,000)
|
||||
<option value="TFT" data-type="token" data-value="5000" data-amount="10000" data-unit="TFT">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i> ThreeFold Token (TFT) - 10,000 TFT ($5,000)
|
||||
</option>
|
||||
<option value="ZDFZ" data-type="token" data-value="2500" data-amount="5000" data-unit="ZDFZ" data-img="/static/img/tokens/zdfz.png">
|
||||
Zanzibar Token (ZDFZ) - 5,000 ZDFZ ($2,500)
|
||||
<option value="ZDFZ" data-type="token" data-value="2500" data-amount="5000" data-unit="ZDFZ">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i> Zanzibar Token (ZDFZ) - 5,000 ZDFZ ($2,500)
|
||||
</option>
|
||||
</optgroup>
|
||||
<!-- Digital Assets -->
|
||||
@@ -180,7 +180,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="20" height="20" class="rounded-circle me-1">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
2,000 TFT
|
||||
</div>
|
||||
</td>
|
||||
@@ -232,7 +232,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="20" height="20" class="rounded-circle me-1">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
1,000 ZDFZ
|
||||
</div>
|
||||
</td>
|
||||
|
@@ -179,7 +179,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="token-icon me-2"></div>
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
{{ position.base.asset_name }}
|
||||
</div>
|
||||
</td>
|
||||
@@ -232,14 +232,14 @@
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="token-icon me-2"></div>
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
{{ position.base.asset_name }}
|
||||
</div>
|
||||
</td>
|
||||
<td>{{ position.base.amount }} {{ position.base.asset_symbol }}</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="token-icon me-2"></div>
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
{{ position.collateral_amount }} {{ position.collateral_asset_symbol }}
|
||||
</div>
|
||||
</td>
|
||||
|
@@ -34,8 +34,8 @@
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="position-relative me-2">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="24" height="24" class="rounded-circle">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle position-absolute" style="left: 15px; top: 0;">
|
||||
|
||||
|
||||
</div>
|
||||
TFT-ZDFZ
|
||||
</div>
|
||||
@@ -56,8 +56,8 @@
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="position-relative me-2">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="24" height="24" class="rounded-circle">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="24" height="24" class="rounded-circle position-absolute" style="left: 15px; top: 0;">
|
||||
|
||||
|
||||
</div>
|
||||
TFT-USDT
|
||||
</div>
|
||||
@@ -76,13 +76,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="position-relative me-2">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="24" height="24" class="rounded-circle position-absolute" style="left: 15px; top: 0;">
|
||||
</div>
|
||||
ZDFZ-USDT
|
||||
</div>
|
||||
ZDFZ-USDT
|
||||
</td>
|
||||
<td>$850,000</td>
|
||||
<td>$32,000</td>
|
||||
@@ -117,13 +111,7 @@
|
||||
<div class="col-md-6 col-lg-4 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-header bg-light">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="position-relative me-2">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="24" height="24" class="rounded-circle">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle position-absolute" style="left: 15px; top: 0;">
|
||||
</div>
|
||||
TFT-ZDFZ
|
||||
</div>
|
||||
TFT-ZDFZ
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
@@ -163,13 +151,7 @@
|
||||
<div class="col-md-6 col-lg-4 mb-4">
|
||||
<div class="card h-100">
|
||||
<div class="card-header bg-light">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="position-relative me-2">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="24" height="24" class="rounded-circle position-absolute" style="left: 15px; top: 0;">
|
||||
</div>
|
||||
ZDFZ-USDT
|
||||
</div>
|
||||
ZDFZ-USDT
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
|
@@ -156,7 +156,7 @@ This is a compliant version of the previous lending_borrowing.html tab. All term
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="token-icon me-2"></div>
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
{{ position.base.asset_name }}
|
||||
</div>
|
||||
</td>
|
||||
@@ -211,16 +211,13 @@ This is a compliant version of the previous lending_borrowing.html tab. All term
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="token-icon me-2"></div>
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
{{ position.base.asset_name }}
|
||||
</div>
|
||||
</td>
|
||||
<td>{{ position.base.amount }} {{ position.base.asset_symbol }}</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="token-icon me-2"></div>
|
||||
{{ position.collateral_amount }} {{ position.collateral_asset_symbol }}
|
||||
</div>
|
||||
{{ position.collateral_amount }} {{ position.collateral_asset_symbol }}
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
|
@@ -22,7 +22,6 @@
|
||||
<div class="card h-100">
|
||||
<div class="card-header bg-primary text-white">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="24" height="24" class="rounded-circle me-2">
|
||||
<h6 class="mb-0">ThreeFold Token (TFT)</h6>
|
||||
</div>
|
||||
</div>
|
||||
@@ -80,7 +79,6 @@
|
||||
<div class="card h-100">
|
||||
<div class="card-header bg-success text-white">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle me-2">
|
||||
<h6 class="mb-0">Zanzibar Token (ZDFZ)</h6>
|
||||
</div>
|
||||
</div>
|
||||
@@ -221,7 +219,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="24" height="24" class="rounded-circle me-2">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
ThreeFold Token (TFT)
|
||||
</div>
|
||||
</td>
|
||||
@@ -239,7 +237,7 @@
|
||||
<tr>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle me-2">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
Zanzibar Token (ZDFZ)
|
||||
</div>
|
||||
</td>
|
||||
|
@@ -29,27 +29,26 @@
|
||||
</div>
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-outline-primary dropdown-toggle d-flex align-items-center" type="button" id="fromTokenDropdown" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="24" height="24" class="rounded-circle me-2" id="fromTokenImg">
|
||||
<span id="fromTokenSymbol">TFT</span>
|
||||
</button>
|
||||
<input type="hidden" name="from_token" id="fromTokenInput" value="TFT">
|
||||
<ul class="dropdown-menu" aria-labelledby="fromTokenDropdown">
|
||||
<li><a class="dropdown-item d-flex align-items-center" href="#" data-token="TFT" data-img="/static/img/tokens/tft.png" data-balance="10000">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="24" height="24" class="rounded-circle me-2">
|
||||
<li><a class="dropdown-item d-flex align-items-center" href="#" data-token="TFT" data-balance="10000">
|
||||
|
||||
<div>
|
||||
<div>ThreeFold Token</div>
|
||||
<small class="text-muted">Balance: 10,000 TFT</small>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a class="dropdown-item d-flex align-items-center" href="#" data-token="ZDFZ" data-img="/static/img/tokens/zdfz.png" data-balance="5000">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle me-2">
|
||||
|
||||
<div>
|
||||
<div>Zanzibar Token</div>
|
||||
<small class="text-muted">Balance: 5,000 ZDFZ</small>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a class="dropdown-item d-flex align-items-center" href="#" data-token="USDT" data-img="/static/img/tokens/usdt.png" data-balance="2500">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="24" height="24" class="rounded-circle me-2">
|
||||
|
||||
<div>
|
||||
<div>Tether USD</div>
|
||||
<small class="text-muted">Balance: 2,500 USDT</small>
|
||||
@@ -82,21 +81,21 @@
|
||||
<input type="number" class="form-control form-control-lg border-0" id="swapToAmount" name="to_amount" placeholder="0.0" readonly>
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-outline-primary dropdown-toggle d-flex align-items-center" type="button" id="toTokenDropdown" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle me-2" id="toTokenImg">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
<span id="toTokenSymbol">ZDFZ</span>
|
||||
</button>
|
||||
<input type="hidden" name="to_token" id="toTokenInput" value="ZDFZ">
|
||||
<ul class="dropdown-menu" aria-labelledby="toTokenDropdown">
|
||||
<li><a class="dropdown-item d-flex align-items-center" href="#" data-token="TFT" data-img="/static/img/tokens/tft.png">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="24" height="24" class="rounded-circle me-2">
|
||||
|
||||
<div>ThreeFold Token</div>
|
||||
</a></li>
|
||||
<li><a class="dropdown-item d-flex align-items-center" href="#" data-token="ZDFZ" data-img="/static/img/tokens/zdfz.png">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="24" height="24" class="rounded-circle me-2">
|
||||
|
||||
<div>Zanzibar Token</div>
|
||||
</a></li>
|
||||
<li><a class="dropdown-item d-flex align-items-center" href="#" data-token="USDT" data-img="/static/img/tokens/usdt.png">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="24" height="24" class="rounded-circle me-2">
|
||||
|
||||
<div>Tether USD</div>
|
||||
</a></li>
|
||||
</ul>
|
||||
@@ -163,13 +162,13 @@
|
||||
<td>2025-04-15 14:32</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="20" height="20" class="rounded-circle me-1">
|
||||
|
||||
500 TFT
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="20" height="20" class="rounded-circle me-1">
|
||||
|
||||
250 ZDFZ
|
||||
</div>
|
||||
</td>
|
||||
@@ -179,13 +178,13 @@
|
||||
<td>2025-04-14 09:17</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="20" height="20" class="rounded-circle me-1">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
1,000 USDT
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="20" height="20" class="rounded-circle me-1">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
2,000 TFT
|
||||
</div>
|
||||
</td>
|
||||
@@ -195,13 +194,13 @@
|
||||
<td>2025-04-12 16:45</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="20" height="20" class="rounded-circle me-1">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
100 ZDFZ
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="20" height="20" class="rounded-circle me-1">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
50 USDT
|
||||
</div>
|
||||
</td>
|
||||
@@ -234,8 +233,8 @@
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="position-relative me-2">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="20" height="20" class="rounded-circle">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="20" height="20" class="rounded-circle position-absolute" style="left: 10px; top: 0;">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
</div>
|
||||
TFT/ZDFZ
|
||||
</div>
|
||||
@@ -248,8 +247,8 @@
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="position-relative me-2">
|
||||
<img src="/static/img/tokens/tft.png" alt="TFT" width="20" height="20" class="rounded-circle">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="20" height="20" class="rounded-circle position-absolute" style="left: 10px; top: 0;">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
</div>
|
||||
TFT/USDT
|
||||
</div>
|
||||
@@ -262,8 +261,8 @@
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="position-relative me-2">
|
||||
<img src="/static/img/tokens/zdfz.png" alt="ZDFZ" width="20" height="20" class="rounded-circle">
|
||||
<img src="/static/img/tokens/usdt.png" alt="USDT" width="20" height="20" class="rounded-circle position-absolute" style="left: 10px; top: 0;">
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
<i class="bi bi-coin me-2" style="font-size: 1.5rem;"></i>
|
||||
</div>
|
||||
ZDFZ/USDT
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user