javascript presque au top, mais nécessite une refactorisation

pull/1/head
Nicolas Sanchez 3 years ago
parent 357e23d5da
commit c5d456ff3d

@ -0,0 +1,16 @@
[accueil]()
# Notes (BPCE-SI)
## A faire
- Voir les versions de .Net qu'on peut installer sur les serveurs batch PMM.
- Millesime 2022 liasse 2033 valeur 111 sur page A à renommer 111A
- Sujet Anaïs : Immatriculation avec données manquantes en base de données : 11315 509234258
- Modifier tâche de migration GIT avec les applis à migrer durant le sprint
- Voir Jean-Charles Bezard pour les grands clients nationnaux en fonction du grappage
- INC00100347
- Voir avec Julien la NDS semaine du 20/01/2023
- Regarder si on peut appareiller fichier index et xml dans SurveillanceSiren.
- Batch pour récupérer les siren confidentiels : tout le stock ou les mises à jour selon paramètre d'exécution.
## Terminé
- Correction connaissancefinclnt-v1 -> I35175
## Suivi Anaïs
- [Feedback 27/01/2023](anais-feedback-27-01-2023)

@ -0,0 +1,12 @@
# Notes
## Rust
*  [Idées](perso-idees)
*  [Crates](perso-crates)
*  [Cross-compilation](perso-cross)
## Mono
* [Installation](perso-mono-install)
## Divers
*   [Github](perso-github)
*   [Télécommande](perso-telecommande)
## BPCE-SI
- [Notes](BPCE-SI-Notes)

