#DEFAULT SETTINGS HERE!
our $REC_LIMIT = 25;
our $TIME_ZONE = 'Australia/Sydney';
+our $LANGUAGE = 'English';
our $PRC_WIDTH = '60';
our $LOG_PATH = '../../dbLifeLog/';
our $SESSN_EXPR = '+30m';
+our $DATE_UNI = '0';
our $RELEASE_VER = '1.3';
#END OF SETTINGS
}
}
-
-
my $frm = qq(
<form id="frm_config" action="config.cgi">).$tbl.qq(
<tr class="r1">
<td><input type="text" name="cade" value="" size="64"/></td>
</tr>
<tr class="r1">
- <td colspan="2"><input type="submit" value="Add New Category" onclick="return submitNewCategory()"/></td>
- <td colspan="1"><input type="submit" value="Change"/></td>
+ <td colspan="2"><a href="#bottom">↡</a> <input type="submit" value="Add New Category" onclick="return submitNewCategory()"/></td>
+ <td colspan="1"><b>Log Configuration In -> $dbname</b> <input type="submit" value="Change"/></td>
</tr>
<tr class="r1">
<td colspan="3"><div style="text-align:left; float"><font color="red">WARNING!</font>
- Removing and changing categories is permanent!<br>Adding one must have unique ID. <br>
- Blanking an category name will remove and seek change LOG <br>records to Unspecified (id 1)! <br>
- Also ONLY the category <b>Unspecified</b> You can't REMOVE!<br>If changing here things?
- Make a backup! (copy existing db file)</div>
+ Removing or changing categories is permanent! Each category one must have an unique ID.
+ Blank a category name to remove it. LOG records will change to the Unspecified (id 1) category! <br>
+ The category <b>Unspecified</b>, can't be removed!
+ </div>
</td>
</tr>
</table><input type="hidden" name="cchg" value="1"/></form><br>);
my $n = $row[1];
my $v = $row[2];
if($n eq "TIME_ZONE"){
- $n = '<a href="time_zones.cgi" target=_blank>'.$n.'</a>';
- if($tz){
- $v = $tz;
- }
- $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';
-
- }elsif($n ne "RELEASE_VER"){
+ $n = '<a href="time_zones.cgi" target=_blank>'.$n.'</a>';
+ if($tz){
+ $v = $tz;
+ }
+ $v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';
+ }
+ elsif($n eq "DATE_UNI"){
+ my($l,$u)=("","");
+ if($v == 0){
+ $l = "SELECTED"
+ }
+ else{
+ $u = "SELECTED"
+ }
+ $v = qq(<select id="dumi" name="var$i">
+ <option value="0" $l>Locale</option>
+ <option value="1" $u>Universal</option>
+ </select>);
+ }
+ elsif($n ne "RELEASE_VER"){
$v = '<input name="var'.$i.'" type="text" value="'.$v.'" size="12">';
}
$tbl = $tbl.
#Page printout from here!
#
my $prc_hdr = $PRC_WIDTH-2;
-print '<center>';
-print "<div class=\"r1\" style=\"width:$prc_hdr%; padding:12px;margin:5px;\"><b>Log Configuration In -> $dbname</b></div>";
+ print '<center><a name="top"/>';
print "\n<div>\n" . $frm ."\n</div>\n";
print "\n<div >\n" . $frmVars."\n</div>\n";
print "\n<div>\nSTATUS:" .$status. "\n</div>\n";
print qq(
<br><div><a href="main.cgi">Back to Main Log</a></div><br><hr>\n
-
-
<table border=0>
<tr><td><H3>CSV File Format</H3></td></tr>\n
<form action="config.cgi" method="post" enctype="multipart/form-data">\n
</table><hr>
- <br><div>[<a href="config.cgi?csv=1">Export Log to CSV</a>]
+ <br><div><a href="#top">↟</a> [<a href="config.cgi?csv=1">Export Log to CSV</a>]
[<a href="config.cgi?csv=2">View the Log in CSV Format</a>]</div>\n
<br><div>[<a href="config.cgi?csv=3">Export Categories to CSV</a>]
- [<a href="config.cgi?csv=4">View the Categories in CSV Format</a>]</div>\n<hr>
+ [<a href="config.cgi?csv=4">View the Categories in CSV Format</a>]<a name="bottom"/></div>\n
+ <hr>
);
print '</center>';
}
-sub getConfiguration{
- try{
- $dbs = $db->prepare("SELECT * FROM CONFIG;");
- $dbs->execute();
- while (my @r=$dbs->fetchrow_array()){
-
- switch ($r[1]) {
- case "REC_LIMIT" {$REC_LIMIT=$r[2]}
- case "TIME_ZONE" {$TIME_ZONE=$r[2]}
- case "PRC_WIDTH" {$PRC_WIDTH=$r[2]}
- case "SESSN_EXPR" {$SESSN_EXPR=$r[2]}
- else {print "Unknow variable setting: ".$r[1]. " == ". $r[2]}
- }
-
- }
- }
- catch{
- print "<font color=red><b>SERVER ERROR</b></font>:".$_;
- }
-}
sub changeSystemSettings{
try{
case "TIME_ZONE" {$TIME_ZONE=$var; updConfSetting($r[0],$var)}
case "PRC_WIDTH" {$PRC_WIDTH=$var; updConfSetting($r[0],$var)}
case "SESSN_EXPR"{$SESSN_EXPR=$var; updConfSetting($r[0],$var)}
+ case "DATE_UNI" {$DATE_UNI=$var; updConfSetting($r[0],$var)}
+ case "LANGUAGE" {$LANGUAGE=$var; updConfSetting($r[0],$var)}
}
}
}
}
}
-
-
sub exportLogToCSV{
try{
print "<font color=red><b>SERVER ERROR</b>->exportLogToCSV</font>:".$_;
}
}
+
sub exportCategoriesToCSV{
try{
}
}
}
+
+
+sub getConfiguration{
+ try{
+ $dbs = $db->prepare("SELECT * FROM CONFIG;");
+ $dbs->execute();
+
+ while (my @r=$dbs->fetchrow_array()){
+
+ switch ($r[1]) {
+ case "REC_LIMIT" {$REC_LIMIT=$r[2]}
+ case "TIME_ZONE" {$TIME_ZONE=$r[2]}
+ case "PRC_WIDTH" {$PRC_WIDTH=$r[2]}
+ case "SESSN_EXPR" {$SESSN_EXPR=$r[2]}
+ case "DATE_UNI" {$DATE_UNI=$r[2]}
+ case "LANGUAGE" {$LANGUAGE=$r[2]}
+ else {print "Unknow variable setting: ".$r[1]. " == ". $r[2]}
+ }
+
+ }
+ }
+ catch{
+ print "<font color=red><b>SERVER ERROR</b></font>:".$_;
+ }
+
+}
\ No newline at end of file
use DateTime::Duration;
use Text::CSV;
-
#DEFAULT SETTINGS HERE!
our $REC_LIMIT = 25;
our $TIME_ZONE = 'Australia/Sydney';
+our $LANGUAGE = 'English';
our $PRC_WIDTH = '60';
our $LOG_PATH = '../../dbLifeLog/';
our $SESSN_EXPR = '+30m';
+our $DATE_UNI = '0';
our $RELEASE_VER = '1.3';
#END OF SETTINGS
$st->execute();
if(!$st->fetchrow_array()) {
my $stmt = qq(
- CREATE TABLE CONFIG(
- ID TINY PRIMARY KEY NOT NULL,
- NAME VCHAR(16),
- VALUE VCHAR(64)
- );
+ CREATE TABLE CONFIG(
+ ID TINY PRIMARY KEY NOT NULL,
+ NAME VCHAR(16),
+ VALUE VCHAR(64)
+ );
);
$rv = $db->do($stmt);
- populateConfig($db);
-
- }
- else{
- #TODO Check table and update existing table for subsequent releases with new settings.
- $st = $db->prepare('SELECT * FROM CONFIG');
- $st->execute();
- if(!$st->fetchrow_array()) {
- populateConfig($db);
- }
}
+ populateConfig($db);
+
}
catch{
print $cgi->header;
exit;
}
}
+sub populateConfig{
+
+ open(my $fh, '<', './main.cnf' ) or die "Can't open main.cnf: $!";
+ my $db = shift;
+ my ($did,$name, $value);
+
+ my $st = $db->prepare("SELECT count(*) FROM CONFIG;");
+ $st->execute();
+ my $cnt = $st->fetchrow_array();
+ if($cnt != 0){
+ return;
+ }
+try{
+ while (my $line = <$fh>) {
+ chomp $line;
+ my %hsh = $line =~ m[(\S+)\s*=\s*(\S+)]g;
+ for my $key (keys %hsh) {
+ my %nash = $key =~ m[(\S+)\s*\|\$\s*(\S+)]g;
+
+ for my $id (keys %nash) {
+ $did = $id;
+ $name = $nash{$id};
+ $value = $hsh{$key};
+ my $st = $db->prepare("SELECT * FROM CONFIG WHERE NAME LIKE '$name';");
+ $st->execute();
+ if(!$st->fetchrow_array()){
+ #TODO Check if script id is unique to database? If not script prevails to database entry.
+ #if user setting from previous release, must be migrated later.
+ $st = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?)');
+ $did = $id;
+ $st->execute($id, $name,$value);
+ }
+ }
+ }
+ }
+
+ close $fh;
+ } catch{
+ close $fh;
+ print $cgi->header;
+ print "<font color=red><b>SERVER ERROR</b></font> [$did, $name,$value]:".$_;
+ print $cgi->end_html;
+ exit;
+ }
+}
sub selSQLTbl{
my $name = $_[0];
$st->finish();
}
-sub populateConfig{
- my $db = shift;
- my $st = $db->prepare('INSERT INTO CONFIG VALUES (?,?,?)');
- $st->execute(0,"RELEASE_VER",$RELEASE_VER);
- $st->execute(1,"REC_LIMIT", $REC_LIMIT);
- $st->execute(3,"TIME_ZONE", $TIME_ZONE);
- $st->execute(5,"PRC_WIDTH", $PRC_WIDTH);
- $st->execute(8,"SESSN_EXPR", $SESSN_EXPR);
-}
-
sub removeOldSessions{
opendir(DIR, $LOG_PATH);
use DateTime;
use DateTime::Format::SQLite;
use DateTime::Duration;
+use Date::Language;
use Date::Parse;
use Time::localtime;
use Regexp::Common qw /URI/;
#DEFAULT SETTINGS HERE!
our $REC_LIMIT = 25;
our $TIME_ZONE = 'Australia/Sydney';
+our $LANGUAGE = 'English';
our $PRC_WIDTH = '60';
our $LOG_PATH = '../../dbLifeLog/';
our $SESSN_EXPR = '+30m';
+our $DATE_UNI = '0';
our $RELEASE_VER = '1.3';
#END OF SETTINGS
);
my $rv;
my $st;
+my $lang = Date::Language->new($LANGUAGE);
my $today = DateTime->now;
$today->set_time_zone( $TIME_ZONE );
-
+
my $stmtCat = "SELECT * FROM CAT;";
my $stmt = "SELECT rowid, ID_CAT, DATE, LOG, AMMOUNT FROM LOG ORDER BY rowid DESC, DATE DESC;";
$cats = $cats.'</select>';
-
my $tbl = qq(<form id="frm_log" action="remove.cgi" onSubmit="return formDelValidation();">
<table class="tbl" border="0" width="$PRC_WIDTH%">
<tr class="hdr">
<th class="tbl">Category</th><th>Edit</th>
</tr>);
-
if($rs_keys){
my @keywords = split / /, $rs_keys;
#
# Enable to see main query statement issued!
#print $cgi->pre("### -> ".$stmt);
-
-
my $tfId = 0;
my $id = 0;
my $tbl_start = index $stmt, "<=";
}elsif(1 == $row[1]){
$log = "<font color='midnightblue' style='font-weight:bold;font-style:italic'>$log</font>";
}
- my $dty=$dt->ymd;
+
+ my ($dty, $dtf) = $dt->ymd;
my $dth=$dt->hms;
+ if($DATE_UNI==1){
+ $dtf = $dty;
+ }
+ else{
+ $dtf= $lang->time2str("%d %b %Y", $dt->epoch);
+ }
$tbl .= qq(<tr class="r$tfId">
- <td id="y$id" width="10%">$dty</td>
+ <td width="15%">$dtf<input id="y$id" type="hidden" value="$dty"/></td>
<td id="t$id" width="10%" class="tbl">$dth</td>
- <td id="v$id" class="log">$log</td>
+ <td id="v$id" class="log" width="40%">$log</td>
<td id="a$id" width="10%" class="tbl">$amm</td>
<td id="c$id" width="10%" class="tbl">$ct</td>
- <td width="110px;">
+ <td width="20%">
<input class="edit" type="button" value="Edit" onclick="return edit($id);"/>
<input name="chk" type="checkbox" value="$id"/>
</td>
sub getConfiguration{
- my $st = $_[0]->prepare("SELECT * FROM CONFIG;");
- $st->execute();
+ my $db = shift;
+ try{
+ $st = $db->prepare("SELECT * FROM CONFIG;");
+ $st->execute();
+
while (my @r=$st->fetchrow_array()){
switch ($r[1]) {
-
case "REC_LIMIT" {$REC_LIMIT=$r[2]}
case "TIME_ZONE" {$TIME_ZONE=$r[2]}
- case "PRC_WIDTH" {$PRC_WIDTH=$r[2]}
- case "SESSN_EXPR"{$SESSN_EXPR=$r[2]}
+ case "PRC_WIDTH" {$PRC_WIDTH=$r[2]}
+ case "SESSN_EXPR" {$SESSN_EXPR=$r[2]}
+ case "DATE_UNI" {$DATE_UNI=$r[2]}
+ case "LANGUAGE" {$LANGUAGE=$r[2]}
else {print "Unknow variable setting: ".$r[1]. " == ". $r[2]}
-
}
}
-}
+ }
+ catch{
+ print "<font color=red><b>SERVER ERROR</b></font>:".$_;
+ }
+}
\ No newline at end of file
--- /dev/null
+
+00|$RELEASE_VER = 1.3
+01|$REC_LIMIT = 25
+03|$TIME_ZONE = Australia/Sydney
+05|$PRC_WIDTH = 60;
+08|$LOG_PATH = ../../dbLifeLog/
+10|$SESSN_EXPR = +30m
+12|$DATE_UNI = 0
+14|$LANGUAGE = English
+
<tr class="r0"><td colspan="2"><b>* DATE DIFFERENCES *</b></td></tr>';
$stm = 'SELECT DATE, LOG FROM LOG WHERE ';
-my @prms = $cgi->param('chk');
+ my @prms = $cgi->param('chk');
foreach (@prms){
$stm .= "rowid = '" . $_ ."'";
my $dt = DateTime::Format::SQLite->parse_datetime( $row[0] );
my $dif = dateDiff($dt_prev, $dt);
$tbl .= '<tr class="r1"><td>'. $dt->ymd . '</td>
- </td><td style="text-align:left;">'.$row[1]."</td></tr>".
- '<tr class="r0"><td colspan="2">'.$dif. '</td> </tr>';
+ </td><td style="text-align:left;">'.$row[1]."</td></tr>".
+ '<tr class="r0"><td colspan="2">'.$dif. '</td> </tr>';
$dt_prev = $dt;
}
-
$tbl .= '</table>';
print '<center><div>'.$tbl.'</div><br><div><a href="main.cgi">Back to Main Log</a></div></center>';
} else {
document.getElementById("el").value = ev_v.innerText;
}
- document.getElementById("ed").value = ed_v.innerText + " " + et_v.innerText;
+ document.getElementById("ed").value = ed_v.value + " " + et_v.innerText;
document.getElementById("am").value = ea_v.innerText;
//Change selected catergory
for (var i = 0, j = ec.options.length; i < j; ++i) {