[improve] add LoadingWrapper to GameListFrame

This commit is contained in:
2020-03-11 21:51:55 +03:00
parent 4c4555c036
commit b3a4adce68
2 changed files with 11 additions and 3 deletions

View File

@@ -17,6 +17,7 @@ import ru.m.puzzlez.view.PuzzleImageView;
@:view("images") var imagesView:ActionDataView<ImageId, PuzzleImageView, Action>; @:view("images") var imagesView:ActionDataView<ImageId, PuzzleImageView, Action>;
@:view("pages") var pagesView:DataView<Int, ToggleButtonView>; @:view("pages") var pagesView:DataView<Int, ToggleButtonView>;
private var loading:LoadingWrapper;
@:provide var switcher:FrameSwitcher; @:provide var switcher:FrameSwitcher;
@:provide var storage:GameStorage; @:provide var storage:GameStorage;
@@ -26,15 +27,16 @@ import ru.m.puzzlez.view.PuzzleImageView;
private var data(default, set):DataPage<ImageId>; private var data(default, set):DataPage<ImageId>;
private function set_data(value) { private function set_data(value:DataPage<ImageId>):DataPage<ImageId> {
data = value; data = value;
imagesView.data = data.data; imagesView.data = data.data;
pagesView.data = [for (i in 0...Std.int(data.total / data.page.count) + 1) i]; pagesView.data = [for (i in 0...Std.int((data.total - 1) / data.page.count) + 1) i];
return data; return data;
} }
public function new() { public function new() {
super(ID); super(ID);
loading = new LoadingWrapper(imagesView);
page = {index: 0, count: 6, order: [{key: "date", reverse: true}]}; page = {index: 0, count: 6, order: [{key: "date", reverse: true}]};
} }
@@ -56,7 +58,12 @@ import ru.m.puzzlez.view.PuzzleImageView;
} }
private function refresh():Void { private function refresh():Void {
storage.getIndexPage(page).then(data -> this.data = data); data = {
page: page,
total: 0,
data: [],
};
loading.promise = storage.getIndexPage(page).then(data -> this.data = data);
} }
private function onAction(imageId:ImageId, action:Action):Void { private function onAction(imageId:ImageId, action:Action):Void {

View File

@@ -5,6 +5,7 @@ views:
$type: haxework.view.data.ActionDataView $type: haxework.view.data.ActionDataView
layout: layout:
$type: haxework.view.layout.TailLayout $type: haxework.view.layout.TailLayout
rowSize: 3
margin: 5 margin: 5
vAlign: middle vAlign: middle
geometry.stretch: true geometry.stretch: true