show anoinitment price

This commit is contained in:
Alexander Drozdov
2021-01-20 17:53:50 +02:00
parent dab572eb3f
commit 2b72def6e7
4 changed files with 526 additions and 45 deletions
+414
View File
@@ -0,0 +1,414 @@
{
"oils": [
"Clear Oil",
"Sepia Oil",
"Amber Oil",
"Verdant Oil",
"Teal Oil",
"Azure Oil",
"Indigo Oil",
"Violet Oil",
"Crimson Oil",
"Black Oil",
"Opalescent Oil",
"Silver Oil",
"Golden Oil"
],
"recipes": {
"6": [0, 5, 9],
"529": [0, 2, 5],
"544": [1, 6, 10],
"570": [4, 4, 10],
"861": [3, 7, 9],
"1006": [1, 1, 10],
"1325": [4, 12, 12],
"1340": [5, 9, 12],
"1382": [3, 3, 3],
"1405": [0, 5, 8],
"1568": [2, 10, 10],
"2225": [0, 0, 10],
"2550": [3, 3, 5],
"2715": [2, 2, 3],
"2959": [2, 4, 5],
"3309": [1, 2, 10],
"3452": [3, 10, 12],
"4177": [11, 11, 12],
"4207": [6, 10, 10],
"4481": [3, 5, 11],
"4833": [8, 10, 10],
"4940": [1, 2, 9],
"5126": [3, 7, 7],
"5289": [1, 3, 5],
"5430": [1, 1, 8],
"5456": [0, 2, 2],
"5624": [9, 12, 12],
"5823": [2, 8, 9],
"6233": [0, 3, 8],
"6237": [2, 9, 9],
"6289": [2, 8, 12],
"6615": [0, 0, 11],
"6770": [0, 4, 9],
"6799": [10, 12, 12],
"6967": [3, 5, 9],
"7069": [0, 6, 10],
"7085": [0, 2, 7],
"7136": [4, 9, 10],
"7263": [0, 2, 12],
"7440": [0, 2, 6],
"7555": [9, 10, 10],
"7688": [0, 3, 12],
"7918": [7, 7, 7],
"8001": [0, 9, 9],
"8135": [0, 0, 7],
"8458": [4, 8, 10],
"8833": [8, 10, 12],
"8920": [0, 4, 11],
"9015": [5, 8, 10],
"9055": [5, 10, 10],
"9194": [7, 7, 11],
"9261": [9, 9, 9],
"9432": [1, 7, 9],
"9535": [0, 3, 11],
"9567": [5, 7, 8],
"9788": [2, 8, 8],
"9864": [0, 4, 12],
"10016": [2, 3, 5],
"10115": [0, 5, 5],
"10153": [0, 0, 4],
"10511": [8, 8, 10],
"10542": [0, 1, 4],
"10835": [1, 4, 5],
"11420": [0, 8, 9],
"11645": [5, 7, 12],
"11730": [0, 9, 12],
"11784": [2, 4, 7],
"11820": [6, 12, 12],
"11924": [3, 5, 12],
"12143": [3, 4, 12],
"12702": [2, 2, 2],
"12795": [3, 3, 10],
"12809": [0, 1, 10],
"12878": [3, 8, 10],
"13164": [1, 4, 9],
"13922": [5, 5, 10],
"14001": [6, 6, 8],
"14606": [3, 7, 8],
"14665": [2, 2, 10],
"14813": [2, 7, 9],
"15027": [0, 0, 1],
"15046": [1, 7, 8],
"15085": [2, 5, 9],
"15290": [6, 11, 11],
"15344": [0, 1, 7],
"15400": [10, 11, 11],
"15437": [2, 6, 11],
"15614": [7, 9, 10],
"15711": [0, 3, 10],
"15842": [3, 8, 9],
"15852": [2, 11, 12],
"16236": [0, 2, 8],
"16243": [1, 3, 3],
"16246": [5, 12, 12],
"16703": [0, 9, 10],
"17171": [3, 5, 8],
"17608": [2, 3, 7],
"18025": [1, 2, 2],
"18174": [4, 4, 4],
"18703": [7, 7, 9],
"18707": [3, 4, 11],
"18769": [1, 7, 12],
"18865": [1, 7, 10],
"19069": [7, 11, 11],
"19103": [3, 9, 9],
"19144": [3, 4, 5],
"19506": [0, 3, 3],
"19730": [0, 6, 9],
"19858": [4, 10, 11],
"19897": [0, 8, 11],
"20528": [3, 11, 11],
"20832": [2, 4, 4],
"20835": [0, 2, 10],
"21228": [9, 10, 11],
"21297": [3, 3, 11],
"21330": [4, 4, 12],
"21389": [5, 8, 11],
"21413": [0, 3, 9],
"21435": [0, 0, 5],
"21460": [4, 11, 11],
"21602": [1, 2, 11],
"21634": [2, 4, 12],
"21958": [4, 9, 11],
"21973": [1, 3, 4],
"22356": [7, 9, 11],
"22535": [12, 12, 12],
"22702": [5, 9, 10],
"22972": [4, 4, 8],
"23038": [5, 5, 5],
"23066": [8, 9, 12],
"23690": [0, 2, 3],
"24050": [8, 8, 8],
"24067": [2, 6, 12],
"24133": [5, 8, 12],
"24256": [0, 1, 5],
"24324": [3, 5, 10],
"24362": [0, 3, 7],
"24383": [4, 4, 9],
"24721": [4, 9, 9],
"24858": [4, 6, 8],
"25058": [5, 10, 11],
"25178": [2, 11, 11],
"25367": [0, 1, 11],
"25409": [7, 8, 11],
"25411": [8, 11, 11],
"25439": [6, 6, 9],
"25456": [5, 8, 9],
"25738": [1, 6, 8],
"25970": [0, 3, 6],
"26023": [0, 4, 7],
"26096": [3, 4, 8],
"26294": [5, 5, 11],
"26557": [4, 7, 8],
"26620": [8, 9, 9],
"26866": [5, 5, 9],
"26960": [4, 6, 9],
"27119": [10, 11, 12],
"27137": [1, 9, 9],
"27163": [2, 10, 12],
"27190": [2, 2, 5],
"27203": [1, 8, 12],
"27301": [0, 3, 5],
"27308": [5, 9, 9],
"27611": [3, 8, 11],
"27788": [10, 10, 11],
"27929": [1, 4, 4],
"28503": [1, 3, 11],
"28754": [9, 10, 12],
"29049": [2, 4, 11],
"29381": [3, 10, 10],
"29861": [2, 5, 5],
"30160": [1, 1, 3],
"30225": [1, 1, 9],
"30302": [3, 4, 6],
"30439": [0, 0, 12],
"30471": [4, 8, 9],
"30693": [3, 10, 11],
"31033": [0, 3, 4],
"31257": [1, 11, 12],
"31359": [0, 7, 11],
"31508": [7, 7, 8],
"31513": [6, 8, 10],
"32059": [2, 3, 10],
"32176": [1, 8, 10],
"32227": [1, 9, 10],
"32245": [1, 1, 1],
"32345": [0, 0, 0],
"32455": [1, 8, 9],
"32932": [11, 11, 11],
"33082": [3, 4, 7],
"33287": [2, 4, 10],
"33435": [5, 5, 8],
"33545": [5, 8, 8],
"33582": [3, 5, 7],
"33718": [4, 8, 12],
"33725": [9, 9, 12],
"33777": [4, 4, 11],
"33903": [1, 3, 9],
"34009": [1, 10, 11],
"34173": [8, 9, 11],
"34506": [5, 11, 12],
"34591": [6, 6, 11],
"34601": [1, 1, 2],
"34661": [7, 8, 9],
"34666": [1, 3, 10],
"34973": [2, 9, 12],
"35233": [6, 9, 12],
"35436": [2, 5, 7],
"35663": [0, 5, 10],
"35685": [4, 5, 8],
"35894": [3, 3, 9],
"35958": [1, 9, 12],
"36281": [5, 7, 11],
"36490": [0, 7, 8],
"36687": [0, 10, 10],
"36736": [4, 6, 7],
"36859": [4, 4, 5],
"36874": [0, 0, 2],
"36915": [4, 5, 7],
"36949": [8, 8, 11],
"37078": [1, 2, 3],
"37326": [9, 9, 11],
"37403": [2, 6, 9],
"37504": [2, 7, 7],
"37647": [7, 10, 12],
"38246": [1, 1, 5],
"38516": [1, 1, 4],
"38706": [9, 9, 10],
"38849": [2, 5, 11],
"38922": [1, 2, 12],
"39530": [0, 11, 12],
"39657": [0, 7, 7],
"39743": [4, 7, 10],
"39761": [0, 2, 11],
"39986": [8, 9, 10],
"40645": [3, 5, 5],
"40743": [1, 9, 11],
"40849": [0, 7, 12],
"41119": [1, 7, 11],
"41137": [2, 7, 12],
"41307": [3, 9, 12],
"41472": [9, 11, 11],
"41476": [4, 4, 7],
"41595": [1, 6, 11],
"41989": [3, 11, 12],
"42009": [0, 12, 12],
"42041": [3, 9, 11],
"42443": [5, 11, 11],
"42649": [1, 5, 9],
"42686": [1, 2, 5],
"42720": [1, 3, 7],
"42795": [3, 8, 8],
"42804": [3, 4, 4],
"42917": [2, 4, 8],
"43385": [1, 4, 11],
"43689": [1, 1, 12],
"44102": [1, 4, 7],
"44103": [2, 3, 9],
"44207": [0, 1, 9],
"44347": [2, 2, 9],
"44562": [0, 5, 11],
"44788": [1, 1, 7],
"44824": [4, 5, 10],
"44955": [3, 7, 10],
"44988": [1, 11, 11],
"45067": [2, 2, 4],
"45317": [1, 8, 8],
"45329": [6, 8, 9],
"45608": [0, 0, 8],
"46408": [0, 4, 5],
"46471": [6, 6, 6],
"46842": [5, 9, 11],
"46904": [0, 11, 11],
"46965": [0, 4, 4],
"47065": [5, 10, 12],
"47306": [2, 7, 10],
"47471": [0, 10, 11],
"47484": [2, 3, 4],
"47743": [3, 3, 8],
"48298": [3, 3, 12],
"48438": [7, 10, 10],
"48556": [1, 12, 12],
"48614": [2, 9, 11],
"48698": [8, 11, 12],
"48807": [1, 10, 12],
"48823": [1, 8, 11],
"49254": [0, 8, 10],
"49318": [0, 4, 10],
"49379": [7, 7, 10],
"49416": [5, 7, 9],
"49445": [4, 6, 10],
"49459": [3, 7, 11],
"49538": [2, 4, 9],
"49621": [0, 7, 9],
"49772": [2, 5, 8],
"49969": [5, 7, 7],
"50029": [3, 12, 12],
"50197": [0, 1, 3],
"50338": [5, 7, 10],
"50690": [1, 2, 6],
"50858": [1, 5, 10],
"51108": [7, 9, 12],
"51212": [1, 2, 8],
"51440": [0, 8, 12],
"51559": [5, 5, 7],
"51748": [5, 5, 12],
"51881": [1, 3, 8],
"52031": [7, 9, 9],
"52090": [2, 9, 10],
"52157": [4, 7, 12],
"52230": [1, 2, 4],
"52282": [8, 12, 12],
"52714": [0, 0, 3],
"53013": [0, 1, 12],
"53042": [0, 2, 9],
"53114": [9, 11, 12],
"53118": [10, 10, 12],
"53493": [0, 0, 9],
"53573": [8, 8, 12],
"53757": [1, 2, 7],
"53759": [0, 5, 12],
"53802": [8, 8, 9],
"54142": [4, 5, 9],
"54268": [0, 7, 10],
"54629": [8, 10, 11],
"54694": [7, 8, 8],
"54713": [0, 6, 11],
"54776": [0, 10, 12],
"54791": [1, 5, 5],
"55114": [2, 7, 8],
"55380": [1, 5, 8],
"55485": [11, 12, 12],
"55772": [3, 9, 10],
"56029": [0, 1, 1],
"56094": [4, 10, 10],
"56207": [4, 9, 12],
"56276": [1, 4, 12],
"56359": [4, 5, 5],
"56648": [2, 2, 12],
"56716": [1, 5, 12],
"57006": [2, 12, 12],
"57199": [1, 1, 11],
"57839": [1, 5, 11],
"57900": [2, 8, 10],
"58032": [6, 7, 10],
"58198": [7, 8, 12],
"58218": [0, 9, 11],
"58449": [7, 7, 12],
"58831": [3, 7, 12],
"58921": [2, 3, 12],
"59151": [1, 3, 12],
"59556": [0, 5, 7],
"59605": [4, 7, 7],
"59766": [2, 2, 11],
"59866": [1, 5, 7],
"60002": [3, 3, 4],
"60031": [2, 2, 7],
"60180": [0, 1, 2],
"60501": [4, 5, 12],
"60619": [0, 1, 8],
"60737": [3, 4, 10],
"61039": [3, 6, 10],
"61198": [7, 11, 12],
"61308": [2, 5, 10],
"61689": [2, 8, 11],
"61981": [2, 5, 12],
"61982": [1, 7, 7],
"62094": [2, 7, 11],
"62577": [4, 11, 12],
"62596": [2, 10, 11],
"63033": [6, 7, 8],
"63150": [0, 2, 4],
"63207": [2, 3, 11],
"63251": [4, 7, 11],
"63422": [4, 10, 12],
"63635": [2, 3, 8],
"63727": [4, 5, 11],
"63921": [1, 4, 8],
"63933": [3, 3, 7],
"63944": [1, 10, 10],
"63976": [0, 8, 8],
"64077": [0, 4, 8],
"64217": [7, 12, 12],
"64355": [6, 7, 9],
"64395": [4, 8, 11],
"64882": [7, 8, 10],
"65053": [4, 7, 9],
"65093": [2, 2, 8],
"65097": [7, 10, 11],
"65108": [10, 10, 10],
"65210": [3, 8, 12],
"65224": [2, 3, 3],
"65273": [3, 4, 9],
"65308": [1, 4, 10],
"65502": [4, 8, 8]
}
}
+7
View File
@@ -41,3 +41,10 @@ export interface UniqueItem {
bounds: Array<{ min: number, max: number }>
}>
}
export interface BlightRecipes {
oils: string[]
recipes: {
[statValue: number]: number[]
}
}
+50 -45
View File
@@ -1,47 +1,48 @@
<template>
<div class="py-2 border-b border-gray-700">
<div class="pb-px flex items-baseline justify-between">
<button class="flex items-baseline text-left min-w-0" @click="toggleFilter" type="button">
<i class="w-5" :class="{
'far fa-square text-gray-500': filter.disabled,
'fas fa-check-square': !filter.disabled
}"></i>
<div class="search-text flex-1 mr-1 relative flex min-w-0" style="line-height: 1rem;">
<span class="truncate whitespace-pre-wrap"><item-modifier-text :text="t(filter.text)" :roll="filter.roll" /></span>
<span class="search-text-full whitespace-pre-wrap"><item-modifier-text :text="t(filter.text)" :roll="filter.roll" /></span>
<div class="py-2 border-b border-gray-700 flex">
<div class="flex flex-col min-w-0 flex-1">
<div class="pb-px flex items-baseline justify-between">
<button class="flex items-baseline text-left min-w-0" @click="toggleFilter" type="button">
<i class="w-5" :class="{
'far fa-square text-gray-500': filter.disabled,
'fas fa-check-square': !filter.disabled
}"></i>
<div class="search-text flex-1 mr-1 relative flex min-w-0" style="line-height: 1rem;">
<span class="truncate whitespace-pre-wrap"><item-modifier-text :text="t(filter.text)" :roll="filter.roll" /></span>
<span class="search-text-full whitespace-pre-wrap"><item-modifier-text :text="t(filter.text)" :roll="filter.roll" /></span>
</div>
</button>
<div class="flex">
<ui-input-debounced class="search-num-input rounded-tl mr-px" :placeholder="t('min')" :min="filter.boundMin" :max="filter.boundMax" step="any" type="number" :class="{ 'rounded-bl': !showQ20Notice }"
v-if="showMinmaxInput" ref="inputMin"
v-model.number="filter.min" @focus="inputFocus($event, 'min')" :delay="0" />
<ui-input-debounced class="search-num-input rounded-tr" :placeholder="t('max')" :min="filter.boundMin" :max="filter.boundMax" step="any" type="number" :class="{ 'rounded-br': !showQ20Notice }"
v-if="showMinmaxInput" ref="inputMax"
v-model.number="filter.max" @focus="inputFocus($event, 'max')" :delay="0" />
</div>
</button>
</div>
<div class="flex">
<ui-input-debounced class="search-num-input rounded-tl mr-px" :placeholder="t('min')" :min="filter.boundMin" :max="filter.boundMax" step="any" type="number" :class="{ 'rounded-bl': !showQ20Notice }"
v-if="showMinmaxInput" ref="inputMin"
v-model.number="filter.min" @focus="inputFocus($event, 'min')" :delay="0" />
<ui-input-debounced class="search-num-input rounded-tr" :placeholder="t('max')" :min="filter.boundMin" :max="filter.boundMax" step="any" type="number" :class="{ 'rounded-br': !showQ20Notice }"
v-if="showMinmaxInput" ref="inputMax"
v-model.number="filter.max" @focus="inputFocus($event, 'max')" :delay="0" />
</div>
</div>
<div class="flex">
<div class="w-5 flex items-start">
<ui-popover v-if="filter.hidden" tag-name="div" class="flex" placement="right-start" boundary="#price-window">
<template #target>
<span class="text-xs leading-none text-gray-600 cursor-pointer">
<i class="fas fa-eye-slash" :class="{ 'faa-ring': !filter.disabled }"></i>
</span>
</template>
<template #content>
<div style="max-width: 18.5rem;">{{ t(filter.hidden) }}</div>
</template>
</ui-popover>
</div>
<div class="flex-1 flex items-start">
<span v-if="showTypeTags"
class="text-xs leading-none px-1 rounded" :class="`mod-type-${filter.type}`">{{ t(filter.type) }}</span>
<span v-if="filter.variant"
class="text-xs leading-none px-1 rounded mod-type-variant">{{ t('variant') }}</span>
</div>
<div class="flex-1 mr-4">
<div style="width: 12.5rem;">
<ui-slider v-if="filter.boundMin !== undefined"
<div class="w-5 flex items-start">
<ui-popover v-if="filter.hidden" tag-name="div" class="flex" placement="right-start" boundary="#price-window">
<template #target>
<span class="text-xs leading-none text-gray-600 cursor-pointer">
<i class="fas fa-eye-slash" :class="{ 'faa-ring': !filter.disabled }"></i>
</span>
</template>
<template #content>
<div style="max-width: 18.5rem;">{{ t(filter.hidden) }}</div>
</template>
</ui-popover>
</div>
<div class="flex-1 flex items-start">
<span v-if="showTypeTags"
class="text-xs leading-none px-1 rounded" :class="`mod-type-${filter.type}`">{{ t(filter.type) }}</span>
<span v-if="filter.variant"
class="text-xs leading-none px-1 rounded mod-type-variant">{{ t('variant') }}</span>
</div>
<div v-if="filter.boundMin !== undefined"
class="mr-4" style="width: 12.5rem;">
<ui-slider
class="search-slider-rail" style="padding: 0;" :dotSize="[0, 1.25*fontSize]" :height="1.25*fontSize"
:railStyle="{ background: 'transparent' }" :processStyle="{ background: '#cbd5e0', borderRadius: 0 }"
drag-on-click lazy adsorb :enable-cross="false"
@@ -65,10 +66,13 @@
</template>
</ui-slider>
</div>
<div v-if="showQ20Notice"
class="bg-gray-700 text-gray-500 text-center rounded-b" style="width: calc(2*3rem + 1px)">{{ t('Q {0}%', [Math.max(20, item.quality || 0)]) }}</div>
<div v-else style="width: calc(2*3rem + 1px)"></div>
</div>
<div v-if="showQ20Notice"
class="bg-gray-700 text-gray-500 text-center rounded-b" style="width: calc(2*3rem + 1px)">{{ t('Q {0}%', [Math.max(20, item.quality || 0)]) }}</div>
<div v-else style="width: calc(2*3rem + 1px)"></div>
</div>
<div class="flex flex-col">
<modifier-anointment :filter="filter" />
</div>
</div>
</template>
@@ -77,12 +81,13 @@
import { defineComponent, PropType, computed, ref, nextTick, ComponentPublicInstance } from 'vue'
import { useI18n } from 'vue-i18n'
import ItemModifierText from '../../ui/ItemModifierText.vue'
import ModifierAnointment from './FilterModifierAnointment.vue'
import { Config } from '@/web/Config'
import { ParsedItem } from '@/parser'
import { StatFilter } from './interfaces'
export default defineComponent({
components: { ItemModifierText },
components: { ItemModifierText, ModifierAnointment },
emits: ['submit'],
props: {
filter: {
@@ -0,0 +1,55 @@
<template>
<div v-if="result"
class="flex items-center">
<img v-for="icon in result.icons" class="w-8 h-8" :src="icon">
<span><i class="fas fa-arrow-right text-gray-600 px-2"></i>{{ result.price }}</span>
</div>
</template>
<script lang="ts">
import { defineComponent, PropType, computed } from 'vue'
import { StatFilter } from './interfaces'
import { autoCurrency, displayRounding, findByDetailsId, ItemInfo } from '@/web/background/Prices'
import { nameToDetailsId } from '../trends/getDetailsId'
import { BlightRecipes } from '@/assets/data/interfaces'
const RECIPES = require('@/assets/data/blight-recipes.json') as BlightRecipes
export default defineComponent({
props: {
filter: {
type: Object as PropType<StatFilter>,
required: true
}
},
setup (props) {
const result = computed(() => {
if (props.filter.statRef !== 'Allocates #') return null
const roll = props.filter.roll!
const oils = (RECIPES.recipes[roll] ?? []).map(idx => RECIPES.oils[idx])
if (!oils.length) return null
const prices = oils
.map(nameToDetailsId)
.map(findByDetailsId)
.filter(Boolean) as ItemInfo[]
if (prices.length !== oils.length) return null
const totalChaos = prices.reduce((t, p) => t + p.receive.chaosValue, 0)
const total = autoCurrency(totalChaos, 'c')
return {
icons: prices.map(p => p.icon),
price: `${displayRounding(total.val)} ${total.curr === 'c' ? 'chaos' : 'exa'}`
}
})
return {
result
}
}
})
</script>