53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
|
import { area_t } from "@/lib/dimensions";
|
||
|
import convert, { Area, Length } from "convert";
|
||
|
import dayjs, { Dayjs } from "dayjs";
|
||
|
import { StyleSheet, Text, View } from "react-native";
|
||
|
|
||
|
export type AreaRugTagProps = {
|
||
|
dimensions: area_t,
|
||
|
price_per_area: {
|
||
|
price: number,
|
||
|
per: {
|
||
|
n: number,
|
||
|
u: Area,
|
||
|
}
|
||
|
},
|
||
|
date?: Dayjs
|
||
|
currencySymbol?: string
|
||
|
};
|
||
|
|
||
|
export const AreaRugTag = (props: AreaRugTagProps) => {
|
||
|
const date = props.date || dayjs();
|
||
|
const square = props.dimensions.l * props.dimensions.w;
|
||
|
const areaUnits = `square ${props.dimensions.u}`;
|
||
|
const square2 = convert(square, areaUnits as Area).to(props.price_per_area.per.u)
|
||
|
const price = (square2 / props.price_per_area.per.n) * props.price_per_area.price;
|
||
|
const sPrice = price.toLocaleString(undefined, {
|
||
|
minimumFractionDigits: 2,
|
||
|
maximumFractionDigits: 2,
|
||
|
})
|
||
|
const currencySymbol = props.currencySymbol || "$";
|
||
|
return (
|
||
|
<View style={styles.component}>
|
||
|
<Text aria-label="area rug dimensions" style={styles.dimensions}>{props.dimensions.l} x {props.dimensions.w}</Text>
|
||
|
<Text aria-label="area rug price" style={styles.price}>{currencySymbol} {sPrice}</Text>
|
||
|
<Text aria-label="area rug date" style={styles.date}>{date.format("YYYY/MM/DD")}</Text>
|
||
|
<Text aria-label="this week's color" style={styles.tagColor}>[Curent Tag Color]</Text>
|
||
|
</View>
|
||
|
)
|
||
|
};
|
||
|
|
||
|
const styles = StyleSheet.create({
|
||
|
component: {
|
||
|
paddingVertical: 100,
|
||
|
flex: 1,
|
||
|
},
|
||
|
dimensions: {
|
||
|
},
|
||
|
price: {
|
||
|
},
|
||
|
date: {
|
||
|
},
|
||
|
tagColor: {
|
||
|
},
|
||
|
})
|