MAJ V4.5.0

This commit is contained in:
pablo rodriguez 2024-05-19 21:19:21 +02:00
parent 599b4f46be
commit 3ce32c337c
28 changed files with 1673 additions and 499 deletions

Binary file not shown.

5
bin/.gitignore vendored
View File

@ -18,3 +18,8 @@
/enregistrer_modifications.png /enregistrer_modifications.png
/enregistrer_modifications.svg /enregistrer_modifications.svg
/enregistrer_modifications.svg.2024_05_18_15_52_08.0.svg /enregistrer_modifications.svg.2024_05_18_15_52_08.0.svg
/afficheprogression.png
/afficheprogression.svg
/afficheprogressionmini.png
/noafficheprogression.png
/noafficheprogressionmini.png

472
icons/addNewStudent.svg Normal file
View File

@ -0,0 +1,472 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"
inkscape:export-filename="listestudent.png"
sodipodi:docname="addNewStudent.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
id="svg8"
version="1.1"
viewBox="0 0 12.7 12.7"
height="48"
width="48"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2">
<linearGradient
id="k"
gradientTransform="matrix(7.3290847,0,0,7.3272888,-782.49722,-7149.5485)"
gradientUnits="userSpaceOnUse"
x1="122.75008"
x2="111.74973"
xlink:href="#b"
y1="991.62115"
y2="977.11713" />
<linearGradient
id="b">
<stop
offset="0"
stop-color="#0369a3"
id="stop7" />
<stop
offset="1"
stop-color="#1c99e0"
id="stop9" />
</linearGradient>
<linearGradient
id="j"
gradientUnits="userSpaceOnUse"
x1="108.00134"
x2="20.001341"
y1="122"
y2="6"
gradientTransform="translate(12)">
<stop
offset="0"
stop-color="#e6e6e6"
id="stop35" />
<stop
offset="1"
stop-color="#fff"
id="stop37" />
</linearGradient>
<linearGradient
id="i"
gradientUnits="userSpaceOnUse"
x1="108.00134"
x2="20.001341"
xlink:href="#b"
y1="130"
y2="14"
gradientTransform="translate(12)" />
<linearGradient
id="h"
gradientTransform="matrix(4.4999,0,0,3.66665,-930.97741,2199.6564)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="-581.63782"
y2="-578.63782">
<stop
offset="0"
stop-color="#63bbee"
id="stop29" />
<stop
offset="1"
stop-color="#aadcf7"
id="stop31" />
</linearGradient>
<linearGradient
id="g"
gradientTransform="matrix(-4.19983,0,0,3.9111,1552.9405,-4523.1636)"
gradientUnits="userSpaceOnUse"
x2="0"
xlink:href="#a"
y1="1173"
y2="1178" />
<linearGradient
id="a">
<stop
offset="0"
stop-color="#666"
id="stop2" />
<stop
offset="1"
stop-color="#333"
id="stop4" />
</linearGradient>
<linearGradient
id="f"
gradientTransform="matrix(4.19983,0,0,3.9111,-1380.9394,-4521.9436)"
gradientUnits="userSpaceOnUse"
x2="0"
xlink:href="#a"
y1="1173"
y2="1178" />
<linearGradient
id="e"
gradientTransform="matrix(1.19997,0,0,1.22222,-269.19161,858.5534)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="-629.66907"
y2="-635.54944">
<stop
offset="0"
stop-color="#18a303"
id="stop22" />
<stop
offset="1"
stop-color="#106802"
id="stop24" />
</linearGradient>
<linearGradient
id="d"
gradientTransform="matrix(4.19983,0,0,3.9111,-1380.9394,-4517.0536)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="1173"
y2="1178">
<stop
offset="0"
stop-color="#0369a3"
id="stop17" />
<stop
offset="1"
stop-color="#023f62"
id="stop19" />
</linearGradient>
<linearGradient
id="c"
gradientTransform="matrix(0,0.791084,-1.28,0,1511.6005,-282.0136)"
gradientUnits="userSpaceOnUse"
x1="445.69522"
x2="441.38797"
y1="1103.5776"
y2="1099.8198">
<stop
offset="0"
stop-color="#e9b913"
id="stop12" />
<stop
offset="1"
stop-color="#ff0"
id="stop14" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#b"
id="linearGradient4157"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(7.9997394,0,0,7.9977793,-859.65065,-7810.3938)"
x1="122.75008"
y1="991.62115"
x2="111.74973"
y2="977.11713" />
</defs>
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:window-height="1009"
inkscape:window-width="1920"
inkscape:guide-bbox="true"
showguides="true"
units="px"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="28.145333"
inkscape:cx="20.992889"
inkscape:zoom="10.76555"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:pagecheckerboard="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-global="false"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1">
<sodipodi:guide
id="guide14"
orientation="1,0"
position="-2.471617e-08,4.4381936"
inkscape:locked="false" />
<sodipodi:guide
position="-0.24253472,-0.26458333"
orientation="-0.71816555,0.69587229"
id="guide5772"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Calque 1"
transform="translate(-0.92013353,-0.34176359)">
<g
id="g6608"
transform="matrix(0.76215268,0,0,0.75860347,20.419626,10.683336)"
style="stroke-width:1.21708">
<g
id="g2"
transform="matrix(1.1126819,0,0,1.0689509,-1.0567243,-0.60391678)">
<path
id="path4945"
style="fill:#b3b3b3;stroke:#000000;stroke-width:0.200713;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 6.448524,4.1578515 A 2.5406649,2.4821629 0 0 0 3.9075938,6.6403872 2.5406649,2.4821629 0 0 0 6.448524,9.1224062 2.5406649,2.4821629 0 0 0 8.0241383,8.5870385 L 8.590512,9.1559961 8.958965,8.730699 8.4272144,8.1968815 A 2.5406649,2.4821629 0 0 0 8.9889372,6.6403872 2.5406649,2.4821629 0 0 0 6.448524,4.1578515 Z m 0,0.5539713 A 1.9739749,1.9285217 0 0 1 8.4220468,6.6403872 1.9739749,1.9285217 0 0 1 6.448524,8.5684348 1.9739749,1.9285217 0 0 1 4.4744842,6.6403872 1.9739749,1.9285217 0 0 1 6.448524,4.7118228 Z" />
<path
style="fill:#ff0000;stroke:none;stroke-width:0.322019px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 9.2441621,8.53155 2.9328089,2.944082 c 0.0419,0.512292 -0.280235,0.819082 -0.875635,0.903687 L 8.3690939,9.4346523 C 8.6546945,9.0611151 8.873339,8.7906209 9.2441621,8.53155 Z"
id="path5444"
sodipodi:nodetypes="ccccc" />
</g>
</g>
<g
id="g1"
transform="matrix(0.08485361,0,0,0.08631596,18.493169,0.67154427)">
<g
id="g4179"
transform="matrix(1.091506,0,0,1.091506,-5.550275,-6.6190888)"
style="stroke-width:0.916165">
<path
style="fill:url(#k);stroke-width:0.916165"
d="m 33.356573,1.223906 c -0.25037,0 -0.50072,0.011156 -0.75,0.035156 -3.66708,0.6998 -4.56576,2.2662469 -4.5,5.9980469 V 123.22586 c 4e-4,4.1875 1.81149,5.99765 6,5.99805 h 91.998057 c 4.1885,-4e-4 5.99764,-1.81055 5.99804,-5.99805 V 51.4075 c 0.048,-2.1119 -0.78004,-4.230247 -2.25,-5.748047 L 87.692523,3.5090622 c -1.51819,-1.4691999 -3.63759,-2.2988999 -5.75,-2.25 h -47.83595 c -0.24919,-0.024 -0.49962,-0.035156 -0.75,-0.035156 z"
id="path41" />
<path
d="M 34.104633,7.2239059 V 123.22391 H 126.10465 V 51.223906 L 82.104653,7.2239059 Z"
fill="url(#j)"
id="path43"
style="fill:#000080;stroke-width:0.916165" />
</g>
<path
style="fill:url(#linearGradient4157);stroke-width:1"
d="m 131.22533,55.778801 c 0.38078,0 0.7607,-0.03052 1.13694,-0.08855 4.82817,-1.546485 6.45292,-8.894004 2.73075,-12.350381 L 91.397403,-0.58243478 C 87.360856,-4.4299678 79.32347,-1.1377203 79.110793,4.4505138 V 48.372824 c 4.36e-4,3.833024 3.469037,7.316888 7.281987,7.317433 h 43.69209 c 0.37643,0.05804 0.75972,0.08855 1.14046,0.08855 z"
id="path4056" />
<text
xml:space="preserve"
style="font-size:53.1628px;line-height:1.25;font-family:'C.A. Gatintas';-inkscape-font-specification:'C.A. Gatintas';text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:3.0916"
x="88.898773"
y="96.537178"
id="text3199"
transform="scale(0.90538451,1.1045031)"><tspan
sodipodi:role="line"
id="tspan3197"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:arial;-inkscape-font-specification:arial;fill:#ffffff;stroke-width:3.0916"
x="88.898773"
y="96.537178">CSV</tspan></text>
</g>
<g
id="g6"
transform="translate(9.3985307,7.983748)">
<rect
style="fill:#00ff00;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel"
id="rect4"
width="5.1373262"
height="4.7845492"
x="8.1961746"
y="5.7877703"
ry="0.9260416" />
<g
id="g23"
transform="matrix(0.04473207,0,0,0.04550297,1.4115291,3.3967797)">
<path
style="fill:#ffe6d5;stroke:none;stroke-width:2.92119;stroke-linecap:round;stroke-linejoin:bevel"
d="m 205.01263,120.83445 -10.39372,-6.8969 -5.19686,-10.98395 -3.89764,-1.53264 -1.29921,-8.429546 2.59842,-3.831611 1.55906,-1.532645 v -8.174104 l 21.30712,3.065289 19.74807,-4.087051 0.51968,8.684984 2.85827,3.831611 1.03937,5.875137 -2.07874,5.875136 -3.11811,1.53264 -3.89765,9.45131 -7.53544,5.87514 -4.15749,2.29896 z"
id="path16" />
<g
id="g22"
transform="matrix(0.10531373,0,0,0.10352952,149.66975,64.802716)"
style="fill:#0066ff;stroke-width:29.6078">
<g
transform="matrix(0.08797553,0,0,-0.08797553,124.40311,399.9922)"
id="g21"
style="fill:#0066ff;stroke-width:33.6545">
<path
d="M 3122.6,4604.2 C 2231.7,4380.5 1476.5,4187.4 1444,4174 c -68.8,-28.7 -114.7,-107.1 -114.7,-193.1 0,-42.1 19.1,-76.5 63.1,-120.4 l 61.2,-61.2 554.4,-63.1 c 305.9,-34.4 1152.8,-128.1 1883.1,-210.3 l 1328.7,-149.1 1508.4,380.5 c 827.8,208.4 1514.1,378.5 1523.7,378.5 9.6,0 17.2,-275.3 17.2,-636.6 V 2864.5 L 8078,2673.3 c -286.8,-284.9 -286.8,-237.1 -3.8,-804.9 191.2,-382.4 242.8,-470.3 290.6,-495.2 78.4,-40.1 158.7,-36.3 217.9,11.5 68.8,53.5 489.4,892.8 489.4,973.1 0,89.9 -40.1,147.2 -227.5,334.6 l -174,172.1 v 806.8 808.7 l -53.5,59.3 -53.5,61.2 L 6690,4807 c -1028.6,114.7 -1888.9,206.5 -1909.9,206.5 -21,-0.2 -766.6,-185.6 -1657.5,-409.3 z"
id="path17"
style="fill:#0066ff;stroke-width:33.6545" />
<path
d="m 6340.2,3243 -1099.3,-275.3 -1344,149.1 -1344,149.1 v -569.7 -569.7 l -103.2,-99.4 C 2260.4,1839.7 2170.6,1596.9 2157.2,1218.4 2140,816.9 2229.9,493.8 2411.5,293.1 2484,212.7 2642.7,121 2711.5,121 c 17.2,0 32.5,-15.3 32.5,-32.5 0,-63.1 191.2,-510.5 298.2,-697.8 369,-651.9 892.8,-1091.7 1491.2,-1248.4 290.6,-76.5 642.4,-76.5 933,0 728.4,191.2 1345.9,803 1693.9,1676.7 51.7,133.7 95.7,256.1 95.7,273.3 0,15.3 15.3,28.7 34.4,28.7 66.9,0 225.6,91.8 298.3,172.1 181.6,200.7 271.5,523.8 256.2,925.3 -15.3,380.5 -110.9,629 -307.8,808.7 l -80.3,70.7 -9.6,709.3 -9.6,709.3 z M 3222,2375 c 229.4,-65 602.2,-135.7 908.1,-174 137.7,-15.3 435.9,-24.8 869.9,-24.8 694,0 869.9,13.4 1328.7,97.5 216,38.2 575.5,130 686.4,172.1 34.4,13.4 36.3,3.8 22.9,-273.4 l -13.4,-286.8 49.7,-59.3 c 32.5,-40.1 76.5,-65 130,-74.6 70.7,-15.3 86,-26.8 133.8,-114.7 149.1,-277.2 135.8,-812.5 -22.9,-1036.2 -40.1,-57.4 -45.9,-57.4 -154.9,-45.9 -107.1,9.6 -114.7,7.6 -170.2,-45.9 -30.6,-32.5 -65,-95.6 -78.4,-141.5 -239,-948.3 -887.1,-1692 -1604,-1844.9 -166.3,-34.4 -443.6,-34.4 -613.7,1.9 -671,141.5 -1267.5,774.3 -1540.9,1634.6 -38.2,120.4 -78.4,244.7 -89.9,275.3 -36.3,99.4 -187.4,156.8 -281,107.1 -51.6,-28.7 -124.3,66.9 -175.9,235.2 -63.1,196.9 -61.2,560.2 1.9,739.9 61.2,174 99.4,221.8 191.2,237.1 51.6,7.6 89.9,30.6 124.3,70.7 l 49.7,59.3 -11.5,288.7 c -13.4,277.2 -13.4,286.8 22.9,273.4 19.3,-7.7 126.3,-40.2 237.2,-70.8 z"
id="path18"
style="fill:#0066ff;stroke-width:33.6545" />
<path
d="m 3841.4,1279.5 c -72.6,-72.7 -84.1,-147.2 -38.2,-239 44,-82.2 103.2,-97.5 391.9,-97.5 233.2,0 269.6,3.8 311.6,38.2 114.7,89.9 109,254.3 -11.5,326.9 -51.6,30.6 -97.5,36.3 -323.1,36.3 h -265.7 z"
id="path19"
style="fill:#0066ff;stroke-width:33.6545" />
<path
d="m 5504.7,1308.2 c -68.8,-42.1 -110.9,-143.4 -91.7,-219.9 5.7,-26.8 38.2,-70.7 68.8,-97.5 53.5,-45.9 66.9,-47.8 321.2,-47.8 288.7,0 340.3,13.4 388.1,95.6 53.5,87.9 42.1,166.3 -32.5,240.9 l -65,65 h -263.8 c -227.6,0 -273.5,-5.7 -325.1,-36.3 z"
id="path20"
style="fill:#0066ff;stroke-width:33.6545" />
<path
d="m 2352.1,-1601.6 c -326.9,-114.7 -663.4,-242.8 -749.4,-282.9 -265.7,-128.1 -478,-281 -713.1,-518.1 C 576,-2714.3 381,-3025.9 251,-3415.9 145.9,-3735.2 122.9,-3869 111.4,-4270.5 l -11.4,-367.1 68.8,-68.8 66.9,-66.9 H 5000 9764.3 l 66.9,66.9 68.8,68.8 -11.5,367.1 c -9.6,296.3 -19.1,405.3 -57.4,567.8 -128.1,535.3 -344.1,927.2 -728.4,1309.6 -233.2,233.3 -420.6,367.1 -709.3,506.6 -214.1,103.3 -1332.5,497.1 -1412.8,497.1 -36.3,0 -95.6,-42 -227.5,-166.3 -409.1,-384.3 -759,-585 -1229.3,-705.5 -183.5,-47.8 -244.7,-53.5 -504.7,-55.4 -424.4,0 -674.9,57.4 -1061.1,248.5 -242.8,120.5 -462.7,277.2 -711.2,512.4 -151,141.5 -187.4,166.3 -239,164.4 -34.3,-1.9 -328.8,-95.6 -655.7,-210.3 z"
id="path21"
style="fill:#dd55ff;stroke-width:33.6545" />
</g>
</g>
</g>
</g>
<g
id="g379"
transform="matrix(0.01113254,0,0,0.01113254,-13.457508,12.852851)"
style="fill:#000000;stroke-width:23.7666">
<g
transform="matrix(0.08797553,0,0,-0.08797553,110.05744,434.06317)"
id="g377"
style="fill:#000000;stroke-width:27.0149">
<path
d="M 3122.6,4604.2 C 2231.7,4380.5 1476.5,4187.4 1444,4174 c -68.8,-28.7 -114.7,-107.1 -114.7,-193.1 0,-42.1 19.1,-76.5 63.1,-120.4 l 61.2,-61.2 554.4,-63.1 c 305.9,-34.4 1152.8,-128.1 1883.1,-210.3 l 1328.7,-149.1 1508.4,380.5 c 827.8,208.4 1514.1,378.5 1523.7,378.5 9.6,0 17.2,-275.3 17.2,-636.6 V 2864.5 L 8078,2673.3 c -286.8,-284.9 -286.8,-237.1 -3.8,-804.9 191.2,-382.4 242.8,-470.3 290.6,-495.2 78.4,-40.1 158.7,-36.3 217.9,11.5 68.8,53.5 489.4,892.8 489.4,973.1 0,89.9 -40.1,147.2 -227.5,334.6 l -174,172.1 v 806.8 808.7 l -53.5,59.3 -53.5,61.2 L 6690,4807 c -1028.6,114.7 -1888.9,206.5 -1909.9,206.5 -21,-0.2 -766.6,-185.6 -1657.5,-409.3 z"
id="path367"
style="fill:#000000;stroke-width:27.0149" />
<path
d="m 6340.2,3243 -1099.3,-275.3 -1344,149.1 -1344,149.1 v -569.7 -569.7 l -103.2,-99.4 C 2260.4,1839.7 2170.6,1596.9 2157.2,1218.4 2140,816.9 2229.9,493.8 2411.5,293.1 2484,212.7 2642.7,121 2711.5,121 c 17.2,0 32.5,-15.3 32.5,-32.5 0,-63.1 191.2,-510.5 298.2,-697.8 369,-651.9 892.8,-1091.7 1491.2,-1248.4 290.6,-76.5 642.4,-76.5 933,0 728.4,191.2 1345.9,803 1693.9,1676.7 51.7,133.7 95.7,256.1 95.7,273.3 0,15.3 15.3,28.7 34.4,28.7 66.9,0 225.6,91.8 298.3,172.1 181.6,200.7 271.5,523.8 256.2,925.3 -15.3,380.5 -110.9,629 -307.8,808.7 l -80.3,70.7 -9.6,709.3 -9.6,709.3 z M 3222,2375 c 229.4,-65 602.2,-135.7 908.1,-174 137.7,-15.3 435.9,-24.8 869.9,-24.8 694,0 869.9,13.4 1328.7,97.5 216,38.2 575.5,130 686.4,172.1 34.4,13.4 36.3,3.8 22.9,-273.4 l -13.4,-286.8 49.7,-59.3 c 32.5,-40.1 76.5,-65 130,-74.6 70.7,-15.3 86,-26.8 133.8,-114.7 149.1,-277.2 135.8,-812.5 -22.9,-1036.2 -40.1,-57.4 -45.9,-57.4 -154.9,-45.9 -107.1,9.6 -114.7,7.6 -170.2,-45.9 -30.6,-32.5 -65,-95.6 -78.4,-141.5 -239,-948.3 -887.1,-1692 -1604,-1844.9 -166.3,-34.4 -443.6,-34.4 -613.7,1.9 -671,141.5 -1267.5,774.3 -1540.9,1634.6 -38.2,120.4 -78.4,244.7 -89.9,275.3 -36.3,99.4 -187.4,156.8 -281,107.1 -51.6,-28.7 -124.3,66.9 -175.9,235.2 -63.1,196.9 -61.2,560.2 1.9,739.9 61.2,174 99.4,221.8 191.2,237.1 51.6,7.6 89.9,30.6 124.3,70.7 l 49.7,59.3 -11.5,288.7 c -13.4,277.2 -13.4,286.8 22.9,273.4 19.3,-7.7 126.3,-40.2 237.2,-70.8 z"
id="path369"
style="fill:#000000;stroke-width:27.0149" />
<path
d="m 3841.4,1279.5 c -72.6,-72.7 -84.1,-147.2 -38.2,-239 44,-82.2 103.2,-97.5 391.9,-97.5 233.2,0 269.6,3.8 311.6,38.2 114.7,89.9 109,254.3 -11.5,326.9 -51.6,30.6 -97.5,36.3 -323.1,36.3 h -265.7 z"
id="path371"
style="fill:#000000;stroke-width:27.0149" />
<path
d="m 5504.7,1308.2 c -68.8,-42.1 -110.9,-143.4 -91.7,-219.9 5.7,-26.8 38.2,-70.7 68.8,-97.5 53.5,-45.9 66.9,-47.8 321.2,-47.8 288.7,0 340.3,13.4 388.1,95.6 53.5,87.9 42.1,166.3 -32.5,240.9 l -65,65 h -263.8 c -227.6,0 -273.5,-5.7 -325.1,-36.3 z"
id="path373"
style="fill:#000000;stroke-width:27.0149" />
<path
d="m 2352.1,-1601.6 c -326.9,-114.7 -663.4,-242.8 -749.4,-282.9 -265.7,-128.1 -478,-281 -713.1,-518.1 C 576,-2714.3 381,-3025.9 251,-3415.9 145.9,-3735.2 122.9,-3869 111.4,-4270.5 l -11.4,-367.1 68.8,-68.8 66.9,-66.9 H 5000 9764.3 l 66.9,66.9 68.8,68.8 -11.5,367.1 c -9.6,296.3 -19.1,405.3 -57.4,567.8 -128.1,535.3 -344.1,927.2 -728.4,1309.6 -233.2,233.3 -420.6,367.1 -709.3,506.6 -214.1,103.3 -1332.5,497.1 -1412.8,497.1 -36.3,0 -95.6,-42 -227.5,-166.3 -409.1,-384.3 -759,-585 -1229.3,-705.5 -183.5,-47.8 -244.7,-53.5 -504.7,-55.4 -424.4,0 -674.9,57.4 -1061.1,248.5 -242.8,120.5 -462.7,277.2 -711.2,512.4 -151,141.5 -187.4,166.3 -239,164.4 -34.3,-1.9 -328.8,-95.6 -655.7,-210.3 z"
id="path375"
style="fill:#000000;stroke-width:27.0149" />
</g>
</g>
<g
id="g5"
transform="matrix(0.08485361,0,0,0.08631596,16.262976,-6.3747231)">
<rect
style="fill:#00ff00;stroke-width:11.6848;stroke-linecap:round;stroke-linejoin:bevel"
id="rect3"
width="60.5434"
height="55.430641"
x="89.144531"
y="-5.2591376"
ry="10.72851" />
<g
id="g3"
transform="matrix(0.32167629,0,0,0.32167629,93.380516,1.8281726)"
style="stroke-width:27.2434">
<path
style="fill:#ffffff;stroke:#ff0000;stroke-width:27.2434;stroke-linecap:round;stroke-linejoin:bevel"
d="M 14.028074,-2.2879778 147.84718,130.5412"
id="path1" />
<path
style="fill:#ffffff;stroke:#ff0000;stroke-width:27.2434;stroke-linecap:round;stroke-linejoin:bevel"
d="M 147.84718,-2.2879778 14.028074,130.5412"
id="path2" />
</g>
</g>
<g
id="g9"
transform="matrix(0.10400523,0,0,0.10579764,-12.771526,-5.2392046)">
<path
id="path8"
style="fill:#ffe6d5;stroke:#000000;stroke-width:2.38328;stroke-linecap:round;stroke-linejoin:bevel"
d="m 231.67865,74.184632 -10.16583,2.491075 -10.18571,2.505728 -12.45141,-1.35788 -12.4514,-1.35788 v 5.192181 5.187296 l -0.95895,0.903625 c -1.75387,1.70685 -2.58376,3.918367 -2.70791,7.365766 -0.15936,3.656884 0.67261,6.602587 2.35514,8.430577 0.67171,0.73229 2.145,1.56791 2.78243,1.56791 0.15936,0 0.29812,0.13641 0.29812,0.29307 0,0.57472 1.77121,4.65363 2.76256,6.35957 3.4188,5.93754 8.2736,9.9389 13.81779,11.36613 2.69241,0.69677 5.95301,0.69677 8.64543,0 6.74864,-1.74146 12.46673,-7.31111 15.69095,-15.26882 0.47901,-1.21774 0.88939,-2.33441 0.88939,-2.49107 0,-0.13935 0.14103,-0.25888 0.31799,-0.25888 0.61983,0 2.089,-0.83653 2.76257,-1.56791 1.68252,-1.82799 2.51676,-4.773693 2.375,-8.430577 -0.14175,-3.465615 -1.02771,-5.729048 -2.85199,-7.365766 l -0.7453,-0.639864 -0.0894,-6.46214 z" />
<g
id="g570"
transform="matrix(0.10531373,0,0,0.10352952,149.66975,64.802716)"
style="fill:#000000;stroke-width:29.6078">
<g
transform="matrix(0.08797553,0,0,-0.08797553,124.40311,399.9922)"
id="g568"
style="fill:#000000;stroke-width:33.6545">
<path
d="M 3122.6,4604.2 C 2231.7,4380.5 1476.5,4187.4 1444,4174 c -68.8,-28.7 -114.7,-107.1 -114.7,-193.1 0,-42.1 19.1,-76.5 63.1,-120.4 l 61.2,-61.2 554.4,-63.1 c 305.9,-34.4 1152.8,-128.1 1883.1,-210.3 l 1328.7,-149.1 1508.4,380.5 c 827.8,208.4 1514.1,378.5 1523.7,378.5 9.6,0 17.2,-275.3 17.2,-636.6 V 2864.5 L 8078,2673.3 c -286.8,-284.9 -286.8,-237.1 -3.8,-804.9 191.2,-382.4 242.8,-470.3 290.6,-495.2 78.4,-40.1 158.7,-36.3 217.9,11.5 68.8,53.5 489.4,892.8 489.4,973.1 0,89.9 -40.1,147.2 -227.5,334.6 l -174,172.1 v 806.8 808.7 l -53.5,59.3 -53.5,61.2 L 6690,4807 c -1028.6,114.7 -1888.9,206.5 -1909.9,206.5 -21,-0.2 -766.6,-185.6 -1657.5,-409.3 z"
id="path558"
style="fill:#800080;stroke-width:33.6545" />
<path
d="m 3841.4,1279.5 c -72.6,-72.7 -84.1,-147.2 -38.2,-239 44,-82.2 103.2,-97.5 391.9,-97.5 233.2,0 269.6,3.8 311.6,38.2 114.7,89.9 109,254.3 -11.5,326.9 -51.6,30.6 -97.5,36.3 -323.1,36.3 h -265.7 z"
id="path562"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 5504.7,1308.2 c -68.8,-42.1 -110.9,-143.4 -91.7,-219.9 5.7,-26.8 38.2,-70.7 68.8,-97.5 53.5,-45.9 66.9,-47.8 321.2,-47.8 288.7,0 340.3,13.4 388.1,95.6 53.5,87.9 42.1,166.3 -32.5,240.9 l -65,65 h -263.8 c -227.6,0 -273.5,-5.7 -325.1,-36.3 z"
id="path564"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 2352.1,-1601.6 c -326.9,-114.7 -663.4,-242.8 -749.4,-282.9 -265.7,-128.1 -478,-281 -713.1,-518.1 C 576,-2714.3 381,-3025.9 251,-3415.9 145.9,-3735.2 122.9,-3869 111.4,-4270.5 l -11.4,-367.1 68.8,-68.8 66.9,-66.9 H 5000 9764.3 l 66.9,66.9 68.8,68.8 -11.5,367.1 c -9.6,296.3 -19.1,405.3 -57.4,567.8 -128.1,535.3 -344.1,927.2 -728.4,1309.6 -233.2,233.3 -420.6,367.1 -709.3,506.6 -214.1,103.3 -1332.5,497.1 -1412.8,497.1 -36.3,0 -95.6,-42 -227.5,-166.3 -409.1,-384.3 -759,-585 -1229.3,-705.5 -183.5,-47.8 -244.7,-53.5 -504.7,-55.4 -424.4,0 -674.9,57.4 -1061.1,248.5 -242.8,120.5 -462.7,277.2 -711.2,512.4 -151,141.5 -187.4,166.3 -239,164.4 -34.3,-1.9 -328.8,-95.6 -655.7,-210.3 z"
id="path566"
style="fill:#800080;stroke-width:33.6545" />
</g>
</g>
</g>
<g
id="g26"
transform="matrix(0.10400523,0,0,0.10579764,-13.400521,-3.0189787)">
<path
id="path12"
style="fill:#ffe6d5;stroke:#000000;stroke-width:2.38328;stroke-linecap:round;stroke-linejoin:bevel"
d="m 231.67865,74.184632 -10.16583,2.491075 -10.18571,2.505728 -12.45141,-1.35788 -12.4514,-1.35788 v 5.192181 5.187296 l -0.95895,0.903625 c -1.75387,1.70685 -2.58376,3.918367 -2.70791,7.365766 -0.15936,3.656884 0.67261,6.602587 2.35514,8.430577 0.67171,0.73229 2.145,1.56791 2.78243,1.56791 0.15936,0 0.29812,0.13641 0.29812,0.29307 0,0.57472 1.77121,4.65363 2.76256,6.35957 3.4188,5.93754 8.2736,9.9389 13.81779,11.36613 2.69241,0.69677 5.95301,0.69677 8.64543,0 6.74864,-1.74146 12.46673,-7.31111 15.69095,-15.26882 0.47901,-1.21774 0.88939,-2.33441 0.88939,-2.49107 0,-0.13935 0.14103,-0.25888 0.31799,-0.25888 0.61983,0 2.089,-0.83653 2.76257,-1.56791 1.68252,-1.82799 2.51676,-4.773693 2.375,-8.430577 -0.14175,-3.465615 -1.02771,-5.729048 -2.85199,-7.365766 l -0.7453,-0.639864 -0.0894,-6.46214 z" />
<g
id="g25"
transform="matrix(0.10531373,0,0,0.10352952,149.66975,64.802716)"
style="fill:#000000;stroke-width:29.6078">
<g
transform="matrix(0.08797553,0,0,-0.08797553,124.40311,399.9922)"
id="g24"
style="fill:#000000;stroke-width:33.6545">
<path
d="M 3122.6,4604.2 C 2231.7,4380.5 1476.5,4187.4 1444,4174 c -68.8,-28.7 -114.7,-107.1 -114.7,-193.1 0,-42.1 19.1,-76.5 63.1,-120.4 l 61.2,-61.2 554.4,-63.1 c 305.9,-34.4 1152.8,-128.1 1883.1,-210.3 l 1328.7,-149.1 1508.4,380.5 c 827.8,208.4 1514.1,378.5 1523.7,378.5 9.6,0 17.2,-275.3 17.2,-636.6 V 2864.5 L 8078,2673.3 c -286.8,-284.9 -286.8,-237.1 -3.8,-804.9 191.2,-382.4 242.8,-470.3 290.6,-495.2 78.4,-40.1 158.7,-36.3 217.9,11.5 68.8,53.5 489.4,892.8 489.4,973.1 0,89.9 -40.1,147.2 -227.5,334.6 l -174,172.1 v 806.8 808.7 l -53.5,59.3 -53.5,61.2 L 6690,4807 c -1028.6,114.7 -1888.9,206.5 -1909.9,206.5 -21,-0.2 -766.6,-185.6 -1657.5,-409.3 z"
id="path13"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 3841.4,1279.5 c -72.6,-72.7 -84.1,-147.2 -38.2,-239 44,-82.2 103.2,-97.5 391.9,-97.5 233.2,0 269.6,3.8 311.6,38.2 114.7,89.9 109,254.3 -11.5,326.9 -51.6,30.6 -97.5,36.3 -323.1,36.3 h -265.7 z"
id="path14"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 5504.7,1308.2 c -68.8,-42.1 -110.9,-143.4 -91.7,-219.9 5.7,-26.8 38.2,-70.7 68.8,-97.5 53.5,-45.9 66.9,-47.8 321.2,-47.8 288.7,0 340.3,13.4 388.1,95.6 53.5,87.9 42.1,166.3 -32.5,240.9 l -65,65 h -263.8 c -227.6,0 -273.5,-5.7 -325.1,-36.3 z"
id="path15"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 2352.1,-1601.6 c -326.9,-114.7 -663.4,-242.8 -749.4,-282.9 -265.7,-128.1 -478,-281 -713.1,-518.1 C 576,-2714.3 381,-3025.9 251,-3415.9 145.9,-3735.2 122.9,-3869 111.4,-4270.5 l -11.4,-367.1 68.8,-68.8 66.9,-66.9 H 5000 9764.3 l 66.9,66.9 68.8,68.8 -11.5,367.1 c -9.6,296.3 -19.1,405.3 -57.4,567.8 -128.1,535.3 -344.1,927.2 -728.4,1309.6 -233.2,233.3 -420.6,367.1 -709.3,506.6 -214.1,103.3 -1332.5,497.1 -1412.8,497.1 -36.3,0 -95.6,-42 -227.5,-166.3 -409.1,-384.3 -759,-585 -1229.3,-705.5 -183.5,-47.8 -244.7,-53.5 -504.7,-55.4 -424.4,0 -674.9,57.4 -1061.1,248.5 -242.8,120.5 -462.7,277.2 -711.2,512.4 -151,141.5 -187.4,166.3 -239,164.4 -34.3,-1.9 -328.8,-95.6 -655.7,-210.3 z"
id="path22"
style="fill:#1a1a1a;stroke-width:33.6545" />
</g>
</g>
</g>
<text
xml:space="preserve"
style="font-size:14.1715px;line-height:1.15;font-family:handwriting-draft_free-version;-inkscape-font-specification:handwriting-draft_free-version;stroke:#f9f9f9;stroke-width:0.266381"
x="0.11816031"
y="8.8655224"
id="text1"
transform="scale(0.94706971,1.0558885)"><tspan
sodipodi:role="line"
id="tspan1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Pacifico;-inkscape-font-specification:Pacifico;fill:#ff0000;stroke:#f9f9f9;stroke-width:0.266381"
x="0.11816031"
y="8.8655224">+</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

