Loading main.py +6 −3 Changes for main.py: 6 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -44,10 +44,13 @@ def webui_part_solver_status(): else: return abort(404) @webui.route('/part/request/<request_id>') def webui_part_request_status(request_id=None): # @webui.route('/part/request/<request_id>') @webui.route('/part/request/<problem_name>') # def webui_part_request_status(request_id=None): def webui_part_request_status(problem_name=None): if (adc2019system.role is not None) and (adc2019system.role.type == 'host'): request_status = adc2019system.role.get_request_status(float(request_id)) # request_status = adc2019system.role.get_request_status(float(request_id)) request_status = adc2019system.role.get_request_by_problem(problem_name) return render_template('part_request_status.html', status=request_status) else: return abort(404) Loading roles/host.py +13 −4 Changes for roles/host.py: 13 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ class Host(object): self.problems = dict() self.worker_manager = None self.request = dict() self.processing_request = None self.problem_to_request = dict() self._load_problems(config['problem_path']) self._setup_workers() Loading @@ -37,6 +37,7 @@ class Host(object): _key = problem.name self.problems[_key] = problem self.problem_to_request[_key] = list() def _setup_workers(self): Loading @@ -56,6 +57,7 @@ class Host(object): request = Request(self.worker_manager, problem.get_dict(), solvers=solvers) request_id = request.get_id() self.request[request_id] = request self.problem_to_request[problem_key].append(request_id) request.broadcast() return { Loading Loading @@ -130,6 +132,16 @@ class Host(object): else: return {'status': 'unknown request'} def get_request_by_problem(self, problem_key): if problem_key in self.problem_to_request: request_statuses = list() for rid in self.problem_to_request[problem_key]: r = self.request[rid] request_statuses.append(r.get_status()) return reversed(request_statuses) else: return None def get_viewer_data(self, problem_key, solution_id): problem = self.get_problem(problem_key) if problem is None: Loading Loading @@ -361,10 +373,8 @@ class Request(object): self.response[worker] = data def get_status(self): # all_workers = self.worker_manager.get_workers().keys() worker_count = 0 response_count = 0 # for v in all_workers: for v in self.solvers: worker_count += 1 if v in self.response: Loading @@ -390,7 +400,6 @@ class Request(object): progress = min(100, max(progress_problem, progress_time)) worker_status = dict() # for v in all_workers: for v in self.solvers: if v in self.response: worker_status[v] = self.response[v]['status'] Loading static/js/adc2019.js +46 −25 Changes for static/js/adc2019.js: 46 added lines, 25 removed lines. Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ class StatusView { _this.container.empty(); _this.container.html(d); clearInterval(_this.request_refresh_timer); _this.container.find('.start-button').click(()=>{ _this.start_solver(); }); Loading Loading @@ -95,25 +97,26 @@ class StatusView { contentType: 'application/json' }).done((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(); }); // 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(); // }); _this.request_refresh_timer = setInterval((function _t(){ _this.get_request_status(request_id); // _this.get_request_status(request_id); _this.get_request_status(); return _t; }()), 1000); }); Loading Loading @@ -171,20 +174,38 @@ class StatusView { }); } get_request_status(request_id){ // get_request_status(request_id){ // var _this = this; // $.ajax({ // type: 'GET', // dataType: 'html', // url: '/part/request/' + request_id // }).done((d) => { // _this.container.find('#request-status-container').empty(); // _this.container.find('#request-status-container').html(d); // status = $(d).find('#request-status-value').text(); // if(status == 'done'){ // clearInterval(_this.request_refresh_timer); // } // }); // } get_request_status(){ var _this = this; $.ajax({ type: 'GET', dataType: 'html', url: '/part/request/' + request_id url: '/part/request/' + _this.problem_key }).done((d) => { _this.container.find('#request-status-container').empty(); _this.container.find('#request-status-container').html(d); _this.container.find('#request-table-container').empty(); _this.container.find('#request-table-container').html(d); status = $(d).find('#request-status-value').text(); if(status == 'done'){ clearInterval(_this.request_refresh_timer); } // status = $(d).find('#request-status-value').text(); // if(status == 'done'){ // clearInterval(_this.request_refresh_timer); // } // _this.fire('refresh'); }); } Loading templates/part_problem_status.html +7 −0 Changes for templates/part_problem_status.html: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -47,6 +47,13 @@ </div> </div> <div id="request-list-container"> <h4>リクエスト一覧</h4> <div id="request-table-container"> </div> </div> <div id='solution-list-container'> <h4>処理結果一覧</h4> <table class="table table-bordered table-striped"> Loading templates/part_request_status.html +9 −5 Changes for templates/part_request_status.html: 9 added lines, 5 removed lines. Original line number Diff line number Diff line <div> <p>処理結果:<span id='request-status-value'>{{status.status}}</span></p> <table class="table table-bordered"> <tr> {% for r in status %} <p>処理結果:<span id='request-status-value'>{{r.status}}</span></p> <table class="table table-bordered table-sm"> <!-- <tr> <th>Worker (Solver)</th> <th>Status</th> </tr> {% for k, v in status['worker_status'].items() %} </tr> --> <tbody> {% for k, v in r['worker_status'].items() %} <tr> <td>{{k}}</td> <td>{{v}}</td> </tr> {% endfor %} </tbody> </table> {% endfor %} </div> Loading
main.py +6 −3 Changes for main.py: 6 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -44,10 +44,13 @@ def webui_part_solver_status(): else: return abort(404) @webui.route('/part/request/<request_id>') def webui_part_request_status(request_id=None): # @webui.route('/part/request/<request_id>') @webui.route('/part/request/<problem_name>') # def webui_part_request_status(request_id=None): def webui_part_request_status(problem_name=None): if (adc2019system.role is not None) and (adc2019system.role.type == 'host'): request_status = adc2019system.role.get_request_status(float(request_id)) # request_status = adc2019system.role.get_request_status(float(request_id)) request_status = adc2019system.role.get_request_by_problem(problem_name) return render_template('part_request_status.html', status=request_status) else: return abort(404) Loading
roles/host.py +13 −4 Changes for roles/host.py: 13 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ class Host(object): self.problems = dict() self.worker_manager = None self.request = dict() self.processing_request = None self.problem_to_request = dict() self._load_problems(config['problem_path']) self._setup_workers() Loading @@ -37,6 +37,7 @@ class Host(object): _key = problem.name self.problems[_key] = problem self.problem_to_request[_key] = list() def _setup_workers(self): Loading @@ -56,6 +57,7 @@ class Host(object): request = Request(self.worker_manager, problem.get_dict(), solvers=solvers) request_id = request.get_id() self.request[request_id] = request self.problem_to_request[problem_key].append(request_id) request.broadcast() return { Loading Loading @@ -130,6 +132,16 @@ class Host(object): else: return {'status': 'unknown request'} def get_request_by_problem(self, problem_key): if problem_key in self.problem_to_request: request_statuses = list() for rid in self.problem_to_request[problem_key]: r = self.request[rid] request_statuses.append(r.get_status()) return reversed(request_statuses) else: return None def get_viewer_data(self, problem_key, solution_id): problem = self.get_problem(problem_key) if problem is None: Loading Loading @@ -361,10 +373,8 @@ class Request(object): self.response[worker] = data def get_status(self): # all_workers = self.worker_manager.get_workers().keys() worker_count = 0 response_count = 0 # for v in all_workers: for v in self.solvers: worker_count += 1 if v in self.response: Loading @@ -390,7 +400,6 @@ class Request(object): progress = min(100, max(progress_problem, progress_time)) worker_status = dict() # for v in all_workers: for v in self.solvers: if v in self.response: worker_status[v] = self.response[v]['status'] Loading
static/js/adc2019.js +46 −25 Changes for static/js/adc2019.js: 46 added lines, 25 removed lines. Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ class StatusView { _this.container.empty(); _this.container.html(d); clearInterval(_this.request_refresh_timer); _this.container.find('.start-button').click(()=>{ _this.start_solver(); }); Loading Loading @@ -95,25 +97,26 @@ class StatusView { contentType: 'application/json' }).done((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(); }); // 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(); // }); _this.request_refresh_timer = setInterval((function _t(){ _this.get_request_status(request_id); // _this.get_request_status(request_id); _this.get_request_status(); return _t; }()), 1000); }); Loading Loading @@ -171,20 +174,38 @@ class StatusView { }); } get_request_status(request_id){ // get_request_status(request_id){ // var _this = this; // $.ajax({ // type: 'GET', // dataType: 'html', // url: '/part/request/' + request_id // }).done((d) => { // _this.container.find('#request-status-container').empty(); // _this.container.find('#request-status-container').html(d); // status = $(d).find('#request-status-value').text(); // if(status == 'done'){ // clearInterval(_this.request_refresh_timer); // } // }); // } get_request_status(){ var _this = this; $.ajax({ type: 'GET', dataType: 'html', url: '/part/request/' + request_id url: '/part/request/' + _this.problem_key }).done((d) => { _this.container.find('#request-status-container').empty(); _this.container.find('#request-status-container').html(d); _this.container.find('#request-table-container').empty(); _this.container.find('#request-table-container').html(d); status = $(d).find('#request-status-value').text(); if(status == 'done'){ clearInterval(_this.request_refresh_timer); } // status = $(d).find('#request-status-value').text(); // if(status == 'done'){ // clearInterval(_this.request_refresh_timer); // } // _this.fire('refresh'); }); } Loading
templates/part_problem_status.html +7 −0 Changes for templates/part_problem_status.html: 7 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -47,6 +47,13 @@ </div> </div> <div id="request-list-container"> <h4>リクエスト一覧</h4> <div id="request-table-container"> </div> </div> <div id='solution-list-container'> <h4>処理結果一覧</h4> <table class="table table-bordered table-striped"> Loading
templates/part_request_status.html +9 −5 Changes for templates/part_request_status.html: 9 added lines, 5 removed lines. Original line number Diff line number Diff line <div> <p>処理結果:<span id='request-status-value'>{{status.status}}</span></p> <table class="table table-bordered"> <tr> {% for r in status %} <p>処理結果:<span id='request-status-value'>{{r.status}}</span></p> <table class="table table-bordered table-sm"> <!-- <tr> <th>Worker (Solver)</th> <th>Status</th> </tr> {% for k, v in status['worker_status'].items() %} </tr> --> <tbody> {% for k, v in r['worker_status'].items() %} <tr> <td>{{k}}</td> <td>{{v}}</td> </tr> {% endfor %} </tbody> </table> {% endfor %} </div>