Skip to content

Commit 17a67e4

Browse files
Added view/route to filter by programming language (#41)
1 parent 1944659 commit 17a67e4

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

src/components/Languages.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<template>
22
<div>
33
<span v-if="!languages.trim()">(no languages)</span>
4-
<a
4+
<router-link
55
v-else
6-
href="#"
76
class="chip"
87
v-for="(language, index) in languagesWithColors"
98
:key="index"
109
:style="{ backgroundColor: language.backgroundColor, color: language.textColor }"
10+
:to="'/repositories/' + language.text"
1111
>
1212
{{ language.text }}
13-
</a>
13+
</router-link>
1414
</div>
1515
</template>
1616

src/router/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ const routes = [
2323
name: "PopularRepositories",
2424
component: PopularRepositories
2525
},
26+
{
27+
path: ":language",
28+
name: "PopularRepositories",
29+
component: PopularRepositories
30+
},
2631
{
2732
path: "new",
2833
name: "NewRepositories",

src/views/PopularRepositories.vue

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
<template>
22
<div>
3-
<h3 class="center-align">Popular Repositories</h3>
3+
<h3 class="center-align">
4+
Popular <span>{{ language }}</span> Repositories
5+
</h3>
46
<p class="center">
5-
Showing <strong>{{ repositories.length.toLocaleString() }}</strong> repositories
7+
Showing <strong>{{ filteredLanguageRepositories.length.toLocaleString() }}</strong> repositories
68
<span>sorted by stars.</span>
79
</p>
810
<InputSearch label="Filter repository by name or description..." v-model="searchTerm" />
@@ -34,18 +36,28 @@ export default {
3436
...mapState({
3537
repositories: state => state.Repositories.repositories
3638
}),
39+
filteredLanguageRepositories() {
40+
if (this.language) {
41+
return this.repositories.filter(item => item.languages.includes(this.language));
42+
}
43+
44+
return this.repositories;
45+
},
3746
filteredRepositories() {
3847
if (!this.searchTerm) {
39-
return this.repositories.slice(0, 10);
48+
return this.filteredLanguageRepositories.slice(0, 10);
4049
}
4150
4251
return sortBy(repoSearcher.findAll(this.searchTerm), repo => -repo.stargazers).slice(0, 10);
52+
},
53+
language() {
54+
return this.$route.params.language || null;
4355
}
4456
},
4557
watch: {
4658
repositories: {
4759
handler() {
48-
repoSearcher.setData(this.repositories);
60+
repoSearcher.setData(this.filteredLanguageRepositories);
4961
},
5062
immediate: true
5163
}
@@ -58,4 +70,12 @@ span {
5870
font-style: italic;
5971
font-weight: 600;
6072
}
73+
h3 span {
74+
text-decoration: underline;
75+
font-size: 2.92rem;
76+
line-height: 110%;
77+
margin: 1.9466666667rem 0 1.168rem 0;
78+
font-style: inherit;
79+
font-weight: inherit;
80+
}
6181
</style>

0 commit comments

Comments
 (0)