-
-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathMMM-Jast.js
More file actions
13 lines (10 loc) · 6.23 KB
/
Copy pathMMM-Jast.js
File metadata and controls
13 lines (10 loc) · 6.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
/*! *****************************************************************************
mmm-jast
Version 2.10.6
A minimalistic stock ticker based on Yahoo's finance API for the MagicMirror² platform.
Please submit bugs at https://github.com/jalibu/MMM-Jast/issues
(c) Jan.Litzenburger@gmail.com
Licence: MIT
This file is auto-generated. Do not edit.
***************************************************************************** */
!function(e){"use strict";function t(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var r=t(e);const a={getCurrentValueStyle:e=>({style:e.showCurrency?"currency":"decimal",useGrouping:e.useGrouping,currencyDisplay:e.currencyStyle,minimumFractionDigits:e.numberDecimalsValues<=8?e.numberDecimalsValues:8,maximumFractionDigits:e.numberDecimalsValues<=8?e.numberDecimalsValues:8}),getChangeValueStyle:e=>({style:e.showChangeValueCurrency?"currency":"decimal",useGrouping:e.useGrouping,currencyDisplay:e.currencyStyle,minimumFractionDigits:e.numberDecimalsValues<=8?e.numberDecimalsValues:8,maximumFractionDigits:e.numberDecimalsValues<=8?e.numberDecimalsValues:8}),getPercentStyle:e=>({style:"percent",useGrouping:e.useGrouping,minimumFractionDigits:e.numberDecimalsPercentages<=8?e.numberDecimalsPercentages:8}),getNumberOfDisplayedStocks:(e,t)=>t.showHiddenStocks?e.length:e.filter(e=>!e.meta.hidden).length,getStockChange:e=>e.price?.regularMarketChange??0,getStockPerformance:e=>e.meta.purchasePrice?a.getCurrentValue(e)-e.meta.purchasePrice:0,getStockPerformanceAsString:(e,t)=>a.getStockPerformance(e).toLocaleString(t.locale,Object.assign(a.getChangeValueStyle(t),{currency:e.price?.currency??"USD"})),getStockPerformanceSumAsString:(e,t)=>(a.getStockPerformance(e)*(e.meta.quantity??0)).toLocaleString(t.locale,Object.assign(a.getChangeValueStyle(t),{currency:e.price?.currency??"USD"})),getStockPerformancePercentAsString:(e,t)=>(e.meta.purchasePrice?(a.getCurrentValue(e)-e.meta.purchasePrice)/e.meta.purchasePrice:0).toLocaleString(t.locale,a.getPercentStyle(t)),getStockChangePercent:e=>e.price?.regularMarketChangePercent??0,getCurrentValue:e=>e.price?.regularMarketPrice??0,getStockChangeAsString:(e,t)=>a.getStockChange(e).toLocaleString(t.locale,Object.assign(a.getChangeValueStyle(t),{currency:e.price?.currency??"USD"})),getStockChangePercentAsString:(e,t)=>a.getStockChangePercent(e).toLocaleString(t.locale,a.getPercentStyle(t)),getCurrentValueAsString:(e,t)=>a.getCurrentValue(e).toLocaleString(t.locale,Object.assign(a.getCurrentValueStyle(t),{currency:e.price?.currency??"USD"})),getPurchasePriceAsString:(e,t)=>(e.meta.purchasePrice??0).toLocaleString(t.locale,Object.assign(a.getCurrentValueStyle(t),{currency:e.price?.currency??"USD"})),getStockName:e=>e.meta.name||e.price?.longName||"",getPortfolioValueAsString:(e,t)=>e.value.toLocaleString(t.locale,Object.assign(a.getCurrentValueStyle(t),{currency:e.currency})),getPortfolioPerformanceValueAsString:(e,t)=>(e.value-e.purchaseValue).toLocaleString(t.locale,Object.assign(a.getCurrentValueStyle(t),{currency:e.currency})),getPortfolioPerformancePercentAsString:(e,t)=>((e.value-e.purchaseValue)/e.purchaseValue).toLocaleString(t.locale,a.getPercentStyle(t)),getPortfolioChangeAsString:(e,t)=>(e.value-e.oldValue).toLocaleString(t.locale,Object.assign(a.getCurrentValueStyle(t),{currency:e.currency})),getPortfolioChangePercentAsString:(e,t)=>((e.value-e.oldValue)/e.oldValue).toLocaleString(t.locale,a.getPercentStyle(t)),getPortfolio(e,t){const a=[];for(const c of e)try{const e=t.stocks?.find(e=>e.symbol===c.meta?.symbol);if(e?.quantity&&c.price){const t=(c.price.regularMarketPrice??0)*e.quantity,r=((c.price.regularMarketPrice??0)-(c.price.regularMarketChange??0))*e.quantity,n=a.find(e=>e.currency===c.price?.currency),o=e.purchasePrice?e.purchasePrice*e.quantity:t*e.quantity;n?(n.value+=t,n.oldValue+=r,n.purchaseValue+=o):a.push({value:t,purchaseValue:o,oldValue:r,currency:c.price.currency??""})}}catch(e){r.warn("There was a problem calculating the detpot growth",e)}return a}};function c(e,t){const r=new Date(e),a=e=>String(e).padStart(2,"0");return t.replace("HH",a(r.getHours())).replace("mm",a(r.getMinutes())).replace("ss",a(r.getSeconds())).replace("DD",a(r.getDate())).replace("MM",a(r.getMonth()+1)).replace("YYYY",String(r.getFullYear()))}Module.register("MMM-Jast",{defaults:{currencyStyle:"code",fadeSpeedInSeconds:3.5,lastUpdateFormat:"HH:mm",locale:config.locale||"en-GB",maxChangeAge:864e5,maxWidth:"100%",numberDecimalsPercentages:1,numberDecimalsValues:2,displayMode:"vertical",showColors:!0,showCurrency:!0,showChangePercent:!0,showChangeValue:!1,showChangeValueCurrency:!1,showHiddenStocks:!1,showLastUpdate:!1,showPortfolioGrowth:!1,showPortfolioGrowthPercent:!1,showPortfolioValue:!1,showPortfolioPerformanceValue:!1,showPortfolioPerformancePercent:!1,showStockPerformanceValue:!1,showStockPerformanceValueSum:!1,showStockPerformancePercent:!1,updateIntervalInSeconds:600,useGrouping:!1,virtualHorizontalMultiplier:2,stocksPerPage:2,stocks:[{name:"BASF",symbol:"BAS.DE",quantity:10,purchasePrice:70.4},{name:"SAP",symbol:"SAP.DE",quantity:15,purchasePrice:90.3},{name:"Henkel",symbol:"HEN3.DE",hidden:!0},{name:"Bitcoin",symbol:"BTC-EUR"}]},getStyles:()=>["MMM-Jast.css"],getTranslations:()=>({en:"translations/en.json",de:"translations/de.json"}),getTemplate:()=>"templates/MMM-Jast.njk",getTemplateData(){return{config:this.config,stocks:this.state?.stocks,lastUpdate:c(this.state?.lastUpdate??Date.now(),this.config.lastUpdateFormat),utils:a}},start(){this.config.scroll&&(r.warn("MMM-JAST config property 'scroll' is deprecated. Please use displayMode instead."),this.config.displayMode=this.config.scroll),this.loadData(),this.scheduleUpdate(),this.updateDom()},scheduleUpdate(){this.config.updateIntervalInSeconds=this.config.updateIntervalInSeconds<120?120:this.config.updateIntervalInSeconds,setInterval(()=>{this.loadData()},1e3*this.config.updateIntervalInSeconds)},loadData(){this.sendSocketNotification(`JAST_STOCKS_REQUEST-${this.identifier}`,this.config)},socketNotificationReceived(e,t){e===`JAST_STOCKS_RESPONSE-${this.identifier}`&&(this.state=t,this.updateDom(),r.debug("Stock data received:",t))}})}(Log);