/** @license 2023 Neil Edelman, distributed under the terms of the [MIT License](https://opensource.org/licenses/MIT). Date _vs_ hours flown. */ #include "flights.h" #include "source.h" #include #include #include #include #include int main(void) { int success = EXIT_SUCCESS; errno = 0; struct journal j = journal(); struct sources s = sources(&j); struct flight_tree f = flights(&j); if(errno) goto catch; fprintf(stderr, "Journal: %s.\n" "Flights: %s.\n", journal_to_string(&j), flights_to_string(&f)); printf("set terminal pngcairo dashed transparent truecolor" " size 840, 480 fontscale 1\n" "set output \"flight.png\"\n"); /*printf("set terminal cairolatex standalone pdf size 16cm,10.5cm" " dashed transparent\n" "set output \"flight.tex\"\n");*/ /*printf("set term postscript eps enhanced\n" "set output \"flighthours.eps\"\n");*/ printf("$Data <name.a) { errno = EDOM; goto catch; } printf("%s, ", datestr); assert(flight); switch(flight->type) { case GLIDER: printf("%.*s, %" PRIu32 ", %" PRIu32, (int)(flight->glider.reg.b - flight->glider.reg.a), flight->glider.reg.a, flight->glider.dual_min, flight->glider.pilot_min + flight->glider.instr_min); break; case POWER: printf("%.*s, %" PRIu32 ", %" PRIu32, (int)(flight->power.reg.b - flight->power.reg.a), flight->power.reg.a, flight->power.dual_min, flight->power.pilot_min); break; } printf(", %.*s\n", (int)(src->name.b - src->name.a), src->name.a); } printf("EOD\n" "# theozh https://stackoverflow.com/a/75466214/2472827\n" "# get a unique list from datablock\n" "addToList(list,col) = list.( strstrt(list,'\"'.strcol(col).'\"') \\\n" " > 0 ? '' : ' \"'.strcol(col).'\"')\n" "Uniqs = ''\n" "stats $Data u (Uniqs=addToList(Uniqs,2)) nooutput\n" "Uniq(i) = word(Uniqs,i)\n" "getIndex(s) = sum [_i=1:words(Uniqs)] s eq word(Uniqs,_i) ? _i : 0\n" "\n" "stats $Data u 3 nooutput\n" "sicsum = STATS_sum\n" "stats $Data u 4 nooutput\n" "picsum = STATS_sum\n" "\n" "myTimeFmt = \"%%Y-%%m-%%d\"\n" "set format x myTimeFmt timedate\n" "set xtics format myTimeFmt rotate by -30\n" "set format y \"%%tH:%%tM\" timedate\n" "set grid\n" "set key out reverse Left noautotitle\n" "set style fill solid 0.5\n" "unset border\n" "plot total=0 $Data u" " (timecolumn(1,myTimeFmt)):(dy=($3+$4)*60,total=total+dy)" " w steps lc \"black\" dt 3, \\\n" " total=0 '' u (timecolumn(1,myTimeFmt)):" "(dy=($3+$4)*60,total=total+dy,total/2.): \\\n" " (43200):(total/2.):(getIndex(strcol(2))) w boxxy lc var, \\\n" " for [i=1:words(Uniqs)] keyentry w boxxy lc i ti Uniq(i)\n" /*"set xrange [*:'2001-09-11']\n"*/ /*"#set style fill solid 0.1 #pattern 5 (better, but restarts)\n" "plot $Data using 1:($6/60) with fillsteps lw 2\n"*/); goto finally; catch: success = EXIT_FAILURE; perror("flights"); finally: flights_(&f); sources_(&s); journal_(&j); return success; }