filtergui.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. define([], function () {
  2. return function (distributor) {
  3. var container = document.createElement("ul")
  4. container.classList.add("filters")
  5. var div = document.createElement("div")
  6. function render(el) {
  7. el.appendChild(div)
  8. }
  9. function filtersChanged(filters) {
  10. while (container.firstChild)
  11. container.removeChild(container.firstChild)
  12. filters.forEach( function (d) {
  13. var li = document.createElement("li")
  14. var div = document.createElement("div")
  15. container.appendChild(li)
  16. li.appendChild(div)
  17. d.render(div)
  18. var button = document.createElement("button")
  19. button.textContent = ""
  20. button.onclick = function () {
  21. distributor.removeFilter(d)
  22. }
  23. li.appendChild(button)
  24. })
  25. if (container.parentNode === div && filters.length === 0)
  26. div.removeChild(container)
  27. else if (filters.length > 0)
  28. div.appendChild(container)
  29. }
  30. return { render: render,
  31. filtersChanged: filtersChanged
  32. }
  33. }
  34. })