monopyly 1.4.6__py3-none-any.whl → 1.4.7__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 +187 -0
- monopyly/README.md +13 -2
- monopyly/__init__.py +19 -0
- monopyly/_version.py +2 -2
- monopyly/banking/accounts.py +1 -1
- monopyly/cli/apps.py +25 -4
- 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 +161 -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/credit/statement_summary.html +7 -2
- monopyly/templates/credit/statements.html +7 -6
- {monopyly-1.4.6.dist-info → monopyly-1.4.7.dist-info}/METADATA +14 -3
- {monopyly-1.4.6.dist-info → monopyly-1.4.7.dist-info}/RECORD +43 -31
- monopyly/templates/credits.html +0 -20
- /monopyly/templates/{index.html → core/index.html} +0 -0
- /monopyly/templates/{story.html → core/story.html} +0 -0
- {monopyly-1.4.6.dist-info → monopyly-1.4.7.dist-info}/WHEEL +0 -0
- {monopyly-1.4.6.dist-info → monopyly-1.4.7.dist-info}/entry_points.txt +0 -0
- {monopyly-1.4.6.dist-info → monopyly-1.4.7.dist-info}/licenses/COPYING +0 -0
- {monopyly-1.4.6.dist-info → monopyly-1.4.7.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,7 @@ header#masthead {
|
|
|
117
120
|
}
|
|
118
121
|
|
|
119
122
|
.monopyly-logo:hover {
|
|
120
|
-
|
|
123
|
+
filter: brightness(0.95);
|
|
121
124
|
}
|
|
122
125
|
|
|
123
126
|
|
|
@@ -161,7 +164,7 @@ footer#site-info {
|
|
|
161
164
|
}
|
|
162
165
|
|
|
163
166
|
#site-info p {
|
|
164
|
-
color:
|
|
167
|
+
color: var(--silver-dollar);
|
|
165
168
|
font-size: 9pt;
|
|
166
169
|
text-align: center;
|
|
167
170
|
}
|
|
@@ -193,7 +196,7 @@ aside.sidebar {
|
|
|
193
196
|
height: 100%;
|
|
194
197
|
width: 10%;
|
|
195
198
|
min-width: 50px;
|
|
196
|
-
margin-top: 50px; /*
|
|
199
|
+
margin-top: 50px; /* account for content header */
|
|
197
200
|
}
|
|
198
201
|
|
|
199
202
|
#content-header h1 {
|
|
@@ -201,12 +204,40 @@ aside.sidebar {
|
|
|
201
204
|
box-sizing: border-box;
|
|
202
205
|
margin: 0 0 30px 0;
|
|
203
206
|
padding-bottom: 10px;
|
|
204
|
-
border-bottom: 1px solid
|
|
207
|
+
border-bottom: 1px solid var(--border-gray);
|
|
205
208
|
text-align: center;
|
|
206
209
|
font-size: 2em;
|
|
207
210
|
letter-spacing: -2px;
|
|
208
211
|
}
|
|
209
212
|
|
|
213
|
+
#content-header h1.error {
|
|
214
|
+
text-align: left;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
/*
|
|
219
|
+
* Provide styles for error pages
|
|
220
|
+
*/
|
|
221
|
+
.error span.code {
|
|
222
|
+
margin-left: 30px;
|
|
223
|
+
color: var(--silver-dollar);
|
|
224
|
+
font-weight: 300;
|
|
225
|
+
letter-spacing: 1px;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.custom-error-content p {
|
|
229
|
+
font-size: 18pt;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.standard-error-content {
|
|
233
|
+
margin-top: 50px;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.standard-error-content p.error-description {
|
|
237
|
+
font-size: 12pt;
|
|
238
|
+
font-style: oblique;
|
|
239
|
+
}
|
|
240
|
+
|
|
210
241
|
|
|
211
242
|
/*
|
|
212
243
|
* General object characteristics
|
|
@@ -233,7 +264,8 @@ aside.sidebar {
|
|
|
233
264
|
}
|
|
234
265
|
|
|
235
266
|
.button-block {
|
|
236
|
-
|
|
267
|
+
margin: 15px 0;
|
|
268
|
+
border: 1px solid var(--border-gray);
|
|
237
269
|
border-radius: 10px;
|
|
238
270
|
box-shadow: 1px 1px 3px #bbbbbb;
|
|
239
271
|
background-color: #eeeeee;
|
|
@@ -241,6 +273,14 @@ aside.sidebar {
|
|
|
241
273
|
color: inherit;
|
|
242
274
|
}
|
|
243
275
|
|
|
276
|
+
.button-block:first-of-type {
|
|
277
|
+
margin-top: 0;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.button-block:last-of-type {
|
|
281
|
+
margin-bottom: 0;
|
|
282
|
+
}
|
|
283
|
+
|
|
244
284
|
.button-block:hover {
|
|
245
285
|
filter: brightness(0.98);
|
|
246
286
|
text-decoration: none;
|
|
@@ -253,16 +293,34 @@ aside.sidebar {
|
|
|
253
293
|
.screenshot {
|
|
254
294
|
width: 100%; /* override the markdown default */
|
|
255
295
|
margin: 20px 0;
|
|
256
|
-
border: 1px solid #
|
|
296
|
+
border: 1px solid #bbbbbb;
|
|
257
297
|
box-shadow: 3px 3px 5px #bbbbbb;
|
|
258
298
|
}
|
|
259
299
|
|
|
260
|
-
.
|
|
300
|
+
.group-stack {
|
|
301
|
+
margin: 15px 10px 25px;
|
|
302
|
+
padding: 20px 30px;
|
|
261
303
|
border-radius: 15px;
|
|
262
304
|
box-shadow: 0 0 20px #eeeeee;
|
|
263
305
|
background-color: #eef5eb;
|
|
264
306
|
}
|
|
265
307
|
|
|
308
|
+
.group-stack .stack-title {
|
|
309
|
+
display: flex;
|
|
310
|
+
justify-content: space-between;
|
|
311
|
+
margin: 0 0 15px 0;
|
|
312
|
+
padding: 0 15px;
|
|
313
|
+
font-size: 1.1em;
|
|
314
|
+
letter-spacing: 1px;
|
|
315
|
+
text-transform: uppercase;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.group-stack .stack-title-info {
|
|
319
|
+
margin-left: 15px;
|
|
320
|
+
color: #888888;
|
|
321
|
+
font-weight: 400;
|
|
322
|
+
}
|
|
323
|
+
|
|
266
324
|
.paid-notice {
|
|
267
325
|
color: var(--moneytree-leaves);
|
|
268
326
|
font-weight: bold;
|
|
@@ -491,7 +549,8 @@ form .autocomplete-box {
|
|
|
491
549
|
z-index: 99;
|
|
492
550
|
width: 100%;
|
|
493
551
|
padding-right: 10px;
|
|
494
|
-
border: 1px solid
|
|
552
|
+
border: 1px solid var(--silver-dollar);
|
|
553
|
+
box-sizing: border-box;
|
|
495
554
|
background-color: white;
|
|
496
555
|
}
|
|
497
556
|
|
|
@@ -502,7 +561,7 @@ form .autocomplete-box .item {
|
|
|
502
561
|
}
|
|
503
562
|
|
|
504
563
|
form .autocomplete-box .item:hover {
|
|
505
|
-
background-color:
|
|
564
|
+
background-color: var(--silver-dollar);
|
|
506
565
|
}
|
|
507
566
|
|
|
508
567
|
form .autocomplete-box .item.active {
|
|
@@ -643,7 +702,7 @@ form .autocomplete-box .item.active {
|
|
|
643
702
|
position: relative;
|
|
644
703
|
right: -100%;
|
|
645
704
|
width: min-content;
|
|
646
|
-
transition: 0.4s;
|
|
705
|
+
transition: 0.4s 0.2s;
|
|
647
706
|
}
|
|
648
707
|
|
|
649
708
|
.slide-text-gadget:hover .sleeve {
|
|
@@ -653,7 +712,7 @@ form .autocomplete-box .item.active {
|
|
|
653
712
|
.slide-text-gadget .sleeve .main {
|
|
654
713
|
position: absolute;
|
|
655
714
|
transform: translateX(-100%);
|
|
656
|
-
transition: 0.2s;
|
|
715
|
+
transition: 0.2s 0.2s;
|
|
657
716
|
}
|
|
658
717
|
|
|
659
718
|
.slide-text-gadget:hover .sleeve .main {
|
|
@@ -746,8 +805,8 @@ form .autocomplete-box .item.active {
|
|
|
746
805
|
.toggle-switch-gadget .option .slider .switch {
|
|
747
806
|
position: relative;
|
|
748
807
|
left: 0;
|
|
749
|
-
width: 50%;
|
|
750
808
|
height: 100%;
|
|
809
|
+
width: 50%;
|
|
751
810
|
box-sizing: border-box;
|
|
752
811
|
border-radius: 50%;
|
|
753
812
|
background-color: #eeeeee;
|
|
@@ -772,7 +831,7 @@ form .autocomplete-box .item.active {
|
|
|
772
831
|
* Style generic box tables
|
|
773
832
|
*/
|
|
774
833
|
.box-table {
|
|
775
|
-
border: 2px solid
|
|
834
|
+
border: 2px solid var(--border-gray);
|
|
776
835
|
}
|
|
777
836
|
|
|
778
837
|
.box-table .icon-button {
|
|
@@ -789,8 +848,8 @@ form .autocomplete-box .item.active {
|
|
|
789
848
|
}
|
|
790
849
|
|
|
791
850
|
.box-table .box-row {
|
|
792
|
-
border-top: 0.5px solid
|
|
793
|
-
border-bottom: 0.5px solid
|
|
851
|
+
border-top: 0.5px solid var(--border-gray);
|
|
852
|
+
border-bottom: 0.5px solid var(--border-gray);
|
|
794
853
|
background-color: #f5f5f5;
|
|
795
854
|
}
|
|
796
855
|
|
|
@@ -822,7 +881,7 @@ form .autocomplete-box .item.active {
|
|
|
822
881
|
}
|
|
823
882
|
|
|
824
883
|
#card-filter .card:hover {
|
|
825
|
-
background-color:
|
|
884
|
+
background-color: var(--silver-dollar);
|
|
826
885
|
text-decoration: none;
|
|
827
886
|
}
|
|
828
887
|
|
|
@@ -878,7 +937,7 @@ form .autocomplete-box .item.active {
|
|
|
878
937
|
position: absolute;
|
|
879
938
|
height: 100%;
|
|
880
939
|
width: 100%;
|
|
881
|
-
border: 1px solid
|
|
940
|
+
border: 1px solid var(--silver-dollar);
|
|
882
941
|
border-radius: 20px;
|
|
883
942
|
box-shadow: 1px 1px 3px #222222;
|
|
884
943
|
text-align: center;
|
|
@@ -949,7 +1008,7 @@ form .autocomplete-box .item.active {
|
|
|
949
1008
|
}
|
|
950
1009
|
|
|
951
1010
|
.credit-card.inactive .card-face.front {
|
|
952
|
-
color:
|
|
1011
|
+
color: var(--silver-dollar);
|
|
953
1012
|
filter: brightness(0.9);
|
|
954
1013
|
}
|
|
955
1014
|
|
|
@@ -1088,7 +1147,7 @@ form .autocomplete-box .item.active {
|
|
|
1088
1147
|
|
|
1089
1148
|
.transactions-table .titles,
|
|
1090
1149
|
.transactions-table .transaction {
|
|
1091
|
-
border-bottom: 1px solid
|
|
1150
|
+
border-bottom: 1px solid var(--border-gray);
|
|
1092
1151
|
}
|
|
1093
1152
|
|
|
1094
1153
|
.transactions-table .titles {
|
|
@@ -1612,13 +1671,12 @@ form .autocomplete-box .item.active {
|
|
|
1612
1671
|
display: flex;
|
|
1613
1672
|
flex-direction: column;
|
|
1614
1673
|
flex-wrap: wrap;
|
|
1615
|
-
align-items:
|
|
1674
|
+
align-items: stretch;
|
|
1616
1675
|
gap: 10px;
|
|
1617
1676
|
width: 100%;
|
|
1618
1677
|
}
|
|
1619
1678
|
@media screen and (max-width: 1500px) {
|
|
1620
1679
|
.details .primary-info {
|
|
1621
|
-
display: flex;
|
|
1622
1680
|
align-items: center;
|
|
1623
1681
|
}
|
|
1624
1682
|
}
|
|
@@ -1639,14 +1697,16 @@ form .autocomplete-box .item.active {
|
|
|
1639
1697
|
.details .summary-container {
|
|
1640
1698
|
display: flex;
|
|
1641
1699
|
justify-content: center;
|
|
1642
|
-
|
|
1700
|
+
width: 45%;
|
|
1701
|
+
min-width: 500px;
|
|
1643
1702
|
margin: 0 0 0 0;
|
|
1644
1703
|
}
|
|
1645
1704
|
|
|
1646
1705
|
.details .summary-box {
|
|
1647
1706
|
display: flex;
|
|
1648
1707
|
flex-direction: column;
|
|
1649
|
-
width:
|
|
1708
|
+
width: 500px;
|
|
1709
|
+
box-sizing: border-box;
|
|
1650
1710
|
padding: 40px 50px 60px;
|
|
1651
1711
|
border-radius: 25px;
|
|
1652
1712
|
box-shadow: 1px 1px 5px #dddddd;
|
|
@@ -1656,7 +1716,6 @@ form .autocomplete-box .item.active {
|
|
|
1656
1716
|
.details .summary-box .balance {
|
|
1657
1717
|
display: flex;
|
|
1658
1718
|
justify-content: space-between;
|
|
1659
|
-
min-width: 325px;
|
|
1660
1719
|
margin: 20px 0;
|
|
1661
1720
|
font-size: 72pt;
|
|
1662
1721
|
font-weight: bold;
|
|
@@ -1664,10 +1723,6 @@ form .autocomplete-box .item.active {
|
|
|
1664
1723
|
text-align: center;
|
|
1665
1724
|
}
|
|
1666
1725
|
|
|
1667
|
-
.details .summary-box .balance .dollar-sign {
|
|
1668
|
-
margin-right: 5px;
|
|
1669
|
-
}
|
|
1670
|
-
|
|
1671
1726
|
.details .summary-box .projected-balance .amount {
|
|
1672
1727
|
color: var(--moneytree);
|
|
1673
1728
|
font-weight: 500;
|
|
@@ -1698,12 +1753,13 @@ form .autocomplete-box .item.active {
|
|
|
1698
1753
|
}
|
|
1699
1754
|
|
|
1700
1755
|
.details .transactions-container {
|
|
1701
|
-
width:
|
|
1756
|
+
width: 52.5%;
|
|
1702
1757
|
order: 2;
|
|
1703
1758
|
min-width: 500px;
|
|
1704
1759
|
}
|
|
1705
1760
|
@media screen and (max-width: 1500px) {
|
|
1706
1761
|
.details .transactions-container {
|
|
1762
|
+
width: 50%;
|
|
1707
1763
|
order: 1;
|
|
1708
1764
|
margin-top: 50px;
|
|
1709
1765
|
}
|
|
@@ -1820,10 +1876,10 @@ form .autocomplete-box .item.active {
|
|
|
1820
1876
|
#homepage-block {
|
|
1821
1877
|
margin-bottom: 20px;
|
|
1822
1878
|
padding: 0 0 30px 0;
|
|
1823
|
-
background-color:
|
|
1824
|
-
border: 1px solid
|
|
1879
|
+
background-color: gainsboro;
|
|
1880
|
+
border: 1px solid lightgray;
|
|
1825
1881
|
border-radius: 6px;
|
|
1826
|
-
box-shadow: 2px 2px 5px
|
|
1882
|
+
box-shadow: 2px 2px 5px var(--silver-dollar);
|
|
1827
1883
|
}
|
|
1828
1884
|
|
|
1829
1885
|
#homepage-block h2 {
|
|
@@ -1873,7 +1929,7 @@ form .autocomplete-box .item.active {
|
|
|
1873
1929
|
margin: 20px;
|
|
1874
1930
|
padding: 50px;
|
|
1875
1931
|
border: 1px solid #f5f5f5;
|
|
1876
|
-
box-shadow: 2px 2px 5px
|
|
1932
|
+
box-shadow: 2px 2px 5px var(--silver-dollar);
|
|
1877
1933
|
background-color: #fafafa;
|
|
1878
1934
|
}
|
|
1879
1935
|
|
|
@@ -1961,6 +2017,38 @@ form .autocomplete-box .item.active {
|
|
|
1961
2017
|
margin-top: 50px;
|
|
1962
2018
|
}
|
|
1963
2019
|
|
|
2020
|
+
#readme .warning {
|
|
2021
|
+
padding: 15px 25px;
|
|
2022
|
+
border: 1px solid var(--silver-dollar);
|
|
2023
|
+
border-radius: 10px;
|
|
2024
|
+
box-shadow: 2px 2px 3px var(--silver-dollar);
|
|
2025
|
+
background-color: #f2d7a5;
|
|
2026
|
+
}
|
|
2027
|
+
|
|
2028
|
+
#readme .warning h5 {
|
|
2029
|
+
margin: 0 0 5px 0;
|
|
2030
|
+
}
|
|
2031
|
+
|
|
2032
|
+
#changelog {
|
|
2033
|
+
width: 80%;
|
|
2034
|
+
margin: 0 auto;
|
|
2035
|
+
}
|
|
2036
|
+
|
|
2037
|
+
#changelog h1 {
|
|
2038
|
+
font-size: 32pt;
|
|
2039
|
+
text-align: center;
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
#changelog h2 {
|
|
2043
|
+
border-bottom: 1px solid var(--border-gray);
|
|
2044
|
+
}
|
|
2045
|
+
|
|
2046
|
+
#changelog a.latest-release {
|
|
2047
|
+
display: block;
|
|
2048
|
+
margin: 30px 0;
|
|
2049
|
+
font-size: 1.5em;
|
|
2050
|
+
}
|
|
2051
|
+
|
|
1964
2052
|
#story .signature {
|
|
1965
2053
|
margin-bottom: 100px;
|
|
1966
2054
|
font-weight: bold;
|
|
@@ -1969,6 +2057,14 @@ form .autocomplete-box .item.active {
|
|
|
1969
2057
|
}
|
|
1970
2058
|
|
|
1971
2059
|
|
|
2060
|
+
/*
|
|
2061
|
+
* Customization for the 'Credits' page
|
|
2062
|
+
*/
|
|
2063
|
+
.affiliation-disclaimer {
|
|
2064
|
+
margin-top: 80px;
|
|
2065
|
+
}
|
|
2066
|
+
|
|
2067
|
+
|
|
1972
2068
|
/*
|
|
1973
2069
|
* Customization for the 'Profile' page
|
|
1974
2070
|
*/
|
|
@@ -2002,7 +2098,7 @@ form .autocomplete-box .item.active {
|
|
|
2002
2098
|
flex-basis: 100%;
|
|
2003
2099
|
margin-right: 0;
|
|
2004
2100
|
padding-bottom: 50px;
|
|
2005
|
-
border-bottom: 0.5px solid
|
|
2101
|
+
border-bottom: 0.5px solid var(--border-gray);
|
|
2006
2102
|
}
|
|
2007
2103
|
|
|
2008
2104
|
#profile .banking.profile-section .bank-list {
|
|
@@ -2025,15 +2121,9 @@ form .autocomplete-box .item.active {
|
|
|
2025
2121
|
/*
|
|
2026
2122
|
* Customization for the 'Bank Accounts' page
|
|
2027
2123
|
*/
|
|
2028
|
-
#bank-container .bank-
|
|
2029
|
-
margin: 25px 0;
|
|
2030
|
-
padding: 30px;
|
|
2031
|
-
}
|
|
2032
|
-
|
|
2033
|
-
#bank-container .bank-block h3 {
|
|
2034
|
-
margin-top: 0;
|
|
2124
|
+
#bank-container .bank-stack .stack-title {
|
|
2035
2125
|
padding: 0 30px;
|
|
2036
|
-
|
|
2126
|
+
text-align: left;
|
|
2037
2127
|
}
|
|
2038
2128
|
|
|
2039
2129
|
#bank-container .account-block {
|
|
@@ -2068,7 +2158,7 @@ form .autocomplete-box .item.active {
|
|
|
2068
2158
|
#account-type-container {
|
|
2069
2159
|
width: 30%;
|
|
2070
2160
|
min-width: 350px;
|
|
2071
|
-
border: 2px solid
|
|
2161
|
+
border: 2px solid var(--border-gray);
|
|
2072
2162
|
background-color: #f5f5f5;
|
|
2073
2163
|
}
|
|
2074
2164
|
|
|
@@ -2078,13 +2168,13 @@ form .autocomplete-box .item.active {
|
|
|
2078
2168
|
}
|
|
2079
2169
|
|
|
2080
2170
|
#account-type-container .account-types {
|
|
2081
|
-
border-top: 2px solid
|
|
2171
|
+
border-top: 2px solid var(--border-gray);
|
|
2082
2172
|
}
|
|
2083
2173
|
|
|
2084
2174
|
#account-type-container .account-type {
|
|
2085
2175
|
padding: 10px;
|
|
2086
|
-
border-top: 0.5px solid
|
|
2087
|
-
border-bottom: 0.5px solid
|
|
2176
|
+
border-top: 0.5px solid var(--border-gray);
|
|
2177
|
+
border-bottom: 0.5px solid var(--border-gray);
|
|
2088
2178
|
}
|
|
2089
2179
|
|
|
2090
2180
|
|
|
@@ -2105,10 +2195,22 @@ form#bank-account .hidden {
|
|
|
2105
2195
|
align-items: center
|
|
2106
2196
|
}
|
|
2107
2197
|
|
|
2108
|
-
#bank-account-summaries-container .bank {
|
|
2109
|
-
margin: 0 0
|
|
2198
|
+
#bank-account-summaries-container h2.bank {
|
|
2199
|
+
margin: 0 0 5px;
|
|
2200
|
+
font-size: 1.6em;
|
|
2201
|
+
letter-spacing: 1px;
|
|
2202
|
+
text-transform: uppercase;
|
|
2110
2203
|
text-align: center;
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
#bank-account-summaries-container h3.balance {
|
|
2207
|
+
margin: 0 0 10px;
|
|
2208
|
+
color: gray;
|
|
2209
|
+
font-size: 1em;
|
|
2210
|
+
font-weight: 300;
|
|
2111
2211
|
text-transform: uppercase;
|
|
2212
|
+
text-align: center;
|
|
2213
|
+
letter-spacing: 1px;
|
|
2112
2214
|
}
|
|
2113
2215
|
|
|
2114
2216
|
#bank-account-summaries {
|
|
@@ -2117,29 +2219,21 @@ form#bank-account .hidden {
|
|
|
2117
2219
|
width: 100%;
|
|
2118
2220
|
}
|
|
2119
2221
|
|
|
2120
|
-
#bank-account-summaries .account-type-
|
|
2222
|
+
#bank-account-summaries .account-type-stack {
|
|
2121
2223
|
display: flex;
|
|
2122
2224
|
flex-direction: column;
|
|
2123
|
-
width:
|
|
2225
|
+
width: 60%;
|
|
2124
2226
|
min-width: 400px;
|
|
2125
|
-
margin:
|
|
2126
|
-
padding: 25px;
|
|
2227
|
+
margin: 15px auto 25px;
|
|
2127
2228
|
}
|
|
2128
2229
|
|
|
2129
2230
|
#bank-account-summaries .account-block {
|
|
2130
2231
|
display: flex;
|
|
2131
2232
|
justify-content: space-between;
|
|
2132
2233
|
align-items: center;
|
|
2133
|
-
width: 100%;
|
|
2134
|
-
box-sizing: border-box;
|
|
2135
|
-
margin-bottom: 15px;
|
|
2136
2234
|
padding: 30px 10%;
|
|
2137
2235
|
}
|
|
2138
2236
|
|
|
2139
|
-
#bank-account-summaries a.account-block:last-of-type {
|
|
2140
|
-
margin-bottom: 0;
|
|
2141
|
-
}
|
|
2142
|
-
|
|
2143
2237
|
#bank-account-summaries .account-block .title {
|
|
2144
2238
|
font-size: 16pt;
|
|
2145
2239
|
}
|
|
@@ -2408,27 +2502,21 @@ form#card #statement-due-day-field {
|
|
|
2408
2502
|
justify-content: space-around;
|
|
2409
2503
|
}
|
|
2410
2504
|
|
|
2411
|
-
#credit-statements .card-
|
|
2505
|
+
#credit-statements .card-stack {
|
|
2412
2506
|
display: flex;
|
|
2413
2507
|
flex-direction: column;
|
|
2414
2508
|
height: min-content;
|
|
2415
|
-
margin: 15px 10px;
|
|
2416
|
-
padding: 20px;
|
|
2417
|
-
text-transform: uppercase;
|
|
2418
|
-
text-align: center;
|
|
2419
|
-
font-size: 1.1em;
|
|
2420
2509
|
}
|
|
2421
2510
|
|
|
2422
|
-
#credit-statements
|
|
2423
|
-
|
|
2511
|
+
#credit-statements .card-stack .stack-title {
|
|
2512
|
+
justify-content: center;
|
|
2424
2513
|
}
|
|
2425
2514
|
|
|
2426
2515
|
#credit-statements .statement-block {
|
|
2427
2516
|
display: flex;
|
|
2428
|
-
align-items: center;
|
|
2429
2517
|
justify-content: space-between;
|
|
2518
|
+
align-items: center;
|
|
2430
2519
|
width: 275px;
|
|
2431
|
-
margin: 15px;
|
|
2432
2520
|
padding: 45px 50px;
|
|
2433
2521
|
}
|
|
2434
2522
|
|
|
@@ -2511,7 +2599,7 @@ form#pay input {
|
|
|
2511
2599
|
}
|
|
2512
2600
|
|
|
2513
2601
|
form#pay .form-inputs {
|
|
2514
|
-
border: 1px solid
|
|
2602
|
+
border: 1px solid var(--silver-dollar);
|
|
2515
2603
|
border-radius: inherit;
|
|
2516
2604
|
}
|
|
2517
2605
|
|
|
@@ -2677,7 +2765,7 @@ form#credit-transaction .merchant-field {
|
|
|
2677
2765
|
border-radius: 20px;
|
|
2678
2766
|
text-align: center;
|
|
2679
2767
|
outline: none;
|
|
2680
|
-
caret-color:
|
|
2768
|
+
caret-color: var(--silver-dollar);
|
|
2681
2769
|
transition: border 0.1s ease;
|
|
2682
2770
|
}
|
|
2683
2771
|
|
|
@@ -2733,6 +2821,6 @@ form#credit-transaction .merchant-field {
|
|
|
2733
2821
|
#transaction-tags .subtags {
|
|
2734
2822
|
margin: 0 0 0 10px;
|
|
2735
2823
|
padding-left: 40px;
|
|
2736
|
-
border-left: 1px solid
|
|
2824
|
+
border-left: 1px solid var(--border-gray);
|
|
2737
2825
|
}
|
|
2738
2826
|
|
|
@@ -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 %}
|