BIN
icons/addnewstudent.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
icons/addnewstudentmini.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

472
icons/listeStudent.svg Normal file
View File

@ -0,0 +1,472 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"
inkscape:export-filename="listestudent.png"
sodipodi:docname="listeStudent.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
id="svg8"
version="1.1"
viewBox="0 0 12.7 12.7"
height="48"
width="48"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2">
<linearGradient
id="k"
gradientTransform="matrix(7.3290847,0,0,7.3272888,-782.49722,-7149.5485)"
gradientUnits="userSpaceOnUse"
x1="122.75008"
x2="111.74973"
xlink:href="#b"
y1="991.62115"
y2="977.11713" />
<linearGradient
id="b">
<stop
offset="0"
stop-color="#0369a3"
id="stop7" />
<stop
offset="1"
stop-color="#1c99e0"
id="stop9" />
</linearGradient>
<linearGradient
id="j"
gradientUnits="userSpaceOnUse"
x1="108.00134"
x2="20.001341"
y1="122"
y2="6"
gradientTransform="translate(12)">
<stop
offset="0"
stop-color="#e6e6e6"
id="stop35" />
<stop
offset="1"
stop-color="#fff"
id="stop37" />
</linearGradient>
<linearGradient
id="i"
gradientUnits="userSpaceOnUse"
x1="108.00134"
x2="20.001341"
xlink:href="#b"
y1="130"
y2="14"
gradientTransform="translate(12)" />
<linearGradient
id="h"
gradientTransform="matrix(4.4999,0,0,3.66665,-930.97741,2199.6564)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="-581.63782"
y2="-578.63782">
<stop
offset="0"
stop-color="#63bbee"
id="stop29" />
<stop
offset="1"
stop-color="#aadcf7"
id="stop31" />
</linearGradient>
<linearGradient
id="g"
gradientTransform="matrix(-4.19983,0,0,3.9111,1552.9405,-4523.1636)"
gradientUnits="userSpaceOnUse"
x2="0"
xlink:href="#a"
y1="1173"
y2="1178" />
<linearGradient
id="a">
<stop
offset="0"
stop-color="#666"
id="stop2" />
<stop
offset="1"
stop-color="#333"
id="stop4" />
</linearGradient>
<linearGradient
id="f"
gradientTransform="matrix(4.19983,0,0,3.9111,-1380.9394,-4521.9436)"
gradientUnits="userSpaceOnUse"
x2="0"
xlink:href="#a"
y1="1173"
y2="1178" />
<linearGradient
id="e"
gradientTransform="matrix(1.19997,0,0,1.22222,-269.19161,858.5534)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="-629.66907"
y2="-635.54944">
<stop
offset="0"
stop-color="#18a303"
id="stop22" />
<stop
offset="1"
stop-color="#106802"
id="stop24" />
</linearGradient>
<linearGradient
id="d"
gradientTransform="matrix(4.19983,0,0,3.9111,-1380.9394,-4517.0536)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="1173"
y2="1178">
<stop
offset="0"
stop-color="#0369a3"
id="stop17" />
<stop
offset="1"
stop-color="#023f62"
id="stop19" />
</linearGradient>
<linearGradient
id="c"
gradientTransform="matrix(0,0.791084,-1.28,0,1511.6005,-282.0136)"
gradientUnits="userSpaceOnUse"
x1="445.69522"
x2="441.38797"
y1="1103.5776"
y2="1099.8198">
<stop
offset="0"
stop-color="#e9b913"
id="stop12" />
<stop
offset="1"
stop-color="#ff0"
id="stop14" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#b"
id="linearGradient4157"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(7.9997394,0,0,7.9977793,-859.65065,-7810.3938)"
x1="122.75008"
y1="991.62115"
x2="111.74973"
y2="977.11713" />
</defs>
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:window-height="1009"
inkscape:window-width="1920"
inkscape:guide-bbox="true"
showguides="true"
units="px"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="31.39617"
inkscape:cx="32.841182"
inkscape:zoom="7.6123936"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:pagecheckerboard="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-midpoints="true"
inkscape:object-paths="true"
inkscape:snap-global="false"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1">
<sodipodi:guide
id="guide14"
orientation="1,0"
position="-2.471617e-08,4.4381936"
inkscape:locked="false" />
<sodipodi:guide
position="-0.24253472,-0.26458333"
orientation="-0.71816555,0.69587229"
id="guide5772"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Calque 1"
transform="translate(-0.92013353,-0.34176359)">
<g
id="g6608"
transform="matrix(0.76215268,0,0,0.75860347,20.419626,10.683336)"
style="stroke-width:1.21708">
<g
id="g2"
transform="matrix(1.1126819,0,0,1.0689509,-1.0567243,-0.60391678)">
<path
id="path4945"
style="fill:#b3b3b3;stroke:#000000;stroke-width:0.200713;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 6.448524,4.1578515 A 2.5406649,2.4821629 0 0 0 3.9075938,6.6403872 2.5406649,2.4821629 0 0 0 6.448524,9.1224062 2.5406649,2.4821629 0 0 0 8.0241383,8.5870385 L 8.590512,9.1559961 8.958965,8.730699 8.4272144,8.1968815 A 2.5406649,2.4821629 0 0 0 8.9889372,6.6403872 2.5406649,2.4821629 0 0 0 6.448524,4.1578515 Z m 0,0.5539713 A 1.9739749,1.9285217 0 0 1 8.4220468,6.6403872 1.9739749,1.9285217 0 0 1 6.448524,8.5684348 1.9739749,1.9285217 0 0 1 4.4744842,6.6403872 1.9739749,1.9285217 0 0 1 6.448524,4.7118228 Z" />
<path
style="fill:#ff0000;stroke:none;stroke-width:0.322019px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 9.2441621,8.53155 2.9328089,2.944082 c 0.0419,0.512292 -0.280235,0.819082 -0.875635,0.903687 L 8.3690939,9.4346523 C 8.6546945,9.0611151 8.873339,8.7906209 9.2441621,8.53155 Z"
id="path5444"
sodipodi:nodetypes="ccccc" />
</g>
</g>
<g
id="g1"
transform="matrix(0.08485361,0,0,0.08631596,18.493169,0.67154427)">
<g
id="g4179"
transform="matrix(1.091506,0,0,1.091506,-5.550275,-6.6190888)"
style="stroke-width:0.916165">
<path
style="fill:url(#k);stroke-width:0.916165"
d="m 33.356573,1.223906 c -0.25037,0 -0.50072,0.011156 -0.75,0.035156 -3.66708,0.6998 -4.56576,2.2662469 -4.5,5.9980469 V 123.22586 c 4e-4,4.1875 1.81149,5.99765 6,5.99805 h 91.998057 c 4.1885,-4e-4 5.99764,-1.81055 5.99804,-5.99805 V 51.4075 c 0.048,-2.1119 -0.78004,-4.230247 -2.25,-5.748047 L 87.692523,3.5090622 c -1.51819,-1.4691999 -3.63759,-2.2988999 -5.75,-2.25 h -47.83595 c -0.24919,-0.024 -0.49962,-0.035156 -0.75,-0.035156 z"
id="path41" />
<path
d="M 34.104633,7.2239059 V 123.22391 H 126.10465 V 51.223906 L 82.104653,7.2239059 Z"
fill="url(#j)"
id="path43"
style="fill:#000080;stroke-width:0.916165" />
</g>
<path
style="fill:url(#linearGradient4157);stroke-width:1"
d="m 131.22533,55.778801 c 0.38078,0 0.7607,-0.03052 1.13694,-0.08855 4.82817,-1.546485 6.45292,-8.894004 2.73075,-12.350381 L 91.397403,-0.58243478 C 87.360856,-4.4299678 79.32347,-1.1377203 79.110793,4.4505138 V 48.372824 c 4.36e-4,3.833024 3.469037,7.316888 7.281987,7.317433 h 43.69209 c 0.37643,0.05804 0.75972,0.08855 1.14046,0.08855 z"
id="path4056" />
<text
xml:space="preserve"
style="font-size:53.1628px;line-height:1.25;font-family:'C.A. Gatintas';-inkscape-font-specification:'C.A. Gatintas';text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:3.0916"
x="88.898773"
y="96.537178"
id="text3199"
transform="scale(0.90538451,1.1045031)"><tspan
sodipodi:role="line"
id="tspan3197"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:arial;-inkscape-font-specification:arial;fill:#ffffff;stroke-width:3.0916"
x="88.898773"
y="96.537178">CSV</tspan></text>
</g>
<g
id="g6"
transform="translate(9.3985307,7.983748)">
<rect
style="fill:#00ff00;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel"
id="rect4"
width="5.1373262"
height="4.7845492"
x="8.1961746"
y="5.7877703"
ry="0.9260416" />
<g
id="g23"
transform="matrix(0.04473207,0,0,0.04550297,1.4115291,3.3967797)">
<path
style="fill:#ffe6d5;stroke:none;stroke-width:2.92119;stroke-linecap:round;stroke-linejoin:bevel"
d="m 205.01263,120.83445 -10.39372,-6.8969 -5.19686,-10.98395 -3.89764,-1.53264 -1.29921,-8.429546 2.59842,-3.831611 1.55906,-1.532645 v -8.174104 l 21.30712,3.065289 19.74807,-4.087051 0.51968,8.684984 2.85827,3.831611 1.03937,5.875137 -2.07874,5.875136 -3.11811,1.53264 -3.89765,9.45131 -7.53544,5.87514 -4.15749,2.29896 z"
id="path16" />
<g
id="g22"
transform="matrix(0.10531373,0,0,0.10352952,149.66975,64.802716)"
style="fill:#0066ff;stroke-width:29.6078">
<g
transform="matrix(0.08797553,0,0,-0.08797553,124.40311,399.9922)"
id="g21"
style="fill:#0066ff;stroke-width:33.6545">
<path
d="M 3122.6,4604.2 C 2231.7,4380.5 1476.5,4187.4 1444,4174 c -68.8,-28.7 -114.7,-107.1 -114.7,-193.1 0,-42.1 19.1,-76.5 63.1,-120.4 l 61.2,-61.2 554.4,-63.1 c 305.9,-34.4 1152.8,-128.1 1883.1,-210.3 l 1328.7,-149.1 1508.4,380.5 c 827.8,208.4 1514.1,378.5 1523.7,378.5 9.6,0 17.2,-275.3 17.2,-636.6 V 2864.5 L 8078,2673.3 c -286.8,-284.9 -286.8,-237.1 -3.8,-804.9 191.2,-382.4 242.8,-470.3 290.6,-495.2 78.4,-40.1 158.7,-36.3 217.9,11.5 68.8,53.5 489.4,892.8 489.4,973.1 0,89.9 -40.1,147.2 -227.5,334.6 l -174,172.1 v 806.8 808.7 l -53.5,59.3 -53.5,61.2 L 6690,4807 c -1028.6,114.7 -1888.9,206.5 -1909.9,206.5 -21,-0.2 -766.6,-185.6 -1657.5,-409.3 z"
id="path17"
style="fill:#0066ff;stroke-width:33.6545" />
<path
d="m 6340.2,3243 -1099.3,-275.3 -1344,149.1 -1344,149.1 v -569.7 -569.7 l -103.2,-99.4 C 2260.4,1839.7 2170.6,1596.9 2157.2,1218.4 2140,816.9 2229.9,493.8 2411.5,293.1 2484,212.7 2642.7,121 2711.5,121 c 17.2,0 32.5,-15.3 32.5,-32.5 0,-63.1 191.2,-510.5 298.2,-697.8 369,-651.9 892.8,-1091.7 1491.2,-1248.4 290.6,-76.5 642.4,-76.5 933,0 728.4,191.2 1345.9,803 1693.9,1676.7 51.7,133.7 95.7,256.1 95.7,273.3 0,15.3 15.3,28.7 34.4,28.7 66.9,0 225.6,91.8 298.3,172.1 181.6,200.7 271.5,523.8 256.2,925.3 -15.3,380.5 -110.9,629 -307.8,808.7 l -80.3,70.7 -9.6,709.3 -9.6,709.3 z M 3222,2375 c 229.4,-65 602.2,-135.7 908.1,-174 137.7,-15.3 435.9,-24.8 869.9,-24.8 694,0 869.9,13.4 1328.7,97.5 216,38.2 575.5,130 686.4,172.1 34.4,13.4 36.3,3.8 22.9,-273.4 l -13.4,-286.8 49.7,-59.3 c 32.5,-40.1 76.5,-65 130,-74.6 70.7,-15.3 86,-26.8 133.8,-114.7 149.1,-277.2 135.8,-812.5 -22.9,-1036.2 -40.1,-57.4 -45.9,-57.4 -154.9,-45.9 -107.1,9.6 -114.7,7.6 -170.2,-45.9 -30.6,-32.5 -65,-95.6 -78.4,-141.5 -239,-948.3 -887.1,-1692 -1604,-1844.9 -166.3,-34.4 -443.6,-34.4 -613.7,1.9 -671,141.5 -1267.5,774.3 -1540.9,1634.6 -38.2,120.4 -78.4,244.7 -89.9,275.3 -36.3,99.4 -187.4,156.8 -281,107.1 -51.6,-28.7 -124.3,66.9 -175.9,235.2 -63.1,196.9 -61.2,560.2 1.9,739.9 61.2,174 99.4,221.8 191.2,237.1 51.6,7.6 89.9,30.6 124.3,70.7 l 49.7,59.3 -11.5,288.7 c -13.4,277.2 -13.4,286.8 22.9,273.4 19.3,-7.7 126.3,-40.2 237.2,-70.8 z"
id="path18"
style="fill:#0066ff;stroke-width:33.6545" />
<path
d="m 3841.4,1279.5 c -72.6,-72.7 -84.1,-147.2 -38.2,-239 44,-82.2 103.2,-97.5 391.9,-97.5 233.2,0 269.6,3.8 311.6,38.2 114.7,89.9 109,254.3 -11.5,326.9 -51.6,30.6 -97.5,36.3 -323.1,36.3 h -265.7 z"
id="path19"
style="fill:#0066ff;stroke-width:33.6545" />
<path
d="m 5504.7,1308.2 c -68.8,-42.1 -110.9,-143.4 -91.7,-219.9 5.7,-26.8 38.2,-70.7 68.8,-97.5 53.5,-45.9 66.9,-47.8 321.2,-47.8 288.7,0 340.3,13.4 388.1,95.6 53.5,87.9 42.1,166.3 -32.5,240.9 l -65,65 h -263.8 c -227.6,0 -273.5,-5.7 -325.1,-36.3 z"
id="path20"
style="fill:#0066ff;stroke-width:33.6545" />
<path
d="m 2352.1,-1601.6 c -326.9,-114.7 -663.4,-242.8 -749.4,-282.9 -265.7,-128.1 -478,-281 -713.1,-518.1 C 576,-2714.3 381,-3025.9 251,-3415.9 145.9,-3735.2 122.9,-3869 111.4,-4270.5 l -11.4,-367.1 68.8,-68.8 66.9,-66.9 H 5000 9764.3 l 66.9,66.9 68.8,68.8 -11.5,367.1 c -9.6,296.3 -19.1,405.3 -57.4,567.8 -128.1,535.3 -344.1,927.2 -728.4,1309.6 -233.2,233.3 -420.6,367.1 -709.3,506.6 -214.1,103.3 -1332.5,497.1 -1412.8,497.1 -36.3,0 -95.6,-42 -227.5,-166.3 -409.1,-384.3 -759,-585 -1229.3,-705.5 -183.5,-47.8 -244.7,-53.5 -504.7,-55.4 -424.4,0 -674.9,57.4 -1061.1,248.5 -242.8,120.5 -462.7,277.2 -711.2,512.4 -151,141.5 -187.4,166.3 -239,164.4 -34.3,-1.9 -328.8,-95.6 -655.7,-210.3 z"
id="path21"
style="fill:#dd55ff;stroke-width:33.6545" />
</g>
</g>
</g>
</g>
<g
id="g379"
transform="matrix(0.01113254,0,0,0.01113254,-13.457508,12.852851)"
style="fill:#000000;stroke-width:23.7666">
<g
transform="matrix(0.08797553,0,0,-0.08797553,110.05744,434.06317)"
id="g377"
style="fill:#000000;stroke-width:27.0149">
<path
d="M 3122.6,4604.2 C 2231.7,4380.5 1476.5,4187.4 1444,4174 c -68.8,-28.7 -114.7,-107.1 -114.7,-193.1 0,-42.1 19.1,-76.5 63.1,-120.4 l 61.2,-61.2 554.4,-63.1 c 305.9,-34.4 1152.8,-128.1 1883.1,-210.3 l 1328.7,-149.1 1508.4,380.5 c 827.8,208.4 1514.1,378.5 1523.7,378.5 9.6,0 17.2,-275.3 17.2,-636.6 V 2864.5 L 8078,2673.3 c -286.8,-284.9 -286.8,-237.1 -3.8,-804.9 191.2,-382.4 242.8,-470.3 290.6,-495.2 78.4,-40.1 158.7,-36.3 217.9,11.5 68.8,53.5 489.4,892.8 489.4,973.1 0,89.9 -40.1,147.2 -227.5,334.6 l -174,172.1 v 806.8 808.7 l -53.5,59.3 -53.5,61.2 L 6690,4807 c -1028.6,114.7 -1888.9,206.5 -1909.9,206.5 -21,-0.2 -766.6,-185.6 -1657.5,-409.3 z"
id="path367"
style="fill:#000000;stroke-width:27.0149" />
<path
d="m 6340.2,3243 -1099.3,-275.3 -1344,149.1 -1344,149.1 v -569.7 -569.7 l -103.2,-99.4 C 2260.4,1839.7 2170.6,1596.9 2157.2,1218.4 2140,816.9 2229.9,493.8 2411.5,293.1 2484,212.7 2642.7,121 2711.5,121 c 17.2,0 32.5,-15.3 32.5,-32.5 0,-63.1 191.2,-510.5 298.2,-697.8 369,-651.9 892.8,-1091.7 1491.2,-1248.4 290.6,-76.5 642.4,-76.5 933,0 728.4,191.2 1345.9,803 1693.9,1676.7 51.7,133.7 95.7,256.1 95.7,273.3 0,15.3 15.3,28.7 34.4,28.7 66.9,0 225.6,91.8 298.3,172.1 181.6,200.7 271.5,523.8 256.2,925.3 -15.3,380.5 -110.9,629 -307.8,808.7 l -80.3,70.7 -9.6,709.3 -9.6,709.3 z M 3222,2375 c 229.4,-65 602.2,-135.7 908.1,-174 137.7,-15.3 435.9,-24.8 869.9,-24.8 694,0 869.9,13.4 1328.7,97.5 216,38.2 575.5,130 686.4,172.1 34.4,13.4 36.3,3.8 22.9,-273.4 l -13.4,-286.8 49.7,-59.3 c 32.5,-40.1 76.5,-65 130,-74.6 70.7,-15.3 86,-26.8 133.8,-114.7 149.1,-277.2 135.8,-812.5 -22.9,-1036.2 -40.1,-57.4 -45.9,-57.4 -154.9,-45.9 -107.1,9.6 -114.7,7.6 -170.2,-45.9 -30.6,-32.5 -65,-95.6 -78.4,-141.5 -239,-948.3 -887.1,-1692 -1604,-1844.9 -166.3,-34.4 -443.6,-34.4 -613.7,1.9 -671,141.5 -1267.5,774.3 -1540.9,1634.6 -38.2,120.4 -78.4,244.7 -89.9,275.3 -36.3,99.4 -187.4,156.8 -281,107.1 -51.6,-28.7 -124.3,66.9 -175.9,235.2 -63.1,196.9 -61.2,560.2 1.9,739.9 61.2,174 99.4,221.8 191.2,237.1 51.6,7.6 89.9,30.6 124.3,70.7 l 49.7,59.3 -11.5,288.7 c -13.4,277.2 -13.4,286.8 22.9,273.4 19.3,-7.7 126.3,-40.2 237.2,-70.8 z"
id="path369"
style="fill:#000000;stroke-width:27.0149" />
<path
d="m 3841.4,1279.5 c -72.6,-72.7 -84.1,-147.2 -38.2,-239 44,-82.2 103.2,-97.5 391.9,-97.5 233.2,0 269.6,3.8 311.6,38.2 114.7,89.9 109,254.3 -11.5,326.9 -51.6,30.6 -97.5,36.3 -323.1,36.3 h -265.7 z"
id="path371"
style="fill:#000000;stroke-width:27.0149" />
<path
d="m 5504.7,1308.2 c -68.8,-42.1 -110.9,-143.4 -91.7,-219.9 5.7,-26.8 38.2,-70.7 68.8,-97.5 53.5,-45.9 66.9,-47.8 321.2,-47.8 288.7,0 340.3,13.4 388.1,95.6 53.5,87.9 42.1,166.3 -32.5,240.9 l -65,65 h -263.8 c -227.6,0 -273.5,-5.7 -325.1,-36.3 z"
id="path373"
style="fill:#000000;stroke-width:27.0149" />
<path
d="m 2352.1,-1601.6 c -326.9,-114.7 -663.4,-242.8 -749.4,-282.9 -265.7,-128.1 -478,-281 -713.1,-518.1 C 576,-2714.3 381,-3025.9 251,-3415.9 145.9,-3735.2 122.9,-3869 111.4,-4270.5 l -11.4,-367.1 68.8,-68.8 66.9,-66.9 H 5000 9764.3 l 66.9,66.9 68.8,68.8 -11.5,367.1 c -9.6,296.3 -19.1,405.3 -57.4,567.8 -128.1,535.3 -344.1,927.2 -728.4,1309.6 -233.2,233.3 -420.6,367.1 -709.3,506.6 -214.1,103.3 -1332.5,497.1 -1412.8,497.1 -36.3,0 -95.6,-42 -227.5,-166.3 -409.1,-384.3 -759,-585 -1229.3,-705.5 -183.5,-47.8 -244.7,-53.5 -504.7,-55.4 -424.4,0 -674.9,57.4 -1061.1,248.5 -242.8,120.5 -462.7,277.2 -711.2,512.4 -151,141.5 -187.4,166.3 -239,164.4 -34.3,-1.9 -328.8,-95.6 -655.7,-210.3 z"
id="path375"
style="fill:#000000;stroke-width:27.0149" />
</g>
</g>
<g
id="g5"
transform="matrix(0.08485361,0,0,0.08631596,16.262976,-6.3747231)">
<rect
style="fill:#00ff00;stroke-width:11.6848;stroke-linecap:round;stroke-linejoin:bevel"
id="rect3"
width="60.5434"
height="55.430641"
x="89.144531"
y="-5.2591376"
ry="10.72851" />
<g
id="g3"
transform="matrix(0.32167629,0,0,0.32167629,93.380516,1.8281726)"
style="stroke-width:27.2434">
<path
style="fill:#ffffff;stroke:#ff0000;stroke-width:27.2434;stroke-linecap:round;stroke-linejoin:bevel"
d="M 14.028074,-2.2879778 147.84718,130.5412"
id="path1" />
<path
style="fill:#ffffff;stroke:#ff0000;stroke-width:27.2434;stroke-linecap:round;stroke-linejoin:bevel"
d="M 147.84718,-2.2879778 14.028074,130.5412"
id="path2" />
</g>
</g>
<g
id="g9"
transform="matrix(0.10400523,0,0,0.10579764,-12.771526,-5.2392046)">
<path
id="path8"
style="fill:#ffe6d5;stroke:#000000;stroke-width:2.38328;stroke-linecap:round;stroke-linejoin:bevel"
d="m 231.67865,74.184632 -10.16583,2.491075 -10.18571,2.505728 -12.45141,-1.35788 -12.4514,-1.35788 v 5.192181 5.187296 l -0.95895,0.903625 c -1.75387,1.70685 -2.58376,3.918367 -2.70791,7.365766 -0.15936,3.656884 0.67261,6.602587 2.35514,8.430577 0.67171,0.73229 2.145,1.56791 2.78243,1.56791 0.15936,0 0.29812,0.13641 0.29812,0.29307 0,0.57472 1.77121,4.65363 2.76256,6.35957 3.4188,5.93754 8.2736,9.9389 13.81779,11.36613 2.69241,0.69677 5.95301,0.69677 8.64543,0 6.74864,-1.74146 12.46673,-7.31111 15.69095,-15.26882 0.47901,-1.21774 0.88939,-2.33441 0.88939,-2.49107 0,-0.13935 0.14103,-0.25888 0.31799,-0.25888 0.61983,0 2.089,-0.83653 2.76257,-1.56791 1.68252,-1.82799 2.51676,-4.773693 2.375,-8.430577 -0.14175,-3.465615 -1.02771,-5.729048 -2.85199,-7.365766 l -0.7453,-0.639864 -0.0894,-6.46214 z" />
<g
id="g570"
transform="matrix(0.10531373,0,0,0.10352952,149.66975,64.802716)"
style="fill:#000000;stroke-width:29.6078">
<g
transform="matrix(0.08797553,0,0,-0.08797553,124.40311,399.9922)"
id="g568"
style="fill:#000000;stroke-width:33.6545">
<path
d="M 3122.6,4604.2 C 2231.7,4380.5 1476.5,4187.4 1444,4174 c -68.8,-28.7 -114.7,-107.1 -114.7,-193.1 0,-42.1 19.1,-76.5 63.1,-120.4 l 61.2,-61.2 554.4,-63.1 c 305.9,-34.4 1152.8,-128.1 1883.1,-210.3 l 1328.7,-149.1 1508.4,380.5 c 827.8,208.4 1514.1,378.5 1523.7,378.5 9.6,0 17.2,-275.3 17.2,-636.6 V 2864.5 L 8078,2673.3 c -286.8,-284.9 -286.8,-237.1 -3.8,-804.9 191.2,-382.4 242.8,-470.3 290.6,-495.2 78.4,-40.1 158.7,-36.3 217.9,11.5 68.8,53.5 489.4,892.8 489.4,973.1 0,89.9 -40.1,147.2 -227.5,334.6 l -174,172.1 v 806.8 808.7 l -53.5,59.3 -53.5,61.2 L 6690,4807 c -1028.6,114.7 -1888.9,206.5 -1909.9,206.5 -21,-0.2 -766.6,-185.6 -1657.5,-409.3 z"
id="path558"
style="fill:#800080;stroke-width:33.6545" />
<path
d="m 3841.4,1279.5 c -72.6,-72.7 -84.1,-147.2 -38.2,-239 44,-82.2 103.2,-97.5 391.9,-97.5 233.2,0 269.6,3.8 311.6,38.2 114.7,89.9 109,254.3 -11.5,326.9 -51.6,30.6 -97.5,36.3 -323.1,36.3 h -265.7 z"
id="path562"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 5504.7,1308.2 c -68.8,-42.1 -110.9,-143.4 -91.7,-219.9 5.7,-26.8 38.2,-70.7 68.8,-97.5 53.5,-45.9 66.9,-47.8 321.2,-47.8 288.7,0 340.3,13.4 388.1,95.6 53.5,87.9 42.1,166.3 -32.5,240.9 l -65,65 h -263.8 c -227.6,0 -273.5,-5.7 -325.1,-36.3 z"
id="path564"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 2352.1,-1601.6 c -326.9,-114.7 -663.4,-242.8 -749.4,-282.9 -265.7,-128.1 -478,-281 -713.1,-518.1 C 576,-2714.3 381,-3025.9 251,-3415.9 145.9,-3735.2 122.9,-3869 111.4,-4270.5 l -11.4,-367.1 68.8,-68.8 66.9,-66.9 H 5000 9764.3 l 66.9,66.9 68.8,68.8 -11.5,367.1 c -9.6,296.3 -19.1,405.3 -57.4,567.8 -128.1,535.3 -344.1,927.2 -728.4,1309.6 -233.2,233.3 -420.6,367.1 -709.3,506.6 -214.1,103.3 -1332.5,497.1 -1412.8,497.1 -36.3,0 -95.6,-42 -227.5,-166.3 -409.1,-384.3 -759,-585 -1229.3,-705.5 -183.5,-47.8 -244.7,-53.5 -504.7,-55.4 -424.4,0 -674.9,57.4 -1061.1,248.5 -242.8,120.5 -462.7,277.2 -711.2,512.4 -151,141.5 -187.4,166.3 -239,164.4 -34.3,-1.9 -328.8,-95.6 -655.7,-210.3 z"
id="path566"
style="fill:#800080;stroke-width:33.6545" />
</g>
</g>
</g>
<g
id="g26"
transform="matrix(0.10400523,0,0,0.10579764,-16.177705,-2.9452481)">
<path
id="path12"
style="fill:#ffe6d5;stroke:#000000;stroke-width:2.38328;stroke-linecap:round;stroke-linejoin:bevel"
d="m 231.67865,74.184632 -10.16583,2.491075 -10.18571,2.505728 -12.45141,-1.35788 -12.4514,-1.35788 v 5.192181 5.187296 l -0.95895,0.903625 c -1.75387,1.70685 -2.58376,3.918367 -2.70791,7.365766 -0.15936,3.656884 0.67261,6.602587 2.35514,8.430577 0.67171,0.73229 2.145,1.56791 2.78243,1.56791 0.15936,0 0.29812,0.13641 0.29812,0.29307 0,0.57472 1.77121,4.65363 2.76256,6.35957 3.4188,5.93754 8.2736,9.9389 13.81779,11.36613 2.69241,0.69677 5.95301,0.69677 8.64543,0 6.74864,-1.74146 12.46673,-7.31111 15.69095,-15.26882 0.47901,-1.21774 0.88939,-2.33441 0.88939,-2.49107 0,-0.13935 0.14103,-0.25888 0.31799,-0.25888 0.61983,0 2.089,-0.83653 2.76257,-1.56791 1.68252,-1.82799 2.51676,-4.773693 2.375,-8.430577 -0.14175,-3.465615 -1.02771,-5.729048 -2.85199,-7.365766 l -0.7453,-0.639864 -0.0894,-6.46214 z" />
<g
id="g25"
transform="matrix(0.10531373,0,0,0.10352952,149.66975,64.802716)"
style="fill:#000000;stroke-width:29.6078">
<g
transform="matrix(0.08797553,0,0,-0.08797553,124.40311,399.9922)"
id="g24"
style="fill:#000000;stroke-width:33.6545">
<path
d="M 3122.6,4604.2 C 2231.7,4380.5 1476.5,4187.4 1444,4174 c -68.8,-28.7 -114.7,-107.1 -114.7,-193.1 0,-42.1 19.1,-76.5 63.1,-120.4 l 61.2,-61.2 554.4,-63.1 c 305.9,-34.4 1152.8,-128.1 1883.1,-210.3 l 1328.7,-149.1 1508.4,380.5 c 827.8,208.4 1514.1,378.5 1523.7,378.5 9.6,0 17.2,-275.3 17.2,-636.6 V 2864.5 L 8078,2673.3 c -286.8,-284.9 -286.8,-237.1 -3.8,-804.9 191.2,-382.4 242.8,-470.3 290.6,-495.2 78.4,-40.1 158.7,-36.3 217.9,11.5 68.8,53.5 489.4,892.8 489.4,973.1 0,89.9 -40.1,147.2 -227.5,334.6 l -174,172.1 v 806.8 808.7 l -53.5,59.3 -53.5,61.2 L 6690,4807 c -1028.6,114.7 -1888.9,206.5 -1909.9,206.5 -21,-0.2 -766.6,-185.6 -1657.5,-409.3 z"
id="path13"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 3841.4,1279.5 c -72.6,-72.7 -84.1,-147.2 -38.2,-239 44,-82.2 103.2,-97.5 391.9,-97.5 233.2,0 269.6,3.8 311.6,38.2 114.7,89.9 109,254.3 -11.5,326.9 -51.6,30.6 -97.5,36.3 -323.1,36.3 h -265.7 z"
id="path14"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 5504.7,1308.2 c -68.8,-42.1 -110.9,-143.4 -91.7,-219.9 5.7,-26.8 38.2,-70.7 68.8,-97.5 53.5,-45.9 66.9,-47.8 321.2,-47.8 288.7,0 340.3,13.4 388.1,95.6 53.5,87.9 42.1,166.3 -32.5,240.9 l -65,65 h -263.8 c -227.6,0 -273.5,-5.7 -325.1,-36.3 z"
id="path15"
style="fill:#000000;stroke-width:33.6545" />
<path
d="m 2352.1,-1601.6 c -326.9,-114.7 -663.4,-242.8 -749.4,-282.9 -265.7,-128.1 -478,-281 -713.1,-518.1 C 576,-2714.3 381,-3025.9 251,-3415.9 145.9,-3735.2 122.9,-3869 111.4,-4270.5 l -11.4,-367.1 68.8,-68.8 66.9,-66.9 H 5000 9764.3 l 66.9,66.9 68.8,68.8 -11.5,367.1 c -9.6,296.3 -19.1,405.3 -57.4,567.8 -128.1,535.3 -344.1,927.2 -728.4,1309.6 -233.2,233.3 -420.6,367.1 -709.3,506.6 -214.1,103.3 -1332.5,497.1 -1412.8,497.1 -36.3,0 -95.6,-42 -227.5,-166.3 -409.1,-384.3 -759,-585 -1229.3,-705.5 -183.5,-47.8 -244.7,-53.5 -504.7,-55.4 -424.4,0 -674.9,57.4 -1061.1,248.5 -242.8,120.5 -462.7,277.2 -711.2,512.4 -151,141.5 -187.4,166.3 -239,164.4 -34.3,-1.9 -328.8,-95.6 -655.7,-210.3 z"
id="path22"
style="fill:#1a1a1a;stroke-width:33.6545" />
</g>
</g>
</g>
<text
xml:space="preserve"
style="font-size:13.1714px;line-height:1.15;font-family:handwriting-draft_free-version;-inkscape-font-specification:handwriting-draft_free-version;stroke:#f9f9f9;stroke-width:0.247581"
x="4.2932463"
y="11.820724"
id="text1"
transform="scale(0.93305916,1.0717434)"><tspan
sodipodi:role="line"
id="tspan1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Pacifico;-inkscape-font-specification:Pacifico;fill:#ff0000;stroke:#f9f9f9;stroke-width:0.247581"
x="4.2932463"
y="11.820724">?</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

