Feat plugin stock (#196)
This commit is contained in:
@@ -28,10 +28,12 @@
|
||||
}
|
||||
|
||||
/**Formatter */
|
||||
export function format(n, {sign = false} = {}) {
|
||||
for (const {u, v} of [{u:"b", v:10**9}, {u:"m", v:10**6}, {u:"k", v:10**3}]) {
|
||||
if (n/v >= 1)
|
||||
return `${(sign)&&(n > 0) ? "+" : ""}${(n/v).toFixed(2).substr(0, 4).replace(/[.]0*$/, "")}${u}`
|
||||
export function format(n, {sign = false, unit = true} = {}) {
|
||||
if (unit) {
|
||||
for (const {u, v} of [{u:"b", v:10**9}, {u:"m", v:10**6}, {u:"k", v:10**3}]) {
|
||||
if (n/v >= 1)
|
||||
return `${(sign)&&(n > 0) ? "+" : ""}${(n/v).toFixed(2).substr(0, 4).replace(/[.]0*$/, "")}${u}`
|
||||
}
|
||||
}
|
||||
return `${(sign)&&(n > 0) ? "+" : ""}${n}`
|
||||
}
|
||||
|
||||
75
source/app/mocks/api/axios/get/yahoo.mjs
Normal file
75
source/app/mocks/api/axios/get/yahoo.mjs
Normal file
@@ -0,0 +1,75 @@
|
||||
/**Mocked data */
|
||||
export default function({faker, url, options, login = faker.internet.userName()}) {
|
||||
//Wakatime api
|
||||
if (/^https:..apidojo-yahoo-finance-v1.p.rapidapi.com.stock.v2.*$/.test(url)) {
|
||||
//Get company profile
|
||||
if (/get-profile/.test(url)) {
|
||||
console.debug(`metrics/compute/mocks > mocking yahoo finance api result > ${url}`)
|
||||
return ({
|
||||
status:200,
|
||||
data:{
|
||||
price:{
|
||||
marketCap:{
|
||||
raw:faker.random.number(1000000000),
|
||||
},
|
||||
symbol:"OCTO",
|
||||
},
|
||||
quoteType:{
|
||||
shortName:faker.company.companyName(),
|
||||
longName:faker.company.companyName(),
|
||||
exchangeTimezoneName:faker.address.timeZone(),
|
||||
symbol:"OCTO",
|
||||
},
|
||||
calendarEvents:{},
|
||||
summaryDetail:{},
|
||||
symbol:"OCTO",
|
||||
assetProfile:{
|
||||
fullTimeEmployees:faker.random.number(10000),
|
||||
city:faker.address.city(),
|
||||
country:faker.address.country(),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
//Get stock chart
|
||||
if (/get-chart/.test(url)) {
|
||||
console.debug(`metrics/compute/mocks > mocking yahoo finance api result > ${url}`)
|
||||
return ({
|
||||
status:200,
|
||||
data:{
|
||||
chart:{
|
||||
result:[
|
||||
{
|
||||
meta:{
|
||||
currency:"USD",
|
||||
symbol:"OCTO",
|
||||
regularMarketPrice:faker.random.number(10000)/100,
|
||||
chartPreviousClose:faker.random.number(10000)/100,
|
||||
previousClose:faker.random.number(10000)/100,
|
||||
},
|
||||
timestamp:new Array(1000).fill(Date.now()).map((x, i) => x+i*60000),
|
||||
indicators:{
|
||||
quote:[
|
||||
{
|
||||
close:new Array(1000).fill(null).map(_ => faker.random.number(10000)/100),
|
||||
get low() {
|
||||
return this.close
|
||||
},
|
||||
get high() {
|
||||
return this.close
|
||||
},
|
||||
get open() {
|
||||
return this.close
|
||||
},
|
||||
volume:[],
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -230,7 +230,7 @@
|
||||
favorites:distribution(7).map((value, index, array) => ({name:faker.lorem.word(), color:faker.internet.color(), value, size:faker.random.number(1000000), x:array.slice(0, index).reduce((a, b) => a + b, 0)}))
|
||||
}
|
||||
}) : null),
|
||||
//Languages
|
||||
//RSS
|
||||
...(set.plugins.enabled.rss ? ({
|
||||
rss:{
|
||||
source:faker.lorem.words(),
|
||||
@@ -242,6 +242,20 @@
|
||||
})),
|
||||
}
|
||||
}) : null),
|
||||
//Stock price
|
||||
...(set.plugins.enabled.stock ? ({
|
||||
stock:{
|
||||
chart:"(stock chart is not displayed in placeholder)",
|
||||
currency:"USD",
|
||||
price:faker.random.number(10000)/100,
|
||||
previous:faker.random.number(10000)/100,
|
||||
get delta() { return this.price-this.previous },
|
||||
symbol:options["stock.symbol"],
|
||||
company:faker.company.companyName(),
|
||||
interval:options["stock.interval"],
|
||||
duration:options["stock.duration"],
|
||||
}
|
||||
}) : null),
|
||||
//Habits
|
||||
...(set.plugins.enabled.habits ? ({
|
||||
habits:{
|
||||
|
||||
Reference in New Issue
Block a user