feat: add calculation methods

This commit is contained in:
sirlolcat 2022-06-03 05:01:28 +04:30
parent c0f15cf713
commit 8c090978fd
2 changed files with 56 additions and 18 deletions

View File

@ -4,12 +4,12 @@ import Item from './Item';
function App() {
return (
<div className="App">
<Item name="+5 Dexterity Vest" sellIn={10} quality={20} isConjured={true} />
<Item name="+5 Dexterity Vest" sellIn={10} quality={20} isConjured={false} />
<Item name="Aged Brie" sellIn={2} quality={0} isConjured={false} />
<Item name="Elixir of the Mongoose" sellIn={5} quality={7} isConjured={false} />
<Item name="Sulfuras, Hand of Ragnaros" sellIn={0} quality={80} isConjured={false} />
<Item name="Sulfuras, Hand of Ragnaros" sellIn={1} quality={80} isConjured={false} />
<Item name="Backstage passes to a TAFKAL80ETC concert" sellIn={15} quality={20} isConjured={false} />
<Item name="Conjured Mana Cake" sellIn={3} quality={6} isConjured={false} />
<Item name="Conjured Mana Cake" sellIn={3} quality={6} isConjured={true} />
</div>
);
}

View File

@ -1,22 +1,60 @@
import { useEffect, useState } from "react";
function calculateQuality(quality: number, isConjured: boolean): number {
const calculatedQuality = quality;
const calculatedBias = isConjured ? 2 : 1;
function calculateQuality(name:string, quality: number, sellIn: number,isConjured: boolean): number {
const sellInAmount = sellIn;
if(calculatedQuality > 50) {
let calculatedQuality = quality;
let degradeRate = 1;
let qualityIdentifier = 1;
if(sellInAmount <= 0) {
return calculatedQuality;
}
if(name.includes("Sulfuras")) {
return 80;
};
if(calculatedQuality >= 50) {
return 50;
} else if(calculatedQuality < 0) {
} else if(calculatedQuality <= 0) {
return 0;
}
if(isConjured) {
degradeRate = 2;
}
return calculatedQuality * calculatedBias;
if(name.includes('Aged Brie')) {
qualityIdentifier = -1;
}
if(name.includes('Backstage passes')) {
if(sellInAmount <= 10 && sellInAmount > 5) {
qualityIdentifier = -3;
} else if(sellInAmount <= 5 && sellInAmount > 0) {
qualityIdentifier = -2;
} else if(sellInAmount <= 0) {
qualityIdentifier = 0;
degradeRate = 0;
}
}
return degradeRate * calculatedQuality - qualityIdentifier;
};
function calculateSellIn(sellIn: number): number {
return sellIn - 1;
function calculateSellIn(name:string, sellIn: number): number {
let sellInAmount = sellIn;
if(name.includes("Sulfuras")) {
return sellInAmount;
};
if(sellInAmount <= 0) {
return 0;
}
return sellIn - 1;
};
type ItemProps = {
@ -49,17 +87,17 @@ const Item = (props: ItemProps) => {
return (
<div>
<p color={isConjured ? 'Red' : 'Green'}>The name {name}</p>
<p color={isConjured ? 'Red' : 'Green'}>{name}</p>
<p>The quality {quality}</p>
<p>{quality}</p>
<p>The sellIn {sellIn}</p>
<p>{sellIn}</p>
<br></br>
<button onClick={() => {
setSellIn(calculateSellIn(sellIn));
setQuality(calculateQuality(quality, isConjured));
setQuality(calculateQuality(name, sellIn, quality, isConjured));
setSellIn(calculateSellIn(name, sellIn));
}}>
Next Day
Purchase
</button>
<br></br>
</div>