Skip to content

Commit

Permalink
Merge pull request #710 from Motardo/filter-by-name
Browse files Browse the repository at this point in the history
Add filter by name
  • Loading branch information
ritwik12 committed Oct 25, 2017
2 parents 105efd8 + aa36df5 commit 03cad1a
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 4 deletions.
8 changes: 8 additions & 0 deletions _includes/scripts.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
<script type="text/html" id="projects-panel-template">
<div class="filters-panel cf">
<h5>Filter by name: </h5>
<select class="names-filter" multiple data-placeholder="Select a project..." >
<% _.each(names, function(entry, key){ %>
<option value="<%-key%>"><%- entry.name%></option>
<% }) %>
</select>
</div>
<div class="filters-panel cf">
<h5>Filter by tags: </h5>
<select class="tags-filter" multiple data-placeholder="Select a tag..." >
Expand Down
24 changes: 21 additions & 3 deletions javascripts/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
compiledtemplateFn = null,
projectsPanel = null;

var renderProjects = function (tags) {
var renderProjects = function (tags, names) {
projectsPanel.html(compiledtemplateFn({
"projects": projectsSvc.get(tags),
"projects": projectsSvc.get(tags, names),
"tags": projectsSvc.getTags(),
"popularTags": projectsSvc.getPopularTags(6),
"selectedTags": tags
"selectedTags": tags,
"names": projectsSvc.getNames(),
"selectedNames": names
}));

projectsPanel.find("select.tags-filter").chosen({
Expand All @@ -18,6 +20,13 @@
}).val(tags).trigger('chosen:updated').change(function (e) {
window.location.href = "#/tags/" + encodeURIComponent(($(this).val() || ""));
});

projectsPanel.find("select.names-filter").chosen({
no_results_text: "No project found by that name.",
width: "95%"
}).val(names).trigger('chosen:updated').change(function (e) {
window.location.href = "#/names/" + encodeURIComponent(($(this).val() || ""));
});
};

var app = $.sammy(function () {
Expand All @@ -33,6 +42,15 @@
var tags = (this.params["tags"] || "").toLowerCase().split(",");
renderProjects(tags);
});

this.get("#/names/", function (context) {
renderProjects();
});

this.get("#/names/:names", function (context) {
var names = (this.params["names"] || "").toLowerCase().split(",");
renderProjects(null, names);
});
});

var storage = (function (global) {
Expand Down
39 changes: 38 additions & 1 deletion javascripts/projectsService.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,29 @@
});
};

var applyNamesFilter = function (projects, namesMap, names) {
if (typeof names === "string") {
names = names.split(",");
}

names = _.map(names, function (entry) {
return entry && entry.replace(/^\s+|\s+$/g, "");
});

console.log(names);
console.log(projects[0]);
if (!names || !names.length || names[0] == "") {
return projects;
}

var projectNames = _.uniq(_.flatten(_.map(names, function (name) {
var hit = namesMap[name.toLowerCase()];
return hit || [];
})));
console.log(projectNames);
return projectNames;
};

var TagBuilder = function () {
var _tagsMap = {},
_orderedTagsMap = null;
Expand Down Expand Up @@ -70,6 +93,7 @@
var ProjectsService = function (projectsData) {
var _projectsData = extractProjectsAndTags(projectsData);
var tagsMap = {};
var namesMap = {};

var canStoreOrdering = (JSON && sessionStorage && sessionStorage.getItem &&
sessionStorage.setItem);
Expand Down Expand Up @@ -102,14 +126,27 @@
tagsMap[tag.name.toLowerCase()] = tag;
});

this.get = function (tags) {
_.each(_projectsData.projects, function (project) {
if (project.name.toLowerCase) {
namesMap[project.name.toLowerCase()] = project;
}
});

this.get = function (tags, names) {
if (names) {
return applyNamesFilter(projects, namesMap, names);
}
return applyTagsFilter(projects, tagsMap, tags);
};

this.getTags = function () {
return tagsMap;
};

this.getNames = function () {
return namesMap;
};

this.getPopularTags = function (popularTagCount) {
return _.take(_.values(tagsMap), popularTagCount || 10);
}
Expand Down

0 comments on commit 03cad1a

Please sign in to comment.