bricks for first UI proposal
This commit is contained in:
parent
b0acd26a49
commit
4941ce5aaf
4 changed files with 338 additions and 0 deletions
|
@ -0,0 +1,3 @@
|
||||||
|
# Who When Where
|
||||||
|
|
||||||
|
Link to [the wiki](https://git.hostux.fr/louis/who-when-where/wiki)
|
110
frontend/index.html
Normal file
110
frontend/index.html
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
<!--
|
||||||
|
index.html: Homepage for who-when-where
|
||||||
|
|
||||||
|
If the user is "logged in":
|
||||||
|
* Show active views (favourite ; recent ; "all" i.e. where the user appears)
|
||||||
|
* Show account management options: name, profile picture, logout, removal of all data, private editing ID (to "log in" to another account)
|
||||||
|
|
||||||
|
If the user is not "logged in":
|
||||||
|
* Show onboarding (profile picture+name) = "registration"
|
||||||
|
* Show a small "existing private ID" form to "log in"
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Welcome to 3W - Who When Where?</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="main.css">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
a.call-to-action {
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#logout, [data-declineInvite], [data-trustUser] {
|
||||||
|
color: red !important;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
[data-acceptInvite], [data-untrustUser] {
|
||||||
|
color: green !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Welcome!</h1>
|
||||||
|
|
||||||
|
<a href="view.html" class="call-to-action">Create a Group</a>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<!-- If pending requests -->
|
||||||
|
<h2>Pending Requests</h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<!-- For-each -->
|
||||||
|
<li>
|
||||||
|
<strong>Potiron</strong>
|
||||||
|
invited you to join
|
||||||
|
<strong>fake Groupe des abeilles</strong>:
|
||||||
|
<a data-acceptInvite="groupId" href="#accept">Accept</a> | <a data-declineInvite="groupId" href="#decline">Decline</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- If groups -->
|
||||||
|
<h2>My Groups</h2>
|
||||||
|
|
||||||
|
<!-- For-each -->
|
||||||
|
<ul>
|
||||||
|
<li><a href="view.html#abeilles">Groupe des abeilles</a></li>
|
||||||
|
<li><a href="view.html#group2">Groupe 2</a></li>
|
||||||
|
<li><a href="view.html#group3">Super méga groupe</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h2>Account Settings</h2>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<input type="checkbox" id="account_settings_psychopath"> <label for="account_settings_psychopath">I'm a psychopath</label>
|
||||||
|
|
||||||
|
<!-- Show only if checkbox "account_settings_psychopath" is checked -->
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
Your answers are now private. Only the persons that you approve individually are allowed to see them.
|
||||||
|
</p>
|
||||||
|
<p style="font-style: italic;">
|
||||||
|
As a consequence of your choice, you are not allowed to see answers from non-psychopaths members.<br>
|
||||||
|
If you disable this option, they will reappear after 24 hours.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>Users in Your Groups That You Do Not Trust (Yet)</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Potiron
|
||||||
|
<a data-trustUser="userId" href="#trust">Trust</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Trusted Users</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Erell
|
||||||
|
<a data-untrustUser="userId" href="#untrust">Untrust</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p>
|
||||||
|
<a id="exportLoginKey" href="#export-login-key">Export my login key</a> |
|
||||||
|
<a id="logout" href="#logout">Logout</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
45
frontend/main.css
Normal file
45
frontend/main.css
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
:root {
|
||||||
|
--colour_sand: #e1b382;
|
||||||
|
--colour_sand-shadow: #c89666;
|
||||||
|
--colour_night: #2d545e;
|
||||||
|
--colour_night-shadow: #12343b;
|
||||||
|
--colour_primary: var(--colour_night);
|
||||||
|
--colour_primary_text: #ffffff;
|
||||||
|
|
||||||
|
--colour_lightgrey: #f3f3f3;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
body, html {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: var(--colour_sand);
|
||||||
|
font-family: sans-serif;
|
||||||
|
min-height: 100vh;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: flex-start;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
body > * {
|
||||||
|
margin: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--colour_night);
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color: var(--colour_night-shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-type: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
180
frontend/view.html
Normal file
180
frontend/view.html
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
<!--
|
||||||
|
view.html: "View" page for who-when-where
|
||||||
|
|
||||||
|
For each users listed under the view, display:
|
||||||
|
* Name and profile picture
|
||||||
|
* Location (emoji)
|
||||||
|
* Availability (green-yellow-red)
|
||||||
|
for a certain time period (customisable via the interface).
|
||||||
|
|
||||||
|
Also displays a summary for each day, per location.
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>3W - Who When Where?</title>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="main.css">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
table#view_table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
table#view_table th, table#view_table td {
|
||||||
|
padding: 1em 1.2em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
table#view_table th:first-child {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
table#view_table thead tr, table#view_table tfoot tr {
|
||||||
|
background-color: var(--colour_primary);
|
||||||
|
color: var(--colour_primary_text);
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table#view_table thead th {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table#view_table thead th:first-child {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
table#view_table thead th.me {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
table#view_table tbody tr {
|
||||||
|
border-bottom: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table#view_table tbody th {
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
table#view_table tbody th span {
|
||||||
|
font-size: 0.8em;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
table#view_table tbody tr:nth-of-type(odd) {
|
||||||
|
background-color: var(--colour_lightgrey);
|
||||||
|
}
|
||||||
|
table#view_table tbody tr:nth-of-type(even) {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
table#view_table tbody td.me {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
table#view_table tbody td {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
table#view_table td .where {
|
||||||
|
font-size: 2.5em;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
table#view_table td:has(.modifier) {
|
||||||
|
padding-right: 1.55em;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
i.modifier {
|
||||||
|
font-style: normal;
|
||||||
|
font-size: 0.33em;
|
||||||
|
width: 0.33em;
|
||||||
|
position: absolute;
|
||||||
|
right: 0.33em;
|
||||||
|
}
|
||||||
|
i.modifier-top {
|
||||||
|
top: -0em;
|
||||||
|
}
|
||||||
|
i.modifier-bottom {
|
||||||
|
bottom: -0em;
|
||||||
|
}
|
||||||
|
i.modifier-cross::before {
|
||||||
|
display: block;
|
||||||
|
width: 1em;
|
||||||
|
position: absolute;
|
||||||
|
top: -0.25em;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
font-size: 1.5em;
|
||||||
|
content: "✗";
|
||||||
|
color: rgba(255, 0, 0, 0.7);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table#view_table tfoot {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table id="view_table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<!-- Group name -->
|
||||||
|
Les abeilles en test
|
||||||
|
</th>
|
||||||
|
<!-- For-each group member -->
|
||||||
|
<th>Alice</th>
|
||||||
|
<th class="me">Moi (Loulou)</th>
|
||||||
|
<th>Bob</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<!-- For-each date -->
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Date #1
|
||||||
|
<br>
|
||||||
|
<span title="1🏠 + 1🚅">🇸🇪 2</span>
|
||||||
|
<span title="1🏠">🗼 1</span>
|
||||||
|
</th>
|
||||||
|
<!-- For-each group member -->
|
||||||
|
<td>
|
||||||
|
<span class="where">
|
||||||
|
🗼
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="me">
|
||||||
|
<span class="where">
|
||||||
|
🇸🇪
|
||||||
|
<i class="modifier modifier-bottom modifier-cross">🚅</i>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<span class="where">
|
||||||
|
🥨
|
||||||
|
<i class="modifier modifier-top modifier-cross">🏠</i>
|
||||||
|
<i class="modifier modifier-bottom modifier-cross">🚅</i>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<!-- Total -->
|
||||||
|
3 group members
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<!-- Colspan = number of members -->
|
||||||
|
<th colspan="3"></th>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
So far, this group has planned between 2022-08-01 and 2024-11-25.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="index.html">Take me home!</a>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in a new issue