Feat plugin stock (#196)

This commit is contained in:
Simon Lecoq
2021-03-21 17:52:05 +01:00
committed by GitHub
parent 89182c62c0
commit ed5dc9a53c
11 changed files with 330 additions and 5 deletions

View File

@@ -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}`
}

View 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:[],
},
],
},
},
],
},
},
})
}
}
}

View File

@@ -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:{