145 lines
5.8 KiB
Bash
Executable File
145 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Source the configuration file
|
|
source ./user_ids.conf
|
|
|
|
# Directory where CSV files are stored
|
|
INPUT_DIR="/home/eric/asset_tracker"
|
|
|
|
# Create output directory for charts if it doesn't exist
|
|
#OUTPUT_DIR="/var/www/taylors/img/silver-dragon"
|
|
OUTPUT_DIR="/home/eric/asset_tracker"
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
# Process each user ID
|
|
for USER_ID in "${USER_IDS[@]}"; do
|
|
# Define input CSV file and temporary files for formatted data for this user
|
|
input_file="${INPUT_DIR}/assets_data_${USER_ID}.csv"
|
|
|
|
# Skip if the user's CSV file doesn't exist
|
|
if [ ! -f "$input_file" ]; then
|
|
echo "Warning: CSV file for user $USER_ID not found. Skipping..."
|
|
continue
|
|
fi
|
|
|
|
temp_total_assets="${INPUT_DIR}/total_asset_data_for_plot_${USER_ID}.txt"
|
|
temp_diamonds_on_hand="${INPUT_DIR}/cash_data_for_plot_${USER_ID}.txt"
|
|
png_total_assets="${OUTPUT_DIR}/total_assets_${USER_ID}.png"
|
|
png_diamonds_on_hand="${OUTPUT_DIR}/diamonds_on_hand_${USER_ID}.png"
|
|
|
|
# Extract date (without time) and total_assets columns for gnuplot
|
|
awk -F, 'NR > 1 { print substr($1, 1, 10), $4 }' "$input_file" > "$temp_total_assets"
|
|
|
|
# Extract date (without time) and diamonds columns for gnuplot
|
|
awk -F, 'NR > 1 { print substr($1, 1, 10), $3 }' "$input_file" > "$temp_diamonds_on_hand"
|
|
|
|
# Plot with gnuplot in ASCII mode (for debugging)
|
|
echo "Generating charts for user ID: $USER_ID"
|
|
|
|
# Plot total assets chart
|
|
gnuplot <<- EOF
|
|
set datafile separator " "
|
|
set xdata time
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%m-%d" # Display only month and day on x-axis
|
|
set format y "%.0f" # Display y-axis as plain numbers, no scientific notation
|
|
set title "Total Assets Over Time for User $USER_ID"
|
|
set xlabel "Date"
|
|
set ylabel "Total Assets"
|
|
set grid
|
|
set terminal dumb size 80,20 # ASCII output, size 80x20
|
|
set autoscale xfixmin
|
|
set autoscale xfixmax
|
|
plot "$temp_total_assets" using 1:2 with lines notitle
|
|
EOF
|
|
|
|
# Plot diamonds chart
|
|
gnuplot <<- EOF
|
|
set datafile separator " "
|
|
set xdata time
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%m-%d" # Display only month and day on x-axis
|
|
set format y "%.0f" # Display y-axis as plain numbers, no scientific notation
|
|
set title "On Hand Diamonds Over Time for User $USER_ID"
|
|
set xlabel "Date"
|
|
set ylabel "Diamonds"
|
|
set grid
|
|
set terminal dumb size 80,20 # ASCII output, size 80x20
|
|
set autoscale xfixmin
|
|
set autoscale xfixmax
|
|
plot "$temp_diamonds_on_hand" using 1:2 with lines notitle
|
|
EOF
|
|
|
|
# Plot with gnuplot in PNG format (black background, white text, orange plot line)
|
|
gnuplot <<- EOF
|
|
set datafile separator " "
|
|
set xdata time
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%m-%d" # Display only month and day on x-axis
|
|
set format y "%.0f" # Display y-axis as plain numbers, no scientific notation
|
|
set title "Total Assets Over Time" font ",14" textcolor "#FFFFFF"
|
|
set xlabel "Date" font ",12" textcolor "#FFFFFF"
|
|
set ylabel "Total Assets" font ",12" textcolor "#FFFFFF"
|
|
set grid linecolor rgb "#FFFFFF" # White grid lines
|
|
set xtics textcolor rgb "#FFFFFF" # White x-axis labels
|
|
set ytics textcolor rgb "#FFFFFF" # White y-axis labels
|
|
set border linecolor rgb "#FFFFFF" # White border
|
|
set terminal pngcairo size 400,300 enhanced font 'Arial,10' background rgb "black" # BLACK background
|
|
set output "$png_total_assets"
|
|
set style line 1 linecolor rgb "#FE6A00" linetype 1 linewidth 2 # Orange plot curve (#FE6A00)
|
|
set autoscale xfixmin
|
|
set autoscale xfixmax
|
|
plot "$temp_total_assets" using 1:2 with lines notitle ls 1
|
|
EOF
|
|
|
|
# Plot diamonds chart in PNG format
|
|
gnuplot <<- EOF
|
|
set datafile separator " "
|
|
set xdata time
|
|
set timefmt "%Y-%m-%d"
|
|
set format x "%m-%d" # Display only month and day on x-axis
|
|
set format y "%.0f" # Display y-axis as plain numbers, no scientific notation
|
|
set title "Diamonds On Hand Over Time" font ",14" textcolor "#FFFFFF"
|
|
set xlabel "Date" font ",12" textcolor "#FFFFFF"
|
|
set ylabel "Diamonds" font ",12" textcolor "#FFFFFF"
|
|
set grid linecolor rgb "#FFFFFF" # White grid lines
|
|
set xtics textcolor rgb "#FFFFFF" # White x-axis labels
|
|
set ytics textcolor rgb "#FFFFFF" # White y-axis labels
|
|
set border linecolor rgb "#FFFFFF" # White border
|
|
set terminal pngcairo size 400,300 enhanced font 'Arial,10' background rgb "black" # BLACK background
|
|
set output "$png_diamonds_on_hand"
|
|
set style line 1 linecolor rgb "#2CB9CF" linetype 1 linewidth 2 # teal plot curve
|
|
set autoscale xfixmin
|
|
set autoscale xfixmax
|
|
plot "$temp_diamonds_on_hand" using 1:2 with lines notitle ls 1
|
|
EOF
|
|
|
|
# Clean up temporary files
|
|
rm -f "$temp_total_assets"
|
|
rm -f "$temp_diamonds_on_hand"
|
|
|
|
echo "Charts generated for user ID: $USER_ID"
|
|
done
|
|
|
|
# Copy the generated PNG files to the webserver via SSH
|
|
echo "Copying charts to web server..."
|
|
|
|
# Change to output directory
|
|
cd "$OUTPUT_DIR"
|
|
|
|
# Get list of files matching patterns
|
|
total_files=$(ls total_assets_*.png 2>/dev/null)
|
|
diamonds_files=$(ls diamonds_on_hand_*.png 2>/dev/null)
|
|
|
|
# Copy total assets files if they exist
|
|
if [ -n "$total_files" ]; then
|
|
scp $total_files root@taylors.life:/var/www/erictaylor/img/asset_tracker/
|
|
fi
|
|
|
|
# Copy diamonds files if they exist
|
|
if [ -n "$diamonds_files" ]; then
|
|
scp $diamonds_files root@taylors.life:/var/www/erictaylor/img/asset_tracker/
|
|
fi
|
|
|
|
echo "All charts processed and copied."
|