Skip to content

Commit 50cd892

Browse files
mattludwigsfhunleth
authored andcommitted
Fix re-rendering the ul completely for each library
1 parent 0e2bafe commit 50cd892

File tree

1 file changed

+49
-40
lines changed

1 file changed

+49
-40
lines changed

index.js

Lines changed: 49 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var hexSearch = {
44
state: {
55
availableLibrariesDom: document.querySelector(".js-hex-search-available-libraries"),
66
aleLibrariesDom: document.querySelector(".js-elixir-ale-libraries"),
7+
searchedLibs: ["circuits_uart", "circuits_i2c", "circuits_gpio", "circuits_spi", "nerves_uart", "elixir_ale"],
78
i2cLibraries: [],
89
spiLibraries: [],
910
gpioLibraries: [],
@@ -15,52 +16,24 @@ var hexSearch = {
1516
},
1617

1718
init: function () {
18-
var libraries = ["circuits_uart", "circuits_i2c", "circuits_gpio", "circuits_spi", "nerves_uart", "elixir_ale"];
19-
20-
for (var i = 0; i < libraries.length; i++) {
21-
this.update("search", libraries[i], this.state);
22-
}
19+
this.update("search", null, this.state);
2320
},
2421

2522
update: function(update_command, updateData, state) {
2623
switch (update_command) {
2724
case "search":
28-
this.update("search_response", [this.search(updateData), updateData], state);
25+
this.update("search_response", this.search(state), state);
2926
break;
3027
case "search_response":
31-
var libSearched = updateData[1];
32-
updateData[0]
33-
.then(function (response) {
34-
for (var i = 0; i < response.data.length; i++) {
35-
var lib = {
36-
name: response.data[i].name,
37-
url: response.data[i].html_url,
38-
description: response.data[i].meta.description,
39-
};
40-
41-
if (libSearched === "circuits_i2c") {
42-
state.i2cLibraries.push(lib);
43-
}
44-
45-
if (libSearched === "circuits_gpio") {
46-
state.gpioLibraries.push(lib);
47-
}
48-
49-
if (libSearched === "circuits_spi") {
50-
state.gpioLibraries.push(lib);
51-
}
52-
53-
if (libSearched === "circuits_uart") {
54-
state.uartLibraries.push(lib);
55-
}
56-
57-
if (libSearched === "nerves_uart") {
58-
state.nervesUartLibraries.push(lib);
59-
}
60-
61-
if (libSearched === "elixir_ale") {
62-
state.aleLibraries.push(lib);
63-
}
28+
updateData
29+
.then(function (responses) {
30+
// assumes that the keys to the reponse
31+
// object is the same as the keys in
32+
// our state model for the libraries
33+
var libs = Object.keys(responses);
34+
35+
for (var i = 0; i < libs.length; i++) {
36+
state[libs[i]] = responses[libs[i]];
6437
}
6538

6639
this.update("updateDom", null, state);
@@ -79,11 +52,47 @@ var hexSearch = {
7952
}
8053
},
8154

82-
search: function (libraryName) {
55+
search: function (state) {
56+
var libReqs = [];
57+
58+
for (var i = 0; i < state.searchedLibs.length; i++) {
59+
libReqs.push(this.searchLib(state.searchedLibs[i]));
60+
}
61+
62+
return axios.all(libReqs)
63+
.then(axios.spread(function (cuart, i2c, gpio, spi, nuart, ale) {
64+
var responses = {
65+
uartLibraries: this.libsFromResponse(cuart.data),
66+
i2cLibraries: this.libsFromResponse(i2c.data),
67+
gpioLibraries: this.libsFromResponse(gpio.data),
68+
spiLibraries: this.libsFromResponse(spi.data),
69+
nervesUartLibraries: this.libsFromResponse(nuart.data),
70+
aleLibraries: this.libsFromResponse(ale.data),
71+
};
72+
73+
return responses;
74+
}.bind(this)).bind(this));
75+
},
76+
77+
searchLib: function (libraryName) {
8378
return axios
8479
.get("https://hex.pm/api/packages?search=depends%3A" + libraryName)
8580
},
8681

82+
libsFromResponse: function (responseData) {
83+
var libs = [];
84+
85+
for (var i = 0; i < responseData.length; i++) {
86+
libs.push({
87+
name: responseData[i].name,
88+
url: responseData[i].html_url,
89+
description: responseData[i].meta.description,
90+
});
91+
}
92+
93+
return libs;
94+
},
95+
8796
updateDom: function(state) {
8897
var ul = document.createElement("ul");
8998
ul.classList.add("flex-container");

0 commit comments

Comments
 (0)