Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suggestion: filter by unique #3

Open
migig opened this issue Apr 30, 2015 · 2 comments
Open

Suggestion: filter by unique #3

migig opened this issue Apr 30, 2015 · 2 comments

Comments

@migig
Copy link

migig commented Apr 30, 2015

The table is useful for comparing similar icons.

But what would be more useful, is a checkbox in the header, which if clicked, will only show those icons which are unique.

So for example, I want to see those icons from fontawesome, which I cannot get from the other two libraries.

@tagliala
Copy link
Owner

hmmm this is hard to do with the actual implementation.

I need to change the build process but it will require time. I don't know if I can do it, sorry 😢

@migig
Copy link
Author

migig commented May 1, 2015

@tagliala OK. So if you can't modify your server code, then do it on the client side using jQuery.

Use this script on the page, and it will work.

// add stuff to the table's header
$("#pictograms-table thead")
  .append(
    "<tr>" +
    "<th>Unique?</th>" +
    "<th><input type='checkbox' id='uniqueFA' /></th>" +
    "<th><input type='checkbox' id='uniqueGL' /></th>" +
    "<th><input type='checkbox' id='uniqueELS' /></th>" +
    "</tr>"
  );


// declare variables once
var rows = $("#pictograms-table tbody tr");
var checkboxes = $("#pictograms-table thead input:checkbox");


// only one checkbox can be checked at a time
var checkUnique = function(chk) {
  checkboxes.not($(chk)).prop("checked", false);
};


// process each row, and hide those which are not unique
var hideRows = function(i) {
  var rows = $("#pictograms-table tbody tr");
  rows.each(function() {
    var icons = $(this).find("td i"); 
    var FA = icons.eq(0);
    var GL = icons.eq(1);
    var ELS = icons.eq(2);
    if (i === 1 && (FA.width()  === 0 || icons.filter(function(){return $(this).width() !== 0}).length > 1)) $(this).hide();
    if (i === 2 && (GL.width()  === 0 || icons.filter(function(){return $(this).width() !== 0}).length > 1)) $(this).hide();
    if (i === 3 && (ELS.width() === 0 || icons.filter(function(){return $(this).width() !== 0}).length > 1)) $(this).hide();
  });
};

// click events, everything starts here
$("#uniqueFA").on("click", function() {
  checkUnique(this);
  if (checkboxes.filter(":checked").length === 0) { rows.show(); return; }
  hideRows(1);
});
$("#uniqueGL").on("click", function() {
  checkUnique(this);
  if (checkboxes.filter(":checked").length === 0) { rows.show(); return; }
  hideRows(2);
});
$("#uniqueELS").on("click", function() {
  checkUnique(this);
  if (checkboxes.filter(":checked").length === 0) { rows.show(); return; }
  hideRows(3);
});

I tested it by running it in my browser's javascript console.

Please add it in. Spent lots of time on it! :-) Is very very useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants