Compare commits

..

No commits in common. "eb6427ec6c814650c734634682de9bd0f262acd8" and "cb95df096d3d7bcfcb1f6c6a07ed3f985f912b2a" have entirely different histories.

2 changed files with 20 additions and 82 deletions

3
go.mod
View File

@ -1,3 +0,0 @@
module git.nemunai.re/shemu
go 1.10

69
main.go
View File

@ -30,10 +30,9 @@ func Serve(w http.ResponseWriter, r *http.Request) {
<head>
<title>` + title + `</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<style>.table > tbody > tr > th, .table > tbody > tr > td { vertical-align: middle; }
td.danger { text-align: center; }
.hash { max-width: 150px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: inline-block; }
</style>
<script type="text/javascript">
function disp(rendus) {
@ -43,7 +42,6 @@ function disp(rendus) {
var row = document.createElement("tr");
var col = document.createElement("th");
col.id = login;
col.innerHTML = login;
row.appendChild(col);
@ -52,7 +50,7 @@ function disp(rendus) {
if (work) {
var col = document.createElement("td");
col.className = "success";
col.innerHTML = (new Intl.DateTimeFormat('default', { weekday: 'short', month: 'short', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' }).format(new Date(work["date"]))) + '<br><span class="hash" title="' + work["hash"] + '">' + work["hash"] + '</span>';
col.innerHTML = work["date"] + "<br>" + work["hash"];
row.appendChild(col);
} else {
var col = document.createElement("td");
@ -70,35 +68,6 @@ function disp(rendus) {
document.getElementById("head").appendChild(col);
});
}
function disp_std(rendus, login) {
Object.keys(rendus).map(function(label) {
var work = rendus[label];
var row = document.createElement("tr");
var col = document.createElement("th");
col.innerHTML = label;
row.appendChild(col);
if (work) {
var col = document.createElement("td");
col.className = "success";
col.innerHTML = (new Intl.DateTimeFormat('default', { weekday: 'long', month: 'long', day: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' }).format(new Date(work["date"]))) + '<br>' + work["hash"];
row.appendChild(col);
} else {
var col = document.createElement("td");
col.className = "danger";
col.innerHTML = "<span class=\"glyphicon glyphicon-remove\" aria-hidden=\"true\"></span>";
row.appendChild(col);
}
document.getElementById("students").appendChild(row);
});
var col = document.createElement("th");
col.innerHTML = login;
document.getElementById("head").appendChild(col);
}
</script>
</head>
<body class="container">
@ -111,16 +80,6 @@ function disp_std(rendus, login) {
</tbody>
</table>
<script type="text/javascript">
if (window.location.pathname[window.location.pathname.length - 1] != "/")
fetch(window.location.pathname.replace(".html", "") + ".json")
.then(function(response) {
return response.json();
})
.then(function(submissions) {
var spl = window.location.pathname.split("/")
disp_std(submissions, spl[spl.length - 1]);
});
else
fetch('rendus.json') // You can also fetch login_x.json
.then(function(response) {
return response.json();
@ -207,22 +166,11 @@ func ServeJSONStudent(w http.ResponseWriter, r *http.Request) {
}
}
type arrayFlags []string
func (i *arrayFlags) String() string {
return fmt.Sprintf("%v", *i)
}
func (i *arrayFlags) Set(value string) error {
*i = append(*i, value)
return nil
}
func main() {
var studentsFiles arrayFlags
var studentsFile string
var bind = flag.String("bind", "0.0.0.0:8081", "Bind port/socket")
flag.Var(&studentsFiles, "students", "Path to a CSV file containing in the third column the name of the directory to look for (can be repeated multiple times)")
flag.StringVar(&studentsFile, "students", "./students.csv", "Path to a CSV file containing in the third column the name of the directory to look for")
flag.StringVar(&rendusDir, "path", "./rendu/", "Path to the submissions directory (each subdirectory is a project)")
flag.StringVar(&title, "title", "Rendus VIRLI", "Title of the page")
flag.Parse()
@ -247,22 +195,15 @@ func main() {
// Read and parse students list
log.Println("Reading students files...")
for _, studentsFile := range studentsFiles {
log.Println("Reading", studentsFile, "...")
if studentsFile, err = filepath.Abs(studentsFile); err != nil {
log.Fatal(err)
} else if fi, err := os.Open(studentsFile); err != nil {
log.Fatal(err)
} else {
var nstudents [][]string
r := csv.NewReader(bufio.NewReader(fi))
if nstudents, err = r.ReadAll(); err != nil {
if students, err = r.ReadAll(); err != nil {
log.Fatal(err)
}
students = append(students, nstudents...)
}
}
log.Println(len(students), "students loaded.")