diff --git a/src/command/LoadRidersCommand.hx b/src/command/LoadRidersCommand.hx index 20d0729..1c6ebd6 100644 --- a/src/command/LoadRidersCommand.hx +++ b/src/command/LoadRidersCommand.hx @@ -146,6 +146,6 @@ class LoadRidersCommand implements ICommand implements IResponder { public function fault(rpcEvent:Dynamic):Void { // store an error message in the model locator // labels, alerts, etc can bind to this to notify the user of errors - model.errorStatus = "Fault occured in LoadEmployeesCommand."; + model.errorStatus = "Fault occured in LoadRidersCommand."; } } diff --git a/src/command/RiderSelectCommand.hx b/src/command/RiderSelectCommand.hx new file mode 100644 index 0000000..cefd680 --- /dev/null +++ b/src/command/RiderSelectCommand.hx @@ -0,0 +1,15 @@ +package command; + +import model.Constants; +import com.adobe.cairngorm.commands.ICommand; +import com.adobe.cairngorm.control.CairngormEvent; +import model.AppModelLocator; +import t9.util.ColorTraces.*; + +class RiderSelectCommand implements ICommand { + private var model = AppModelLocator.getInstance(); + + public function execute(e:CairngormEvent):Void { + trace(e.data); + } +} diff --git a/src/control/AppController.hx b/src/control/AppController.hx index a262334..5e02e60 100644 --- a/src/control/AppController.hx +++ b/src/control/AppController.hx @@ -1,5 +1,6 @@ package control; +import command.RiderSelectCommand; import command.CloseDrawerCommand; import command.LoadRidersCommand; import command.OpenDrawerCommand; @@ -10,6 +11,7 @@ class AppController extends FrontController { public static final LOAD_RIDERS_EVENT = "loadRidersEvent"; public static final OPEN_DRAWER_EVENT = "openDrawerEvent"; public static final CLOSE_DRAWER_EVENT = "closeDrawerEvent"; + public static final RIDER_SELECT_EVENT = "riderSelect"; public function new() { @@ -17,5 +19,6 @@ class AppController extends FrontController { addCommand(AppController.LOAD_RIDERS_EVENT, LoadRidersCommand); addCommand(AppController.OPEN_DRAWER_EVENT, OpenDrawerCommand); addCommand(AppController.CLOSE_DRAWER_EVENT, CloseDrawerCommand); + addCommand(AppController.RIDER_SELECT_EVENT, RiderSelectCommand); } } diff --git a/src/model/AppModelLocator.hx b/src/model/AppModelLocator.hx index 9da712a..90c5924 100644 --- a/src/model/AppModelLocator.hx +++ b/src/model/AppModelLocator.hx @@ -15,7 +15,7 @@ class AppModelLocator extends EventDispatcher implements IModelLocator { public static final VIEWING_CHANGE:String = "viewingChange"; public static final RIDERS_LIST_DP_CHANGE:String = "ridersListDPChange"; public static final DRAWER_STATE_CHANGE:String = "drawerStateChange"; - + public static final RIDER_SELECT:String = "riderSelect"; // this instance stores a static reference to itself private static var model:AppModelLocator; @@ -44,6 +44,15 @@ class AppModelLocator extends EventDispatcher implements IModelLocator { return drawerIsOpen; } + // selected rider + public var selectedRider(default, set):RiderVO = null; + + private function set_selectedRider(pRider:RiderVO):RiderVO { + selectedRider = pRider; + dispatchEvent(new Event(AppModelLocator.DRAWER_STATE_CHANGE)); + return selectedRider; + } + // rider object contains uid/passwd // its value gets set at login and cleared at logout but nothing binds to it or uses it // retained since it was used in the original Adobe CafeTownsend example app diff --git a/src/view/RidersList.hx b/src/view/RidersList.hx index a2df72e..a107788 100644 --- a/src/view/RidersList.hx +++ b/src/view/RidersList.hx @@ -1,5 +1,8 @@ package view; +import com.adobe.cairngorm.control.CairngormEventDispatcher; +import control.AppController; +import com.adobe.cairngorm.control.CairngormEvent; import components.RidersListRendererAccessory; import components.RoundAvatar; import feathers.controls.ListView; @@ -23,6 +26,7 @@ class RidersList extends ListView { public function new() { super(); addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete); + addEventListener(Event.CHANGE, onRiderSelect); } override private function initialize():Void { @@ -30,7 +34,6 @@ class RidersList extends ListView { // set common properties for all renderers in the same container here var recycler = DisplayObjectRecycler.withFunction(() -> { - final fnt1:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500); final fnt2:Font = Assets.getFont(Constants.MONTSERRAT_BOLD_700); @@ -43,7 +46,6 @@ class RidersList extends ListView { itemRenderer.secondaryTextFormat = new TextFormat(fnt2.fontName, Std.int(rowHeight * 0.2), Constants.MAIN_COLOR2); return itemRenderer; - }); itemRendererRecycler = recycler; @@ -59,7 +61,6 @@ class RidersList extends ListView { // TODO change this to real iamge 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(); - }; recycler.reset = (itemRenderer:ItemRenderer, state:ListViewItemState) -> { @@ -69,14 +70,14 @@ class RidersList extends ListView { loader.source = null; */ }; - model.addEventListener(AppModelLocator.RIDERS_LIST_DP_CHANGE, onRideListDpChange); + model.addEventListener(AppModelLocator.RIDERS_LIST_DP_CHANGE, onRiderListDpChange); } private function onCreationComplete(event:FeathersEvent):Void { traceBlue(this + " --> onCreationComplete() - w: " + width + " h: " + height); } - private function onRideListDpChange(e:Event):Void { + private function onRiderListDpChange(e:Event):Void { dataProvider = model.ridersListDP; /*itemToText = function(item:Dynamic):String { @@ -84,4 +85,17 @@ class RidersList extends ListView { };*/ traceGreen(this + " --> onRideListDpChange() - w: " + width + " h: " + height); } + + function onRiderSelect(e:Event):Void { + var riderVO:RiderVO = cast(selectedItem, RiderVO); + var ce:CairngormEvent = new CairngormEvent(AppController.RIDER_SELECT_EVENT); + CairngormEventDispatcher.getInstance().dispatchEvent(ce); //TODO how to pass the selected user to AppModelLocator ? + //trace(riderVO.firstName); + //clearSelectedRider(); + } + + // de-select any selected List items + private function clearSelectedRider():Void { + selectedIndex = -1; + } }