New changes.
parent
29d7a73520
commit
7994b1d8bd
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,18 @@
|
|||||||
|
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);
|
||||||
|
});
|
@ -0,0 +1,33 @@
|
|||||||
|
// 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
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
});
|
@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
// WHEN THE USER CHOOSE A FILE THE NAME OF THE FILE WILL APPEAR IN THE SPAN
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const fileInputs = document.querySelectorAll('.file-input');
|
||||||
|
|
||||||
|
fileInputs.forEach(fileInput => {
|
||||||
|
const fileNameSpan = fileInput.parentElement.querySelector('.file-name');
|
||||||
|
const fileLabel = fileInput.parentElement.querySelector('.file-label');
|
||||||
|
|
||||||
|
// Event listener to the label "file-label", which triggers a click on the hidden file input "file-input"
|
||||||
|
fileLabel.addEventListener('click', () => {
|
||||||
|
fileInput.click();
|
||||||
|
});
|
||||||
|
|
||||||
|
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)';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,135 @@
|
|||||||
|
{% extends "main.html" %}
|
||||||
|
{%load static%}
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<!-- THIS TASK BELONGS TO A USER STORY ADDED FROM PROJECT DETAILS PAGE -->
|
||||||
|
|
||||||
|
<div class="w-full px-5 s:px-9 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 Task
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<div class="w-full flex flex-col gap-5 justify-center items-center mt-5">
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500 text-base">Name:</label>
|
||||||
|
<input type="text" placeholder="Name"
|
||||||
|
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md mt-1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500 text-base">User Story:</label>
|
||||||
|
<select 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="" selected>Predifined</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500 text-base">Epic:</label>
|
||||||
|
<select 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="" selected>Select Epic</option>
|
||||||
|
<option value="">Epic 1</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500 text-base">Project:</label>
|
||||||
|
<select 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="" selected>Predifined</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500 text-base">Status:</label>
|
||||||
|
<select 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="">Open</option>
|
||||||
|
<option value="">Working On</option>
|
||||||
|
<option value="">Closed</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500 text-base">Assigned To:</label>
|
||||||
|
<select required 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="">Nataly</option>
|
||||||
|
<option value="">Salim</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500 text-base">Task Description:</label>
|
||||||
|
<textarea type="text" placeholder="Description..." rows="5" cols="5"
|
||||||
|
class="w-full py-3 px-3 border border-gray-300 outline-none rounded-md resize-none mt-1"></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">Extra:</label>
|
||||||
|
<select 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="" selected>No</option>
|
||||||
|
<option value="">Yes</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full">
|
||||||
|
<label class="text-gray-500">Start Date:</label>
|
||||||
|
<input 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 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">Documents:</label>
|
||||||
|
<div class="inbox-box border border-gray-300 w-full rounded-md px-3 mt-1">
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
<input name="" required type="file" class="file-input" accept=".pdf,.docx" hidden multiple />
|
||||||
|
<span class="file-name text-gray-500 text-base focus:outline-none outline-none">Upload
|
||||||
|
Document(s)</span>
|
||||||
|
<label
|
||||||
|
class="file-label bg-transparent text-gray-500 border border-white h-14 cursor-pointer flex items-center">
|
||||||
|
<i class="fa fa-upload" style="font-size: 25px;"></i>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="w-full flex justify-center items-center mt-3">
|
||||||
|
<button
|
||||||
|
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
|
||||||
|
Task</button>
|
||||||
|
</div>
|
||||||
|
</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>
|
||||||
|
|
||||||
|
<!-------------- JS SCRIPTS --------------->
|
||||||
|
<script type="text/javascript" src='{% static "js/upload-input-tag.js" %}'></script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
Loading…
Reference in New Issue