BIN
icons/listestudent.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
icons/listestudentmini.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
icons/nolistestudent.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -4,7 +4,9 @@ import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.URL; import java.net.URL;
import java.net.UnknownHostException;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -19,14 +21,41 @@ public class verificationNewVersion {
public verificationNewVersion() { public verificationNewVersion() {
// String[] Version = commandes.version.split("\\.")
// int versionIntegerApplication = Integer.valueOf( Version[0] + Version[1] + Version[2]);
String host = "forge.chapril.org";
int timeout = 2000; // 5 seconds
// Vérifier la connectivité avec un ping
try {
InetAddress address = InetAddress.getByName(host);
if (!address.isReachable(timeout)) {
System.err.println("Host is not reachable: " + host);
return; // Sortir de la procédure si le ping échoue
}
} catch (UnknownHostException e) {
System.err.println("Unknown host: " + host);
return; // Sortir de la procédure si l'hôte est inconnu
} catch (IOException e) {
System.err.println("IOException during ping: " + e.getMessage());
return; // Sortir de la procédure en cas d'IOException
}
HttpURLConnection conn = null ; HttpURLConnection conn = null ;
try { try {
URL url = new URL("https://forge.chapril.org/pablo/analyseWriter/releases"); URL url = new URL("https://forge.chapril.org/pablo/analyseWriter/releases");
conn = (HttpURLConnection) url.openConnection(); conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET"); conn.setRequestMethod("GET");
conn.setConnectTimeout(5000); // 5 seconds timeout for connection
conn.setReadTimeout(5000); // 5 seconds timeout for reading
int status = conn.getResponseCode();
if (status != HttpURLConnection.HTTP_OK) {
throw new IOException("HTTP error code: " + status);
}
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line; String line;
@ -73,6 +102,7 @@ public class verificationNewVersion {
if(conn!=null) conn.disconnect(); if(conn!=null) conn.disconnect();
e.printStackTrace(); e.printStackTrace();
} }
} }

View File

@ -16,7 +16,8 @@ public class actOpenBaseListesEtudiants extends AbstractAction{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
{ {
putValue( Action.NAME, "Ouvrir la base de données des listes des étudiants" ); putValue( Action.NAME, "Ouvrir la base de données des listes des étudiants" );
putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/baselisteetudiant.png")) ); putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/baselisteetudiantmini.png")) );
putValue( Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/baselisteetudiant.png")) );
putValue( Action.SHORT_DESCRIPTION, "Ouvrir la base de données des listes des étudiants" ); putValue( Action.SHORT_DESCRIPTION, "Ouvrir la base de données des listes des étudiants" );
} }
@Override @Override

View File

@ -16,6 +16,7 @@ import javax.swing.JOptionPane;
import MEPTL.commandes; import MEPTL.commandes;
import MEPTL.meptl; import MEPTL.meptl;
import MEPTL.verificationFichierAnalyse_node_commandesSujet; import MEPTL.verificationFichierAnalyse_node_commandesSujet;
import baseListesEtudiants.chargeListeEtudiants;
import cXML.node; import cXML.node;
import fenetres.ChargeFichierXML; import fenetres.ChargeFichierXML;
@ -105,8 +106,14 @@ public class chargeEvaluation {
commandes.nodeCSV = evaluation.retourneFirstEnfantsByName("fileCSV"); commandes.nodeCSV = evaluation.retourneFirstEnfantsByName("fileCSV");
if(!commandes.nodeCSV.isVide()) {
if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) {
String nameListeStudent = commandes.nodeCSV.getAttributs().get("nameListStudent");
chargeListeEtudiants.chargeDansLeNodeCSVListeEtudiants(nameListeStudent);
}
}
commandes.contenuFichierSVG = evaluation.retourneFirstEnfantsByName("nodSVG").retourneLesContenusEnfants(""); // commandes.contenuFichierSVG = evaluation.retourneFirstEnfantsByName("nodSVG").retourneLesContenusEnfants("");
commandes.fichierAnalyseValide = true; commandes.fichierAnalyseValide = true;

View File

@ -77,7 +77,6 @@ public class creerNouvelleEvaluation {
evaluation.getAttributs().put("noLogo", String.valueOf(commandes.noLogo) ); evaluation.getAttributs().put("noLogo", String.valueOf(commandes.noLogo) );
evaluation.getAttributs().put("analyse_nombres_modifications_simultané_maxi", String.valueOf(commandes.analyse_nombres_modifications_simultané_maxi) ); evaluation.getAttributs().put("analyse_nombres_modifications_simultané_maxi", String.valueOf(commandes.analyse_nombres_modifications_simultané_maxi) );
evaluation.getAttributs().put("fourniCSV", String.valueOf(commandes.fourniCSV) ); evaluation.getAttributs().put("fourniCSV", String.valueOf(commandes.fourniCSV) );
if(commandes.nameCSV!=null) { if(commandes.nameCSV!=null) {
evaluation.getAttributs().put("nameCSV", commandes.nameCSV ); evaluation.getAttributs().put("nameCSV", commandes.nameCSV );
@ -85,33 +84,16 @@ public class creerNouvelleEvaluation {
evaluation.getAttributs().put("nameCSV", ""); evaluation.getAttributs().put("nameCSV", "");
} }
if(commandes.nameSVG!=null) {
if(!commandes.nameSVG.isBlank()) {
evaluation.getAttributs().put("nameSVG", commandes.nameSVG );
}
}else {
evaluation.getAttributs().put("nameSVG", "" );
}
//Supprime le node CSV s'il existe, pour le remplacer par le node commandes.nodeCSV //Supprime le node CSV s'il existe, pour le remplacer par le node commandes.nodeCSV
node nodremove = evaluation.retourneFirstEnfantsByName("fileCSV"); node nodremove = evaluation.retourneFirstEnfantsByName("fileCSV");
if(!nodremove.isVide()) evaluation.getNodes().remove(nodremove); if(!nodremove.isVide()) evaluation.getNodes().remove(nodremove);
// ajoute les informations sur la liste d'étudiant
// Dans le nodeCSV, il y a toutes les informations sur chauqe étudiants
// Mais dans le node évaluation, on ne garde que les attribut du node fileCSV.
if(commandes.nodeCSV!=null) { if(commandes.nodeCSV!=null) {
evaluation.getNodes().add(commandes.nodeCSV); evaluation.getNodes().add(commandes.nodeCSV);
} evaluation.retourneFirstEnfantsByName("fileCSV").getNodes().clear();
if(commandes.nameSVG!=null) {
if(!commandes.nameSVG.isBlank() && !commandes.contenuFichierSVG.isBlank()) {
node SVG = new node();
SVG.setNomElt("nodSVG");
SVG.setContenu(commandes.contenuFichierSVG);
if(SVG!=null) {
evaluation.getNodes().add(SVG);
}
}
} }
//Création d'une évaluation //Création d'une évaluation
@ -122,7 +104,6 @@ public class creerNouvelleEvaluation {
} }
} }
new ecritureBaseEvaluation(evaluation); new ecritureBaseEvaluation(evaluation);
commandes.hashCodeEvaluationSave = evaluation.hashCode(); commandes.hashCodeEvaluationSave = evaluation.hashCode();

