diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprintLibrary.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprintLibrary.java index 91def8bb3..cbb01851f 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprintLibrary.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprintLibrary.java @@ -4,9 +4,9 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; import java.util.Map; +import java.util.Set; public class LotroCardBlueprintLibrary { private String[] _packageNames = @@ -17,7 +17,7 @@ public class LotroCardBlueprintLibrary { private Map _blueprintMap = new HashMap(); private Map _blueprintMapping = new HashMap(); - private Map> _fullBlueprintMapping = new HashMap>(); + private Map> _fullBlueprintMapping = new HashMap>(); public LotroCardBlueprintLibrary() { try { @@ -49,7 +49,7 @@ public class LotroCardBlueprintLibrary { } private void addAlternatives(String newBlueprint, String existingBlueprint) { - List existingAlternates = _fullBlueprintMapping.get(existingBlueprint); + Set existingAlternates = _fullBlueprintMapping.get(existingBlueprint); if (existingAlternates != null) { for (String existingAlternate : existingAlternates) { addAlternative(newBlueprint, existingAlternate); @@ -61,16 +61,20 @@ public class LotroCardBlueprintLibrary { } private void addAlternative(String from, String to) { - List list = _fullBlueprintMapping.get(from); + Set list = _fullBlueprintMapping.get(from); if (list == null) { - list = new LinkedList(); + list = new HashSet(); _fullBlueprintMapping.put(from, list); } list.add(to); } + public Set getAllAlternates(String blueprintId) { + return _fullBlueprintMapping.get(blueprintId); + } + public boolean hasAlternateInSet(String blueprintId, int setNo) { - List alternatives = _fullBlueprintMapping.get(blueprintId); + Set alternatives = _fullBlueprintMapping.get(blueprintId); if (alternatives != null) for (String alternative : alternatives) if (alternative.startsWith(setNo + "_")) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java index 968913796..b9117a922 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java @@ -14,6 +14,8 @@ public interface LotroFormat { public String getName(); + public void validateCard(String cardId) throws DeckInvalidException; + public void validateDeck(LotroDeck deck) throws DeckInvalidException; public List getValidSets(); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java index d1e922b92..2e5d93509 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java @@ -5,13 +5,14 @@ import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.util.MultipleComparator; import java.util.*; public class SortAndFilterCards { - public List process(String filter, Collection items, LotroCardBlueprintLibrary library, Map rarities) { + public List process(String filter, Collection items, LotroCardBlueprintLibrary cardLibrary, LotroFormatLibrary formatLibrary, Map rarities) { if (filter == null) filter = ""; String[] filterParams = filter.split(" "); @@ -31,7 +32,7 @@ public class SortAndFilterCards { for (T item : items) { String blueprintId = item.getBlueprintId(); - if (acceptsFilters(library, rarities, blueprintId, side, type, rarity, sets, cardTypes, cultures, keywords, words, siteNumber)) + if (acceptsFilters(cardLibrary, formatLibrary, rarities, blueprintId, side, type, rarity, sets, cardTypes, cultures, keywords, words, siteNumber)) result.add(item); } @@ -44,21 +45,21 @@ public class SortAndFilterCards { MultipleComparator comparators = new MultipleComparator(); for (String oneSort : sortSplit) { if (oneSort.equals("twilight")) - comparators.addComparator(new PacksFirstComparator(new TwilightComparator(library))); + comparators.addComparator(new PacksFirstComparator(new TwilightComparator(cardLibrary))); else if (oneSort.equals("siteNumber")) - comparators.addComparator(new PacksFirstComparator(new SiteNumberComparator(library))); + comparators.addComparator(new PacksFirstComparator(new SiteNumberComparator(cardLibrary))); else if (oneSort.equals("strength")) - comparators.addComparator(new PacksFirstComparator(new StrengthComparator(library))); + comparators.addComparator(new PacksFirstComparator(new StrengthComparator(cardLibrary))); else if (oneSort.equals("vitality")) - comparators.addComparator(new PacksFirstComparator(new VitalityComparator(library))); + comparators.addComparator(new PacksFirstComparator(new VitalityComparator(cardLibrary))); else if (oneSort.equals("collectorInfo")) comparators.addComparator(new PacksFirstComparator(new CardBlueprintIdComparator())); else if (oneSort.equals("cardType")) - comparators.addComparator(new PacksFirstComparator(new CardTypeComparator(library))); + comparators.addComparator(new PacksFirstComparator(new CardTypeComparator(cardLibrary))); else if (oneSort.equals("culture")) - comparators.addComparator(new PacksFirstComparator(new CultureComparator(library))); + comparators.addComparator(new PacksFirstComparator(new CultureComparator(cardLibrary))); else if (oneSort.equals("name")) - comparators.addComparator(new PacksFirstComparator(new NameComparator(library))); + comparators.addComparator(new PacksFirstComparator(new NameComparator(cardLibrary))); } Collections.sort(result, comparators); @@ -67,7 +68,7 @@ public class SortAndFilterCards { } private boolean acceptsFilters( - LotroCardBlueprintLibrary library, Map rarities, String blueprintId, Side side, String type, String rarity, String[] sets, + LotroCardBlueprintLibrary library, LotroFormatLibrary formatLibrary, Map rarities, String blueprintId, Side side, String type, String rarity, String[] sets, Set cardTypes, Set cultures, Set keywords, List words, Integer siteNumber) { if (isPack(blueprintId)) { if (type == null || type.equals("pack")) @@ -81,7 +82,7 @@ public class SortAndFilterCards { final LotroCardBlueprint blueprint = library.getLotroCardBlueprint(blueprintId); if (side == null || blueprint.getSide() == side) if (rarity == null || isRarity(blueprintId, rarity, library, rarities)) - if (sets == null || isInSets(blueprintId, sets, library)) + if (sets == null || isInSets(blueprintId, sets, library, formatLibrary)) if (cardTypes == null || cardTypes.contains(blueprint.getCardType())) if (cultures == null || cultures.contains(blueprint.getCulture())) if (containsAllKeywords(blueprint, keywords)) @@ -135,10 +136,21 @@ public class SortAndFilterCards { return true; } - private boolean isInSets(String blueprintId, String[] sets, LotroCardBlueprintLibrary library) { - for (String set : sets) - if (blueprintId.startsWith(set + "_") || library.hasAlternateInSet(blueprintId, Integer.parseInt(set))) - return true; + private boolean isInSets(String blueprintId, String[] sets, LotroCardBlueprintLibrary library, LotroFormatLibrary formatLibrary) { + for (String set : sets) { + LotroFormat format = formatLibrary.getFormat(set); + if (format != null) { + try { + format.validateCard(blueprintId); + return true; + } catch (DeckInvalidException exp) { + return false; + } + } else { + if (blueprintId.startsWith(set + "_") || library.hasAlternateInSet(blueprintId, Integer.parseInt(set))) + return true; + } + } return false; } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java index ec5845b88..d495ccffd 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java @@ -123,16 +123,24 @@ public class DefaultLotroFormat implements LotroFormat { _validSets.add(setNo); } - private void validateSet(String blueprintId) throws DeckInvalidException { + @Override + public void validateCard(String blueprintId) throws DeckInvalidException { blueprintId = _library.getBaseBlueprintId(blueprintId); + if (_validCards.contains(blueprintId)) return; - for (int validSet : _validSets) - if (blueprintId.startsWith(validSet + "_") - || _library.hasAlternateInSet(blueprintId, validSet)) - return; - throw new DeckInvalidException("Deck contains card not from valid set: " + GameUtils.getFullName(_library.getLotroCardBlueprint(blueprintId))); + for (int validSet : _validSets) + if (!blueprintId.startsWith(validSet + "_") + && !_library.hasAlternateInSet(blueprintId, validSet)) + throw new DeckInvalidException("Deck contains card not from valid set: " + GameUtils.getFullName(_library.getLotroCardBlueprint(blueprintId))); + + // Banned cards + Set allAlternates = _library.getAllAlternates(blueprintId); + for (String bannedBlueprintId : _bannedCards) { + if (bannedBlueprintId.equals(blueprintId) || allAlternates.contains(bannedBlueprintId)) + throw new DeckInvalidException("Deck contains a copy of an X-listed card: " + GameUtils.getFullName(_library.getLotroCardBlueprint(bannedBlueprintId))); + } } @Override @@ -179,12 +187,12 @@ public class DefaultLotroFormat implements LotroFormat { } if (_validSets.size() > 0) { - validateSet(deck.getRingBearer()); - validateSet(deck.getRing()); + validateCard(deck.getRingBearer()); + validateCard(deck.getRing()); for (String site : deck.getSites()) - validateSet(site); + validateCard(site); for (String card : deck.getAdventureCards()) - validateSet(card); + validateCard(card); } if (isOrderedSites()) { @@ -260,13 +268,6 @@ public class DefaultLotroFormat implements LotroFormat { throw new DeckInvalidException("Deck contains more than one copy of an R-listed card: " + GameUtils.getFullName(_library.getLotroCardBlueprint(blueprintId))); } - // Banned cards - for (String blueprintId : _bannedCards) { - Integer count = cardCountByBaseBlueprintId.get(blueprintId); - if (count != null && count > 0) - throw new DeckInvalidException("Deck contains a copy of an X-listed card: " + GameUtils.getFullName(_library.getLotroCardBlueprint(blueprintId))); - } - } catch (IllegalArgumentException exp) { throw new DeckInvalidException("Deck contains unrecognizable card"); } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/game/formats/LotroFormatLibraryTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/game/formats/LotroFormatLibraryTest.java index a71eccbf2..cd2109171 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/game/formats/LotroFormatLibraryTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/game/formats/LotroFormatLibraryTest.java @@ -1,5 +1,8 @@ package com.gempukku.lotro.game.formats; +import com.gempukku.lotro.game.DeckInvalidException; +import com.gempukku.lotro.game.LotroCardBlueprintLibrary; +import com.gempukku.lotro.game.LotroFormat; import org.junit.Test; public class LotroFormatLibraryTest { @@ -7,4 +10,11 @@ public class LotroFormatLibraryTest { public void testLoad() { LotroFormatLibrary library = new LotroFormatLibrary(null); } + + @Test(expected = DeckInvalidException.class) + public void legolasGreenleafNotLegalInStandard() throws DeckInvalidException { + LotroFormatLibrary library = new LotroFormatLibrary(new LotroCardBlueprintLibrary()); + LotroFormat standard = library.getFormat("standard"); + standard.validateCard("1_50"); + } } diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/CollectionResource.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/CollectionResource.java index ac2c430b2..3ef2932e0 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/CollectionResource.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/CollectionResource.java @@ -7,6 +7,7 @@ import com.gempukku.lotro.common.Side; import com.gempukku.lotro.db.vo.CollectionType; import com.gempukku.lotro.db.vo.League; import com.gempukku.lotro.game.*; +import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.league.LeagueSerieData; import com.gempukku.lotro.league.LeagueService; import com.gempukku.lotro.packs.PacksStorage; @@ -41,6 +42,8 @@ public class CollectionResource extends AbstractResource { @Context private LotroCardBlueprintLibrary _library; @Context + private LotroFormatLibrary _formatLibrary; + @Context private LeagueService _leagueService; @Context private PacksStorage _packStorage; @@ -92,7 +95,7 @@ public class CollectionResource extends AbstractResource { sendError(Response.Status.NOT_FOUND); Collection items = collection.getAll().values(); - List filteredResult = _sortAndFilterCards.process(filter, items, _library, _rarities); + List filteredResult = _sortAndFilterCards.process(filter, items, _library, _formatLibrary, _rarities); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/DeckResource.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/DeckResource.java index cf8c6aff1..6accfca38 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/DeckResource.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/DeckResource.java @@ -121,17 +121,17 @@ public class DeckResource extends AbstractResource { result.append("
"); result.append("Adventure deck:
"); - for (CardCollection.Item item : _sortAndFilterCards.process("cardType:SITE sort:siteNumber,twilight", deckCards.getAll().values(), _library, null)) + for (CardCollection.Item item : _sortAndFilterCards.process("cardType:SITE sort:siteNumber,twilight", deckCards.getAll().values(), _library, _formatLibrary, null)) result.append(GameUtils.getFullName(_library.getLotroCardBlueprint(item.getBlueprintId())) + "
"); result.append("
"); result.append("Free Peoples Draw Deck:
"); - for (CardCollection.Item item : _sortAndFilterCards.process("side:FREE_PEOPLE sort:cardType,culture,name", deckCards.getAll().values(), _library, null)) + for (CardCollection.Item item : _sortAndFilterCards.process("side:FREE_PEOPLE sort:cardType,culture,name", deckCards.getAll().values(), _library, _formatLibrary, null)) result.append(item.getCount() + "x " + GameUtils.getFullName(_library.getLotroCardBlueprint(item.getBlueprintId())) + "
"); result.append("
"); result.append("Shadow Draw Deck:
"); - for (CardCollection.Item item : _sortAndFilterCards.process("side:SHADOW sort:cardType,culture,name", deckCards.getAll().values(), _library, null)) + for (CardCollection.Item item : _sortAndFilterCards.process("side:SHADOW sort:cardType,culture,name", deckCards.getAll().values(), _library, _formatLibrary, null)) result.append(item.getCount() + "x " + GameUtils.getFullName(_library.getLotroCardBlueprint(item.getBlueprintId())) + "
"); result.append(""); @@ -252,13 +252,13 @@ public class DeckResource extends AbstractResource { deckElem.appendChild(ring); } - for (CardItem cardItem : _sortAndFilterCards.process("sort:siteNumber,twilight", createCardItems(deck.getSites()), _library, null)) { + for (CardItem cardItem : _sortAndFilterCards.process("sort:siteNumber,twilight", createCardItems(deck.getSites()), _library, _formatLibrary, null)) { Element site = doc.createElement("site"); site.setAttribute("blueprintId", cardItem.getBlueprintId()); deckElem.appendChild(site); } - for (CardItem cardItem : _sortAndFilterCards.process("sort:cardType,culture,name", createCardItems(deck.getAdventureCards()), _library, null)) { + for (CardItem cardItem : _sortAndFilterCards.process("sort:cardType,culture,name", createCardItems(deck.getAdventureCards()), _library, _formatLibrary, null)) { Element card = doc.createElement("card"); card.setAttribute("side", _library.getLotroCardBlueprint(cardItem.getBlueprintId()).getSide().toString()); card.setAttribute("blueprintId", cardItem.getBlueprintId()); diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/MerchantResource.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/MerchantResource.java index 695fcb940..8a48847bd 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/MerchantResource.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/MerchantResource.java @@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.packs.RarityReader; import com.gempukku.lotro.cards.packs.SetRarity; import com.gempukku.lotro.collection.CollectionsManager; import com.gempukku.lotro.game.*; +import com.gempukku.lotro.game.formats.LotroFormatLibrary; import com.gempukku.lotro.merchant.MerchantException; import com.gempukku.lotro.merchant.MerchantService; import com.sun.jersey.spi.resource.Singleton; @@ -29,6 +30,8 @@ public class MerchantResource extends AbstractResource { private MerchantService _merchantService; @Context private LotroCardBlueprintLibrary _library; + @Context + private LotroFormatLibrary _formatLibrary; private Map _rarities; private SortAndFilterCards _sortAndFilterCards = new SortAndFilterCards(); @@ -86,7 +89,7 @@ public class MerchantResource extends AbstractResource { cardItems.add(item); } } - List filteredResult = _sortAndFilterCards.process(filter, cardItems, _library, _rarities); + List filteredResult = _sortAndFilterCards.process(filter, cardItems, _library, _formatLibrary, _rarities); List pageToDisplay = new ArrayList(); for (int i = start; i < start + count; i++) { diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/TournamentResource.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/TournamentResource.java index 2875e4522..8b575d3dc 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/TournamentResource.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/TournamentResource.java @@ -33,7 +33,7 @@ public class TournamentResource extends AbstractResource { @Context private TournamentService _tournamentService; @Context - private LotroFormatLibrary _lotroFormatLibrary; + private LotroFormatLibrary _formatLibrary; @Context private LotroCardBlueprintLibrary _library; @@ -55,7 +55,7 @@ public class TournamentResource extends AbstractResource { tournamentElem.setAttribute("id", tournament.getTournamentId()); tournamentElem.setAttribute("name", tournament.getTournamentName()); - tournamentElem.setAttribute("format", _lotroFormatLibrary.getFormat(tournament.getFormat()).getName()); + tournamentElem.setAttribute("format", _formatLibrary.getFormat(tournament.getFormat()).getName()); tournamentElem.setAttribute("collection", tournament.getCollectionType().getFullName()); tournamentElem.setAttribute("round", String.valueOf(tournament.getCurrentRound())); tournamentElem.setAttribute("stage", tournament.getTournamentStage().getHumanReadable()); @@ -85,7 +85,7 @@ public class TournamentResource extends AbstractResource { tournamentElem.setAttribute("id", tournament.getTournamentId()); tournamentElem.setAttribute("name", tournament.getTournamentName()); - tournamentElem.setAttribute("format", _lotroFormatLibrary.getFormat(tournament.getFormat()).getName()); + tournamentElem.setAttribute("format", _formatLibrary.getFormat(tournament.getFormat()).getName()); tournamentElem.setAttribute("collection", tournament.getCollectionType().getFullName()); tournamentElem.setAttribute("round", String.valueOf(tournament.getCurrentRound())); tournamentElem.setAttribute("stage", tournament.getTournamentStage().getHumanReadable()); @@ -119,7 +119,7 @@ public class TournamentResource extends AbstractResource { tournamentElem.setAttribute("id", tournament.getTournamentId()); tournamentElem.setAttribute("name", tournament.getTournamentName()); - tournamentElem.setAttribute("format", _lotroFormatLibrary.getFormat(tournament.getFormat()).getName()); + tournamentElem.setAttribute("format", _formatLibrary.getFormat(tournament.getFormat()).getName()); tournamentElem.setAttribute("collection", tournament.getCollectionType().getFullName()); tournamentElem.setAttribute("round", String.valueOf(tournament.getCurrentRound())); tournamentElem.setAttribute("stage", tournament.getTournamentStage().getHumanReadable()); @@ -176,17 +176,17 @@ public class TournamentResource extends AbstractResource { result.append("
"); result.append("Adventure deck:
"); - for (CardCollection.Item item : _sortAndFilterCards.process("cardType:SITE sort:siteNumber,twilight", deckCards.getAll().values(), _library, null)) + for (CardCollection.Item item : _sortAndFilterCards.process("cardType:SITE sort:siteNumber,twilight", deckCards.getAll().values(), _library, _formatLibrary, null)) result.append(GameUtils.getFullName(_library.getLotroCardBlueprint(item.getBlueprintId())) + "
"); result.append("
"); result.append("Free Peoples Draw Deck:
"); - for (CardCollection.Item item : _sortAndFilterCards.process("side:FREE_PEOPLE sort:cardType,culture,name", deckCards.getAll().values(), _library, null)) + for (CardCollection.Item item : _sortAndFilterCards.process("side:FREE_PEOPLE sort:cardType,culture,name", deckCards.getAll().values(), _library, _formatLibrary, null)) result.append(item.getCount() + "x " + GameUtils.getFullName(_library.getLotroCardBlueprint(item.getBlueprintId())) + "
"); result.append("
"); result.append("Shadow Draw Deck:
"); - for (CardCollection.Item item : _sortAndFilterCards.process("side:SHADOW sort:cardType,culture,name", deckCards.getAll().values(), _library, null)) + for (CardCollection.Item item : _sortAndFilterCards.process("side:SHADOW sort:cardType,culture,name", deckCards.getAll().values(), _library, _formatLibrary, null)) result.append(item.getCount() + "x " + GameUtils.getFullName(_library.getLotroCardBlueprint(item.getBlueprintId())) + "
"); result.append(""); diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-011/cardFilter.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-011/cardFilter.js index 09e890999..2c0f19a91 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-011/cardFilter.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-011/cardFilter.js @@ -105,15 +105,14 @@ var CardFilter = Class.extend({ this.fullFilterDiv = $("
"); this.setSelect = $("