New changes.
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 6.8 KiB |
@ -0,0 +1,38 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full bg-white h-fit shadow-md rounded-md p-5">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Add Daily Report
|
||||||
|
</h1>
|
||||||
|
<form class="mx-auto w-full flex flex-col gap-3 justify-center items-center mt-5" method="POST">
|
||||||
|
|
||||||
|
<textarea required name="" type="text" placeholder="Write Your Report Here" rows="10" cols="5"
|
||||||
|
class="w-full py-3 px-3 border border-gray-300 outline-none rounded-md resize-none"></textarea>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-3">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500">Add</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,32 @@
|
|||||||
|
{% load static %}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Osina</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href='{% static "dist/output.css" %}'>
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<form id="hiddenContent" method="POST">
|
||||||
|
{% csrf_token %}
|
||||||
|
<h1 class="text-slate-800 text-2xl font-semibold text-center">Add Staff Position</h1>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center">
|
||||||
|
<input name="name" type="text" placeholder="Position Name"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-4"
|
||||||
|
required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-4">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit bg-blue-500 border border-blue-500 rounded-md text-white text-xl px-3 py-2 hover:bg-white hover:text-blue-500">Add</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,221 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
<!-- NOTES SECTION -->
|
||||||
|
<div class="w-full h-fit flex justify-between items-center px-10 pb-5">
|
||||||
|
<div class="relative w-full h-fit bg-white shadow-md rounded-md p-5">
|
||||||
|
<div class="w-full flex justify-between items-center">
|
||||||
|
<div>
|
||||||
|
<p class="text-base text-gray-500">Recent Note:</p>
|
||||||
|
<p class="text-slate-700">Send an Email to Salim.</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end items-center gap-4">
|
||||||
|
<button
|
||||||
|
class="w-fit rounded-md py-1 px-3 bg-slate-800 border border-slate-800 text-white hover:bg-white hover:text-slate-800"
|
||||||
|
id="showNotesButton">Show
|
||||||
|
Notes</button>
|
||||||
|
<button
|
||||||
|
class="w-[35px] h-[35px] rounded-full p-2 bg-gray-300 text-white text-[20px] outline-none border-none cursor-pointer flex justify-center items-center shadow-md"
|
||||||
|
id="addNoteButton">
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ALL NOTES CONTAINER (it appears when clicking on the "Show notes" button) -->
|
||||||
|
<div class="w-full h-fit relative hidden justify-start gap-3 items-center mt-5 overflow-hidden overflow-x-auto"
|
||||||
|
id="notesContainer">
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-yellow-200 p-5">
|
||||||
|
<p class="text-base text-slate-800">Send an Email to Salim.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-pink-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Contact the client.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-green-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Add daily report at the end of the day.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-blue-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Add daily report at the end of the day.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-purple-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Add daily report at the end of the day.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-yellow-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Add daily report at the end of the day.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- DAILY REPORTS USERS ACTIVITY SECTION -->
|
||||||
|
<div class="w-full flex justify-between gap-[2.5%] px-10 pb-5">
|
||||||
|
<!-- LEFT SIDE / USERS SECTION -->
|
||||||
|
<div class="w-[74.5%]">
|
||||||
|
<div class="w-full h-fit bg-white rounded-md shadow-md p-5">
|
||||||
|
<h1 class="text-slate-800 text-[30px] font-semibold">Daily Report</h1>
|
||||||
|
|
||||||
|
<!-- FILTERING -->
|
||||||
|
<div class="w-full py-4 px-3 bg-gray-200 rounded-md shadow-md mt-4 flex justify-between items-center">
|
||||||
|
<div class="flex justify-start items-center gap-5">
|
||||||
|
<div class="relative h-fit w-fit flex items-center">
|
||||||
|
<input type="text" placeholder="Enter Staff Username"
|
||||||
|
class="py-2 px-3 border border-gray-300 rounded-md outline-none w-[300px] h-[40px] relative">
|
||||||
|
<button
|
||||||
|
class="text-gray-500 text-xl outline-none border-none cursor-pointer absolute right-2 bg-white">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="{% url 'adddailyreport' %}">
|
||||||
|
<button
|
||||||
|
class="w-fit text-base px-3 py-2 bg-blue-500 text-white outline-none border border-blue-500 rounded-md cursor-pointer hover:bg-white hover:text-blue-500">Add
|
||||||
|
Daily Report</button>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- DAILY REPORTS -->
|
||||||
|
<div class="mt-5 w-full h-fit">
|
||||||
|
<div class="w-full border-x border-t border-gray-300 rounded-t-md ">
|
||||||
|
<!-- TABLE HEADER -->
|
||||||
|
<div
|
||||||
|
class="w-full flex justify-between items-center h-[60px] border-b border-gray-300 rounded-t-md">
|
||||||
|
<div class="w-full h-full flex justify-start items-center px-4">
|
||||||
|
<p class="text-slate-800 text-xl">Report By <span
|
||||||
|
class="text-blue-500 font-semibold">Nataly.aw</span> On <span
|
||||||
|
class="text-blue-500 font-semibold">22-9-2023</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- TABLE BODY -->
|
||||||
|
<div class="w-full">
|
||||||
|
<!-- 1st row -->
|
||||||
|
<div class="w-full h-fit flex justify-between items-center border-b border-gray-300">
|
||||||
|
<div
|
||||||
|
class="w-full h-full flex justify-start items-center p-4">
|
||||||
|
<p class="text-gray-600 font-light">
|
||||||
|
Lorem ipsum dolor sit amet consectetur adipisicing elit. Magni possimus esse ipsa
|
||||||
|
repellat quia velit ducimus temporibus omnis quibusdam inventore ea, consequuntur
|
||||||
|
exercitationem molestias. Repellat architecto a laboriosam debitis natus?
|
||||||
|
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Autem amet dicta
|
||||||
|
repudiandae possimus? Natus, possimus quae numquam nostrum corporis quidem vitae
|
||||||
|
necessitatibus perferendis tempore. Praesentium, omnis? Animi non enim sint!
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="mt-5 w-full h-fit">
|
||||||
|
<div class="w-full border-x border-t border-gray-300 rounded-t-md ">
|
||||||
|
<!-- TABLE HEADER -->
|
||||||
|
<div
|
||||||
|
class="w-full flex justify-between items-center h-[60px] border-b border-gray-300 rounded-t-md">
|
||||||
|
<div class="w-full h-full flex justify-start items-center px-4">
|
||||||
|
<p class="text-slate-800 text-xl">Report By <span
|
||||||
|
class="text-blue-500 font-semibold">Aya.rf</span> On <span
|
||||||
|
class="text-blue-500 font-semibold">25-9-2023</span></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- TABLE BODY -->
|
||||||
|
<div class="w-full">
|
||||||
|
<!-- 1st row -->
|
||||||
|
<div class="w-full h-fit flex justify-between items-center border-b border-gray-300">
|
||||||
|
<div
|
||||||
|
class="w-full h-full flex justify-start items-center p-4">
|
||||||
|
<p class="text-gray-600 font-light">
|
||||||
|
Lorem ipsum dolor sit amet consectetur adipisicing elit. Magni possimus esse ipsa
|
||||||
|
repellat quia velit ducimus temporibus omnis quibusdam inventore ea, consequuntur
|
||||||
|
exercitationem molestias. Repellat architecto a laboriosam debitis natus?
|
||||||
|
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Autem amet dicta
|
||||||
|
repudiandae possimus? Natus, possimus quae numquam nostrum corporis quidem vitae
|
||||||
|
necessitatibus perferendis tempore. Praesentium, omnis? Animi non enim sint!
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- RIGHT SIDE / USERS ACTIVITY -->
|
||||||
|
<div class="w-[23%] bg-white h-fit rounded-md shadow-md p-5">
|
||||||
|
<h1 class="text-2xl text-slate-700 text-center font-semibold">USERS ACTIVITY</h1>
|
||||||
|
<div class="w-full h-fit mt-2">
|
||||||
|
|
||||||
|
|
||||||
|
{% for latest in latest_statuses %}
|
||||||
|
<!-- 1ST ROW -->
|
||||||
|
<div class="w-full flex flex-col py-3">
|
||||||
|
<div class="w-full flex flex-col justify-center items-start gap-2">
|
||||||
|
<div class="w-full flex justify-between items-center gap-2">
|
||||||
|
<div class="flex justify-start gap-2">
|
||||||
|
<div class="w-[45px] h-[45px] rounded-full">
|
||||||
|
<img src='{{latest.staff.image.url}}' alt="user profile"
|
||||||
|
class="w-full h-full object-cover rounded-full">
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-col">
|
||||||
|
<h1 class="text-sm text-slate-700 font-semibold">{{latest.staff.first_name}}
|
||||||
|
{{latest.staff.last_name}}</h1>
|
||||||
|
<p class="text-sm text-gray-500">{{latest.time}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cursor-pointer">
|
||||||
|
<i class="fa fa-thumbs-up" style="color: rgb(184, 184, 184); font-size: 15px;"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Status -->
|
||||||
|
<div class="w-full">
|
||||||
|
<p class="text-sm text-gray-500">{{latest.text}}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Add comment section -->
|
||||||
|
<div class="w-full h-fit flex justify-between items-center border border-gray-200 mt-2 rounded-md">
|
||||||
|
<input type="text" placeholder="Add Comment..."
|
||||||
|
class="outline-none text-gray-500 p-2 w-[100%] text-sm h-[40px] rounded-tl-md rounded-bl-md">
|
||||||
|
<button class="w-fit px-3 py-2 bg-slate-800 rounded-tr-md rounded-br-md">
|
||||||
|
<i class="fa fa-send" style="color: white; font-size: 15px;"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!---------------------- JS SCRIPTS -------------------->
|
||||||
|
|
||||||
|
<!-- TO SHOW ALL THE ADDED NOTES BY THE USER WHEN CLICKING ON THE SHOW NOTES BUTTON -->
|
||||||
|
<script type="text/javascript" src='{% static "js/show-notes.js" %}'></script>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,124 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Business
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form method="POST" action="{% url 'save_business' %}" enctype="multipart/form-data">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input name="name" type="text" placeholder="Name"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4"
|
||||||
|
value="Business1"
|
||||||
|
required>
|
||||||
|
|
||||||
|
<div class="inbox-box border border-gray-300 py-1 px-3 w-full rounded-md mt-4">
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
<input name="logo" required type="file" id="actual-btn" accept="image/*" hidden/>
|
||||||
|
<span id="file-name"
|
||||||
|
class="text-gray-500 text-base focus:outline-none outline-none">Upload Business
|
||||||
|
Logo</span>
|
||||||
|
<label for="actual-btn"
|
||||||
|
class="bg-transparent text-gray-500 border border-white px-4 py-2 h-14 cursor-pointer flex items-center"><i
|
||||||
|
class="fa fa-upload"></i></label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- WHEN THE USER CHOOSE A FILE THE NAME OF THE FILE WILL APPEAR IN THE SPAN -->
|
||||||
|
<script>
|
||||||
|
const fileInput = document.getElementById('actual-btn');
|
||||||
|
const fileNameSpan = document.getElementById('file-name');
|
||||||
|
|
||||||
|
fileInput.addEventListener('change', (event) => {
|
||||||
|
const selectedFiles = event.target.files;
|
||||||
|
if (selectedFiles.length > 0) {
|
||||||
|
const fileNames = Array.from(selectedFiles).map(file => file.name).join(', ');
|
||||||
|
fileNameSpan.textContent = fileNames;
|
||||||
|
} else {
|
||||||
|
fileNameSpan.textContent = 'Upload Documents (PDF, docx)';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input name="email" type="email" placeholder="Email"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4"
|
||||||
|
value="nataly.aw@ositcom.net"
|
||||||
|
required>
|
||||||
|
|
||||||
|
<input name="financial_number" type="number" placeholder="Financial Number"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4"
|
||||||
|
value="111"
|
||||||
|
required>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-start items-center gap-2 mt-4">
|
||||||
|
<input name="vat"type="checkbox" id="vatCheckbox" onchange="updateVatValue(this.checked)" required>
|
||||||
|
<label class="text-slate-800">Vat</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function updateVatValue(checked) {
|
||||||
|
const vatInput = document.querySelector('input[name="vat"]');
|
||||||
|
vatInput.value = checked ? 'True' : 'False';
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input name="commercial_registration" type="commercial_registration" placeholder="Commercial registration"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4"
|
||||||
|
value="111"
|
||||||
|
required>
|
||||||
|
|
||||||
|
<input name="phone_number" type="number" placeholder="Mobile Number"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4"
|
||||||
|
value="111"
|
||||||
|
required>
|
||||||
|
|
||||||
|
<input name="website" type="text" placeholder="Website"
|
||||||
|
value="wwww.google.com"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-4">
|
||||||
|
|
||||||
|
|
||||||
|
<select name="business_type" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500 mt-4">
|
||||||
|
<option value="" disabled>Business Type</option>
|
||||||
|
<option value="ASSOCIATIONS" selected>Associations</option>
|
||||||
|
<option value="HEALTHCARE">Healthcare</option>
|
||||||
|
<option value="LUXURY">Luxury</option>
|
||||||
|
<option value="MANUFACTURING">Manufacturing</option>
|
||||||
|
<option value="NON-PROFIT">Non-Profit</option>
|
||||||
|
<option value="Education">Education</option>
|
||||||
|
<option value="ENTERTAINMENT">Entertainment</option>
|
||||||
|
<option value="LOGISTICS">Logistics</option>
|
||||||
|
<option value="RETAIL">Retail</option>
|
||||||
|
<option value="AUTOMOTIVE">Automotive</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-3">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,124 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Customer
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form method="POST" action="{% url 'save_customer' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="w-full flex flex-col gap-3 justify-center items-center mt-5">
|
||||||
|
|
||||||
|
<input name="first_name" type="text" placeholder="First Name"
|
||||||
|
value="Salim"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<input name="last_name" type="text" placeholder="Last Name"
|
||||||
|
value="Elliye"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<input name="email" type="email" placeholder="Email"
|
||||||
|
value="salim@ositcom.net"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<input name="mobile_number" type="number" placeholder="Mobile Number"
|
||||||
|
value="71197823"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<input name="personal_website" type="url" placeholder="Personal Website"
|
||||||
|
value="www.google.com"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md">
|
||||||
|
|
||||||
|
<select name="status"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500"
|
||||||
|
required>
|
||||||
|
<option value="" disabled>Status</option>
|
||||||
|
<option value="Active" selected>Active</option>
|
||||||
|
<option value="Suspended">Suspended</option>
|
||||||
|
<option value="Terminated">Terminated</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select name="reference"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500"
|
||||||
|
required>
|
||||||
|
<option value="" disabled>Reference</option>
|
||||||
|
<option value="" selected>Reference 1</option>
|
||||||
|
{% for reference in references %}
|
||||||
|
<option value="{{reference.id}}">{{reference.name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="businessTypeSelect"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Type</option>
|
||||||
|
<option value="business" selected>Business</option>
|
||||||
|
<option value="personal">Personal</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<div class="w-[80%] mx-auto border border-gray-300 rounded-md py-5 px-3 bg-white hidden"
|
||||||
|
id="addBusinessContainer">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Select Business
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<div class="w-full mt-2">
|
||||||
|
<select name="business" id="businessSelect"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Business Name</option>
|
||||||
|
<option value="" selected>Business1</option>
|
||||||
|
{% for business in businesses %}
|
||||||
|
<option value="{{business.id}}">{{business.name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- MAKE THE "ADDBUSINESSCONTAINER" VISIBLE WHEN CHOOSING THE CUSTOMER TYPE AS BUSINESS -->
|
||||||
|
<script>
|
||||||
|
const businessTypeSelect = document.getElementById('businessTypeSelect');
|
||||||
|
const addBusinessContainer = document.getElementById('addBusinessContainer');
|
||||||
|
|
||||||
|
businessTypeSelect.addEventListener('change', function () {
|
||||||
|
if (businessTypeSelect.value === 'business') {
|
||||||
|
addBusinessContainer.style.display = 'block';
|
||||||
|
addBusinessContainer.scrollIntoView({ behavior: 'smooth' });
|
||||||
|
} else {
|
||||||
|
addBusinessContainer.style.display = 'none';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input name="password" type="password" placeholder="Password"
|
||||||
|
value="1234567"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-3">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,69 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Epic
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form class="mx-auto w-full flex flex-col gap-3 justify-center items-center mt-5" method="POST" action="{% url 'save_epic' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input required name="title" type="text" placeholder="Epic Name"
|
||||||
|
value="Epic 1"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md">
|
||||||
|
|
||||||
|
<select required name="project" id="project" class="hidden w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="{{ project.id }}" selected>{{ project.name }}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<textarea required name="description" type="text" placeholder="Epic Description" rows="5" cols="5"
|
||||||
|
class="w-full py-3 px-3 border border-gray-300 outline-none rounded-md resize-none">Lorem ipsum dolor sit amet consectetur adipisicing elit. Non eos nostrum explicabo assumenda totam magnam asperiores enim atque recusandae, eaque repudiandae optio nemo, ducimus, doloremque praesentium sunt! Ipsum, repellat hic.
|
||||||
|
</textarea>
|
||||||
|
|
||||||
|
<select required name="status" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Select Status</option>
|
||||||
|
<option value="Open" selected>Open</option>
|
||||||
|
<option value="Closed">Closed</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">Start Date:</label>
|
||||||
|
<input required name="start_date" type="date" id="date" name="date"
|
||||||
|
value="2023-09-22"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">End Date:</label>
|
||||||
|
<input required name="end_date" type="date" id="date" name="date"
|
||||||
|
value="2023-09-22"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-3">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,44 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Project Type
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form id="hiddenContent" method="POST" action="{% url 'save_projecttype' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center">
|
||||||
|
<input name="name" type="text" placeholder="Project Type Name"
|
||||||
|
value="name1"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-4"
|
||||||
|
required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-4">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit bg-blue-500 border border-blue-500 rounded-md text-white text-xl px-3 py-2 hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,152 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Project
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form class="w-full flex flex-col gap-3 justify-center items-center mt-5" method="POST"
|
||||||
|
action="{% url 'save_project' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input required name="name" type="text" placeholder="Project Name"
|
||||||
|
value="Winabig"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md">
|
||||||
|
|
||||||
|
<select required name="customer" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Clients</option>
|
||||||
|
<option value="" selected>Nataly</option>
|
||||||
|
{% for customer in customers %}
|
||||||
|
<option value="{{customer.user.username}}">{{customer.first_name}} {{customer.last_name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select required name="manager" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Project Manager</option>
|
||||||
|
<option value="" selected>Emile</option>
|
||||||
|
{% for staff in staffs %}
|
||||||
|
<option value="{{staff.user.username}}">{{staff.first_name}} {{staff.last_name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select required name="members" id=""
|
||||||
|
class="w-full h-[100px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500"
|
||||||
|
multiple>
|
||||||
|
<option value="" disabled>Member(s)</option>
|
||||||
|
<option value="" selected>Salim</option>
|
||||||
|
{% for staff in staffs %}
|
||||||
|
<option value="{{staff.user.username}}">{{staff.first_name}} {{staff.last_name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select required name="status" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Status</option>
|
||||||
|
<option value="Pending">Pending</option>
|
||||||
|
<option value="Active" selected>Active</option>
|
||||||
|
<option value="Completed">Completed</option>
|
||||||
|
<option value="Cancelled">Cancelled</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select required name="members" id=""
|
||||||
|
class="w-full h-[100px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500"
|
||||||
|
multiple>
|
||||||
|
<option value="" disabled>Project Type</option>
|
||||||
|
<option value="" selected>Development</option>
|
||||||
|
{%for type in project_types %}
|
||||||
|
<option value="{{type.id}}">{{type.name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<textarea required name="details" type="text" placeholder="Project Details" rows="5" cols="5"
|
||||||
|
class="w-full py-3 px-3 border border-gray-300 outline-none rounded-md resize-none">Lorem ipsum dolor sit amet consectetur adipisicing elit. Illum magnam ea temporibus commodi aspernatur culpa totam similique voluptate veritatis? Odit, excepturi? Itaque suscipit libero iure corrupti consequatur soluta expedita quod?
|
||||||
|
</textarea>
|
||||||
|
|
||||||
|
<div class="w-full p-3 border border-gray-300 mt-4 rounded-md">
|
||||||
|
<div class="w-full mt-2" id="addReqContainer">
|
||||||
|
<input name="requirements" type="text" placeholder="Requirement"
|
||||||
|
value="One"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- THE CLONED CONTAINER -->
|
||||||
|
<div class="mt-2 hidden" id="addReqContainerTemplate">
|
||||||
|
<div class="w-full flex flex-col gap-2">
|
||||||
|
<input name="requirements" type="text" placeholder="Requirement"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none">
|
||||||
|
<button
|
||||||
|
class="w-full h-[55px] rounded-md bg-gray-300 border-none outline-none shadow-md text-white text-xl cursor-pointer py-2"
|
||||||
|
id="removeReqButton" type="button">
|
||||||
|
<i class="fa fa-minus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="w-full h-[55px] rounded-md bg-gray-400 border-none outline-none shadow-md text-white text-xl cursor-pointer py-2 mt-2"
|
||||||
|
id="addReqButton" type="button">
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const addReqButton = document.getElementById("addReqButton");
|
||||||
|
const addReqContainerTemplate = document.getElementById("addReqContainerTemplate");
|
||||||
|
const addReqContainer = document.getElementById("addReqContainer");
|
||||||
|
|
||||||
|
addReqButton.addEventListener("click", function () {
|
||||||
|
// Clone the template and remove the "hidden" class
|
||||||
|
const newContainer = addReqContainerTemplate.cloneNode(true);
|
||||||
|
newContainer.classList.remove("hidden");
|
||||||
|
|
||||||
|
// Add an event listener to the new container's remove button
|
||||||
|
const removeReqButton = newContainer.querySelector("#removeReqButton");
|
||||||
|
removeReqButton.addEventListener("click", function () {
|
||||||
|
// Remove the clicked container when the remove button is clicked
|
||||||
|
newContainer.remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
addReqContainer.appendChild(newContainer);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">Start Date:</label>
|
||||||
|
<input required name="start_date" type="date" id="date" name="date"
|
||||||
|
value="2023-09-22"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">End Date:</label>
|
||||||
|
<input required name="end_date" type="date" id="date" name="date"
|
||||||
|
value="2023-10-22"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-1">
|
||||||
|
</div>
|
||||||
|
<div class="w-full flex justify-center items-center mt-3">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,48 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Reference
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form id="hiddenContent" method="POST" action="{% url 'save_reference' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<div class="w-full flex flex-col justify-center items-center">
|
||||||
|
<input name="name" type="text" placeholder="Reference Name"
|
||||||
|
value="Reference 1"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-4"
|
||||||
|
required>
|
||||||
|
|
||||||
|
<input name="date" type="date" id="date"
|
||||||
|
value="2023-09-22"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-4">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-4">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit bg-blue-500 border border-blue-500 rounded-md text-white text-xl px-3 py-2 hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,43 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Staff Position
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form id="hiddenContent" method="POST">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="w-full flex justify-center items-center">
|
||||||
|
<input name="name" type="text" placeholder="Staff Position Name"
|
||||||
|
value="one"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-4"
|
||||||
|
required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-4">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit bg-blue-500 border border-blue-500 rounded-md text-white text-xl px-3 py-2 hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,139 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Staff
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form method="POST" action="{% url 'save_staff' %}" enctype="multipart/form-data">
|
||||||
|
{% csrf_token %}
|
||||||
|
<div class="w-full flex flex-col gap-3 justify-center items-center mt-5">
|
||||||
|
<div class="w-[100px] h-[100px] rounded-full border border-gray-200" id="image-container">
|
||||||
|
<img src="{% static 'images/default-user.png' %}" alt="" srcset="" id="" class="rounded-full w-full h-full">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inbox-box border border-gray-300 py-1 px-3 w-full rounded-md">
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
<input name="image" type="file" id="actual-btn" accept="image/*" hidden />
|
||||||
|
<span id="file-name" class="text-gray-500 text-base focus:outline-none outline-none">Upload
|
||||||
|
Profile Picture</span>
|
||||||
|
<label for="actual-btn"
|
||||||
|
class="bg-transparent text-gray-500 border border-white px-4 py-2 h-14 cursor-pointer flex items-center"><i
|
||||||
|
class="fa fa-upload" style="font-size: 20px;"></i></label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- WHEN THE USER CHOOSE A FILE THE NAME OF THE FILE WILL APPEAR IN THE SPAN AND THE UPLOADED IMAGE WILL APPEAR IN THE USER PROFILE IMAGE CONTAINER -->
|
||||||
|
<script>
|
||||||
|
const fileInput = document.getElementById('actual-btn');
|
||||||
|
const fileNameSpan = document.getElementById('file-name');
|
||||||
|
const imageContainer = document.getElementById('image-container');
|
||||||
|
|
||||||
|
fileInput.addEventListener('change', (event) => {
|
||||||
|
const selectedFiles = event.target.files;
|
||||||
|
if (selectedFiles.length > 0) {
|
||||||
|
const file = selectedFiles[0];
|
||||||
|
const fileReader = new FileReader();
|
||||||
|
|
||||||
|
fileReader.onload = function () {
|
||||||
|
const imgElement = document.createElement('img');
|
||||||
|
imgElement.src = fileReader.result;
|
||||||
|
imgElement.alt = 'Uploaded Image';
|
||||||
|
imgElement.classList.add('w-full', 'h-full', 'rounded-full', 'object-cover');
|
||||||
|
|
||||||
|
// Clear any previous images and append the new one
|
||||||
|
imageContainer.innerHTML = '';
|
||||||
|
imageContainer.appendChild(imgElement);
|
||||||
|
|
||||||
|
// Update the text in the file input
|
||||||
|
fileNameSpan.textContent = file.name;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Read the selected file as a data URL
|
||||||
|
fileReader.readAsDataURL(file);
|
||||||
|
} else {
|
||||||
|
fileNameSpan.textContent = 'Upload Profile Picture';
|
||||||
|
imageContainer.innerHTML = ''; // Clear the container if no file is selected
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<input name="first_name" type="text" placeholder="First Name"
|
||||||
|
value="Nataly"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<input name="last_name" type="text" placeholder="Last Name"
|
||||||
|
value="Ab"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<input name="email" type="email" placeholder="Email"
|
||||||
|
value="nataly.aw@ositcom.com"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<input name="mobile_number" type="number" placeholder="Mobile Number"
|
||||||
|
value="71196733"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<input name="position" type="text" placeholder="Position"
|
||||||
|
value="Developer"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-start items-center gap-2">
|
||||||
|
<input name="active" type="checkbox" id="activeCheckbox" onchange="updateCheckbox('activeCheckbox')">
|
||||||
|
<p class="text-gray-500">Active</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-start items-center gap-2">
|
||||||
|
<input name="intern" type="checkbox" id="internCheckbox" onchange="updateCheckbox('internCheckbox')">
|
||||||
|
<p class="text-gray-500">Intern</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function updateCheckbox(checkboxId) {
|
||||||
|
const checkbox = document.getElementById(checkboxId);
|
||||||
|
const inputName = checkbox.getAttribute('name');
|
||||||
|
const inputValue = checkbox.checked ? 'True' : 'False';
|
||||||
|
|
||||||
|
// Set the input field value based on checkbox state
|
||||||
|
const inputField = document.querySelector(`input[name="${inputName}"]`);
|
||||||
|
inputField.value = inputValue;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<input name="password" type="password" placeholder="Password"
|
||||||
|
value="12345677"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md" required>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-3">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,44 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Tag
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form id="hiddenContent" method="POST" action="{% url 'save_tag' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center">
|
||||||
|
<input name="name" type="text" placeholder="Tag Name"
|
||||||
|
value="Tag1"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-4"
|
||||||
|
required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-4">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit bg-blue-500 border border-blue-500 rounded-md text-white text-xl px-3 py-2 hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,128 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="w-full px-10 mb-4">
|
||||||
|
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
|
||||||
|
<h1 class="text-3xl text-slate-800 text-center font-semibold">
|
||||||
|
Edit Task
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<form class="w-full flex flex-col gap-3 justify-center items-center mt-5" method="POST"
|
||||||
|
action="{% url 'save_task' %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
<input required name="name" type="text" placeholder="Task Name"
|
||||||
|
value="Task1"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md">
|
||||||
|
|
||||||
|
<select required name="project" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option disabled>Select Project</option>
|
||||||
|
<option selected>Winabig</option>
|
||||||
|
<option value="{{project.id}}">{{project.name}}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select required name="epic" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Select Epic</option>
|
||||||
|
<option value="" selected>Epic1</option>
|
||||||
|
{% for epic in epics_of_my_project %}
|
||||||
|
<option value="{{epic.id}}">{{epic.title}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select required name="status" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Status</option>
|
||||||
|
<option value="Open" selected>Open</option>
|
||||||
|
<option value="Working On">Working On</option>
|
||||||
|
<option value="Closed">Closed</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select name="assigned_to" required id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500">
|
||||||
|
<option value="" disabled>Assigned To</option>
|
||||||
|
<option value="" selected>Nataly</option>
|
||||||
|
{% for staff in staffs %}
|
||||||
|
<option value="{{staff.id}}">{{staff.first_name}} {{staff.last_name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<textarea required name="description" type="text" placeholder="Task Description" rows="5" cols="5"
|
||||||
|
class="w-full py-3 px-3 border border-gray-300 outline-none rounded-md resize-none">Lorem ipsum dolor sit amet consectetur adipisicing elit. Ab laboriosam cum temporibus itaque vel atque, obcaecati voluptates porro dolorem, magnam quidem nemo corrupti ullam dicta excepturi pariatur inventore voluptatem beatae!
|
||||||
|
</textarea>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">Extra:</label>
|
||||||
|
<select required name="extra" id=""
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500 mt-1">
|
||||||
|
<option value="True">Yes</option>
|
||||||
|
<option value="False" selected>No</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">Start Date:</label>
|
||||||
|
<input required name="start_date" type="date" id="date" name="date"
|
||||||
|
value="2023-09-22"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">End Date:</label>
|
||||||
|
<input required name="end_date" type="date" id="date" name="date"
|
||||||
|
value="2023-09-22"
|
||||||
|
class="w-full p-3 border border-gray-300 rounded-md bg-transparent outline-none mt-1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="inbox-box border border-gray-300 py-1 px-3 w-full rounded-md">
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
<input name="cv" type="file" id="actual-btn" accept=".pdf,.docx" hidden multiple />
|
||||||
|
<span id="file-name" class="text-gray-500 text-base focus:outline-none outline-none">Upload
|
||||||
|
Document(s)</span>
|
||||||
|
<label for="actual-btn"
|
||||||
|
class="bg-transparent text-gray-500 border border-white py-2 h-14 cursor-pointer flex items-center"><i
|
||||||
|
class="fa fa-upload"></i></label>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- WHEN THE USER CHOOSE A FILE THE NAME OF THE FILE WILL APPEAR IN THE SPAN -->
|
||||||
|
<script>
|
||||||
|
const fileInput = document.getElementById('actual-btn');
|
||||||
|
const fileNameSpan = document.getElementById('file-name');
|
||||||
|
|
||||||
|
fileInput.addEventListener('change', (event) => {
|
||||||
|
const selectedFiles = event.target.files;
|
||||||
|
if (selectedFiles.length > 0) {
|
||||||
|
const fileNames = Array.from(selectedFiles).map(file => file.name).join(', ');
|
||||||
|
fileNameSpan.textContent = fileNames;
|
||||||
|
} else {
|
||||||
|
fileNameSpan.textContent = 'Upload Documents (PDF, docx)';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-3">
|
||||||
|
<button type="submit"
|
||||||
|
class="w-fit py-1 px-3 bg-blue-500 rounded-md outline-none text-white border border-blue-500 text-xl cursor-pointer hover:bg-white hover:text-blue-500">Save</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
@ -0,0 +1,196 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block title %}My Projects{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<!-- NOTES SECTION -->
|
||||||
|
<div class="w-full h-fit flex justify-between items-center px-10 pb-5">
|
||||||
|
<div class="relative w-full h-fit bg-white shadow-md rounded-md p-5">
|
||||||
|
<div class="w-full flex justify-between items-center">
|
||||||
|
<div>
|
||||||
|
<p class="text-base text-gray-500">Recent Note:</p>
|
||||||
|
<p class="text-slate-700">Send an Email to Salim.</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end items-center gap-4">
|
||||||
|
<button
|
||||||
|
class="w-fit rounded-md py-1 px-3 bg-slate-800 border border-slate-800 text-white hover:bg-white hover:text-slate-800"
|
||||||
|
id="showNotesButton">Show
|
||||||
|
Notes</button>
|
||||||
|
<button
|
||||||
|
class="w-[35px] h-[35px] rounded-full p-2 bg-gray-300 text-white text-[20px] outline-none border-none cursor-pointer flex justify-center items-center shadow-md"
|
||||||
|
id="addNoteButton">
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ALL NOTES CONTAINER (it appears when clicking on the "Show notes" button) -->
|
||||||
|
<div class="w-full h-fit relative hidden justify-start gap-3 items-center mt-5 overflow-hidden overflow-x-auto"
|
||||||
|
id="notesContainer">
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-yellow-200 p-5">
|
||||||
|
<p class="text-base text-slate-800">Send an Email to Salim.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-pink-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Contact the client.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-green-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Add daily report at the end of the day.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-blue-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Add daily report at the end of the day.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-purple-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Add daily report at the end of the day.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-[16.33%] h-[150px] shadow-xl bg-yellow-200 top-90 right-10 p-5">
|
||||||
|
<p class="text-base text-slate-80">Add daily report at the end of the day.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- USERS AND USERS ACTIVITY SECTION -->
|
||||||
|
<div class="w-full flex justify-between gap-[2.5%] px-10 pb-5">
|
||||||
|
<!-- LEFT SIDE / USERS SECTION -->
|
||||||
|
<div class="w-[74.5%]">
|
||||||
|
<div class="w-full h-fit bg-white rounded-md shadow-md p-5">
|
||||||
|
<h1 class="text-slate-800 text-[30px] font-semibold">Staff Positions</h1>
|
||||||
|
|
||||||
|
<!-- FILTERING -->
|
||||||
|
<div class="w-full py-4 px-3 bg-gray-200 rounded-md shadow-md mt-4 flex justify-between items-center">
|
||||||
|
<div class="flex justify-start items-center gap-5">
|
||||||
|
<div class="relative h-fit w-fit flex items-center">
|
||||||
|
<input type="text" placeholder="Enter Position"
|
||||||
|
class="py-2 px-3 border border-gray-300 rounded-md outline-none w-[300px] h-[40px] relative">
|
||||||
|
<button
|
||||||
|
class="text-gray-500 text-xl outline-none border-none cursor-pointer absolute right-2 bg-white">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button
|
||||||
|
class="w-fit text-base px-3 py-2 bg-blue-500 text-white outline-none border border-blue-500 rounded-md cursor-pointer hover:bg-white hover:text-blue-500 addStaffPositionButton"
|
||||||
|
data-modal-url="{% url 'addstaffposition' %}">Add
|
||||||
|
Staff Position</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5 w-full h-fit">
|
||||||
|
<div class="w-full border-x border-t border-gray-300 rounded-t-md ">
|
||||||
|
<!-- TABLE HEADER -->
|
||||||
|
<div
|
||||||
|
class="w-full flex justify-between items-center h-[60px] border-b border-gray-300 rounded-t-md">
|
||||||
|
<div class="w-[60%] h-full border-r border-gray-300 flex justify-center items-center">
|
||||||
|
<p class="text-slate-800">Position</p>
|
||||||
|
</div>
|
||||||
|
<div class="w-[40%] h-full flex justify-center items-center">
|
||||||
|
Actions
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- TABLE BODY -->
|
||||||
|
<div class="w-full">
|
||||||
|
<!-- 1st row -->
|
||||||
|
|
||||||
|
<div class="w-full h-[60px] flex justify-between items-center border-b border-gray-300">
|
||||||
|
<div class="w-[60%] h-full border-r border-gray-300 flex justify-center items-center">
|
||||||
|
<p class="text-gray-500">Developer</p>
|
||||||
|
</div>
|
||||||
|
<div class="w-[40%] h-full flex justify-center items-center gap-3">
|
||||||
|
<a>
|
||||||
|
<div class="text-[15px] text-blue-500 cursor-pointer">
|
||||||
|
<i class="fa fa-eye"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="{% url 'editstaffposition' %}">
|
||||||
|
<div class="text-[15px] text-blue-500 cursor-pointer">
|
||||||
|
<i class="fa fa-edit"></i>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="text-[15px] text-red-500 cursor-pointer">
|
||||||
|
<i class="fa fa-trash"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- RIGHT SIDE / USERS ACTIVITY -->
|
||||||
|
<div class="w-[23%] bg-white h-fit rounded-md shadow-md p-5">
|
||||||
|
<h1 class="text-2xl text-slate-700 text-center font-semibold">USERS ACTIVITY</h1>
|
||||||
|
<div class="w-full h-fit mt-2">
|
||||||
|
|
||||||
|
|
||||||
|
{% for latest in latest_statuses %}
|
||||||
|
<!-- 1ST ROW -->
|
||||||
|
<div class="w-full flex flex-col py-3">
|
||||||
|
<div class="w-full flex flex-col justify-center items-start gap-2">
|
||||||
|
<div class="w-full flex justify-between items-center gap-2">
|
||||||
|
<div class="flex justify-start gap-2">
|
||||||
|
<div class="w-[45px] h-[45px] rounded-full">
|
||||||
|
<img src='{{latest.staff.image.url}}' alt="user profile"
|
||||||
|
class="w-full h-full object-cover rounded-full">
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-col">
|
||||||
|
<h1 class="text-sm text-slate-700 font-semibold">{{latest.staff.first_name}}
|
||||||
|
{{latest.staff.last_name}}</h1>
|
||||||
|
<p class="text-sm text-gray-500">{{latest.time}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cursor-pointer">
|
||||||
|
<i class="fa fa-thumbs-up" style="color: rgb(184, 184, 184); font-size: 15px;"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Status -->
|
||||||
|
<div class="w-full">
|
||||||
|
<p class="text-sm text-gray-500">{{latest.text}}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Add comment section -->
|
||||||
|
<div class="w-full h-fit flex justify-between items-center border border-gray-200 mt-2 rounded-md">
|
||||||
|
<input type="text" placeholder="Add Comment..."
|
||||||
|
class="outline-none text-gray-500 p-2 w-[100%] text-sm h-[40px] rounded-tl-md rounded-bl-md">
|
||||||
|
<button class="w-fit px-3 py-2 bg-slate-800 rounded-tr-md rounded-br-md">
|
||||||
|
<i class="fa fa-send" style="color: white; font-size: 15px;"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- POPUP MODAL -->
|
||||||
|
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden" id="popUpModal">
|
||||||
|
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
|
||||||
|
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
|
||||||
|
id="closeModalButton">
|
||||||
|
<i class="fa fa-close"></i>
|
||||||
|
</button>
|
||||||
|
<iframe id="popupModalFrame" frameborder="0"></iframe>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!---------------------- JS SCRIPTS -------------------->
|
||||||
|
|
||||||
|
<!-- TO SHOW ALL THE ADDED NOTES BY THE USER WHEN CLICKING ON THE SHOW NOTES BUTTON -->
|
||||||
|
<script type="text/javascript" src='{% static "js/show-notes.js" %}'></script>
|
||||||
|
|
||||||
|
{% endblock content %}
|