@ -0,0 +1,12 @@
# Suivi Anaïs
## Feedback Anaïs 27/01/2023
### Contexte
Après le départ de Fabien Vincent, tuteur d'Anaïs, je reprends sa suite en tant que tuteur. Ça fait trois mois que je suis Anaïs dans son travail. Anaïs entame sa deuxième année à BPCE-SI au sein de l'équipe Outils commerciaux.
### Feedback
Anaïs a travaillé sur plusieurs technologies :
- MyWay v2 (MIF2 questionnaire risque)
- MyWay v1 (maintenance sur connaissance client)
- Ressources REST (corrections code sous-secteur d'activité)
Elle a les capacités pour mener à bien les tâches qui lui sont confiées.
Cependant, avec son rythme école/entreprise, la variété des suites d'outils spécifiques à chaque technologie et les différentes applications, elle a du mal à être autonome. Je pense qu'il faudrait recentrer son travail sur une technologie et une application pour lui permettre d'acquérir plus de connaissances et gagner en autonomie.
De mon côté, il faut que je l'accompagne plus sur les tests en VFO afin de s'assurer de la qualité des développements. Je dois également essayer de plus la guider en évitant de lui donner la solution. L'objectif est d'analyser le code existant et de le comprendre pour pouvoir effectuer la tâche demandée et ainsi progresser.

@ -13,6 +13,16 @@ Il y a 4 niveaux de titres :
- `## titre 2`
- `### titre 3`
- `#### titre 4`
### **Gras**, *italic* etc.
|:Syntaxe:|:Résultat:|:Ok ?:|
|:`**gras**`|:**gras**|:|
|`*italic*`|*italic*||
|`__gras__`|__gras__||
|`_italic_`|_italic_||
|`***gras_italic***`|***gras_italic***||
|`___gras_italic___`|___gras_italic___|Non|
|`__*gras_italic*__`|__*gras_italic*__||
|````texte formaté````|`texte formaté`||
### Liens
Pour une url longue à laquelle on veut associer un libellé plus parlant, on choisira la syntaxe complète :
- [Wikipedia Markdown](https://fr.wikipedia.org/wiki/Markdown)
@ -22,7 +32,7 @@ Si on veut que le libellé corresponde à l'url, on pourra utiliser l'une des sy
> **A noter :** Les url du type `protocole://` s'ouvriront dans un nouvel onglet, tandis que les url pointant sur des pages internes s'ouvriront par défaut dans l'onglet actuel.
### Listes
#### Liste à puces
Les listes à puces peuvent avoir trois niveaux. On peut utiliser indifféremment `-`, `*` ou `+`.
Les listes à puces peuvent avoir trois niveaux. On peut utiliser indifféremment `-`, `*` ou `+`. (l'apparence de la puce ne dépend pas du symbole utilisé)
- élément de liste de niveau 1
- + élément de liste de niveau 2
- - - élément de liste de niveau 3
@ -42,13 +52,4 @@ La numérotation n'est pas automatique.
|Sanchez|Paul|6 ans|
|Sanchez|Elena|10 ans|
|Sanchez|Sunga|44 ans|
|Sanchez|Nicolas|44 ans|
### **Gras**, *italic* etc.
|Syntaxe|Résultat|
|`**gras**`|**gras**|
|`*italic*`|*italic*|
|`__gras__`|__gras__|
|`_italic_`|_italic_|
|`***gras_italic***`|***gras_italic***|
|`___gras_italic___`|___gras_italic___|
|````texte formaté````|`texte formaté`|
|Sanchez|Nicolas|44 ans|

@ -0,0 +1,21 @@
[retour](accueil)
# Crates
## [notify](https://crates.io/crates/notify)
Permet d'être informé de toute modification du système de fichier.  
[exemple](https://docs.rs/notify/latest/notify/)
## [preferences](https://crates.io/crates/preferences)
Une bibliothèque pour sauvegarder des préférences pour une application, s'adapte à l'OS.
## [pest](https://crates.io/crates/pest)
Exemple ([à tester ici](https://pest-parser.github.io/#editor)) :
> `alpha = { 'a'..'z' | 'A'..'Z' }`
> `digit = { '0'..'9' }`
> `cars = {" " | "\\""}`
> `ident = { (alpha | digit)+ }`
> `txt = { (alpha | digit | cars)+ }`
> `text = { """ ~ txt ~ """ }`
> `ident\_list = { !digit ~ ident ~ (" " ~ ident)+ }`
> `text\_list = { text ~ (" " ~ text)+ }`
## [calamine](https://crates.io/crates/calamine)
Bibliothèque de traitement de fichier Excel.
## [markdown](https://crates.io/crates/markdown)
> `markdown = "0.3"`

@ -0,0 +1,15 @@
[retour](accueil)
# Installation cross compilation (sous Debian pour windows avec sqlite)
> `cargo install -f cross`  
> `rustup target add x86_64-pc-windows-gnu`  
> `rustup target add x86_64-pc-windows-msvc`  
> `sudo apt install gcc-mingw-w64-x86-64-win32`  
> `sudo apt install g++-mingw-w64-x86-64-win32`  
## Exécution
> `cargo build --release --target x86_64-pc-windows-gnu`
ou  
> `cargo build --release --target x86_64-pc-windows-msvc`
# Avec sqlite (rusqlite)
> `sudo apt install libsqlite3-dev`
Dans `Cargo.toml`, définir rusqlite de cette manière :
> `rusqlite = {version = "0.28.0", features=["bundled"]}`

@ -0,0 +1,4 @@
# Github
## Token terminal
Mettre le token dans `user` et laisser `password` à blanc.
**token** : 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

@ -0,0 +1,2 @@
[accueil]()
# Idées

@ -0,0 +1,13 @@
[accueil]()
# Installation de mono
> `sudo apt install mono-complete`
## Installation de vscode-mono-debug
> `sudo apt install npm`  
> `git clone --recursive https://github.com/microsoft/vscode-mono-debug`
> `cd vscode-mono-debug`
> `npm install`
> `make`
sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

@ -0,0 +1,12 @@
[retour](accueil)
# Télécommande
## Trame de données
Une trame de 8 octets pour tous les cas.
|:Taille:|:Nom:|
|10b:|:trame|
|4b|type|
|10b|voie 1|
|10b|voie 2|
|10b|voie 3|
|10b|voie 4|
|10b|voie r|

@ -1,6 +1,12 @@
# Les poissons osseux
## Qui sont-ils ?
|Nom|Taille|Couleur|
|poisson rouge|petit|rouge|
|requin|grand|gris|
## Les différentes parties du poisson
Il y a :
- les nageoires
- les branchies
## De toutes les tailles et de toutes les couleurs
## Où vivent-ils ?
## Comment respirent-ils ?

@ -21,6 +21,7 @@ async fn main() -> std::io::Result<()> {
.app_data(web::Data::new(appdata.to_owned()))
.service(index::index)
.service(page::page)
.service(page::save_page)
//.service(page::page_link)
.service(actix_files::Files::new("/static", "./static"))
.service(actix_files::Files::new("/static/modules", "./static/modules"))

@ -1,7 +1,8 @@
use actix_web::web;
use actix_web::{Responder, get};
use actix_web::{web, HttpResponse};
use actix_web::{Responder, get, put};
use std::fs;
use std::io::Write;
//use regex::Regex;
use askama_actix::Template;
@ -30,6 +31,23 @@ async fn page(path: web::Path<(String,)>, data: web::Data<AppData>) -> impl Resp
PageTemplate { name, md, init }.to_response()
}
#[put("/page/{page}")]
async fn save_page(body: String, path: web::Path<(String,)>) -> impl Responder {
let pagename = &path.0;
if pagename == "index" {
return HttpResponse::Ok();
}
let filename = String::from("pages/") + pagename.as_str() + ".md";
let mut file = match fs::File::create(&filename) {
Ok(f) => f,
Err(_) => return HttpResponse::Unauthorized(),
};
match file.write_all(body.as_bytes()) {
Ok(_) => HttpResponse::Ok(),
Err(_) => HttpResponse::Unauthorized(),
}
}
/*#[get("/page/{oldpage}/{page}")]
async fn page_link(path: web::Path<(String, String,)>, data: web::Data<AppData>) -> impl Responder {
let pagename = &path.1;

@ -5,6 +5,7 @@ html {
body {
margin: 0;
background-color: #f6f6f6;
}
button {
@ -12,7 +13,40 @@ button {
height: 2.2rem;
}
div#buttons {
position: fixed;
background-color: #dddddddd;
border-bottom: 3px solid #ccccccdd;
top: 0;
left: 0;
right: 0;
height: 3rem;
margin-left: auto;
margin-right: auto;
max-width: 1200;
}
div#buttons #taButtonLabel {
position: relative;
font-size: 1.8rem;
top: +0.2rem;
}
div#buttons #lockButtonLabel {
position: relative;
font-size: 1.8rem;
top: +0.2rem;
}
div.ta {
margin-left: auto;
margin-right: auto;
max-width: 1200;
}
textarea#ta {
position: relative;
top: 3rem;
display: none;
width: 100%;
height: 15rem;
@ -22,6 +56,10 @@ textarea#ta {
}
div#mdnotes {
margin-top: 3rem;
margin-left: auto;
margin-right: auto;
max-width: 1200;
padding-top: 1rem;
padding-left: 3rem;
padding-right: 3rem;
@ -103,12 +141,12 @@ div#mdnotes div.ul1.bq1 { padding-left: 1.9rem; }
div#mdnotes div.ul1.bq2 { padding-left: 1.6rem; }
div#mdnotes div.ul1.bq3 { padding-left: 1.3rem; }
div#mdnotes div.ul2 { display:list-item; list-style-position: inside; padding-left: 2.7rem; padding-bottom: .2rem; padding-top: .2rem; }
div#mdnotes div.ul2 { display:list-item; list-style-position: inside; list-style-type: circle; padding-left: 2.7rem; padding-bottom: .2rem; padding-top: .2rem; }
div#mdnotes div.ul2.bq1 { padding-left: 2.4rem; }
div#mdnotes div.ul2.bq2 { padding-left: 2.1rem; }
div#mdnotes div.ul2.bq3 { padding-left: 1.8rem; }
div#mdnotes div.ul3 { display:list-item; list-style-position: inside; padding-left: 3.2rem; padding-bottom: .2rem; padding-top: .2rem; }
div#mdnotes div.ul3 { display:list-item; list-style-position: inside; list-style-type: square; padding-left: 3.2rem; padding-bottom: .2rem; padding-top: .2rem; }
div#mdnotes div.ul3.bq1 { padding-left: 2.9rem; }
div#mdnotes div.ul3.bq2 { padding-left: 2.6rem; }
div#mdnotes div.ul3.bq3 { padding-left: 2.3rem; }

@ -21,6 +21,7 @@ function save(textarea, div) {
}
}
textarea.value = text;
return text;
}
function emsp() {

@ -10,7 +10,7 @@ function timeoutSave() {
function ontextarea(e) {
let ta = document.getElementById('ta');
if (ta.style.display == 'none') {
if (ta.style.display != 'inline') {
ta.style.display = 'inline';
} else {
ta.style.display = 'none';
@ -18,7 +18,18 @@ function ontextarea(e) {
}
function onsave(e) {
save(document.getElementById('ta'), document.getElementById('mdnotes'));
let saveButton = document.getElementById('saveButton');
saveButton.disabled = true;
let text = save(document.getElementById('ta'), document.getElementById('mdnotes'));
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status != 200) {
saveButton.disabled = false;
alert(xhttp.responseText);
}
}
xhttp.open("PUT", document.location.href, true);
xhttp.send(text);
}
function onload(e) {
@ -27,6 +38,7 @@ function onload(e) {
function onedit(e) {
timeoutSave();
saveButton.disabled = false;
let ret = getStartPositionInLine();
let line = ret[0];
let position = ret[1];
@ -74,7 +86,9 @@ function onkeypress(e) {
if (e.key == 'Escape') {
e.preventDefault();
document.getElementById('mdnotes').blur();
onsave();
if (saveButton.disabled == false) {
onsave();
}
return false;
}
if (e.key == 'Enter') {
@ -86,7 +100,9 @@ function onkeyup(e) {
if (e.key == 'Escape') {
e.preventDefault();
document.getElementById('mdnotes').blur();
onsave();
if (saveButton.disabled == false) {
onsave();
}
return false;
}
}
@ -98,10 +114,21 @@ function onpaste(e) {
data = '[](' + data + ')';
e.clipBoard.setData('text/plain', data);
}
saveButton.disabled = false;
}
function oncopy(e) {
alert(e.clipboardData.getData('text/plain'));
//alert(e.clipboardData.getData('text/plain'));
}
function onlockbutton(e) {
let lockButton = document.getElementById('lockButton');
let mdnotes = document.getElementById('mdnotes');
if (lockButton.checked) {
mdnotes.contentEditable = false;
} else {
mdnotes.contentEditable = true;
}
}
var _dpwidth = null;
@ -135,9 +162,12 @@ function init(pagename = null) {
mdnotesdiv.addEventListener('blur', () => {redrawTables(mdnotesdiv);});
mdnotesdiv.addEventListener('focus', () => {redrawTables(mdnotesdiv, dpwidth());});
let saveButton = document.getElementById('saveButton');
saveButton.disabled = true;
saveButton.addEventListener('click', onsave);
let taButton = document.getElementById('taButton');
taButton.addEventListener('click', ontextarea);
let lockButton = document.getElementById('lockButton');
lockButton.addEventListener('click', onlockbutton);
onload();
}

@ -12,8 +12,8 @@
<script type="module" src="/static/modules/mdnotes.js"></script>
</head>
<body>
<div><button id="saveButton">💾</button> <button id="taButton">📋</button></div>
<textarea id="ta" class="mdnotes" spellcheck="false">{{md}}</textarea>
<div id="buttons"><button id="saveButton">💾</button> <input type="checkbox" id="taButton" /><label id="taButtonLabel" for="taButton">📋</label> <input type="checkbox" id="lockButton" /><label id="lockButtonLabel" for="lockButton">&#128065</label></div>
<div class="ta"><textarea id="ta" class="mdnotes" spellcheck="false">{{md}}</textarea></body><div>
<div id="mdnotes" class="mdnotes" contenteditable="true" spellcheck="false"></div>
<script type="module">

Loading…
Cancel
Save