コード例 #1
0
ファイル: report_gui.py プロジェクト: tolange/grid-control
    def show_report(self, job_db, jobnum_list):
        self._max_x = Console.getmaxyx()[1]
        (cat_state_dict, map_cat2desc,
         cat_subcat_dict) = self._cat_manager.get_category_infos(
             job_db, jobnum_list)
        self._cat_cur = len(cat_state_dict)

        def _sum_cat(cat_key, states):
            return sum(
                imap(lambda z: cat_state_dict[cat_key].get(z, 0), states))

        for cat_key in cat_state_dict:  # Sorted(cat_state_dict, key=lambda x: -self._categories[x][0]):
            desc = self._cat_manager.format_desc(
                map_cat2desc[cat_key], cat_subcat_dict.get(cat_key, 0))
            completed = _sum_cat(cat_key, [Job.SUCCESS])
            total = sum(cat_state_dict[cat_key].values())
            job_info_str = ''
            if self._max_x > 65 + 23:
                job_info_str = ' (%5d jobs, %6.2f%%  )' % (
                    total, 100 * completed / float(total))
            width = min(65 + len(job_info_str), self._max_x)
            if len(desc) + len(job_info_str) > width:
                desc = desc[:width - 3 - len(job_info_str)] + '...'
            self._show_line(ANSI.bold + desc + ANSI.reset + ' ' *
                            (width -
                             (len(desc) + len(job_info_str))) + job_info_str)
            progressbar = JobProgressBar(sum(cat_state_dict[cat_key].values()),
                                         width=width,
                                         display_text=(job_info_str != ''))
            progressbar.update(
                completed, _sum_cat(cat_key, JobClass.ATWMS.state_list),
                _sum_cat(cat_key, [Job.RUNNING]),
                _sum_cat(cat_key, [Job.DONE]),
                _sum_cat(cat_key, [Job.ABORTED, Job.CANCELLED, Job.FAILED]))
            self._show_line(str(progressbar))
コード例 #2
0
ファイル: report_gui.py プロジェクト: tolange/grid-control
 def __init__(self, config, name, job_db, task=None):
     ConsoleReport.__init__(self, config, name, job_db, task)
     (max_y, self._max_x) = Console.getmaxyx()
     cat_max = config.get_int('report categories max',
                              int(max_y / 5),
                              on_change=None)
     self._cat_manager = AdaptiveJobCategoryManager(config, job_db, task,
                                                    cat_max)
     self._cat_cur = cat_max
コード例 #3
0
 def _write(self, value):
     max_yx = Console.getmaxyx()
     max_x = min(max_yx[1], self._msg_len_max)
     value = value.replace('\n', ANSI.erase_line + '\n' + ANSI.erase_line)
     self._stream.write(value + '\n' + ANSI.wrap_off)
     activity_list = list(Activity.root.get_children())
     max_depth = int(max_yx[0] * self._fold)
     while len(activity_list) > int(max_yx[0] * self._fold):
         activity_list = lfilter(
             lambda activity: activity.depth - 1 < max_depth, activity_list)
         max_depth -= 1
     for activity in activity_list:
         msg = self._format_activity(max_x, activity.depth - 1, activity,
                                     activity_list)
         self._stream.write(ANSI.erase_line + msg + '\n')
     self._stream.write(ANSI.erase_down +
                        ANSI.move_up(len(activity_list) + 1) + ANSI.wrap_on)
     self._stream.flush()