def format_phase(phase): """Format phase properties to human readable format """ is_circling = phase.phase_type == FlightPhase.PT_CIRCLING r = dict(start="%s" % format_time(phase.start_time), fraction="%d%%" % phase.fraction if phase.fraction is not None else "", speed=units.format_speed(phase.speed) if phase.speed is not None else "", vario=units.format_lift(phase.vario), alt_diff=units.format_altitude(phase.alt_diff), count=phase.count, duration=phase.duration, is_circling=is_circling, type=PHASETYPE_NAMES[phase.phase_type], circling_direction="", distance="", glide_rate="") if not is_circling: r['distance'] = units.format_distance(phase.distance, 1) # Sensible glide rate values are formatted as numbers. Others are shown # as infinity symbol. if abs(phase.alt_diff) > 0 and abs(phase.glide_rate) < 1000: r['glide_rate'] = format_number(phase.glide_rate) else: r['glide_rate'] = u'\u221e' # infinity else: r['circling_direction'] = CIRCDIR_NAMES[phase.circling_direction] return r
def format_legs(flight, legs): r = [] for leg in legs: duration = leg.end_time - leg.start_time if duration.total_seconds() > 0: speed = leg.distance / duration.total_seconds() climb_percentage = leg.climb_duration.total_seconds( ) / duration.total_seconds() * 100 else: speed = 0 climb_percentage = 0 if abs(leg.cruise_height) > 0 and leg.cruise_distance \ and abs(leg.cruise_distance / leg.cruise_height) < 1000: glide_rate = format_decimal(float(leg.cruise_distance) / -leg.cruise_height, format='#.#') else: glide_rate = u'\u221e' # infinity if leg.climb_duration.total_seconds() > 0: if leg.climb_height: climbrate = leg.climb_height / leg.climb_duration.total_seconds( ) else: climbrate = 0 climbrate_text = units.format_lift(climbrate) else: climbrate_text = u'-' r.append( dict(distance=units.format_distance(leg.distance, 1), duration=duration, speed=units.format_speed(speed), climb_percentage=format_decimal(climb_percentage, format='#.#'), climbrate=climbrate_text, glide_rate=glide_rate, start_time_of_day=to_seconds_of_day(flight.takeoff_time, leg.start_time))) return r
def format_legs(flight, legs): r = [] for leg in legs: duration = leg.end_time - leg.start_time if duration.total_seconds() > 0: speed = leg.distance / duration.total_seconds() climb_percentage = leg.climb_duration.total_seconds() / duration.total_seconds() * 100 else: speed = 0 climb_percentage = 0 if abs(leg.cruise_height) > 0 and leg.cruise_distance \ and abs(leg.cruise_distance / leg.cruise_height) < 1000: glide_rate = format_decimal(float(leg.cruise_distance) / -leg.cruise_height, format='#.#') else: glide_rate = u'\u221e' # infinity if leg.climb_duration.total_seconds() > 0: if leg.climb_height: climbrate = leg.climb_height / leg.climb_duration.total_seconds() else: climbrate = 0 climbrate_text = units.format_lift(climbrate) else: climbrate_text = u'-' r.append(dict(distance=units.format_distance(leg.distance, 1), duration=duration, speed=units.format_speed(speed), climb_percentage=format_decimal(climb_percentage, format='#.#'), climbrate=climbrate_text, glide_rate=glide_rate, start_time_of_day=to_seconds_of_day(flight.takeoff_time, leg.start_time))) return r
def test_lift_format(): """ Check lift formatting """ eq_(units.format_lift(0), '0.0 m/s') eq_(units.format_lift(4.3), '4.3 m/s') eq_(units.format_lift(10, 3), '10.000 m/s')
def test_lift_format(): """ Check lift formatting """ assert units.format_lift(0) == '0.0 m/s' assert units.format_lift(4.3) == '4.3 m/s' assert units.format_lift(10, 3) == '10.000 m/s'
def test_lift_format(): """ Check lift formatting """ eq_(units.format_lift(0), "0.0 m/s") eq_(units.format_lift(4.3), "4.3 m/s") eq_(units.format_lift(10, 3), "10.000 m/s")