You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
7.1 KiB
HTML
144 lines
7.1 KiB
HTML
{% 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">
|
|
Create 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"
|
|
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="" selected disabled>Clients</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="" selected disabled>Project Manager</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="" selected disabled>Member(s)</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="" selected disabled>Status</option>
|
|
<option value="Pending">Pending</option>
|
|
<option value="Active">Active</option>
|
|
<option value="Completed">Completed</option>
|
|
<option value="Cancelled">Cancelled</option>
|
|
</select>
|
|
|
|
<select required name="project_type" id=""
|
|
class="w-full h-[100px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500"
|
|
multiple>
|
|
<option value="" selected disabled>Project Type</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"></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"
|
|
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"
|
|
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"
|
|
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">Add
|
|
Project</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 %} |