Modèle d'équivalence de fuseaux horaires

EH TOI LÀ !

Cette page est utilisée pour le fonctionnement du site,

MERCI DE NE PAS MODIFIER CETTE PAGE
SANS LA PERMISSION DU STAFF.


notation: 0+x

What this is

A bunch of miscellaneous CSS 'improvements' that I, CroquemboucheCroquembouche, use on a bunch of pages because I think it makes them easier to deal with.

The changes this component makes are bunch of really trivial modifications to ease the writing experience and to make documenting components/themes a bit easier (which I do a lot). It doesn't change anything about the page visually for the reader — the changes are for the writer.

I wouldn't expect translations of articles that use this component to also use this component, unless the translator likes it and would want to use it anyway.

This component probably won't conflict with other components or themes, and even if it does, it probably won't matter too much.

Usage

On any wiki:

[[include :scp-wiki:component:croqstyle]]

This component is designed to be used on other components. When using on another component, be sure to add this inside the component's [[iftags]] block, so that users of your component are not forced into also using Croqstyle.

Related components

Other personal styling components (which change just a couple things):

Personal styling themes (which are visual overhauls):

CSS changes

Reasonably-sized footnotes

Stops footnotes from being a million miles wide, so that you can actually read them.

.hovertip { max-width: 400px; }

Monospace edit/code

Makes the edit textbox monospace, and also changes all monospace text to Fira Code, the obviously superior monospace font.

@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;700&display=swap');
 
:root { --mono-font: "Fira Code", Cousine, monospace; }
#edit-page-textarea, .code pre, .code p, .code, tt, .page-source { font-family: var(--mono-font); }
.code pre * { white-space: pre; }
.code *, .pre * { font-feature-settings: unset; }

Teletype backgrounds

Adds a light grey background to <tt> elements ({{text}}), so code snippets stand out more.

