Skip to content

Commit bce3dac

Browse files
lucianfhunleth
authored andcommitted
refactoring circuits libraries listing from list to table sorted by hex downloads
1 parent 50cd892 commit bce3dac

File tree

3 files changed

+100
-64
lines changed

3 files changed

+100
-64
lines changed

index.html

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,16 @@ <h3><a href="https://github.com/elixir-circuits/circuits_uart">UART</a></h3>
5454
</div>
5555

5656
<hr class="container">
57-
58-
<div class="container section content js-hex-query-component query-component">
59-
<h2 class="header h2 text center">What uses Elixir Circuits?</h2>
60-
61-
<div class="js-hex-search-available-libraries available-libraries-list"></div>
62-
</div>
57+
<h2 class="header h2 text center">What uses Elixir Circuits?</h2>
58+
<div class="js-hex-search-circuits-libs"></div>
6359

6460
<hr class="container">
65-
66-
<div class="container section content js-hex-query-component query-component">
67-
<h2 class="header h2 text center">What uses Elixir/ALE?</h2>
68-
<p class="text center">
61+
<h2 class="header h2 text center">What uses Elixir/ALE?</h2>
62+
<p class="text center">
6963
<a href="https://hexdocs.pm/elixir_ale/readme.html">Elixir/ALE</a> was the predecessor to the Elixir Circuits libraries.
70-
</p>
71-
<div class="js-elixir-ale-libraries available-libraries-list"></div>
72-
</div>
64+
</p>
65+
<div class="js-hex-search-ale-libs"></div>
66+
7367
<footer>
7468
<a class="icon" href="https://github.com/elixir-circuits"><i class="fab fa-github"></i></a>
7569
</footer>

index.js

Lines changed: 74 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
var hexSearch = {
44
state: {
5-
availableLibrariesDom: document.querySelector(".js-hex-search-available-libraries"),
6-
aleLibrariesDom: document.querySelector(".js-elixir-ale-libraries"),
5+
availableLibrariesDom: document.querySelector(".js-hex-search-circuits-libs"),
6+
aleLibrariesDom: document.querySelector(".js-hex-search-ale-libs"),
77
searchedLibs: ["circuits_uart", "circuits_i2c", "circuits_gpio", "circuits_spi", "nerves_uart", "elixir_ale"],
88
i2cLibraries: [],
99
spiLibraries: [],
@@ -40,7 +40,7 @@ var hexSearch = {
4040
}.bind(this)
4141
)
4242
.catch(function (e) {
43-
consoe.log(e);
43+
console.log(e);
4444
});
4545
break;
4646

@@ -76,7 +76,7 @@ var hexSearch = {
7676

7777
searchLib: function (libraryName) {
7878
return axios
79-
.get("https://hex.pm/api/packages?search=depends%3A" + libraryName)
79+
.get("https://hex.pm/api/packages?search=depends%3A" + libraryName + "&sort=downloads")
8080
},
8181

8282
libsFromResponse: function (responseData) {
@@ -87,69 +87,72 @@ var hexSearch = {
8787
name: responseData[i].name,
8888
url: responseData[i].html_url,
8989
description: responseData[i].meta.description,
90+
downloads: responseData[i].downloads.all
9091
});
9192
}
9293

9394
return libs;
9495
},
9596

9697
updateDom: function(state) {
97-
var ul = document.createElement("ul");
98-
ul.classList.add("flex-container");
99-
ul.id = "js-hex-lib-list";
98+
var container_circuits_i2c = this.updateDomSection(state.i2cLibraries, "circuits_i2c");
99+
var container_circuits_gpio = this.updateDomSection(state.gpioLibraries, "circuits_gpio");
100+
var container_circuits_spi = this.updateDomSection(state.spiLibraries, "circuits_spi");
101+
var container_circuits_uart = this.updateDomSection(state.uartLibraries, "circuits_uart");
102+
var container_nerves_uart = this.updateDomSection(state.nervesUartLibraries, "nerves_uart");
100103

101-
var aleUl = document.createElement("ul");
102-
aleUl.classList.add("flex-container");
103-
aleUl.id = "js-hex-ale-list";
104+
var container_elixir_ale = this.updateDomSection(state.aleLibraries, "elixir_ale");
104105

105-
for (var i = 0; i < state.i2cLibraries.length; i++) {
106-
var li = this.buildLibListItem(state.i2cLibraries[i], "circuits_i2c");
107-
ul.appendChild(li);
108-
}
109-
110-
for (var i = 0; i < state.gpioLibraries.length; i++) {
111-
var li = this.buildLibListItem(state.gpioLibraries[i], "circuits_gpio");
112-
ul.appendChild(li);
113-
}
114-
115-
for (var i = 0; i < state.spiLibraries.length; i++) {
116-
var li = this.buildLibListItem(state.spiLibraries[i], "circuits_spi");
117-
ul.appendChild(li);
118-
}
106+
state.availableLibrariesDom.innerHTML = container_circuits_i2c +
107+
container_circuits_gpio +
108+
container_circuits_spi +
109+
container_circuits_uart +
110+
container_nerves_uart;
119111

120-
for (var i = 0; i < state.uartLibraries.length; i++) {
121-
var li = this.buildLibListItem(state.uartLibraries[i], "circuits_uart");
122-
ul.appendChild(li);
123-
}
112+
state.aleLibrariesDom.innerHTML = container_elixir_ale;
113+
},
124114

