From 3143854fdb6ffa014df53247efdd9e1a097fd94e Mon Sep 17 00:00:00 2001 From: nekotoro Date: Fri, 28 Nov 2025 16:10:13 +0100 Subject: [PATCH] RiderList and LoadRidersCommand optimisation --- src/command/LoadRidersCommand.hx | 93 +++++++++++++++++++------------- src/view/RidersList.hx | 32 ++++++++--- 2 files changed, 80 insertions(+), 45 deletions(-) diff --git a/src/command/LoadRidersCommand.hx b/src/command/LoadRidersCommand.hx index 9326b9c..20d0729 100644 --- a/src/command/LoadRidersCommand.hx +++ b/src/command/LoadRidersCommand.hx @@ -30,49 +30,57 @@ class LoadRidersCommand implements ICommand implements IResponder { public function result(rpcEvent:Dynamic):Void { // populate the riders DP in the model locator with the JSON results from the service call - /*var riders:Array = cast(rpcEvent, ResultEvent).result; - model.ridersListDP = new ArrayCollection(riders);*/ - //trace(model.ridersListDP.get(5).firstName); - //traceGreen("ridersListDP.length --> " + model.ridersListDP.length); - - - var data:Array = cast(rpcEvent, ResultEvent).result; - var riders:Array = []; + var riders:Array = data.map((r:Dynamic) -> { - //var arr:Array = [for (n in data) cast(n, RiderVO)]; + final id:Int = Std.parseInt(r.id); + final name:String = r.name; + final firstName:String = r.firstName; + final age:Int = Std.parseInt(r.age); + final lastLessonDate:Int = Std.parseInt(r.lastLessonDate); + final level:Int = Std.parseInt(r.level); + final credit:Int = Std.parseInt(r.credit); + final address:String = r.address; + final notes:String = r.notes; + final ffeLicence:Bool = stringToBool(r.ffeLicence); + final ffeLicenceValidityYear:Int = Std.parseInt(r.ffeLicenceValidityYear); + final ffeLicenceNumber:String = r.ffeLicenceNumber; + final legalGuardianName:String = r.legalGuardianName; + final legalGuardianFirstName:String = r.legalGuardianFirstName; + final legalGuardianRole:String = r.legalGuardianRole; + final legalGuardianPhoneNumber:String = r.legalGuardianPhoneNumber; + final legalGuardianEmail:String = r.legalGuardianEmail; - /*for(v in data){ - //var rider:RiderVO = new RiderVO(); - //var id:Int = Std.parseInt(); - traceCyan(v[]); + return new RiderVO(id, name, firstName, age, lastLessonDate, level, credit, address, notes, ffeLicence, ffeLicenceValidityYear,ffeLicenceNumber,legalGuardianName,legalGuardianFirstName,legalGuardianRole,legalGuardianPhoneNumber,legalGuardianEmail); + }); - }*/ + model.ridersListDP = new ArrayCollection(riders); + + /*var riders:Array = []; - var riders:Array = []; for (i in 0...data.length) { var r:Object = data[i]; - var id:Int = Std.parseInt(r.id); - var name:String = r.name; - var firstName:String = r.firstName; - var age:Int = Std.parseInt(r.age); - var lastLessonDate:Int = Std.parseInt(r.lastLessonDate); - var level:Int = Std.parseInt(r.level); - var credit:Int = Std.parseInt(r.credit); - var address:String = r.address; - var notes:String = r.notes; - var ffeLicence:Bool = stringToBool(r.ffeLicence); - var ffeLicenceValidityYear:Int = Std.parseInt(r.ffeLicenceValidityYear); - var ffeLicenceNumber:String = r.ffeLicenceNumber; - var legalGuardianName:String = r.legalGuardianName; - var legalGuardianFirstName:String = r.legalGuardianFirstName; - var legalGuardianRole:String = r.legalGuardianRole; - var legalGuardianPhoneNumber:String = r.legalGuardianPhoneNumber; - var legalGuardianEmail:String = r.legalGuardianEmail; + final id:Int = Std.parseInt(r.id); + final name:String = r.name; + final firstName:String = r.firstName; + final age:Int = Std.parseInt(r.age); + final lastLessonDate:Int = Std.parseInt(r.lastLessonDate); + final level:Int = Std.parseInt(r.level); + final credit:Int = Std.parseInt(r.credit); + final address:String = r.address; + final notes:String = r.notes; + final ffeLicence:Bool = stringToBool(r.ffeLicence); + final ffeLicenceValidityYear:Int = Std.parseInt(r.ffeLicenceValidityYear); + final ffeLicenceNumber:String = r.ffeLicenceNumber; + final legalGuardianName:String = r.legalGuardianName; + final legalGuardianFirstName:String = r.legalGuardianFirstName; + final legalGuardianRole:String = r.legalGuardianRole; + final legalGuardianPhoneNumber:String = r.legalGuardianPhoneNumber; + final legalGuardianEmail:String = r.legalGuardianEmail; - var rider:RiderVO = new RiderVO(id, + final rider:RiderVO = new RiderVO(id, name, firstName, age, @@ -90,8 +98,21 @@ class LoadRidersCommand implements ICommand implements IResponder { legalGuardianEmail ); riders.push(rider); - } - model.ridersListDP = new ArrayCollection(riders); + }*/ + + /*var riders:Array = cast(rpcEvent, ResultEvent).result; + model.ridersListDP = new ArrayCollection(riders);*/ + + //trace(model.ridersListDP.get(5).firstName); + //traceGreen("ridersListDP.length --> " + model.ridersListDP.length); + //var arr:Array = [for (n in data) cast(n, RiderVO)]; + + /*for(v in data){ + //var rider:RiderVO = new RiderVO(); + //var id:Int = Std.parseInt(); + traceCyan(v[]); + + }*/ /*for (key => value in riders){ //ConfigValues.data[key] = value; @@ -114,8 +135,6 @@ class LoadRidersCommand implements ICommand implements IResponder { } */ - - } private function stringToBool(str) { diff --git a/src/view/RidersList.hx b/src/view/RidersList.hx index 288aefd..5479c31 100644 --- a/src/view/RidersList.hx +++ b/src/view/RidersList.hx @@ -1,5 +1,10 @@ package view; +import openfl.display.Shape; +import model.Constants; +import openfl.Assets; +import openfl.text.Font; +import feathers.text.TextFormat; import vo.RiderVO; import uuid.Uuid; import feathers.controls.AssetLoader; @@ -28,7 +33,12 @@ class RidersList extends ListView { var recycler = DisplayObjectRecycler.withFunction(() -> { var itemRenderer = new ItemRenderer(); + var fnt1:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500); + var fnt2:Font = Assets.getFont(Constants.MONTSERRAT_BOLD_700); itemRenderer.icon = new AssetLoader(); + itemRenderer.textFormat = new TextFormat(fnt1.fontName, 16, Constants.MAIN_COLOR1); + itemRenderer.secondaryTextFormat = new TextFormat(fnt2.fontName, 14, Constants.MAIN_COLOR2); + return itemRenderer; }); @@ -36,17 +46,9 @@ class RidersList extends ListView { recycler.update = (itemRenderer:ItemRenderer, state:ListViewItemState) -> { - //traceRed($type(state.data)); - //var className = Type.getClassName(Type.getClass(state)); - //traceRed("Current class name = " + className); - var rider:RiderVO = cast (state.data, RiderVO); itemRenderer.text = rider.firstName; itemRenderer.secondaryText = rider.name; - - /*var item = state.data; - itemRenderer.text = item.firstName; - itemRenderer.secondaryText = item.name;*/ var loader = cast(itemRenderer.icon, AssetLoader); loader.sourceScale = 0.7; @@ -55,8 +57,22 @@ class RidersList extends ListView { //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(); + var s:Shape = new Shape(); + s.graphics.beginFill(0xFFCC00, 1); + s.graphics.drawCircle(0, 0, 10); + s.graphics.endFill(); + itemRenderer.accessoryView = s; + }; + recycler.reset = (itemRenderer:ItemRenderer, state:ListViewItemState) -> { + /*var label = cast(itemRenderer.getChildByName("label"), Label); + var loader = cast(itemRenderer.getChildByName("loader"), AssetLoader); + label.text = ""; + loader.source = null;*/ + }; + + model.addEventListener(AppModelLocator.RIDERS_LIST_DP_CHANGE, onRideListDpChange); }