import { createSearch } from 'common/string';
import { useBackend, useLocalState } from '../backend';
import { Box, Button, Collapsible, Dropdown, Flex, Input, Section } from '../components';
import { Window } from '../layouts';
import { refocusLayout } from '../layouts';
import { MiningUser } from './common/Mining';
const sortTypes = {
'Alphabetical': (a, b) => a - b,
'By availability': (a, b) => -(a.affordable - b.affordable),
'By price': (a, b) => a.price - b.price,
};
export const MiningVendor = (props, context) => {
return (
);
};
const MiningVendorItems = (props, context) => {
const { act, data } = useBackend(context);
const { has_id, id, items } = data;
// Search thingies
const [searchText, _setSearchText] = useLocalState(context, 'search', '');
const [sortOrder, _setSortOrder] = useLocalState(context, 'sort', 'Alphabetical');
const [descending, _setDescending] = useLocalState(context, 'descending', false);
const searcher = createSearch(searchText, (item) => {
return item[0];
});
let has_contents = false;
let contents = Object.entries(items).map((kv, _i) => {
let items_in_cat = Object.entries(kv[1])
.filter(searcher)
.map((kv2) => {
kv2[1].affordable = has_id && id.points >= kv2[1].price;
return kv2[1];
})
.sort(sortTypes[sortOrder]);
if (items_in_cat.length === 0) {
return;
}
if (descending) {
items_in_cat = items_in_cat.reverse();
}
has_contents = true;
return ;
});
return (
refocusLayout()}>
{has_contents ? contents : No items matching your criteria was found!}
);
};
const MiningVendorSearch = (props, context) => {
const [_searchText, setSearchText] = useLocalState(context, 'search', '');
const [_sortOrder, setSortOrder] = useLocalState(context, 'sort', '');
const [descending, setDescending] = useLocalState(context, 'descending', false);
return (
setSearchText(value)} />
setSortOrder(v)}
/>
);
};
const MiningVendorItemsCategory = (properties, context) => {
const { act, data } = useBackend(context);
const { title, items, ...rest } = properties;
return (
{items.map((item) => (
{item.name}
))}
);
};