- added uid RiderVO prop

- fixed RiderCardDrawer layout
- added fake avatars
- avatars are now loaded dynammically
This commit is contained in:
2025-12-18 15:51:34 +01:00
parent ee6cd5f6bf
commit 631c86d653
15 changed files with 206 additions and 67 deletions
+42 -20
View File
@@ -1,9 +1,10 @@
[
{
"id": 1,
"uid": "4f9b61d5-3747-466c-80de-f307bb6c63d1",
"name": "Dupuy",
"firstName": "Sacha",
"age": 6,
"age": 12,
"lastLessonDate": 1705132800,
"level": 0,
"credit": 15,
@@ -20,9 +21,10 @@
},
{
"id": 2,
"uid": "f08674e5-03e1-4cd6-9cb6-eb510df88d61",
"name": "Lefèvre",
"firstName": "Théo",
"age": 8,
"firstName": "Emma",
"age": 15,
"lastLessonDate": 1704873600,
"level": 1,
"credit": 12,
@@ -39,8 +41,9 @@
},
{
"id": 3,
"uid": "a169b8f1-1fea-4a09-84e2-19b3d7e98083",
"name": "Bernard",
"firstName": "Lucas",
"firstName": "Lucie",
"age": 10,
"lastLessonDate": 1704797200,
"level": 2,
@@ -58,8 +61,9 @@
},
{
"id": 4,
"uid": "92d4a474-54da-4337-910a-b5364239fd45",
"name": "Moreau",
"firstName": "Jules",
"firstName": "Julie",
"age": 12,
"lastLessonDate": 1704700800,
"level": 3,
@@ -77,9 +81,10 @@
},
{
"id": 5,
"uid": "fd96e97f-747c-4316-8d43-0da5240abc6b",
"name": "Roux",
"firstName": "Léna",
"age": 9,
"age": 10,
"lastLessonDate": 1704614400,
"level": 1,
"credit": 20,
@@ -96,8 +101,9 @@
},
{
"id": 6,
"uid": "3fc0f71e-531e-4c12-8442-e86eb4ebcdab",
"name": "Garnier",
"firstName": "Maxime",
"firstName": "Estelle",
"age": 14,
"lastLessonDate": 1704528000,
"level": 4,
@@ -115,9 +121,10 @@
},
{
"id": 7,
"uid": "f3272013-0b87-4c9e-aafc-9edec8ed280f",
"name": "Faure",
"firstName": "Emma",
"age": 7,
"age": 5,
"lastLessonDate": 1704441600,
"level": 0,
"credit": 0,
@@ -134,8 +141,9 @@
},
{
"id": 8,
"uid": "0b131632-ba7b-49e6-bd57-b73be26b88a4",
"name": "Marchal",
"firstName": "Noah",
"firstName": "Noémie",
"age": 11,
"lastLessonDate": 1704355200,
"level": 2,
@@ -153,9 +161,10 @@
},
{
"id": 9,
"uid": "0b0681f4-8895-4b63-94a8-02dbc933d39d",
"name": "Gauthier",
"firstName": "Manon",
"age": 13,
"firstName": "Léo",
"age": 7,
"lastLessonDate": 1704268800,
"level": 3,
"credit": 6,
@@ -172,9 +181,10 @@
},
{
"id": 10,
"uid": "98f17fe3-a656-45c9-b39d-67321a92912b",
"name": "Perrin",
"firstName": "Alice",
"age": 5,
"firstName": "Ricardo",
"age": 16,
"lastLessonDate": 1704182400,
"level": 0,
"credit": -10,
@@ -191,6 +201,7 @@
},
{
"id": 11,
"uid": "edf0980a-9941-4f82-a7ac-b92b17456d0f",
"name": "Blanc",
"firstName": "Hugo",
"age": 15,
@@ -210,9 +221,10 @@
},
{
"id": 12,
"name": "Mercier",
"firstName": "Chloé",
"age": 9,
"uid": "4ec73195-d431-46e0-8aaf-79b9e0d65f3c",
"name": "Kim Jan Bo",
"firstName": "Nguam",
"age": 17,
"lastLessonDate": 1704009600,
"level": 1,
"credit": 14,
@@ -229,9 +241,10 @@
},
{
"id": 13,
"uid": "13f7fcf4-4aca-43a6-8ace-5e4e45e5d4d1",
"name": "Chevalier",
"firstName": "Camille",
"age": 12,
"firstName": "Joachim",
"age": 15,
"lastLessonDate": 1703923200,
"level": 3,
"credit": 7,
@@ -248,6 +261,7 @@
},
{
"id": 14,
"uid": "ecb26545-b56f-40f7-9414-aef37ddd96bb",
"name": "Gilles",
"firstName": "Noémie",
"age": 8,
@@ -267,6 +281,7 @@
},
{
"id": 15,
"uid": "eca6c30f-5b20-4f02-a192-9c24a55155b7",
"name": "Rousseau",
"firstName": "Malo",
"age": 11,
@@ -286,6 +301,7 @@
},
{
"id": 16,
"uid": "df464420-3c7c-40ce-9616-ad57cfc43ace",
"name": "Picard",
"firstName": "Gabriel",
"age": 13,
@@ -305,6 +321,7 @@
},
{
"id": 17,
"uid": "444dc6c0-4e39-4d0e-8f07-90fd2be6335f",
"name": "Dupont",
"firstName": "Zoé",
"age": 6,
@@ -324,6 +341,7 @@
},
{
"id": 18,
"uid": "3f7610f4-1ef9-4b83-95cd-6f1925896665",
"name": "Vidal",
"firstName": "Ethan",
"age": 14,
@@ -343,6 +361,7 @@
},
{
"id": 19,
"uid": "63083e54-928d-4966-aa5b-8045c2372ddb",
"name": "Lemoine",
"firstName": "Arthur",
"age": 10,
@@ -362,9 +381,10 @@
},
{
"id": 20,
"uid": "c0fdc5a5-881b-41e5-a6e3-81cd43ccd823",
"name": "Colin",
"firstName": "Louise",
"age": 9,
"age": 14,
"lastLessonDate": 1703318400,
"level": 1,
"credit": 13,
@@ -381,9 +401,10 @@
},
{
"id": 21,
"uid": "2f0b4da4-aaba-4598-ab27-02a8be3025ab",
"name": "Aubert",
"firstName": "Mia",
"age": 7,
"age": 3,
"lastLessonDate": 1703232000,
"level": 0,
"credit": 19,
@@ -400,6 +421,7 @@
},
{
"id": 22,
"uid": "ee159a3c-644d-4516-9d18-7d94e341bc7e",
"name": "Perrot",
"firstName": "Noah",
"age": 12,
+51
View File
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1.56686,0,0,1.64536,84.9996,67.1819)">
<rect x="-54.249" y="-40.831" width="653.538" height="622.357" style="fill:white;"/>
</g>
<g transform="matrix(2.11909,0,0,2.11909,-654.529,-701.74)">
<circle cx="550.487" cy="572.766" r="241.614" style="fill:rgb(255,242,214);"/>
<path d="M550.487,331.152C683.837,331.152 792.101,439.416 792.101,572.766C792.101,706.116 683.837,814.379 550.487,814.379C417.137,814.379 308.873,706.116 308.873,572.766C308.873,439.416 417.137,331.152 550.487,331.152ZM550.487,344.837C424.69,344.837 322.559,446.969 322.559,572.766C322.559,698.563 424.69,800.694 550.487,800.694C676.284,800.694 778.416,698.563 778.416,572.766C778.416,446.969 676.284,344.837 550.487,344.837Z" style="fill:rgb(82,195,181);"/>
</g>
<g transform="matrix(6.12588,0,0,6.12588,-6849.39,-1486.99)">
<g id="cheekbone" transform="matrix(0.223861,0,0,0.223861,1092.98,208.568)">
<path d="M455.162,456.601C455.162,456.601 481.074,458.317 486.31,482.875C490.365,501.897 481.508,513.456 466.372,520.582C451.784,527.45 428.595,522.492 423.328,499.4C418.062,476.308 428.451,455.922 455.162,456.601Z" style="fill:rgb(226,187,171);"/>
</g>
<g>
<g id="ear" transform="matrix(0.243706,0.104843,-0.0594603,0.138215,1107.46,201.416)">
<path d="M362.117,355.22C370.838,355.22 378.059,357.431 377.988,363.308C377.815,377.523 371.861,371.352 362.74,373.056C354.067,374.677 346.118,370.417 346.385,363.308C346.748,353.654 353.396,355.22 362.117,355.22Z" style="fill:rgb(82,195,181);"/>
</g>
<g id="eye2" transform="matrix(0.223861,0,0,0.223861,1092.98,208.568)">
<path d="M468.398,382.945C469.41,383.025 470.222,383.618 470.949,384.48C476.494,391.138 481.866,398.917 482.253,406.941C482.639,414.923 473.562,422.119 464.802,418.108C456.233,414.186 450.669,404.71 446.713,396.302C446.713,396.302 446.046,394.281 447.098,393.028C448.307,391.587 450.9,391.702 451.94,393.368C456.025,399.907 459.324,408.47 466.745,412.38C471.382,414.823 478.154,411.85 475.553,403.626C473.706,397.786 470.024,392.64 465.972,387.888C465.972,387.888 464.864,386.158 465.522,384.705C466.115,383.393 468.092,382.94 468.398,382.945Z" style="fill:rgb(82,195,181);fill-rule:nonzero;"/>
</g>
<g id="eye1" transform="matrix(0.223861,0,0,0.223861,1092.98,208.568)">
<path d="M519.209,347.854C521.511,348.079 524.222,351.43 526.663,354.14C531.742,359.779 535.698,367.152 534.696,374.742C533.878,380.944 528.164,386.401 521.814,385.684C512.07,384.585 504.301,375.236 498.461,367.613C498.461,367.613 497.16,365.017 498.773,363.532C500.199,362.219 502.327,362.842 503.813,364.721C508.555,370.666 513.763,377.089 520.93,379.376C524.305,380.452 528.365,377.681 528.779,373.685C529.618,365.61 522.951,358.154 517.065,353.13C517.065,353.13 515.971,352.046 516.014,350.748C516.066,349.19 517.181,347.905 519.017,347.848C519.081,347.85 519.145,347.852 519.209,347.854Z" style="fill:rgb(82,195,181);fill-rule:nonzero;"/>
</g>
<g id="nose1" transform="matrix(0.223861,0,0,0.223861,1092.98,208.568)">
<path d="M702.332,364.259C702.332,364.259 707.901,363.158 712.828,372.411C716.259,378.855 714.297,381.225 711.847,383.012C709.397,384.798 705.998,381.343 703.496,377.663C700.993,373.984 695.202,367.931 702.332,364.259Z" style="fill:rgb(82,195,181);"/>
</g>
<g id="nose2" transform="matrix(0.223861,0,0,0.223861,1092.98,208.568)">
<path d="M727.907,353.291C727.907,353.291 735.815,362.29 735.962,365.889C736.109,369.488 733.025,373.245 727.264,368.587C721.504,363.93 716.692,357.177 721.305,353.1C725.919,349.024 726.837,353.004 727.907,353.291Z" style="fill:rgb(82,195,181);"/>
</g>
<g transform="matrix(0.223861,0,0,0.223861,1093.31,209.088)">
<path d="M612.529,436.83C616.513,448.526 620.687,460.27 623.115,472.351C623.508,474.306 623.892,476.288 623.708,478.255L614.747,477.417C614.908,475.688 614.176,473.434 613.651,471.261C611.074,460.591 607.558,450.147 604.012,439.738L603.882,439.358L612.397,436.443C612.441,436.572 612.485,436.701 612.529,436.83Z" style="fill:rgb(82,195,181);fill-rule:nonzero;"/>
</g>
<g transform="matrix(0.223861,0,0,0.223861,1098.51,211.975)">
<path d="M613.984,436.478C615.46,449.088 616.795,461.743 619.384,474.192C619.596,475.213 619.824,476.232 620.108,477.235L611.448,479.687C608.861,470.55 608.006,460.948 606.762,451.405C606.16,446.779 605.587,442.151 605.044,437.518L605.001,437.141L613.941,436.108C613.956,436.231 613.97,436.355 613.984,436.478Z" style="fill:rgb(82,195,181);fill-rule:nonzero;"/>
</g>
<g transform="matrix(0.223861,0,0,0.223861,1103.77,213.628)">
<path d="M613.972,436.583C614.39,449.201 615.012,462.207 618.505,473.824C618.505,473.824 619.411,473.266 620.197,472.721C626.112,468.652 632.191,464.843 638.29,461.078L639.859,460.114L634.861,446.035L643.342,443.024L650.791,464.008C640.776,470.061 630.473,475.907 621.366,482.981C620.845,483.385 620.33,483.799 619.85,484.25L613.09,483.558C608.572,477.136 607.835,468.651 606.791,460.321C605.815,452.543 605.236,444.716 604.977,436.869L613.969,436.487C613.97,436.519 613.971,436.551 613.972,436.583Z" style="fill:rgb(82,195,181);fill-rule:nonzero;"/>
</g>
<g transform="matrix(0.223861,0,0,0.223861,1092.98,208.568)">
<path d="M491.153,252.086C496.853,252.28 500.797,258.194 502.817,262.775C507.569,273.553 508.924,285.559 510.037,297.475C526.587,315.323 544.177,332.86 566.728,341.715C590.585,351.084 618.118,347.797 641.772,336.951C659.488,328.828 677.301,320.482 697.04,317.632C712.707,315.371 729.633,317.753 742.198,329.255C754.954,340.932 761.469,357.853 766.295,374.077C766.347,374.251 766.7,375.445 766.734,375.569C773.103,399.116 770.867,427.062 756.654,448.076C752.098,454.812 746.487,460.806 740.236,466.037C739.339,466.898 738.375,467.681 737.359,468.395C727.458,475.361 714.566,475.297 703.291,474.212C684.616,472.413 666.362,466.796 648.504,460.408C628.53,453.264 609.055,444.779 589.986,435.504L589.88,435.452C605.427,466.305 633.67,490.51 667.382,499.573L668.762,500.25C670.703,502.426 670.836,505.366 667.433,507.471C642.837,522.682 615.522,535.537 601.425,563.183C588.493,588.543 587.001,617.966 588.307,645.426C589.602,672.641 594.111,699.603 599.88,726.415L599.904,727.976L599.33,729.427L598.243,730.548C596.821,731.163 596.8,731.168 595.25,731.192L593.799,730.617L592.679,729.531L592.059,728.098C582.803,685.084 575.579,640.552 582.444,597.624C586.254,573.803 596.014,550.265 613.983,533.159C626.383,521.354 641.788,513.131 656.548,504.636C656.548,504.636 652.921,503.362 649.839,502.103C618.624,489.343 592.933,463.487 579.641,432.435C578.92,430.75 577.972,428.205 577.972,428.205L577.764,426.642L578.176,425.119L579.145,423.875L580.52,423.101L582.086,422.919L583.602,423.357C584.065,423.598 584.529,423.837 584.993,424.076C616.073,439.944 647.999,453.922 681.559,462.202C694.442,465.38 707.791,468.069 720.909,466.114C732.833,464.336 742.317,454.741 749.597,444.224C762.586,425.458 764.222,400.515 759.037,377.794L758.99,377.592C754.599,362.572 749.035,347.313 738.18,336.479C733.159,331.468 726.824,327.784 719.904,326.089C704.085,322.215 687.563,326.932 672.678,332.34C660.217,336.867 648.401,343.309 636.294,347.926C616.217,355.583 593.945,358.057 573.095,352.272C545.721,344.675 523.617,323.876 504.477,303.244C503.227,301.898 502.242,299.874 501.875,296.208C500.714,284.976 499.68,273.116 494.332,263.657C492.819,260.983 491.534,257.536 487.87,262.729C481.94,271.135 480.821,282.531 480.4,293.281C480.211,298.104 480.352,302.938 480.759,307.74L480.577,309.314L479.799,310.693L478.547,311.663C475.231,312.546 471.261,312.604 467.523,313.263C440.621,318.006 414.087,328.676 393.191,345.619C388.921,349.081 384.929,352.893 381.383,357.108C381.383,357.108 380.846,357.639 380.846,357.639L379.292,358.415C379.292,358.415 377.552,358.458 377.552,358.458L376.034,357.813C376.034,357.813 373.895,356.051 375.713,357.556C365.819,349.634 353.759,342.587 341.602,341.801C338.517,341.602 335.312,342.025 333.014,344.193C328.824,348.147 328.125,355.293 330.977,360.283C335.777,368.682 346.593,372.223 356.578,374.84C362.369,376.357 368.277,377.49 374.23,378.043L375.641,378.444C377.187,379.609 378.013,381.18 377.605,383.401C377.651,383.272 372.404,385.95 369.826,385.637C369.826,385.637 368.659,385.421 367.386,385.225C355.376,383.346 343.179,380.343 333.269,373.693C326.9,369.42 321.562,362.727 321.328,354.702C321.068,345.825 326.124,336.619 334.878,334.398C346.923,331.342 359.549,338.001 370.443,344.481C372.846,345.911 375.201,347.418 377.509,348.997L377.726,349.147C377.966,348.884 378.209,348.625 378.452,348.365C400.377,325.188 432.623,312.14 462.6,306.055C465.704,305.425 468.828,304.893 471.972,304.506C471.972,304.506 472.54,305.134 472.466,303.707C471.749,288.443 472.366,272.416 480.523,259.34C480.782,258.925 481.051,258.517 481.333,258.117C483.615,254.884 486.719,252.017 491.153,252.086ZM374.641,356.087L374.832,356.403C374.832,356.403 374.656,355.507 374.641,356.087Z" style="fill:rgb(82,195,181);fill-rule:nonzero;"/>
</g>
<g id="mane" transform="matrix(0.223861,0,0,0.223861,1092.98,208.568)">
<path d="M346.147,379.636C346.147,379.636 358.345,383.563 370.526,385.195C374.894,391.635 407.026,519.659 419.302,570.637C431.027,619.324 428.712,668.191 423.557,690.393C420.351,704.199 416.133,739.406 354.403,741.451C306.12,743.05 286.03,728.978 239.179,726.021C233.688,725.674 230.816,725.972 221.936,727.711C214.202,731.118 213.243,724.898 215.113,722.111C216.982,719.324 257.802,675.314 290.662,668.436C262.483,663.847 229.927,646.98 209.904,654.98C202.664,657.873 196.042,655.507 206.724,645.263C218.013,634.435 235.141,621.267 269.949,606.026C304.757,590.786 313.764,583.55 317.35,580.531C293.548,583.918 261.099,576.922 240.556,566.241C235.199,563.446 238.863,559.621 240.235,559.398C262.917,555.706 291.286,532.505 306.109,515.47C281.904,522.733 261.954,523.253 234.839,509.837C229.523,506.541 216.978,500.02 207.859,484.986C205.61,481.512 207.326,478.606 211.937,479.303C233.102,484.511 266.814,475.206 294.331,445.753C319.919,408.546 332.29,387.468 346.147,379.636Z" style="fill:rgb(82,195,181);"/>
</g>
<g id="hair" transform="matrix(0.223861,0,0,0.223861,1092.98,208.568)">
<path d="M378.02,348.91C378.02,348.91 393.692,295.077 493.949,299.669C548.918,298.605 555.834,270.067 564.244,274.045C569.122,276.352 561.666,331.843 496.429,344.569C459.101,379.131 419.878,366.689 406.944,363.55C394.01,360.412 391.555,354.265 380.548,357.599C379.964,354.15 378.02,348.91 378.02,348.91Z" style="fill:rgb(82,195,181);"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

+7 -4
View File
@@ -20,9 +20,9 @@
<haxelib name="feathersui-cairngorm"/>
<haxelib name="hx-color-trace"/>
<haxelib name="svg" />
<haxelib name="uuid" />
<haxelib name="haxe-strings" />
<icon path="assets/icons/icon.svg"/>
<icon path="assets/icons/app_icon_1024.svg"/>
<assets path="assets">
<font path="fonts/Montserrat/MontserratLight300.ttf" id="MontserratLight300" embed="true"/>
@@ -36,8 +36,11 @@
<assets path="assets/bitmaps" rename="bitmaps" embed="true"/>
<assets path="assets/vector" rename="vector" embed="true"/>
<!-- <config:android target-sdk-version="30"/>-->
<!-- <config:android build-tools-version="30" />-->
<!-- <config:android target-sdk-version="30"/> -->
<!-- <config:android build-tools-version="30" /> -->
<!-- <config:android target-sdk-version="35" gradle-version="8.9" gradle-plugin="8.7.3" /> -->
<config:android permission="android.permission.INTERNET" />
<config:android permission="android.permission.ACCESS_NETWORK_STATE" />
+6
View File
@@ -1,3 +1,5 @@
import hx.strings.RandomStrings;
import utils.StringUtils;
import view.RiderCardDrawer;
import openfl.system.Security;
import business.Services;
@@ -37,6 +39,10 @@ class LPTCManager2026 extends Application {
stage.displayState = NORMAL;
stage.scaleMode = NO_SCALE;
/*for (i in 0...23){
traceYellow(RandomStrings.randomUUIDv4());
}*/
mainPanel = new MainPanel();
addChild(mainPanel);
+2 -1
View File
@@ -35,6 +35,7 @@ class LoadRidersCommand implements ICommand implements IResponder {
var riders:Array<RiderVO> = data.map((r:Dynamic) -> {
final id:Int = Std.parseInt(r.id);
final uid:String = r.uid;
final name:String = r.name;
final firstName:String = r.firstName;
final age:Int = Std.parseInt(r.age);
@@ -52,7 +53,7 @@ class LoadRidersCommand implements ICommand implements IResponder {
final legalGuardianPhoneNumber:String = r.legalGuardianPhoneNumber;
final legalGuardianEmail:String = r.legalGuardianEmail;
return new RiderVO(id, name, firstName, age, lastLessonDate, level, credit, address, notes, ffeLicence, ffeLicenceValidityYear,ffeLicenceNumber,legalGuardianName,legalGuardianFirstName,legalGuardianRole,legalGuardianPhoneNumber,legalGuardianEmail);
return new RiderVO(id, uid, name, firstName, age, lastLessonDate, level, credit, address, notes, ffeLicence, ffeLicenceValidityYear,ffeLicenceNumber,legalGuardianName,legalGuardianFirstName,legalGuardianRole,legalGuardianPhoneNumber,legalGuardianEmail);
});
model.ridersListDP = new ArrayCollection(riders);
@@ -12,13 +12,10 @@ import feathers.skins.RectangleSkin;
import feathers.controls.LayoutGroup;
class RidersListRendererAccessory extends LayoutGroup {
private var elementSize:Int;
private var riderCredit:Int;
public function new(pElementSize:Int = 14, pRiderCredit:Int = 0) {
public function new(pRiderCredit:Int = 0) {
super();
elementSize = pElementSize;
riderCredit = pRiderCredit;
}
@@ -28,7 +25,7 @@ class RidersListRendererAccessory extends LayoutGroup {
var l:HorizontalLayout = new HorizontalLayout();
// l.setPadding(Std.int(headerHeight * .1));
l.verticalAlign = MIDDLE;
l.gap = Std.int(elementSize * .3);
l.gap = 10;
layout = l;
backgroundSkin = new RectangleSkin(SolidColor(Constants.PURE_WHITE, 0));
+6 -2
View File
@@ -1,5 +1,6 @@
package components;
import model.AppModelLocator;
import openfl.display.Bitmap;
import openfl.system.ApplicationDomain;
import openfl.system.LoaderContext;
@@ -24,10 +25,12 @@ import t9.util.ColorTraces.*;
class RoundAvatar extends LayoutGroup {
private var avatarSize:Int;
private var riderUID:String;
public function new(pAvatarSize:Int = 32) {
public function new(pAvatarSize:Int = 32, pRiderUID:String) {
super();
avatarSize = pAvatarSize;
riderUID = pRiderUID;
}
override private function initialize():Void {
@@ -56,7 +59,8 @@ class RoundAvatar extends LayoutGroup {
mask = m;
var l:Loader = new Loader();
l.load(new URLRequest("https://lepetittrot.com/lptcm/assets/profile-pictures/pp256/pp_test_256.jpg"));
//l.load(new URLRequest("https://lepetittrot.com/lptcm/assets/profile-pictures/pp256/pp_test_256.jpg"));
l.load(new URLRequest(Constants.PROFIL_PICTURES_PATH_512 + riderUID + ".jpg"));
l.contentLoaderInfo.addEventListener (Event.COMPLETE, onLoadComplete);
addChild(l);
+11 -6
View File
@@ -4,6 +4,9 @@ import openfl.system.Capabilities;
class Constants {
// Paths
public static final PROFIL_PICTURES_PATH_512:String = "https://lepetittrot.com/lptcm/assets/profile-pictures/pp512/";
// Colors
public static final HERO_COLOR:Int = 0x050EB7;
public static final ACCENT_COLOR1:Int = 0xFF9F1C;
@@ -32,11 +35,12 @@ class Constants {
public static final MONTSERRAT_BOLD_700:String = "MontserratBold700";
// Fonts sizes
public static final FONT_SIZE_1:Int = Std.int(Capabilities.screenDPI * .15);
public static final FONT_SIZE_2:Int = Std.int(Capabilities.screenDPI * .2);
public static final FONT_SIZE_3:Int = Std.int(Capabilities.screenDPI * .25);
public static final FONT_SIZE_4:Int = Std.int(Capabilities.screenDPI * .3);
public static final FONT_SIZE_5:Int = Std.int(Capabilities.screenDPI * .5);
public static final FONT_SIZE_10:Int = 10;
public static final FONT_SIZE_12:Int = 12;
public static final FONT_SIZE_14:Int = 14;
public static final FONT_SIZE_16:Int = 16;
public static final FONT_SIZE_22:Int = 22;
public static final FONT_SIZE_26:Int = 26;
// UI Proportions against stage dimmensions
public static final MAIN_HEADER_WIDTH_RATIO:Float = 1;
@@ -47,10 +51,11 @@ class Constants {
public static final CLOSE_DRAWER:String = "closeDrawer";
public static final DRAWER_IS_OPEN:Bool = false;
// Strings
// Text Strings
public static final MENU_ITEM_0_STRING:String = "Cavalier·e·s";
public static final MENU_ITEM_1_STRING:String = "Licences FFE";
public static final RIDERS_LIST_CREDIT_TEXT:String = "Crédit: ";
public static final RIDER_CARD_REMAIN_CREDIT_TEXT:String = "Cours restants sur la carte : ";
// UI
// number of rows in RidersList
+37
View File
@@ -0,0 +1,37 @@
package utils;
class StringUtils {
/*
returns a random string of n characters with Hex chars (0123456789ABCDEF)
*/
static public function getRandomHexString(pStringLength:Int = 8) {
{
var chars:String = "0123456789abcdef";
var rndString:String = "";
for (i in 0...pStringLength)
rndString += chars.charAt(Math.round(Math.random() * chars.length));
return rndString;
}
}
/*
returns a random string of n characters within ASCII visible chars range (33 ! -> 126 ~)
*/
static public function getRandomStringFromASCII(pStringLength:Int = 8):String {
var rndString:String = "";
for (i in 0...pStringLength)
rndString += String.fromCharCode(Math.round(Math.random() * 93) + 33);
return rndString;
}
/*
returns a unique id
*/
public static function generateUID():String {
var s1:String = StringUtils.getRandomHexString(8);
var s2:String = Std.string(Date.now().getTime());
return s1 + s2.substr(s2.length - 4, 4);
}
}
+2 -2
View File
@@ -36,7 +36,7 @@ class MainFooter extends LayoutGroup {
Constants.MAIN_COLOR2,
Constants.HERO_COLOR,
30,
14);
Constants.FONT_SIZE_14);
btn1.text = Constants.MENU_ITEM_0_STRING;
addChild(btn1);
@@ -44,7 +44,7 @@ class MainFooter extends LayoutGroup {
Constants.MAIN_COLOR2,
Constants.HERO_COLOR,
30,
14);
Constants.FONT_SIZE_14);
btn2.text = Constants.MENU_ITEM_1_STRING;
addChild(btn2);
+2 -2
View File
@@ -1,5 +1,6 @@
package view;
import haxe.macro.Expr.Constant;
import com.adobe.cairngorm.control.CairngormEvent;
import com.adobe.cairngorm.control.CairngormEventDispatcher;
import components.IconButton;
@@ -62,8 +63,7 @@ class MainHeader extends LayoutGroup {
lbl1 = new Label();
lbl1.text = Constants.MENU_ITEM_0_STRING;
lbl1.embedFonts = true;
var fnt:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500);
lbl1.textFormat = new TextFormat(fnt.fontName, Std.int(headerHeight * .3), Constants.MAIN_COLOR3);
lbl1.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_MEDIUM_500).fontName, Constants.FONT_SIZE_22, Constants.MAIN_COLOR3);
addChild(lbl1);
}
+23 -4
View File
@@ -1,5 +1,6 @@
package view;
import feathers.controls.Label;
import feathers.controls.AssetLoader;
import feathers.controls.Button;
import feathers.controls.Drawer;
@@ -28,6 +29,7 @@ class RiderCardDrawer extends Drawer {
private var ppal:AssetLoader;
private var firstNameTextInput:TextInput;
private var nameTextInput:TextInput;
private var remainingCreditLabel:Label;
private var closeDrawerButton:Button;
public function new() {
@@ -41,11 +43,16 @@ class RiderCardDrawer extends Drawer {
model = AppModelLocator.getInstance();
overlaySkin = new RectangleSkin(SolidColor(Constants.MAIN_COLOR3, 1));
pullableEdge = TOP;
swipeCloseEnabled = true;
//swipeOpenEnabled = false;
autoSizeMode = STAGE;
pullableEdge = LEFT;
clickOverlayToClose = false;
// main Layout
var mainLaytoutGroup = new LayoutGroup();
mainLaytoutGroup.autoSizeMode = STAGE;
var mainVerticalLayout = new VerticalLayout();
mainVerticalLayout.setPadding(spacing);
mainVerticalLayout.gap = spacing;
@@ -72,6 +79,7 @@ class RiderCardDrawer extends Drawer {
lg1.backgroundSkin = new RectangleSkin(SolidColor(Constants.MAIN_COLOR1, 0.1));
var vl1:VerticalLayout = new VerticalLayout();
vl1.setPadding(spacing);
vl1.gap = -spacing;
vl1.horizontalAlign = JUSTIFY;
lg1.layout = vl1;
mainLaytoutGroup.addChild(lg1);
@@ -80,16 +88,22 @@ class RiderCardDrawer extends Drawer {
firstNameTextInput = new TextInput();
firstNameTextInput.backgroundSkin = null;
firstNameTextInput.embedFonts = true;
firstNameTextInput.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_BOLD_700).fontName, Constants.FONT_SIZE_5, Constants.MAIN_COLOR1);
firstNameTextInput.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_BOLD_700).fontName, Constants.FONT_SIZE_26, Constants.MAIN_COLOR1);
lg1.addChild(firstNameTextInput);
// name label
nameTextInput = new TextInput();
nameTextInput.backgroundSkin = null;
nameTextInput.embedFonts = true;
nameTextInput.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_MEDIUM_500).fontName, Constants.FONT_SIZE_4, Constants.MAIN_COLOR2);
nameTextInput.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_MEDIUM_500).fontName, Constants.FONT_SIZE_22, Constants.MAIN_COLOR2);
lg1.addChild(nameTextInput);
// ########################################################################## Remaining credit label
remainingCreditLabel = new Label();
remainingCreditLabel.embedFonts = true;
remainingCreditLabel.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_BOLD_700).fontName, Constants.FONT_SIZE_16, Constants.MAIN_COLOR1);
mainLaytoutGroup.addChild(remainingCreditLabel);
drawer = mainLaytoutGroup;
}
@@ -99,8 +113,10 @@ class RiderCardDrawer extends Drawer {
public function populateAndShow() {
var rvo:RiderVO = model.selectedRider;
// profile picture
ppal.source = "https://lepetittrot.com/lptcm/assets/profile-pictures/pp512/pp_test_512.jpg";
ppal.source = Constants.PROFIL_PICTURES_PATH_512 + rvo.uid + ".jpg";
// first name text input
firstNameTextInput.text = rvo.firstName;
@@ -111,7 +127,7 @@ class RiderCardDrawer extends Drawer {
}
});
}
// name text input
nameTextInput.text = rvo.name;
if (!nameTextInput.hasEventListener(Event.CHANGE)) {
@@ -122,6 +138,9 @@ class RiderCardDrawer extends Drawer {
});
}
// remaing credit text
remainingCreditLabel.text = Constants.RIDER_CARD_REMAIN_CREDIT_TEXT + Std.string(rvo.credit);
openDrawer();
}
+8 -16
View File
@@ -1,25 +1,21 @@
package view;
import control.RiderSelectEvent;
import feathers.events.ListViewEvent;
import feathers.events.TriggerEvent;
import feathers.skins.RectangleSkin;
import com.adobe.cairngorm.control.CairngormEventDispatcher;
import control.AppController;
import com.adobe.cairngorm.control.CairngormEvent;
import components.RidersListRendererAccessory;
import components.RoundAvatar;
import control.RiderSelectEvent;
import feathers.controls.ListView;
import feathers.controls.dataRenderers.ItemRenderer;
import feathers.data.ListViewItemState;
import feathers.events.FeathersEvent;
import feathers.events.ListViewEvent;
import feathers.skins.RectangleSkin;
import feathers.text.TextFormat;
import feathers.utils.DisplayObjectRecycler;
import model.AppModelLocator;
import model.Constants;
import openfl.Assets;
import openfl.events.Event;
import openfl.text.Font;
import t9.util.ColorTraces.*;
import vo.RiderVO;
@@ -44,9 +40,8 @@ class RidersList extends ListView {
var itemRenderer = new ItemRenderer();
itemRenderer.height = rowHeight;
itemRenderer.icon = new RoundAvatar(Std.int(rowHeight * 0.9));
itemRenderer.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_BOLD_700).fontName, Constants.FONT_SIZE_3, Constants.MAIN_COLOR1);
itemRenderer.secondaryTextFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_MEDIUM_500).fontName, Constants.FONT_SIZE_2, Constants.MAIN_COLOR2);
itemRenderer.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_BOLD_700).fontName, Constants.FONT_SIZE_16, Constants.MAIN_COLOR1);
itemRenderer.secondaryTextFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_MEDIUM_500).fontName, Constants.FONT_SIZE_12, Constants.MAIN_COLOR2);
var rs1 = new RectangleSkin(SolidColor(Constants.MAIN_COLOR3, 1), SolidColor(1, Constants.LIST_SEPARATOR_COLOR));
var rs2 = new RectangleSkin(SolidColor(Constants.LIST_SEPARATOR_COLOR, 1), SolidColor(1, Constants.LIST_SEPARATOR_COLOR));
@@ -66,13 +61,10 @@ class RidersList extends ListView {
var rider:RiderVO = cast(state.data, RiderVO);
itemRenderer.text = rider.firstName;
itemRenderer.secondaryText = rider.name;
itemRenderer.icon = new RoundAvatar(Std.int(rowHeight * 0.9), rider.uid);
var rlra:RidersListRendererAccessory = new RidersListRendererAccessory(Std.int(rowHeight * 0.8), rider.credit);
itemRenderer.accessoryView = rlra;
// TODO change this to real image path
// loader.source = "https://lepetittrot.com/path/to/pp_pictures" + state.data.id + ".jpg";
// loader.source = "https://testingbot.com/free-online-tools/random-avatar/50?u=" + Uuid.nanoId();
itemRenderer.accessoryView = new RidersListRendererAccessory(rider.credit);
};
recycler.reset = (itemRenderer:ItemRenderer, state:ListViewItemState) -> {
+2 -3
View File
@@ -36,7 +36,7 @@ class ToolBar extends LayoutGroup {
// Layout settings
var l:HorizontalLayout = new HorizontalLayout();
l.setPadding(Std.int(headerHeight * .1));
l.setPadding(10);
l.verticalAlign = MIDDLE;
layout = l;
@@ -47,10 +47,9 @@ class ToolBar extends LayoutGroup {
//lb1.backgroundSkin = new RectangleSkin(SolidColor(Constants.ACCENT_COLOR2, 1));
//lb1.verticalAlign = VerticalAlign.TOP;
var fnt:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500);
lbl1.text = "Toolbar";
lbl1.embedFonts = true;
lbl1.textFormat = new TextFormat(fnt.fontName, Std.int(headerHeight * .3), Constants.MAIN_COLOR3);
lbl1.textFormat = new TextFormat(Assets.getFont(Constants.MONTSERRAT_MEDIUM_500).fontName, Constants.FONT_SIZE_16, Constants.MAIN_COLOR3);
addChild(lbl1);
}
+5 -2
View File
@@ -1,10 +1,10 @@
package vo;
class RiderVO {
private static var currentIndex:Int = 0;
// constants for use with Reflect api when updating SelectedRider VO
public static final ID:String = "id";
public static final UID:String = "uid";
public static final NAME:String = "name";
public static final FIRST_NAME:String = "firstName";
public static final AGE:String = "age";
@@ -23,6 +23,7 @@ class RiderVO {
public static final LEGAL_GUARDIAN_EMAIL:String = "legalGuardianEmail";
public var id:Int;
public var uid:String;
public var name:String;
public var firstName:String;
public var age:Int;
@@ -42,6 +43,7 @@ class RiderVO {
public function new(?pId:Int = 0,
?pUId:String = "",
?pName:String = "",
?pFirstName:String = "",
?pAge:Int = 0,
@@ -59,7 +61,8 @@ class RiderVO {
?pLegalGuardianPhoneNumber:String = "",
?pLegalGuardianEmail:String = "") {
id = (pId == 0) ? currentIndex++ : pId;
id = pId;
uid = pUId;
name = pName;
firstName = pFirstName;
age = pAge;