From a082e88b5d4d7889915f8279f0ed02bbe6ef8f1c Mon Sep 17 00:00:00 2001 From: Negue Date: Sat, 27 Dec 2014 23:26:30 +0100 Subject: [PATCH] Filter Array only once and one time binding - closes #4429 --- public/js/controllers/inventoryCtrl.js | 18 ++++++++++++++++++ views/options/inventory/inventory.jade | 6 +++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/public/js/controllers/inventoryCtrl.js b/public/js/controllers/inventoryCtrl.js index 32511b60ef..5e71b5bf2e 100644 --- a/public/js/controllers/inventoryCtrl.js +++ b/public/js/controllers/inventoryCtrl.js @@ -162,5 +162,23 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', '$window', 'User', $rootScope.selectedQuest = item; $rootScope.openModal('buyQuest', {controller:'InventoryCtrl'}); } + + $scope.getSeasonalShopArray = function(set){ + var flatGearArray = _.toArray(Content.gear.flat); + + var filteredArray = _.where(flatGearArray, {index: set}); + + return filteredArray; + }; + + $scope.getSeasonalShopQuests = function(set){ + var questArray = _.toArray(Content.quests); + + var filteredArray = _.filter(questArray, function(q){ + return q.key == "evilsanta" || q.key == "evilsanta2"; + }); + + return filteredArray; + }; } ]); diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index e0428e11a2..e3fc8a077c 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -31,14 +31,14 @@ script(type='text/ng-template', id='partials/options.inventory.seasonalshop.html .popover-content p!=env.t('seasonalShopText') li.customize-menu.inventory-gear - menu.pets-menu(label='{{::label}}', ng-repeat='(set,label) in {candycane:env.t("candycaneSet"), ski:env.t("skiSet"), snowflake:env.t("snowflakeSet"), yeti:env.t("yetiSet")}') - div(ng-repeat='item in Content.gear.flat | toArray | where:{index:set}' ng-class="{transparent: user.items.gear.owned[item.key]}") + menu.pets-menu(label='{{::label}}', ng-repeat='(set,label) in ::{candycane:env.t("candycaneSet"), ski:env.t("skiSet"), snowflake:env.t("snowflakeSet"), yeti:env.t("yetiSet")}') + div(ng-repeat='item in ::getSeasonalShopArray(set)' ng-class="{transparent: user.items.gear.owned[item.key]}") button.customize-option(popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', ng-click='purchase(item.type,item)', class='shop_{{::item.key}}') .center | {{((item.specialClass == "wizard") && (item.type == "weapon")) + 1}}  span.Pet_Currency_Gem1x.inline-gems menu.pets-menu(label=env.t('quests')) - div(ng-repeat='quest in Content.quests', ng-if='(quest.key == "evilsanta") || (quest.key == "evilsanta2")') + div(ng-repeat='quest in ::getSeasonalShopQuests()') button.customize-option(popover="{{::quest.previous && !user.achievements.quests[quest.previous] ? env.t('scrollsPre') : quest.notes() | htmlDecode}}", popover-title='{{::quest.text()}}', popover-trigger='mouseenter', popover-placement='right', ng-click='buyQuest(quest.key)', class='inventory_quest_scroll', ng-class='::{locked: quest.previous && !user.achievements.quests[quest.previous]}') p | {{::quest.value}}