Widget:TreasureCardFilter: Difference between revisions
From Unforgotten Realms Wiki
Jump to navigationJump to search
imported>Plornt m Syntax error |
imported>Plornt Took the easy way out. |
||
| Line 7: | Line 7: | ||
function getCardData (element) { | function getCardData (element) { | ||
return JSON.parse(element.getAttribute("data-card")); | return JSON.parse(element.getAttribute("data-card")); | ||
} | |||
function removeFromArray (array, element) { | |||
var index = array.indexOf(element); | |||
var newArr = array; | |||
if (index != -1) { | |||
newArr = array.splice(index, 1); | |||
} | |||
return newArr; | |||
} | } | ||
function updateFilters () { | function updateFilters () { | ||
// TODO: Refactor | // TODO: Refactor | ||
var enabledElements = []; | |||
FILTERS.forEach(function (filter) { | FILTERS.forEach(function (filter) { | ||
$FILTERABLE.sort(function (a, b) { | $FILTERABLE.sort(function (a, b) { | ||
| Line 15: | Line 24: | ||
var cardDataB = getCardData(b); | var cardDataB = getCardData(b); | ||
if (!cardDataA.hasOwnProperty(filter)) { | if (!cardDataA.hasOwnProperty(filter)) { | ||
cardDataA.slideUp(); | $(cardDataA).slideUp(); | ||
enabledElements = removeFromArray(enabledElements, a); | |||
} | } | ||
else { | |||
enabledElements.push(a); | |||
} | } | ||
return cardDataA[filter] < cardDataB[filter]; | return cardDataA[filter] < cardDataB[filter]; | ||
}); | }); | ||
}); | }); | ||
$FILTERABLE.detach().appendTo($("#card_holder")); | |||
enabledElements.forEach(function (element) { | |||
$(element).slideDown(); | |||
}); | |||
} | } | ||
$GEMS.bind("click", function (ev) { | $GEMS.bind("click", function (ev) { | ||
| Line 36: | Line 51: | ||
$this.toggleClass("gem-deselected"); | $this.toggleClass("gem-deselected"); | ||
if ($this.hasClass("gem-deselected")) { | if ($this.hasClass("gem-deselected")) { | ||
FILTERS = removeFromArray(FILTERS, this.getAttribute("data-filter-binding")); | |||
} | } | ||
else { | else { | ||
| Line 66: | Line 78: | ||
</div> | </div> | ||
<div id="card_holder"> | |||
<!--{foreach from=$cards item=card}--> | <!--{foreach from=$cards item=card}--> | ||
<div class="pure-g content-box " data-card="<!--{json_encode($card)|escape:'html'}-->" data-cost="<!--{$card.cost|escape:'int'}-->" > | <div class="pure-g content-box " data-card="<!--{json_encode($card)|escape:'html'}-->" data-cost="<!--{$card.cost|escape:'int'}-->" > | ||
| Line 76: | Line 89: | ||
</div> | </div> | ||
<!--{/foreach}--> | <!--{/foreach}--> | ||
</div> | |||
</div> | </div> | ||
Revision as of 15:50, 6 June 2015
<script>
window.addEventListener("load", function () {
var FILTER_INITIALIZED = false;
var FILTERS = [];
var $GEMS = $("[data-filter-binding]");
var $FILTERABLE = $("[data-card]");
function getCardData (element) {
return JSON.parse(element.getAttribute("data-card"));
}
function removeFromArray (array, element) {
var index = array.indexOf(element);
var newArr = array;
if (index != -1) {
newArr = array.splice(index, 1);
}
return newArr;
}
function updateFilters () {
// TODO: Refactor
var enabledElements = [];
FILTERS.forEach(function (filter) {
$FILTERABLE.sort(function (a, b) {
var cardDataA = getCardData(a);
var cardDataB = getCardData(b);
if (!cardDataA.hasOwnProperty(filter)) {
$(cardDataA).slideUp();
enabledElements = removeFromArray(enabledElements, a);
}
else {
enabledElements.push(a);
}
return cardDataA[filter] < cardDataB[filter];
});
});
$FILTERABLE.detach().appendTo($("#card_holder"));
enabledElements.forEach(function (element) {
$(element).slideDown();
});
}
$GEMS.bind("click", function (ev) {
if (FILTER_INITIALIZED == false) {
FILTER_INITIALIZED = true;
$GEMS.each(function () {
$(this).addClass("gem-deselected");
});
}
ev.preventDefault();
var $this= $(this);
$this.toggleClass("gem-deselected");
if ($this.hasClass("gem-deselected")) {
FILTERS = removeFromArray(FILTERS, this.getAttribute("data-filter-binding"));
}
else {
FILTERS.push(this.getAttribute("data-filter-binding"));
}
updateFilters();
});
});
</script> <style> .gem-deselected { -webkit-filter: grayscale(100%); filter: grayscale(100%); filter: gray; filter: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='0'><filter id='greyscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0' /></filter></svg>#greyscale"); } </style>
Filters
Cost: Coin


