From: Metabox Date: Sun, 4 Aug 2019 02:35:46 +0000 (+1000) Subject: Further NOTES table development. X-Git-Url: https://lifelog.hopto.org/gitweb/?a=commitdiff_plain;h=731a3d82d5bf6b6c3015106056117df6faa1ab05;p=LifeLog.git Further NOTES table development. --- diff --git a/htdocs/cgi-bin/json.cgi b/htdocs/cgi-bin/json.cgi index d4b0c76..64c546a 100755 --- a/htdocs/cgi-bin/json.cgi +++ b/htdocs/cgi-bin/json.cgi @@ -91,7 +91,7 @@ my $strp = DateTime::Format::Strptime->new( &processSubmit; ############### if($action eq 'load' && !$error){ - $json = $response; + $json = $response; } else{ &defaultJSON; diff --git a/htdocs/cgi-bin/main.cgi b/htdocs/cgi-bin/main.cgi index 80e0b7d..70861bf 100755 --- a/htdocs/cgi-bin/main.cgi +++ b/htdocs/cgi-bin/main.cgi @@ -37,6 +37,7 @@ our $AUTO_WRD_LMT = 1000; our $FRAME_SIZE = 0; our $RTF_SIZE = 0; our $THEME = 'Standard'; + #END OF SETTINGS my $cgi = CGI->new; @@ -83,98 +84,95 @@ my $stmE = " ORDER BY DATE DESC;"; my $stmD = ""; my $sm_reset_all; - my $lang = Date::Language->new($LANGUAGE); my $today = DateTime->now; $today->set_time_zone($TIME_ZONE); - - if ( !$rs_dat_to && $rs_dat_from ) { - my $dur = $today; - $dur->add(months => 1); - $rs_dat_to = DateTime::Format::SQLite->parse_datetime( $dur ); + my $dur = $today; + $dur->add( months => 1 ); + $rs_dat_to = DateTime::Format::SQLite->parse_datetime($dur); } if ( $rs_dat_from && $rs_dat_to ) { - $stmD =qq( DATE BETWEEN date('$rs_dat_from') AND date('$rs_dat_to') ); + $stmD = qq( DATE BETWEEN date('$rs_dat_from') AND date('$rs_dat_to') ); } + #Toggle if search deployed. my $toggle = ""; -if ( $rs_keys || $rs_cat_idx || $stmD || $prm_vc > 0) { $toggle = 1; } +if ( $rs_keys || $rs_cat_idx || $stmD || $prm_vc > 0 ) { $toggle = 1; } $session->expire($SESSN_EXPR); #tag related framed sizing. my @arrwh = split /x/, $IMG_W_H; if ( @arrwh == 2 ) { - $imgw = $arrwh[0]; - $imgh = $arrwh[1]; + $imgw = $arrwh[0]; + $imgh = $arrwh[1]; } else { #defaults - $imgw = 210; - $imgh = 120; + $imgw = 210; + $imgh = 120; } my $bgcol = '#c8fff8'; -if($THEME eq 'Sun'){ - $bgcol = '#D4AF37'; +if ( $THEME eq 'Sun' ) { + $bgcol = '#D4AF37'; } print $cgi->header( - -expires => "0s", - -charset => "UTF-8" - ); + -expires => "0s", + -charset => "UTF-8" +); print $cgi->start_html( - -title => "Personal Log", - -BGCOLOR => $bgcol, - -onload => "loadedBody('" . $toggle . "');", - -style => [ - { -type => 'text/css', -src => 'wsrc/main.css' }, - { -type => 'text/css', -src => 'wsrc/jquery-ui.css' }, - { -type => 'text/css', -src => 'wsrc/jquery-ui.theme.css' }, - { - -type => 'text/css', - -src => 'wsrc/jquery-ui-timepicker-addon.css' - }, - { -type => 'text/css', -src => 'wsrc/tip-skyblue/tip-skyblue.css' }, - { - -type => 'text/css', - -src => 'wsrc/tip-yellowsimple/tip-yellowsimple.css' - }, - - # {-type => 'application/atom+xml', - # -src=>'https://quilljs.com/feed.xml', -title=>"Quill - Your powerful rich text editor"}, - {-type => 'text/css', -src=>'wsrc/quill/katex.min.css'}, - {-type => 'text/css', -src=>'wsrc/quill/monokai-sublime.min.css'}, - {-type => 'text/css', -src=>'wsrc/quill/quill.snow.css'}, - - - ], - -script => [ - { -type => 'text/javascript', -src => 'wsrc/main.js' }, - { -type => 'text/javascript', -src => 'wsrc/jquery.js' }, - { -type => 'text/javascript', -src => 'wsrc/jquery-ui.js' }, - { - -type => 'text/javascript', - -src => 'wsrc/jquery-ui-timepicker-addon.js' - }, - { - -type => 'text/javascript', - -src => 'wsrc/jquery-ui-sliderAccess.js' - }, - { -type => 'text/javascript', -src => 'wsrc/jquery.poshytip.js' }, - - { -type => 'text/javascript', -src => 'wsrc/quill/katex.min.js'}, - { -type => 'text/javascript', -src => 'wsrc/quill/highlight.min.js'}, - { -type => 'text/javascript', -src => 'wsrc/quill/quill.min.js'}, - - ], - ); + -title => "Personal Log", + -BGCOLOR => $bgcol, + -onload => "loadedBody('" . $toggle . "');", + -style => [ + { -type => 'text/css', -src => 'wsrc/main.css' }, + { -type => 'text/css', -src => 'wsrc/jquery-ui.css' }, + { -type => 'text/css', -src => 'wsrc/jquery-ui.theme.css' }, + { + -type => 'text/css', + -src => 'wsrc/jquery-ui-timepicker-addon.css' + }, + { -type => 'text/css', -src => 'wsrc/tip-skyblue/tip-skyblue.css' }, + { + -type => 'text/css', + -src => 'wsrc/tip-yellowsimple/tip-yellowsimple.css' + }, + +# {-type => 'application/atom+xml', +# -src=>'https://quilljs.com/feed.xml', -title=>"Quill - Your powerful rich text editor"}, + { -type => 'text/css', -src => 'wsrc/quill/katex.min.css' }, + { -type => 'text/css', -src => 'wsrc/quill/monokai-sublime.min.css' }, + { -type => 'text/css', -src => 'wsrc/quill/quill.snow.css' }, + + ], + -script => [ + { -type => 'text/javascript', -src => 'wsrc/main.js' }, + { -type => 'text/javascript', -src => 'wsrc/jquery.js' }, + { -type => 'text/javascript', -src => 'wsrc/jquery-ui.js' }, + { + -type => 'text/javascript', + -src => 'wsrc/jquery-ui-timepicker-addon.js' + }, + { + -type => 'text/javascript', + -src => 'wsrc/jquery-ui-sliderAccess.js' + }, + { -type => 'text/javascript', -src => 'wsrc/jquery.poshytip.js' }, + + { -type => 'text/javascript', -src => 'wsrc/quill/katex.min.js' }, + { -type => 'text/javascript', -src => 'wsrc/quill/highlight.min.js' }, + { -type => 'text/javascript', -src => 'wsrc/quill/quill.min.js' }, + + ], +); my $rv; my $st; -my $stmtCat = "SELECT * FROM CAT;"; +my $stmtCat = "SELECT ID, NAME, DESCRIPTION FROM CAT;"; my $stmt = "SELECT rowid, ID_CAT, DATE, LOG, AMMOUNT, RTF FROM LOG ORDER BY DATE DESC, rowid DESC;"; @@ -188,38 +186,37 @@ my $cats = qq('; -my $cat_descriptions = ""; -for my $key ( keys %desc ) { - my $kv = $desc{$key}; - if ( $kv ne ".." ) { - $cat_descriptions .= qq(
  • $kv
  • \n); +my $cat_descs = ""; +for my $key ( keys %hshDesc ) { + my $kv = $hshDesc{$key}; + if ( $kv ne ".." ) { + $cat_descs .= qq(
  • $kv
  • \n); } } - my $tbl = qq(
    @@ -231,287 +228,293 @@ qq(Edit); -if (defined $prm_vc) { #view category form selection - $rs_cat_idx = $prm_vc; -} + if ( defined $prm_vc ) { #view category form selection + $rs_cat_idx = $prm_vc; + } -if ($rs_keys && $rs_keys ne '*') { - - my @keywords = split / /, $rs_keys; - if ($rs_cat_idx) { - $stmS = $stmS . " ID_CAT='" . $rs_cat_idx . "' AND"; - } - else { - $stmS = $stmS . " ID_CAT='0' OR"; - } - if ($stmD) { - $stmS = $stmS . $stmD . " AND"; - } - - if (@keywords) { - foreach (@keywords) { - $stmS = $stmS . " LOWER(LOG) REGEXP '\\b" . lc $_ . "\\b'"; - if ( \$_ != \$keywords[-1] ) { - $stmS = $stmS . " OR "; + if ( $rs_keys && $rs_keys ne '*' ) { + + my @keywords = split / /, $rs_keys; + if ($rs_cat_idx) { + $stmS = $stmS . " ID_CAT='" . $rs_cat_idx . "' AND"; + } + else { + $stmS = $stmS . " ID_CAT='0' OR"; + } + if ($stmD) { + $stmS = $stmS . $stmD . " AND"; + } + + if (@keywords) { + foreach (@keywords) { + $stmS = $stmS . " LOWER(LOG) REGEXP '\\b" . lc $_ . "\\b'"; + if ( \$_ != \$keywords[-1] ) { + $stmS = $stmS . " OR "; + } } - } - $stmt = $stmS . $stmE; + $stmt = $stmS . $stmE; + } } -} -elsif ($rs_cat_idx) { + elsif ($rs_cat_idx) { - if ($stmD) { - $stmt = $stmS . $stmD . " AND ID_CAT='" . $rs_cat_idx . "'" . $stmE; - } - else { - $stmt = $stmS . " ID_CAT='" . $rs_cat_idx . "'" . $stmE; + if ($stmD) { + $stmt = $stmS . $stmD . " AND ID_CAT='" . $rs_cat_idx . "'" . $stmE; + } + else { + $stmt = $stmS . " ID_CAT='" . $rs_cat_idx . "'" . $stmE; + } + } + else { + if ($stmD) { + $stmt = $stmS . $stmD . $stmE; + } } -} -else { - if ($stmD) { - $stmt = $stmS . $stmD . $stmE; - } -} ############### -&processSubmit; + &processSubmit; ############### -# -# Uncomment bellow to see main query statement issued! -#print $cgi->pre("### -> ".$stmt); -# -my $tfId = 0; -my $id = 0; -my $tbl_start = index $stmt, "<="; -my $re_a_tag = qr/.*<\/a>/si; - -if ( $tbl_start > 0 ) { - - #check if we are at the beggining of the LOG table? - my $stc = - $db->prepare('select rowid from LOG order by rowid DESC LIMIT 1;'); - $stc->execute(); - my @row = $stc->fetchrow_array(); - if ( $row[0] == $rs_prev && $rs_cur == $rs_prev ) { - $tbl_start = -1; - } - $stc->finish(); -} -# -#Fetch entries! -# -my $CID_EVENT = 9; -my $tags = ""; -my $sum = 0; -my $exp = 0; -$st = $db->prepare($stmt); -$rv = $st->execute() or die or die "

    Error->" & $DBI::errstri & "

    "; -if ( $rv < 0 ) { - print "

    Error->" & $DBI::errstri & "

    "; -} -while ( my @row = $st->fetchrow_array() ) { + # + # Uncomment bellow to see main query statement issued! + #print $cgi->pre("### -> ".$stmt); + # + my $tfId = 0; + my $id = 0; + my $tbl_start = index $stmt, "<="; + my $re_a_tag = qr/.*<\/a>/si; + + if ( $tbl_start > 0 ) { + + #check if we are at the beggining of the LOG table? + my $stc = + $db->prepare('select rowid from LOG order by rowid DESC LIMIT 1;'); + $stc->execute(); + my @row = $stc->fetchrow_array(); + if ( $row[0] == $rs_prev && $rs_cur == $rs_prev ) { + $tbl_start = -1; + } + $stc->finish(); + } + # + #Fetch entries! + # + my $CID_EVENT = 9; + my $tags = ""; + my $sum = 0; + my $exp = 0; + $st = $db->prepare($stmt); + $rv = $st->execute() or die or die "

    Error->" & $DBI::errstri & "

    "; + if ( $rv < 0 ) { + print "

    Error->" & $DBI::errstri & "

    "; + } + while ( my @row = $st->fetchrow_array() ) { + + $id = $row[0]; + + my $ct = $hshCats{ $row[1] }; + my $dt = DateTime::Format::SQLite->parse_datetime( $row[2] ); + my $log = $row[3]; + my $am = &cam( $row[4] ); + my $rtf = $row[5]; + + if ( $ct eq 'Expense' ) { + $exp += $row[4]; + } + else { + $sum += $row[4]; + } - $id = $row[0]; - - my $ct = $hshCats{ $row[1] }; - my $dt = DateTime::Format::SQLite->parse_datetime( $row[2] ); - my $log = $row[3]; - my $am = &cam($row[4]); - my $rtf = $row[5]; - - if($ct eq 'Expense'){ - $exp += $row[4]; - }else{ - $sum += $row[4]; - } - - #Apostrophe in the log value is doubled to avoid SQL errors. - $log =~ s/''/'/g; - # - if ( !$ct ) { - $ct = $hshCats{1}; - } - if ( !$dt ) { - $dt = $today; - } - if ( !$am ) { - $am = "0.00"; - } - if ( $tbl_rc_prev == 0 ) { - $tbl_rc_prev = $id; - } - if ( $tfId == 1 ) { - $tfId = 0; - } - else { - $tfId = 1; - } - - my $sub = ""; - my $tagged = 0; - my $log_orig = $log; + #Apostrophe in the log value is doubled to avoid SQL errors. + $log =~ s/''/'/g; + # + if ( !$ct ) { + $ct = $hshCats{1}; + } + if ( !$dt ) { + $dt = $today; + } + if ( !$am ) { + $am = "0.00"; + } + if ( $tbl_rc_prev == 0 ) { + $tbl_rc_prev = $id; + } + if ( $tfId == 1 ) { + $tfId = 0; + } + else { + $tfId = 1; + } + + my $sub = ""; + my $tagged = 0; + my $log_orig = $log; #Check for LNK takes precedence here as we also parse plain placed URL's for http protocol later. - if ( $log =~ /<', $idx ); - $sub = substr( $log, $idx + 1, $len - $idx - 1 ); - my $url = qq($sub); - $tagged = 1; - $log =~ s/</$url/osi; - } - - if ( $log =~ /<', $idx ); - $sub = substr( $log, $idx + 1, $len - $idx - 1 ); - my $url = qq(); - $tagged = 1; - $log =~ s/</$url/osi; - } - elsif ( $log =~ /<', $idx ); - $sub = substr( $log, $idx + 1, $len - $idx - 1 ); - my $lnk = $sub; - if ( $lnk =~ /_frm.png/ ) { - my $ext = substr( $lnk, index( $lnk, '.' ) ); - $lnk =~ s/_frm.png/$ext/; - if ( not -e "./images/$lnk" ) { - $lnk =~ s/$ext/.jpg/; - if ( not -e "./images/$lnk" ) { + if ( $log =~ /<', $idx ); + $sub = substr( $log, $idx + 1, $len - $idx - 1 ); + my $url = qq($sub); + $tagged = 1; + $log =~ s/</$url/osi; + } + + if ( $log =~ /<', $idx ); + $sub = substr( $log, $idx + 1, $len - $idx - 1 ); + my $url = qq(); + $tagged = 1; + $log =~ s/</$url/osi; + } + elsif ( $log =~ /<', $idx ); + $sub = substr( $log, $idx + 1, $len - $idx - 1 ); + my $lnk = $sub; + if ( $lnk =~ /_frm.png/ ) { + my $ext = substr( $lnk, index( $lnk, '.' ) ); + $lnk =~ s/_frm.png/$ext/; + if ( not -e "./images/$lnk" ) { + $lnk =~ s/$ext/.jpg/; + if ( not -e "./images/$lnk" ) { $lnk =~ s/.jpg/.gif/; - } - } - $lnk = - qq(\n + } + } + $lnk = + qq(\n ); - } - else { - #TODO fetch from web locally the original image. - $lnk=qq(\n); - } - $log =~ s/</$lnk/o; - $tagged = 1; - } - - - - #Replace with a full link an HTTP URI - if($log =~ /