Compare commits

...

5 Commits

Author SHA1 Message Date
Gregory Trullemans 981c82992d [WIP] refactoring for tailwindcss 2023-12-03 17:46:48 +01:00
Gregory Trullemans 13325937cf Update list files 2023-11-19 06:57:05 +01:00
Gregory Trullemans a197312515 Update login page background color 2023-11-14 20:41:02 +01:00
Gregory Trullemans c298f64db2 Update login page 2023-11-14 20:25:32 +01:00
Gregory Trullemans 67f700780d Login page transition 2023-11-14 20:23:45 +01:00
30 changed files with 4787 additions and 596 deletions

View File

@ -4,361 +4,246 @@
{% load has_group %}
<!DOCTYPE html>
<html>
<html lang="en" class="dark [--scroll-mt:9.875rem] lg:[--scroll-mt:6.3125rem]">
<head>
<meta charset="UTF-8">
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="author" content="Gregory Trullemans">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="apple-touch-icon" sizes="76x76" href="{% static "img/apple-icon.png" %}">
<link rel="icon" type="image/png" href="{% static "img/favicon.png" %}">
<title>• {% block page_title %}Jarvis{% endblock %} •</title>
<!-- Fonts and icons -->
<link href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,600,700,800" rel="stylesheet" />
<meta charSet="utf-8"/>
<meta name="viewport" content="width=device-width"/>
<meta name="description" content="Utilities for controlling how a replaced element&#x27;s content should be resized."/>
<meta property="og:description" content="Utilities for controlling how a replaced element&#x27;s content should be resized."/>
<meta name="twitter:description" content="Utilities for controlling how a replaced element&#x27;s content should be resized."/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:site" content="@tailwindcss"/>
<meta name="twitter:image" content="https://tailwindcss.com/api/og?path=/docs/object-fit"/>
<meta name="twitter:creator" content="@tailwindcss"/>
<meta property="og:url" content="https://tailwindcss.com/docs/object-fit"/>
<meta property="og:type" content="article"/>
<meta property="og:image" content="https://tailwindcss.com/api/og?path=/docs/object-fit"/>
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="/feeds/feed.xml"/>
<link rel="alternate" type="application/atom+xml" title="Atom 1.0" href="/feeds/atom.xml"/>
<link rel="alternate" type="application/json" title="JSON Feed" href="/feeds/feed.json"/>
<link rel="preconnect" href="https://KNPXZI5B0M-dsn.algolia.net" crossorigin="true"/>
<title>Object Fit - Tailwind CSS</title>
<meta name="twitter:title" content="Object Fit - Tailwind CSS"/>
<meta property="og:title" content="Object Fit - Tailwind CSS"/>
<meta name="next-head-count" content="19"/>
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png?v=3"/>
<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png?v=3"/>
<link rel="icon" type="image/png" sizes="16x16" href="/favicons/favicon-16x16.png?v=3"/>
<link rel="manifest" href="/favicons/site.webmanifest?v=3"/>
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg?v=3" color="#38bdf8"/>
<link rel="shortcut icon" href="/favicons/favicon.ico?v=3"/>
<meta name="apple-mobile-web-app-title" content="Tailwind CSS"/>
<meta name="application-name" content="Tailwind CSS"/>
<meta name="msapplication-TileColor" content="#38bdf8"/>
<meta name="msapplication-config" content="/favicons/browserconfig.xml?v=3"/>
<meta name="theme-color" content="#f8fafc"/>
<script>
try {
if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
document.documentElement.classList.add('dark')
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0B1120')
} else {
document.documentElement.classList.remove('dark')
}
} catch (_) {}
</script>
<link href="{% static 'css/app.css' %}" rel="stylesheet">
<link data-next-font="size-adjust" rel="preconnect" href="/" crossorigin="anonymous"/>
<link rel="preload" href="/_next/static/css/a047d627638f9b33.css" as="style"/>
<link rel="stylesheet" href="/_next/static/css/a047d627638f9b33.css" data-n-g=""/>
<!-- Font Awesome Pro -->
<link href="{% static "css/font_awesome_all_5.15.3.css" %}" rel="stylesheet" />
<!-- Full Calendar Plugin, full documentation here: https://github.com/fullcalendar/fullcalendar -->
<link href="{% static "js/plugins/fullcalendar/main.min.css" %}" rel="stylesheet" />
<!-- JQuery UI CSS -->
<link href="{% static "js/plugins/jqueryui/jquery-ui.theme.min.css" %}" rel="stylesheet" />
<link href="{% static "js/plugins/jqueryui/jquery-ui.min.css" %}" rel="stylesheet" />
<!-- Nucleo Icons -->
<link href="{% static "css/nucleo-icons.css" %}" rel="stylesheet" />
<!-- CSS Files -->
<link href="{% static "css/black-dashboard.css" %}" rel="stylesheet" />
<!-- Maps by mapbox -->
<script src='https://api.mapbox.com/mapbox.js/v3.2.0/mapbox.js'></script>
<link href='https://api.mapbox.com/mapbox.js/v3.2.0/mapbox.css' rel='stylesheet' />
<!-- Core JS Files -->
<script src="{% static "js/core/jquery-3.6.0.min.js" %}"></script>
<script src="{% static "js/core/popper.min.js" %}"></script>
<script src="{% static "js/core/bootstrap.min.js" %}"></script>
<!-- Chart JS -->
<script src="{% static "js/plugins/momentjs/moment_2.29.1.min.js" %}"></script>
<script src="{% static "js/plugins/momentjs/moment_locale_en-gb.js" %}"></script>
<script src="{% static "js/plugins/chartjs/chartjs_3.9.1.min.js" %}"></script>
<script src="{% static "js/plugins/chartjs/chartjs-adapter-moment_1.0.0.js" %}"></script>
<!-- FullCalendar CSS -->
<!-- <link href="{% static "js/plugins/fullcalendar/main.css" %}" rel="stylesheet" /> -->
{% block header %}{% endblock %}
<noscript data-n-css=""></noscript>
<script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script>
<script src="/_next/static/chunks/webpack-cefddfb7403e4fd5.js" defer=""></script>
<script src="/_next/static/chunks/framework-ce84985cd166733a.js" defer=""></script>
<script src="/_next/static/chunks/main-78bff94cbf1c228a.js" defer=""></script>
<script src="/_next/static/chunks/pages/_app-31d07710b82a7ac5.js" defer=""></script>
<script src="/_next/static/chunks/05d954cf-777526ea8b19054d.js" defer=""></script>
<script src="/_next/static/chunks/9194-fc885e0019d1b79c.js" defer=""></script>
<script src="/_next/static/chunks/9495-7de5cc10bf1373b0.js" defer=""></script>
<script src="/_next/static/chunks/224-ded5d7515cf45b65.js" defer=""></script>
<script src="/_next/static/chunks/7308-ea7e626abbbbfae4.js" defer=""></script>
<script src="/_next/static/chunks/pages/docs/object-fit-98004962b89574aa.js" defer=""></script>
<script src="/_next/static/pBqep00ipwfkbmauoJW5M/_buildManifest.js" defer=""></script>
<script src="/_next/static/pBqep00ipwfkbmauoJW5M/_ssgManifest.js" defer=""></script>
</head>
<body class="antialiased text-slate-500 dark:text-slate-400 bg-white dark:bg-jarvis-blue-900">
<div id="__next">
<!-- FLARE -->
<!-- <div class="absolute z-20 top-0 inset-x-0 flex justify-center overflow-hidden pointer-events-none">
<div class="w-[108rem] flex-none flex justify-end">
<picture>
<source srcSet="{% static "/img/docs@30.8b9a76a2.avif" %}" type="image/avif"/>
<img src="{% static "/img/docs@tinypng.d9e4dcdc.png" %}" alt="" class="w-[71.75rem] flex-none max-w-none dark:hidden" decoding="async"/>
</picture>
<picture>
<source srcSet="{% static "/img/docs-dark.avif" %}" type="image/avif"/>
<img src="{% static "/img/docs-dark.png" %}" alt="" class="w-[90rem] flex-none max-w-none hidden dark:block" decoding="async"/>
</picture>
</div>
</div> -->
<body class="sidebar-mini {% if request.session.template == 1 %}white-content{% endif %}">
<div class="wrapper">
<div class="navbar-minimize-fixed">
<button class="minimize-sidebar btn btn-link btn-just-icon">
<i class="tim-icons icon-align-center visible-on-sidebar-regular text-muted"></i>
<i class="tim-icons icon-bullet-list-67 visible-on-sidebar-mini text-muted"></i>
</button>
</div>
<div class="sidebar">
<div class="sidebar-wrapper">
<div class="logo">
<a href="javascript:void(0)" class="simple-text logo-mini">TRA</a>
<a href="javascript:void(0)" class="simple-text logo-normal">Trampoline</a>
</div>
<ul class="nav">
{% menuitem 'home' 'fal fa-chart-pie' 'Dashboard' %}
{% menuitem 'gymnast_list' 'tim-icons icon-badge' 'Gymnasts' %}
{% menuitem 'skill_list' 'fal fa-hexagon' 'Skills' %}
<li>
<a data-toggle="collapse" href="#pagesExamples">
<i class="tim-icons icon-molecule-40"></i>
<p>Combinations<b class="caret"></b></p>
</a>
<div class="collapse" id="pagesExamples">
<ul class="nav">
{% submenuitem 'competition_routine_listing' 'CR' 'Competition Routine' %}
{% submenuitem 'routine_listing' 'R' 'Routine' %}
{% submenuitem 'educative_combination_listing' 'E' 'Educative' %}
{% submenuitem 'combination_list' 'C' 'Combination' %}
</ul>
<!-- HEAD MENU -->
<div class="sticky top-0 z-40 w-full backdrop-blur flex-none transition-colors duration-500 lg:z-50 lg:border-b lg:border-slate-900/10 dark:border-slate-50/[0.06] bg-white/95 supports-backdrop-blur:bg-white/60 dark:bg-transparent">
<div class="max-w-8xl mx-auto">
<div class="py-4 border-b border-slate-900/10 lg:px-8 lg:border-0 dark:border-slate-300/10 mx-4 lg:mx-0">
<div class="relative flex items-center">
<a class="mr-3 flex-none w-[2.0625rem] overflow-hidden md:w-auto font-bold" href="/">JARVIS</a>
<div class="relative hidden lg:flex items-center ml-auto">
<div class="sticky top-0 -ml-0.5 pointer-events-none">
<div class="bg-white dark:bg-slate-900 relative pointer-events-auto">
<button type="button" class="hidden w-full lg:flex items-center text-sm leading-6 text-slate-400 rounded-md ring-1 ring-slate-900/10 shadow-sm py-1.5 pl-2 pr-3 hover:ring-slate-300 dark:bg-slate-800 dark:highlight-white/5 dark:hover:bg-slate-700">
<svg width="24" height="24" fill="none" aria-hidden="true" class="mr-3 flex-none">
<path d="m19 19-3.5-3.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<circle cx="11" cy="11" r="6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></circle>
</svg>
Quick search...
</button>
</div>
</div>
<div class="flex items-center border-slate-200 ml-6 dark:border-slate-800">
<label class="sr-only" id="headlessui-listbox-label-:Rpkcr6:" data-headlessui-state="">Theme</label>
<button type="button" id="headlessui-listbox-button-:R19kcr6:" aria-haspopup="true" aria-expanded="false" data-headlessui-state="">
<span class="dark:hidden">
<svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-6 h-6">
<path d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" class="fill-sky-400/20 stroke-sky-500"></path>
<path d="M12 4v1M17.66 6.344l-.828.828M20.005 12.004h-1M17.66 17.664l-.828-.828M12 20.01V19M6.34 17.664l.835-.836M3.995 12.004h1.01M6 6l.835.836" class="stroke-sky-500"></path>
</svg>
</span>
<span class="hidden dark:inline">
<svg viewBox="0 0 24 24" fill="none" class="w-6 h-6">
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.715 15.15A6.5 6.5 0 0 1 9 6.035C6.106 6.922 4 9.645 4 12.867c0 3.94 3.153 7.136 7.042 7.136 3.101 0 5.734-2.032 6.673-4.853Z" class="fill-sky-400/20"></path>
<path d="m17.715 15.15.95.316a1 1 0 0 0-1.445-1.185l.495.869ZM9 6.035l.846.534a1 1 0 0 0-1.14-1.49L9 6.035Zm8.221 8.246a5.47 5.47 0 0 1-2.72.718v2a7.47 7.47 0 0 0 3.71-.98l-.99-1.738Zm-2.72.718A5.5 5.5 0 0 1 9 9.5H7a7.5 7.5 0 0 0 7.5 7.5v-2ZM9 9.5c0-1.079.31-2.082.845-2.93L8.153 5.5A7.47 7.47 0 0 0 7 9.5h2Zm-4 3.368C5 10.089 6.815 7.75 9.292 6.99L8.706 5.08C5.397 6.094 3 9.201 3 12.867h2Zm6.042 6.136C7.718 19.003 5 16.268 5 12.867H3c0 4.48 3.588 8.136 8.042 8.136v-2Zm5.725-4.17c-.81 2.433-3.074 4.17-5.725 4.17v2c3.552 0 6.553-2.327 7.622-5.537l-1.897-.632Z" class="fill-sky-500"></path>
<path fill-rule="evenodd" clip-rule="evenodd" d="M17 3a1 1 0 0 1 1 1 2 2 0 0 0 2 2 1 1 0 1 1 0 2 2 2 0 0 0-2 2 1 1 0 1 1-2 0 2 2 0 0 0-2-2 1 1 0 1 1 0-2 2 2 0 0 0 2-2 1 1 0 0 1 1-1Z" class="fill-sky-500"></path>
</svg>
</span>
</button>
</div>
</div>
</li>
{% menuitem 'next_event_list' 'fal fa-calendar-alt' 'Events' %}
{% if request.user|has_group:"trainer" %}
{% menuitem 'injuries_list' 'fal fa-comment-alt-medical' 'Injuries' %}
{% endif %}
{% menuitem 'place_list' 'fal fa-map-marked-alt' 'Places' %}
{% if request.user|has_group:"trainer" %}
{% menuitem 'chrono_list' 'fal fa-stopwatch' 'Chronos' %}
{% endif %}
{% menuitem 'report' 'fal fa-file-contract' 'Reports' %}
{% if request.user.is_staff %}
<li>
<a href="/admin/" target="_blank">
<!-- <i class="tim-icons icon-settings"></i> -->
<i class="fal fa-tools"></i>
<p>Administration</p>
</a>
</li>
{% endif %}
</ul>
<button type="button" class="ml-auto text-slate-500 w-8 h-8 -my-1 flex items-center justify-center hover:text-slate-600 lg:hidden dark:text-slate-400 dark:hover:text-slate-300">
<span class="sr-only">Search</span>
<svg width="24" height="24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="m19 19-3.5-3.5"></path>
<circle cx="11" cy="11" r="6"></circle>
</svg>
</button>
<div class="ml-2 -my-1 lg:hidden">
<button type="button" class="text-slate-500 w-8 h-8 flex items-center justify-center hover:text-slate-600 dark:text-slate-400 dark:hover:text-slate-300">
<span class="sr-only">Navigation</span>
<svg width="24" height="24" fill="none" aria-hidden="true">
<path d="M12 6v.01M12 12v.01M12 18v.01M12 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm0 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm0 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
<div style="position:fixed;top:1px;left:1px;width:1px;height:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;display:none"></div>
</div>
</div>
</div>
<!-- HEADER : BREADCRUMB -->
<div class="flex items-center p-4 border-b border-slate-900/10 lg:hidden dark:border-slate-50/[0.06]">
<button type="button" class="text-slate-500 hover:text-slate-600 dark:text-slate-400 dark:hover:text-slate-300">
<span class="sr-only">Navigation</span>
<svg width="24" height="24">
<path d="M5 6h14M5 12h14M5 18h14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path>
</svg>
</button>
<ol class="ml-4 flex text-sm leading-6 whitespace-nowrap min-w-0">
<li class="flex items-center">
Layout
<svg width="3" height="6" aria-hidden="true" class="mx-3 overflow-visible text-slate-400">
<path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path>
</svg>
</li>
<li class="font-semibold text-slate-900 truncate dark:text-slate-200">Object Fit</li>
</ol>
</div>
<!-- /HEADER : BREADCRUMB -->
</div>
</div>
<!-- MAIN CONTENT -->
<div>
<div class="max-w-8xl mx-auto px-4 sm:px-6 md:px-8">
<div class="main-panel">
<!-- Navbar -->
<nav class="navbar navbar-expand-lg navbar-absolute navbar-transparent">
<div class="container-fluid">
<div class="navbar-wrapper">
<div class="navbar-minimize d-inline">
<button class="minimize-sidebar btn btn-link btn-just-icon" rel="tooltip" data-original-title="Sidebar toggle" data-placement="right">
<i class="tim-icons icon-align-center visible-on-sidebar-regular"></i>
<i class="tim-icons icon-bullet-list-67 visible-on-sidebar-mini"></i>
</button>
</div>
<div class="navbar-toggle d-inline">
<button type="button" class="navbar-toggler">
<span class="navbar-toggler-bar bar1"></span>
<span class="navbar-toggler-bar bar2"></span>
<span class="navbar-toggler-bar bar3"></span>
</button>
</div>
<a class="navbar-brand" href="/">Jarvis</a>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navigation" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-bar navbar-kebab"></span>
<span class="navbar-toggler-bar navbar-kebab"></span>
<span class="navbar-toggler-bar navbar-kebab"></span>
</button>
<div class="collapse navbar-collapse" id="navigation">
<ul class="navbar-nav ml-auto">
<li class="search-bar input-group">
<button class="btn btn-link" id="search-button" data-toggle="modal" data-target="#searchModal">
<i class="tim-icons icon-zoom-split"></i>
<span class="d-lg-none d-md-block">Search</span>
</button>
</li>
<li class="dropdown nav-item">
<a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown">
<div class="photo">
<img src="{% static '/img/default-avatar.png' %}" alt="Profile Photo">
<!-- LEFT MENU -->
<div class="hidden lg:block fixed z-20 inset-0 top-[3.8125rem] left-[max(0px,calc(50%-45rem))] right-auto w-[14rem] pb-10 pl-8 pr-6 overflow-y-auto">
<div class="h-5"></div>
<nav id="nav" class="lg:text-sm lg:leading-6 relative">
<ul>
<li>
<a class="group flex items-center lg:text-sm lg:leading-6 mb-4 font-semibold text-sky-500 dark:text-sky-400" href="/docs/installation">
<div class="mr-4 rounded-md ring-1 ring-slate-900/5 shadow-sm group-hover:shadow group-hover:ring-slate-900/10 dark:ring-0 dark:shadow-none dark:group-hover:shadow-none dark:group-hover:highlight-white/10 group-hover:shadow-sky-200 dark:group-hover:bg-sky-500 dark:bg-sky-500 dark:highlight-white/10">
<svg class="h-6 w-6" viewBox="0 0 24 24" fill="none">
<!-- <i class="fal fa-chart-pie"></i> -->
</svg>
</div>
<b class="caret d-none d-lg-block d-xl-block"></b>
<p class="d-lg-none">Log out</p>
Documentation
</a>
<ul class="dropdown-menu dropdown-navbar">
<li class="nav-link">
<a href="{% url 'profile_update' %}" class="nav-item dropdown-item"><i class="fal fa-id-card-alt"></i>&nbsp;{{ request.user }}</a>
</li>
{% if request.user|has_group:"trainer" %}
<li class="nav-link">
<a href="{% url 'notification_update' %}" class="nav-item dropdown-item"><i class="fal fa-envelope"></i>&nbsp;Notifications</a>
</li>
{% endif %}
<li class="dropdown-divider"></li>
<li class="nav-link">
<a href="{% url 'logout' %}" class="nav-item dropdown-item"><i class="fal fa-sign-out-alt"></i>&nbsp;Log out</a>
</li>
</li>
{% menuitem 'home' 'fal fa-chart-pie' 'Dashboard' %}
{% menuitem 'gymnast_list' 'tim-icons icon-badge' 'Gymnasts' %}
{% menuitem 'skill_list' 'fal fa-hexagon' 'Skills' %}
<li>
<h5 class="mb-8 lg:mb-3 font-semibold text-slate-900 dark:text-slate-200"><i class="tim-icons icon-molecule-40"></i>&nbsp;&nbsp;Combinations</h5>
<ul class="space-y-6 lg:space-y-2 border-l border-slate-100 dark:border-slate-800">
{% submenuitem 'competition_routine_listing' 'Competition Routine' %}
{% submenuitem 'routine_listing' 'Routine' %}
{% submenuitem 'educative_combination_listing' 'Educative' %}
{% submenuitem 'combination_list' 'Combination' %}
</ul>
</li>
<li class="separator d-lg-none"></li>
<br />
{% menuitem 'next_event_list' 'fal fa-calendar-alt' 'Events' %}
{% if request.user|has_group:"trainer" %}
{% menuitem 'injuries_list' 'fal fa-comment-alt-medical' 'Injuries' %}
{% endif %}
{% menuitem 'place_list' 'fal fa-map-marked-alt' 'Places' %}
{% if request.user|has_group:"trainer" %}
{% menuitem 'chrono_list' 'fal fa-stopwatch' 'Chronos' %}
{% endif %}
{% menuitem 'report' 'fal fa-file-contract' 'Reports' %}
{% if request.user.is_staff %}
<li>
<a class="group flex items-center lg:text-sm lg:leading-6 mb-4 font-semibold text-sky-500 dark:text-sky-400" href="/admin/" target="_blank">
<!-- <i class="tim-icons icon-settings"></i> -->
<i class="fal fa-tools"></i>&nbsp;&nbsp;Administration
</a>
</li>
{% endif %}
</ul>
</nav>
</div>
<div class="lg:pl-[13rem]">
<div class="dark:bg-jarvis-blue-800 rounded-md px-2 py-2">
<header id="header" class="relative z-20">
<div>
<p class="mb-2 text-sm leading-6 font-semibold text-sky-500 dark:text-sky-400">{% block title %}{% endblock %}</p>
<div class="flex items-center">
<h1 class="inline-block text-2xl sm:text-3xl font-extrabold text-slate-900 tracking-tight dark:text-slate-200">{% block subtitle %}{% endblock %}</h1>
</div>
</div>
</header>
{% block content %}{% endblock %}
<footer class="text-sm leading-6">{% block footer %}{% endblock %}</footer>
</div>
</div>
</nav>
<div class="modal modal-search" id="searchModal" tabindex="-1" role="dialog" aria-labelledby="searchModal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<form action="{% url 'global_search' %}" method="GET" class="sidebar-form">
<input type="text" class="form-control" name="pattern" id="inlineFormInputGroup" placeholder="Global Search..." autofocus>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<i class="tim-icons icon-simple-remove"></i>
</button>
</form>
</div>
</div>
</div>
</div>
<!-- End Navbar -->
<div class="content">
{% block content %}{% endblock %}
</div>
</div>
<div style="position:fixed;top:1px;left:1px;width:1px;height:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;display:none"></div>
</div>
<script src="{% static "js/plugins/perfect-scrollbar.jquery_1.4.0.min.js" %}"></script>
<!-- Plugin for Switches, full documentation here: http://www.jque.re/plugins/version3/bootstrap.switch/ -->
<script src="{% static "js/plugins/bootstrap-switch_3.3.4.js" %}"></script>
<!-- Plugin for Sweet Alert -->
<script src="{% static "js/plugins/sweetalert2.min.js" %}"></script>
<!-- Plugin for Sorting Tables -->
<script src="{% static "js/plugins/jquery.tablesorter_2.0.5b.js" %}"></script>
<!-- Forms Validations Plugin -->
<script src="{% static "js/plugins/jquery.validate_1.17.0.min.js" %}"></script>
<!-- Plugin for the Wizard, full documentation here: https://github.com/VinceG/twitter-bootstrap-wizard -->
<script src="{% static "js/plugins/jquery.bootstrap-wizard_1.4.2.js" %}"></script>
<!-- Plugin for Select, full documentation here: http://silviomoreto.github.io/bootstrap-select -->
<script src="{% static "js/plugins/bootstrap-selectpicker_1.12.4.js" %}"></script>
<!-- Plugin for the DateTimePicker, full documentation here: https://eonasdan.github.io/bootstrap-datetimepicker/ -->
<script src="{% static "js/plugins/bootstrap-datetimepicker_4.17.47.js" %}"></script>
<!-- DataTables.net Plugin, full documentation here: https://datatables.net/ -->
<script src="{% static "js/plugins/datatables/datatables_1.12.1.min.js" %}"></script>
<!-- Plugin for Tags, full documentation here: https://github.com/bootstrap-tagsinput/bootstrap-tagsinputs -->
<script src="{% static "js/plugins/bootstrap-tagsinput_0.8.0.js" %}"></script>
<!-- Plugin for Fileupload, full documentation here: http://www.jasny.net/bootstrap/javascript/#fileinput -->
<script src="{% static "js/plugins/jasny-bootstrap_3.1.3.min.js" %}"></script>
<!-- Full Calendar Plugin, full documentation here: https://github.com/fullcalendar/fullcalendar -->
<script src="{% static "js/plugins/fullcalendar/main.js" %}"></script>
<!-- Vector Map plugin, full documentation here: http://jvectormap.com/documentation/ -->
<script src="{% static "js/plugins/jquery-jvectormap_2.0.4.js" %}"></script>
<!-- Plugin for the Sliders, full documentation here: http://refreshless.com/nouislider/ -->
<script src="{% static "js/plugins/nouislider_11.1.0.min.js" %}"></script>
<!-- Notifications Plugin -->
<script src="{% static "js/plugins/bootstrap-notify_3.1.5.js" %}"></script>
<!-- Control Center for Black Dashboard: parallax effects, scripts for the example pages etc -->
<script src="{% static "js/black-dashboard.js" %}"></script>
<!-- Jquery UI for autocomplete, etc. -->
<script src="{% static "js/plugins/jqueryui/jquery-ui.min.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
$().ready(function() {
$sidebar = $('.sidebar');
$navbar = $('.navbar');
$main_panel = $('.main-panel');
$full_page = $('.full-page');
$sidebar_responsive = $('body > .navbar-collapse');
{% if request.session.is_sidebar_minified %}sidebar_mini_active = true;
{% else %}sidebar_mini_active = false;
{% endif %}
{% if request.session.template == 0 %}white_color = false;
{% else %}white_color = true;
{% endif %}
window_width = $(window).width();
fixed_plugin_open = $('.sidebar .sidebar-wrapper .nav li.active a p').html();
{% if request.session.sidebar == 1 %}color = 'blue';
{% elif request.session.sidebar == 2 %}color = 'green';
{% elif request.session.sidebar == 3 %}color = 'orange';
{% elif request.session.sidebar == 4 %}color = 'red';
{% else %}color = 'purple'
{% endif %}
$sidebar.attr('data', color);
$main_panel.attr('data', color);
$full_page.attr('filter-color', color);
$sidebar_responsive.attr('data', color);
// $('.fixed-plugin a').click(function(event) {
// if ($(this).hasClass('switch-trigger')) {
// if (event.stopPropagation) {
// event.stopPropagation();
// } else if (window.event) {
// window.event.cancelBubble = true;
// }
// }
// });
// $('.fixed-plugin .background-color span').click(function() {
// $(this).siblings().removeClass('active');
// $(this).addClass('active');
// var new_color = $(this).data('color');
// if ($sidebar.length != 0)
// $sidebar.attr('data', new_color);
// if ($main_panel.length != 0)
// $main_panel.attr('data', new_color);
// if ($full_page.length != 0)
// $full_page.attr('filter-color', new_color);
// if ($sidebar_responsive.length != 0)
// $sidebar_responsive.attr('data', new_color);
// });
// $('.switch-sidebar-mini input').on("switchChange.bootstrapSwitch", function() {
// var $btn = $(this);
// if (sidebar_mini_active == true) {
// $('body').removeClass('sidebar-mini');
// sidebar_mini_active = false;
// blackDashboard.showSidebarMessage('Sidebar mini deactivated...');
// } else {
// $('body').addClass('sidebar-mini');
// sidebar_mini_active = true;
// blackDashboard.showSidebarMessage('Sidebar mini activated...');
// }
// // we simulate the window Resize so the charts will get updated in realtime.
// var simulateWindowResize = setInterval(function() {
// window.dispatchEvent(new Event('resize'));
// }, 180);
// // we stop the simulation of Window Resize after the animations are completed
// setTimeout(function() {
// clearInterval(simulateWindowResize);
// }, 1000);
// });
// $('.switch-change-color input').on("switchChange.bootstrapSwitch", function() {
// var $btn = $(this);
// if (white_color == true) {
// $('body').addClass('change-background');
// setTimeout(function() {
// $('body').removeClass('change-background');
// $('body').removeClass('white-content');
// }, 900);
// white_color = true; // false
// } else {
// $('body').addClass('change-background');
// setTimeout(function() {
// $('body').removeClass('change-background');
// $('body').addClass('white-content');
// }, 900);
// white_color = true;
// }
// });
$('.light-badge').click(function() {
$('body').addClass('white-content');
});
$('.dark-badge').click(function() {
$('body').removeClass('white-content');
});
// $('#searchModal').on('shown.bs.modal', function() {
// $('#inlineFormInputGroup').trigger('focus')
// });
});
});
</script>
{% block footerscript %}{% endblock %}
<!-- CSS Files -->
<link href="{% static "css/jarvis.css" %}" rel="stylesheet" />
</body>
</html>
</html>

