@@ 490-520 (lines=31) @@ | ||
487 | last_ordinate = compute(report._root_action, len(self.__actions) - 1) |
|
488 | assert last_ordinate == 0, last_ordinate |
|
489 | ||
490 | class SuccessfulAction(object): |
|
491 | def __init__(self, action, status): |
|
492 | self.__label = str(action.label) |
|
493 | self.__id = id(action) |
|
494 | self.__dependencies = set(id(d) for d in action.dependencies) |
|
495 | self.__ready_time = status.ready_time |
|
496 | self.__start_time = status.start_time |
|
497 | self.__success_time = status.success_time |
|
498 | ||
499 | @property |
|
500 | def min_time(self): |
|
501 | return self.__ready_time |
|
502 | ||
503 | @property |
|
504 | def max_time(self): |
|
505 | return self.__success_time |
|
506 | ||
507 | def draw(self, ax, ordinates, actions): |
|
508 | ordinate = ordinates[self.__id] |
|
509 | ax.plot([self.__ready_time, self.__start_time], [ordinate, ordinate], color="blue", lw=1) |
|
510 | ax.plot( |
|
511 | [self.__start_time, self.__success_time], [ordinate, ordinate], |
|
512 | color="blue", lw=4, solid_capstyle="butt", |
|
513 | ) |
|
514 | # @todo Make sure the text is not outside the plot on the right |
|
515 | ax.annotate( |
|
516 | self.__label, |
|
517 | xy=(self.__start_time, ordinate), xytext=(0, 3), textcoords="offset points", |
|
518 | ) |
|
519 | for d in self.__dependencies: |
|
520 | ax.plot([actions[d].max_time, self.min_time], [ordinates[d], ordinate], "k:", lw=1) |
|
521 | ||
522 | class FailedAction(object): |
|
523 | def __init__(self, action, status): |
|
@@ 522-551 (lines=30) @@ | ||
519 | for d in self.__dependencies: |
|
520 | ax.plot([actions[d].max_time, self.min_time], [ordinates[d], ordinate], "k:", lw=1) |
|
521 | ||
522 | class FailedAction(object): |
|
523 | def __init__(self, action, status): |
|
524 | self.__label = str(action.label) |
|
525 | self.__id = id(action) |
|
526 | self.__dependencies = set(id(d) for d in action.dependencies) |
|
527 | self.__ready_time = status.ready_time |
|
528 | self.__start_time = status.start_time |
|
529 | self.__failure_time = status.failure_time |
|
530 | ||
531 | @property |
|
532 | def min_time(self): |
|
533 | return self.__ready_time |
|
534 | ||
535 | @property |
|
536 | def max_time(self): |
|
537 | return self.__failure_time |
|
538 | ||
539 | def draw(self, ax, ordinates, actions): |
|
540 | ordinate = ordinates[self.__id] |
|
541 | ax.plot([self.__ready_time, self.__start_time], [ordinate, ordinate], color="red", lw=1) |
|
542 | ax.plot( |
|
543 | [self.__start_time, self.__failure_time], [ordinate, ordinate], |
|
544 | color="red", lw=4, solid_capstyle="butt", |
|
545 | ) |
|
546 | ax.annotate( |
|
547 | self.__label, |
|
548 | xy=(self.__start_time, ordinate), xytext=(0, 3), textcoords="offset points", |
|
549 | ) |
|
550 | for d in self.__dependencies: |
|
551 | ax.plot([actions[d].max_time, self.min_time], [ordinates[d], ordinate], "k:", lw=1) |
|
552 | ||
553 | class CanceledAction(object): |
|
554 | def __init__(self, action, status): |