Loading main.py +18 −1 Changes for main.py: 18 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -61,11 +61,28 @@ def webui_part_problem_status(name=None): if (adc2019system.role is not None) and (adc2019system.role.type == 'host'): problem = adc2019system.role.get_problem(name) workers = adc2019system.role.get_workers() # solutions = reversed(sorted(problem.get_solutions().items(), key=lambda x:x[1].timestamp)) if problem is None: return abort(404) else: # return render_template('part_problem_status.html', problem=problem, workers=workers, solutions=solutions) return render_template('part_problem_status.html', problem=problem, workers=workers) else: return abort(404) @webui.route('/part/problem_solution/<name>') def webui_part_solution_status(name=None): if name is None: return abort(404) if (adc2019system.role is not None) and (adc2019system.role.type == 'host'): problem = adc2019system.role.get_problem(name) solutions = reversed(sorted(problem.get_solutions().items(), key=lambda x:x[1].timestamp)) if problem is None: return abort(404) else: return render_template('part_problem_status.html', problem=problem, workers=workers, solutions=solutions) return render_template('part_solution_status.html', problem=problem, solutions=solutions) else: return abort(404) Loading static/js/adc2019.js +20 −27 Changes for static/js/adc2019.js: 20 added lines, 27 removed lines. Original line number Diff line number Diff line Loading @@ -41,13 +41,6 @@ class StatusView { _this.fire('refresh'); }); _this.container.find('.solution-detail-row.valid-solution td').click((e) => { var solution_id = $(e.target).parent("tr").data("solution-id"); var problem_name = $(e.target).parent("tr").data("problem"); var viewer_url = "/viewer#" + problem_name + "/" + solution_id; window.open(viewer_url, "_blank"); }); _this.container.find('#chk-solver-all').prop('checked', false); _this.container.find('#chk-solver-all').on('change', (e) => { Loading @@ -64,7 +57,7 @@ class StatusView { }).trigger('change'); _this.request_refresh_timer = setInterval((function _t(){ _this.get_request_status(); _this.update_status_view(); return _t; }()), 1000); }); Loading Loading @@ -97,24 +90,6 @@ class StatusView { contentType: 'application/json' }).done((d) => { console.log(d); // var request_id = d['request_id']; // var timeout = d['timeout']; // _this.container.find('#solver-processing-modal').modal({ // backdrop: 'static', // keyboard: false, // show: true // }); // _this.container.find('#solver-processing-modal').on('hidden.bs.modal', function(e){ // clearInterval(_this.request_refresh_timer); // _this.show_problem(); // _this.fire('refresh'); // }) // _this.container.find('.stop-button').click(()=>{ // _this.stop_solver(); // }); }); } Loading Loading @@ -170,7 +145,7 @@ class StatusView { }); } get_request_status(){ update_status_view(){ var _this = this; $.ajax({ type: 'GET', Loading @@ -180,6 +155,24 @@ class StatusView { _this.container.find('#request-table-container').empty(); _this.container.find('#request-table-container').html(d); }); $.ajax({ type: 'GET', dataType: 'html', url: '/part/problem_solution/' + _this.problem_key }).done((d) => { _this.container.find('#solution-table-container').empty(); _this.container.find('#solution-table-container').html(d); _this.container.find('.solution-detail-row.valid-solution td').click((e) => { var solution_id = $(e.target).parent("tr").data("solution-id"); var problem_name = $(e.target).parent("tr").data("problem"); var viewer_url = "/viewer#" + problem_name + "/" + solution_id; window.open(viewer_url, "_blank"); }); _this.fire('refresh'); }); } // システム詳細画面を表示 Loading templates/part_problem_status.html +3 −27 Changes for templates/part_problem_status.html: 3 added lines, 27 removed lines. Original line number Diff line number Diff line Loading @@ -56,33 +56,9 @@ <div id='solution-list-container'> <h4>処理結果一覧</h4> <table class="table table-bordered table-striped"> <thead> <tr> <th>Timestamp</th> <th>Client</th> <th>Score</th> </tr> </thead> <tbody> {% for k, v in solutions %} {% set tr_class = '' %} {% set tr_class = tr_class + ' submit-solution' if k == problem.best_solution else '' %} {% set tr_class = tr_class + ' valid-solution' if v.is_valid_solution() else '' %} <tr class="solution-detail-row {{tr_class}}" data-solution-id="{{k}}" data-problem="{{problem.name}}"> <td>{{v.timestamp_str}}</td> <td>{{v.worker}}</td> <td> {% if v.is_valid_solution() %} {{v.score}} ({{v.size_str}}) {% else %} {{v.status}} {% endif %} </td> </tr> {% endfor %} </tbody> </table> <div id="solution-table-container"> </div> </div> </div> templates/part_solution_status.html 0 → 100644 +27 −0 Changes for templates/part_solution_status.html: 27 added lines, 0 removed lines. Original line number Diff line number Diff line <table class="table table-bordered table-striped"> <thead> <tr> <th>Timestamp</th> <th>Client</th> <th>Score</th> </tr> </thead> <tbody> {% for k, v in solutions %} {% set tr_class = '' %} {% set tr_class = tr_class + ' submit-solution' if k == problem.best_solution else '' %} {% set tr_class = tr_class + ' valid-solution' if v.is_valid_solution() else '' %} <tr class="solution-detail-row {{tr_class}}" data-solution-id="{{k}}" data-problem="{{problem.name}}"> <td>{{v.timestamp_str}}</td> <td>{{v.worker}}</td> <td> {% if v.is_valid_solution() %} {{v.score}} ({{v.size_str}}) {% else %} {{v.status}} {% endif %} </td> </tr> {% endfor %} </tbody> </table> utils/data.py +3 −3 Changes for utils/data.py: 3 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ class Problem(object): self._load_problem(problem_path) if not self.solution_path is None: solution_files = glob.glob(f'{self.solution_path}/{self.name}/*.json') solution_files = glob.glob(f'{self.solution_path}/{self.name}/tmp-*.json') for v in solution_files: solution = Solution(solution_file=v) solution_id = solution.get_id() Loading Loading @@ -364,7 +364,7 @@ class Problem(object): outdir = f"{self.solution_path}/{self.name}" if not os.path.exists(outdir): os.mkdir(outdir) outpath = f"{outdir}/{data['request_id']}-{data['worker']}-p{data['part_id']}.json".replace(":", ".") outpath = f"{outdir}/part-{data['request_id']}-{data['worker']}-p{data['part_id']}.json".replace(":", ".") with open(outpath, 'w') as fp: json.dump(self.get_dict(), fp, indent=4) Loading Loading @@ -540,7 +540,7 @@ class Solution(object): outdir = f"{basedir}/{self.problem}" if not os.path.exists(outdir): os.mkdir(outdir) outpath = f"{outdir}/{self.request_id}-{self.worker}.json".replace(":", ".") outpath = f"{outdir}/tmp-{self.request_id}-{self.worker}.json".replace(":", ".") with open(outpath, 'w') as fp: json.dump(self.get_dict(), fp, indent=4) Loading Loading
main.py +18 −1 Changes for main.py: 18 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -61,11 +61,28 @@ def webui_part_problem_status(name=None): if (adc2019system.role is not None) and (adc2019system.role.type == 'host'): problem = adc2019system.role.get_problem(name) workers = adc2019system.role.get_workers() # solutions = reversed(sorted(problem.get_solutions().items(), key=lambda x:x[1].timestamp)) if problem is None: return abort(404) else: # return render_template('part_problem_status.html', problem=problem, workers=workers, solutions=solutions) return render_template('part_problem_status.html', problem=problem, workers=workers) else: return abort(404) @webui.route('/part/problem_solution/<name>') def webui_part_solution_status(name=None): if name is None: return abort(404) if (adc2019system.role is not None) and (adc2019system.role.type == 'host'): problem = adc2019system.role.get_problem(name) solutions = reversed(sorted(problem.get_solutions().items(), key=lambda x:x[1].timestamp)) if problem is None: return abort(404) else: return render_template('part_problem_status.html', problem=problem, workers=workers, solutions=solutions) return render_template('part_solution_status.html', problem=problem, solutions=solutions) else: return abort(404) Loading
static/js/adc2019.js +20 −27 Changes for static/js/adc2019.js: 20 added lines, 27 removed lines. Original line number Diff line number Diff line Loading @@ -41,13 +41,6 @@ class StatusView { _this.fire('refresh'); }); _this.container.find('.solution-detail-row.valid-solution td').click((e) => { var solution_id = $(e.target).parent("tr").data("solution-id"); var problem_name = $(e.target).parent("tr").data("problem"); var viewer_url = "/viewer#" + problem_name + "/" + solution_id; window.open(viewer_url, "_blank"); }); _this.container.find('#chk-solver-all').prop('checked', false); _this.container.find('#chk-solver-all').on('change', (e) => { Loading @@ -64,7 +57,7 @@ class StatusView { }).trigger('change'); _this.request_refresh_timer = setInterval((function _t(){ _this.get_request_status(); _this.update_status_view(); return _t; }()), 1000); }); Loading Loading @@ -97,24 +90,6 @@ class StatusView { contentType: 'application/json' }).done((d) => { console.log(d); // var request_id = d['request_id']; // var timeout = d['timeout']; // _this.container.find('#solver-processing-modal').modal({ // backdrop: 'static', // keyboard: false, // show: true // }); // _this.container.find('#solver-processing-modal').on('hidden.bs.modal', function(e){ // clearInterval(_this.request_refresh_timer); // _this.show_problem(); // _this.fire('refresh'); // }) // _this.container.find('.stop-button').click(()=>{ // _this.stop_solver(); // }); }); } Loading Loading @@ -170,7 +145,7 @@ class StatusView { }); } get_request_status(){ update_status_view(){ var _this = this; $.ajax({ type: 'GET', Loading @@ -180,6 +155,24 @@ class StatusView { _this.container.find('#request-table-container').empty(); _this.container.find('#request-table-container').html(d); }); $.ajax({ type: 'GET', dataType: 'html', url: '/part/problem_solution/' + _this.problem_key }).done((d) => { _this.container.find('#solution-table-container').empty(); _this.container.find('#solution-table-container').html(d); _this.container.find('.solution-detail-row.valid-solution td').click((e) => { var solution_id = $(e.target).parent("tr").data("solution-id"); var problem_name = $(e.target).parent("tr").data("problem"); var viewer_url = "/viewer#" + problem_name + "/" + solution_id; window.open(viewer_url, "_blank"); }); _this.fire('refresh'); }); } // システム詳細画面を表示 Loading
templates/part_problem_status.html +3 −27 Changes for templates/part_problem_status.html: 3 added lines, 27 removed lines. Original line number Diff line number Diff line Loading @@ -56,33 +56,9 @@ <div id='solution-list-container'> <h4>処理結果一覧</h4> <table class="table table-bordered table-striped"> <thead> <tr> <th>Timestamp</th> <th>Client</th> <th>Score</th> </tr> </thead> <tbody> {% for k, v in solutions %} {% set tr_class = '' %} {% set tr_class = tr_class + ' submit-solution' if k == problem.best_solution else '' %} {% set tr_class = tr_class + ' valid-solution' if v.is_valid_solution() else '' %} <tr class="solution-detail-row {{tr_class}}" data-solution-id="{{k}}" data-problem="{{problem.name}}"> <td>{{v.timestamp_str}}</td> <td>{{v.worker}}</td> <td> {% if v.is_valid_solution() %} {{v.score}} ({{v.size_str}}) {% else %} {{v.status}} {% endif %} </td> </tr> {% endfor %} </tbody> </table> <div id="solution-table-container"> </div> </div> </div>
templates/part_solution_status.html 0 → 100644 +27 −0 Changes for templates/part_solution_status.html: 27 added lines, 0 removed lines. Original line number Diff line number Diff line <table class="table table-bordered table-striped"> <thead> <tr> <th>Timestamp</th> <th>Client</th> <th>Score</th> </tr> </thead> <tbody> {% for k, v in solutions %} {% set tr_class = '' %} {% set tr_class = tr_class + ' submit-solution' if k == problem.best_solution else '' %} {% set tr_class = tr_class + ' valid-solution' if v.is_valid_solution() else '' %} <tr class="solution-detail-row {{tr_class}}" data-solution-id="{{k}}" data-problem="{{problem.name}}"> <td>{{v.timestamp_str}}</td> <td>{{v.worker}}</td> <td> {% if v.is_valid_solution() %} {{v.score}} ({{v.size_str}}) {% else %} {{v.status}} {% endif %} </td> </tr> {% endfor %} </tbody> </table>
utils/data.py +3 −3 Changes for utils/data.py: 3 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ class Problem(object): self._load_problem(problem_path) if not self.solution_path is None: solution_files = glob.glob(f'{self.solution_path}/{self.name}/*.json') solution_files = glob.glob(f'{self.solution_path}/{self.name}/tmp-*.json') for v in solution_files: solution = Solution(solution_file=v) solution_id = solution.get_id() Loading Loading @@ -364,7 +364,7 @@ class Problem(object): outdir = f"{self.solution_path}/{self.name}" if not os.path.exists(outdir): os.mkdir(outdir) outpath = f"{outdir}/{data['request_id']}-{data['worker']}-p{data['part_id']}.json".replace(":", ".") outpath = f"{outdir}/part-{data['request_id']}-{data['worker']}-p{data['part_id']}.json".replace(":", ".") with open(outpath, 'w') as fp: json.dump(self.get_dict(), fp, indent=4) Loading Loading @@ -540,7 +540,7 @@ class Solution(object): outdir = f"{basedir}/{self.problem}" if not os.path.exists(outdir): os.mkdir(outdir) outpath = f"{outdir}/{self.request_id}-{self.worker}.json".replace(":", ".") outpath = f"{outdir}/tmp-{self.request_id}-{self.worker}.json".replace(":", ".") with open(outpath, 'w') as fp: json.dump(self.get_dict(), fp, indent=4) Loading