View File

@ -0,0 +1,364 @@
{% load static %}
{% load menuitems %}
{% load submenuitems %}
{% load has_group %}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="author" content="Gregory Trullemans">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="apple-touch-icon" sizes="76x76" href="{% static "img/apple-icon.png" %}">
<link rel="icon" type="image/png" href="{% static "img/favicon.png" %}">
<title>• {% block page_title %}Jarvis{% endblock %} •</title>
<!-- Fonts and icons -->
<link href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,600,700,800" rel="stylesheet" />
<!-- Font Awesome Pro -->
<link href="{% static "css/font_awesome_all_5.15.3.css" %}" rel="stylesheet" />
<!-- Full Calendar Plugin, full documentation here: https://github.com/fullcalendar/fullcalendar -->
<link href="{% static "js/plugins/fullcalendar/main.min.css" %}" rel="stylesheet" />
<!-- JQuery UI CSS -->
<link href="{% static "js/plugins/jqueryui/jquery-ui.theme.min.css" %}" rel="stylesheet" />
<link href="{% static "js/plugins/jqueryui/jquery-ui.min.css" %}" rel="stylesheet" />
<!-- Nucleo Icons -->
<link href="{% static "css/nucleo-icons.css" %}" rel="stylesheet" />
<!-- CSS Files -->
<link href="{% static "css/black-dashboard.css" %}" rel="stylesheet" />
<!-- Maps by mapbox -->
<script src='https://api.mapbox.com/mapbox.js/v3.2.0/mapbox.js'></script>
<link href='https://api.mapbox.com/mapbox.js/v3.2.0/mapbox.css' rel='stylesheet' />
<!-- Core JS Files -->
<script src="{% static "js/core/jquery-3.6.0.min.js" %}"></script>
<script src="{% static "js/core/popper.min.js" %}"></script>
<script src="{% static "js/core/bootstrap.min.js" %}"></script>
<!-- Chart JS -->
<script src="{% static "js/plugins/momentjs/moment_2.29.1.min.js" %}"></script>
<script src="{% static "js/plugins/momentjs/moment_locale_en-gb.js" %}"></script>
<script src="{% static "js/plugins/chartjs/chartjs_3.9.1.min.js" %}"></script>
<script src="{% static "js/plugins/chartjs/chartjs-adapter-moment_1.0.0.js" %}"></script>
<!-- FullCalendar CSS -->
<!-- <link href="{% static "js/plugins/fullcalendar/main.css" %}" rel="stylesheet" /> -->
{% block header %}{% endblock %}
</head>
<body class="sidebar-mini {% if request.session.template == 1 %}white-content{% endif %}">
<div class="wrapper">
<div class="navbar-minimize-fixed">
<button class="minimize-sidebar btn btn-link btn-just-icon">
<i class="tim-icons icon-align-center visible-on-sidebar-regular text-muted"></i>
<i class="tim-icons icon-bullet-list-67 visible-on-sidebar-mini text-muted"></i>
</button>
</div>
<div class="sidebar">
<div class="sidebar-wrapper">
<div class="logo">
<a href="javascript:void(0)" class="simple-text logo-mini">TRA</a>
<a href="javascript:void(0)" class="simple-text logo-normal">Trampoline</a>
</div>
<ul class="nav">
{% menuitem 'home' 'fal fa-chart-pie' 'Dashboard' %}
{% menuitem 'gymnast_list' 'tim-icons icon-badge' 'Gymnasts' %}
{% menuitem 'skill_list' 'fal fa-hexagon' 'Skills' %}
<li>
<a data-toggle="collapse" href="#pagesExamples">
<i class="tim-icons icon-molecule-40"></i>
<p>Combinations<b class="caret"></b></p>
</a>
<div class="collapse" id="pagesExamples">
<ul class="nav">
{% submenuitem 'competition_routine_listing' 'CR' 'Competition Routine' %}
{% submenuitem 'routine_listing' 'R' 'Routine' %}
{% submenuitem 'educative_combination_listing' 'E' 'Educative' %}
{% submenuitem 'combination_list' 'C' 'Combination' %}
</ul>
</div>
</li>
{% menuitem 'next_event_list' 'fal fa-calendar-alt' 'Events' %}
{% if request.user|has_group:"trainer" %}
{% menuitem 'injuries_list' 'fal fa-comment-alt-medical' 'Injuries' %}
{% endif %}
{% menuitem 'place_list' 'fal fa-map-marked-alt' 'Places' %}
{% if request.user|has_group:"trainer" %}
{% menuitem 'chrono_list' 'fal fa-stopwatch' 'Chronos' %}
{% endif %}
{% menuitem 'report' 'fal fa-file-contract' 'Reports' %}
{% if request.user.is_staff %}
<li>
<a href="/admin/" target="_blank">
<!-- <i class="tim-icons icon-settings"></i> -->
<i class="fal fa-tools"></i>
<p>Administration</p>
</a>
</li>
{% endif %}
</ul>
</div>
</div>
<div class="main-panel">
<!-- Navbar -->
<nav class="navbar navbar-expand-lg navbar-absolute navbar-transparent">
<div class="container-fluid">
<div class="navbar-wrapper">
<div class="navbar-minimize d-inline">
<button class="minimize-sidebar btn btn-link btn-just-icon" rel="tooltip" data-original-title="Sidebar toggle" data-placement="right">
<i class="tim-icons icon-align-center visible-on-sidebar-regular"></i>
<i class="tim-icons icon-bullet-list-67 visible-on-sidebar-mini"></i>
</button>
</div>
<div class="navbar-toggle d-inline">
<button type="button" class="navbar-toggler">
<span class="navbar-toggler-bar bar1"></span>
<span class="navbar-toggler-bar bar2"></span>
<span class="navbar-toggler-bar bar3"></span>
</button>
</div>
<a class="navbar-brand" href="/">Jarvis</a>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navigation" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-bar navbar-kebab"></span>
<span class="navbar-toggler-bar navbar-kebab"></span>
<span class="navbar-toggler-bar navbar-kebab"></span>
</button>
<div class="collapse navbar-collapse" id="navigation">
<ul class="navbar-nav ml-auto">
<li class="search-bar input-group">
<button class="btn btn-link" id="search-button" data-toggle="modal" data-target="#searchModal">
<i class="tim-icons icon-zoom-split"></i>
<span class="d-lg-none d-md-block">Search</span>
</button>
</li>
<li class="dropdown nav-item">
<a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown">
<div class="photo">
<img src="{% static '/img/default-avatar.png' %}" alt="Profile Photo">
</div>
<b class="caret d-none d-lg-block d-xl-block"></b>
<p class="d-lg-none">Log out</p>
</a>
<ul class="dropdown-menu dropdown-navbar">
<li class="nav-link">
<a href="{% url 'profile_update' %}" class="nav-item dropdown-item"><i class="fal fa-id-card-alt"></i>&nbsp;{{ request.user }}</a>
</li>
{% if request.user|has_group:"trainer" %}
<li class="nav-link">
<a href="{% url 'notification_update' %}" class="nav-item dropdown-item"><i class="fal fa-envelope"></i>&nbsp;Notifications</a>
</li>
{% endif %}
<li class="dropdown-divider"></li>
<li class="nav-link">
<a href="{% url 'logout' %}" class="nav-item dropdown-item"><i class="fal fa-sign-out-alt"></i>&nbsp;Log out</a>
</li>
</ul>
</li>
<li class="separator d-lg-none"></li>
</ul>
</div>
</div>
</nav>
<div class="modal modal-search" id="searchModal" tabindex="-1" role="dialog" aria-labelledby="searchModal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<form action="{% url 'global_search' %}" method="GET" class="sidebar-form">
<input type="text" class="form-control" name="pattern" id="inlineFormInputGroup" placeholder="Global Search..." autofocus>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<i class="tim-icons icon-simple-remove"></i>
</button>
</form>
</div>
</div>
</div>
</div>
<!-- End Navbar -->
<div class="content">
{% block content %}{% endblock %}
</div>
</div>
</div>
<script src="{% static "js/plugins/perfect-scrollbar.jquery_1.4.0.min.js" %}"></script>
<!-- Plugin for Switches, full documentation here: http://www.jque.re/plugins/version3/bootstrap.switch/ -->
<script src="{% static "js/plugins/bootstrap-switch_3.3.4.js" %}"></script>
<!-- Plugin for Sweet Alert -->
<script src="{% static "js/plugins/sweetalert2.min.js" %}"></script>
<!-- Plugin for Sorting Tables -->
<script src="{% static "js/plugins/jquery.tablesorter_2.0.5b.js" %}"></script>
<!-- Forms Validations Plugin -->
<script src="{% static "js/plugins/jquery.validate_1.17.0.min.js" %}"></script>
<!-- Plugin for the Wizard, full documentation here: https://github.com/VinceG/twitter-bootstrap-wizard -->
<script src="{% static "js/plugins/jquery.bootstrap-wizard_1.4.2.js" %}"></script>
<!-- Plugin for Select, full documentation here: http://silviomoreto.github.io/bootstrap-select -->
<script src="{% static "js/plugins/bootstrap-selectpicker_1.12.4.js" %}"></script>
<!-- Plugin for the DateTimePicker, full documentation here: https://eonasdan.github.io/bootstrap-datetimepicker/ -->
<script src="{% static "js/plugins/bootstrap-datetimepicker_4.17.47.js" %}"></script>
<!-- DataTables.net Plugin, full documentation here: https://datatables.net/ -->
<script src="{% static "js/plugins/datatables/datatables_1.12.1.min.js" %}"></script>
<!-- Plugin for Tags, full documentation here: https://github.com/bootstrap-tagsinput/bootstrap-tagsinputs -->
<script src="{% static "js/plugins/bootstrap-tagsinput_0.8.0.js" %}"></script>
<!-- Plugin for Fileupload, full documentation here: http://www.jasny.net/bootstrap/javascript/#fileinput -->
<script src="{% static "js/plugins/jasny-bootstrap_3.1.3.min.js" %}"></script>
<!-- Full Calendar Plugin, full documentation here: https://github.com/fullcalendar/fullcalendar -->
<script src="{% static "js/plugins/fullcalendar/main.js" %}"></script>
<!-- Vector Map plugin, full documentation here: http://jvectormap.com/documentation/ -->
<script src="{% static "js/plugins/jquery-jvectormap_2.0.4.js" %}"></script>
<!-- Plugin for the Sliders, full documentation here: http://refreshless.com/nouislider/ -->
<script src="{% static "js/plugins/nouislider_11.1.0.min.js" %}"></script>
<!-- Notifications Plugin -->
<script src="{% static "js/plugins/bootstrap-notify_3.1.5.js" %}"></script>
<!-- Control Center for Black Dashboard: parallax effects, scripts for the example pages etc -->
<script src="{% static "js/black-dashboard.js" %}"></script>
<!-- Jquery UI for autocomplete, etc. -->
<script src="{% static "js/plugins/jqueryui/jquery-ui.min.js" %}"></script>
<script type="text/javascript">
$(document).ready(function() {
$().ready(function() {
$sidebar = $('.sidebar');
$navbar = $('.navbar');
$main_panel = $('.main-panel');
$full_page = $('.full-page');
$sidebar_responsive = $('body > .navbar-collapse');
{% if request.session.is_sidebar_minified %}sidebar_mini_active = true;
{% else %}sidebar_mini_active = false;
{% endif %}
{% if request.session.template == 0 %}white_color = false;
{% else %}white_color = true;
{% endif %}
window_width = $(window).width();
fixed_plugin_open = $('.sidebar .sidebar-wrapper .nav li.active a p').html();
{% if request.session.sidebar == 1 %}color = 'blue';
{% elif request.session.sidebar == 2 %}color = 'green';
{% elif request.session.sidebar == 3 %}color = 'orange';
{% elif request.session.sidebar == 4 %}color = 'red';
{% else %}color = 'purple'
{% endif %}
$sidebar.attr('data', color);
$main_panel.attr('data', color);
$full_page.attr('filter-color', color);
$sidebar_responsive.attr('data', color);
// $('.fixed-plugin a').click(function(event) {
// if ($(this).hasClass('switch-trigger')) {
// if (event.stopPropagation) {
// event.stopPropagation();
// } else if (window.event) {
// window.event.cancelBubble = true;
// }
// }
// });
// $('.fixed-plugin .background-color span').click(function() {
// $(this).siblings().removeClass('active');
// $(this).addClass('active');
// var new_color = $(this).data('color');
// if ($sidebar.length != 0)
// $sidebar.attr('data', new_color);
// if ($main_panel.length != 0)
// $main_panel.attr('data', new_color);
// if ($full_page.length != 0)
// $full_page.attr('filter-color', new_color);
// if ($sidebar_responsive.length != 0)
// $sidebar_responsive.attr('data', new_color);
// });
// $('.switch-sidebar-mini input').on("switchChange.bootstrapSwitch", function() {
// var $btn = $(this);
// if (sidebar_mini_active == true) {
// $('body').removeClass('sidebar-mini');
// sidebar_mini_active = false;
// blackDashboard.showSidebarMessage('Sidebar mini deactivated...');
// } else {
// $('body').addClass('sidebar-mini');
// sidebar_mini_active = true;
// blackDashboard.showSidebarMessage('Sidebar mini activated...');
// }
// // we simulate the window Resize so the charts will get updated in realtime.
// var simulateWindowResize = setInterval(function() {
// window.dispatchEvent(new Event('resize'));
// }, 180);
// // we stop the simulation of Window Resize after the animations are completed
// setTimeout(function() {
// clearInterval(simulateWindowResize);
// }, 1000);
// });
// $('.switch-change-color input').on("switchChange.bootstrapSwitch", function() {
// var $btn = $(this);
// if (white_color == true) {
// $('body').addClass('change-background');
// setTimeout(function() {
// $('body').removeClass('change-background');
// $('body').removeClass('white-content');
// }, 900);
// white_color = true; // false
// } else {
// $('body').addClass('change-background');
// setTimeout(function() {
// $('body').removeClass('change-background');
// $('body').addClass('white-content');
// }, 900);
// white_color = true;
// }
// });
$('.light-badge').click(function() {
$('body').addClass('white-content');
});
$('.dark-badge').click(function() {
$('body').removeClass('white-content');
});
// $('#searchModal').on('shown.bs.modal', function() {
// $('#inlineFormInputGroup').trigger('focus')
// });
});
});
</script>
{% block footerscript %}{% endblock %}
<!-- CSS Files -->
<link href="{% static "css/jarvis.css" %}" rel="stylesheet" />
</body>
</html>

