monopyly 1.4.6__py3-none-any.whl → 1.4.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- monopyly/CHANGELOG.md +195 -0
- monopyly/README.md +14 -3
- monopyly/__init__.py +20 -1
- monopyly/_version.py +2 -2
- monopyly/auth/actions.py +7 -2
- monopyly/banking/accounts.py +1 -1
- monopyly/banking/actions.py +51 -10
- monopyly/banking/routes.py +2 -1
- monopyly/cli/apps.py +51 -28
- monopyly/cli/{run.py → launch.py} +18 -10
- monopyly/common/forms/_forms.py +4 -1
- monopyly/core/actions.py +108 -21
- monopyly/core/blueprint.py +1 -1
- monopyly/core/context_processors.py +10 -0
- monopyly/core/errors.py +9 -0
- monopyly/core/filters.py +4 -2
- monopyly/core/routes.py +22 -9
- monopyly/credit/routes.py +9 -1
- monopyly/credit/transactions/_transactions.py +1 -1
- monopyly/static/css/style.css +166 -73
- monopyly/static/js/make-payment.js +4 -2
- monopyly/templates/banking/account_summaries.html +26 -12
- monopyly/templates/banking/account_summaries_page.html +2 -1
- monopyly/templates/banking/account_summary.html +7 -2
- monopyly/templates/banking/accounts_page.html +2 -2
- monopyly/templates/core/credits.html +32 -0
- monopyly/templates/core/errors/400.html +8 -0
- monopyly/templates/core/errors/401.html +8 -0
- monopyly/templates/core/errors/403.html +8 -0
- monopyly/templates/core/errors/404.html +8 -0
- monopyly/templates/core/errors/405.html +8 -0
- monopyly/templates/core/errors/408.html +8 -0
- monopyly/templates/core/errors/418.html +8 -0
- monopyly/templates/core/errors/425.html +8 -0
- monopyly/templates/core/errors/500.html +8 -0
- monopyly/templates/core/errors/error.html +31 -0
- monopyly/templates/{profile.html → core/profile.html} +3 -1
- monopyly/templates/core/story.html +62 -0
- monopyly/templates/credit/statement_summary.html +7 -2
- monopyly/templates/credit/statements.html +7 -6
- monopyly/templates/layout.html +11 -2
- {monopyly-1.4.6.dist-info → monopyly-1.4.8.dist-info}/METADATA +15 -4
- {monopyly-1.4.6.dist-info → monopyly-1.4.8.dist-info}/RECORD +48 -36
- monopyly-1.4.8.dist-info/entry_points.txt +2 -0
- monopyly/templates/credits.html +0 -20
- monopyly/templates/story.html +0 -47
- monopyly-1.4.6.dist-info/entry_points.txt +0 -2
- /monopyly/templates/{index.html → core/index.html} +0 -0
- {monopyly-1.4.6.dist-info → monopyly-1.4.8.dist-info}/WHEEL +0 -0
- {monopyly-1.4.6.dist-info → monopyly-1.4.8.dist-info}/licenses/COPYING +0 -0
- {monopyly-1.4.6.dist-info → monopyly-1.4.8.dist-info}/licenses/LICENSE +0 -0
monopyly/static/css/style.css
CHANGED
|
@@ -7,7 +7,10 @@
|
|
|
7
7
|
:root {
|
|
8
8
|
--moneytree: #5e8f40;
|
|
9
9
|
--moneytree-leaves: #85bb65;
|
|
10
|
+
--silver-dollar: #cccccc;
|
|
10
11
|
--masthead-height: 50px;
|
|
12
|
+
--masthead-color: #2b2b2b;
|
|
13
|
+
--border-gray: #dddddd;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
html {
|
|
@@ -94,7 +97,7 @@ header#masthead {
|
|
|
94
97
|
border-width: 0 0 4px 3px;
|
|
95
98
|
border-style: solid;
|
|
96
99
|
border-color: var(--moneytree-leaves);
|
|
97
|
-
background-color:
|
|
100
|
+
background-color: var(--masthead-color);
|
|
98
101
|
opacity: 0.9;
|
|
99
102
|
}
|
|
100
103
|
|
|
@@ -117,7 +120,12 @@ header#masthead {
|
|
|
117
120
|
}
|
|
118
121
|
|
|
119
122
|
.monopyly-logo:hover {
|
|
120
|
-
|
|
123
|
+
filter: brightness(0.95);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.monopyly-logo .development-mode {
|
|
127
|
+
font-weight: normal;
|
|
128
|
+
text-transform: none;
|
|
121
129
|
}
|
|
122
130
|
|
|
123
131
|
|
|
@@ -161,7 +169,7 @@ footer#site-info {
|
|
|
161
169
|
}
|
|
162
170
|
|
|
163
171
|
#site-info p {
|
|
164
|
-
color:
|
|
172
|
+
color: var(--silver-dollar);
|
|
165
173
|
font-size: 9pt;
|
|
166
174
|
text-align: center;
|
|
167
175
|
}
|
|
@@ -193,7 +201,7 @@ aside.sidebar {
|
|
|
193
201
|
height: 100%;
|
|
194
202
|
width: 10%;
|
|
195
203
|
min-width: 50px;
|
|
196
|
-
margin-top: 50px; /*
|
|
204
|
+
margin-top: 50px; /* account for content header */
|
|
197
205
|
}
|
|
198
206
|
|
|
199
207
|
#content-header h1 {
|
|
@@ -201,12 +209,40 @@ aside.sidebar {
|
|
|
201
209
|
box-sizing: border-box;
|
|
202
210
|
margin: 0 0 30px 0;
|
|
203
211
|
padding-bottom: 10px;
|
|
204
|
-
border-bottom: 1px solid
|
|
212
|
+
border-bottom: 1px solid var(--border-gray);
|
|
205
213
|
text-align: center;
|
|
206
214
|
font-size: 2em;
|
|
207
215
|
letter-spacing: -2px;
|
|
208
216
|
}
|
|
209
217
|
|
|
218
|
+
#content-header h1.error {
|
|
219
|
+
text-align: left;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
/*
|
|
224
|
+
* Provide styles for error pages
|
|
225
|
+
*/
|
|
226
|
+
.error span.code {
|
|
227
|
+
margin-left: 30px;
|
|
228
|
+
color: var(--silver-dollar);
|
|
229
|
+
font-weight: 300;
|
|
230
|
+
letter-spacing: 1px;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.custom-error-content p {
|
|
234
|
+
font-size: 18pt;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.standard-error-content {
|
|
238
|
+
margin-top: 50px;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.standard-error-content p.error-description {
|
|
242
|
+
font-size: 12pt;
|
|
243
|
+
font-style: oblique;
|
|
244
|
+
}
|
|
245
|
+
|
|
210
246
|
|
|
211
247
|
/*
|
|
212
248
|
* General object characteristics
|
|
@@ -233,7 +269,8 @@ aside.sidebar {
|
|
|
233
269
|
}
|
|
234
270
|
|
|
235
271
|
.button-block {
|
|
236
|
-
|
|
272
|
+
margin: 15px 0;
|
|
273
|
+
border: 1px solid var(--border-gray);
|
|
237
274
|
border-radius: 10px;
|
|
238
275
|
box-shadow: 1px 1px 3px #bbbbbb;
|
|
239
276
|
background-color: #eeeeee;
|
|
@@ -241,6 +278,14 @@ aside.sidebar {
|
|
|
241
278
|
color: inherit;
|
|
242
279
|
}
|
|
243
280
|
|
|
281
|
+
.button-block:first-of-type {
|
|
282
|
+
margin-top: 0;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.button-block:last-of-type {
|
|
286
|
+
margin-bottom: 0;
|
|
287
|
+
}
|
|
288
|
+
|
|
244
289
|
.button-block:hover {
|
|
245
290
|
filter: brightness(0.98);
|
|
246
291
|
text-decoration: none;
|
|
@@ -253,16 +298,34 @@ aside.sidebar {
|
|
|
253
298
|
.screenshot {
|
|
254
299
|
width: 100%; /* override the markdown default */
|
|
255
300
|
margin: 20px 0;
|
|
256
|
-
border: 1px solid #
|
|
301
|
+
border: 1px solid #bbbbbb;
|
|
257
302
|
box-shadow: 3px 3px 5px #bbbbbb;
|
|
258
303
|
}
|
|
259
304
|
|
|
260
|
-
.
|
|
305
|
+
.group-stack {
|
|
306
|
+
margin: 15px 10px 25px;
|
|
307
|
+
padding: 20px 30px;
|
|
261
308
|
border-radius: 15px;
|
|
262
309
|
box-shadow: 0 0 20px #eeeeee;
|
|
263
310
|
background-color: #eef5eb;
|
|
264
311
|
}
|
|
265
312
|
|
|
313
|
+
.group-stack .stack-title {
|
|
314
|
+
display: flex;
|
|
315
|
+
justify-content: space-between;
|
|
316
|
+
margin: 0 0 15px 0;
|
|
317
|
+
padding: 0 15px;
|
|
318
|
+
font-size: 1.1em;
|
|
319
|
+
letter-spacing: 1px;
|
|
320
|
+
text-transform: uppercase;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.group-stack .stack-title-info {
|
|
324
|
+
margin-left: 15px;
|
|
325
|
+
color: #888888;
|
|
326
|
+
font-weight: 400;
|
|
327
|
+
}
|
|
328
|
+
|
|
266
329
|
.paid-notice {
|
|
267
330
|
color: var(--moneytree-leaves);
|
|
268
331
|
font-weight: bold;
|
|
@@ -491,7 +554,8 @@ form .autocomplete-box {
|
|
|
491
554
|
z-index: 99;
|
|
492
555
|
width: 100%;
|
|
493
556
|
padding-right: 10px;
|
|
494
|
-
border: 1px solid
|
|
557
|
+
border: 1px solid var(--silver-dollar);
|
|
558
|
+
box-sizing: border-box;
|
|
495
559
|
background-color: white;
|
|
496
560
|
}
|
|
497
561
|
|
|
@@ -502,7 +566,7 @@ form .autocomplete-box .item {
|
|
|
502
566
|
}
|
|
503
567
|
|
|
504
568
|
form .autocomplete-box .item:hover {
|
|
505
|
-
background-color:
|
|
569
|
+
background-color: var(--silver-dollar);
|
|
506
570
|
}
|
|
507
571
|
|
|
508
572
|
form .autocomplete-box .item.active {
|
|
@@ -643,7 +707,7 @@ form .autocomplete-box .item.active {
|
|
|
643
707
|
position: relative;
|
|
644
708
|
right: -100%;
|
|
645
709
|
width: min-content;
|
|
646
|
-
transition: 0.4s;
|
|
710
|
+
transition: 0.4s 0.2s;
|
|
647
711
|
}
|
|
648
712
|
|
|
649
713
|
.slide-text-gadget:hover .sleeve {
|
|
@@ -653,7 +717,7 @@ form .autocomplete-box .item.active {
|
|
|
653
717
|
.slide-text-gadget .sleeve .main {
|
|
654
718
|
position: absolute;
|
|
655
719
|
transform: translateX(-100%);
|
|
656
|
-
transition: 0.2s;
|
|
720
|
+
transition: 0.2s 0.2s;
|
|
657
721
|
}
|
|
658
722
|
|
|
659
723
|
.slide-text-gadget:hover .sleeve .main {
|
|
@@ -746,8 +810,8 @@ form .autocomplete-box .item.active {
|
|
|
746
810
|
.toggle-switch-gadget .option .slider .switch {
|
|
747
811
|
position: relative;
|
|
748
812
|
left: 0;
|
|
749
|
-
width: 50%;
|
|
750
813
|
height: 100%;
|
|
814
|
+
width: 50%;
|
|
751
815
|
box-sizing: border-box;
|
|
752
816
|
border-radius: 50%;
|
|
753
817
|
background-color: #eeeeee;
|
|
@@ -772,7 +836,7 @@ form .autocomplete-box .item.active {
|
|
|
772
836
|
* Style generic box tables
|
|
773
837
|
*/
|
|
774
838
|
.box-table {
|
|
775
|
-
border: 2px solid
|
|
839
|
+
border: 2px solid var(--border-gray);
|
|
776
840
|
}
|
|
777
841
|
|
|
778
842
|
.box-table .icon-button {
|
|
@@ -789,8 +853,8 @@ form .autocomplete-box .item.active {
|
|
|
789
853
|
}
|
|
790
854
|
|
|
791
855
|
.box-table .box-row {
|
|
792
|
-
border-top: 0.5px solid
|
|
793
|
-
border-bottom: 0.5px solid
|
|
856
|
+
border-top: 0.5px solid var(--border-gray);
|
|
857
|
+
border-bottom: 0.5px solid var(--border-gray);
|
|
794
858
|
background-color: #f5f5f5;
|
|
795
859
|
}
|
|
796
860
|
|
|
@@ -822,7 +886,7 @@ form .autocomplete-box .item.active {
|
|
|
822
886
|
}
|
|
823
887
|
|
|
824
888
|
#card-filter .card:hover {
|
|
825
|
-
background-color:
|
|
889
|
+
background-color: var(--silver-dollar);
|
|
826
890
|
text-decoration: none;
|
|
827
891
|
}
|
|
828
892
|
|
|
@@ -878,7 +942,7 @@ form .autocomplete-box .item.active {
|
|
|
878
942
|
position: absolute;
|
|
879
943
|
height: 100%;
|
|
880
944
|
width: 100%;
|
|
881
|
-
border: 1px solid
|
|
945
|
+
border: 1px solid var(--silver-dollar);
|
|
882
946
|
border-radius: 20px;
|
|
883
947
|
box-shadow: 1px 1px 3px #222222;
|
|
884
948
|
text-align: center;
|
|
@@ -949,7 +1013,7 @@ form .autocomplete-box .item.active {
|
|
|
949
1013
|
}
|
|
950
1014
|
|
|
951
1015
|
.credit-card.inactive .card-face.front {
|
|
952
|
-
color:
|
|
1016
|
+
color: var(--silver-dollar);
|
|
953
1017
|
filter: brightness(0.9);
|
|
954
1018
|
}
|
|
955
1019
|
|
|
@@ -1088,7 +1152,7 @@ form .autocomplete-box .item.active {
|
|
|
1088
1152
|
|
|
1089
1153
|
.transactions-table .titles,
|
|
1090
1154
|
.transactions-table .transaction {
|
|
1091
|
-
border-bottom: 1px solid
|
|
1155
|
+
border-bottom: 1px solid var(--border-gray);
|
|
1092
1156
|
}
|
|
1093
1157
|
|
|
1094
1158
|
.transactions-table .titles {
|
|
@@ -1612,13 +1676,12 @@ form .autocomplete-box .item.active {
|
|
|
1612
1676
|
display: flex;
|
|
1613
1677
|
flex-direction: column;
|
|
1614
1678
|
flex-wrap: wrap;
|
|
1615
|
-
align-items:
|
|
1679
|
+
align-items: stretch;
|
|
1616
1680
|
gap: 10px;
|
|
1617
1681
|
width: 100%;
|
|
1618
1682
|
}
|
|
1619
1683
|
@media screen and (max-width: 1500px) {
|
|
1620
1684
|
.details .primary-info {
|
|
1621
|
-
display: flex;
|
|
1622
1685
|
align-items: center;
|
|
1623
1686
|
}
|
|
1624
1687
|
}
|
|
@@ -1639,14 +1702,16 @@ form .autocomplete-box .item.active {
|
|
|
1639
1702
|
.details .summary-container {
|
|
1640
1703
|
display: flex;
|
|
1641
1704
|
justify-content: center;
|
|
1642
|
-
|
|
1705
|
+
width: 45%;
|
|
1706
|
+
min-width: 500px;
|
|
1643
1707
|
margin: 0 0 0 0;
|
|
1644
1708
|
}
|
|
1645
1709
|
|
|
1646
1710
|
.details .summary-box {
|
|
1647
1711
|
display: flex;
|
|
1648
1712
|
flex-direction: column;
|
|
1649
|
-
width:
|
|
1713
|
+
width: 500px;
|
|
1714
|
+
box-sizing: border-box;
|
|
1650
1715
|
padding: 40px 50px 60px;
|
|
1651
1716
|
border-radius: 25px;
|
|
1652
1717
|
box-shadow: 1px 1px 5px #dddddd;
|
|
@@ -1656,7 +1721,6 @@ form .autocomplete-box .item.active {
|
|
|
1656
1721
|
.details .summary-box .balance {
|
|
1657
1722
|
display: flex;
|
|
1658
1723
|
justify-content: space-between;
|
|
1659
|
-
min-width: 325px;
|
|
1660
1724
|
margin: 20px 0;
|
|
1661
1725
|
font-size: 72pt;
|
|
1662
1726
|
font-weight: bold;
|
|
@@ -1664,10 +1728,6 @@ form .autocomplete-box .item.active {
|
|
|
1664
1728
|
text-align: center;
|
|
1665
1729
|
}
|
|
1666
1730
|
|
|
1667
|
-
.details .summary-box .balance .dollar-sign {
|
|
1668
|
-
margin-right: 5px;
|
|
1669
|
-
}
|
|
1670
|
-
|
|
1671
1731
|
.details .summary-box .projected-balance .amount {
|
|
1672
1732
|
color: var(--moneytree);
|
|
1673
1733
|
font-weight: 500;
|
|
@@ -1698,12 +1758,13 @@ form .autocomplete-box .item.active {
|
|
|
1698
1758
|
}
|
|
1699
1759
|
|
|
1700
1760
|
.details .transactions-container {
|
|
1701
|
-
width:
|
|
1761
|
+
width: 52.5%;
|
|
1702
1762
|
order: 2;
|
|
1703
1763
|
min-width: 500px;
|
|
1704
1764
|
}
|
|
1705
1765
|
@media screen and (max-width: 1500px) {
|
|
1706
1766
|
.details .transactions-container {
|
|
1767
|
+
width: 50%;
|
|
1707
1768
|
order: 1;
|
|
1708
1769
|
margin-top: 50px;
|
|
1709
1770
|
}
|
|
@@ -1820,10 +1881,10 @@ form .autocomplete-box .item.active {
|
|
|
1820
1881
|
#homepage-block {
|
|
1821
1882
|
margin-bottom: 20px;
|
|
1822
1883
|
padding: 0 0 30px 0;
|
|
1823
|
-
background-color:
|
|
1824
|
-
border: 1px solid
|
|
1884
|
+
background-color: gainsboro;
|
|
1885
|
+
border: 1px solid lightgray;
|
|
1825
1886
|
border-radius: 6px;
|
|
1826
|
-
box-shadow: 2px 2px 5px
|
|
1887
|
+
box-shadow: 2px 2px 5px var(--silver-dollar);
|
|
1827
1888
|
}
|
|
1828
1889
|
|
|
1829
1890
|
#homepage-block h2 {
|
|
@@ -1873,7 +1934,7 @@ form .autocomplete-box .item.active {
|
|
|
1873
1934
|
margin: 20px;
|
|
1874
1935
|
padding: 50px;
|
|
1875
1936
|
border: 1px solid #f5f5f5;
|
|
1876
|
-
box-shadow: 2px 2px 5px
|
|
1937
|
+
box-shadow: 2px 2px 5px var(--silver-dollar);
|
|
1877
1938
|
background-color: #fafafa;
|
|
1878
1939
|
}
|
|
1879
1940
|
|
|
@@ -1961,6 +2022,38 @@ form .autocomplete-box .item.active {
|
|
|
1961
2022
|
margin-top: 50px;
|
|
1962
2023
|
}
|
|
1963
2024
|
|
|
2025
|
+
#readme .warning {
|
|
2026
|
+
padding: 15px 25px;
|
|
2027
|
+
border: 1px solid var(--silver-dollar);
|
|
2028
|
+
border-radius: 10px;
|
|
2029
|
+
box-shadow: 2px 2px 3px var(--silver-dollar);
|
|
2030
|
+
background-color: #f2d7a5;
|
|
2031
|
+
}
|
|
2032
|
+
|
|
2033
|
+
#readme .warning h5 {
|
|
2034
|
+
margin: 0 0 5px 0;
|
|
2035
|
+
}
|
|
2036
|
+
|
|
2037
|
+
#changelog {
|
|
2038
|
+
width: 80%;
|
|
2039
|
+
margin: 0 auto;
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
#changelog h1 {
|
|
2043
|
+
font-size: 32pt;
|
|
2044
|
+
text-align: center;
|
|
2045
|
+
}
|
|
2046
|
+
|
|
2047
|
+
#changelog h2 {
|
|
2048
|
+
border-bottom: 1px solid var(--border-gray);
|
|
2049
|
+
}
|
|
2050
|
+
|
|
2051
|
+
#changelog a.latest-release {
|
|
2052
|
+
display: block;
|
|
2053
|
+
margin: 30px 0;
|
|
2054
|
+
font-size: 1.5em;
|
|
2055
|
+
}
|
|
2056
|
+
|
|
1964
2057
|
#story .signature {
|
|
1965
2058
|
margin-bottom: 100px;
|
|
1966
2059
|
font-weight: bold;
|
|
@@ -1969,6 +2062,14 @@ form .autocomplete-box .item.active {
|
|
|
1969
2062
|
}
|
|
1970
2063
|
|
|
1971
2064
|
|
|
2065
|
+
/*
|
|
2066
|
+
* Customization for the 'Credits' page
|
|
2067
|
+
*/
|
|
2068
|
+
.affiliation-disclaimer {
|
|
2069
|
+
margin-top: 80px;
|
|
2070
|
+
}
|
|
2071
|
+
|
|
2072
|
+
|
|
1972
2073
|
/*
|
|
1973
2074
|
* Customization for the 'Profile' page
|
|
1974
2075
|
*/
|
|
@@ -2002,7 +2103,7 @@ form .autocomplete-box .item.active {
|
|
|
2002
2103
|
flex-basis: 100%;
|
|
2003
2104
|
margin-right: 0;
|
|
2004
2105
|
padding-bottom: 50px;
|
|
2005
|
-
border-bottom: 0.5px solid
|
|
2106
|
+
border-bottom: 0.5px solid var(--border-gray);
|
|
2006
2107
|
}
|
|
2007
2108
|
|
|
2008
2109
|
#profile .banking.profile-section .bank-list {
|
|
@@ -2025,15 +2126,9 @@ form .autocomplete-box .item.active {
|
|
|
2025
2126
|
/*
|
|
2026
2127
|
* Customization for the 'Bank Accounts' page
|
|
2027
2128
|
*/
|
|
2028
|
-
#bank-container .bank-
|
|
2029
|
-
margin: 25px 0;
|
|
2030
|
-
padding: 30px;
|
|
2031
|
-
}
|
|
2032
|
-
|
|
2033
|
-
#bank-container .bank-block h3 {
|
|
2034
|
-
margin-top: 0;
|
|
2129
|
+
#bank-container .bank-stack .stack-title {
|
|
2035
2130
|
padding: 0 30px;
|
|
2036
|
-
|
|
2131
|
+
text-align: left;
|
|
2037
2132
|
}
|
|
2038
2133
|
|
|
2039
2134
|
#bank-container .account-block {
|
|
@@ -2068,7 +2163,7 @@ form .autocomplete-box .item.active {
|
|
|
2068
2163
|
#account-type-container {
|
|
2069
2164
|
width: 30%;
|
|
2070
2165
|
min-width: 350px;
|
|
2071
|
-
border: 2px solid
|
|
2166
|
+
border: 2px solid var(--border-gray);
|
|
2072
2167
|
background-color: #f5f5f5;
|
|
2073
2168
|
}
|
|
2074
2169
|
|
|
@@ -2078,13 +2173,13 @@ form .autocomplete-box .item.active {
|
|
|
2078
2173
|
}
|
|
2079
2174
|
|
|
2080
2175
|
#account-type-container .account-types {
|
|
2081
|
-
border-top: 2px solid
|
|
2176
|
+
border-top: 2px solid var(--border-gray);
|
|
2082
2177
|
}
|
|
2083
2178
|
|
|
2084
2179
|
#account-type-container .account-type {
|
|
2085
2180
|
padding: 10px;
|
|
2086
|
-
border-top: 0.5px solid
|
|
2087
|
-
border-bottom: 0.5px solid
|
|
2181
|
+
border-top: 0.5px solid var(--border-gray);
|
|
2182
|
+
border-bottom: 0.5px solid var(--border-gray);
|
|
2088
2183
|
}
|
|
2089
2184
|
|
|
2090
2185
|
|
|
@@ -2105,10 +2200,22 @@ form#bank-account .hidden {
|
|
|
2105
2200
|
align-items: center
|
|
2106
2201
|
}
|
|
2107
2202
|
|
|
2108
|
-
#bank-account-summaries-container .bank {
|
|
2109
|
-
margin: 0 0
|
|
2203
|
+
#bank-account-summaries-container h2.bank {
|
|
2204
|
+
margin: 0 0 5px;
|
|
2205
|
+
font-size: 1.6em;
|
|
2206
|
+
letter-spacing: 1px;
|
|
2207
|
+
text-transform: uppercase;
|
|
2110
2208
|
text-align: center;
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2211
|
+
#bank-account-summaries-container h3.balance {
|
|
2212
|
+
margin: 0 0 10px;
|
|
2213
|
+
color: gray;
|
|
2214
|
+
font-size: 1em;
|
|
2215
|
+
font-weight: 300;
|
|
2111
2216
|
text-transform: uppercase;
|
|
2217
|
+
text-align: center;
|
|
2218
|
+
letter-spacing: 1px;
|
|
2112
2219
|
}
|
|
2113
2220
|
|
|
2114
2221
|
#bank-account-summaries {
|
|
@@ -2117,29 +2224,21 @@ form#bank-account .hidden {
|
|
|
2117
2224
|
width: 100%;
|
|
2118
2225
|
}
|
|
2119
2226
|
|
|
2120
|
-
#bank-account-summaries .account-type-
|
|
2227
|
+
#bank-account-summaries .account-type-stack {
|
|
2121
2228
|
display: flex;
|
|
2122
2229
|
flex-direction: column;
|
|
2123
|
-
width:
|
|
2230
|
+
width: 60%;
|
|
2124
2231
|
min-width: 400px;
|
|
2125
|
-
margin:
|
|
2126
|
-
padding: 25px;
|
|
2232
|
+
margin: 15px auto 25px;
|
|
2127
2233
|
}
|
|
2128
2234
|
|
|
2129
2235
|
#bank-account-summaries .account-block {
|
|
2130
2236
|
display: flex;
|
|
2131
2237
|
justify-content: space-between;
|
|
2132
2238
|
align-items: center;
|
|
2133
|
-
width: 100%;
|
|
2134
|
-
box-sizing: border-box;
|
|
2135
|
-
margin-bottom: 15px;
|
|
2136
2239
|
padding: 30px 10%;
|
|
2137
2240
|
}
|
|
2138
2241
|
|
|
2139
|
-
#bank-account-summaries a.account-block:last-of-type {
|
|
2140
|
-
margin-bottom: 0;
|
|
2141
|
-
}
|
|
2142
|
-
|
|
2143
2242
|
#bank-account-summaries .account-block .title {
|
|
2144
2243
|
font-size: 16pt;
|
|
2145
2244
|
}
|
|
@@ -2408,27 +2507,21 @@ form#card #statement-due-day-field {
|
|
|
2408
2507
|
justify-content: space-around;
|
|
2409
2508
|
}
|
|
2410
2509
|
|
|
2411
|
-
#credit-statements .card-
|
|
2510
|
+
#credit-statements .card-stack {
|
|
2412
2511
|
display: flex;
|
|
2413
2512
|
flex-direction: column;
|
|
2414
2513
|
height: min-content;
|
|
2415
|
-
margin: 15px 10px;
|
|
2416
|
-
padding: 20px;
|
|
2417
|
-
text-transform: uppercase;
|
|
2418
|
-
text-align: center;
|
|
2419
|
-
font-size: 1.1em;
|
|
2420
2514
|
}
|
|
2421
2515
|
|
|
2422
|
-
#credit-statements
|
|
2423
|
-
|
|
2516
|
+
#credit-statements .card-stack .stack-title {
|
|
2517
|
+
justify-content: center;
|
|
2424
2518
|
}
|
|
2425
2519
|
|
|
2426
2520
|
#credit-statements .statement-block {
|
|
2427
2521
|
display: flex;
|
|
2428
|
-
align-items: center;
|
|
2429
2522
|
justify-content: space-between;
|
|
2523
|
+
align-items: center;
|
|
2430
2524
|
width: 275px;
|
|
2431
|
-
margin: 15px;
|
|
2432
2525
|
padding: 45px 50px;
|
|
2433
2526
|
}
|
|
2434
2527
|
|
|
@@ -2511,7 +2604,7 @@ form#pay input {
|
|
|
2511
2604
|
}
|
|
2512
2605
|
|
|
2513
2606
|
form#pay .form-inputs {
|
|
2514
|
-
border: 1px solid
|
|
2607
|
+
border: 1px solid var(--silver-dollar);
|
|
2515
2608
|
border-radius: inherit;
|
|
2516
2609
|
}
|
|
2517
2610
|
|
|
@@ -2677,7 +2770,7 @@ form#credit-transaction .merchant-field {
|
|
|
2677
2770
|
border-radius: 20px;
|
|
2678
2771
|
text-align: center;
|
|
2679
2772
|
outline: none;
|
|
2680
|
-
caret-color:
|
|
2773
|
+
caret-color: var(--silver-dollar);
|
|
2681
2774
|
transition: border 0.1s ease;
|
|
2682
2775
|
}
|
|
2683
2776
|
|
|
@@ -2733,6 +2826,6 @@ form#credit-transaction .merchant-field {
|
|
|
2733
2826
|
#transaction-tags .subtags {
|
|
2734
2827
|
margin: 0 0 0 10px;
|
|
2735
2828
|
padding-left: 40px;
|
|
2736
|
-
border-left: 1px solid
|
|
2829
|
+
border-left: 1px solid var(--border-gray);
|
|
2737
2830
|
}
|
|
2738
2831
|
|
|
@@ -17,7 +17,8 @@ import { executeAjaxRequest } from './modules/ajax.js';
|
|
|
17
17
|
|
|
18
18
|
(function() {
|
|
19
19
|
|
|
20
|
-
const $
|
|
20
|
+
const $summaryContainer = $('#statement-summary-container');
|
|
21
|
+
const $transactionContainer = $('#statement-transactions-container');
|
|
21
22
|
prepareForm();
|
|
22
23
|
|
|
23
24
|
function prepareForm() {
|
|
@@ -82,7 +83,8 @@ import { executeAjaxRequest } from './modules/ajax.js';
|
|
|
82
83
|
function updateStatementPaymentAjaxRequest(rawData) {
|
|
83
84
|
// Return the newly updated statement payment info
|
|
84
85
|
function updateAction(response) {
|
|
85
|
-
$
|
|
86
|
+
$summaryContainer.html(response[0]);
|
|
87
|
+
$transactionContainer.html(response[1]);
|
|
86
88
|
// Prepare the form again (in case statement is not paid in full)
|
|
87
89
|
prepareForm();
|
|
88
90
|
}
|
|
@@ -1,21 +1,35 @@
|
|
|
1
1
|
<div id="bank-account-summaries">
|
|
2
2
|
|
|
3
|
-
{% for account_type in type_accounts %}
|
|
4
|
-
|
|
3
|
+
{% for account_type, accounts in type_accounts|items %}
|
|
4
|
+
{# Use a scoped variable so that the accounts generator can be reused #}
|
|
5
|
+
{% with accounts = accounts|list %}
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
<div class="account-type-stack group-stack">
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
</a>
|
|
9
|
+
<h2 class="stack-title">
|
|
10
|
+
{{ account_type.type_name }}
|
|
11
|
+
{% if accounts|length> 1 %}
|
|
12
|
+
<span class="stack-title-info">${{ accounts|sum(attribute='balance')|currency }}</span>
|
|
13
|
+
{% endif %}
|
|
14
|
+
</h2>
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
<div class="account-blocks">
|
|
17
|
+
{% for account in accounts|sort(attribute='last_four_digits') %}
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
<a class="account-block button-block" href="{{ url_for('banking.load_account_details', account_id=account.id) }}">
|
|
20
|
+
<div class="title">
|
|
21
|
+
<span class="digits">{{ account.last_four_digits }}</span>
|
|
22
|
+
<b>{{ account.account_type.type_name }}</b>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="balance">${{ account.balance|currency }}</div>
|
|
25
|
+
</a>
|
|
26
|
+
|
|
27
|
+
{% endfor %}
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
{% endwith %}
|
|
19
33
|
{% endfor %}
|
|
20
34
|
|
|
21
35
|
</div>
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
{% block content %}
|
|
45
45
|
|
|
46
46
|
<div id="bank-account-summaries-container">
|
|
47
|
-
<h2 class="bank">{{ bank.bank_name }}
|
|
47
|
+
<h2 class="bank">{{ bank.bank_name }}</h2>
|
|
48
|
+
<h3 class="balance">${{ bank_balance|currency }}</h3>
|
|
48
49
|
|
|
49
50
|
{% include 'banking/account_summaries.html' %}
|
|
50
51
|
|
|
@@ -9,8 +9,13 @@
|
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
<div class="balance">
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
{% with account_balance = account.balance|currency %}
|
|
13
|
+
{% set vbox_width = calculate_summary_balance_width(account_balance) %}
|
|
14
|
+
<svg viewBox="0 0 {{ vbox_width }} 100">
|
|
15
|
+
<text x="0" y="75" fill="currentColor">$</text>
|
|
16
|
+
<text x="75" y="75" fill="currentColor">{{ account_balance }}</text>
|
|
17
|
+
</svg>
|
|
18
|
+
{% endwith %}
|
|
14
19
|
</div>
|
|
15
20
|
|
|
16
21
|
{% if account.balance != account.projected_balance %}
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
{% set bank_accounts = bank.bank_accounts %}
|
|
20
20
|
{% if bank_accounts %}
|
|
21
21
|
|
|
22
|
-
<div class="bank-
|
|
23
|
-
<
|
|
22
|
+
<div class="bank-stack group-stack">
|
|
23
|
+
<h2 class="stack-title">{{ bank.bank_name }}</h2>
|
|
24
24
|
|
|
25
25
|
<div class="account-blocks box-table">
|
|
26
26
|
{% for account in bank_accounts %}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{% extends "layout.html" %}
|
|
2
|
+
|
|
3
|
+
{% block title %}
|
|
4
|
+
Credits
|
|
5
|
+
{% endblock %}
|
|
6
|
+
|
|
7
|
+
{% block header %}
|
|
8
|
+
<h1>Credits</h1>
|
|
9
|
+
{% endblock %}
|
|
10
|
+
|
|
11
|
+
{% block content %}
|
|
12
|
+
|
|
13
|
+
<div class="credits">
|
|
14
|
+
|
|
15
|
+
<h3>Image Credits</h3>
|
|
16
|
+
<p>
|
|
17
|
+
The chain link icon was adapted from <a href="https://commons.wikimedia.org/wiki/File:Chain_link_icon.png">Wikipedia Commons</a>.
|
|
18
|
+
The original image was created by user Mdowdell and published under the <a href="https://creativecommons.org/licenses/by-sa/3.0/legalcode">CC BY-SA 3.0 License</a>.
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="affiliation-disclaimer">
|
|
24
|
+
|
|
25
|
+
<h3>Disclaimer</h3>
|
|
26
|
+
<p>
|
|
27
|
+
At risk of stating the obvious, given that this is a <b>homemade personal finance manager</b>, the <i>Monopyly</i> app is in no way affiliated, associated, authorized, endorsed by, or in any way officially connected with Hasbro, the present publisher and trademark holder of the board game MONOPOLY.
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
{% endblock %}
|