View File

@ -0,0 +1,13 @@
package baseListesEtudiants;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailValidator {
public static boolean isValidEmail(String email) {
String emailPattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$";
Pattern pattern = Pattern.compile(emailPattern);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
}

View File

@ -6,9 +6,25 @@ public class chargeListeEtudiants {
public static void chargeDansleNodeCSVListeEtudiants(Integer index) { public static void chargeDansleNodeCSVListeEtudiants(Integer index) {
if(commandes.listesEtudiants!=null) { if(commandes.listesEtudiants!=null) {
if(commandes.listesEtudiants.getNodes().size()>0) { if(commandes.listesEtudiants.getNodes().size()>index && index >= 0 ) {
commandes.nodeCSV = commandes.listesEtudiants.getNodes().get(index); commandes.nodeCSV = commandes.listesEtudiants.getNodes().get(index);
commandes.fourniCSV=true; commandes.fourniCSV=true;
}else {
commandes.nodeCSV = null;
commandes.fourniCSV=false;
}
}
}
public static void chargeDansLeNodeCSVListeEtudiants(String nameListe) {
if(commandes.listesEtudiants!=null) {
if(commandes.listesEtudiants.getNodes().size()>0) {
commandes.nodeCSV = commandes.listesEtudiants.retourneFirstNodeByNameAndAttributValueExactStrict("fileCSV", "nameListStudent", nameListe);
if(commandes.nodeCSV!=null) {
commandes.fourniCSV=true;
}else {
commandes.fourniCSV=true;
}
} }
} }
} }

View File

@ -0,0 +1,13 @@
package baseListesEtudiants;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class idValidator {
public static boolean isValidId(String id) {
String idPattern = "^[0-9]{8}$";
Pattern pattern = Pattern.compile(idPattern);
Matcher matcher = pattern.matcher(id);
return matcher.matches();
}
}

View File

@ -80,5 +80,18 @@ public class myTableStudent extends AbstractTableModel{
} }
} }
public void removeRow(int row) {
if (row >= 0 && row < commandes.nodeCSV.getNodes().size()) {
commandes.nodeCSV.getNodes().remove(row);
fireTableRowsDeleted(row, row);
}
}
public void addStudent(node newStudent) {
if(commandes.nodeCSV!=null) {
commandes.nodeCSV.getNodes().add(newStudent);
}
}
} }

