ui: Add theme from bootswatch
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
e6557c8c06
commit
83a47af391
148
frontend/ui/package-lock.json
generated
148
frontend/ui/package-lock.json
generated
@ -86,8 +86,7 @@
|
||||
"@popperjs/core": {
|
||||
"version": "2.9.3",
|
||||
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.3.tgz",
|
||||
"integrity": "sha512-xDu17cEfh7Kid/d95kB6tZsLOmSWKCZKtprnhVepjsSaCij+lM3mItSJDuuHDMbCWTh8Ejmebwb+KONcCJ0eXQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-xDu17cEfh7Kid/d95kB6tZsLOmSWKCZKtprnhVepjsSaCij+lM3mItSJDuuHDMbCWTh8Ejmebwb+KONcCJ0eXQ=="
|
||||
},
|
||||
"@rollup/pluginutils": {
|
||||
"version": "4.1.1",
|
||||
@ -105,15 +104,15 @@
|
||||
"integrity": "sha512-RKYNkQxtsMgt0wD8PhfXR1hGT1Tmq1E5eZeTr1KxIerczITRnWVT8LElfu/9Kusv44yYlyQtNc1mLoYqgloOQw=="
|
||||
},
|
||||
"@sveltejs/kit": {
|
||||
"version": "1.0.0-next.156",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.156.tgz",
|
||||
"integrity": "sha512-YHT3sbPKpBGSYYFgEpXUx7JhN682wdXhc5INYZGqFfaGqkIOrThosz8qRsLQBfRbFnu0fzgWSsfj7FKq8YeFuA==",
|
||||
"version": "1.0.0-next.160",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.160.tgz",
|
||||
"integrity": "sha512-JmacpK+VsppUKDQu1B3oJ70SnE9BXb/PSAP3f91K/DMnaSEGj7vtHn/3e6l7Mop12t1PkBk5lImh/ULqBO+YfA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.16",
|
||||
"cheap-watch": "^1.0.3",
|
||||
"sade": "^1.7.4",
|
||||
"vite": "^2.5.0"
|
||||
"vite": "^2.5.2"
|
||||
}
|
||||
},
|
||||
"@sveltejs/vite-plugin-svelte": {
|
||||
@ -175,6 +174,16 @@
|
||||
"color-convert": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"anymatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
|
||||
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"normalize-path": "^3.0.0",
|
||||
"picomatch": "^2.0.4"
|
||||
}
|
||||
},
|
||||
"argparse": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
@ -196,6 +205,12 @@
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"binary-extensions": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
|
||||
"dev": true
|
||||
},
|
||||
"bootstrap": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.0.tgz",
|
||||
@ -206,6 +221,11 @@
|
||||
"resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.5.0.tgz",
|
||||
"integrity": "sha512-44feMc7DE1Ccpsas/1wioN8ewFJNquvi5FewA06wLnqct7CwMdGDVy41ieHaacogzDqLfG8nADIvMNp9e4bfbA=="
|
||||
},
|
||||
"bootswatch": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-5.1.0.tgz",
|
||||
"integrity": "sha512-HwQjahQSq0u+ydqY0fFyl/GsJIHhBvzjBA8D2XvMvIrHdqYfL1LdD5bnnaEDoJugMCYGud9PQSgq/XkuyFFPMg=="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
@ -216,6 +236,15 @@
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"callsites": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
||||
@ -279,6 +308,22 @@
|
||||
"integrity": "sha512-xC5CruMhLzjPwJ5ecUxGu1uGmwJQykUhqd2QrCrYbwvsFYdRyviu6jG9+pccwDXJR/OpmOTOJ9yLFunVgQu9wg==",
|
||||
"dev": true
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "3.5.2",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
|
||||
"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"anymatch": "~3.1.2",
|
||||
"braces": "~3.0.2",
|
||||
"fsevents": "~2.3.2",
|
||||
"glob-parent": "~5.1.2",
|
||||
"is-binary-path": "~2.1.0",
|
||||
"is-glob": "~4.0.1",
|
||||
"normalize-path": "~3.0.0",
|
||||
"readdirp": "~3.6.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
@ -357,9 +402,9 @@
|
||||
}
|
||||
},
|
||||
"esbuild": {
|
||||
"version": "0.12.22",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.22.tgz",
|
||||
"integrity": "sha512-yWCr9RoFehpqoe/+MwZXJpYOEIt7KOEvNnjIeMZpMSyQt+KCBASM3y7yViiN5dJRphf1wGdUz1+M4rTtWd/ulA==",
|
||||
"version": "0.12.24",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.24.tgz",
|
||||
"integrity": "sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A==",
|
||||
"dev": true
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
@ -565,6 +610,15 @@
|
||||
"flat-cache": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"flat-cache": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
||||
@ -691,6 +745,15 @@
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
},
|
||||
"is-binary-path": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"binary-extensions": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
|
||||
@ -721,6 +784,12 @@
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true
|
||||
},
|
||||
"isexe": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||
@ -761,6 +830,12 @@
|
||||
"integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==",
|
||||
"dev": true
|
||||
},
|
||||
"klona": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz",
|
||||
"integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==",
|
||||
"dev": true
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
||||
@ -840,6 +915,18 @@
|
||||
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
|
||||
"dev": true
|
||||
},
|
||||
"neo-async": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
|
||||
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
|
||||
"dev": true
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"dev": true
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
@ -937,6 +1024,15 @@
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||
"dev": true
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"picomatch": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"regexpp": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
|
||||
@ -998,6 +1094,25 @@
|
||||
"mri": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"sass": {
|
||||
"version": "1.38.2",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.38.2.tgz",
|
||||
"integrity": "sha512-Bz1fG6qiyF0FX6m/I+VxtdVKz1Dfmg/e9kfDy2PhWOkq3T384q2KxwIfP0fXpeI+EyyETdOauH+cRHQDFASllA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chokidar": ">=3.0.0 <4.0.0"
|
||||
}
|
||||
},
|
||||
"sass-loader": {
|
||||
"version": "12.1.0",
|
||||
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz",
|
||||
"integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"klona": "^2.0.4",
|
||||
"neo-async": "^2.6.2"
|
||||
}
|
||||
},
|
||||
"seedrandom": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
|
||||
@ -1178,6 +1293,15 @@
|
||||
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
|
||||
"dev": true
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"type-check": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
||||
@ -1209,9 +1333,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"vite": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-2.5.1.tgz",
|
||||
"integrity": "sha512-FwmLbbz8MB1pBs9dKoRDgpiqoijif8hSK1+NNUYc12/cnf+pM2UFhhQ1rcpXgbMhm/5c2USZdVAf0FSkSxaFDA==",
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-2.5.2.tgz",
|
||||
"integrity": "sha512-JK5uhiVyMqHiAJbgBa8rCvpP8bEhAE9dKDv1gCmP+EUP2FSPmEeW3WXlCXauPB3MDa8behPW+ntyNXqnGaxslg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esbuild": "^0.12.17",
|
||||
|
@ -15,6 +15,8 @@
|
||||
"eslint-plugin-svelte3": "^3.2.0",
|
||||
"prettier": "~2.2.1",
|
||||
"prettier-plugin-svelte": "^2.2.0",
|
||||
"sass": "^1.38.2",
|
||||
"sass-loader": "^12.1.0",
|
||||
"svelte": "^3.34.0",
|
||||
"sveltestrap": "^5.6.2"
|
||||
},
|
||||
@ -24,6 +26,7 @@
|
||||
"@sveltejs/adapter-static": "^1.0.0-next.17",
|
||||
"bootstrap": "^5.1.0",
|
||||
"bootstrap-icons": "^1.5.0",
|
||||
"bootswatch": "^5.1.0",
|
||||
"seedrandom": "^3.0.5"
|
||||
}
|
||||
}
|
||||
|
@ -13,8 +13,8 @@
|
||||
</script>
|
||||
|
||||
{#if files.length}
|
||||
<Card class="mb-2">
|
||||
<CardHeader>
|
||||
<Card class="mb-4">
|
||||
<CardHeader class="text-light">
|
||||
<Icon name="download" />
|
||||
Téléchargements
|
||||
</CardHeader>
|
||||
@ -23,18 +23,19 @@
|
||||
<strong>Attention :</strong> puisqu'il s'agit de captures effectuées dans le but de découvrir si des actes malveillants ont été commis, les contenus qui sont téléchargeables <em>peuvent</em> contenir du contenu malveillant !
|
||||
</CardText>
|
||||
</CardBody>
|
||||
<ListGroup>
|
||||
<ListGroup class="border-dark">
|
||||
{#each files as file, index}
|
||||
<ListGroupItem tag="a" href="{file.path}" target="_self" class="d-flex">
|
||||
<h1><Icon name="arrow-down-circle" /></h1>
|
||||
<div>
|
||||
<ListGroupItem tag="a" href="{file.path}" target="_self" class="d-flex align-items-center">
|
||||
<h1 class="me-3">
|
||||
<Icon name="arrow-down-circle" />
|
||||
</h1>
|
||||
<div style="min-width: 0">
|
||||
<h4 class="fw-bold"><samp>{file.name}</samp></h4>
|
||||
<nobr>
|
||||
Taille :
|
||||
<span title="{file.size} octets">{file.size}</span>
|
||||
</nobr>
|
||||
–
|
||||
<nobr>
|
||||
<nobr class="d-block text-truncate">
|
||||
<span title="blake2.net">b2sum</span> :
|
||||
<samp class="cksum" title="{file.checksum}">{file.checksum}</samp>
|
||||
</nobr>
|
||||
|
@ -94,7 +94,7 @@
|
||||
</script>
|
||||
|
||||
<Card class="border-danger mb-2">
|
||||
<CardHeader class="bg-danger">
|
||||
<CardHeader class="bg-danger text-light">
|
||||
<Icon name="flag-fill" />
|
||||
Faire son rapport
|
||||
</CardHeader>
|
||||
@ -109,20 +109,20 @@
|
||||
</Progress>
|
||||
{/if}
|
||||
{#if exercice.tries || exercice.submitted || sberr}
|
||||
<ListGroup>
|
||||
<ListGroup class="border-dark">
|
||||
{#if exercice.solved_time && exercice.tries}
|
||||
<ListGroupItem class="text-warning">
|
||||
<ListGroupItem class="text-warning rounded-0">
|
||||
{exercice.tries} {exercice.tries==1?"tentative effectuée":"tentatives effectuées"}.
|
||||
Dernière solution envoyée à {exercice.solved_time}.
|
||||
</ListGroupItem>
|
||||
{/if}
|
||||
{#if exercice.solve_dist}
|
||||
<ListGroupItem>
|
||||
<ListGroupItem class="rounded-0">
|
||||
{exercice.solve_dist} {exercice.solve_dist == 1?"réponse erronée":"réponses erronées"}.
|
||||
</ListGroupItem>
|
||||
{/if}
|
||||
{#if exercice.submitted || sberr}
|
||||
<ListGroupItem class="{messageClass}">
|
||||
<ListGroupItem class="{messageClass} rounded-0">
|
||||
{#if !sberr}
|
||||
<strong>Votre solution a bien été envoyée !</strong>
|
||||
{:else}
|
||||
@ -131,7 +131,7 @@
|
||||
</ListGroupItem>
|
||||
{/if}
|
||||
{#if timeouted}
|
||||
<ListGroupItem class="text-danger">
|
||||
<ListGroupItem class="text-danger rounded-0">
|
||||
<strong>Oops</strong>
|
||||
La requête a dépassé le délai d'attente. Vous devriez réessayer dans quelques instant…
|
||||
</ListGroupItem>
|
||||
|
@ -86,13 +86,13 @@
|
||||
{/if}
|
||||
<ListGroup>
|
||||
{#each hints as hint (hint.id)}
|
||||
<ListGroupItem tag="a" href="{hint.file}" target="_self" class="d-flex">
|
||||
<ListGroupItem tag="a" href="{hint.file}" target="_self" class="d-flex align-items-center">
|
||||
{#if hint.file}
|
||||
<h1 class="me-3">
|
||||
<Icon name="arrow-down-circle" />
|
||||
</h1>
|
||||
{/if}
|
||||
<div>
|
||||
<div class="flex-fill" style="min-width:0">
|
||||
{#if !(hint.content || hint.file)}
|
||||
<button type="button" on:click={openHint(hint)} class="float-end btn btn-info" class:disabled={hints_submitted[hint.id]}>
|
||||
{#if hints_submitted[hint.id]}
|
||||
@ -111,7 +111,7 @@
|
||||
{/if}
|
||||
<h4 class="fw-bold">{hint.title}</h4>
|
||||
{#if hint.file}
|
||||
<p>
|
||||
<p style="overflow-x: auto">
|
||||
Cliquez ici pour télécharger l'indice.<br>
|
||||
b2sum :
|
||||
<samp class="cksum" title="Somme de contrôle BLAKE2b : {hint.content}">{hint.content}</samp>
|
||||
|
@ -14,7 +14,7 @@
|
||||
</script>
|
||||
|
||||
<Card class="border-success mb-2">
|
||||
<CardHeader class="bg-success">
|
||||
<CardHeader class="bg-success text-light">
|
||||
<Icon name="flag-fill" />
|
||||
Défi réussi !
|
||||
</CardHeader>
|
||||
|
@ -13,7 +13,7 @@
|
||||
</script>
|
||||
|
||||
<Card class="border-success mb-2">
|
||||
<CardHeader class="bg-success">
|
||||
<CardHeader class="bg-success text-light">
|
||||
<Icon name="laptop-fill" />
|
||||
Solution du défi
|
||||
</CardHeader>
|
||||
|
@ -51,7 +51,8 @@
|
||||
<HeaderPartners />
|
||||
</Container>
|
||||
</div>
|
||||
<Navbar class="sticky-top" color="dark" dark expand="md">
|
||||
<div class="sticky-top">
|
||||
<Navbar color="dark" dark expand="md">
|
||||
<NavbarToggler on:click={() => (isOpen = !isOpen)} />
|
||||
<Collapse {isOpen} navbar expand="md" on:update={handleUpdate}>
|
||||
<Nav navbar>
|
||||
@ -103,6 +104,7 @@
|
||||
</Collapse>
|
||||
</Navbar>
|
||||
<Progress value={$time.progression * 100} color="info" style="height: 5px; border-radius: 0;" />
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.teamname {
|
||||
|
@ -12,8 +12,7 @@
|
||||
export let exercice = {};
|
||||
</script>
|
||||
|
||||
<Card body class="mb-3" color="dark">
|
||||
<Breadcrumb listClassName="mb-0">
|
||||
<Breadcrumb listClassName="mb-0 px-3 py-2">
|
||||
{#each Object.keys(theme.exercices) as k, index}
|
||||
<BreadcrumbItem active={k == exercice.id}>
|
||||
{#if k == exercice.id}
|
||||
@ -46,8 +45,7 @@
|
||||
{/if}
|
||||
</BreadcrumbItem>
|
||||
{/each}
|
||||
</Breadcrumb>
|
||||
</Card>
|
||||
</Breadcrumb>
|
||||
|
||||
<style>
|
||||
a {
|
||||
|
24
frontend/ui/src/fic.scss
Normal file
24
frontend/ui/src/fic.scss
Normal file
@ -0,0 +1,24 @@
|
||||
// Your variable overrides can go here, e.g.:
|
||||
// $h1-font-size: 3rem;
|
||||
$white: white;
|
||||
$gray-500: #999;
|
||||
$gray-900: #272b30;
|
||||
|
||||
$body-bg: $white;
|
||||
|
||||
$old-body-bg: $gray-900;
|
||||
$dropdown-link-hover-bg: $old-body-bg;
|
||||
$card-bg: lighten($old-body-bg, 5%);
|
||||
$popover-bg: lighten($old-body-bg, 5%);
|
||||
$toast-background-color: lighten($old-body-bg, 5%);
|
||||
$modal-content-bg: lighten($old-body-bg, 5%);
|
||||
$list-group-bg: lighten($old-body-bg, 5%);
|
||||
$list-group-hover-bg: lighten($old-body-bg, 10%);
|
||||
|
||||
$list-group-border-color: rgba($gray-500, .6);
|
||||
|
||||
$enable-print-styles: false;
|
||||
|
||||
@import "bootswatch/dist/slate/_variables";
|
||||
@import "bootstrap/scss/bootstrap";
|
||||
@import "bootswatch/dist/slate/_bootswatch";
|
@ -142,16 +142,22 @@
|
||||
{#if $my && $my.exercices[exercice.id]}
|
||||
<Row class="mt-4">
|
||||
{#if $my.exercices[exercice.id].files || $my.exercices[exercice.id].hints}
|
||||
<Col lg class="mb-5">
|
||||
<Col lg="6" class="mb-5">
|
||||
{#if $my.exercices[exercice.id].files}
|
||||
<ExerciceDownloads files={$my.exercices[exercice.id].files} />
|
||||
<ExerciceDownloads
|
||||
files={$my.exercices[exercice.id].files}
|
||||
/>
|
||||
{/if}
|
||||
{#if $my.exercices[exercice.id].hints}
|
||||
<ExerciceHints hints={$my.exercices[exercice.id].hints} />
|
||||
<ExerciceHints
|
||||
{refresh_my}
|
||||
exercice={$my.exercices[exercice.id]}
|
||||
hints={$my.exercices[exercice.id].hints}
|
||||
/>
|
||||
{/if}
|
||||
</Col>
|
||||
{/if}
|
||||
<Col lg class="mb-5">
|
||||
<Col lg="6" class="mb-5">
|
||||
{#if !$my.exercices[exercice.id].solved_rank}
|
||||
<ExerciceFlags
|
||||
{refresh_my}
|
||||
@ -160,7 +166,10 @@
|
||||
flags={$my.exercices[exercice.id].flags}
|
||||
/>
|
||||
{:else}
|
||||
<ExerciceSolved theme={theme} exercice={$my.exercices[exercice.id]} />
|
||||
<ExerciceSolved
|
||||
{theme}
|
||||
exercice={$my.exercices[exercice.id]}
|
||||
/>
|
||||
{/if}
|
||||
{#if $my.exercices[exercice.id].video_uri}
|
||||
<ExerciceVideo uri={$my.exercices[exercice.id].video_uri} />
|
||||
|
@ -38,13 +38,13 @@
|
||||
on:click={goto(`/${theme.urlid}/${theme.exercices[k].urlid}`)}
|
||||
>
|
||||
<div class="row">
|
||||
<div class="col-1" style="margin-top: -0.5rem; margin-bottom: -0.5rem; text-align: right; border-right: 5px solid #{$my && $my.exercices[k] && $my.exercices[k].solved_rank ? '62c462' : 'aaa'}">
|
||||
<div class="col-1" style="margin-top: -0.5rem; margin-bottom: -0.5rem; text-align: right; border-right: 5px solid #{$my && $my.exercices[k] && $my.exercices[k].solved_rank ? '62c462' : 'bbb'}">
|
||||
</div>
|
||||
<div class="col-10">
|
||||
<div style="position: absolute; margin-left: calc(var(--bs-gutter-x) * -.5 - 15px); margin-top: -0.5rem;">
|
||||
<svg style="height: 50px; width: 23px;">
|
||||
<rect
|
||||
style="fill:#{$my && $my.exercices[k] && (index < 1 || $my.exercices[Object.keys(theme.exercices)[index-1]].solved_rank) ? '62c462' : 'aaa'}"
|
||||
style="fill:#{$my && $my.exercices[k] && (index < 1 || ($my.exercices[Object.keys(theme.exercices)[index-1]] && $my.exercices[Object.keys(theme.exercices)[index-1]].solved_rank)) ? '62c462' : 'bbb'}"
|
||||
width="5"
|
||||
height="30"
|
||||
x="10"
|
||||
|
@ -105,7 +105,7 @@
|
||||
</script>
|
||||
|
||||
<script>
|
||||
import 'bootstrap/dist/css/bootstrap.min.css';
|
||||
import '../fic.scss'
|
||||
import "bootstrap-icons/font/bootstrap-icons.css";
|
||||
|
||||
import {
|
||||
|
@ -29,7 +29,7 @@
|
||||
</script>
|
||||
|
||||
<Container class="my-3">
|
||||
<h1>
|
||||
<h1 class="text-dark">
|
||||
Votre équipe
|
||||
{#if $my}
|
||||
<small class="text-muted">{$my.name}</small>
|
||||
|
@ -20,7 +20,7 @@
|
||||
</script>
|
||||
|
||||
<Container fluid class="my-3">
|
||||
<h1>
|
||||
<h1 class="text-dark">
|
||||
{$settings.title}
|
||||
<small class="text-muted">Classement</small>
|
||||
</h1>
|
||||
|
@ -10,7 +10,7 @@
|
||||
</script>
|
||||
|
||||
<Container class="my-3">
|
||||
<h1>
|
||||
<h1 class="text-dark">
|
||||
{$settings.title}
|
||||
<small class="text-muted">Règles générales</small>
|
||||
</h1>
|
||||
|
@ -45,7 +45,7 @@
|
||||
</script>
|
||||
|
||||
<Container class="mt-3">
|
||||
<h1>
|
||||
<h1 class="text-dark">
|
||||
Challenges <em>{tag}</em>
|
||||
</h1>
|
||||
|
||||
|
114
password_paper/dingbat.log
Normal file
114
password_paper/dingbat.log
Normal file
@ -0,0 +1,114 @@
|
||||
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019 Gentoo Linux) (preloaded format=latex 2019.12.8) 12 DEC 2019 17:23
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**dingbat.ins
|
||||
(./dingbat.ins
|
||||
LaTeX2e <2018-12-01>
|
||||
(/usr/share/texmf-dist/tex/latex/base/docstrip.tex
|
||||
\blockLevel=\count80
|
||||
\emptyLines=\count81
|
||||
\processedLines=\count82
|
||||
\commentsRemoved=\count83
|
||||
\commentsPassed=\count84
|
||||
\codeLinesPassed=\count85
|
||||
\TotalprocessedLines=\count86
|
||||
\TotalcommentsRemoved=\count87
|
||||
\TotalcommentsPassed=\count88
|
||||
\TotalcodeLinesPassed=\count89
|
||||
\NumberOfFiles=\count90
|
||||
\inFile=\read1
|
||||
\inputcheck=\read2
|
||||
\off@0=\count91
|
||||
\off@1=\count92
|
||||
\off@2=\count93
|
||||
\off@3=\count94
|
||||
\off@4=\count95
|
||||
\off@5=\count96
|
||||
\off@6=\count97
|
||||
\off@7=\count98
|
||||
\off@8=\count99
|
||||
\off@9=\count100
|
||||
\off@10=\count101
|
||||
\off@11=\count102
|
||||
\off@12=\count103
|
||||
\off@13=\count104
|
||||
\off@14=\count105
|
||||
\off@15=\count106
|
||||
\@maxfiles=\count107
|
||||
\@maxoutfiles=\count108
|
||||
|
||||
Utility: `docstrip' 2.5g <2018/05/03>
|
||||
English documentation <2018/05/03>
|
||||
|
||||
**********************************************************
|
||||
* This program converts documented macro-files into fast *
|
||||
* loadable files by stripping off (nearly) all comments! *
|
||||
**********************************************************
|
||||
|
||||
********************************************************
|
||||
* No Configuration file found, using default settings. *
|
||||
********************************************************
|
||||
|
||||
)
|
||||
|
||||
Generating file(s) ./dingbat.sty
|
||||
\openout0 = `./dingbat.sty'.
|
||||
|
||||
|
||||
Processing file dingbat.dtx (package) -> dingbat.sty
|
||||
Lines processed: 329
|
||||
Comments removed: 277
|
||||
Comments passed: 1
|
||||
Codelines passed: 36
|
||||
|
||||
|
||||
Generating file(s) ./uark.fd
|
||||
\openout0 = `./uark.fd'.
|
||||
|
||||
|
||||
Processing file dingbat.dtx (uarkfd) -> uark.fd
|
||||
Lines processed: 329
|
||||
Comments removed: 277
|
||||
Comments passed: 1
|
||||
Codelines passed: 36
|
||||
|
||||
|
||||
Generating file(s) ./udingbat.fd
|
||||
\openout0 = `./udingbat.fd'.
|
||||
|
||||
|
||||
Processing file dingbat.dtx (udingbatfd) -> udingbat.fd
|
||||
Lines processed: 329
|
||||
Comments removed: 277
|
||||
Comments passed: 1
|
||||
Codelines passed: 36
|
||||
|
||||
***********************************************************
|
||||
*
|
||||
* To finish the installation, you have to move
|
||||
* dingbat.sty, uark.fd, ark10.mf, and dingbat.mf into
|
||||
* directories searched by TeX.
|
||||
*
|
||||
* To produce the documentation, run dingbat.dtx
|
||||
* through LaTeX.
|
||||
*
|
||||
* Happy TeXing!
|
||||
***********************************************************
|
||||
Overall statistics:
|
||||
Files processed: 3
|
||||
Lines processed: 987
|
||||
Comments removed: 831
|
||||
Comments passed: 3
|
||||
Codelines passed: 108
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
332 strings out of 494525
|
||||
3336 string characters out of 6176718
|
||||
60622 words of memory out of 5000000
|
||||
4103 multiletter control sequences out of 15000+600000
|
||||
3640 words of font info for 14 fonts, out of 8000000 for 9000
|
||||
14 hyphenation exceptions out of 8191
|
||||
11i,0n,15p,152b,129s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
|
||||
No pages of output.
|
Loading…
x
Reference in New Issue
Block a user