Skip to content

Commit f74ac05

Browse files
committed
Refactoring Code After CodeReview
Thank you @kristianhasselknippe
1 parent b75509d commit f74ac05

File tree

11 files changed

+94
-102
lines changed

11 files changed

+94
-102
lines changed

Components/Header.ux

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Grid ux:Class="PokeDex.Header" Height="50" Dock="Top" Padding="10">
1+
<Grid ux:Class="PokeDex.Header" Height="50" Padding="10">
22
<bool ux:Property="ShowBack" />
33
<string ux:Property="Title" />
44
<WhileTrue Value="{Property ShowBack}">

Components/PokemonCard.ux

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<DockPanel ux:Class="PokeDex.PokemonCard" Height="120" Margin="10" >
22
<string ux:Property="PokemonName" />
33
<string ux:Property="PokemonImage" />
4-
<Panel DockPanel.Dock="Top" Margin="10" Height="30">
4+
<Panel Dock="Top" Margin="10" Height="30">
55

66
<StackPanel>
77
<Rectangle Layer="Background" CornerRadius="10" Fill="#fff">

MainView.ux

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
<App>
22
<iOS.StatusBarConfig Style="Light" />
33
<Android.StatusBarConfig Color="#FA5858" />
4-
<FileImageSource File="Assets/arrow.png" ux:Key="Arrow"/>
5-
4+
65
<Router ux:Name="router" />
7-
86
<ClientPanel>
9-
<Navigator DefaultTemplate="home">
10-
<HomePage ux:Template="home" router="router" />
7+
<Navigator DefaultTemplate="AllPokemon">
8+
<AllPokemon ux:Template="AllPokemon" router="router" />
119
<ViewPokemon ux:Template="view" router="router" />
1210
</Navigator>
1311
</ClientPanel>

Modules/Backend.js

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
var Utility = require("./Utility");
2+
23
var Globals = require("./Globals");
34