tt {
  background-color: var(--swatch-something-bhl-idk-will-fix-later, #f4f4f4);
  font-size: 85%;
  padding: 0.2em 0.4em;
  margin: 0;
  border-radius: 6px;
}

No more bigfaces

Stops big pictures from appearing when you hover over someone's avatar image, because they're stupid and really annoying and you can just click on them if you want to see the big version.

.avatar-hover { display: none !important; }

Breaky breaky

Any text inside a div with class nobreak has line-wrapping happen between every letter.

.nobreak { word-break: break-all; }

Code colours

Add my terminal's code colours as variables. Maybe I'll change this to a more common terminal theme like Monokai or something at some point, but for now it's just my personal theme, which is derived from Tomorrow Night Eighties.

Also, adding the .terminal class to a fake code block as [[div class="code terminal"]] gives it a sort of pseudo-terminal look with a dark background. Doesn't work with [[code]], because Wikidot inserts a bunch of syntax highlighting that you can't change yourself without a bunch of CSS. Use it for non-[[code]] code snippets only.

Quick tool to colourise a 'standard' Wikidot component usage example with the above vars: link

:root {
  --c-bg: #393939;
  --c-syntax: #e0e0e0;
  --c-comment: #999999;
  --c-error: #f2777a;
  --c-value: #f99157;
  --c-symbol: #ffcc66;
  --c-string: #99cc99;
  --c-operator: #66cccc;
  --c-builtin: #70a7df;
  --c-keyword: #cc99cc;
}
 
.terminal, .terminal > .code {
  color: var(--c-syntax);
  background: var(--c-bg);
  border: 0.4rem solid var(--c-comment);
  border-radius: 1rem;
}

Debug mode

Draw lines around anything inside .debug-mode. The colour of the lines is red but defers to CSS variable --debug-colour.

You can also add div.debug-info.over and div.debug-info.under inside an element to annotate the debug boxes — though you'll need to make sure to leave enough vertical space that the annotation doesn't overlap the thing above or below it.

…like this!

.debug-mode, .debug-mode *, .debug-mode *::before, .debug-mode *::after {
  outline: 1px solid var(--debug-colour, red);
  position: relative;
}
.debug-info {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'Fira Code', monospace;
  font-size: 1rem;
  white-space: nowrap;
}
.debug-info.over { top: -2.5rem; }
.debug-info.under { bottom: -2.5rem; }
.debug-info p { margin: 0; }

Ce que c'est

Un modèle qui affiche une heure et/ou date donnée dans le fuseau horaire du lecteur.

Le fuseau horaire est calculé automatiquement. Vous avez juste besoin d'entrer celui de l'heure que vous voulez affichée en premier sur la page.

Si votre fuseau horaire est le même que celui du lecteur, ce module n'apparaîtra pas. C'est volontaire ! Il sera toujours là pour les lecteurs qui en ont besoin.

Notez les exceptions suivantes sur les heures d'été et d'hiver : "EST" et "EDT" sont tous les deux convertis dans le fuseau horaire de New York, ensuite convertis soit en EST soit en EDT selon la période de l'année. "BST" est converti sur celui de Londres, puis soit en GMT soit en BST selon la période de l'année. Pour éviter cette confusion, évitez d'utiliser des fuseaux qui changent en fonction de DST ! Utilisez un fuseau statique comme UTC.

Utilisation

[[include :fondationscp:component:tz
| time=18:00
| tz=UTC
]]

Les paramètres en italique sont optionnels. Tous les autres sont obligatoires. Si vous retirez un paramètre optionnel, il sera défini sur sa valeur par défaut. Si vous retirez un parmètre non-optionnel, le modèle ne marchera pas.

time L'heure définie. Les heures doivent être écrites sous forme de deux fois deux chiffres séparés par un double point. "18:30" marche bien, "1830" ou "six heures et demie de l'après-midi" ne marchent pas bien.
tz
(Optionnel)
Le fuseau horaire de l'heure que vous entrez.
Valeur par défaut : UTC
date
(Optionnel)
La date définie en format : AAAA-MM-JJ (p.ex. 2008-10-07).
La date pourrait être utilisée à un moment donné pour faire des compteurs de type "temps restant jusqu'à", mais elle n'est pas exploitée pour l'instant.
Valeur par défaut : aujourd'hui
text_before
(Optionnel)
Le texte qui s'affiche avant l'heure convertie.
Valeur par défaut : "${time} ${tz} correspond à"
text_after
(Optionnel)
Le text qui s'affiche après l'heure convertie.
Valeur par défaut : "."


Base de code

Structure HTML du convertisseur

Malheureusement enfouie dans le code source — fouillez un peu pour la reconstituer !

JS pour faire fonctionner le convertisseur

document.addEventListener("DOMContentLoaded", function() {
  console.log(date);
  date = date === "{$date}" ? moment().format("Y-MM-DD") : date;
  console.log(date);
  tz = tz === "{$tz}" ? "UTC" : tz;
  tz = tz === "EST" ? "America/New_York" : tz;
  tz = tz === "EDT" ? "America/New_York" : tz;
  tz = tz === "BST" ? "Europe/London" : tz;
 
  given_time = moment.tz(date + " " + time, tz);
  tz = given_time.format("z");
 
  text_before = text_before === "{$text_before}" ? "${time} ${tz} correspond à " :
text_before;
  text_after = text_after === "{$text_after}" ? "." : text_after;
  // eval is used here to convert text strings to template literals
  // variables of the form ${var} will be parsed
  text_before = eval('`' + text_before + '`');
  text_after = eval('`' + text_after + '`');
 
  user_tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
  converted_time = given_time.tz(user_tz);
  converted_time_tz = converted_time.format("HH:mm z");
 
  console.log(given_time);
  console.log(converted_time);
 
  document.getElementById("text_before").textContent = text_before;
  document.getElementById("text_converted").textContent = converted_time_tz;
  document.getElementById("text_after").textContent = text_after;
 
  if (converted_time.format("z") === tz) {
    // e.g. displaying an EST time to an EST user - that's pointless!
    document.documentElement.style.display = 'none';
  }
});

CSS pour styliser le cadre qui enveloppe le résultat

.timezone-thingy { margin-top: -0.5rem; }
.timezone-thingy iframe { border: none; max-height: 3.5rem; }

CSS pour styliser le résultat lui-même

#wrapper {
  padding: 0.5rem !important;
  border: 1px solid #660000;
  border-radius: 10px;
  box-shadow: 0 2px 6px rgba(102,0,0,.5);
  background: white;
  margin: 0.5rem 0;
  display: inline-block;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
}
#wrapper p {
  margin: 0;
}
#wrapper img {
  height: 1rem;
  vertical-align: text-top;
}
Sauf mention contraire, le contenu de cette page est protégé par la licence Creative Commons Attribution-ShareAlike 3.0 License