diff --git a/TODO b/TODO index fbf8cf5..23aa02c 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,4 @@ UI: - * remember which tab - * remember show estimates For bills: * using frequency and known bills fill in missing gaps diff --git a/db.py b/db.py index a5b8f85..159543a 100644 --- a/db.py +++ b/db.py @@ -109,6 +109,12 @@ def init_db(): FOREIGN KEY(bill_type) REFERENCES bill_type(id) )''') + cur.execute('''CREATE TABLE IF NOT EXISTS bill_ui ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + last_tab INTEGER, + show_estimated INTEGER + )''') + # Check if table is empty, if so insert default values cur.execute('SELECT COUNT(*) FROM finance') if cur.fetchone()[0] == 0: @@ -128,6 +134,8 @@ def init_db(): cur.execute( "INSERT INTO bill_freq values ( 1, 'Annual', 1 )" ) cur.execute( "INSERT INTO bill_freq values ( 2, 'Quarterly', 4 )" ) cur.execute( "INSERT INTO bill_freq values ( 3, 'Monthly', 12 )" ) + # start with no specific Tab/bill_type to show, and dont show_estimated + cur.execute( "INSERT INTO bill_ui values ( 1, null, 0 )" ) conn.commit() conn.close() @@ -353,3 +361,23 @@ def set_bill_type_growth( id, min_g, avg_g, max_g ): conn.commit() conn.close() return + +def get_bill_ui(): + conn = connect_db(True) + cur = conn.cursor() + # only ever be 1 + cur.execute('SELECT * FROM bill_ui') + ui = cur.fetchone() + conn.close() + return ui + +def save_ui(data): + conn = connect_db(False) + cur = conn.cursor() + if 'last_tab' in data: + cur.execute( f"update bill_ui set last_tab='{data['last_tab']}'" ) + if 'show_estimated' in data: + cur.execute( f"update bill_ui set show_estimated='{data['show_estimated']}'" ) + conn.commit() + conn.close() + return diff --git a/main.py b/main.py index 520c9d3..5e50e0b 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,7 @@ from flask import Flask, render_template, request, redirect, url_for, Response, from calc import calculate_savings_depletion from db import init_db, get_finance_data, update_finance, get_budget_data, insert_cset, get_comp_set_data, get_comp_set_options, get_bill_freqs from db import get_bill_data, new_bill, update_bill_data, delete_bill +from db import get_bill_ui, save_ui from db import get_bill_types, insert_bill_type, update_bill_type, delete_bill_type, use_growth from bills import process_bill_data from collections import defaultdict, Counter @@ -144,9 +145,11 @@ def DisplayBillData(): bill_data = get_bill_data() bill_types = get_bill_types() bill_freqs = get_bill_freqs() + bill_ui = get_bill_ui() + print( f"bu={bill_ui}" ) process_bill_data(bill_data, bill_types, bill_freqs) bill_data = get_bill_data() - return render_template('bills.html', bill_data=bill_data, bill_types=bill_types, bill_freqs=bill_freqs ) + return render_template('bills.html', bill_data=bill_data, bill_types=bill_types, bill_freqs=bill_freqs, bill_ui=bill_ui ) @app.route('/newbilltype', methods=['POST']) def InsertBillType(): @@ -191,6 +194,13 @@ def UseGrowth(): use_growth( data['bill_type'], data['which_growth'] ) return "200" +@app.route('/saveui', methods=['POST']) +def SaveUI(): + data = request.get_json() + save_ui( data ) + return "200" + + # Main program if __name__ == '__main__': app.run(debug=True) diff --git a/templates/bills.html b/templates/bills.html index e85d7c0..f3e5c29 100644 --- a/templates/bills.html +++ b/templates/bills.html @@ -103,7 +103,7 @@ @@ -157,9 +157,16 @@ function ToggleEstimated() { if( $("#showEstimated").is(":checked") ) + { + val=1 $('.est').removeClass('d-none') + } else + { + val=0 $('.est').addClass('d-none') + } + $.ajax( { type: 'POST', url: '/saveui', contentType: 'application/json', data: JSON.stringify( { 'show_estimated': val } ), success: function() { } } ) } function StartNewBillData() @@ -319,6 +326,11 @@ data: JSON.stringify( { 'bill_type': bt, 'which_growth': which } ), success: function() { window.location='bills' } } ) } + function SaveTab( last_tab ) + { + $.ajax( { type: 'POST', url: '/saveui', contentType: 'application/json', data: JSON.stringify( { 'last_tab': last_tab } ), success: function() { } } ) + } + $(document).ready(function () { // if amount has enter key in it then save, but dont do this for other fields in new bill $("#new-bill-data-amount").keyup(function(event){ if(event.which == 13){ $("#save-bill").click(); } event.preventDefault(); }); @@ -329,8 +341,15 @@ // force something to be active $('#bills-nav .nav-link').first().addClass('active'); - // now go back to last tab, as per something I dont know yet :) - $('#tab-Water').tab('show'); + {% if bill_ui %} + // if we have data on it - go back to last tab + $('#tab-but-{{bill_ui.last_tab}}').tab('show'); + {% if bill_ui.show_estimated %} + $('#showEstimated').click() + {% endif %} + {% else %} + $('#tab-but-1').tab('show'); + {% endif %} } )