109 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /* @var $year integer */
 | |
| /* @var ymap integer[] */
 | |
| /* @var $ymapmax integer */
 | |
| ?>
 | |
| 
 | |
| <?php
 | |
| 
 | |
| $DIST_X = 13;
 | |
| $DIST_Y = 13;
 | |
| $DAY_WIDTH = 11;
 | |
| $DAY_HEIGHT = 11;
 | |
| 
 | |
| 
 | |
| $COLORS = ['#F5F5F5', '#DBDEE0', '#C2C7CB', '#AAB0B7', '#9099A2', '#77828E', '#5E6B79', '#455464', '#2C3E50'];
 | |
| $MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
 | |
| $DAYS = ['M', 'T', 'W', 'T', 'F', 'S', 'S'];
 | |
| 
 | |
| ?>
 | |
| 
 | |
| <?php
 | |
| 
 | |
| $date = new DateTime($year . '-01-01');
 | |
| 
 | |
| $monthlist = array_fill(0, 12, [0, 0]);
 | |
| 
 | |
| ?>
 | |
| <div class="extGitGraphContainer">
 | |
| 	<svg class="git_list">
 | |
| 		<g transform="translate(20, 20) ">
 | |
| 			<g transform="translate(0, 0)">
 | |
| 				<?php
 | |
| 					$now = new DateTime();
 | |
| 					$exponent = log(0.98/(count($COLORS)-1), 1/$ymapmax); // (1/max)^n = 0.98   // => 1 commit erreicht immer genau die erste stufe
 | |
| 
 | |
| 					$week = 0;
 | |
| 					while($date->format('Y') == $year) {
 | |
| 						if ($date > new DateTime()) {// THE FUTURE, SPONGEBOB
 | |
| 							while ($date->format('d') != $date->format('t')) {
 | |
| 								if ($date->format('N') == 1 && $date->format('z') > 0) {
 | |
| 									$week++;
 | |
| 								}
 | |
| 								$date = $date->modify("+1 day");
 | |
| 							}
 | |
| 							$monthlist[$date->format('m') - 1][1] = $week + ($wday / 7);
 | |
| 
 | |
| 							$date = $date->modify("+1 year"); // Kill
 | |
| 							continue;
 | |
| 						}
 | |
| 
 | |
| 						$c_count = $ymap[$date->format('Y-m-d')];
 | |
| 						$color_idx = ceil(pow($c_count/$ymapmax, $exponent) * (count($COLORS)-1));
 | |
| 						$color = $COLORS[$color_idx];
 | |
| 
 | |
| 						$wday = ($date->format('N') - 1);
 | |
| 
 | |
| 						if ($date->format('N') == 1 && $date->format('z') > 0) {
 | |
| 							echo '</g>', PHP_EOL;
 | |
| 							$week++;
 | |
| 							echo '<g transform="translate(' . $week*$DIST_X . ', 0)">', PHP_EOL;
 | |
| 						}
 | |
| 
 | |
| 						if ($date->format('d') == 1) {
 | |
| 							$monthlist[$date->format('m') - 1][0] = $week + ($wday / 7);
 | |
| 						} else if ($date->format('d') == $date->format('t')) {
 | |
| 							$monthlist[$date->format('m') - 1][1] = $week + ($wday / 7);
 | |
| 						}
 | |
| 
 | |
| 						echo '<rect style="fill: ' . $color .
 | |
| 							';" y="' . $wday*$DIST_Y .
 | |
| 							'" height="' . $DAY_HEIGHT .
 | |
| 							'" width="' . $DAY_WIDTH .
 | |
| 							'" dbg_tag="' . $date->format('d.m.Y') . ' [' . $year . ' :: '.$week.' :: '.$wday.'] -> ' . $color_idx .
 | |
| 							'" hvr_header="' . $c_count . ' commits'.
 | |
| 							'" hvr_content="' . ' ' . $date->format('\o\n l jS F Y') .
 | |
| 							'"/>', PHP_EOL;
 | |
| 
 | |
| 						$date = $date->modify("+1 day");
 | |
| 					}
 | |
| 				?>
 | |
| 			</g>
 | |
| 
 | |
| 			<?php
 | |
| 
 | |
| 			for($i = 0; $i < 12; $i++) {
 | |
| 				if ($monthlist[$i][1]-$monthlist[$i][0] > 0) {
 | |
| 					$posx = (($monthlist[$i][0]+$monthlist[$i][1])/2) * $DIST_X;
 | |
| 					echo '<text y="-3" x="' . $posx . '" style="text-anchor: middle" class="caption_month">' . $MONTHS[$i] . '</text>';
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			for($i = 0; $i < 7; $i++) {
 | |
| 				echo '<text y="' . ($i*$DIST_Y + $DAY_HEIGHT/2) . '" x="-6" style="text-anchor: middle" class="caption_day" dominant-baseline="central">' . $DAYS[$i] . '</text>';
 | |
| 			}
 | |
| 
 | |
| 			echo '<text  x="-10" y="-5" class="caption">' . $year . '</text>';
 | |
| 
 | |
| 			?>
 | |
| 		</g>
 | |
| 	</svg>
 | |
| 
 | |
| 	<div class="svg-tip n">
 | |
| 		<strong> </strong><span> </span>
 | |
| 	</div>
 | |
| 
 | |
| 	<div class="egg_footer">
 | |
| 		<a href="/programs/view/ExtendedGitGraph">extendedGitGraph</a>
 | |
| 	</div>
 | |
| </div>
 |