New changes.
@ -0,0 +1,656 @@
|
||||
{% load static %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %} Osina {% endblock %}</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">
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body class="bg-gray-200 font-poppinsLight relative">
|
||||
<!-- THE POPUP THAT APPEARS WHEN THE USER GOES OFFLINE -->
|
||||
{% if user_offline %}
|
||||
<div class="w-full h-full inset-0 fixed bg-black bg-opacity-70 flex justify-center items-center p-5 z-20">
|
||||
<div class="w-full s:w-[400px] bg-white shadow-md rounded-md flex flex-col justify-between">
|
||||
<div class="w-full py-9 px-5 flex justify-center items-center text-center">
|
||||
<p class="text-secondosiblue text-[18px]">You are Currently Offline</p>
|
||||
</div>
|
||||
|
||||
<button
|
||||
class="w-full text-white bg-green-700 py-3 px-3 rounded-b-md hover:bg-opacity-60 duration-300 cursor-pointer">Go
|
||||
Online</button>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<div class="w-full flex">
|
||||
<!-- FIXED SIDE NAVBAR -->
|
||||
<div class="fixed h-screen w-[300px] bg-osiblue pt-9 flex flex-col justify-between flex-grow overflow-y-auto fixedSideHeader"
|
||||
id="fixedSideHeader">
|
||||
|
||||
<div>
|
||||
<a href="{% url 'home' %}">
|
||||
<div class="mb-10 w-full flex justify-center">
|
||||
<img src="{% static 'images/osinaw.png' %}" class="w-[180px]">
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="w-full px-3 relative">
|
||||
<input type="text"
|
||||
class="w-full bg-transparent border border-white border-opacity-10 py-2 px-3 text-white outline-none rounded-md"
|
||||
placeholder="Search...">
|
||||
<div class="inset-y-0 absolute right-5 flex justify-center items-center text-white">
|
||||
<i class="fa fa-search"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Menu Items -->
|
||||
<div
|
||||
class="w-full flex flex-col items-center px-5 h-[400px] xxlg1:h-[500px] overflow-hidden overflow-y-auto mt-5">
|
||||
|
||||
<!-- ACCOUNTS -->
|
||||
{% if user.is_superuser %}
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/users.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Accounts</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'customers' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Customers</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'businesses' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Businesses</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'users' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Staffs</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- MY WORK DROPDOWN -->
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/work.png' %}" class="w-[30px]">
|
||||
<p class="text-white">My Work</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'my-projects' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Projects</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'my-tasks' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">Tasks</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a>
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">Tickets</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'my-notes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">Notes</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'dailyreports' %}">
|
||||
<div class="w-full flex justify-start items-center gap-3 text-white py-2">
|
||||
<p class="text-white">Daily Reports</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- SUPPORT DROPDOWN -->
|
||||
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/support.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Support</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="fa fa-angle-down" style="font-size: 20px; color: white;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- BILLING DROPDOWN -->
|
||||
{% if user.is_superuser %}
|
||||
<div class="w-full">
|
||||
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/billing.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Billing</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- UTILITIES DROPDOWN -->
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/utilities.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Utilities</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'projecttypes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Project Types</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{% url 'staffpositions' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Staff Positions</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'businesstypes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Business Types</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'references' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">References</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'tags' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Tags</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a>
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Countries</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="w-full">
|
||||
<div class="w-full flex justify-start items-center gap-3 border-b border-slate-600 py-3">
|
||||
<img src="{% static 'images/icons/activity.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Activity</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
<div
|
||||
class="w-full xlg1:w-[300px] h-fit bg-secondosiblue flex flex-col items-center absolute xlg1:fixed justify-center gap-2 py-2 bottom-0 inset-x-0 mt-[100px]">
|
||||
<div class="w-full flex flex-col justify-center gap-1 items-center">
|
||||
<div class="flex justify-center items-center gap-1">
|
||||
<img src="{% static 'images/banner-logo.png' %}" alt="Ositcom Logo" class="w-[30px] h-[25px]">
|
||||
<p class="text-gray-200 font-light text-xs">Powered By OSITCOM</p>
|
||||
</div>
|
||||
<p class="text-gray-200 font-light text-xs">Copyrights © 2024 All Rights Reserved</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- MOBILE FIXED SIDE BAR -->
|
||||
<div class="w-full h-[100vh] absolute bg-black bg-opacity-40 z-50 mt-[80px] mobileFixedSideHeader hidden">
|
||||
<div class="w-[70%] h-full bg-osiblue flex flex-col gap-3 relative">
|
||||
<div class="w-full">
|
||||
<!-- USER PROFILE -->
|
||||
<div class="w-full flex justify-start items-center gap-2 cursor-pointer border border-white border-opacity-10 py-2 px-3 duration-300 bg-secondosiblue"
|
||||
id="mobileUserProfile">
|
||||
<div>
|
||||
<div class="w-[35px] h-[35px] rounded-full shadow-md">
|
||||
<img src='{{request.user.staffprofile.image.url}}' alt="user-image"
|
||||
class="w-full h-full object-cover rounded-full">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full flex justify-between items-center gap-2 text-white py-3">
|
||||
<p>{{request.user.first_name}} {{request.user.last_name}}</p>
|
||||
<i class="fa fa-angle-down"></i>
|
||||
<i class="fa fa-angle-up" style="display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- USER PROFILE DROPDOWN -->
|
||||
<div class="w-full h-fit bg-secondosiblue px-5 flex flex-col hidden" id="mobileUserProfileDropdown">
|
||||
<a href="{% url 'signout' %}" class="w-full">
|
||||
<div class="w-full py-3 flex items-center gap-2 text-white text-[16px]">
|
||||
<img src="{% static 'images/icons/logout.png' %}" class="w-[22px]">
|
||||
<p>Logout</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- MOBILE MENU ITEMS -->
|
||||
<div class="w-full flex flex-col items-center px-3 h-[400px] overflow-hidden overflow-y-auto">
|
||||
<!-- CUSTOMERS -->
|
||||
{% if user.is_superuser %}
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/users.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Accounts</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'customers' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Customers</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'businesses' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Businesses</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'users' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Staffs</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- MY WORK DROPDOWN -->
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/work.png' %}" class="w-[28px]">
|
||||
<p class="text-white">My Work</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'my-projects' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">My Projects</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'my-tasks' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">My Tasks</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a>
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">My Tickets</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'my-notes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">My Notes</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'dailyreports' %}">
|
||||
<div class="w-full flex justify-start items-center gap-3 text-white py-2">
|
||||
<p class="text-white">Daily Reports</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/support.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Support</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up" style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
<div class="w-full">
|
||||
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/billing.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Billing</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
|
||||
<!-- UTILITIES -->
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/utilities.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Utilities</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'projecttypes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Project Types</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{% url 'staffpositions' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Staff Positions</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'businesstypes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Business Types</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'references' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">References</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'tags' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Tags</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a>
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Countries</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="w-full">
|
||||
<div class="w-full flex justify-start items-center gap-3 border-b border-slate-600 py-3">
|
||||
<img src="{% static 'images/icons/activity.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Activity</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- SCROLL PART -->
|
||||
<div class="flex-1 ml-[300px] h-fit bg-gray-200" id="scrollPart">
|
||||
<!-- TOP HEADER -->
|
||||
<div
|
||||
class="w-full h-[100px] bg-white shadow-md px-5 s:px-9 py-5 flex justify-between items-center topHeader">
|
||||
<div class="w-fit flex justify-center items-center gap-10">
|
||||
<div class="w-fit flex flex-col gap-2 cursor-pointer" id="burgerMenuButton">
|
||||
<div class="burgerMenuLine w-[25px] h-[2px] bg-osiblue duration-300"></div>
|
||||
<div class="burgerMenuLine w-[25px] h-[2px] bg-osiblue duration-300"></div>
|
||||
<div class="burgerMenuLine w-[25px] h-[2px] bg-osiblue duration-300"></div>
|
||||
</div>
|
||||
|
||||
<div class="hidden xxlg1:flex justify-start items-center gap-5">
|
||||
<div id="statusContainer">
|
||||
{% include 'recent-status.html' %}
|
||||
</div>
|
||||
<button
|
||||
class="w-[30px] h-[30px] rounded-full p-2 bg-gray-300 text-white text-[16px] outline-none border-none cursor-pointer flex justify-center items-center shadow-md addStatusButton hover:bg-osiblue duration-300"
|
||||
data-modal-url="{% url 'addstatusmodal' %}">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
<div class="w-fit flex justify-between items-center gap-2 cursor-pointer hover:bg-gray-50 rounded-md hover:p-2 duration-300"
|
||||
id="userProfile">
|
||||
<div>
|
||||
<div class="w-[40px] s:w-[45px] h-[40px] s:h-[45px] rounded-full shadow-md">
|
||||
<img src='{{request.user.staffprofile.image.url}}' alt="user-image"
|
||||
class="w-full h-full object-cover rounded-full">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center items-center gap-2 text-gray-500">
|
||||
<p>{{request.user.first_name}} {{request.user.last_name}}</p>
|
||||
<i class="fa fa-angle-down" id="arrowDown"></i>
|
||||
<i class="fa fa-angle-up" style="display: none;" id="arrowUp"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- USER PROFILE DROPDOWN -->
|
||||
<div class="w-[250px] h-fit bg-osiblue bg-opacity-70 rounded-md shadow-md px-3 absolute right-0 mt-3 flex flex-col"
|
||||
style="display: none;" id="userProfileDropdown">
|
||||
<a href="{% url 'signout' %}" class="w-full">
|
||||
<div
|
||||
class="w-full py-3 flex items-center gap-2 text-white hover:text-osiblue duration-300 cursor-pointer">
|
||||
<img src="{% static 'images/icons/logout.png' %}" class="w-[22px]">
|
||||
<p>Logout</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- MOBILE TOP HEADER -->
|
||||
<div
|
||||
class="w-full h-[80px] bg-osiblue shadow-md px-5 s:px-9 py-5 flex xlg1:hidden justify-between items-center mobileTopHeader">
|
||||
<a href="{% url 'home' %}">
|
||||
<img src="{% static 'images/osinaw.png' %}" class="w-[130px] h-auto">
|
||||
</a>
|
||||
|
||||
<div class="w-fit flex flex-col gap-2 cursor-pointer" id="mobileBurgerMenuButton">
|
||||
<div class="w-[25px] h-[2px] bg-white duration-300"></div>
|
||||
<div class="w-[25px] h-[2px] bg-white duration-300"></div>
|
||||
<div class="w-[25px] h-[2px] bg-white duration-300"></div>
|
||||
</div>
|
||||
|
||||
<div class="w-fit cursor-pointer hidden" id="mobileCloseMenuButton">
|
||||
<img src="{% static 'images/closeicon.png' %}" class="w-[25px]">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- MODULES SECTION -->
|
||||
<div class="w-full h-fit grid grid-cols-1 xxlg1:grid-cols-3 gap-5 px-5 s:px-9 py-5">
|
||||
<div class="h-[150px] bg-white shadow-md rounded-md block xxlg1:hidden">
|
||||
<div
|
||||
class=" bg-osiblue rounded-t-md flex justify-between items-center text-white text-[22px] font-bold h-[50px]">
|
||||
<div class="px-3">
|
||||
<p>Recent Status</p>
|
||||
</div>
|
||||
|
||||
<button
|
||||
class="h-full rounded-tr-md px-4 bg-gray-300 text-secondosiblue text-[18px] outline-none border-none cursor-pointer flex justify-center items-center shadow-md addStatusButtonMobile"
|
||||
data-modal-url="{% url 'statusmobilemodal' %}">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div id="statusContainer" class="w-full h-fit p-5">
|
||||
{% include 'recent-status.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow-md rounded-md p-5">
|
||||
<div class="w-full h-full flex flex-col justify-between items-center">
|
||||
<div class="w-full flex justify-between items-center">
|
||||
<p class="text-[22px] text-secondosiblue font-bold uppercase">Tasks</p>
|
||||
<img src="{% static 'images/icons/tasks.png' %}" class="w-[50px]">
|
||||
</div>
|
||||
<div
|
||||
class="w-[60px] h-[60px] bg-white border-2 rounded-full border-secondosiblue flex justify-center items-center">
|
||||
<p class="text-secondosiblue text-xl font-semibold">{{total_tasks}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow-md rounded-md p-5">
|
||||
<div class="w-full h-full flex flex-col justify-between items-center">
|
||||
<div class="w-full flex justify-between items-center">
|
||||
<p class="text-[22px] text-secondosiblue font-bold uppercase">Projects</p>
|
||||
<img src="{% static 'images/icons/projects.png' %}" class="w-[50px]">
|
||||
</div>
|
||||
<div
|
||||
class="w-[60px] h-[60px] bg-white border-2 rounded-full border-secondosiblue flex justify-center items-center">
|
||||
<p class="text-secondosiblue text-xl font-semibold">2</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white shadow-md rounded-md p-5">
|
||||
<div class="w-full h-full flex flex-col justify-between items-center">
|
||||
<div class="w-full flex justify-between items-center">
|
||||
<p class="text-[22px] text-secondosiblue font-bold uppercase">Tickets</p>
|
||||
<img src="{% static 'images/icons/tickets.png' %}" class="w-[50px]">
|
||||
</div>
|
||||
<div
|
||||
class="w-[60px] h-[60px] bg-white border-2 rounded-full border-secondosiblue flex justify-center items-center">
|
||||
<p class="text-secondosiblue text-xl font-semibold">2</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% block content %}
|
||||
replace me
|
||||
{% endblock content %}
|
||||
|
||||
|
||||
<!-- MOBILE FOOTER -->
|
||||
<div class="w-full bg-osiblue h-fit py-2 mobileFooter">
|
||||
<div class="w-full flex flex-col justify-center items-center gap-1">
|
||||
<div class="flex justify-center items-center gap-2">
|
||||
<img src="{% static 'images/banner-logo.png' %}" alt="Ositcom Logo" class="w-[30px] h-[25px]">
|
||||
<p class="text-gray-200 font-light text-xs">Powered By OSITCOM</p>
|
||||
</div>
|
||||
<p class="text-gray-200 font-light text-xs">Copyrights © 2024 All Rights Reserved</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!---------------------- JS SCRIPTS -------------------->
|
||||
<!-- SIDE BAR SCRIPT -->
|
||||
<script type="text/javascript" src='{% static "js/side-bar.js" %}'></script>
|
||||
|
||||
<!-- TO SWITCH BETWEEN STATUSES FROM ONLINE TO OFFLINE -->
|
||||
<script type="text/javascript" src='{% static "js/switch-status.js" %}'></script>
|
||||
|
||||
<!-- TO RELOAD THE STATUS CONTAINER -->
|
||||
<script type="text/javascript" src='{% static "js/get-updated-last-status.js" %}'></script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1,604 @@
|
||||
{% load static %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %} Osina {% endblock %}</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">
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<!-- THE POPUP THAT APPEARS WHEN THE USER GOES OFFLINE -->
|
||||
{% if user_offline %}
|
||||
<div class="w-full h-full inset-0 fixed bg-black bg-opacity-70 flex justify-center items-center p-5 z-20">
|
||||
<div class="w-full s:w-[400px] bg-white shadow-md rounded-md flex flex-col justify-between">
|
||||
<div class="w-full py-9 px-5 flex justify-center items-center text-center">
|
||||
<p class="text-secondosiblue text-[18px]">You are Currently Offline</p>
|
||||
</div>
|
||||
|
||||
<button
|
||||
class="w-full text-white bg-green-700 py-3 px-3 rounded-b-md hover:bg-opacity-60 duration-300 cursor-pointer">Go
|
||||
Online</button>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
<div class="w-full flex">
|
||||
<!-- FIXED SIDE NAVBAR -->
|
||||
<div class="fixed h-screen w-[300px] bg-osiblue pt-9 flex flex-col justify-between flex-grow overflow-y-auto fixedSideHeader"
|
||||
id="fixedSideHeader">
|
||||
|
||||
<div>
|
||||
<a href="{% url 'home' %}">
|
||||
<div class="mb-10 w-full flex justify-center">
|
||||
<img src="{% static 'images/osinaw.png' %}" class="w-[180px]">
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="w-full px-3 relative">
|
||||
<input type="text"
|
||||
class="w-full bg-transparent border border-white border-opacity-10 py-2 px-3 text-white outline-none rounded-md"
|
||||
placeholder="Search...">
|
||||
<div class="inset-y-0 absolute right-5 flex justify-center items-center text-white">
|
||||
<i class="fa fa-search"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Menu Items -->
|
||||
<div
|
||||
class="w-full flex flex-col items-center px-5 h-[400px] xxlg1:h-[500px] overflow-hidden overflow-y-auto mt-5">
|
||||
|
||||
<!-- ACCOUNTS -->
|
||||
{% if user.is_superuser %}
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/users.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Accounts</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'customers' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Customers</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'businesses' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Businesses</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'users' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Staffs</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- MY WORK DROPDOWN -->
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/work.png' %}" class="w-[30px]">
|
||||
<p class="text-white">My Work</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'my-projects' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Projects</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'my-tasks' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">Tasks</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a>
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">Tickets</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'my-notes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">Notes</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'dailyreports' %}">
|
||||
<div class="w-full flex justify-start items-center gap-3 text-white py-2">
|
||||
<p class="text-white">Daily Reports</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- SUPPORT DROPDOWN -->
|
||||
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/support.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Support</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="fa fa-angle-down" style="font-size: 20px; color: white;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- BILLING DROPDOWN -->
|
||||
{% if user.is_superuser %}
|
||||
<div class="w-full">
|
||||
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/billing.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Billing</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- UTILITIES DROPDOWN -->
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/utilities.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Utilities</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'projecttypes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Project Types</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{% url 'staffpositions' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Staff Positions</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'businesstypes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Business Types</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'references' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">References</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'tags' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Tags</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a>
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Countries</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="w-full">
|
||||
<div class="w-full flex justify-start items-center gap-3 border-b border-slate-600 py-3">
|
||||
<img src="{% static 'images/icons/activity.png' %}" class="w-[30px]">
|
||||
<p class="text-white">Activity</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
<div
|
||||
class="w-full xlg1:w-[300px] h-fit bg-secondosiblue flex flex-col items-center absolute xlg1:fixed justify-center gap-2 py-2 bottom-0 inset-x-0 mt-[100px]">
|
||||
<div class="w-full flex flex-col justify-center gap-1 items-center">
|
||||
<div class="flex justify-center items-center gap-1">
|
||||
<img src="{% static 'images/banner-logo.png' %}" alt="Ositcom Logo" class="w-[30px] h-[25px]">
|
||||
<p class="text-gray-200 font-light text-xs">Powered By OSITCOM</p>
|
||||
</div>
|
||||
<p class="text-gray-200 font-light text-xs">Copyrights © 2024 All Rights Reserved</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- MOBILE FIXED SIDE BAR -->
|
||||
<div class="w-full h-[100vh] absolute bg-black bg-opacity-40 z-50 mt-[80px] mobileFixedSideHeader hidden">
|
||||
<div class="w-[70%] h-full bg-osiblue flex flex-col gap-3 relative">
|
||||
<div class="w-full">
|
||||
<!-- USER PROFILE -->
|
||||
<div class="w-full flex justify-start items-center gap-2 cursor-pointer border border-white border-opacity-10 py-2 px-3 duration-300 bg-secondosiblue"
|
||||
id="mobileUserProfile">
|
||||
<div>
|
||||
<div class="w-[35px] h-[35px] rounded-full shadow-md">
|
||||
<img src='{{request.user.staffprofile.image.url}}' alt="user-image"
|
||||
class="w-full h-full object-cover rounded-full">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full flex justify-between items-center gap-2 text-white py-3">
|
||||
<p>{{request.user.first_name}} {{request.user.last_name}}</p>
|
||||
<i class="fa fa-angle-down"></i>
|
||||
<i class="fa fa-angle-up" style="display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- USER PROFILE DROPDOWN -->
|
||||
<div class="w-full h-fit bg-secondosiblue px-5 flex flex-col hidden" id="mobileUserProfileDropdown">
|
||||
<a href="{% url 'signout' %}" class="w-full">
|
||||
<div class="w-full py-3 flex items-center gap-2 text-white text-[16px]">
|
||||
<img src="{% static 'images/icons/logout.png' %}" class="w-[22px]">
|
||||
<p>Logout</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- MOBILE MENU ITEMS -->
|
||||
<div class="w-full flex flex-col items-center px-3 h-[400px] overflow-hidden overflow-y-auto">
|
||||
<!-- CUSTOMERS -->
|
||||
{% if user.is_superuser %}
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/users.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Accounts</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'customers' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Customers</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'businesses' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Businesses</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'users' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Staffs</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- MY WORK DROPDOWN -->
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/work.png' %}" class="w-[28px]">
|
||||
<p class="text-white">My Work</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'my-projects' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">My Projects</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'my-tasks' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">My Tasks</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a>
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">My Tickets</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'my-notes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2">
|
||||
<p class="text-white">My Notes</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'dailyreports' %}">
|
||||
<div class="w-full flex justify-start items-center gap-3 text-white py-2">
|
||||
<p class="text-white">Daily Reports</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/support.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Support</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up" style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if user.is_superuser %}
|
||||
<div class="w-full">
|
||||
<div class="w-full flex justify-between items-center border-b border-slate-600 py-3">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/billing.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Billing</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
|
||||
<!-- UTILITIES -->
|
||||
<div class="w-full menu-container">
|
||||
<div
|
||||
class="menuItem w-full flex justify-between items-center border-b border-slate-600 py-3 cursor-pointer">
|
||||
<div class="w-full flex justify-start items-center gap-3">
|
||||
<img src="{% static 'images/icons/utilities.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Utilities</p>
|
||||
</div>
|
||||
<div>
|
||||
<i class="angleDown fa fa-angle-down" style="font-size: 18px; color: white;"></i>
|
||||
<i class="angleUp fa fa-angle-up"
|
||||
style="font-size: 18px; color: white; display: none;"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menuDropdownItems w-full h-fit p-3 hidden duration-300">
|
||||
<a href="{% url 'projecttypes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Project Types</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<a href="{% url 'staffpositions' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Staff Positions</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'businesstypes' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Business Types</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'references' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">References</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'tags' %}">
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Tags</p>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a>
|
||||
<div
|
||||
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
|
||||
<p class="text-white">Countries</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a class="w-full">
|
||||
<div class="w-full flex justify-start items-center gap-3 border-b border-slate-600 py-3">
|
||||
<img src="{% static 'images/icons/activity.png' %}" class="w-[28px]">
|
||||
<p class="text-white">Activity</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- SCROLL PART -->
|
||||
<div class="flex-1 ml-[300px] h-fit" id="scrollPart">
|
||||
<!-- TOP HEADER -->
|
||||
<div
|
||||
class="w-full h-[100px] bg-white shadow-md px-5 s:px-9 py-5 flex justify-between items-center topHeader">
|
||||
<div class="w-fit flex justify-center items-center gap-10">
|
||||
<div class="w-fit flex flex-col gap-2 cursor-pointer" id="burgerMenuButton">
|
||||
<div class="burgerMenuLine w-[25px] h-[2px] bg-osiblue duration-300"></div>
|
||||
<div class="burgerMenuLine w-[25px] h-[2px] bg-osiblue duration-300"></div>
|
||||
<div class="burgerMenuLine w-[25px] h-[2px] bg-osiblue duration-300"></div>
|
||||
</div>
|
||||
|
||||
<div class="hidden xxlg1:flex justify-start items-center gap-5">
|
||||
<div id="statusContainer">
|
||||
{% include 'recent-status.html' %}
|
||||
</div>
|
||||
<button
|
||||
class="w-[30px] h-[30px] rounded-full p-2 bg-gray-300 text-white text-[16px] outline-none border-none cursor-pointer flex justify-center items-center shadow-md addStatusButton hover:bg-osiblue duration-300"
|
||||
data-modal-url="{% url 'addstatusmodal' %}">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="relative">
|
||||
<div class="w-fit flex justify-between items-center gap-2 cursor-pointer hover:bg-gray-50 rounded-md hover:p-2 duration-300"
|
||||
id="userProfile">
|
||||
<div>
|
||||
<div class="w-[40px] s:w-[45px] h-[40px] s:h-[45px] rounded-full shadow-md">
|
||||
<img src='{{request.user.staffprofile.image.url}}' alt="user-image"
|
||||
class="w-full h-full object-cover rounded-full">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center items-center gap-2 text-gray-500">
|
||||
<p>{{request.user.first_name}} {{request.user.last_name}}</p>
|
||||
<i class="fa fa-angle-down" id="arrowDown"></i>
|
||||
<i class="fa fa-angle-up" style="display: none;" id="arrowUp"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- USER PROFILE DROPDOWN -->
|
||||
<div class="w-[250px] h-fit bg-osiblue bg-opacity-70 rounded-md shadow-md px-3 absolute right-0 mt-3 flex flex-col"
|
||||
style="display: none;" id="userProfileDropdown">
|
||||
<a href="{% url 'signout' %}" class="w-full">
|
||||
<div
|
||||
class="w-full py-3 flex items-center gap-2 text-white hover:text-osiblue duration-300 cursor-pointer">
|
||||
<img src="{% static 'images/icons/logout.png' %}" class="w-[22px]">
|
||||
<p>Logout</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- MOBILE TOP HEADER -->
|
||||
<div
|
||||
class="w-full h-[80px] bg-osiblue shadow-md px-5 s:px-9 py-5 flex xlg1:hidden justify-between items-center mobileTopHeader">
|
||||
<a href="{% url 'home' %}">
|
||||
<img src="{% static 'images/osinaw.png' %}" class="w-[130px] h-auto">
|
||||
</a>
|
||||
|
||||
<div class="w-fit flex flex-col gap-2 cursor-pointer" id="mobileBurgerMenuButton">
|
||||
<div class="w-[25px] h-[2px] bg-white duration-300"></div>
|
||||
<div class="w-[25px] h-[2px] bg-white duration-300"></div>
|
||||
<div class="w-[25px] h-[2px] bg-white duration-300"></div>
|
||||
</div>
|
||||
|
||||
<div class="w-fit cursor-pointer hidden" id="mobileCloseMenuButton">
|
||||
<img src="{% static 'images/closeicon.png' %}" class="w-[25px]">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- RECENT ACTIVITIES -->
|
||||
<div class="w-full h-fit px-3 py-5" id="activitiesContainer">
|
||||
<div class="w-full">
|
||||
{% include 'recent-activities.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- MOBILE FOOTER -->
|
||||
<div class="w-full bg-osiblue h-fit py-2 mobileFooter absolute bottom-0">
|
||||
<div class="w-full flex flex-col justify-center items-center gap-1">
|
||||
<div class="flex justify-center items-center gap-2">
|
||||
<img src="{% static 'images/banner-logo.png' %}" alt="Ositcom Logo" class="w-[30px] h-[25px]">
|
||||
<p class="text-gray-200 font-light text-xs">Powered By OSITCOM</p>
|
||||
</div>
|
||||
<p class="text-gray-200 font-light text-xs">Copyrights © 2024 All Rights Reserved</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!---------------------- JS SCRIPTS -------------------->
|
||||
<!-- SIDE BAR SCRIPT -->
|
||||
<script type="text/javascript" src='{% static "js/side-bar.js" %}'></script>
|
||||
|
||||
<!-- TO SWITCH BETWEEN STATUSES FROM ONLINE TO OFFLINE -->
|
||||
<script type="text/javascript" src='{% static "js/switch-status.js" %}'></script>
|
||||
|
||||
<!-- TO OPEN EMOJI PICKER TO ADD REACTIONS -->
|
||||
<script type="text/javascript" src='{% static "js/emoji-picker.js" %}'></script>
|
||||
|
||||
<!-- TO RELOAD THE USERS ACTIVITY CONTAINER -->
|
||||
<script type="text/javascript" src='{% static "js/get-updated-user-activity.js" %}'></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,17 +1,24 @@
|
||||
{% load static %}
|
||||
|
||||
<div>
|
||||
<p class="text-sm text-gray-500 truncate max-w-xl">Recent Status: <span
|
||||
class="text-slate-700 font-semibold">{{last_status.text}}</span></p>
|
||||
<p class="text-sm text-gray-500">Last update:
|
||||
{% if last_status.date == current_date %}
|
||||
Today | {{last_status.time}},
|
||||
{% if minutes_ago == 0 %}
|
||||
Just Now
|
||||
{%else%}
|
||||
{{hours_minutes_ago}}
|
||||
{%endif%}
|
||||
{% else %}
|
||||
{{last_status.date}} | {{last_status.time}}
|
||||
{%endif %}</p>
|
||||
</div>
|
||||
<p class="text-sm text-gray-500 truncate max-w-xl">Recent Status:
|
||||
<span class="text-slate-700 font-semibold">{{last_status.text}}</span>
|
||||
</p>
|
||||
<p class="text-sm text-gray-500">Last update:
|
||||
{% if last_status.date == current_date %}
|
||||
Today | {{last_status.time}},
|
||||
{% if minutes_ago == 0 %}
|
||||
Just Now
|
||||
{%else%}
|
||||
{{hours_minutes_ago}}
|
||||
{%endif%}
|
||||
{% else %}
|
||||
{{last_status.date}} | {{last_status.time}}
|
||||
{%endif %}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!---------------------- JS SCRIPTS -------------------->
|
||||
|
||||
<!-- TO RELOAD THE STATUS CONTAINER -->
|
||||
<script type="text/javascript" src='{% static "js/get-updated-last-status.js" %}'></script>
|
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1009 B |
After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 1.5 KiB |
@ -0,0 +1,38 @@
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
// To open and close the emoji picker
|
||||
const emojiPicker = document.getElementById('emojiPicker');
|
||||
const closeEmojiPicker = document.getElementById('closeEmojiPicker');
|
||||
const emojiPickerContainer = document.getElementById('emojiPickerContainer');
|
||||
|
||||
emojiPicker.addEventListener('click', function () {
|
||||
emojiPickerContainer.classList.remove('hidden');
|
||||
});
|
||||
|
||||
closeEmojiPicker.addEventListener('click', function () {
|
||||
emojiPickerContainer.classList.add('hidden');
|
||||
});
|
||||
|
||||
|
||||
// To navigate between categories
|
||||
const categories = document.querySelectorAll('.emoji-category');
|
||||
const categoryContainers = document.querySelectorAll('.emoji-category-container');
|
||||
|
||||
categories.forEach(category => {
|
||||
category.addEventListener('click', function () {
|
||||
const selectedCategory = category.dataset.category;
|
||||
toggleCategory(selectedCategory);
|
||||
categories.forEach(cat => {
|
||||
cat.classList.toggle('selectedEmojiCategory', cat === category);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function toggleCategory(category) {
|
||||
categoryContainers.forEach(container => {
|
||||
const containerId = container.getAttribute('id');
|
||||
container.classList.toggle('hidden', containerId !== `${category}Container`);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -0,0 +1,17 @@
|
||||
// TO SWITCH BETWEEN STATUSES FROM ONLINE TO OFFLINE
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
document.getElementById('go-online-btn').addEventListener('click', function () {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', "{% url 'go_online' %}", true);
|
||||
xhr.onload = function () {
|
||||
if (xhr.status === 200) {
|
||||
// If the request is successful, reload the top window
|
||||
window.top.location.reload();
|
||||
} else {
|
||||
console.log("You are still offline.")
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
});
|
||||
});
|