#!/bin/env python3

import yaml

translate = {
    "A" : "A",
    "B" : "B",
    "C" : "C",
    "D" : "D",
    "E" : "E",
    "F" : "F"
}

colors = {
    "A" : "#0C631E",
    "B" : "#6AD5CF",
    "C" : "#1B56D3",
    "D" : "#FF00FF",
    "E" : "#EF7A37",
    "F" : "#CF9F00"
}

pos = {
    "A" : "0,0!",
    "B" : "1,2!",
    "C" : "3,2!",
    "D" : "4,0!",
    "E" : "3,-2!",
    "F" : "1,-2!"
}

# On récupère la liste des gagnants
f = open("ligne_gagnants_partiels.txt", "r")
lineWinners = f.readlines()[0]
winners = lineWinners.split(" | ")[1].split("*")[0].split(" ")[0].split(",")

with open('matrice_duels_partiel.yaml','r') as data:
    dic = yaml.safe_load(data)
    o = open("graphe_partiel.dot", "w")
    o.write("""
Digraph G {
graph [dpi = 250, oneblock=true, outputorder=edgesfirst];
node [shape="plaintext"];
""")
    for liste in dic:
        if liste in winners:
            o.write(liste + " [style=filled fillcolor=white label=\"" + translate[liste] + "\" fontcolor=\"" + colors[liste] + "\" fontsize=18 pos=\"" + pos[liste] + "\" shape=rectangle]\n")
        else:
            o.write(liste + " [label=\"" + translate[liste] + "\" fontcolor=\"" + colors[liste] + "\" pos=\"" + pos[liste] + "\"]\n")
    o.write("\n")
    for liste in dic:
        for opp in dic[liste]["win"]:
            if dic[liste]["win"][opp] > dic[opp]["win"][liste]:
                o.write(liste + " -> " + opp + "[labeldistance=4 labelangle=-15 penwidth=1 headlabel=\"" + str(dic[liste]["win"][opp]) + ";" + str(dic[liste]["lose"][opp]) + "\" fontsize=9 color=\"" + colors[liste] + "\" fontcolor=\"" + colors[liste] + "\"]\n")
    o.write("}\n")
    o.close()

from graphviz import render
#render('dot', 'png', 'graphe_partiel.dot')
render('neato', 'png', 'graphe_partiel.dot')