125-
for (var i = 0; i < state.nervesUartLibraries.length; i++) {
126-
var li = this.buildLibListItem(state.nervesUartLibraries[i], "nerves_uart");
127-
ul.appendChild(li);
128-
}
115+
updateDomSection: function(libs, protocol) {
116+
var tbody = document.createElement("tbody");
129117

130-
for (var i = 0; i < state.aleLibraries.length; i++) {
131-
var li = this.buildLibListItem(state.aleLibraries[i], "elixir_ale");
132-
aleUl.appendChild(li);
118+
for (var i = 0; i < libs.length; i++) {
119+
var tr = this.buildLibTRItem(libs[i], protocol);
120+
tbody.appendChild(tr);
133121
}
134122

135-
state.availableLibrariesDom.appendChild(ul);
136-
state.aleLibrariesDom.appendChild(aleUl);
123+
const container_content = `
124+
<div class="container">
125+
<h3 class="header h3 text center">${protocol}</h3>
126+
127+
<table class="search-table">
128+
<thead>
129+
<tr>
130+
<th>Name</th>
131+
<!-- <th>Protocol</th> -->
132+
<th>Downloads</th>
133+
<th>Description</th>
134+
</tr>
135+
<thead>
136+
${tbody.outerHTML}
137+
</table>
138+
</div>
139+
`;
140+
141+
return container_content;
137142
},
138143

139-
buildLibListItem: function (lib, protocol) {
140-
var pName = this.aNode(lib.name, lib.url);
141-
var protocol = this.pNode(protocol);
142-
var description = this.pNode(lib.description);
143-
var li = document.createElement("li");
144-
li.className += " library-search-item";
145-
pName.className += " library-name";
146-
protocol.className += " protocol-name";
147-
description.className += "library-description";
148-
li.appendChild(pName);
149-
li.appendChild(protocol);
150-
li.appendChild(description);
151-
152-
return li;
144+
buildLibTRItem: function (lib, protocol) {
145+
var pName = this.tdaNode(lib.name, lib.url);
146+
var protocol = this.tdNode(protocol);
147+
var downloads = this.tdNode(lib.downloads);
148+
var description = this.tdNode(lib.description);
149+
var tr = document.createElement("tr");
150+
tr.appendChild(pName);
151+
//tr.appendChild(protocol);
152+
tr.appendChild(downloads);
153+
tr.appendChild(description);
154+
155+
return tr;
153156
},
154157

155158
pNode: function (txt) {
@@ -160,6 +163,26 @@ var hexSearch = {
160163
return p;
161164
},
162165

166+
tdNode:function (txt) {
167+
var txtNode = document.createTextNode(txt);
168+
var td = document.createElement("td");
169+
td.appendChild(txtNode);
170+
return td;
171+
},
172+
173+
tdaNode:function (txt, link) {
174+
var txtNode = document.createTextNode(txt);
175+
var td = document.createElement("td");
176+
177+
var a = document.createElement("a");
178+
a.appendChild(txtNode);
179+
a.href = link;
180+
a.target = "blank";
181+
182+
td.appendChild(a);
183+
return td;
184+
},
185+
163186
aNode: function (txt, link) {
164187
var txtNode = document.createTextNode(txt);
165188
var a = document.createElement("a");

styles.css

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,25 @@ ul {
198198
padding: 15px;
199199
}
200200

201+
.search-table {
202+
border: solid 1px #101010;
203+
border-collapse: collapse;
204+
border-spacing: 0;
205+
font: normal 13px Roboto, sans-serif;
206+
}
207+
.search-table thead th {
208+
background-color: #101010;
209+
border: solid 1px #101010;
210+
color: #DCDCDC;
211+
padding: 10px;
212+
text-align: left;
213+
}
214+
.search-table tbody td {
215+
border: solid 1px #DDEEEE;
216+
color: #333;
217+
padding: 10px;
218+
}
219+
201220
footer {
202221
background-color: rgba(0,0,0,0.05);
203222
text-align: center;

0 commit comments

Comments
 (0)