harbour-expenditure/qml/harbour-expenditure.qml
2023-11-13 19:18:38 +01:00

410 lines
21 KiB
QML

import QtQuick 2.6
import Sailfish.Silica 1.0
import QtQuick.LocalStorage 2.0
import "pages"
ApplicationWindow {
id: main
initialPage: Component { FirstPage { } }
cover: Qt.resolvedUrl("cover/CoverPage.qml")
allowedOrientations: defaultAllowedOrientations
Item {
id: storageItem
// general functions
function getDatabase() {
return storageItem.LocalStorage.openDatabaseSync("Bible_DB", "0.1", "BibleDatabaseComplete", 5000000); // 5 MB estimated size
}
function removeFullTable (tableName) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) { tx.executeSql('DROP TABLE IF EXISTS ' + tableName) });
}
function getTableCount (tableName, default_value) {
var db = getDatabase();
var res="";
try {
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT count(*) AS some_info FROM ' + tableName + ';');
if (rs.rows.length > 0) {
res = rs.rows.item(0).some_info;
} else {
res = default_value;
}
})
} catch (err) {
//console.log("Database " + err);
res = default_value;
};
return res
}
// settings
function setSettings( setting, value ) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS ' + 'settings_table' + '(setting TEXT UNIQUE, value TEXT)');
var rs = tx.executeSql('INSERT OR REPLACE INTO ' + 'settings_table' + ' VALUES (?,?);', [setting,value]);
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function getSettings( setting, default_value ) {
var db = getDatabase();
var res="";
try {
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT value FROM '+ 'settings_table' +' WHERE setting=?;', [setting]);
if (rs.rows.length > 0) {
res = rs.rows.item(0).value;
} else {
res = default_value;
}
if (res === null) {
res = default_value
}
})
} catch (err) {
//console.log("Database " + err);
res = default_value;
};
//console.log(setting + " = " + res)
return res
}
// all projects available
function setProject( project_id_timestamp, project_name, project_members, project_recent_payer_boolarray, project_recent_beneficiaries_boolarray, project_base_currency ) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS ' + 'projects_table' + ' (project_id_timestamp TEXT,
project_name TEXT,
project_members TEXT,
project_recent_payer_boolarray TEXT,
project_recent_beneficiaries_boolarray TEXT,
project_base_currency TEXT)' );
var rs = tx.executeSql('INSERT OR REPLACE INTO ' + 'projects_table' + ' VALUES (?,?,?,?,?,?);', [project_id_timestamp,
project_name,
project_members,
project_recent_payer_boolarray,
project_recent_beneficiaries_boolarray,
project_base_currency ]);
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function updateProject ( project_id_timestamp, project_name, project_members, project_recent_payer_boolarray, project_recent_beneficiaries_boolarray, project_base_currency ) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS ' + 'projects_table' + ' (project_id_timestamp TEXT,
project_name TEXT,
project_members TEXT,
project_recent_payer_boolarray TEXT,
project_recent_beneficiaries_boolarray TEXT,
project_base_currency TEXT)' );
var rs = tx.executeSql('UPDATE projects_table'
+ ' SET project_name="' + project_name
+ '", project_members="' + project_members
+ '", project_recent_payer_boolarray="' + project_recent_payer_boolarray
+ '", project_recent_beneficiaries_boolarray="' + project_recent_beneficiaries_boolarray
+ '", project_base_currency="' + project_base_currency
+ '" WHERE project_id_timestamp=' + project_id_timestamp + ';');
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function updateField_Project ( project_id_timestamp, field_name, new_value ) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS ' + 'projects_table' + ' (project_id_timestamp TEXT,
project_name TEXT,
project_members TEXT,
project_recent_payer_boolarray TEXT,
project_recent_beneficiaries_boolarray TEXT,
project_base_currency TEXT)' );
var rs = tx.executeSql('UPDATE projects_table SET ' + field_name + '="' + new_value + '" WHERE project_id_timestamp=' + project_id_timestamp + ';');
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function deleteProject (project_id_timestamp) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS ' + 'projects_table' + ' (project_id_timestamp TEXT,
project_name TEXT,
project_members TEXT,
project_recent_payer_boolarray TEXT,
project_recent_beneficiaries_boolarray TEXT,
project_base_currency TEXT)' );
var rs = tx.executeSql('DELETE FROM ' + 'projects_table WHERE project_id_timestamp=' + project_id_timestamp + ';');
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
removeFullTable("table_" + project_id_timestamp)
return res;
}
function getAllProjects( default_value ) {
var db = getDatabase();
var res=[];
try {
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT * FROM '+ 'projects_table;')
if (rs.rows.length > 0) {
for (var i = 0; i < rs.rows.length; i++) {
res.push([rs.rows.item(i).project_id_timestamp,
rs.rows.item(i).project_name,
rs.rows.item(i).project_members,
rs.rows.item(i).project_recent_payer_boolarray,
rs.rows.item(i).project_recent_beneficiaries_boolarray,
rs.rows.item(i).project_base_currency,
])
}
} else {
res = default_value;
}
})
} catch (err) {
//console.log("Database " + err);
res = default_value;
};
return res
}
// all exchange rates used
function countExchangeRateOccurances (exchange_rate_currency, default_value) {
var db = getDatabase();
var res="";
try {
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT count(*) AS some_info FROM exchange_rates_table WHERE exchange_rate_currency=?;', [exchange_rate_currency]);
if (rs.rows.length > 0) {
res = rs.rows.item(0).some_info;
} else {
res = default_value;
}
})
} catch (err) {
//console.log("Database " + err);
res = default_value;
};
return res
}
function setExchangeRate( exchange_rate_currency, exchange_rate_value ) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS ' + 'exchange_rates_table' + ' (exchange_rate_currency TEXT, exchange_rate_value TEXT)' );
var rs = tx.executeSql('INSERT OR REPLACE INTO ' + 'exchange_rates_table' + ' VALUES (?,?);', [exchange_rate_currency, exchange_rate_value ]);
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function updateExchangeRate( exchange_rate_currency, exchange_rate_value ) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS exchange_rates_table (exchange_rate_currency TEXT, exchange_rate_value TEXT)');
var rs = tx.executeSql('UPDATE exchange_rates_table SET exchange_rate_value="' + exchange_rate_value + '" WHERE exchange_rate_currency="' + exchange_rate_currency + '";');
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function getExchangeRate(exchange_rate_currency, default_value) {
var db = getDatabase();
var res=[];
try {
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT * FROM '+ 'exchange_rates_table' +' WHERE exchange_rate_currency=?;', [exchange_rate_currency]);
if (rs.rows.length > 0) {
for (var i = 0; i < rs.rows.length; i++) {
res.push(rs.rows.item(i).exchange_rate_value)
}
} else {
res = default_value;
}
})
} catch (err) {
//console.log("Database " + err);
res = default_value;
};
return res
}
// all expenes in current project
function setExpense( project_name_table, id_unixtime_created, date_time, expense_name, expense_sum, expense_currency, expense_info, expense_payer, expense_members ) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS table_' + project_name_table + ' (id_unixtime_created TEXT,
date_time TEXT,
expense_name TEXT,
expense_sum TEXT,
expense_currency TEXT,
expense_info TEXT,
expense_payer TEXT,
expense_members TEXT)' );
var rs = tx.executeSql('INSERT OR REPLACE INTO table_' + project_name_table + ' VALUES (?,?,?,?,?,?,?,?);', [ id_unixtime_created,
date_time,
expense_name,
expense_sum,
expense_currency,
expense_info,
expense_payer,
expense_members ]);
if (rs.rowsAffected > 0) {
res = "OK";
//console.log("project info found and updated")
} else {
res = "Error";
}
}
);
return res;
}
function updateExpense ( project_name_table, id_unixtime_created, date_time, expense_name, expense_sum, expense_currency, expense_info, expense_payer, expense_members ) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS table_' + project_name_table + ' (id_unixtime_created TEXT,
date_time TEXT,
expense_name TEXT,
expense_sum TEXT,
expense_currency TEXT,
expense_info TEXT,
expense_payer TEXT,
expense_members TEXT)' );
var rs = tx.executeSql('UPDATE table_' + project_name_table
+ ' SET date_time="' + date_time
+ '", expense_name="' + expense_name
+ '", expense_sum="' + expense_sum
+ '", expense_currency="' + expense_currency
+ '", expense_info="' + expense_info
+ '", expense_payer="' + expense_payer
+ '", expense_members="' + expense_members
+ '" WHERE id_unixtime_created=' + id_unixtime_created + ';');
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function deleteExpense (project_id_timestamp, id_unixtime_created) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS table_' + project_id_timestamp + ' (id_unixtime_created TEXT,
date_time TEXT,
expense_name TEXT,
expense_sum TEXT,
expense_currency TEXT,
expense_info TEXT,
expense_payer TEXT,
expense_members TEXT)' );
//var rs = tx.executeSql('DELETE FROM table_' + project_id_timestamp + ';');
var rs = tx.executeSql('DELETE FROM table_' + project_id_timestamp + ' WHERE id_unixtime_created=' + id_unixtime_created + ';');
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function deleteAllExpenses (project_id_timestamp) {
var db = getDatabase();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS table_' + project_id_timestamp + ' (id_unixtime_created TEXT,
date_time TEXT,
expense_name TEXT,
expense_sum TEXT,
expense_currency TEXT,
expense_info TEXT,
expense_payer TEXT,
expense_members TEXT)' );
var rs = tx.executeSql('DELETE FROM table_' + project_id_timestamp + ';');
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function getAllExpenses( project_name_table, default_value ) {
var db = getDatabase();
var res=[];
try {
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT * FROM table_'+ project_name_table + ';');
if (rs.rows.length > 0) {
for (var i = 0; i < rs.rows.length; i++) {
res.push([rs.rows.item(i).id_unixtime_created,
rs.rows.item(i).date_time,
rs.rows.item(i).expense_name,
rs.rows.item(i).expense_sum,
rs.rows.item(i).expense_currency,
rs.rows.item(i).expense_info,
rs.rows.item(i).expense_payer,
rs.rows.item(i).expense_members,
])
}
} else {
res = default_value;
}
})
} catch (err) {
//console.log("Database " + err);
res = default_value;
};
return res
}
}
}