From: Will Budicm Date: Fri, 31 Jul 2020 22:22:47 +0000 (+1000) Subject: Export selected to CSV. X-Git-Url: https://lifelog.hopto.org/gitweb/?a=commitdiff_plain;h=f50dc77654516196abc3fa873effb578f2244d26;p=LifeLog.git Export selected to CSV. --- diff --git a/htdocs/cgi-bin/data.cgi b/htdocs/cgi-bin/data.cgi index 6fa00f4..8b4dec9 100755 --- a/htdocs/cgi-bin/data.cgi +++ b/htdocs/cgi-bin/data.cgi @@ -19,6 +19,7 @@ use DateTime qw(); use DateTime::Format::SQLite; use DateTime::Format::Human::Duration; use Regexp::Common qw /URI/; +use Text::CSV; use lib "system/modules"; require Settings; @@ -67,9 +68,9 @@ my $tbl = '
Date Time Log Category'; -my $datediff = $cgi->param("datediff"); +my $opr = $cgi->param("opr"); my $confirmed = $cgi->param('confirmed'); -if ($datediff){ +if ($opr == 1){ print $cgi->header(-expires=>"+6os"); print $cgi->start_html(-title => "Date Difference Report", -BGCOLOR => $BGCOL, -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'}, @@ -189,68 +190,93 @@ try{ sub NotConfirmed { my $stmS = "SELECT ID, PID, (select NAME from CAT WHERE ID_CAT == CAT.ID) as CAT, DATE, LOG from VW_LOG WHERE"; + $stmS = "SELECT rowid as ID, ID_CAT as IDCAT, DATE, LOG from LOG" if($opr == 2); my $stmE = " ORDER BY DATE DESC, ID DESC;"; #Get ids and build confirm table and check my $stm = $stmS ." "; foreach my $id ($cgi->param('chk')){ - $stm = $stm . "PID = " . $id . " OR "; + if($opr == 2){ + $stm = $stm . "rowid = " . $id . " OR "; + } + else{ + $stm = $stm . "PID = " . $id . " OR "; + } } $stm =~ s/ OR $//; $stm .= $stmE; $st = $db->prepare( $stm ); $rv = $st->execute(); - print $cgi->header(-expires=>"+6os"); - print $cgi->start_html(-title => "Personal Log Record Removal", -BGCOLOR => $BGCOL, - -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'}, - -style =>{-type => 'text/css', -src => "wsrc/$TH_CSS"} + if($opr == 0){ + print $cgi->header(-expires=>"+6os"); + print $cgi->start_html(-title => "Personal Log Record Removal", -BGCOLOR => $BGCOL, + -script=>{-type => 'text/javascript', -src => 'wsrc/main.js'}, + -style =>{-type => 'text/css', -src => "wsrc/$TH_CSS"} + + ); - ); + print $cgi->pre("###NotConfirmed($rv,$st)->[stm:$stm]") if($DEBUG); - print $cgi->pre("###NotConfirmed($rv,$st)->[stm:$stm]") if($DEBUG); - my $r_cnt = 0; - my $rs = "r1"; + my $r_cnt = 0; + my $rs = "r1"; - while(my @row = $st->fetchrow_array()) { + while(my @row = $st->fetchrow_array()) { - my $ct = $row[2]; - my $dt = DateTime::Format::SQLite->parse_datetime( $row[3] ); - my $log = log2html($row[4]); + my $ct = $row[2]; + my $dt = DateTime::Format::SQLite->parse_datetime( $row[3] ); + my $log = log2html($row[4]); - $tbl = $tbl . ''. $dt->ymd . "" . - '' . $dt->hms . "" . - ''."$log\n". - '' . $ct. ''; - if($rs eq "r1"){ - $rs = "r0"; + $tbl = $tbl . ''. $dt->ymd . "" . + '' . $dt->hms . "" . + ''."$log\n". + '' . $ct. ''; + if($rs eq "r1"){ + $rs = "r0"; + } + else{ + $rs = "r1"; + } + $r_cnt++; } - else{ - $rs = "r1"; + my $plural = ""; + if($r_cnt>1){ + $plural = "s"; } - $r_cnt++; - } - my $plural = ""; - if($r_cnt>1){ - $plural = "s"; + + $tbl = $tbl . ' +
+

Please Confirm You Want
The Above Record'.$plural.' Deleted?

+ (Or hit you Browsers Back Button!)
+ +
+ +
+ + +
'; + + print '
' . $tbl .'
'; + + + }else{ + my $csv = Text::CSV->new ( { binary => 1, escape_char => "\\", eol => $/ } ); + print $cgi->header(-charset=>"UTF-8", -type=>"application/octet-stream", -attachment=>"$dbname.sel.csv"); + + while (my $row=$st->fetchrow_arrayref()){ + # $row[3] =~ s/\\\\n/\n/gs; + my $out = $csv->print(*STDOUT, $row); + print $out if(length $out>1); + } + $st->finish; + $db->disconnect(); + exit; } - $tbl = $tbl . ' -
-

Please Confirm You Want
The Above Record'.$plural.' Deleted?

- (Or hit you Browsers Back Button!)
- -
- -
- - -'; - -print '
' . $tbl .'
'; - - $st->finish; + + $st->finish; + $db->disconnect(); } sub log2html{ diff --git a/htdocs/cgi-bin/main.cgi b/htdocs/cgi-bin/main.cgi index 5bf1abb..2f18a60 100755 --- a/htdocs/cgi-bin/main.cgi +++ b/htdocs/cgi-bin/main.cgi @@ -738,7 +738,8 @@ $log_output .= <<_TXT; - + +       diff --git a/htdocs/cgi-bin/wsrc/main.js b/htdocs/cgi-bin/wsrc/main.js index 7754648..adce212 100644 --- a/htdocs/cgi-bin/wsrc/main.js +++ b/htdocs/cgi-bin/wsrc/main.js @@ -902,17 +902,24 @@ function viewByDate(btn) { function submitNewCategory() { - var frm = document.getElementById("frm_config"); + var frm = $("#frm_config"); var cid = frm.caid; frm.cchg.value = cid.value; return true; } function dateDiffSelected() { - document.getElementById("datediff").value = 1; + $("#opr").val(1); return true; } +function exportSelected() { + $("#opr").val(2); + return true; +} + + + function sumSelected() { var chks = document.getElementsByName("chk"); var sum = 0;