View File

@ -1,41 +1,7 @@
{% extends "base.html" %}
{% block content %}
<!-- <div class="flextable table-actions">
<div class="flextable-item flextable-primary">
<form action="/{% block searchurl %}{% endblock %}/search/" method="GET">
<div class="btn-toolbar-item input-with-icon">
<input type="text" class="form-control input-block" name="pattern" placeholder="Search {% block search %}{% endblock %}">
<span class="icon icon-magnifying-glass"></span>
</div>
</form>
</div>
<div class="flextable-item">
<div class="btn-group">
<a href="/{% block addurl %}{% endblock %}/add">
<button type="button" class="btn btn-primary-outline">
<span class="icon icon-plus"></span>
</button>
</a>
</div>
</div>
</div> -->
<!-- <div class="table-full">
<div class="table-responsive">
{% block upper %}{% endblock %}
</div>
</div> -->
<div class="row">
<div class="col-12">
{% block datacontent %}{% endblock %}
<!-- <div class="flextable table-actions">
{% block under %}{% endblock %}
</div> -->
</div>
</div>
</div>
<!-- {% block pagination %}{% endblock %} -->
{% endblock %}

View File

@ -12,12 +12,13 @@
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="apple-touch-icon" sizes="76x76" href="{% static "img/apple-icon.png" %}">
<link rel="icon" type="image/png" href="{% static "img/favicon.png" %}">
<link rel="apple-touch-icon" sizes="76x76" href="{% static "img/apple-icon.png" %}">
<!-- <title>{% block page_title %}{% endblock %}</title> -->
<title>• JARVIS •</title>
<link href="{% static 'css/app.css' %}" rel="stylesheet">
<!-- Fonts and icons -->
<link href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,600,700,800" rel="stylesheet" />
<link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet" />
@ -31,58 +32,22 @@
<script src="{% static "js/plugins/momentjs/moment_locale_en-gb.js" %}"></script>
<script src="{% static "js/plugins/chartjs/chartjs_3.9.1.min.js" %}"></script>
<script src="{% static "js/plugins/chartjs/chartjs-adapter-moment_1.0.0.js" %}"></script>
</head>
<body>
<div class="wrapper wrapper-full-page ">
<div class="full-page login-page " data-color="red">
<!-- you can change the color of the filter page using: data-color="blue | purple | green | orange | red | rose " -->
<div class="content">
<div class="container">
<div class="col-lg-4 col-md-6 ml-auto mr-auto">
<form class="form" action="/login/" method="post" if="formulaire">
{% csrf_token %}
<div class="card card-login card-white">
<div class="card-header">
<img src="{% static "img/card-danger.png" %}" alt="">
<h1 class="card-title">&nbsp;Log in</h1>
</div>
<div class="card-body">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
<i class="tim-icons icon-single-02"></i>
</div>
</div>
<input type="login" name="login" class="form-control" id="login" placeholder="Login">
</div>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
<i class="tim-icons icon-lock-circle"></i>
</div>
</div>
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
</div>
{% if message %}
<p class="text-danger"><b>{{message}}</b></p>
{% endif %}
</div>
<div class="card-footer">
<button type="submit" class="btn btn-danger btn-lg btn-block mb-3">Log me in</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<body class="antialiased dark:bg-jarvis-blue-900 flex items-center justify-center h-screen">
<footer>
<div class="footer-content"></div>
</footer>
<div class="bg-jarvis-blue-700 p-8 rounded shadow-md w-96 text-white">
<h2 class="text-2xl font-semibold mb-6">Connection</h2>
<form action="/login/" method="post" id="formulaire">
{% csrf_token %}
<div class="mb-4">
<input type="text" id="username" name="login" class="mt-1 p-2 w-full border rounded-t-md" placeholder="Username">
<input type="password" id="password" name="password" class="p-2 w-full border rounded-b-md" placeholder="Password">
</div>
<button type="submit" class="bg-blue-500 text-white p-2 rounded-md w-full">Log me in</button>
</form>
</div>
<script src="{% static "js/core/jquery-3.6.0.min.js" %}"></script>
<script src="{% static "js/core/popper.min.js" %}"></script>

