170 lines
4.7 KiB
Java

package xyz.thastertyn.Display.Content;
import java.io.IOException;
import java.util.ArrayList;
import com.googlecode.lanterna.TextColor;
import com.googlecode.lanterna.graphics.SimpleTheme;
import com.googlecode.lanterna.gui2.Direction;
import com.googlecode.lanterna.gui2.GridLayout;
import com.googlecode.lanterna.gui2.Label;
import com.googlecode.lanterna.gui2.LinearLayout;
import com.googlecode.lanterna.gui2.Panel;
import com.googlecode.lanterna.gui2.WindowBasedTextGUI;
import com.googlecode.lanterna.gui2.dialogs.MessageDialog;
import xyz.thastertyn.Display.Dialogs.OptionsDialog;
import xyz.thastertyn.Tuples.Pair;
public class Znamky extends JecnaContent {
private Panel mainPanel = new Panel()
.setLayoutManager(new GridLayout(3));
private Label borderLabel = new Label("Znamky");
private xyz.thastertyn.Scrape.Znamky znamky = new xyz.thastertyn.Scrape.Znamky();
private boolean hasStarted = false;
@Override
public void download()
{
try{
znamky.downloadZnamky();
Panel predmetyPanel = new Panel()
.setLayoutManager(new LinearLayout(Direction.VERTICAL))
.setLayoutData(GridLayout.createLayoutData(
GridLayout.Alignment.BEGINNING,
GridLayout.Alignment.BEGINNING,
false,
false));
Panel znamkyPanel = new Panel()
.setLayoutManager(new LinearLayout(Direction.VERTICAL))
.setLayoutData(GridLayout.createLayoutData(
GridLayout.Alignment.BEGINNING,
GridLayout.Alignment.BEGINNING,
false,
false));
Panel vyslednaZnamkaPanel = new Panel().
setLayoutManager(new LinearLayout(Direction.VERTICAL))
.setLayoutData(GridLayout.createLayoutData(
GridLayout.Alignment.END,
GridLayout.Alignment.BEGINNING,
true,
false));
ArrayList<Pair<String, Pair<ArrayList<Pair<Integer, Double>>,Double>>> grades = znamky.getGrades();
TextColor.RGB vyborny = new TextColor.RGB(85,212,0);
TextColor.RGB chvalitebny = new TextColor.RGB(196,224,80);
TextColor.RGB dobry = new TextColor.RGB(255,213,42);
TextColor.RGB dostatecny = new TextColor.RGB(255,102,0);
TextColor.RGB nedostatecny = new TextColor.RGB(255,48,48);
for(Pair<String, Pair<ArrayList<Pair<Integer, Double>>,Double>> predmet : grades)
{
Panel jednotliveZnamky = new Panel().setLayoutManager(new LinearLayout(Direction.HORIZONTAL));
if(predmet.getValue1().getValue0().isEmpty())
{
jednotliveZnamky.addComponent(new Label(""));
}
for(Pair<Integer, Double> znamka : predmet.getValue1().getValue0())
{
Label znamkaLabel = new Label(znamka.getValue0() + "");
switch(znamka.getValue0())
{
case -1:
znamkaLabel.setText("N");
znamkaLabel.setTheme(new SimpleTheme(TextColor.ANSI.WHITE, TextColor.ANSI.BLACK));
break;
case 1:
znamkaLabel.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, vyborny));
break;
case 2:
znamkaLabel.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, chvalitebny));
break;
case 3:
znamkaLabel.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, dobry));
break;
case 4:
znamkaLabel.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, dostatecny));
break;
case 5:
znamkaLabel.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, nedostatecny));
break;
}
jednotliveZnamky.addComponent(znamkaLabel);
}
double prumer = predmet.getValue1().getValue1();
Label vysl = new Label(String.format("%.2f", prumer));
if(prumer >= 1 && prumer < 1.5)
{
vysl.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, vyborny));
}else if(prumer >= 1.5 && prumer < 2.5)
{
vysl.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, chvalitebny));
}else if(prumer >= 2.5 && prumer < 3.5)
{
vysl.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, dobry));
}else if(prumer >= 3.5 && prumer < 4.5)
{
vysl.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, dostatecny));
}else if(prumer >= 4.5)
{
vysl.setTheme(new SimpleTheme(TextColor.ANSI.BLACK, nedostatecny));
}
znamkyPanel.addComponent(jednotliveZnamky);
predmetyPanel.addComponent(new Label(predmet.getValue0()));
vyslednaZnamkaPanel.addComponent(vysl);
}
mainPanel.addComponent(predmetyPanel);
mainPanel.addComponent(znamkyPanel);
mainPanel.addComponent(vyslednaZnamkaPanel);
hasStarted = true;
}catch(IOException e)
{
mainPanel.addComponent(new Label("An error has occured"));
}
}
@Override
public Panel getPanel()
{
return mainPanel;
}
@Override
public boolean hasStarted()
{
return hasStarted;
}
@Override
public Label getLabel()
{
return borderLabel;
}
@Override
public void showOptions(WindowBasedTextGUI textGUI) {
OptionsDialog d = new OptionsDialog(znamky.getOptions());
d.showDialog(textGUI);
}
}