4-
function getPokemons(offset){
5+
function getAllPokemon(offset){
56
limit = Globals.pageSize;
67
offset = !!offset ? offset : 0;
78

89
return fetch('http://pokeapi.co/api/v2/pokemon/?limit='+limit+'&offset='+offset)
9-
.then(function(response) { return response.json(); })
10-
.then(function(responseObject){
11-
var pokemons = [];
12-
for (var i = 0; i < responseObject.results.length; i++) {
13-
var newPokemonObject = responseObject.results[i];
14-
var pokemonId = offset+ i + 1
15-
newPokemonObject.id = pokemonId;
16-
newPokemonObject.pokemonImage = 'https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/' + (pokemonId) +'.png';
17-
newPokemonObject.name = Utility.Capitalize(newPokemonObject.name);
18-
pokemons.push(newPokemonObject);
19-
}
20-
return pokemons;
21-
});
10+
.then(function(response) { return response.json(); })
11+
.then(function(responseObject){
12+
var AllPokemon = [];
13+
for (var i = 0; i < responseObject.results.length; i++) {
14+
var newPokemonObject = responseObject.results[i];
15+
var pokemonId = offset+ i + 1;
16+
newPokemonObject.id = pokemonId;
17+
newPokemonObject.pokemonImage = 'https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/' + (pokemonId) +'.png';
18+
newPokemonObject.name = Utility.Capitalize(newPokemonObject.name);
19+
AllPokemon.push(newPokemonObject);
20+
}
21+
return AllPokemon;
22+
});
2223
}
2324

2425

@@ -27,15 +28,15 @@ function getPokemons(offset){
2728
function getPokemon(id){
2829

2930
return fetch('http://pokeapi.co/api/v2/pokemon/'+id)
30-
.then(function(response) { return response.json(); })
31-
.then(function(responseObject){
32-
return responseObject;
33-
});
31+
.then(function(response) { return response.json(); })
32+
.then(function(responseObject){
33+
return responseObject;
34+
});
3435
}
3536

3637

3738

3839
module.exports = {
39-
getPokemons: getPokemons,
40+
getAllPokemon: getAllPokemon,
4041
getPokemon: getPokemon
4142
};

Modules/Globals.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module.exports = {
22
pageSize: 20
3-
}
3+
};

Modules/InfiniteScrollPokemon.js

Lines changed: 0 additions & 48 deletions
This file was deleted.

Pages/AllPokemon.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
var Observable = require("FuseJS/Observable");
2+
3+
var Backend = require("../Modules/Backend");
4+
5+
var Globals = require("../Modules/Globals");
6+
7+
var data = Observable();
8+
9+
var loadingNewFeed = Observable(true);
10+
11+
var appendingData = Observable(false);
12+
13+
var paginationOffset = 0;
14+
15+
var isBusy = Observable(false);
16+
17+
fetchPokemon();
18+
19+
function fetchPokemon(appendData) {
20+
if (isBusy.value === true)
21+
return;
22+
isBusy.value = true;
23+
appendingData.value = appendData;
24+
Backend.getAllPokemon(paginationOffset)
25+
.then(function(responseObject) {
26+
if (!!appendData) {
27+
var items = data.toArray();
28+
for (var i = 0; i < responseObject.length; i++) {
29+
items.push(responseObject[i]);
30+
}
31+
responseObject = items;
32+
appendingData.value = false;
33+
}
34+
data.replaceAll(responseObject);
35+
isBusy.value = false;
36+
loadingNewFeed.value = false;
37+
38+
paginationOffset = paginationOffset + Globals.pageSize;
39+
40+
})
41+
.catch(function(error) {
42+
console.log("Couldn't get pokemons: " + error);
43+
});
44+
}
45+
46+
47+
48+
function goToPokemon(arg) {
49+
var pokemon = arg.data;
50+
router.push("view", pokemon);
51+
}
52+
53+
module.exports = {
54+
allPokemon: data,
55+
goToPokemon: goToPokemon,
56+
appendingData: appendingData,
57+
loadingNewFeed: loadingNewFeed,
58+
fetchAppendData: function() { fetchPokemon(true); }
59+
};

Pages/AllPokemons.ux renamed to Pages/AllPokemon.ux

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
<Page ux:Class="HomePage">
1+
<Page ux:Class="AllPokemon">
22

33
<Router ux:Dependency="router" />
44

55
<DockPanel>
6-
<JavaScript File="AllPokemons.js" />
7-
<PokeDex.Header ColumnCount="1" Background="#FA5858" Title="POKEDEX" ShowBack="false" />
6+
<JavaScript File="AllPokemon.js" />
7+
<PokeDex.Header ColumnCount="1" Dock="Top" Color="#FA5858" Title="POKEDEX" ShowBack="false" />
88
<WhileTrue Value="{loadingNewFeed}">
99
<StackPanel Alignment="Center">
1010
<Text Value="Loading..."></Text>
@@ -17,7 +17,7 @@
1717
</WhileScrollable>
1818
<DockPanel>
1919
<Grid ColumnCount="2">
20-
<Each Items="{pokemons}">
20+
<Each Items="{allPokemon}">
2121
<PokeDex.PokemonCard PokemonName="{name}" PokemonImage="{pokemonImage}" Clicked="{goToPokemon}" />
2222
</Each>
2323
</Grid>

Pages/AllPokemons.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

Pages/ViewPokemon.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
var Observable = require("FuseJS/Observable");
2-
var Backend = require("Modules/Backend");
3-
var Utility = require("Modules/Utility");
4-
var pokemon = Observable();
5-
this.Parameter.onValueChanged(module,function(param) {
6-
pokemon.value = param;
7-
8-
});
92

3+
var pokemon = this.Parameter.map(function(p){
4+
return p;
5+
});
106

117
function cancel() {
128
router.goBack();
139
}
10+
1411
module.exports = {
1512
pokemon: pokemon,
1613
cancel: cancel

0 commit comments

Comments
 (0)