View File

@ -0,0 +1,13 @@
package baseListesEtudiants;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class nameStudentValidator {
public static boolean isValidName(String name) {
String namePattern = "^[a-zA-Z -]+?$";
Pattern pattern = Pattern.compile(namePattern);
Matcher matcher = pattern.matcher(name);
return matcher.matches();
}
}

View File

@ -3,18 +3,21 @@ package fenetres;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Font; import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel; import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionEvent;
@ -22,13 +25,16 @@ import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumnModel; import javax.swing.table.TableColumnModel;
import MEPTL.commandes; import MEPTL.commandes;
import baseListesEtudiants.EmailValidator;
import baseListesEtudiants.chargeListeEtudiants; import baseListesEtudiants.chargeListeEtudiants;
import baseListesEtudiants.idValidator;
import baseListesEtudiants.myTableBaseListesEtudiants; import baseListesEtudiants.myTableBaseListesEtudiants;
import baseListesEtudiants.myTableStudent; import baseListesEtudiants.myTableStudent;
import baseListesEtudiants.nameStudentValidator;
import cXML.node;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
public class baseDonneesListesEtudiants extends JFrame{ public class baseDonneesListesEtudiants extends JFrame{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -41,11 +47,13 @@ public class baseDonneesListesEtudiants extends JFrame{
private final JButton btnFermer = new JButton("<html><p>Femer</p></html>"); private final JButton btnFermer = new JButton("<html><p>Femer</p></html>");
private JButton btnAddListeEtudiants = new JButton(); private JButton btnAddListeEtudiants = new JButton();
private JButton btnRemoveListe = new JButton("<html><p>Supprimer une liste</p></html>"); private JButton btnRemoveListe = new JButton("<html><p>Supprimer une liste</p></html>");
private JButton btnPasDeListe = new JButton();
private JButton btnAddNewStudent = new JButton("<html><p>Ajouter un nouvel étudiant</p></html>");
static JLabel lblNomListe = new JLabel("Pas de liste sélectionnée."); static JLabel lblNomListe = new JLabel("Pas de liste sélectionnée.");
JScrollPane scrollPaneTable = new JScrollPane(); JScrollPane scrollPaneTable = new JScrollPane();
JScrollPane scrollPaneBoutons = new JScrollPane(); JScrollPane scrollPaneBoutons = new JScrollPane();
private static int indexSelect=-1; private static int indexSelect=-1;
ListSelectionModel lsm = null; static ListSelectionModel lsm = null;
static ListSelectionModel rowSMTable = null; static ListSelectionModel rowSMTable = null;
public baseDonneesListesEtudiants() { public baseDonneesListesEtudiants() {
@ -98,6 +106,19 @@ public class baseDonneesListesEtudiants extends JFrame{
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
rowSMTable = table.getSelectionModel(); rowSMTable = table.getSelectionModel();
// Ajout du label d'instruction
JPanel panelCentre = new JPanel();
panelCentre.setLayout(new BorderLayout());
JLabel lblInstruction = new JLabel("<html>Cliquez sur une ligne de la table ci-dessous<br>pour sélectionner une liste d'étudiants.</html>");
lblInstruction.setHorizontalAlignment(SwingConstants.CENTER);
lblInstruction.setFont(new Font("Tahoma", Font.BOLD, 14));
panelCentre.add(lblInstruction, BorderLayout.NORTH);
JScrollPane scrollPaneDroite = new JScrollPane(table);
panelCentre.add(scrollPaneDroite, BorderLayout.CENTER);
getContentPane().add(panelCentre, BorderLayout.EAST);
lblNomListe = new JLabel("Pas de liste sélectionnée."); lblNomListe = new JLabel("Pas de liste sélectionnée.");
lblNomListe.setBackground(Color.GREEN); lblNomListe.setBackground(Color.GREEN);
lblNomListe.setHorizontalAlignment(SwingConstants.CENTER); lblNomListe.setHorizontalAlignment(SwingConstants.CENTER);
@ -116,15 +137,29 @@ public class baseDonneesListesEtudiants extends JFrame{
btnAddListeEtudiants.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/addStudentbaselisteetudiant.png"))); btnAddListeEtudiants.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/addStudentbaselisteetudiant.png")));
panelGauche.add(btnAddListeEtudiants, "cell 0 1"); panelGauche.add(btnAddListeEtudiants, "cell 0 1");
btnPasDeListe.setFont(new Font("Tahoma", Font.BOLD, 13));
btnPasDeListe.setHorizontalAlignment(SwingConstants.LEFT);
btnPasDeListe = new JButton("<html>Ne pas sélectionner de liste</html>");
btnPasDeListe.setFont(new Font("Tahoma", Font.BOLD, 13));
btnPasDeListe.setHorizontalAlignment(SwingConstants.LEFT);
btnPasDeListe.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/nolistestudent.png")));
panelGauche.add(btnPasDeListe, "cell 0 2");
btnAddNewStudent.setFont(new Font("Tahoma", Font.BOLD, 13));
btnAddNewStudent.setHorizontalAlignment(SwingConstants.LEFT);
btnAddNewStudent.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/addnewstudent.png")));
panelGauche.add(btnAddNewStudent, "cell 0 3");
btnRemoveListe.setFont(new Font("Tahoma", Font.BOLD, 13)); btnRemoveListe.setFont(new Font("Tahoma", Font.BOLD, 13));
btnRemoveListe.setHorizontalAlignment(SwingConstants.LEFT); btnRemoveListe.setHorizontalAlignment(SwingConstants.LEFT);
btnRemoveListe.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/removeListe.png"))); btnRemoveListe.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/removeListe.png")));
panelGauche.add(btnRemoveListe, "cell 0 3"); panelGauche.add(btnRemoveListe, "cell 0 5");
btnFermer.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/quitteliste.png"))); btnFermer.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/quitteliste.png")));
btnFermer.setHorizontalAlignment(SwingConstants.LEFT); btnFermer.setHorizontalAlignment(SwingConstants.LEFT);
btnFermer.setFont(new Font("Tahoma", Font.BOLD, 15)); btnFermer.setFont(new Font("Tahoma", Font.BOLD, 15));
panelGauche.add(btnFermer, "cell 0 5,growx,aligny top"); panelGauche.add(btnFermer, "cell 0 6,growx,aligny top");
modelStudent.addOrUpdate(); modelStudent.addOrUpdate();
@ -143,14 +178,14 @@ public class baseDonneesListesEtudiants extends JFrame{
columnModelStudent.getColumn(3).setMaxWidth(maxWidthColumn2); columnModelStudent.getColumn(3).setMaxWidth(maxWidthColumn2);
tableStudent.setFont(new Font("Tahoma", Font.PLAIN, 14)); tableStudent.setFont(new Font("Tahoma", Font.PLAIN, 14));
JScrollPane scrollPaneDroite = new JScrollPane(table);
getContentPane().add(scrollPaneDroite, BorderLayout.EAST);
scrollPaneTable = new JScrollPane(tableStudent); scrollPaneTable = new JScrollPane(tableStudent);
getContentPane().add(scrollPaneTable, BorderLayout.CENTER); getContentPane().add(scrollPaneTable, BorderLayout.CENTER);
ListenerAction(); ListenerAction();
ListenerTables();
} }
@ -168,10 +203,11 @@ public class baseDonneesListesEtudiants extends JFrame{
instance = new baseDonneesListesEtudiants(); instance = new baseDonneesListesEtudiants();
}else { }else {
model.addOrUpdate(); model.addOrUpdate();
table = new JTable(model); table.setModel(model);
rowSMTable = table.getSelectionModel(); rowSMTable = table.getSelectionModel();
modelStudent.addOrUpdate(); modelStudent.addOrUpdate();
tableStudent = new JTable(modelStudent); tableStudent.setModel(modelStudent);
if(commandes.nodeCSV!=null) if(!commandes.nodeCSV.isVide()) { if(commandes.nodeCSV!=null) if(!commandes.nodeCSV.isVide()) {
if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) { if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) {
lblNomListe.setText("Liste : " +commandes.nodeCSV.getAttributs().get("nameListStudent")); lblNomListe.setText("Liste : " +commandes.nodeCSV.getAttributs().get("nameListStudent"));
@ -223,10 +259,111 @@ public class baseDonneesListesEtudiants extends JFrame{
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
CustomInputDialogListeEtudiant.showCustomDialogInputStudentBase(); CustomInputDialogListeEtudiant.showCustomDialogInputStudentBase();
model.addOrUpdate(); model.addOrUpdate();
table = new JTable(model); table.setModel(model);
} }
}); });
btnPasDeListe.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
commandes.nodeCSV = null;
lblNomListe.setText("Pas de liste sélectionnée.");
}
});
btnAddNewStudent.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Créer des champs pour entrer les informations de l'étudiant
JTextField idField = new JTextField();
JTextField nameField = new JTextField();
JTextField prenomField = new JTextField();
JTextField courrielField = new JTextField();
// Créer un panneau pour les champs
JPanel panel = new JPanel(new GridLayout(0, 1));
panel.add(new JLabel("Nom :"));
panel.add(nameField);
panel.add(new JLabel("Prenom :"));
panel.add(prenomField);
panel.add(new JLabel("ID :"));
panel.add(idField);
panel.add(new JLabel("Courriel :"));
panel.add(courrielField);
// Afficher la boîte de dialogue
int result = JOptionPane.showConfirmDialog(null, panel, "Ajouter un étudiant", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
try {
String name = nameField.getText();
String prenom = prenomField.getText();
String id = idField.getText();
String courriel = courrielField.getText();
if(!EmailValidator.isValidEmail(courriel)) {
JOptionPane.showMessageDialog(null, "Le courriel n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
if(!idValidator.isValidId(id)) {
JOptionPane.showMessageDialog(null, "L'ID n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
if(!nameStudentValidator.isValidName(name)) {
JOptionPane.showMessageDialog(null, "Le nom n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
if(!nameStudentValidator.isValidName(prenom)) {
JOptionPane.showMessageDialog(null, "Le prenom n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
String champNom = "name";
String champPrenom = "firstname";
String champId = "identification";
String champEmail = "adresse";
boolean erreur = false;
if(commandes.nodeCSV!=null) {
if(commandes.nodeCSV.getAttributs().get("id")!=null) champId = commandes.nodeCSV.getAttributs().get("id");
if(commandes.nodeCSV.getAttributs().get("email")!=null) champEmail = commandes.nodeCSV.getAttributs().get("email");
if(commandes.nodeCSV.getAttributs().get("name")!=null) champNom = commandes.nodeCSV.getAttributs().get("name");
if(commandes.nodeCSV.getAttributs().get("firstname")!=null) champPrenom = commandes.nodeCSV.getAttributs().get("firstname");
if(commandes.nodeCSV.retourneFirstNodeByNameAndAttributValueExactStrict("student", champId, id)!=null) erreur=true;
if(commandes.nodeCSV.retourneFirstNodeByNameAndAttributValueExactStrict("student", champEmail, courriel)!=null) erreur=true;
}
// Ajouter l'étudiant au modèle de la table
if(!erreur) {
node nouvelEtudiant = new node();
nouvelEtudiant.setNomElt("student");
nouvelEtudiant.getAttributs().put(champNom,name);
nouvelEtudiant.getAttributs().put(champPrenom,prenom);
nouvelEtudiant.getAttributs().put(champId,id);
nouvelEtudiant.getAttributs().put(champEmail,courriel);
((myTableStudent) tableStudent.getModel()).addStudent(nouvelEtudiant);
baseDonneesListesEtudiants.getInstance(indexSelect);
}else {
JOptionPane.showMessageDialog(null, "<html>Impossible d'ajouter cet étudiant car l'ID et/ou le courriel"
+ "<br>sont déjà présents.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Veuillez entrer des informations valides", "Erreur", JOptionPane.ERROR_MESSAGE);
}
}
}
});
}
private void ListenerTables() {
rowSMTable.addListSelectionListener(new ListSelectionListener() { rowSMTable.addListSelectionListener(new ListSelectionListener() {
@Override @Override
@ -243,7 +380,44 @@ public class baseDonneesListesEtudiants extends JFrame{
} }
}); });
table.addMouseListener(new MouseListener() {
tableStudent.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
int row = tableStudent.getSelectedRow();
if (row != -1) {
// Récupérer les données de la ligne sélectionnée
int columnCount = tableStudent.getColumnCount();
StringBuilder rowData = new StringBuilder();
for (int column = 0; column < columnCount; column++) {
rowData.append(tableStudent.getColumnName(column)).append(": ")
.append(tableStudent.getValueAt(row, column)).append("\n");
}
// Afficher les données dans une boîte de dialogue et demander la confirmation pour suppression
int response = JOptionPane.showConfirmDialog(
null,
rowData.toString() + "\nVoulez-vous supprimer cet étudiant?",
"Détails de l'étudiant",
JOptionPane.YES_NO_OPTION,
JOptionPane.INFORMATION_MESSAGE
);
// Supprimer l'étudiant si l'utilisateur a confirmé
if (response == JOptionPane.YES_OPTION) {
((myTableStudent) tableStudent.getModel()).removeRow(row);
baseDonneesListesEtudiants.getInstance(indexSelect);
}
}
}
}
});
table.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if (e.getClickCount() >0) { if (e.getClickCount() >0) {
@ -257,33 +431,6 @@ public class baseDonneesListesEtudiants extends JFrame{
} }
} }
} }
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}); });
} }
} }

