Compare commits
2 Commits
6ce512cac4
...
946a9afeac
| Author | SHA1 | Date | |
|---|---|---|---|
| 946a9afeac | |||
| beb5ff052f |
1615
app/package-lock.json
generated
1615
app/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,11 @@
|
||||
"start": "next start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.8.2",
|
||||
"@emotion/styled": "^11.8.1",
|
||||
"@mui/icons-material": "^5.5.0",
|
||||
"@mui/material": "^5.5.0",
|
||||
"@mui/x-data-grid": "^5.6.1",
|
||||
"next": "latest",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
|
||||
@@ -1,25 +1,63 @@
|
||||
import React from 'react'
|
||||
import ItemRow from './ItemRow'
|
||||
import { Component } from 'react'
|
||||
import { DataGrid } from '@mui/x-data-grid'
|
||||
import { Link } from '@mui/material'
|
||||
|
||||
export default class Table extends React.Component {
|
||||
export default class Table extends Component {
|
||||
constructor ({ scanResults }) {
|
||||
super()
|
||||
this.scanResults = scanResults
|
||||
this.scanResults = scanResults.map(row => ({
|
||||
...row,
|
||||
id: row._id
|
||||
}))
|
||||
this.columns = [
|
||||
{
|
||||
field: 'name',
|
||||
headerName: 'Name',
|
||||
flex: 1,
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
<Link
|
||||
target='_blank'
|
||||
href={cellValues.row.url}
|
||||
rel='noreferrer'
|
||||
>
|
||||
{cellValues.row.fullName}
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'partsPrice',
|
||||
headerName: 'Parts Price',
|
||||
flex: 1
|
||||
},
|
||||
{
|
||||
field: 'setPrice',
|
||||
headerName: 'Set Price',
|
||||
flex: 1
|
||||
},
|
||||
{
|
||||
field: 'difference',
|
||||
headerName: 'Difference',
|
||||
flex: 1
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
render () {
|
||||
return (
|
||||
<table>
|
||||
<thead />
|
||||
<tbody>
|
||||
{this.scanResults.map((scanResult) =>
|
||||
<ItemRow
|
||||
key={scanResult._id}
|
||||
scanResult={scanResult}
|
||||
<div style={{ height: '90vh', width: '100%' }}>
|
||||
<DataGrid
|
||||
rows={this.scanResults}
|
||||
columns={this.columns}
|
||||
autoPageSize
|
||||
initialState={{
|
||||
sorting: {
|
||||
sortModel: [{ field: 'difference', sort: 'desc' }]
|
||||
}
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,13 +19,18 @@ async function initDB () {
|
||||
}
|
||||
|
||||
const setPrice = await item.set.getPrice()
|
||||
if (partsPrice < setPrice) {
|
||||
models.ScanResult.findOneAndUpdate(
|
||||
{ name: item.name },
|
||||
{ partsPrice, setPrice },
|
||||
{
|
||||
fullName: item.fullName,
|
||||
url: item.set.url,
|
||||
timestamp: new Date(),
|
||||
partsPrice,
|
||||
setPrice,
|
||||
difference: setPrice - partsPrice
|
||||
},
|
||||
{ upsert: true },
|
||||
() => {}
|
||||
)
|
||||
}
|
||||
}
|
||||
})()
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
const Part = require('./Part')
|
||||
|
||||
function capitalize (string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1)
|
||||
}
|
||||
|
||||
module.exports = class Item {
|
||||
constructor (name) {
|
||||
this.name = name
|
||||
this.fullName = capitalize(name) + ' Prime'
|
||||
this.set = new Part(name, 'set')
|
||||
|
||||
this.parts = []
|
||||
|
||||
@@ -3,12 +3,13 @@ const Api = require('../api')
|
||||
module.exports = class Part {
|
||||
constructor (set, part, amount) {
|
||||
this.part = part
|
||||
this.url = `${set}_prime_${part}`
|
||||
this.urlPath = `${set}_prime_${part}`
|
||||
this.url = `https://warframe.market/items/${set}_prime_${part}`
|
||||
this.amount = amount ?? 1
|
||||
}
|
||||
|
||||
async getPrice () {
|
||||
const orders = await Api.getSortedOrders(this.url)
|
||||
const orders = await Api.getSortedOrders(this.urlPath)
|
||||
return Number(orders[0].platinum) * this.amount
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,14 @@ const mongoose = require('mongoose')
|
||||
|
||||
const scanResultSchema = new mongoose.Schema({
|
||||
name: String,
|
||||
fullName: String,
|
||||
url: String,
|
||||
partsPrice: Number,
|
||||
setPrice: Number
|
||||
setPrice: Number,
|
||||
difference: Number
|
||||
},
|
||||
{
|
||||
timestamps: true
|
||||
})
|
||||
|
||||
module.exports = mongoose.models.ScanResult || mongoose.model('ScanResult', scanResultSchema)
|
||||
|
||||
Reference in New Issue
Block a user