function imagefilledellipseaa_Plot4EllipsePoints(&$im, $CX, $CY, $X, $Y, $color, $t) { imagesetpixel($im, $CX + $X, $CY + $Y, $color); //{point in quadrant 1} imagesetpixel($im, $CX - $X, $CY + $Y, $color); //{point in quadrant 2} imagesetpixel($im, $CX - $X, $CY - $Y, $color); //{point in quadrant 3} imagesetpixel($im, $CX + $X, $CY - $Y, $color); //{point in quadrant 4} $aColor = color2rgba($color); $mColor = imagecolorallocate($im, $aColor[0], $aColor[1], $aColor[2]); if ($t == 1) { imageline($im, $CX - $X, $CY - $Y + 1, $CX + $X, $CY - $Y + 1, $mColor); imageline($im, $CX - $X, $CY + $Y - 1, $CX + $X, $CY + $Y - 1, $mColor); } else { imageline($im, $CX - $X + 1, $CY - $Y, $CX + $X - 1, $CY - $Y, $mColor); imageline($im, $CX - $X + 1, $CY + $Y, $CX + $X - 1, $CY + $Y, $mColor); } imagecolordeallocate($im, $mColor); }
function stat_proc_graph($start_date, $end_date, $type = 'done') { $app = get_app(); // month scope $start_date_orig = str_replace('-', '/', $start_date); $start_date = date('y-n-', strtotime($start_date)); $end_date_orig = str_replace('-', '/', $end_date); $end_date = date('y-n-', strtotime($end_date)); // $dates = get_dates_array($start_date, $end_date); $months = get_months_array($dates); // $colors = array('1' => '#24a9de', '2' => '#ffbf00', '3' => '#d7faad', '4' => '#7282fe', '5' => '#4638aa', '6' => '#ddf86c', '7' => '#6d9a3d', '8' => '#f05eb0', '9' => '#b22451', '10' => '#298623', '11' => '#0f0086', '12' => '#ce4697', '13' => '#3979ff', '14' => '#934b8a', '15' => '#db3516', '16' => '#92692e', '17' => '#0fd456', '18' => '#b9f327', '19' => '#6bbb73', '20' => '#54e9af', '21' => '#f315d4', '22' => '#3d3028', '23' => '#7e1713', '24' => '#e7fa26', '99' => '#d7bc06'); // procs $procs = array(); //按期间查询各工种完工与未完工工序数 foreach ($months as $key => $mon) { // $key: '14-1' $sql = "SELECT * FROM parts WHERE num LIKE '%{$key}%' ORDER BY num asc"; $parts = Part::find_by_sql($sql); // parts foreach ($parts as $part) { // processes foreach ($part->processes as $proc) { // create proc item if (!array_key_exists($proc->name, $procs)) { $procs[$proc->name] = array('id' => $proc->name, 'color' => $colors[$proc->name], 'rgba_color' => color2rgba($colors[$proc->name]), 'values' => array()); } // create proc_month item if (!array_key_exists($key, $procs[$proc->name]['values'])) { $procs[$proc->name]['values'][$key] = 0; } // if ($type == 'done' && $proc->is_done) { $procs[$proc->name]['values'][$key] += get_proc_time($proc); } if ($type == 'undo' && !$proc->is_done) { $procs[$proc->name]['values'][$key] += get_proc_time($proc); } } } } // 如果有月份没有数据 // 自动补0 foreach ($procs as $p_key => $proc) { foreach ($months as $m_key => $mon) { if (!array_key_exists($m_key, $procs[$p_key]['values'])) { $procs[$p_key]['values'][$m_key] = 0; } } uksort($procs[$p_key]['values'], 'month_key_cmp'); } ksort($procs); render_with_layout('graph.php', 'Statistics/stat_proc_graph.php', compact('months', 'procs', 'type')); }