View File

@ -6,8 +6,8 @@ import java.awt.FlowLayout;
import java.awt.Font; import java.awt.Font;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JButton; import javax.swing.JButton;
@ -135,7 +135,7 @@ private void ListenerAction() {
/** /**
* Chargement d'une évaluation par double click. * Chargement d'une évaluation par double click.
*/ */
table.addMouseListener( new MouseListener() { table.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
@ -154,23 +154,6 @@ private void ListenerAction() {
} }
} }
} }
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}); });

View File

@ -22,10 +22,12 @@ import javax.swing.JMenuBar;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.JToolBar; import javax.swing.JToolBar;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager; import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException; import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
@ -44,7 +46,6 @@ import action.actOpenBaseListesEtudiants;
import action.actSaveEvaluation; import action.actSaveEvaluation;
import action.actTutoriels; import action.actTutoriels;
import cXML.Run; import cXML.Run;
import cXML.node;
import evaluer.evaluerLesFichiersEtudiants; import evaluer.evaluerLesFichiersEtudiants;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
@ -68,7 +69,7 @@ public class evaluate extends JFrame {
private JPanel contentPane; private JPanel contentPane;
private static JLabel lblPath; private static JLabel lblPath;
private static JLabel lblFileAnalyse; private static JLabel lblFileAnalyse;
private static JLabel lblChargementFichierCSV; private static JLabel lblListe;
private static JLabel lblImageDossierEtudiant; private static JLabel lblImageDossierEtudiant;
private static JLabel lblNoFeedBack; private static JLabel lblNoFeedBack;
private static JLabel lblNoDeatail; private static JLabel lblNoDeatail;
@ -85,6 +86,8 @@ public class evaluate extends JFrame {
private static JCheckBox chckbxVerif; private static JCheckBox chckbxVerif;
private static JCheckBox chckbxNoDetail; private static JCheckBox chckbxNoDetail;
private static JCheckBox chckPasDeProgression ; private static JCheckBox chckPasDeProgression ;
private static JScrollPane scrollPane = new JScrollPane();
private static JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar();
private static afficheText txtpnmessages; private static afficheText txtpnmessages;
private JButton btnChargeEvaluation = new JButton(); private JButton btnChargeEvaluation = new JButton();
private JButton btnSaveEvaluation = new JButton(); private JButton btnSaveEvaluation = new JButton();
@ -146,7 +149,7 @@ public class evaluate extends JFrame {
JPanel panelBoutons = new JPanel(); JPanel panelBoutons = new JPanel();
panelWestBase.add(panelBoutons, BorderLayout.WEST); panelWestBase.add(panelBoutons, BorderLayout.WEST);
panelBoutons.setLayout(new MigLayout("", "[24px][260px]", "[][][][][][][][][][][][][][][]")); panelBoutons.setLayout(new MigLayout("", "[24px][260px]", "[][][][][][][][][][][][][][][][]"));
JLabel lblIconAccueilEvaluation = new JLabel(""); JLabel lblIconAccueilEvaluation = new JLabel("");
@ -171,15 +174,28 @@ public class evaluate extends JFrame {
lblPath.setFont(new Font("Tahoma", Font.PLAIN, 14)); lblPath.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblPath.setText("<HTML><B><U>Dossier de l'évaluation</U></B> : </HTML>"); lblPath.setText("<HTML><B><U>Dossier de l'évaluation</U></B> : </HTML>");
// panelWestBaseNord.add("");
chckbxfichiersEtudiants = new JCheckBox("<html>Les fichiers des étudiants<b><br>ne sont pas</b> dans des dossiers nominatifs</html>"); chckbxfichiersEtudiants = new JCheckBox("<html>Les fichiers des étudiants<b><br>ne sont pas</b> dans des dossiers nominatifs</html>");
chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers ne sont pas dans des dossiers nominatifs."); chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers ne sont pas dans des dossiers nominatifs.");
JLabel lblListeStudent = new JLabel(new ImageIcon(getClass().getResource("/resources/listestudent.png")));
panelBoutons.add(lblListeStudent, "cell 0 0");
lblListe = new JLabel("<html><b>Liste ???</b></html>");
lblListe.setToolTipText("Le nom de la liste d'étudiant chargé en memoire.");
lblListe.setForeground(Color.BLUE);
lblListe.setHorizontalAlignment(SwingConstants.CENTER);
lblListe.setFont(new Font("Tahoma", Font.PLAIN, 16));
lblListe.setOpaque(true);
panelBoutons.add(lblListe, "cell 1 0,alignx left,aligny center");
lblImageDossierEtudiant = new JLabel(new ImageIcon(getClass().getResource("/resources/dossieretudiant.png"))); lblImageDossierEtudiant = new JLabel(new ImageIcon(getClass().getResource("/resources/dossieretudiant.png")));
panelBoutons.add(lblImageDossierEtudiant, "flowx,cell 0 1,alignx left,aligny center"); panelBoutons.add(lblImageDossierEtudiant, "flowx,cell 0 2,alignx left,aligny center");
chckbxfichiersEtudiants.setFont(new Font("Tahoma", Font.PLAIN, 12)); chckbxfichiersEtudiants.setFont(new Font("Tahoma", Font.PLAIN, 12));
chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers des étudiants ne sont pas dans des dossier nominatifs"); chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers des étudiants ne sont pas dans des dossier nominatifs");
panelBoutons.add(chckbxfichiersEtudiants, "cell 1 1,growx,aligny center"); panelBoutons.add(chckbxfichiersEtudiants, "cell 1 2,growx,aligny center");
chckbxfichiersEtudiants.setSelected(commandes.fichierStudentMoodle); chckbxfichiersEtudiants.setSelected(commandes.fichierStudentMoodle);
if(commandes.fichierStudentMoodle) { if(commandes.fichierStudentMoodle) {
chckbxfichiersEtudiants.setToolTipText("Décochez si les fichiers sont dans des dossiers nominatifs."); chckbxfichiersEtudiants.setToolTipText("Décochez si les fichiers sont dans des dossiers nominatifs.");
@ -208,13 +224,10 @@ public class evaluate extends JFrame {
} }
}); });
chckPasDeProgression = new JCheckBox("<html><p><b>Afficher</b> le coefficient de<br>progression dans les feedbacks.</p></html>"); chckPasDeProgression = new JCheckBox("<html><p><b>Afficher</b> le coefficient de<br>progression dans les feedbacks.</p></html>");
chckPasDeProgression.setToolTipText("Cochez si vous ne voulez pas afficher le coef. de profression dans les feeedbacks."); chckPasDeProgression.setToolTipText("Cochez si vous ne voulez pas afficher le coef. de profression dans les feeedbacks.");
JLabel lblafficheprogression = new JLabel((new ImageIcon(create.class.getResource("/resources/afficheprogression.png")))); JLabel lblafficheprogression = new JLabel((new ImageIcon(create.class.getResource("/resources/afficheprogression.png"))));
panelBoutons.add(lblafficheprogression, "cell 0 0"); panelBoutons.add(lblafficheprogression, "cell 0 1");
if(commandes.noAfficheProgression) { if(commandes.noAfficheProgression) {
chckPasDeProgression.setToolTipText("Décochez si vous voulez afficher le coef. de profression dans les feeedbacks."); chckPasDeProgression.setToolTipText("Décochez si vous voulez afficher le coef. de profression dans les feeedbacks.");
chckPasDeProgression.setText("<html><p><b>Ne pas afficher</b> le coefficient de<br>progression dans les feedbacks.</p></html>"); chckPasDeProgression.setText("<html><p><b>Ne pas afficher</b> le coefficient de<br>progression dans les feedbacks.</p></html>");
@ -225,7 +238,7 @@ public class evaluate extends JFrame {
lblafficheprogression.setIcon(new ImageIcon(create.class.getResource("/resources/afficheprogression.png"))); lblafficheprogression.setIcon(new ImageIcon(create.class.getResource("/resources/afficheprogression.png")));
} }
chckPasDeProgression.setFont(new Font("Tahoma", Font.PLAIN, 12)); chckPasDeProgression.setFont(new Font("Tahoma", Font.PLAIN, 12));
panelBoutons.add(chckPasDeProgression, "cell 1 0,alignx left,aligny center"); panelBoutons.add(chckPasDeProgression, "cell 1 1,alignx left,aligny center");
chckPasDeProgression.setSelected(commandes.noAfficheProgression); chckPasDeProgression.setSelected(commandes.noAfficheProgression);
chckPasDeProgression.addChangeListener(new ChangeListener() { chckPasDeProgression.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
@ -248,10 +261,10 @@ public class evaluate extends JFrame {
chckbxnoFeedback = new JCheckBox("<html><b>Générer</b> des feedbacks<br>pour chaque étudiant.</html>"); chckbxnoFeedback = new JCheckBox("<html><b>Générer</b> des feedbacks<br>pour chaque étudiant.</html>");
chckbxnoFeedback.setToolTipText("Cochez si vous ne voulez pas générer des feedbacks."); chckbxnoFeedback.setToolTipText("Cochez si vous ne voulez pas générer des feedbacks.");
chckbxnoFeedback.setFont(new Font("Tahoma", Font.PLAIN, 12)); chckbxnoFeedback.setFont(new Font("Tahoma", Font.PLAIN, 12));
panelBoutons.add(chckbxnoFeedback, "cell 1 2,growx,aligny top"); panelBoutons.add(chckbxnoFeedback, "cell 1 3,growx,aligny top");
chckbxnoFeedback.setSelected(commandes.sansFeeback); chckbxnoFeedback.setSelected(commandes.sansFeeback);
lblNoFeedBack = new JLabel(new ImageIcon(getClass().getResource("/resources/feedbackstudent.png"))); lblNoFeedBack = new JLabel(new ImageIcon(getClass().getResource("/resources/feedbackstudent.png")));
panelBoutons.add(lblNoFeedBack, "cell 0 2"); panelBoutons.add(lblNoFeedBack, "cell 0 3");
if(commandes.sansFeeback) { if(commandes.sansFeeback) {
chckbxnoFeedback.setToolTipText("Décochez si vous voulez générer des feedbacks."); chckbxnoFeedback.setToolTipText("Décochez si vous voulez générer des feedbacks.");
chckbxnoFeedback.setText("<html><b>Ne pas générer</b> des feedbacks<br>pour chaque étudiant.</html>"); chckbxnoFeedback.setText("<html><b>Ne pas générer</b> des feedbacks<br>pour chaque étudiant.</html>");
@ -283,10 +296,10 @@ public class evaluate extends JFrame {
lblNoDeatail = new JLabel(new ImageIcon(getClass().getResource("/resources/detailfeedback.png"))); lblNoDeatail = new JLabel(new ImageIcon(getClass().getResource("/resources/detailfeedback.png")));
chckbxNoDetail = new JCheckBox("<html><b>Afficher</b> les détails des erreurs<br>dans les feedbacks.</html>"); chckbxNoDetail = new JCheckBox("<html><b>Afficher</b> les détails des erreurs<br>dans les feedbacks.</html>");
chckbxNoDetail.setFont(new Font("Tahoma", Font.PLAIN, 12)); chckbxNoDetail.setFont(new Font("Tahoma", Font.PLAIN, 12));
panelBoutons.add(chckbxNoDetail, "cell 1 3,growx,aligny top"); panelBoutons.add(chckbxNoDetail, "cell 1 4,growx,aligny top");
chckbxNoDetail.setSelected(commandes.noDetail); chckbxNoDetail.setSelected(commandes.noDetail);
chckbxNoDetail.setToolTipText("Cochez si vous ne voulez pas afficher les détails de l'évaluation dans les feedbacks."); chckbxNoDetail.setToolTipText("Cochez si vous ne voulez pas afficher les détails de l'évaluation dans les feedbacks.");
panelBoutons.add(lblNoDeatail, "cell 0 3"); panelBoutons.add(lblNoDeatail, "cell 0 4");
if(commandes.noDetail) { if(commandes.noDetail) {
chckbxNoDetail.setToolTipText("Décochez si vous voulez afficher les détails de l'évaluation dans les feedbacks."); chckbxNoDetail.setToolTipText("Décochez si vous voulez afficher les détails de l'évaluation dans les feedbacks.");
chckbxNoDetail.setText("<html><b>Ne pas afficher</b> les détails des erreurs<br>dans les feedbacks.</html>"); chckbxNoDetail.setText("<html><b>Ne pas afficher</b> les détails des erreurs<br>dans les feedbacks.</html>");
@ -321,8 +334,8 @@ public class evaluate extends JFrame {
chckbxNoNote.setFont(new Font("Tahoma", Font.PLAIN, 12)); chckbxNoNote.setFont(new Font("Tahoma", Font.PLAIN, 12));
chckbxNoNote.setSelected(commandes.noNote); chckbxNoNote.setSelected(commandes.noNote);
lblnonote = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/notestudent.png"))); lblnonote = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/notestudent.png")));
panelBoutons.add(lblnonote, "cell 0 4"); panelBoutons.add(lblnonote, "cell 0 5");
panelBoutons.add(chckbxNoNote, "cell 1 4,grow"); panelBoutons.add(chckbxNoNote, "cell 1 5,grow");
if(commandes.noNote) { if(commandes.noNote) {
chckbxNoNote.setToolTipText("Décochez si vous voulez faire apparaître les notes dans les feedbacks."); chckbxNoNote.setToolTipText("Décochez si vous voulez faire apparaître les notes dans les feedbacks.");
chckbxNoNote.setText("\"<html><b>Ne pas Afficher</b> les notes dans les feedbacks.</html>\""); chckbxNoNote.setText("\"<html><b>Ne pas Afficher</b> les notes dans les feedbacks.</html>\"");
@ -356,8 +369,8 @@ public class evaluate extends JFrame {
chckbxZipfeedback.setToolTipText("Cochez si vous voulez placer les feedbacks dans une archive ZIP"); chckbxZipfeedback.setToolTipText("Cochez si vous voulez placer les feedbacks dans une archive ZIP");
chckbxZipfeedback.setFont(new Font("Tahoma", Font.PLAIN, 12)); chckbxZipfeedback.setFont(new Font("Tahoma", Font.PLAIN, 12));
lblnozip = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/zipstudent.png"))); lblnozip = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/zipstudent.png")));
panelBoutons.add(lblnozip, "cell 0 5"); panelBoutons.add(lblnozip, "cell 0 6");
panelBoutons.add(chckbxZipfeedback, "cell 1 5,grow"); panelBoutons.add(chckbxZipfeedback, "cell 1 6,grow");
chckbxZipfeedback.setSelected(commandes.zipfeedback); chckbxZipfeedback.setSelected(commandes.zipfeedback);
if(commandes.zipfeedback) { if(commandes.zipfeedback) {
chckbxZipfeedback.setToolTipText("Décochez si vous ne voulez pas placer les feedbacks dans une archive ZIP"); chckbxZipfeedback.setToolTipText("Décochez si vous ne voulez pas placer les feedbacks dans une archive ZIP");
@ -388,9 +401,9 @@ public class evaluate extends JFrame {
chckbxVerif = new JCheckBox("<html><b>Ne pas vérifier</b> les historiques avant<br>l'évaluation des fichiers.</html>"); chckbxVerif = new JCheckBox("<html><b>Ne pas vérifier</b> les historiques avant<br>l'évaluation des fichiers.</html>");
lblVerifHistorique = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/noverifhistoriquestudent.png"))); lblVerifHistorique = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/noverifhistoriquestudent.png")));
panelBoutons.add(lblVerifHistorique, "cell 0 6"); panelBoutons.add(lblVerifHistorique, "cell 0 7");
chckbxVerif.setFont(new Font("Tahoma", Font.PLAIN, 12)); chckbxVerif.setFont(new Font("Tahoma", Font.PLAIN, 12));
panelBoutons.add(chckbxVerif, "flowy,cell 1 6,growx,aligny top"); panelBoutons.add(chckbxVerif, "flowy,cell 1 7,growx,aligny top");
chckbxVerif.setSelected(commandes.verifHisto2); chckbxVerif.setSelected(commandes.verifHisto2);
if(commandes.verifHisto2) { if(commandes.verifHisto2) {
chckbxVerif.setToolTipText("Décochez si vous voulez ne pas vérifier l'historique des modifications."); chckbxVerif.setToolTipText("Décochez si vous voulez ne pas vérifier l'historique des modifications.");
@ -419,25 +432,12 @@ public class evaluate extends JFrame {
} }
}); });
lblChargementFichierCSV = new JLabel("<html>Pas de liste des étudiants</html>");
panelBoutons.add(lblChargementFichierCSV, "cell 1 7,alignx left,aligny center");
lblCsvNote = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/nocsvstudent.png"))); lblCsvNote = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/nocsvstudent.png")));
panelBoutons.add(lblCsvNote, "cell 0 9"); panelBoutons.add(lblCsvNote, "cell 0 8");
chckCSVNotes = new JCheckBox("<html><b>Ne pas créer</b> un fichier CSV<br>des notes.</html>"); chckCSVNotes = new JCheckBox("<html><b>Ne pas créer</b> un fichier CSV<br>des notes.</html>");
chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV."); chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV.");
panelBoutons.add(chckCSVNotes, "flowx,cell 1 9,grow"); panelBoutons.add(chckCSVNotes, "flowx,cell 1 8,grow");
chckCSVNotes.setSelected(commandes.ecritNoteCSV); chckCSVNotes.setSelected(commandes.ecritNoteCSV);
if(commandes.ecritNoteCSV) {
chckCSVNotes.setToolTipText("Décochez si vous voulez ne pas importer les notes dans un fichier CSV.");
lblCsvNote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/csvstudent.png")));
chckCSVNotes.setText("<html><b>Ne pas créer</b> un fichier CSV<br>des notes.</html>");
}else {
lblCsvNote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/nocsvstudent.png")));
chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV.");
chckCSVNotes.setText("<html><b>Créer</b> un fichier CSV<br>des notes.</html>");
}
chckCSVNotes.addChangeListener(new ChangeListener() { chckCSVNotes.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
if(chckCSVNotes.isSelected()) { if(chckCSVNotes.isSelected()) {
@ -455,6 +455,15 @@ public class evaluate extends JFrame {
} }
} }
}); });
if(commandes.ecritNoteCSV) {
chckCSVNotes.setToolTipText("Décochez si vous voulez ne pas importer les notes dans un fichier CSV.");
lblCsvNote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/csvstudent.png")));
chckCSVNotes.setText("<html><b>Ne pas créer</b> un fichier CSV<br>des notes.</html>");
}else {
lblCsvNote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/nocsvstudent.png")));
chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV.");
chckCSVNotes.setText("<html><b>Créer</b> un fichier CSV<br>des notes.</html>");
}
@ -462,7 +471,6 @@ public class evaluate extends JFrame {
contentPane.add(panelCentre, BorderLayout.CENTER); contentPane.add(panelCentre, BorderLayout.CENTER);
panelCentre.setLayout(new BorderLayout(0, 0)); panelCentre.setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane();
panelCentre.add(scrollPane); panelCentre.add(scrollPane);
@ -475,18 +483,20 @@ public class evaluate extends JFrame {
scrollPane.setViewportView(txtpnmessages); scrollPane.setViewportView(txtpnmessages);
if(commandes.fourniCSV) { if(commandes.nodeCSV!=null) {
lblChargementFichierCSV.setBackground(new Color(40,180,40));
if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) { if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) {
commandes.nodeCSV.getAttributs().put("nameListStudent","?"); commandes.nodeCSV.getAttributs().put("nameListStudent","?");
commandes.nodeCSV.getAttributs().put("year", "?"); commandes.nodeCSV.getAttributs().put("year", "?");
} lblListe.setText("<html><b>Liste ???</b></html>");
lblChargementFichierCSV.setText("Liste des étudiants : " + commandes.nodeCSV.getAttributs().get("nameListStudent"));
lblChargementFichierCSV.setOpaque(true);
}else { }else {
lblChargementFichierCSV.setOpaque(false); lblListe.setText("<html><b>"+commandes.nodeCSV.getAttributs().get("nameListStudent")+"</b></html>");
}
}else {
lblListe.setText("<html><b>Liste ???</b></html>");
} }
// Positionne le curseur au début du texte pour que le JScrollPane affiche le haut
positionScrollDebut();
this.setExtendedState(MAXIMIZED_BOTH); this.setExtendedState(MAXIMIZED_BOTH);
ListenerAction(); ListenerAction();
@ -495,6 +505,15 @@ public class evaluate extends JFrame {
} }
public static void positionScrollDebut() {
// Positionne le curseur au début du texte pour que le JScrollPane affiche le haut
SwingUtilities.invokeLater(() -> {
txtpnmessages.setCaretPosition(0);
verticalScrollBar.setValue(verticalScrollBar.getMinimum());
});
}
private void ListenerAction() { private void ListenerAction() {
/** /**
@ -526,6 +545,7 @@ public class evaluate extends JFrame {
}else { }else {
txtpnmessages.setText(baliseStyle.balise() + "<hr class=\"city\"><h1>*** Veuillez charger une évaluation ***</h1><hr>"); txtpnmessages.setText(baliseStyle.balise() + "<hr class=\"city\"><h1>*** Veuillez charger une évaluation ***</h1><hr>");
} }
positionScrollDebut();
isDispose=false; isDispose=false;
return instance; return instance;
} }
@ -561,7 +581,6 @@ public class evaluate extends JFrame {
JMenu mnNewMenu = new JMenu("Base des évaluations"); JMenu mnNewMenu = new JMenu("Base des évaluations");
mnNewMenu.setMnemonic( 'F' ); mnNewMenu.setMnemonic( 'F' );
menuBar.add(mnNewMenu); menuBar.add(mnNewMenu);
// mnNewMenu.add( new actPathBaseEvaluations() );
JMenuItem menuItem = mnNewMenu.add( new actOpenBaseEvaluation() ); JMenuItem menuItem = mnNewMenu.add( new actOpenBaseEvaluation() );
menuItem.setText("Base des évaluations"); menuItem.setText("Base des évaluations");
mnNewMenu.addSeparator(); mnNewMenu.addSeparator();
@ -573,15 +592,9 @@ public class evaluate extends JFrame {
JMenu mnMenu_Liste_Etudiant = new JMenu("Liste des étudiants"); JMenu mnMenu_Liste_Etudiant = new JMenu("Liste des étudiants");
menuBar.add(mnMenu_Liste_Etudiant); menuBar.add(mnMenu_Liste_Etudiant);
mnMenu_Liste_Etudiant.add(actChargeListeEtudiantCSV); mnMenu_Liste_Etudiant.add(new actOpenBaseListesEtudiants());
mnMenu_Liste_Etudiant.addSeparator();
mnMenu_Liste_Etudiant.add(actDeleteListeEtudiantCSV);
mnMenu_Liste_Etudiant.addSeparator(); mnMenu_Liste_Etudiant.addSeparator();
mnMenu_Liste_Etudiant.add(actAfficheListeEtudiant); mnMenu_Liste_Etudiant.add(actAfficheListeEtudiant);
mnMenu_Liste_Etudiant.addSeparator();
mnMenu_Liste_Etudiant.add(actModificationListeEtudiantCSV);
mnMenu_Liste_Etudiant.addSeparator();
mnMenu_Liste_Etudiant.add(actVerifCSV );
JMenu mnMenu_Evaluation = new JMenu("Evaluer des étudiants"); JMenu mnMenu_Evaluation = new JMenu("Evaluer des étudiants");
@ -622,7 +635,6 @@ public class evaluate extends JFrame {
btnSaveEvaluation.setVisible(true); btnSaveEvaluation.setVisible(true);
toolBar.add(btnSaveEvaluation); toolBar.add(btnSaveEvaluation);
toolBar.addSeparator(); toolBar.addSeparator();
JButton btnInformationAnalyse = toolBar.add( actCodeFichierAnalyse ); JButton btnInformationAnalyse = toolBar.add( actCodeFichierAnalyse );
@ -652,22 +664,22 @@ public class evaluate extends JFrame {
btnBaseListeEtudiant.setText(""); btnBaseListeEtudiant.setText("");
toolBar.add(btnBaseListeEtudiant); toolBar.add(btnBaseListeEtudiant);
JButton btnFichierCSV = toolBar.add(actChargeListeEtudiantCSV ); // JButton btnFichierCSV = toolBar.add(actChargeListeEtudiantCSV );
btnFichierCSV.setHideActionText(true); // btnFichierCSV.setHideActionText(true);
btnFichierCSV.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSV.png"))); // btnFichierCSV.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSV.png")));
toolBar.add(btnFichierCSV); // toolBar.add(btnFichierCSV);
// Pour l'instant je cache ce bouton car il n'est pas utile. // // Pour l'instant je cache ce bouton car il n'est pas utile.
JButton btnVerificationCSVavecFichierAnalyse = toolBar.add( actVerifCSV ); // JButton btnVerificationCSVavecFichierAnalyse = toolBar.add( actVerifCSV );
btnVerificationCSVavecFichierAnalyse.setVisible(false); // btnVerificationCSVavecFichierAnalyse.setVisible(false);
btnVerificationCSVavecFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png"))); // btnVerificationCSVavecFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png")));
btnVerificationCSVavecFichierAnalyse.setHideActionText(true); // btnVerificationCSVavecFichierAnalyse.setHideActionText(true);
toolBar.add(btnVerificationCSVavecFichierAnalyse); // toolBar.add(btnVerificationCSVavecFichierAnalyse);
JButton btnFichierCSV_delete = toolBar.add(actDeleteListeEtudiantCSV); // JButton btnFichierCSV_delete = toolBar.add(actDeleteListeEtudiantCSV);
btnFichierCSV_delete.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_delete.png"))); // btnFichierCSV_delete.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_delete.png")));
btnFichierCSV_delete.setHideActionText(true); // btnFichierCSV_delete.setHideActionText(true);
JButton btnInfoListeEtudiant = toolBar.add(actAfficheListeEtudiant); JButton btnInfoListeEtudiant = toolBar.add(actAfficheListeEtudiant);
@ -676,17 +688,13 @@ public class evaluate extends JFrame {
toolBar.add(btnInfoListeEtudiant); toolBar.add(btnInfoListeEtudiant);
JButton btnFichierCSV_modifier = toolBar.add(actModificationListeEtudiantCSV); // JButton btnFichierCSV_modifier = toolBar.add(actModificationListeEtudiantCSV);
btnFichierCSV_modifier.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modif.png"))); // btnFichierCSV_modifier.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modif.png")));
btnFichierCSV_modifier.setHideActionText(true); // btnFichierCSV_modifier.setHideActionText(true);
toolBar.addSeparator(); toolBar.addSeparator();
JButton btnSelectFolder = toolBar.add(actSelectFolder); JButton btnSelectFolder = toolBar.add(actSelectFolder);
btnSelectFolder.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btnSelectFolder.setIcon(new ImageIcon(evaluate.class.getResource("/resources/open.png"))); btnSelectFolder.setIcon(new ImageIcon(evaluate.class.getResource("/resources/open.png")));
btnSelectFolder.setHideActionText(true); btnSelectFolder.setHideActionText(true);
toolBar.add(btnSelectFolder); toolBar.add(btnSelectFolder);
@ -736,8 +744,6 @@ public class evaluate extends JFrame {
chckbxnoFeedback.setEnabled(false); chckbxnoFeedback.setEnabled(false);
chckbxNoNote.setEnabled(false); chckbxNoNote.setEnabled(false);
chckCSVNotes.setEnabled(false); chckCSVNotes.setEnabled(false);
// chckbxNewLogo.setEnabled(false);
// chckbxNoLogo.setEnabled(false);
chckbxVerif.setEnabled(false); chckbxVerif.setEnabled(false);
chckbxNoDetail.setEnabled(false); chckbxNoDetail.setEnabled(false);
chckPasDeProgression.setEnabled(false); chckPasDeProgression.setEnabled(false);
@ -746,7 +752,6 @@ public class evaluate extends JFrame {
chckbxZipfeedback.setSelected(commandes.zipfeedback); chckbxZipfeedback.setSelected(commandes.zipfeedback);
chckbxnoFeedback.setSelected(commandes.sansFeeback); chckbxnoFeedback.setSelected(commandes.sansFeeback);
chckCSVNotes.setSelected(commandes.ecritNoteCSV); chckCSVNotes.setSelected(commandes.ecritNoteCSV);
// chckbxNewLogo.setSelected(commandes.newLogo);
chckbxNoNote.setSelected(commandes.noNote); chckbxNoNote.setSelected(commandes.noNote);
chckbxVerif.setSelected(commandes.verifHisto2); chckbxVerif.setSelected(commandes.verifHisto2);
chckbxNoDetail.setSelected(commandes.noDetail); chckbxNoDetail.setSelected(commandes.noDetail);
@ -760,18 +765,17 @@ public class evaluate extends JFrame {
chckbxNoDetail.setEnabled(true); chckbxNoDetail.setEnabled(true);
chckPasDeProgression.setEnabled(true); chckPasDeProgression.setEnabled(true);
if(commandes.fourniCSV) { if(commandes.nodeCSV!=null) {
if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) { if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) {
commandes.nodeCSV.getAttributs().put("nameListStudent","?"); commandes.nodeCSV.getAttributs().put("nameListStudent","?");
commandes.nodeCSV.getAttributs().put("year", "?"); commandes.nodeCSV.getAttributs().put("year", "?");
} lblListe.setText("<html><b>Liste ???</b></html>");
lblChargementFichierCSV.setBackground(new Color(40,180,40));
lblChargementFichierCSV.setText("Liste des étudiants : " + commandes.nodeCSV.getAttributs().get("nameListStudent"));
lblChargementFichierCSV.setOpaque(true);
}else { }else {
lblChargementFichierCSV.setOpaque(false); lblListe.setText("<html><b>"+commandes.nodeCSV.getAttributs().get("nameListStudent")+"</b></html>");
}
}else {
lblListe.setText("<html><b>Liste ???</b></html>");
} }
txtpnmessages.afficheChargementFichierAnalyse(); txtpnmessages.afficheChargementFichierAnalyse();
} }
@ -931,77 +935,77 @@ public class evaluate extends JFrame {
/** // /**
* // *
*/ // */
private AbstractAction actVerifCSV = new AbstractAction() { // private AbstractAction actVerifCSV = new AbstractAction() {
//
private static final long serialVersionUID = 1L; // private static final long serialVersionUID = 1L;
{ // {
putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png"))); // putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png")));
putValue( Action.NAME, "Vérification des champs du CSV" ); // putValue( Action.NAME, "Vérification des champs du CSV" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXMLmini.png")) ); // putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXMLmini.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_U ); // putValue( Action.MNEMONIC_KEY, KeyEvent.VK_U );
putValue( Action.SHORT_DESCRIPTION, "Vérification des champs du CSV (CTRL+B)" ); // putValue( Action.SHORT_DESCRIPTION, "Vérification des champs du CSV (CTRL+B)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK) ); // putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK) );
} // }
@Override // @Override
public void actionPerformed( ActionEvent e ) { // public void actionPerformed( ActionEvent e ) {
//
if(commandes.fichierAnalyseValide) { // if(commandes.fichierAnalyseValide) {
if(commandes.fourniCSV) { // if(commandes.fourniCSV) {
node settingCSV = commandes.sujet.retourneFirstEnfantsByName("import_moodle"); // node settingCSV = commandes.sujet.retourneFirstEnfantsByName("import_moodle");
if(settingCSV.isHasAttributs()) { // if(settingCSV.isHasAttributs()) {
String email ="inconnu"; // String email ="inconnu";
String name = "inconnu"; // String name = "inconnu";
String firstname = "inconnu"; // String firstname = "inconnu";
String id = "inconnu"; // String id = "inconnu";
txtpnmessages.setContentType("text/html"); // txtpnmessages.setContentType("text/html");
boolean avertissement = false; // boolean avertissement = false;
if(settingCSV.getAttributs().get("email")!=null) { // if(settingCSV.getAttributs().get("email")!=null) {
email = settingCSV.getAttributs().get("email"); // email = settingCSV.getAttributs().get("email");
} // }
if(settingCSV.getAttributs().get("name")!=null) { // if(settingCSV.getAttributs().get("name")!=null) {
name = settingCSV.getAttributs().get("name"); // name = settingCSV.getAttributs().get("name");
} // }
if(settingCSV.getAttributs().get("firstname")!=null) { // if(settingCSV.getAttributs().get("firstname")!=null) {
firstname = settingCSV.getAttributs().get("firstname"); // firstname = settingCSV.getAttributs().get("firstname");
} // }
if(settingCSV.getAttributs().get("id")!=null) { // if(settingCSV.getAttributs().get("id")!=null) {
id = settingCSV.getAttributs().get("id"); // id = settingCSV.getAttributs().get("id");
} // }
if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(firstname)==null) { // if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(firstname)==null) {
txtpnmessages.setText("<html><h1>*** AVERTISSEMENT - Il n'y a pas le champ " + firstname + " dans le fichier CSV. ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** AVERTISSEMENT - Il n'y a pas le champ " + firstname + " dans le fichier CSV. ***</h1></html>");
avertissement=true; // avertissement=true;
} // }
if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(name)==null) { // if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(name)==null) {
txtpnmessages.setText("<html><h1>*** AVERTISSEMENT - Il n'y a pas le champ " + name + " dans le fichier CSV. ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** AVERTISSEMENT - Il n'y a pas le champ " + name + " dans le fichier CSV. ***</h1></html>");
avertissement=true; // avertissement=true;
} // }
if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(id)==null) { // if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(id)==null) {
txtpnmessages.setText("<html><h1>*** AVERTISSEMENT - Il n'y a pas le champ " + id + " dans le fichier CSV. ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** AVERTISSEMENT - Il n'y a pas le champ " + id + " dans le fichier CSV. ***</h1></html>");
avertissement=true; // avertissement=true;
} // }
if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(email)==null) { // if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(email)==null) {
txtpnmessages.setText("<html><h1>*** AVERTISSEMENT - Il n'y a pas le champ " + email + " dans le fichier CSV. ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** AVERTISSEMENT - Il n'y a pas le champ " + email + " dans le fichier CSV. ***</h1></html>");
avertissement=true; // avertissement=true;
} // }
if(!avertissement) { // if(!avertissement) {
txtpnmessages.setText("<html><h1>*** Le fichier CSV contenant la liste des étudiants peut être utilisé avec les paramètres du fichier d'analyse ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** Le fichier CSV contenant la liste des étudiants peut être utilisé avec les paramètres du fichier d'analyse ***</h1></html>");
} // }
}else { // }else {
txtpnmessages.setText("<html><h1>*** Le fichier CSV contenant la liste des étudiants est vide ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** Le fichier CSV contenant la liste des étudiants est vide ***</h1></html>");
} // }
}else { // }else {
txtpnmessages.setText("<html><h1>*** Veuillez charger un fichier CSV contenant la liste des étudiants ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** Veuillez charger un fichier CSV contenant la liste des étudiants ***</h1></html>");
new msgBox("Le fichier CSV contenant la liste des étudiants n'est pas chargé.",true,false,"Avertissement"); // new msgBox("Le fichier CSV contenant la liste des étudiants n'est pas chargé.",true,false,"Avertissement");
} // }
}else { // }else {
txtpnmessages.setText("<html><h1>*** Veuillez charger une évaluation ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** Veuillez charger une évaluation ***</h1></html>");
new msgBox("Le fichier d'analyse n'est pas valide.",true,false,"Avertissement"); // new msgBox("Le fichier d'analyse n'est pas valide.",true,false,"Avertissement");
} // }
} // }
}; // };
/** /**
@ -1112,151 +1116,151 @@ public class evaluate extends JFrame {
}; };
/** // /**
* Charge la liste des étudiants à partir d'un fichier CSV<br> // * Charge la liste des étudiants à partir d'un fichier CSV<br>
* Et le converti sous la forme d'un node (pour fichier XML). // * Et le converti sous la forme d'un node (pour fichier XML).
*/ // */
private AbstractAction actChargeListeEtudiantCSV = new AbstractAction() { // private AbstractAction actChargeListeEtudiantCSV = new AbstractAction() {
//
private static final long serialVersionUID = 1L; // private static final long serialVersionUID = 1L;
//
{ // {
putValue( Action.NAME, "Ajoute une liste ou des étudiants à une liste" ); // putValue( Action.NAME, "Ajoute une liste ou des étudiants à une liste" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVmini.png")) ); // putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVmini.png")) );
putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV.png")) ); // putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L ); // putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L );
putValue( Action.SHORT_DESCRIPTION, "Ajoute une liste ou des étudiants à une liste (CTRL+L)" ); // putValue( Action.SHORT_DESCRIPTION, "Ajoute une liste ou des étudiants à une liste (CTRL+L)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_DOWN_MASK) ); // putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_DOWN_MASK) );
} // }
//
@Override public void actionPerformed( ActionEvent e ) { // @Override public void actionPerformed( ActionEvent e ) {
//
int nbrStudent = 0; // int nbrStudent = 0;
if(commandes.nodeCSV==null) { // if(commandes.nodeCSV==null) {
commandes.nodeCSV = new node("fileCSV"); // commandes.nodeCSV = new node("fileCSV");
nbrStudent=0; // nbrStudent=0;
}else { // }else {
if(commandes.nodeCSV.getNomElt()==null) commandes.nodeCSV.setNomElt("fileCSV"); // if(commandes.nodeCSV.getNomElt()==null) commandes.nodeCSV.setNomElt("fileCSV");
if(commandes.nodeCSV.getNomElt().isBlank()) commandes.nodeCSV.setNomElt("fileCSV"); // if(commandes.nodeCSV.getNomElt().isBlank()) commandes.nodeCSV.setNomElt("fileCSV");
nbrStudent = commandes.nodeCSV.getNbrEnfants(); // nbrStudent = commandes.nodeCSV.getNbrEnfants();
} // }
//
// Chargement du fichier CSV // // Chargement du fichier CSV
String nameListStudent = CustomInputDialogListeEtudiant.showCustominputDialog(); // String nameListStudent = CustomInputDialogListeEtudiant.showCustominputDialog();
//
if(nameListStudent.equals("Code_Annule")) return; // if(nameListStudent.equals("Code_Annule")) return;
//
if(commandes.nodeCSV.getNbrEnfants()==nbrStudent) { // if(commandes.nodeCSV.getNbrEnfants()==nbrStudent) {
txtpnmessages.setContentType("text/html"); // txtpnmessages.setContentType("text/html");
txtpnmessages.setText("<html><h1>*** Aucun nouveau étudiant a été ajouté à la liste "+ nameListStudent +"***</h1>" // txtpnmessages.setText("<html><h1>*** Aucun nouveau étudiant a été ajouté à la liste "+ nameListStudent +"***</h1>"
+ "<p>Le nombre d'étudiant dans la liste est de "+ String.valueOf(nbrStudent) +"</p></html>"); // + "<p>Le nombre d'étudiant dans la liste est de "+ String.valueOf(nbrStudent) +"</p></html>");
}else { // }else {
if(commandes.fourniCSV) { // if(commandes.fourniCSV) {
txtpnmessages.setContentType("text/html"); // txtpnmessages.setContentType("text/html");
txtpnmessages.setText(baliseStyle.balise() + meptl.afficheNodeCSV().toString()); // txtpnmessages.setText(baliseStyle.balise() + meptl.afficheNodeCSV().toString());
System.out.println( "Affiche la liste des étudiants déjà en mémoire." ); // System.out.println( "Affiche la liste des étudiants déjà en mémoire." );
}else { // }else {
txtpnmessages.setContentType("text/html"); // txtpnmessages.setContentType("text/html");
txtpnmessages.setText("<html><h1>*** Veuillez sélectionner un fichier CSV contenant la liste des étudiants. ***</h1></html>"); // txtpnmessages.setText("<html><h1>*** Veuillez sélectionner un fichier CSV contenant la liste des étudiants. ***</h1></html>");
} // }
} // }
System.out.println( "Charge la liste des étudiants." ); // System.out.println( "Charge la liste des étudiants." );
//
//
if(commandes.fourniCSV) { // if(commandes.fourniCSV) {
if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) { // if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) {
commandes.nodeCSV.getAttributs().put("nameListStudent","?"); // commandes.nodeCSV.getAttributs().put("nameListStudent","?");
commandes.nodeCSV.getAttributs().put("year", "?"); // commandes.nodeCSV.getAttributs().put("year", "?");
} // }
lblChargementFichierCSV.setBackground(new Color(40,180,40)); // lblListe.setBackground(new Color(40,180,40));
lblChargementFichierCSV.setText("Liste des étudiants : " + commandes.nodeCSV.getAttributs().get("nameListStudent")); // lblListe.setText("Liste des étudiants : " + commandes.nodeCSV.getAttributs().get("nameListStudent"));
lblChargementFichierCSV.setOpaque(true); // lblListe.setOpaque(true);
}else { // }else {
lblChargementFichierCSV.setOpaque(false); // lblListe.setOpaque(false);
lblChargementFichierCSV.setText("Pas de liste des étudiants"); // lblListe.setText("Pas de liste des étudiants");
} // }
} // }
}; // };
/** // /**
* Supprime la liste des étudiants sous la forme d'un fichier XML. // * Supprime la liste des étudiants sous la forme d'un fichier XML.
*/ // */
private AbstractAction actDeleteListeEtudiantCSV = new AbstractAction() { // private AbstractAction actDeleteListeEtudiantCSV = new AbstractAction() {
//
private static final long serialVersionUID = 1L; // private static final long serialVersionUID = 1L;
//
{ // {
putValue( Action.NAME, "Supprime la liste des étudiants" ); // putValue( Action.NAME, "Supprime la liste des étudiants" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_deletemini.png")) ); // putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_deletemini.png")) );
putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_delete.png")) ); // putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_delete.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L ); // putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L );
putValue( Action.SHORT_DESCRIPTION, "Supprime la liste des étudiants" ); // putValue( Action.SHORT_DESCRIPTION, "Supprime la liste des étudiants" );
} // }
//
@Override public void actionPerformed( ActionEvent e ) { // @Override public void actionPerformed( ActionEvent e ) {
//
if(JOptionPane.showConfirmDialog(null,"Voulez-vous supprimer la liste des étudiant ?", "Supprimer", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { // if(JOptionPane.showConfirmDialog(null,"Voulez-vous supprimer la liste des étudiant ?", "Supprimer", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) {
commandes.nodeCSV = meptl.supprimeFichierCSV(); // commandes.nodeCSV = meptl.supprimeFichierCSV();
commandes.fourniCSV=false; // commandes.fourniCSV=false;
txtpnmessages.setContentType("text/html"); // txtpnmessages.setContentType("text/html");
txtpnmessages.setText("<html><h1>***Suppression de la liste des étudiants ***</h1></html>"); // txtpnmessages.setText("<html><h1>***Suppression de la liste des étudiants ***</h1></html>");
System.out.println( "Suppression de la liste des étudiants." ); // System.out.println( "Suppression de la liste des étudiants." );
lblChargementFichierCSV.setOpaque(false); // lblListe.setOpaque(false);
lblChargementFichierCSV.setText("Pas de liste des étudiants"); // lblListe.setText("Pas de liste des étudiants");
} // }
//
} // }
}; // };
/** // /**
* Supprime la liste des étudiants sous la forme d'un fichier XML. // * Supprime la liste des étudiants sous la forme d'un fichier XML.
*/ // */
private AbstractAction actModificationListeEtudiantCSV = new AbstractAction() { // private AbstractAction actModificationListeEtudiantCSV = new AbstractAction() {
//
private static final long serialVersionUID = 1L; // private static final long serialVersionUID = 1L;
//
{ // {
putValue( Action.NAME, "Modification de la liste des étudiants" ); // putValue( Action.NAME, "Modification de la liste des étudiants" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modifmini.png")) ); // putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modifmini.png")) );
putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modif.png")) ); // putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modif.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L ); // putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L );
putValue( Action.SHORT_DESCRIPTION, "Modification de la liste des étudiants" ); // putValue( Action.SHORT_DESCRIPTION, "Modification de la liste des étudiants" );
} // }
//
@Override public void actionPerformed( ActionEvent e ) { // @Override public void actionPerformed( ActionEvent e ) {
//
txtpnmessages.setContentType("text/html"); // txtpnmessages.setContentType("text/html");
if(commandes.fourniCSV) { // if(commandes.fourniCSV) {
node nodImportCSV = commandes.sujet.retourneFirstEnfantsByName("import_moodle"); // node nodImportCSV = commandes.sujet.retourneFirstEnfantsByName("import_moodle");
String name = nodImportCSV.getAttributs().get("name"); // String name = nodImportCSV.getAttributs().get("name");
String email = nodImportCSV.getAttributs().get("email"); // String email = nodImportCSV.getAttributs().get("email");
String firstname = nodImportCSV.getAttributs().get("firstname"); // String firstname = nodImportCSV.getAttributs().get("firstname");
String id = nodImportCSV.getAttributs().get("id"); // String id = nodImportCSV.getAttributs().get("id");
//
String numStudent = JOptionPane.showInputDialog("<html><p>Quel est le numéro de l'étudiant ?</p></html>"); // String numStudent = JOptionPane.showInputDialog("<html><p>Quel est le numéro de l'étudiant ?</p></html>");
node nodeStudent = commandes.nodeCSV.retourneFirstNodeByNameAndAttributValueExactStrict("student", id, numStudent); // node nodeStudent = commandes.nodeCSV.retourneFirstNodeByNameAndAttributValueExactStrict("student", id, numStudent);
//
if(nodeStudent!=null) { // if(nodeStudent!=null) {
txtpnmessages.setText("<html><h1>Etudiant trouvé</h1><hr><p>Nom : "+ nodeStudent.getAttributs().get(name) +"</p>" // txtpnmessages.setText("<html><h1>Etudiant trouvé</h1><hr><p>Nom : "+ nodeStudent.getAttributs().get(name) +"</p>"
+ "<p>Prenom : "+nodeStudent.getAttributs().get(firstname)+"</p>" // + "<p>Prenom : "+nodeStudent.getAttributs().get(firstname)+"</p>"
+ "<p>Email : " + nodeStudent.getAttributs().get(email) +"</p>" // + "<p>Email : " + nodeStudent.getAttributs().get(email) +"</p>"
+ "<p>Numéro étudiant : "+ nodeStudent.getAttributs().get(id) +"</p></html>"); // + "<p>Numéro étudiant : "+ nodeStudent.getAttributs().get(id) +"</p></html>");
//
new modifStudent(nodeStudent, nodImportCSV).setVisible(true); // new modifStudent(nodeStudent, nodImportCSV).setVisible(true);
//
System.out.println( "etudiant trouvé." ); // System.out.println( "etudiant trouvé." );
}else { // }else {
txtpnmessages.setText("<html><h1>*** L'étudiant n'a pas été trouvé. ***</html>"); // txtpnmessages.setText("<html><h1>*** L'étudiant n'a pas été trouvé. ***</html>");
} // }
}else { // }else {
txtpnmessages.setText("<html><h1>*** Veuillez charger une liste d'étudiant à partir d'un fichier au format CSV. ***</html>"); // txtpnmessages.setText("<html><h1>*** Veuillez charger une liste d'étudiant à partir d'un fichier au format CSV. ***</html>");
} // }
} // }
//
}; // };
@ -1277,13 +1281,17 @@ public class evaluate extends JFrame {
} }
@Override public void actionPerformed( ActionEvent e ) { @Override public void actionPerformed( ActionEvent e ) {
if(commandes.fourniCSV) { if(commandes.nodeCSV!=null) {
if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) {
txtpnmessages.setContentType("text/html"); txtpnmessages.setContentType("text/html");
txtpnmessages.setText(baliseStyle.balise() + meptl.afficheNodeCSV().toString()); txtpnmessages.setText(baliseStyle.balise() + meptl.afficheNodeCSV().toString());
System.out.println( "Affiche la liste des étudiants déjà en mémoire." );
}else { }else {
txtpnmessages.setContentType("text/html"); txtpnmessages.setContentType("text/html");
txtpnmessages.setText("<html><h1>*** Veuillez sélectionner un fichier CSV contenant la liste des étudiants. ***</h1></html>"); txtpnmessages.setText("<html><h1>*** Veuillez sélectionner une liste d'étudiants dans la base. ***</h1></html>");
}
}else {
txtpnmessages.setContentType("text/html");
txtpnmessages.setText("<html><h1>*** Veuillez sélectionner une liste d'étudiants dans la base. ***</h1></html>");
} }
} }
}; };

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB