<?php /** * Template Name: Experience Timeline * / /** * The template for displaying all roles in a timeline. * * @package Omphaloskepsis * @since Omphaloskepsis 1.0 */ get_header(); ?> <?php /** * Calculates wether a role is within the max. and min. dates * for the timeline. * * @param string $role_start_date The role's start date. * @param string $role_end_date The role's end date. * @return bool */ function within_dates( $role_start_date, $role_end_date ) { $end_year = gmdate( 'Y' ); $end_date = $end_year . '-12-31'; $start_date = ( $end_year - 2 ) . '-01-01'; $role_end_date = ( ! $role_end_date ) ? gmdate( 'Y-m-d' ) : ( ( $role_end_date > $end_date ) ? $end_date : $role_end_date ); return ( ( ( strtotime( $role_start_date ) < strtotime( $end_date ) ) && ( strtotime( $role_start_date ) > strtotime( $start_date ) ) ) && ( strtotime( $role_end_date ) > strtotime( $start_date ) ) ); } $args = array( 'post_type' => array( 'job', ), 'posts_per_page' => -1, ); $loop = new WP_Query( $args ); ?> <main id="experience-wrapper" class="content-area col-10 col-m-12"> <header class="post-header-title"> <h1 id="page-title">Experience</h1> <h2 id="page-subtitle">or, a brief history of Ben</h2> <?php while ( have_posts() ) : the_post(); ?> <div class="entry-content tile" id="taxonomy-description"> <?php the_content(); ?> </div> <div class="entry-content tile" id="settings"> <h3 style="margin-bottom: 14px;" class="subheading">Settings</h3> <form action="/experience-timeline" id="settings" method="GET"> <input class="checkbox" type="checkbox" id="separate" value="separate" checked="checked"> <label for="separate">Separate past and current roles</label> <input class="ui-button ui-widget ui-corner-all" id="refresh" type="submit" value="Refresh"> </form> </div> <?php endwhile; ?> </header> <div id="primary" class="content-area"> <main id="company-main" class="site-main" role="main"> <?php // phpcs:disable WordPress.WP.EnqueuedResources ?> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { $('input:checkbox').checkboxradio(); $('.refresh').button(); google.charts.load('current', {'packages':['timeline']}); google.charts.setOnLoadCallback(drawChart); $('input[type="checkbox"]').change(function() { alert("Feature in progress"); $('#refresh').css('border-width', '5px'); }); $('#refresh').click(function(event) { $(this).css('border-width', '1px'); event.preventDefault(); drawChart(); }); }); function drawChart() { var container = document.getElementById('timeline'); var chart = new google.visualization.Timeline(container); var dataTable = new google.visualization.DataTable(); dataTable.addColumn({ type: 'string', id: 'Type' }); dataTable.addColumn({ type: 'string', id: 'Role' }); dataTable.addColumn({ type: 'string', role: 'tooltip', 'p': {'html': true} }); dataTable.addColumn({ type: 'date', id: 'Start' }); dataTable.addColumn({ type: 'date', id: 'End' }); dataTable.addRows([ <?php while ( $loop->have_posts() ) : $loop->the_post(); ?> <?php $end_date = get_post_meta( get_the_ID(), 'end-date', true ); $is_current = ( ! $end_date || ( $end_date && $end_date > gmdate( 'Y-m-d' ) ) ) ? true : false; $company = wp_get_object_terms( get_the_ID(), 'company', array( 'fields' => 'names', ) ); $role_title = htmlspecialchars_decode( strip_tags( get_the_title() ) ); $start = get_the_date(); $end = ( ! $end_date || ( $end_date && $end_date > gmdate( 'Y-m-d' ) ) ) ? gmdate( 'Y-m-d' ) : $end_date; ?> [ '<?php echo ( $is_current ) ? 'Current' : 'Past'; ?>', '<?php echo esc_html( $role_title . ', ' . html_entity_decode( $company[0] ) ); ?>', '<div style="padding: 20px"><h1 class="timeline-entry-title"><?php echo wp_kses_post( $role_title ); ?></h1><h2><?php echo wp_kses_post( html_entity_decode( $company[0] ) ); ?></h2><ul><li><?php echo esc_html( $start ); ?>—<?php echo esc_html( ( $is_current ) ? 'present' : $end ); ?></li></ul></div>', new Date('<?php echo esc_attr( $start ); ?>'), new Date('<?php echo esc_attr( $end ); ?>') ], <?php endwhile; ?> ]); var rowHeight = 15; var chartHeight = dataTable.getNumberOfRows() * rowHeight + 50; var options = { tooltip: {isHtml: true}, timeline: { showRowLabels: true, }, height: chartHeight, width: window.innerWidth - 200, }; chart.draw(dataTable, options); } </script> <?php // phpcs:disable ?> <div id="slider-range"></div> <section id="timeline"> <div class="row"> <div id="timeline" class="col-12"> <img class="loading" src="/wp-content/uploads/2016/12/ajax-loader.gif"> </div> </div> </section> </main> </div> </main> <?php // get_sidebar(); ?> <?php get_footer(); ?>