|
@@ 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): |