Compare commits
4 Commits
e505212731
...
02d644fe96
| Author | SHA1 | Date |
|---|---|---|
|
|
02d644fe96 | |
|
|
1dd289404c | |
|
|
3a38a1a146 | |
|
|
0a5f6f69c6 |
|
|
@ -6,39 +6,39 @@
|
||||||
"static/js/3.dbc9ff13.chunk.js": "/web/static/js/3.dbc9ff13.chunk.js",
|
"static/js/3.dbc9ff13.chunk.js": "/web/static/js/3.dbc9ff13.chunk.js",
|
||||||
"static/js/4.e31ce94a.chunk.js": "/web/static/js/4.e31ce94a.chunk.js",
|
"static/js/4.e31ce94a.chunk.js": "/web/static/js/4.e31ce94a.chunk.js",
|
||||||
"main.css": "/web/static/css/main.c42e041b.chunk.css",
|
"main.css": "/web/static/css/main.c42e041b.chunk.css",
|
||||||
"main.js": "/web/static/js/main.f50e7271.chunk.js",
|
"main.js": "/web/static/js/main.64c69f15.chunk.js",
|
||||||
"runtime-main.js": "/web/static/js/runtime-main.642bec3c.js",
|
"runtime-main.js": "/web/static/js/runtime-main.3875665a.js",
|
||||||
"static/css/7.b9d59b33.chunk.css": "/web/static/css/7.b9d59b33.chunk.css",
|
"static/css/7.b9d59b33.chunk.css": "/web/static/css/7.b9d59b33.chunk.css",
|
||||||
"static/js/7.062bc73c.chunk.js": "/web/static/js/7.062bc73c.chunk.js",
|
"static/js/7.062bc73c.chunk.js": "/web/static/js/7.062bc73c.chunk.js",
|
||||||
"static/js/8.0c73dfa2.chunk.js": "/web/static/js/8.0c73dfa2.chunk.js",
|
"static/js/8.0c73dfa2.chunk.js": "/web/static/js/8.0c73dfa2.chunk.js",
|
||||||
"static/css/9.3964a2f9.chunk.css": "/web/static/css/9.3964a2f9.chunk.css",
|
"static/css/9.3964a2f9.chunk.css": "/web/static/css/9.3964a2f9.chunk.css",
|
||||||
"static/js/9.e60f5287.chunk.js": "/web/static/js/9.e60f5287.chunk.js",
|
"static/js/9.48aab184.chunk.js": "/web/static/js/9.48aab184.chunk.js",
|
||||||
"static/js/10.e7a7ba9e.chunk.js": "/web/static/js/10.e7a7ba9e.chunk.js",
|
"static/js/10.e7a7ba9e.chunk.js": "/web/static/js/10.e7a7ba9e.chunk.js",
|
||||||
"static/css/11.f0a90ddf.chunk.css": "/web/static/css/11.f0a90ddf.chunk.css",
|
"static/css/11.f0a90ddf.chunk.css": "/web/static/css/11.f0a90ddf.chunk.css",
|
||||||
"static/js/11.0d6f207c.chunk.js": "/web/static/js/11.0d6f207c.chunk.js",
|
"static/js/11.662b16c3.chunk.js": "/web/static/js/11.662b16c3.chunk.js",
|
||||||
"static/js/12.46e48fa4.chunk.js": "/web/static/js/12.46e48fa4.chunk.js",
|
"static/js/12.46e48fa4.chunk.js": "/web/static/js/12.46e48fa4.chunk.js",
|
||||||
"static/js/13.9179a6ab.chunk.js": "/web/static/js/13.9179a6ab.chunk.js",
|
"static/js/13.ce360fe7.chunk.js": "/web/static/js/13.ce360fe7.chunk.js",
|
||||||
"static/css/14.d211b268.chunk.css": "/web/static/css/14.d211b268.chunk.css",
|
"static/css/14.d211b268.chunk.css": "/web/static/css/14.d211b268.chunk.css",
|
||||||
"static/js/14.9153ca51.chunk.js": "/web/static/js/14.9153ca51.chunk.js",
|
"static/js/14.df70c7b9.chunk.js": "/web/static/js/14.df70c7b9.chunk.js",
|
||||||
"static/css/15.dca2368b.chunk.css": "/web/static/css/15.dca2368b.chunk.css",
|
"static/css/15.dca2368b.chunk.css": "/web/static/css/15.dca2368b.chunk.css",
|
||||||
"static/js/15.ec6515ee.chunk.js": "/web/static/js/15.ec6515ee.chunk.js",
|
"static/js/15.a5c0b7e2.chunk.js": "/web/static/js/15.a5c0b7e2.chunk.js",
|
||||||
"static/css/16.bed844be.chunk.css": "/web/static/css/16.bed844be.chunk.css",
|
"static/css/16.bed844be.chunk.css": "/web/static/css/16.bed844be.chunk.css",
|
||||||
"static/js/16.b3d47f7e.chunk.js": "/web/static/js/16.b3d47f7e.chunk.js",
|
"static/js/16.abba3c5d.chunk.js": "/web/static/js/16.abba3c5d.chunk.js",
|
||||||
"static/js/17.e7b1a82e.chunk.js": "/web/static/js/17.e7b1a82e.chunk.js",
|
"static/js/17.4351876c.chunk.js": "/web/static/js/17.4351876c.chunk.js",
|
||||||
"static/css/18.0e433876.chunk.css": "/web/static/css/18.0e433876.chunk.css",
|
"static/css/18.0e433876.chunk.css": "/web/static/css/18.0e433876.chunk.css",
|
||||||
"static/js/18.1248bb5d.chunk.js": "/web/static/js/18.1248bb5d.chunk.js",
|
"static/js/18.1248bb5d.chunk.js": "/web/static/js/18.1248bb5d.chunk.js",
|
||||||
"static/js/19.494f900a.chunk.js": "/web/static/js/19.494f900a.chunk.js",
|
"static/js/19.ead40a00.chunk.js": "/web/static/js/19.ead40a00.chunk.js",
|
||||||
"static/js/20.a258893a.chunk.js": "/web/static/js/20.a258893a.chunk.js",
|
"static/js/20.21bbb459.chunk.js": "/web/static/js/20.21bbb459.chunk.js",
|
||||||
"index.html": "/web/index.html",
|
"index.html": "/web/index.html",
|
||||||
"static/js/10.e7a7ba9e.chunk.js.LICENSE.txt": "/web/static/js/10.e7a7ba9e.chunk.js.LICENSE.txt",
|
"static/js/10.e7a7ba9e.chunk.js.LICENSE.txt": "/web/static/js/10.e7a7ba9e.chunk.js.LICENSE.txt",
|
||||||
"static/js/11.0d6f207c.chunk.js.LICENSE.txt": "/web/static/js/11.0d6f207c.chunk.js.LICENSE.txt",
|
"static/js/11.662b16c3.chunk.js.LICENSE.txt": "/web/static/js/11.662b16c3.chunk.js.LICENSE.txt",
|
||||||
"static/js/8.0c73dfa2.chunk.js.LICENSE.txt": "/web/static/js/8.0c73dfa2.chunk.js.LICENSE.txt",
|
"static/js/8.0c73dfa2.chunk.js.LICENSE.txt": "/web/static/js/8.0c73dfa2.chunk.js.LICENSE.txt",
|
||||||
"static/js/9.e60f5287.chunk.js.LICENSE.txt": "/web/static/js/9.e60f5287.chunk.js.LICENSE.txt"
|
"static/js/9.48aab184.chunk.js.LICENSE.txt": "/web/static/js/9.48aab184.chunk.js.LICENSE.txt"
|
||||||
},
|
},
|
||||||
"entrypoints": [
|
"entrypoints": [
|
||||||
"static/js/runtime-main.642bec3c.js",
|
"static/js/runtime-main.3875665a.js",
|
||||||
"static/js/8.0c73dfa2.chunk.js",
|
"static/js/8.0c73dfa2.chunk.js",
|
||||||
"static/css/main.c42e041b.chunk.css",
|
"static/css/main.c42e041b.chunk.css",
|
||||||
"static/js/main.f50e7271.chunk.js"
|
"static/js/main.64c69f15.chunk.js"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -1 +1 @@
|
||||||
<!doctype html><html lang="zh"><head><meta charset="utf-8"/><link rel="icon" href="/web/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/web/logo192.png"/><link rel="manifest" href="/web/manifest.json"/><title>我的账本</title><link href="/web/static/css/main.c42e041b.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,o,u=t[0],f=t[1],i=t[2],d=0,s=[];d<u.length;d++)o=u[d],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&s.push(a[o][0]),a[o]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(l&&l(t);s.length;)s.shift()();return c.push.apply(c,i||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var f=r[o];0!==a[f]&&(n=!1)}n&&(c.splice(t--,1),e=u(u.s=r[0]))}return e}var n={},o={6:0},a={6:0},c=[];function u(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,u),r.l=!0,r.exports}u.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{7:1,9:1,11:1,14:1,15:1,16:1,18:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",4:"31d6cfe0",7:"b9d59b33",9:"3964a2f9",10:"31d6cfe0",11:"f0a90ddf",12:"31d6cfe0",13:"31d6cfe0",14:"d211b268",15:"dca2368b",16:"bed844be",17:"31d6cfe0",18:"0e433876",19:"31d6cfe0",20:"31d6cfe0"}[e]+".chunk.css",a=u.p+n,c=document.getElementsByTagName("link"),f=0;f<c.length;f++){var i=(l=c[f]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(i===n||i===a))return t()}var d=document.getElementsByTagName("style");for(f=0;f<d.length;f++){var l;if((i=(l=d[f]).getAttribute("data-href"))===n||i===a)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],s.parentNode.removeChild(s),r(c)},s.href=a,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var c,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{0:"435e7a2e",1:"9dae1a02",2:"3dca96b0",3:"dbc9ff13",4:"e31ce94a",7:"062bc73c",9:"e60f5287",10:"e7a7ba9e",11:"0d6f207c",12:"46e48fa4",13:"9179a6ab",14:"9153ca51",15:"ec6515ee",16:"b3d47f7e",17:"e7b1a82e",18:"1248bb5d",19:"494f900a",20:"a258893a"}[e]+".chunk.js"}(e);var i=new Error;c=function(t){f.onerror=f.onload=null,clearTimeout(d);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}a[e]=void 0}};var d=setTimeout((function(){c({type:"timeout",target:f})}),12e4);f.onerror=f.onload=c,document.head.appendChild(f)}return Promise.all(t)},u.m=e,u.c=n,u.d=function(e,t,r){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(u.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)u.d(r,n,function(t){return e[t]}.bind(null,n));return r},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="/web/",u.oe=function(e){throw console.error(e),e};var f=this["webpackJsonpbeancount-web"]=this["webpackJsonpbeancount-web"]||[],i=f.push.bind(f);f.push=t,f=f.slice();for(var d=0;d<f.length;d++)t(f[d]);var l=i;r()}([])</script><script src="/web/static/js/8.0c73dfa2.chunk.js"></script><script src="/web/static/js/main.f50e7271.chunk.js"></script></body></html>
|
<!doctype html><html lang="zh"><head><meta charset="utf-8"/><link rel="icon" href="/web/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="theme-color" content="#000000"/><meta name="description" content="beancount-gs website"/><link rel="apple-touch-icon" href="/web/logo192.png"/><link rel="manifest" href="/web/manifest.json"/><title>beancount-gs</title><link href="/web/static/css/main.c42e041b.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,o,u=t[0],f=t[1],i=t[2],d=0,s=[];d<u.length;d++)o=u[d],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&s.push(a[o][0]),a[o]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(l&&l(t);s.length;)s.shift()();return c.push.apply(c,i||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var f=r[o];0!==a[f]&&(n=!1)}n&&(c.splice(t--,1),e=u(u.s=r[0]))}return e}var n={},o={6:0},a={6:0},c=[];function u(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,u),r.l=!0,r.exports}u.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{7:1,9:1,11:1,14:1,15:1,16:1,18:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",4:"31d6cfe0",7:"b9d59b33",9:"3964a2f9",10:"31d6cfe0",11:"f0a90ddf",12:"31d6cfe0",13:"31d6cfe0",14:"d211b268",15:"dca2368b",16:"bed844be",17:"31d6cfe0",18:"0e433876",19:"31d6cfe0",20:"31d6cfe0"}[e]+".chunk.css",a=u.p+n,c=document.getElementsByTagName("link"),f=0;f<c.length;f++){var i=(l=c[f]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(i===n||i===a))return t()}var d=document.getElementsByTagName("style");for(f=0;f<d.length;f++){var l;if((i=(l=d[f]).getAttribute("data-href"))===n||i===a)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],s.parentNode.removeChild(s),r(c)},s.href=a,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var c,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{0:"435e7a2e",1:"9dae1a02",2:"3dca96b0",3:"dbc9ff13",4:"e31ce94a",7:"062bc73c",9:"48aab184",10:"e7a7ba9e",11:"662b16c3",12:"46e48fa4",13:"ce360fe7",14:"df70c7b9",15:"a5c0b7e2",16:"abba3c5d",17:"4351876c",18:"1248bb5d",19:"ead40a00",20:"21bbb459"}[e]+".chunk.js"}(e);var i=new Error;c=function(t){f.onerror=f.onload=null,clearTimeout(d);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}a[e]=void 0}};var d=setTimeout((function(){c({type:"timeout",target:f})}),12e4);f.onerror=f.onload=c,document.head.appendChild(f)}return Promise.all(t)},u.m=e,u.c=n,u.d=function(e,t,r){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(u.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)u.d(r,n,function(t){return e[t]}.bind(null,n));return r},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="/web/",u.oe=function(e){throw console.error(e),e};var f=this["webpackJsonpbeancount-web"]=this["webpackJsonpbeancount-web"]||[],i=f.push.bind(f);f.push=t,f=f.slice();for(var d=0;d<f.length;d++)t(f[d]);var l=i;r()}([])</script><script src="/web/static/js/8.0c73dfa2.chunk.js"></script><script src="/web/static/js/main.64c69f15.chunk.js"></script></body></html>
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
!function(e){function t(t){for(var n,o,u=t[0],f=t[1],i=t[2],d=0,s=[];d<u.length;d++)o=u[d],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&s.push(a[o][0]),a[o]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(l&&l(t);s.length;)s.shift()();return c.push.apply(c,i||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var f=r[o];0!==a[f]&&(n=!1)}n&&(c.splice(t--,1),e=u(u.s=r[0]))}return e}var n={},o={6:0},a={6:0},c=[];function u(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,u),r.l=!0,r.exports}u.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{7:1,9:1,11:1,14:1,15:1,16:1,18:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",4:"31d6cfe0",7:"b9d59b33",9:"3964a2f9",10:"31d6cfe0",11:"f0a90ddf",12:"31d6cfe0",13:"31d6cfe0",14:"d211b268",15:"dca2368b",16:"bed844be",17:"31d6cfe0",18:"0e433876",19:"31d6cfe0",20:"31d6cfe0"}[e]+".chunk.css",a=u.p+n,c=document.getElementsByTagName("link"),f=0;f<c.length;f++){var i=(l=c[f]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(i===n||i===a))return t()}var d=document.getElementsByTagName("style");for(f=0;f<d.length;f++){var l;if((i=(l=d[f]).getAttribute("data-href"))===n||i===a)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],s.parentNode.removeChild(s),r(c)},s.href=a,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var c,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{0:"435e7a2e",1:"9dae1a02",2:"3dca96b0",3:"dbc9ff13",4:"e31ce94a",7:"062bc73c",9:"e60f5287",10:"e7a7ba9e",11:"0d6f207c",12:"46e48fa4",13:"9179a6ab",14:"9153ca51",15:"ec6515ee",16:"b3d47f7e",17:"e7b1a82e",18:"1248bb5d",19:"494f900a",20:"a258893a"}[e]+".chunk.js"}(e);var i=new Error;c=function(t){f.onerror=f.onload=null,clearTimeout(d);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}a[e]=void 0}};var d=setTimeout((function(){c({type:"timeout",target:f})}),12e4);f.onerror=f.onload=c,document.head.appendChild(f)}return Promise.all(t)},u.m=e,u.c=n,u.d=function(e,t,r){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},u.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(u.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)u.d(r,n,function(t){return e[t]}.bind(null,n));return r},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="/web/",u.oe=function(e){throw console.error(e),e};var f=this["webpackJsonpbeancount-web"]=this["webpackJsonpbeancount-web"]||[],i=f.push.bind(f);f.push=t,f=f.slice();for(var d=0;d<f.length;d++)t(f[d]);var l=i;r()}([]);
|
!function(e){function t(t){for(var n,o,u=t[0],f=t[1],i=t[2],d=0,s=[];d<u.length;d++)o=u[d],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&s.push(a[o][0]),a[o]=0;for(n in f)Object.prototype.hasOwnProperty.call(f,n)&&(e[n]=f[n]);for(l&&l(t);s.length;)s.shift()();return c.push.apply(c,i||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,o=1;o<r.length;o++){var f=r[o];0!==a[f]&&(n=!1)}n&&(c.splice(t--,1),e=u(u.s=r[0]))}return e}var n={},o={6:0},a={6:0},c=[];function u(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,u),r.l=!0,r.exports}u.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{7:1,9:1,11:1,14:1,15:1,16:1,18:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"31d6cfe0",3:"31d6cfe0",4:"31d6cfe0",7:"b9d59b33",9:"3964a2f9",10:"31d6cfe0",11:"f0a90ddf",12:"31d6cfe0",13:"31d6cfe0",14:"d211b268",15:"dca2368b",16:"bed844be",17:"31d6cfe0",18:"0e433876",19:"31d6cfe0",20:"31d6cfe0"}[e]+".chunk.css",a=u.p+n,c=document.getElementsByTagName("link"),f=0;f<c.length;f++){var i=(l=c[f]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(i===n||i===a))return t()}var d=document.getElementsByTagName("style");for(f=0;f<d.length;f++){var l;if((i=(l=d[f]).getAttribute("data-href"))===n||i===a)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var n=t&&t.target&&t.target.src||a,c=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");c.code="CSS_CHUNK_LOAD_FAILED",c.request=n,delete o[e],s.parentNode.removeChild(s),r(c)},s.href=a,document.getElementsByTagName("head")[0].appendChild(s)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var c,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=function(e){return u.p+"static/js/"+({}[e]||e)+"."+{0:"435e7a2e",1:"9dae1a02",2:"3dca96b0",3:"dbc9ff13",4:"e31ce94a",7:"062bc73c",9:"48aab184",10:"e7a7ba9e",11:"662b16c3",12:"46e48fa4",13:"ce360fe7",14:"df70c7b9",15:"a5c0b7e2",16:"abba3c5d",17:"4351876c",18:"1248bb5d",19:"ead40a00",20:"21bbb459"}[e]+".chunk.js"}(e);var i=new Error;c=function(t){f.onerror=f.onload=null,clearTimeout(d);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,r[1](i)}a[e]=void 0}};var d=setTimeout((function(){c({type:"timeout",target:f})}),12e4);f.onerror=f.onload=c,document.head.appendChild(f)}return Promise.all(t)},u.m=e,u.c=n,u.d=function(e,t,r){u.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},u.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.t=function(e,t){if(1&t&&(e=u(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(u.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)u.d(r,n,function(t){return e[t]}.bind(null,n));return r},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.p="/web/",u.oe=function(e){throw console.error(e),e};var f=this["webpackJsonpbeancount-web"]=this["webpackJsonpbeancount-web"]||[],i=f.push.bind(f);f.push=t,f=f.slice();for(var d=0;d<f.length;d++)t(f[d]);var l=i;r()}([]);
|
||||||
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
|
@ -104,13 +105,33 @@ func BQLQueryListByCustomSelect(ledgerConfig *Config, selectBql string, queryPar
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func BeanReportAllPrices(ledgerConfig *Config) string {
|
func BeanReportAllPrices(ledgerConfig *Config) []CommodityPrice {
|
||||||
beanFilePath := GetLedgerPriceFilePath(ledgerConfig.DataPath)
|
beanFilePath := GetLedgerPriceFilePath(ledgerConfig.DataPath)
|
||||||
|
var (
|
||||||
LogInfo(ledgerConfig.Mail, "bean-report "+beanFilePath+" all_prices")
|
command string
|
||||||
cmd := exec.Command("bean-report", beanFilePath, "all_prices")
|
useBeanReport = checkCommandExists("bean-report")
|
||||||
|
)
|
||||||
|
// `bean-report` had been deprecated since https://github.com/beancount/beancount/commit/a7c4f14f083de63e8d4e5a8d3664209daf95e1ec,
|
||||||
|
// we use `bean-query` instead. Here we add a check to use `bean-report` if `bean-query` is not installed for better compatibility.
|
||||||
|
if useBeanReport {
|
||||||
|
command = fmt.Sprintf("bean-report %s all_prices", beanFilePath)
|
||||||
|
} else {
|
||||||
|
// 'price' column works as a column placeholder to be consistent with the output of `bean-report`.
|
||||||
|
command = fmt.Sprintf(`bean-query %s "SELECT date, 'price', currency, price FROM account ~ 'Assets' WHERE price is not NULL"`, beanFilePath)
|
||||||
|
}
|
||||||
|
LogInfo(ledgerConfig.Mail, command)
|
||||||
|
re := regexp.MustCompile(`"([^"]*)"|(\S+)`)
|
||||||
|
cmds := re.FindAllString(command, -1)
|
||||||
|
cmd := exec.Command(cmds[0], cmds[1:]...)
|
||||||
output, _ := cmd.Output()
|
output, _ := cmd.Output()
|
||||||
return string(output)
|
outputStr := string(output)
|
||||||
|
lines := strings.Split(outputStr, "\n")
|
||||||
|
LogInfo(ledgerConfig.Mail, outputStr)
|
||||||
|
// Remove the first two lines of the output since they are the header and separator with BQL output.
|
||||||
|
if !useBeanReport && len(lines) > 2 {
|
||||||
|
lines = lines[2:]
|
||||||
|
}
|
||||||
|
return newCommodityPriceListFromString(lines)
|
||||||
}
|
}
|
||||||
|
|
||||||
func bqlRawQuery(ledgerConfig *Config, selectBql string, queryParamsPtr *QueryParams, queryResultPtr interface{}) (string, error) {
|
func bqlRawQuery(ledgerConfig *Config, selectBql string, queryParamsPtr *QueryParams, queryResultPtr interface{}) (string, error) {
|
||||||
|
|
|
||||||
|
|
@ -484,11 +484,8 @@ type CommodityPrice struct {
|
||||||
Value string `json:"value"`
|
Value string `json:"value"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func RefreshLedgerCurrency(ledgerConfig *Config) []LedgerCurrency {
|
func newCommodityPriceListFromString(lines []string) []CommodityPrice {
|
||||||
// 查询货币获取当前汇率
|
commodityPriceList := make([]CommodityPrice, 0, len(lines))
|
||||||
output := BeanReportAllPrices(ledgerConfig)
|
|
||||||
statsPricesResultList := make([]CommodityPrice, 0)
|
|
||||||
lines := strings.Split(output, "\n")
|
|
||||||
// foreach lines
|
// foreach lines
|
||||||
for _, line := range lines {
|
for _, line := range lines {
|
||||||
if strings.Trim(line, " ") == "" {
|
if strings.Trim(line, " ") == "" {
|
||||||
|
|
@ -496,14 +493,19 @@ func RefreshLedgerCurrency(ledgerConfig *Config) []LedgerCurrency {
|
||||||
}
|
}
|
||||||
// split line by " "
|
// split line by " "
|
||||||
words := strings.Fields(line)
|
words := strings.Fields(line)
|
||||||
statsPricesResultList = append(statsPricesResultList, CommodityPrice{
|
commodityPriceList = append(commodityPriceList, CommodityPrice{
|
||||||
Date: words[0],
|
Date: words[0],
|
||||||
Commodity: words[2],
|
Commodity: words[2],
|
||||||
Value: words[3],
|
Value: words[3],
|
||||||
Currency: words[4],
|
Currency: words[4],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
return commodityPriceList
|
||||||
|
}
|
||||||
|
|
||||||
|
func RefreshLedgerCurrency(ledgerConfig *Config) []LedgerCurrency {
|
||||||
|
// 查询货币获取当前汇率
|
||||||
|
statsPricesResultList := BeanReportAllPrices(ledgerConfig)
|
||||||
// statsPricesResultList 转为 map
|
// statsPricesResultList 转为 map
|
||||||
existCurrencyMap := make(map[string]CommodityPrice)
|
existCurrencyMap := make(map[string]CommodityPrice)
|
||||||
for _, statsPricesResult := range statsPricesResultList {
|
for _, statsPricesResult := range statsPricesResultList {
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,16 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net"
|
"net"
|
||||||
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func checkCommandExists(command string) bool {
|
||||||
|
cmd := exec.Command(command, "--version")
|
||||||
|
_, err := cmd.Output()
|
||||||
|
return err == nil
|
||||||
|
}
|
||||||
|
|
||||||
func GetIpAddress() string {
|
func GetIpAddress() string {
|
||||||
addrs, _ := net.InterfaceAddrs()
|
addrs, _ := net.InterfaceAddrs()
|
||||||
for _, value := range addrs {
|
for _, value := range addrs {
|
||||||
|
|
|
||||||
|
|
@ -480,33 +480,6 @@ func StatsPayee(c *gin.Context) {
|
||||||
OK(c, result)
|
OK(c, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
type StatsPricesResult struct {
|
|
||||||
Date string `json:"date"`
|
|
||||||
Commodity string `json:"commodity"`
|
|
||||||
Currency string `json:"operatingCurrency"`
|
|
||||||
Value string `json:"value"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func StatsCommodityPrice(c *gin.Context) {
|
func StatsCommodityPrice(c *gin.Context) {
|
||||||
ledgerConfig := script.GetLedgerConfigFromContext(c)
|
OK(c, script.BeanReportAllPrices(script.GetLedgerConfigFromContext(c)))
|
||||||
output := script.BeanReportAllPrices(ledgerConfig)
|
|
||||||
script.LogInfo(ledgerConfig.Mail, output)
|
|
||||||
|
|
||||||
statsPricesResultList := make([]StatsPricesResult, 0)
|
|
||||||
lines := strings.Split(output, "\n")
|
|
||||||
// foreach lines
|
|
||||||
for _, line := range lines {
|
|
||||||
if strings.Trim(line, " ") == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
// split line by " "
|
|
||||||
words := strings.Fields(line)
|
|
||||||
statsPricesResultList = append(statsPricesResultList, StatsPricesResult{
|
|
||||||
Date: words[0],
|
|
||||||
Commodity: words[2],
|
|
||||||
Value: words[3],
|
|
||||||
Currency: words[4],
|
|
||||||
})
|
|
||||||
}
|
|
||||||
OK(c, statsPricesResultList)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,5 @@ package service
|
||||||
import "github.com/gin-gonic/gin"
|
import "github.com/gin-gonic/gin"
|
||||||
|
|
||||||
func QueryVersion(c *gin.Context) {
|
func QueryVersion(c *gin.Context) {
|
||||||
OK(c, "v1.1.16")
|
OK(c, "v1.1.17")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue