JSFiddle - React, Tailwind, and code Playground
HTML
<pre>
package main
import (
"bra"
"encoding/json"
"io/ioutil"
"log"
"os"
"path/filepath"
"sort"
"strconv"
"strings"
"time"
)
// pour l'instant la "fusion" n'est qu'un objet interne utilisé par la fonction Complète
type FusionVues struct {
Vues []*bra.Vue
}
func (fusion FusionVues) Len() int {
return len(fusion.Vues)
}
func (fusion FusionVues) Less(i, j int) bool {
return fusion.Vues[i].Time < fusion.Vues[j].Time
}
func (fusion FusionVues) Swap(i, j int) {
fusion.Vues[i], fusion.Vues[j] = fusion.Vues[j], fusion.Vues[i]
}
type MemDB struct {
vues map[uint]*bra.Vue // clef : id braldun
}
func (mdb *MemDB) Reçoit(vue *bra.Vue) {
vue.Time = time.Now().Unix()
log.Println(" Réception vue", vue.Voyeur, "v.Time :", vue.Time)
mdb.vues[vue.Voyeur] = vue
}
// renvoie true si la dernière maj de la vue de ce braldun est suffisamment ancienne
// pour qu'on en redemande une
func (mdb *MemDB) MajPossible(idBraldun uint) bool {
if v, ok := mdb.vues[idBraldun]; ok {
âge := time.Now().Unix() - v.Time
log.Println(" Maintenant :", time.Now().Unix())
log.Println(" v.Time :", v.Time)
log.Println(" Age vue en secondes :", âge)
return âge > 3*60*60
}
return true
}
func (mdb *MemDB) Fusionne(idBraldun uint, amis []*bra.CompteBraldop) []*bra.Vue {
fusion := new(FusionVues)
fusion.Vues = make([]*bra.Vue, 1, len(amis)+1)
var ok bool
if fusion.Vues[0], ok = mdb.vues[idBraldun]; !ok {
return nil // il faut au moins la vue du braldun principal
}
for _, ami := range amis {
if dvb, ok := mdb.vues[ami.IdBraldun]; ok {
fusion.Vues = append(fusion.Vues, dvb)
}
}
sort.Sort(fusion) // index faible : plus ancien
//> on ajoute le prénom du Braldun voyeur à chaque vue (faudrait faire ça ailleurs)
for _, vi := range fusion.Vues {
for _, b := range vi.Bralduns { // pas super joli...
...
JavaScript
$('body').click(function(){
var scrollPost = $(document).scrollTop();
alert(scrollPost);
});