mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Expand new layout code.
This commit is contained in:
parent
5cc1369191
commit
c8f1e4bbd7
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Http\Controllers;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\TransactionCurrency;
|
||||
@ -95,6 +96,30 @@ class JavascriptController extends Controller
|
||||
->header('Content-Type', 'text/javascript');
|
||||
}
|
||||
|
||||
/**
|
||||
* Bit of a hack but OK.
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function variablesV2(Request $request): Response
|
||||
{
|
||||
/** @var Carbon $start */
|
||||
$start = clone session('start', Carbon::now()->startOfMonth());
|
||||
/** @var Carbon $end */
|
||||
$end = clone session('end', Carbon::now()->endOfMonth());
|
||||
|
||||
$data = [
|
||||
'start' => $start->format('Y-m-d'),
|
||||
'end' => $end->format('Y-m-d'),
|
||||
];
|
||||
|
||||
return response()
|
||||
->view('javascript.variables', $data)
|
||||
->header('Content-Type', 'text/javascript');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show some common variables to be used in scripts.
|
||||
*
|
||||
|
@ -13,8 +13,8 @@ rm -rf ../public/v2/css
|
||||
npm run prod
|
||||
|
||||
# move to right directory
|
||||
mv public/js ../public/v2
|
||||
mv public/css ../public/v2
|
||||
# mv public/js ../public/v2
|
||||
# mv public/css ../public/v2
|
||||
|
||||
# also copy fonts
|
||||
cp -r fonts ../public
|
||||
|
@ -1,11 +1,7 @@
|
||||
{
|
||||
"/public/js/manifest.js": "/public/js/manifest.js",
|
||||
"/public/js/manifest.js.map": "/public/js/manifest.js.map",
|
||||
"/public/js/vendor.js": "/public/js/vendor.js",
|
||||
"/public/js/vendor.js.map": "/public/js/vendor.js.map",
|
||||
"/public/js/dashboard.js": "/public/js/dashboard.js",
|
||||
"/public/css/app.css": "/public/css/app.css",
|
||||
"/public/js/dashboard.js.map": "/public/js/dashboard.js.map",
|
||||
"/public/js/manifest.js": "/public/js/manifest.js",
|
||||
"/public/js/register.js": "/public/js/register.js",
|
||||
"/public/js/register.js.map": "/public/js/register.js.map"
|
||||
"/public/js/vendor.js": "/public/js/vendor.js"
|
||||
}
|
||||
|
40
frontend/package-lock.json
generated
40
frontend/package-lock.json
generated
@ -2242,6 +2242,32 @@
|
||||
"integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
|
||||
"dev": true
|
||||
},
|
||||
"chart.js": {
|
||||
"version": "2.9.3",
|
||||
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.3.tgz",
|
||||
"integrity": "sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw==",
|
||||
"requires": {
|
||||
"chartjs-color": "^2.1.0",
|
||||
"moment": "^2.10.2"
|
||||
}
|
||||
},
|
||||
"chartjs-color": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz",
|
||||
"integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
|
||||
"requires": {
|
||||
"chartjs-color-string": "^0.6.0",
|
||||
"color-convert": "^1.9.3"
|
||||
}
|
||||
},
|
||||
"chartjs-color-string": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
|
||||
"integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
|
||||
"requires": {
|
||||
"color-name": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"check-types": {
|
||||
"version": "8.0.3",
|
||||
"resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz",
|
||||
@ -2436,7 +2462,6 @@
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
@ -2444,8 +2469,7 @@
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"dev": true
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||
},
|
||||
"color-string": {
|
||||
"version": "1.5.3",
|
||||
@ -5814,6 +5838,11 @@
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.26.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz",
|
||||
"integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw=="
|
||||
},
|
||||
"move-concurrently": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
|
||||
@ -9281,6 +9310,11 @@
|
||||
"integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ==",
|
||||
"dev": true
|
||||
},
|
||||
"vue-chartjs": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-3.5.0.tgz",
|
||||
"integrity": "sha512-yWNhG3B6g6lvYqNInP0WaDWNZG/SNb6XnltkjR0wYC5pmLm6jvdiotj8er7Mui8qkJGfLZe6ULjrZdHWjegAUg=="
|
||||
},
|
||||
"vue-hot-reload-api": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
|
||||
|
@ -26,10 +26,12 @@
|
||||
"@fortawesome/fontawesome-free": "^5.13.0",
|
||||
"@popperjs/core": "^2.4.2",
|
||||
"bootstrap": "^4.5.0",
|
||||
"chart.js": "^2.9.3",
|
||||
"icheck-bootstrap": "^3.0.1",
|
||||
"jquery": "^3.5.1",
|
||||
"jquery-ui": "^1.12.1",
|
||||
"overlayscrollbars": "^1.12.0",
|
||||
"popper.js": "^1.16.1"
|
||||
"popper.js": "^1.16.1",
|
||||
"vue-chartjs": "^3.5.0"
|
||||
}
|
||||
}
|
||||
|
36167
frontend/public/css/app.css
Normal file
36167
frontend/public/css/app.css
Normal file
File diff suppressed because one or more lines are too long
854
frontend/public/js/dashboard.js
Normal file
854
frontend/public/js/dashboard.js
Normal file
File diff suppressed because one or more lines are too long
5
frontend/public/js/dashboard.js.LICENSE.txt
Normal file
5
frontend/public/js/dashboard.js.LICENSE.txt
Normal file
@ -0,0 +1,5 @@
|
||||
/*!
|
||||
* AdminLTE v3.0.5 (https://adminlte.io)
|
||||
* Copyright 2014-2020 Colorlib <http://colorlib.com>
|
||||
* Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
|
||||
*/
|
1
frontend/public/js/dashboard.js.map
Normal file
1
frontend/public/js/dashboard.js.map
Normal file
File diff suppressed because one or more lines are too long
154
frontend/public/js/manifest.js
Normal file
154
frontend/public/js/manifest.js
Normal file
@ -0,0 +1,154 @@
|
||||
/******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // install a JSONP callback for chunk loading
|
||||
/******/ function webpackJsonpCallback(data) {
|
||||
/******/ var chunkIds = data[0];
|
||||
/******/ var moreModules = data[1];
|
||||
/******/ var executeModules = data[2];
|
||||
/******/
|
||||
/******/ // add "moreModules" to the modules object,
|
||||
/******/ // then flag all "chunkIds" as loaded and fire callback
|
||||
/******/ var moduleId, chunkId, i = 0, resolves = [];
|
||||
/******/ for(;i < chunkIds.length; i++) {
|
||||
/******/ chunkId = chunkIds[i];
|
||||
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
|
||||
/******/ resolves.push(installedChunks[chunkId][0]);
|
||||
/******/ }
|
||||
/******/ installedChunks[chunkId] = 0;
|
||||
/******/ }
|
||||
/******/ for(moduleId in moreModules) {
|
||||
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
|
||||
/******/ modules[moduleId] = moreModules[moduleId];
|
||||
/******/ }
|
||||
/******/ }
|
||||
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
|
||||
/******/
|
||||
/******/ while(resolves.length) {
|
||||
/******/ resolves.shift()();
|
||||
/******/ }
|
||||
/******/
|
||||
/******/ // add entry modules from loaded chunk to deferred list
|
||||
/******/ deferredModules.push.apply(deferredModules, executeModules || []);
|
||||
/******/
|
||||
/******/ // run deferred modules when all chunks ready
|
||||
/******/ return checkDeferredModules();
|
||||
/******/ };
|
||||
/******/ function checkDeferredModules() {
|
||||
/******/ var result;
|
||||
/******/ for(var i = 0; i < deferredModules.length; i++) {
|
||||
/******/ var deferredModule = deferredModules[i];
|
||||
/******/ var fulfilled = true;
|
||||
/******/ for(var j = 1; j < deferredModule.length; j++) {
|
||||
/******/ var depId = deferredModule[j];
|
||||
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
|
||||
/******/ }
|
||||
/******/ if(fulfilled) {
|
||||
/******/ deferredModules.splice(i--, 1);
|
||||
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
|
||||
/******/ }
|
||||
/******/ }
|
||||
/******/
|
||||
/******/ return result;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // object to store loaded and loading chunks
|
||||
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
|
||||
/******/ // Promise = chunk loading, 0 = chunk loaded
|
||||
/******/ var installedChunks = {
|
||||
/******/ "/public/js/manifest": 0
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ var deferredModules = [];
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/
|
||||
/******/ // Check if module is in cache
|
||||
/******/ if(installedModules[moduleId]) {
|
||||
/******/ return installedModules[moduleId].exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = installedModules[moduleId] = {
|
||||
/******/ i: moduleId,
|
||||
/******/ l: false,
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.l = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ __webpack_require__.m = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ __webpack_require__.c = installedModules;
|
||||
/******/
|
||||
/******/ // define getter function for harmony exports
|
||||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // define __esModule on exports
|
||||
/******/ __webpack_require__.r = function(exports) {
|
||||
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
||||
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
||||
/******/ }
|
||||
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // create a fake namespace object
|
||||
/******/ // mode & 1: value is a module id, require it
|
||||
/******/ // mode & 2: merge all properties of value into the ns
|
||||
/******/ // mode & 4: return value when already ns object
|
||||
/******/ // mode & 8|1: behave like require
|
||||
/******/ __webpack_require__.t = function(value, mode) {
|
||||
/******/ if(mode & 1) value = __webpack_require__(value);
|
||||
/******/ if(mode & 8) return value;
|
||||
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
||||
/******/ var ns = Object.create(null);
|
||||
/******/ __webpack_require__.r(ns);
|
||||
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
||||
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
||||
/******/ return ns;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = function(module) {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ function getDefault() { return module['default']; } :
|
||||
/******/ function getModuleExports() { return module; };
|
||||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Object.prototype.hasOwnProperty.call
|
||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||
/******/
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ __webpack_require__.p = "/";
|
||||
/******/
|
||||
/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
|
||||
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
|
||||
/******/ jsonpArray.push = webpackJsonpCallback;
|
||||
/******/ jsonpArray = jsonpArray.slice();
|
||||
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
|
||||
/******/ var parentJsonpFunction = oldJsonpFunction;
|
||||
/******/
|
||||
/******/
|
||||
/******/ // run deferred modules from other chunks
|
||||
/******/ checkDeferredModules();
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ([]);
|
1
frontend/public/js/manifest.js.map
Normal file
1
frontend/public/js/manifest.js.map
Normal file
File diff suppressed because one or more lines are too long
38
frontend/public/js/register.js
Normal file
38
frontend/public/js/register.js
Normal file
@ -0,0 +1,38 @@
|
||||
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["/public/js/register"],{
|
||||
|
||||
/***/ "./src/bootstrap-basic.js":
|
||||
/*!********************************!*\
|
||||
!*** ./src/bootstrap-basic.js ***!
|
||||
\********************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
eval("// export jquery for others scripts to use\nwindow.$ = window.jQuery = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"); // admin stuff\n\n__webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/bootstrap.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYm9vdHN0cmFwLWJhc2ljLmpzPzc1MmQiXSwibmFtZXMiOlsid2luZG93IiwiJCIsImpRdWVyeSIsInJlcXVpcmUiXSwibWFwcGluZ3MiOiJBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsQ0FBUCxHQUFXRCxNQUFNLENBQUNFLE1BQVAsR0FBZ0JDLG1CQUFPLENBQUMsb0RBQUQsQ0FBbEMsQyxDQUVBOztBQUNBQSxtQkFBTyxDQUFDLGdFQUFELENBQVAiLCJmaWxlIjoiLi9zcmMvYm9vdHN0cmFwLWJhc2ljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBleHBvcnQganF1ZXJ5IGZvciBvdGhlcnMgc2NyaXB0cyB0byB1c2VcbndpbmRvdy4kID0gd2luZG93LmpRdWVyeSA9IHJlcXVpcmUoJ2pxdWVyeScpO1xuXG4vLyBhZG1pbiBzdHVmZlxucmVxdWlyZSgnYm9vdHN0cmFwJyk7XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/bootstrap-basic.js\n");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/pages/register.js":
|
||||
/*!*******************************!*\
|
||||
!*** ./src/pages/register.js ***!
|
||||
\*******************************/
|
||||
/*! no exports provided */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _components_dashboard_Dashboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/dashboard/Dashboard */ \"./src/components/dashboard/Dashboard.vue\");\n/* harmony import */ var _components_dashboard_TopBoxes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/dashboard/TopBoxes */ \"./src/components/dashboard/TopBoxes.vue\");\n\n\n/**\n * First we will load Axios via bootstrap.js\n * jquery and bootstrap-sass preloaded in app.js\n * vue, uiv and vuei18n are in app_vue.js\n */\n\n__webpack_require__(/*! ../bootstrap-basic */ \"./src/bootstrap-basic.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvcmVnaXN0ZXIuanM/NjkyNiJdLCJuYW1lcyI6WyJyZXF1aXJlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7Ozs7OztBQU1BQSxtQkFBTyxDQUFDLG9EQUFELENBQVAiLCJmaWxlIjoiLi9zcmMvcGFnZXMvcmVnaXN0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGFzaGJvYXJkIGZyb20gXCIuLi9jb21wb25lbnRzL2Rhc2hib2FyZC9EYXNoYm9hcmRcIjtcbmltcG9ydCBUb3BCb3hlcyBmcm9tIFwiLi4vY29tcG9uZW50cy9kYXNoYm9hcmQvVG9wQm94ZXNcIjtcblxuLyoqXG4gKiBGaXJzdCB3ZSB3aWxsIGxvYWQgQXhpb3MgdmlhIGJvb3RzdHJhcC5qc1xuICoganF1ZXJ5IGFuZCBib290c3RyYXAtc2FzcyBwcmVsb2FkZWQgaW4gYXBwLmpzXG4gKiB2dWUsIHVpdiBhbmQgdnVlaTE4biBhcmUgaW4gYXBwX3Z1ZS5qc1xuICovXG5cbnJlcXVpcmUoJy4uL2Jvb3RzdHJhcC1iYXNpYycpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/pages/register.js\n");
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 1:
|
||||
/*!*************************************!*\
|
||||
!*** multi ./src/pages/register.js ***!
|
||||
\*************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
module.exports = __webpack_require__(/*! /sites/FF3/release/firefly-iii/frontend/src/pages/register.js */"./src/pages/register.js");
|
||||
|
||||
|
||||
/***/ })
|
||||
|
||||
},[[1,"/public/js/manifest","/public/js/vendor"]]]);
|
1
frontend/public/js/register.js.map
Normal file
1
frontend/public/js/register.js.map
Normal file
File diff suppressed because one or more lines are too long
2181
frontend/public/js/vendor.js
Normal file
2181
frontend/public/js/vendor.js
Normal file
File diff suppressed because one or more lines are too long
89
frontend/public/js/vendor.js.LICENSE.txt
Normal file
89
frontend/public/js/vendor.js.LICENSE.txt
Normal file
@ -0,0 +1,89 @@
|
||||
/*!
|
||||
* Bootstrap v4.5.0 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* OverlayScrollbars
|
||||
* https://github.com/KingSora/OverlayScrollbars
|
||||
*
|
||||
* Version: 1.12.0
|
||||
*
|
||||
* Copyright KingSora | Rene Haas.
|
||||
* https://github.com/KingSora
|
||||
*
|
||||
* Released under the MIT license.
|
||||
* Date: 05.04.2020
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.5
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2020-03-14
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Vue.js v2.6.11
|
||||
* (c) 2014-2019 Evan You
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.5.1
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2020-05-04T22:49Z
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery UI Widget 1.12.1
|
||||
* http://jqueryui.com
|
||||
*
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
* Released under the MIT license.
|
||||
* http://jquery.org/license
|
||||
*/
|
||||
|
||||
/*!
|
||||
* vue-i18n v8.18.2
|
||||
* (c) 2020 kazuya kawaguchi
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
|
||||
/**!
|
||||
* @fileOverview Kickass library to create and place poppers near their reference elements.
|
||||
* @version 1.16.1
|
||||
* @license
|
||||
* Copyright (c) 2016 Federico Zivolo and contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
1
frontend/public/js/vendor.js.map
Normal file
1
frontend/public/js/vendor.js.map
Normal file
File diff suppressed because one or more lines are too long
@ -19,28 +19,43 @@
|
||||
-->
|
||||
|
||||
<template>
|
||||
<top-boxes />
|
||||
|
||||
|
||||
<div class="container">
|
||||
<div>
|
||||
<top-boxes/>
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Example Component</div>
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<main-account />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<main-account-list/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
Dropdown button
|
||||
</button>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
|
||||
<a class="dropdown-item" href="#">Action</a>
|
||||
<a class="dropdown-item" href="#">Another action</a>
|
||||
<a class="dropdown-item" href="#">Something else here</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||
<main-budget-chart/>
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||
<main-category-chart/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||
<main-debit-chart/>
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||
<main-credit-chart/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||
<main-bills-chart/>
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||
<main-piggy-list/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
74
frontend/src/components/dashboard/MainAccount.vue
Normal file
74
frontend/src/components/dashboard/MainAccount.vue
Normal file
@ -0,0 +1,74 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ $t('firefly.yourAccounts') }}</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="main-account-chart">
|
||||
<main-account-chart :styles="myStyles" :options="datacollection.options" :chart-data="datacollection"></main-account-chart>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<a href="./accounts/asset" class="btn btn-default button-sm"><i class="far fa-money-bill-alt"></i> {{ $t('firefly.go_to_asset_accounts') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import MainAccountChart from "./MainAccountChart";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
MainAccountChart
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
datacollection: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.fillData()
|
||||
},
|
||||
methods: {
|
||||
fillData() {
|
||||
this.datacollection = {
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false
|
||||
},
|
||||
labels: [this.getRandomInt(), this.getRandomInt()],
|
||||
datasets: [
|
||||
{
|
||||
label: 'Data One',
|
||||
backgroundColor: '#f87979',
|
||||
data: [this.getRandomInt(), this.getRandomInt()]
|
||||
}, {
|
||||
label: 'Data One',
|
||||
backgroundColor: '#f87979',
|
||||
data: [this.getRandomInt(), this.getRandomInt()]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
getRandomInt() {
|
||||
return Math.floor(Math.random() * (50 - 5 + 1)) + 5
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
myStyles() {
|
||||
return {
|
||||
height: '400px',
|
||||
'max-height': '400px',
|
||||
position: 'relative',
|
||||
display: 'block',
|
||||
}
|
||||
}
|
||||
},
|
||||
name: "MainAccount"
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.main-account-chart {
|
||||
}
|
||||
|
||||
</style>
|
19
frontend/src/components/dashboard/MainAccountChart.vue
Normal file
19
frontend/src/components/dashboard/MainAccountChart.vue
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
<script>
|
||||
import { Line } from 'vue-chartjs'
|
||||
export default {
|
||||
extends: Line,
|
||||
props: ['options'],
|
||||
|
||||
mounted () {
|
||||
// this.chartData is created in the mixin.
|
||||
// If you want to pass options please create a local options object
|
||||
this.renderChart(this.chartData, this.options)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
22
frontend/src/components/dashboard/MainAccountList.vue
Normal file
22
frontend/src/components/dashboard/MainAccountList.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">I am a card</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
I am card body
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "MainAccountList"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
22
frontend/src/components/dashboard/MainBillsChart.vue
Normal file
22
frontend/src/components/dashboard/MainBillsChart.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">I am a card</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
I am card body
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "MainBillsChart"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
22
frontend/src/components/dashboard/MainBudgetChart.vue
Normal file
22
frontend/src/components/dashboard/MainBudgetChart.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">I am a card</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
I am card body
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "MainBudgetChart"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
22
frontend/src/components/dashboard/MainCategoryChart.vue
Normal file
22
frontend/src/components/dashboard/MainCategoryChart.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">I am a card</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
I am card body
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "MainCategoryChart"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
22
frontend/src/components/dashboard/MainCrebitChart.vue
Normal file
22
frontend/src/components/dashboard/MainCrebitChart.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">I am a card</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
I am card body
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "MainCrebitChart"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
22
frontend/src/components/dashboard/MainDebitChart.vue
Normal file
22
frontend/src/components/dashboard/MainDebitChart.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">I am a card</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
I am card body
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "MainDebitChart"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
22
frontend/src/components/dashboard/MainPiggyList.vue
Normal file
22
frontend/src/components/dashboard/MainPiggyList.vue
Normal file
@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">I am a card</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
I am card body
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "MainPiggyList"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
@ -1,70 +1,162 @@
|
||||
<template>
|
||||
<div class="row">
|
||||
<div class="col-12 col-sm-6 col-md-3">
|
||||
<div class="col-md-3 col-sm-6 col-12">
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon bg-info elevation-1"><i class="fas fa-cog"></i></span>
|
||||
<span class="info-box-icon"><i class="far fa-bookmark text-info"></i></span>
|
||||
|
||||
<div class="info-box-content">
|
||||
<span class="info-box-text">{{ $t("firefly.balance") }}</span>
|
||||
<span class="info-box-number">
|
||||
xxxxxxx
|
||||
<small>xx</small>
|
||||
</span>
|
||||
<!-- dont take the first, take default currency OR first -->
|
||||
<span class="info-box-number" v-if="balances.length > 0">{{ balances[0].value_parsed }}</span>
|
||||
|
||||
<div class="progress bg-info">
|
||||
<div class="progress-bar" style="width: 0"></div>
|
||||
</div>
|
||||
<span class="progress-description">
|
||||
<span v-for="balance in balances">{{ balance.sub_title }}<br></span>
|
||||
</span>
|
||||
</div>
|
||||
<!-- /.info-box-content -->
|
||||
</div>
|
||||
<!-- /.info-box -->
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
|
||||
<div class="col-12 col-sm-6 col-md-3">
|
||||
<div class="info-box mb-3">
|
||||
<span class="info-box-icon bg-danger elevation-1"><i class="fas fa-thumbs-up"></i></span>
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon"><i class="far fa-calendar-alt text-teal"></i></span>
|
||||
|
||||
<div class="info-box-content">
|
||||
<span class="info-box-text">{{ $t('firefly.bills_to_pay') }}</span>
|
||||
<span class="info-box-number">xxxxxx</span>
|
||||
</div>
|
||||
<!-- /.info-box-content -->
|
||||
</div>
|
||||
<!-- /.info-box -->
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
<span class="info-box-text"><span>{{ $t('firefly.bills_to_pay') }}</span></span>
|
||||
<!-- dont take the first, take default currency OR first -->
|
||||
<span class="info-box-number" v-if="1 === billsUnpaid.length && billsPaid.length > 0">{{ billsUnpaid[0].value_parsed }}</span>
|
||||
|
||||
<div class="progress bg-teal">
|
||||
<div class="progress-bar" style="width: 0"></div>
|
||||
</div>
|
||||
<span class="progress-description">
|
||||
<!-- dont take the first, take default currency OR first -->
|
||||
<span v-if="1 === billsUnpaid.length && 1 === billsPaid.length">{{ $t('firefly.paid') }}: {{ billsPaid[0].value_parsed }}</span>
|
||||
<span v-if="billsUnpaid.length > 1">
|
||||
<span v-for="(bill, index) in billsUnpaid" :key="bill.key">
|
||||
{{ bill.value_parsed }}<span v-if="index+1 !== billsUnpaid.length">, </span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- altijd iets in bold -->
|
||||
<!-- subtitle verschilt -->
|
||||
<!-- fix for small devices only -->
|
||||
<div class="clearfix hidden-md-up"></div>
|
||||
|
||||
<!-- left to spend -->
|
||||
<div class="col-12 col-sm-6 col-md-3">
|
||||
<div class="info-box mb-3">
|
||||
<span class="info-box-icon bg-success elevation-1"><i class="fas fa-shopping-cart"></i></span>
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon"><i class="fas fa-money-bill text-success"></i></span>
|
||||
|
||||
<div class="info-box-content">
|
||||
<span class="info-box-text">{{ $t('firefly.left_to_spend') }}</span>
|
||||
<span class="info-box-number">xxxxx</span>
|
||||
<span class="info-box-text"><span>{{ $t('firefly.left_to_spend') }}</span></span>
|
||||
<!-- dont take the first, take default currency OR first -->
|
||||
<!-- change color if negative -->
|
||||
<span class="info-box-number" v-if="leftToSpend.length > 0">{{ leftToSpend[0].value_parsed }}</span>
|
||||
|
||||
<div class="progress bg-success">
|
||||
<div class="progress-bar" style="width: 0"></div>
|
||||
</div>
|
||||
<span class="progress-description">
|
||||
<!-- list all EXCEPT default currency -->
|
||||
<span v-for="(spent, index) in leftToSpend" :key="spent.key">
|
||||
{{ spent.value_parsed }}<span v-if="index+1 !== leftToSpend.length">, </span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<!-- /.info-box-content -->
|
||||
</div>
|
||||
<!-- /.info-box -->
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
|
||||
<!-- net worth -->
|
||||
<div class="col-12 col-sm-6 col-md-3">
|
||||
<div class="info-box mb-3">
|
||||
<span class="info-box-icon bg-warning elevation-1"><i class="fas fa-users"></i></span>
|
||||
<div class="info-box">
|
||||
<span class="info-box-icon"><i class="fas fa-money-bill text-success"></i></span>
|
||||
|
||||
<div class="info-box-content">
|
||||
<span class="info-box-text">{{ $t('firefly.net_worth') }}</span>
|
||||
<span class="info-box-number">xxxxx</span>
|
||||
<span class="info-box-text"><span>{{ $t('firefly.net_worth') }}</span></span>
|
||||
<!-- dont take the first, take default currency OR first -->
|
||||
<span class="info-box-number" v-if="netWorth.length > 0">{{ netWorth[0].value_parsed }}</span>
|
||||
|
||||
<div class="progress bg-success">
|
||||
<div class="progress-bar" style="width: 0"></div>
|
||||
</div>
|
||||
<span class="progress-description">
|
||||
<!-- list all EXCEPT default currency -->
|
||||
<span v-for="(net, index) in netWorth" :key="net.key">
|
||||
{{ net.value_parsed }}<span v-if="index+1 !== net.length">, </span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<!-- /.info-box-content -->
|
||||
</div>
|
||||
<!-- /.info-box -->
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TopBoxes"
|
||||
name: "TopBoxes",
|
||||
data() {
|
||||
return {
|
||||
summary: [],
|
||||
balances: [],
|
||||
billsPaid: [],
|
||||
billsUnpaid: [],
|
||||
leftToSpend: [],
|
||||
netWorth: [],
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.prepareComponent();
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* Prepare the component.
|
||||
*/
|
||||
prepareComponent() {
|
||||
axios.get('./api/v1/summary/basic?start=' + window.sessionStart + '&end=' + window.sessionEnd)
|
||||
.then(response => {
|
||||
this.summary = response.data;
|
||||
this.buildComponent();
|
||||
});
|
||||
},
|
||||
buildComponent() {
|
||||
this.getBalanceEntries();
|
||||
this.getBillsEntries();
|
||||
this.getLeftToSpend();
|
||||
this.getNetWorth();
|
||||
},
|
||||
getBalanceEntries() {
|
||||
this.balances = this.getKeyedEntries('balance-in-');
|
||||
},
|
||||
getNetWorth() {
|
||||
this.netWorth = this.getKeyedEntries('net-worth-in-');
|
||||
},
|
||||
getLeftToSpend() {
|
||||
this.leftToSpend = this.getKeyedEntries('left-to-spend-in-');
|
||||
},
|
||||
getBillsEntries() {
|
||||
this.billsPaid = this.getKeyedEntries('bills-paid-in-');
|
||||
this.billsUnpaid = this.getKeyedEntries('bills-unpaid-in-');
|
||||
},
|
||||
getKeyedEntries(expected) {
|
||||
let result = [];
|
||||
for (const key in this.summary) {
|
||||
if (this.summary.hasOwnProperty(key)) {
|
||||
if (expected === key.substr(0, expected.length)) {
|
||||
result.push(this.summary[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Z\u016fstatek",
|
||||
"bills_to_pay": "Faktury k zaplacen\u00ed",
|
||||
"left_to_spend": "Zb\u00fdv\u00e1 k utracen\u00ed",
|
||||
"net_worth": "\u010cist\u00e9 jm\u011bn\u00ed"
|
||||
"net_worth": "\u010cist\u00e9 jm\u011bn\u00ed",
|
||||
"paid": "Zaplaceno",
|
||||
"yourAccounts": "Va\u0161e \u00fa\u010dty",
|
||||
"go_to_asset_accounts": "Zobrazit \u00fa\u010dty s aktivy"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "cs"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Kontostand",
|
||||
"bills_to_pay": "Unbezahlte Rechnungen",
|
||||
"left_to_spend": "Verbleibend zum Ausgeben",
|
||||
"net_worth": "Eigenkapital"
|
||||
"net_worth": "Eigenkapital",
|
||||
"paid": "Bezahlt",
|
||||
"yourAccounts": "Deine Konten",
|
||||
"go_to_asset_accounts": "Bestandskonten anzeigen"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "de"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "\u0399\u03c3\u03bf\u03b6\u03cd\u03b3\u03b9\u03bf",
|
||||
"bills_to_pay": "\u03a0\u03ac\u03b3\u03b9\u03b1 \u03ad\u03be\u03bf\u03b4\u03b1 \u03c0\u03c1\u03bf\u03c2 \u03c0\u03bb\u03b7\u03c1\u03c9\u03bc\u03ae",
|
||||
"left_to_spend": "\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1 \u03c0\u03c1\u03bf\u03cb\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03ce\u03bd",
|
||||
"net_worth": "\u039a\u03b1\u03b8\u03b1\u03c1\u03ae \u03b1\u03be\u03af\u03b1"
|
||||
"net_worth": "\u039a\u03b1\u03b8\u03b1\u03c1\u03ae \u03b1\u03be\u03af\u03b1",
|
||||
"paid": "\u03a0\u03bb\u03b7\u03c1\u03c9\u03bc\u03ad\u03bd\u03bf",
|
||||
"yourAccounts": "\u039f\u03b9 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03af \u03c3\u03b1\u03c2",
|
||||
"go_to_asset_accounts": "\u0394\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf\u03c5\u03c2 \u03bb\u03bf\u03b3\u03b1\u03c1\u03b9\u03b1\u03c3\u03bc\u03bf\u03cd\u03c2 \u03ba\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03bf\u03c5 \u03c3\u03b1\u03c2"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "el"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Balance",
|
||||
"bills_to_pay": "Bills to pay",
|
||||
"left_to_spend": "Left to spend",
|
||||
"net_worth": "Net worth"
|
||||
"net_worth": "Net worth",
|
||||
"paid": "Paid",
|
||||
"yourAccounts": "Your accounts",
|
||||
"go_to_asset_accounts": "View your asset accounts"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "en"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Balance",
|
||||
"bills_to_pay": "Facturas por pagar",
|
||||
"left_to_spend": "Disponible para gastar",
|
||||
"net_worth": "Valor Neto"
|
||||
"net_worth": "Valor Neto",
|
||||
"paid": "Pagado",
|
||||
"yourAccounts": "Tus cuentas",
|
||||
"go_to_asset_accounts": "Ver tus cuentas de activos"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "es"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Saldo",
|
||||
"bills_to_pay": "Laskuja maksettavana",
|
||||
"left_to_spend": "K\u00e4ytett\u00e4viss\u00e4",
|
||||
"net_worth": "Varallisuus"
|
||||
"net_worth": "Varallisuus",
|
||||
"paid": "Maksettu",
|
||||
"yourAccounts": "Omat tilisi",
|
||||
"go_to_asset_accounts": "Tarkastele omaisuustilej\u00e4si"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "fi"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Solde",
|
||||
"bills_to_pay": "Factures \u00e0 payer",
|
||||
"left_to_spend": "Reste \u00e0 d\u00e9penser",
|
||||
"net_worth": "Avoir net"
|
||||
"net_worth": "Avoir net",
|
||||
"paid": "Pay\u00e9",
|
||||
"yourAccounts": "Vos comptes",
|
||||
"go_to_asset_accounts": "Afficher vos comptes d'actifs"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "fr"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Egyenleg",
|
||||
"bills_to_pay": "Fizetend\u0151 sz\u00e1ml\u00e1k",
|
||||
"left_to_spend": "Elk\u00f6lthet\u0151",
|
||||
"net_worth": "Nett\u00f3 \u00e9rt\u00e9k"
|
||||
"net_worth": "Nett\u00f3 \u00e9rt\u00e9k",
|
||||
"paid": "Kifizetve",
|
||||
"yourAccounts": "Banksz\u00e1ml\u00e1k",
|
||||
"go_to_asset_accounts": "Eszk\u00f6zsz\u00e1ml\u00e1k megtekint\u00e9se"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "hu"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Keseimbangan",
|
||||
"bills_to_pay": "Bills untuk membayar",
|
||||
"left_to_spend": "Kiri untuk dibelanjakan",
|
||||
"net_worth": "Nilai bersih"
|
||||
"net_worth": "Nilai bersih",
|
||||
"paid": "Dibayar",
|
||||
"yourAccounts": "Akun anda",
|
||||
"go_to_asset_accounts": "Menampilkan rekening aset"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "id"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Saldo",
|
||||
"bills_to_pay": "Bollette da pagare",
|
||||
"left_to_spend": "Altro da spendere",
|
||||
"net_worth": "Patrimonio"
|
||||
"net_worth": "Patrimonio",
|
||||
"paid": "Pagati",
|
||||
"yourAccounts": "I tuoi conti",
|
||||
"go_to_asset_accounts": "Visualizza i tuoi conti attivit\u00e0"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "it"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Saldo",
|
||||
"bills_to_pay": "Regninger \u00e5 betale",
|
||||
"left_to_spend": "Igjen \u00e5 bruke",
|
||||
"net_worth": "Formue"
|
||||
"net_worth": "Formue",
|
||||
"paid": "Betalt",
|
||||
"yourAccounts": "Dine kontoer",
|
||||
"go_to_asset_accounts": "Se aktivakontoene dine"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "nb"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Saldo",
|
||||
"bills_to_pay": "Openstaande contracten",
|
||||
"left_to_spend": "Over om uit te geven",
|
||||
"net_worth": "Kapitaal"
|
||||
"net_worth": "Kapitaal",
|
||||
"paid": "Betaald",
|
||||
"yourAccounts": "Je betaalrekeningen",
|
||||
"go_to_asset_accounts": "Bekijk je betaalrekeningen"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "nl"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Saldo",
|
||||
"bills_to_pay": "Rachunki do zap\u0142acenia",
|
||||
"left_to_spend": "Pozosta\u0142o do wydania",
|
||||
"net_worth": "Warto\u015b\u0107 netto"
|
||||
"net_worth": "Warto\u015b\u0107 netto",
|
||||
"paid": "Zap\u0142acone",
|
||||
"yourAccounts": "Twoje konta",
|
||||
"go_to_asset_accounts": "Zobacz swoje konta aktyw\u00f3w"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "pl"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Saldo",
|
||||
"bills_to_pay": "Faturas a pagar",
|
||||
"left_to_spend": "Restante para gastar",
|
||||
"net_worth": "Valor L\u00edquido"
|
||||
"net_worth": "Valor L\u00edquido",
|
||||
"paid": "Pago",
|
||||
"yourAccounts": "Suas contas",
|
||||
"go_to_asset_accounts": "Veja suas contas ativas"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "pt-br"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Balant\u0103",
|
||||
"bills_to_pay": "Facturile de plat\u0103",
|
||||
"left_to_spend": "Ramas de cheltuit",
|
||||
"net_worth": "Valoarea net\u0103"
|
||||
"net_worth": "Valoarea net\u0103",
|
||||
"paid": "Pl\u0103tit",
|
||||
"yourAccounts": "Conturile dvs.",
|
||||
"go_to_asset_accounts": "Vizualiza\u021bi conturile de active"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "ro"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "\u0411a\u043ba\u043dc",
|
||||
"bills_to_pay": "\u0421\u0447\u0435\u0442\u0430 \u043a \u043e\u043f\u043b\u0430\u0442\u0435",
|
||||
"left_to_spend": "\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c",
|
||||
"net_worth": "\u041c\u043e\u0438 \u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f"
|
||||
"net_worth": "\u041c\u043e\u0438 \u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f",
|
||||
"paid": "\u041e\u043f\u043b\u0430\u0447\u0435\u043d\u043e",
|
||||
"yourAccounts": "\u0412\u0430\u0448\u0438 \u0441\u0447\u0435\u0442\u0430",
|
||||
"go_to_asset_accounts": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0430\u0448\u0438\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u0447\u0435\u0442\u043e\u0432"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "ru"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Saldo",
|
||||
"bills_to_pay": "Notor att betala",
|
||||
"left_to_spend": "\u00c5terst\u00e5r att spendera",
|
||||
"net_worth": "Nettof\u00f6rm\u00f6genhet"
|
||||
"net_worth": "Nettof\u00f6rm\u00f6genhet",
|
||||
"paid": "Betald",
|
||||
"yourAccounts": "Dina konton",
|
||||
"go_to_asset_accounts": "Visa dina tillg\u00e5ngskonton"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "sv"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Denge",
|
||||
"bills_to_pay": "\u00d6denecek fatura",
|
||||
"left_to_spend": "Harcama i\u00e7in b\u0131rak\u0131ld\u0131",
|
||||
"net_worth": "Net de\u011fer"
|
||||
"net_worth": "Net de\u011fer",
|
||||
"paid": "\u00d6dendi",
|
||||
"yourAccounts": "Hesaplar\u0131n\u0131z",
|
||||
"go_to_asset_accounts": "Varl\u0131k hesaplar\u0131n\u0131z\u0131 g\u00f6r\u00fcnt\u00fcleyin"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "tr"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "Ti\u1ec1n c\u00f2n l\u1ea1i",
|
||||
"bills_to_pay": "H\u00f3a \u0111\u01a1n ph\u1ea3i tr\u1ea3",
|
||||
"left_to_spend": "C\u00f2n l\u1ea1i \u0111\u1ec3 chi ti\u00eau",
|
||||
"net_worth": "T\u00e0i s\u1ea3n th\u1ef1c"
|
||||
"net_worth": "T\u00e0i s\u1ea3n th\u1ef1c",
|
||||
"paid": "\u0110\u00e3 thanh to\u00e1n",
|
||||
"yourAccounts": "T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n",
|
||||
"go_to_asset_accounts": "Xem t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "vi"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "\u4f59\u989d",
|
||||
"bills_to_pay": "\u5f85\u4ed8\u5e10\u5355",
|
||||
"left_to_spend": "\u5269\u4f59\u53ef\u82b1\u8d39",
|
||||
"net_worth": "\u51c0\u503c"
|
||||
"net_worth": "\u51c0\u503c",
|
||||
"paid": "\u5df2\u4ed8\u6b3e",
|
||||
"yourAccounts": "\u60a8\u7684\u5e10\u6237",
|
||||
"go_to_asset_accounts": "\u68c0\u89c6\u60a8\u7684\u8d44\u4ea7\u5e10\u6237"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "zh-cn"
|
||||
|
@ -3,7 +3,10 @@
|
||||
"balance": "\u9918\u984d",
|
||||
"bills_to_pay": "\u5f85\u4ed8\u5e33\u55ae",
|
||||
"left_to_spend": "\u5269\u9918\u53ef\u82b1\u8cbb",
|
||||
"net_worth": "\u6de8\u503c"
|
||||
"net_worth": "\u6de8\u503c",
|
||||
"paid": "\u5df2\u4ed8\u6b3e",
|
||||
"yourAccounts": "\u60a8\u7684\u5e33\u6236",
|
||||
"go_to_asset_accounts": "\u6aa2\u8996\u60a8\u7684\u8cc7\u7522\u5e33\u6236"
|
||||
},
|
||||
"config": {
|
||||
"html_language": "zh-tw"
|
||||
|
@ -1,6 +1,13 @@
|
||||
import Dashboard from "../components/dashboard/Dashboard";
|
||||
import TopBoxes from "../components/dashboard/TopBoxes";
|
||||
|
||||
import MainAccount from "../components/dashboard/MainAccount";
|
||||
import MainAccountList from "../components/dashboard/MainAccountList";
|
||||
import MainBillsChart from "../components/dashboard/MainBillsChart";
|
||||
import MainBudgetChart from "../components/dashboard/MainBudgetChart";
|
||||
import MainCategoryChart from "../components/dashboard/MainCategoryChart";
|
||||
import MainCrebitChart from "../components/dashboard/MainCrebitChart";
|
||||
import MainDebitChart from "../components/dashboard/MainDebitChart";
|
||||
import MainPiggyList from "../components/dashboard/MainPiggyList";
|
||||
/**
|
||||
* First we will load Axios via bootstrap.js
|
||||
* jquery and bootstrap-sass preloaded in app.js
|
||||
@ -12,6 +19,14 @@ require('../bootstrap');
|
||||
// components as an example
|
||||
Vue.component('dashboard', Dashboard);
|
||||
Vue.component('top-boxes', TopBoxes);
|
||||
Vue.component('main-account', MainAccount);
|
||||
Vue.component('main-account-list', MainAccountList);
|
||||
Vue.component('main-bills-chart', MainBillsChart);
|
||||
Vue.component('main-budget-chart', MainBudgetChart);
|
||||
Vue.component('main-category-chart', MainCategoryChart);
|
||||
Vue.component('main-credit-chart', MainCrebitChart);
|
||||
Vue.component('main-debit-chart', MainDebitChart);
|
||||
Vue.component('main-piggy-list', MainPiggyList);
|
||||
|
||||
// i18n
|
||||
let i18n = require('../i18n');
|
||||
|
10
frontend/src/pages/register.js
Normal file
10
frontend/src/pages/register.js
Normal file
@ -0,0 +1,10 @@
|
||||
import Dashboard from "../components/dashboard/Dashboard";
|
||||
import TopBoxes from "../components/dashboard/TopBoxes";
|
||||
|
||||
/**
|
||||
* First we will load Axios via bootstrap.js
|
||||
* jquery and bootstrap-sass preloaded in app.js
|
||||
* vue, uiv and vuei18n are in app_vue.js
|
||||
*/
|
||||
|
||||
require('../bootstrap-basic');
|
@ -37,11 +37,12 @@ mix
|
||||
// register page
|
||||
.js('src/pages/register.js', 'public/js')
|
||||
|
||||
|
||||
|
||||
.extract().sourceMaps()
|
||||
.sass('src/app.scss', 'public/css');
|
||||
.sass('src/app.scss', 'public/css')
|
||||
|
||||
// move to right dir
|
||||
.copy('public/js','../public/v2/js')
|
||||
.copy('fonts','../public/fonts')
|
||||
.copy('public/css','../public/v2/css')
|
||||
;
|
||||
|
||||
if (!mix.inProduction()) {
|
||||
mix.bundleAnalyzer();
|
||||
}
|
||||
|
3
resources/views/v2/javascript/variables.twig
Normal file
3
resources/views/v2/javascript/variables.twig
Normal file
@ -0,0 +1,3 @@
|
||||
var sessionStart = '{{ start }}';
|
||||
var sessionEnd = '{{ end }}';
|
||||
|
@ -74,6 +74,7 @@
|
||||
</div>
|
||||
<!-- ./wrapper -->
|
||||
|
||||
<script src="{{ route('javascript.v2.variables') }}" nonce="{{ JS_NONCE }}"></script>
|
||||
<script src="v2/js/manifest.js" nonce="{{ JS_NONCE }}"></script>
|
||||
<script src="v2/js/vendor.js" nonce="{{ JS_NONCE }}"></script>
|
||||
{% block scripts %}{% endblock %}
|
||||
|
@ -558,7 +558,7 @@ Route::group(
|
||||
);
|
||||
|
||||
/**
|
||||
* Budget Controller.
|
||||
* JScript Controller.
|
||||
*/
|
||||
Route::group(
|
||||
['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers', 'prefix' => 'v1/jscript', 'as' => 'javascript.'],
|
||||
@ -569,6 +569,16 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* JScript Controller.
|
||||
*/
|
||||
Route::group(
|
||||
['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers', 'prefix' => 'v2/jscript', 'as' => 'javascript.v2.'],
|
||||
static function () {
|
||||
Route::get('variables', ['uses' => 'JavascriptController@variablesV2', 'as' => 'variables']);
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* JSON Controller(s).
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user