View File

@ -1,6 +1,6 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% block datacontent %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<div class="row">

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +1,10 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% block datacontent %}
{% block title %}Chronos{% endblock %}
{% block subtitle %}List {% if gymnast %}for <i><a href="{% url 'gymnast_details_tab' gymnast.id 'scores' %}">{{ gymnast }}</a></i>{% endif %}{% endblock %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<div class="row">
<div class="col-8">
<h4 class=""> Chronos listing {% if gymnast %}for <i><a href="{% url 'gymnast_details_tab' gymnast.id 'scores' %}">{{ gymnast }}</a></i>{% endif %}
</h4>
</div>
<div class="col-1 ml-auto">
<div class="text-right">
<a
href="{% if gymnast %}{% url 'chrono_create_for_gymnast' gymnast.id %}{% else %}{% url 'chrono_create' %}{% endif %}">
<button type="submit" value="add" class="btn btn-icon btn-warning ">
<i class="fas fa-plus"></i>
</button>
</a>
</div>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
{% if chrono_list %}

View File

@ -1,7 +1,7 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
{% block content %}
<div class="row justify-content-center">
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<div class="card">

View File

@ -1,23 +1,10 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% block datacontent %}
{% block title %}Injuries{% endblock %}
{% block subtitle %}List{% endblock %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<div class="row">
<div class="col-md-4">
<h4 class=""> Injuries Listing</h4>
</div>
<div class="col-1 ml-auto">
<div class="text-right">
<a href="{% url 'injury_create' %}">
<button type="submit" value="add" class="btn btn-icon btn-warning ">
<i class="fas fa-plus"></i>
</button>
</a>
</div>
</div>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
{% if injuries_list %}

View File

@ -1,6 +1,6 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% block datacontent %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<div class="row">

View File

@ -1,6 +1,6 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% block datacontent %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<div class="row">

View File

@ -1,7 +1,7 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
{% block content %}
<div class="row justify-content-center">
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<div class="card">

View File

@ -1,7 +1,7 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
{% block content %}
<div class="row justify-content-center">
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<div class="card">

View File

@ -1,7 +1,7 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
{% block content %}
<div class="row justify-content-center">
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<div class="card">

View File

@ -1,7 +1,7 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
{% block content %}
<div class="row justify-content-center">
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<div class="card">

View File

@ -1,9 +1,11 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% block datacontent %}
{% block title %}Clubs{% endblock %}
{% block subtitle %}List{% endblock %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<h4 class=""> Club Listing</h4>
</div>
<div class="card-body pb-0">
<div class="table-responsive pb-0">

View File

@ -1,12 +1,14 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
{% block title %}Places{% endblock %}
{% block subtitle %}List{% endblock %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<div class="row">
<div class="col-2">
<h4 class=""> Places Listing</h4>
</div>
<div class="col-1 ml-auto">
<div class="text-right">

View File

@ -1,7 +1,7 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<div class="row">

View File

@ -1,46 +1,41 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% block datacontent %}
<div class="card mb-0">
<div class="card-header">
<h4 class=""> Skills Listing</h4>
</div>
<div class="card-body">
<div class="table-responsive">
{% if skill_list %}
<table class="table tablesorter table-striped" data-sort="table" id="skill_table">
<thead class="text-primary">
<tr>
<th class="text-left" style="width: 35%">&nbsp;Long Label</th>
<th class="text-left" style="width: 20%">&nbsp;Short Label</th>
<th class="text-center">Notation</th>
<th class="text-center"><i class="far fa-venus"></i></th>
<th class="text-center"><i class="far fa-mars"></i></th>
<th class="header text-center" style="width: 7%">Diff.</th>
<th class="header text-center" style="width: 7%">Level</th>
<th class="header text-center" style="width: 7%">Rank</th>
</tr>
</thead>
<tbody>
{% for skill in skill_list %}
<tr role="row" class="{% cycle 'odd' 'even' %}">
<td class="text-left">&nbsp;<a href="{% url 'skill_details' skill.id %}">{{ skill.long_label }}</a></td>
<td class="text-left"><a href="{% url 'skill_details' skill.id %}">{{ skill.short_label }}</a></td>
<td class="text-center">{{ skill.notation }}</td>
<td class="text-center">{{ skill.age_girl_without_help }}</td>
<td class="text-center">{{ skill.age_boy_without_help }}</td>
<td class="text-center">{{ skill.difficulty }}</td>
<td class="text-center">{{ skill.level }}</td>
<td class="text-center">{{ skill.rank }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p class="muted-text">There are no skills corresponding to your criterias.</p>
{% endif %}
</div>
</div>
{% block title %}Skills{% endblock %}
{% block subtitle %}List{% endblock %}
{% block content %}
{% if skill_list %}
<table class="table tablesorter table-striped" data-sort="table" id="skill_table">
<thead class="text-primary">
<tr>
<th class="text-left" style="width: 35%">&nbsp;Long Label</th>
<th class="text-left" style="width: 20%">&nbsp;Short Label</th>
<th class="text-center">Notation</th>
<th class="text-center"><i class="far fa-venus"></i></th>
<th class="text-center"><i class="far fa-mars"></i></th>
<th class="header text-center" style="width: 7%">Diff.</th>
<th class="header text-center" style="width: 7%">Level</th>
<th class="header text-center" style="width: 7%">Rank</th>
</tr>
</thead>
<tbody>
{% for skill in skill_list %}
<tr role="row" class="{% cycle 'odd' 'even' %}">
<td class="text-left">&nbsp;<a href="{% url 'skill_details' skill.id %}">{{ skill.long_label }}</a></td>
<td class="text-left"><a href="{% url 'skill_details' skill.id %}">{{ skill.short_label }}</a></td>
<td class="text-center">{{ skill.notation }}</td>
<td class="text-center">{{ skill.age_girl_without_help }}</td>
<td class="text-center">{{ skill.age_boy_without_help }}</td>
<td class="text-center">{{ skill.difficulty }}</td>
<td class="text-center">{{ skill.level }}</td>
<td class="text-center">{{ skill.rank }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p class="muted-text">There are no skills corresponding to your criterias.</p>
{% endif %}
</div>
{% endblock %}

View File

@ -1,59 +1,46 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
<div class="card mb-0">
<div class="card-header">
<div class="row">
<div class="col-4">
<h4 class=""> Gymnast Listing</h4>
</div>
<div class="col-1 ml-auto">
<div class="text-right">
{% if request.user|has_group:"trainer" %}
<a href="{% url 'gymnast_create' %}">
<button type="submit" value="add" class="btn btn-icon btn-warning ">
<i class="fas fa-plus"></i>
</button>
</a>
{% endif %}
</div>
</div>
</div>
</div>
<div class="card-body pt-0">
<div class="table-responsive pb-0">
{% block title %}Gymnasts{% endblock %}
{% block subtitle %}List{% endblock %}
{% block content %}
<div class="absolute top-0 mt-10 relative">
<div class=" flex -mx-4 sm:-mx-6 md:mx-0">
<div id="class-table" class="flex-none min-w-full px-4 sm:px-6 md:px-0 overflow-hidden lg:overflow-auto scrollbar:!w-1.5 scrollbar:!h-1.5 scrollbar:bg-transparent scrollbar-track:!bg-slate-100 scrollbar-thumb:!rounded scrollbar-thumb:!bg-slate-300 scrollbar-track:!rounded dark:scrollbar-track:!bg-slate-500/[0.16] dark:scrollbar-thumb:!bg-slate-500/50">
{% if season_information_list %}
<table class="table tablesorter table-striped" data-sort="table" id="gymnast_table">
<table class="w-full text-left border-collapse">
<thead>
<tr>
{% if request.user|has_group:"trainer" %}
<th style="width: 3%"></th>
{% endif %}
<th class="header text-left" style="width: 20%">Lastname</th>
<th class="header text-left" style="width: 20%">Firstname</th>
<th class="header text-left" style="width: 10%">Gender</th>
<th class="header text-left" style="width: 10%">Age</th>
<th class="header text-left" style="width: 10%">Category</th>
<th class="header text-left" style="width: 25%">Club</th>
<th class="sticky z-10 top-0 text-sm leading-6 font-semibold text-slate-700 bg-white p-0 dark:bg-jarvis-blue-800 dark:text-slate-300">
<div class="py-2 pr-2 border-b border-slate-200 dark:border-slate-400/20">Lastname</div>
</th>
<th class="sticky z-10 top-0 text-sm leading-6 font-semibold text-slate-700 bg-white p-0 dark:bg-jarvis-blue-800 dark:text-slate-300">
<div class="py-2 pl-2 border-b border-slate-200 dark:border-slate-400/20">Firstname</div>
</th>
<th class="sticky z-10 top-0 text-sm leading-6 font-semibold text-slate-700 bg-white p-0 dark:bg-jarvis-blue-800 dark:text-slate-300">
<div class="py-2 pr-2 border-b border-slate-200 dark:border-slate-400/20">Gender</div>
</th>
<th class="sticky z-10 top-0 text-sm leading-6 font-semibold text-slate-700 bg-white p-0 dark:bg-jarvis-blue-800 dark:text-slate-300 text-right">
<div class="py-2 pl-2 border-b border-slate-200 dark:border-slate-400/20">Age</div>
</th>
<th class="sticky z-10 top-0 text-sm leading-6 font-semibold text-slate-700 bg-white p-0 dark:bg-jarvis-blue-800 dark:text-slate-300 text-right">
<div class="py-2 pr-2 border-b border-slate-200 dark:border-slate-400/20">Category</div>
</th>
<th class="sticky z-10 top-0 text-sm leading-6 font-semibold text-slate-700 bg-white p-0 dark:bg-jarvis-blue-800 dark:text-slate-300 text-right">
<div class="py-2 pl-2 border-b border-slate-200 dark:border-slate-400/20">Club</div>
</th>
</tr>
</thead>
<tbody>
<tbody class="align-baseline">
{% for season_information in season_information_list %}
<tr role="row" class="{% cycle 'odd' 'even' %}">
{% if request.user|has_group:"trainer" %}
<td>
<a href="{% url 'gymnast_update' season_information.gymnast.id %}">
<span class="tim-icons icon-pencil text-warning"></span>
</a>
</td>
{% endif %}
<td class="text-left"><a href="{% url 'gymnast_details' season_information.gymnast.id %}">{{ season_information.gymnast.last_name }}</a></td>
<td class="text-left"><a href="{% url 'gymnast_details' season_information.gymnast.id %}">{{ season_information.gymnast.first_name }}</a></td>
<td class="text-left">{{ season_information.gymnast.get_gender_display }}</td>
<td class="text-left">{{ season_information.gymnast.age }}</td>
<td class="text-left">{{ season_information.get_category_display }}</td>
<td class="text-left">{{ season_information.club.name }}</td>
<tr class="odd:bg-jarvis-blue-700 odd:dark:bg-jarvis-blue-700 even:bg-jarvis-blue-800 even:dark:bg-jarvis-blue-800">
<td class="uppercase py-4"><a href="{% url 'gymnast_details' season_information.gymnast.id %}" class="text-jarvis-link-900 hover:text-jarvis-link-800">{{ season_information.gymnast.last_name }}</a></td>
<td><a href="{% url 'gymnast_details' season_information.gymnast.id %}" class="text-jarvis-link-900 hover:text-jarvis-link-800">{{ season_information.gymnast.first_name }}</a></td>
<td>{{ season_information.gymnast.get_gender_display }}</td>
<td class="text-right">{{ season_information.gymnast.age }}</td>
<td class="text-right">{{ season_information.get_category_display }}</td>
<td class="text-right">{{ season_information.club.name }}</td>
</tr>
{% endfor %}
</tbody>
@ -61,6 +48,7 @@
{% else %}
There are no <i>active</i> gymnast corresponding to your criterias.
{% endif %}
<!-- <div class="sticky bottom-0 h-px -mt-px bg-slate-200 dark:bg-slate-400/20"></div> -->
</div>
</div>
</div>

View File

@ -1,12 +1,14 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load has_group %}
{% block datacontent %}
{% block title %}Events{% endblock %}
{% block subtitle %}List{% endblock %}
{% block content %}
<div class="card mb-0">
<div class="card-header">
<div class="row">
<div class="col-2">
<h4 class="mb-0"> Event Listing</h4>
{% if event_list %}<a href="{% url 'calendar' %}" class="mb-3">Calendar</a>{% endif %}
</div>
<div class="col-1 ml-auto">

View File

@ -1,7 +1,7 @@
{% extends "listing.html" %}
{% extends "base.html" %}
{% load get_item %}
{% block datacontent %}
{% block content %}
<div class="row justify-content-center">
<div class="col-6 col-sm-6 col-md-6 col-lg-6 col-xl-5">
<div class="card mb-0">

View File

@ -14,7 +14,7 @@ def menuitem(context, url, css_class, title):
if len(url) > 1:
if context.request.path.startswith(url):
return format_html(
'<li class="active"><a href="{}"><i class="{}"></i><p>{}</p></a></li>',
'<li class="active"><a class="group flex items-center lg:text-sm lg:leading-6 mb-4 font-semibold text-sky-500 dark:text-sky-400" href="{}"><i class="{}"></i>&nbsp;&nbsp;{}</a></li>',
url,
css_class,
title,
@ -22,13 +22,13 @@ def menuitem(context, url, css_class, title):
if url == "/admin/":
return format_html(
'<li><a href="{}" target="_blank"><i class="{}"></i><p>{}</p></a></li>',
'<li><a class="group flex items-center lg:text-sm lg:leading-6 mb-4 font-semibold text-sky-500 dark:text-sky-400" href="{}" target="_blank"><i class="{}"></i>&nbsp;&nbsp;{}</a></li>',
url,
css_class,
title,
)
return format_html(
'<li><a href="{}"><i class="{}"></i><p>{}</p></a></li>',
'<li><a class="group flex items-center lg:text-sm lg:leading-6 mb-4 font-semibold text-sky-500 dark:text-sky-400" href="{}"><i class="{}"></i>&nbsp;&nbsp;{}</a></li>',
url,
css_class,
title,
@ -36,14 +36,14 @@ def menuitem(context, url, css_class, title):
if context.request.path == url: # si le contexte est "/"
return format_html(
'<li class="active"><a href="{}"><i class="{}"></i><p>{}</p></a></li>',
'<li class="active"><a href="{}"><i class="{}"></i>&nbsp;&nbsp;{}</a></li>',
url,
css_class,
title,
)
return format_html(
'<li><a href="{}"><i class="{}"></i><p>{}</p></a></li>',
'<li><a class="group flex items-center lg:text-sm lg:leading-6 mb-4 font-semibold text-sky-500 dark:text-sky-400" href="{}"><i class="{}"></i>&nbsp;&nbsp;{}</a></li>',
url,
css_class,
title,

View File

@ -7,13 +7,9 @@ register = template.Library()
@register.simple_tag(takes_context=True)
def submenuitem(context, url, minititle, title):
def submenuitem(context, url, title):
url = reverse(url)
# css_class = "" + css_class
return format_html(
'<li><a href="{}"><span class="sidebar-mini-icon">{}</span><span class="sidebar-normal">{}</span></a></li>',
url,
minititle,
title,
f"""<li><a class="block border-l pl-4 -ml-px border-transparent hover:border-slate-400 dark:hover:border-slate-500 text-slate-700 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-300" href="{url}"><span class="sidebar-mini-icon">{title}</span></a></li>"""
)

2391
static/css/app.css Normal file

File diff suppressed because it is too large Load Diff

3
static/css/app_in.css Normal file
View File

@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

View File

@ -1,9 +0,0 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [],
theme: {
extend: {},
},
plugins: [],
}

BIN
static/img/docs-dark.avif Normal file

Binary file not shown.

BIN
static/img/docs.avif Normal file

Binary file not shown.

21
tailwind.config.js Normal file
View File

@ -0,0 +1,21 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./jarvis/**/templates/*.html", "./jarvis/**/templates/**/*.html"],
theme: {
extend: {
colors: {
'jarvis-blue': {
900: '#1e1d25',
800: '#252738',
700: '#27293b',
},
'jarvis-link': {
900: '#ad5aed',
800: '#d058c5',
}
},
},
},
plugins: [],
}