1 // Copyright (C) 2009-2013 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "BL_JobTab.hxx"
21 #include "BL_Traces.hxx"
27 BL::JobTab::JobTab(QWidget *parent, BL::JobsManager_QT * jobs_manager) : QTabWidget(parent)
29 DEBTRACE("Creating BL::JobTab");
31 BL_ASSERT(jobs_manager);
33 _jobs_manager = jobs_manager;
36 createJobSummaryTab();
42 DEBTRACE("Destroying BL::JobTab");
46 BL::JobTab::setModel(QStandardItemModel * model)
48 DEBTRACE("Call setModel BL::JobTab");
55 BL::JobTab::createJobSummaryTab()
57 _summary_tab = new QWidget(this);
59 QLabel * job_name_label = new QLabel("Name:");
60 _job_name_label_value = new QLabel("");
61 QLabel * job_type_label = new QLabel("Type:");
62 _job_type_label_value = new QLabel("");
63 QLabel * job_state_label = new QLabel("State:");
64 _job_state_label_value = new QLabel("");
65 QLabel * job_launcher_label = new QLabel("Launcher Id:");
66 _job_launcher_label_value = new QLabel("");
67 QLabel * job_resource_label = new QLabel("Resource:");
68 _job_resource_label_value = new QLabel("");
69 QLabel * job_jobfile_label = new QLabel("Job File:");
70 _job_jobfile_label_value = new QLabel("");
71 QLabel * job_envfile_label = new QLabel("Env File:");
72 _job_envfile_label_value = new QLabel("");
76 _yacs_dump_state_label = new QLabel("YACS dump state:");
77 _yacs_dump_state_value = new QLabel("");
79 QGroupBox * main_values_box = new QGroupBox("Main values");
80 _main_values_form = new QFormLayout;
81 _main_values_form->insertRow(0, job_name_label, _job_name_label_value);
82 _main_values_form->insertRow(1, job_type_label, _job_type_label_value);
83 _main_values_form->insertRow(2, job_state_label, _job_state_label_value);
84 _main_values_form->insertRow(3, job_launcher_label, _job_launcher_label_value);
85 _main_values_form->insertRow(4, job_resource_label, _job_resource_label_value);
86 _main_values_form->insertRow(5, job_jobfile_label, _job_jobfile_label_value);
87 _main_values_form->insertRow(6, job_envfile_label, _job_envfile_label_value);
88 main_values_box->setLayout(_main_values_form);
90 QLabel * job_nif_label = new QLabel("Number of Input Files:");
91 _job_nif_label_value = new QLabel("");
92 QLabel * job_nof_label = new QLabel("Number of Output Files:");
93 _job_nof_label_value = new QLabel("");
94 QLabel * job_bd_label = new QLabel("Execution directory:");
95 _job_bd_label_value = new QLabel("");
96 QLabel * job_rd_label = new QLabel("Result directory:");
97 _job_rd_label_value = new QLabel("");
99 QLabel * job_mdt_label = new QLabel("Maximum duration:");
100 _job_mdt_label_value = new QLabel("");
101 QLabel * job_em_label = new QLabel("Expected memory:");
102 _job_em_label_value = new QLabel("");
103 QLabel * job_nop_label = new QLabel("Number of processors:");
104 _job_nop_label_value = new QLabel("");
106 // Parameters for COORM
107 QLabel * job_lf_label = new QLabel("Launcher file:");
108 _job_lf_label_value = new QLabel("");
109 QLabel * job_la_label = new QLabel("Launcher args:");
110 _job_la_label_value = new QLabel("");
113 _batch_queue_label = new QLabel("Batch queue:");
114 _batch_queue_value = new QLabel("");
115 _ll_jobtype_label = new QLabel("LoadLeveler JobType:");
116 _ll_jobtype_value = new QLabel("");
118 QGroupBox * run_values_box = new QGroupBox("Run values");
119 _run_values_form = new QFormLayout;
120 _run_values_form->insertRow(0, job_nif_label, _job_nif_label_value);
121 _run_values_form->insertRow(1, job_nof_label, _job_nof_label_value);
122 _run_values_form->insertRow(2, job_bd_label, _job_bd_label_value);
123 _run_values_form->insertRow(3, job_rd_label, _job_rd_label_value);
125 // Parameters for COORM
126 _run_values_form->insertRow(4, job_lf_label, _job_lf_label_value);
128 _other_run_values_form = new QFormLayout;
129 _other_run_values_form->insertRow(0, job_mdt_label, _job_mdt_label_value);
130 _other_run_values_form->insertRow(1, job_em_label, _job_em_label_value);
131 _other_run_values_form->insertRow(2, job_nop_label, _job_nop_label_value);
133 // Parameters for COORM
134 _other_run_values_form->insertRow(3, job_la_label, _job_la_label_value);
136 QHBoxLayout * box_layout = new QHBoxLayout();
137 box_layout->addLayout(_run_values_form);
138 box_layout->addLayout(_other_run_values_form);
139 run_values_box->setLayout(box_layout);
141 QVBoxLayout * mainLayout = new QVBoxLayout();
142 mainLayout->addWidget(main_values_box);
143 mainLayout->addWidget(run_values_box);
144 _summary_tab->setLayout(mainLayout);
147 insertTab(0, _summary_tab, "Job Summary");
152 BL::JobTab::createJobFilesTab()
154 _files_tab = new QWidget(this);
156 _input_files_list = new QListWidget(this);
157 _input_files_list->setSelectionMode(QAbstractItemView::NoSelection);
158 QGroupBox * input_files_box = new QGroupBox("Input Files");
159 QVBoxLayout * input_layout = new QVBoxLayout();
160 input_layout->addWidget(_input_files_list);
161 input_files_box->setLayout(input_layout);
163 _output_files_list = new QListWidget(this);
164 _output_files_list->setSelectionMode(QAbstractItemView::NoSelection);
165 QGroupBox * output_files_box = new QGroupBox("Output Files");
166 QVBoxLayout * output_layout = new QVBoxLayout();
167 output_layout->addWidget(_output_files_list);
168 output_files_box->setLayout(output_layout);
170 QVBoxLayout * mainLayout = new QVBoxLayout();
171 mainLayout->addWidget(input_files_box);
172 mainLayout->addWidget(output_files_box);
173 _files_tab->setLayout(mainLayout);
175 insertTab(1, _files_tab, "Job Files");
179 BL::JobTab::job_selected(const QModelIndex & index)
181 DEBTRACE("BL::JobTab::job_selected slot");
182 QStandardItem * item = _model->itemFromIndex(index);
183 QStandardItem * item_name = _model->item(item->row());
186 BL::Job * job = _jobs_manager->getJob(item_name->text().toStdString());
190 _job_name_label_value->setText(QString(job->getName().c_str()));
192 if (job->getState() == BL::Job::CREATED)
193 _job_state_label_value->setText("Created");
194 else if (job->getState() == BL::Job::IN_PROCESS)
195 _job_state_label_value->setText("In Process");
196 else if (job->getState() == BL::Job::QUEUED)
197 _job_state_label_value->setText("Queued");
198 else if (job->getState() == BL::Job::RUNNING)
199 _job_state_label_value->setText("Running");
200 else if (job->getState() == BL::Job::PAUSED)
201 _job_state_label_value->setText("Paused");
202 else if (job->getState() == BL::Job::ERROR)
203 _job_state_label_value->setText("Error");
204 else if (job->getState() == BL::Job::FAILED)
205 _job_state_label_value->setText("Failed");
206 else if (job->getState() == BL::Job::NOT_CREATED)
207 _job_state_label_value->setText("Not Created");
209 _job_state_label_value->setText("Finished");
211 _job_launcher_label_value->setText(QVariant(job->getSalomeLauncherId()).toString());
212 _job_jobfile_label_value->setText(QString(job->getJobFile().c_str()));
213 _job_envfile_label_value->setText(QString(job->getEnvFile().c_str()));
214 if (job->getType() == BL::Job::YACS_SCHEMA)
215 _job_type_label_value->setText("YACS_Schema");
216 else if (job->getType() == BL::Job::COMMAND)
217 _job_type_label_value->setText("Command");
218 else if (job->getType() == BL::Job::PYTHON_SALOME)
219 _job_type_label_value->setText("Python_Salome");
221 _job_resource_label_value->setText(QString(job->getResource().c_str()));
223 BL::Job::BatchParam batch_params = job->getBatchParameters();
225 BL::Job::FilesParam files_params = job->getFilesParameters();
226 int nif = files_params.input_files_list.size();
227 _job_nif_label_value->setText(QVariant(nif).toString());
228 int nof = files_params.output_files_list.size();
229 _job_nof_label_value->setText(QVariant(nof).toString());
230 _job_bd_label_value->setText(QString(batch_params.batch_directory.c_str()));
231 _job_rd_label_value->setText(QString(files_params.result_directory.c_str()));
233 _job_mdt_label_value->setText(QString(batch_params.maximum_duration.c_str()));
234 _job_em_label_value->setText(QString(batch_params.expected_memory.c_str()));
235 _job_nop_label_value->setText(QVariant(batch_params.nb_proc).toString());
237 // Parameters for COORM
238 _job_lf_label_value->setText(QString(batch_params.launcher_file.c_str()));
239 _job_la_label_value->setText(QString(batch_params.launcher_args.c_str()));
241 _input_files_list->clear();
242 _output_files_list->clear();
243 std::list<std::string>::iterator it;
244 for (it = files_params.input_files_list.begin(); it != files_params.input_files_list.end(); it++)
246 std::string file = *it;
247 _input_files_list->addItem(QString(file.c_str()));
249 for (it = files_params.output_files_list.begin(); it != files_params.output_files_list.end(); it++)
251 std::string file = *it;
252 _output_files_list->addItem(QString(file.c_str()));
255 // Specific parameters management
256 if (job->getDumpYACSState() > 0)
258 // Add widget in the layout
259 _yacs_dump_state_value->setText(QVariant(job->getDumpYACSState()).toString());
260 _main_values_form->insertRow(7, _yacs_dump_state_label, _yacs_dump_state_value);
262 if (job->getBatchQueue() != "")
264 _batch_queue_value->setText(QVariant(job->getBatchQueue().c_str()).toString());
265 _other_run_values_form->insertRow(_other_run_values_form->rowCount(), _batch_queue_label, _batch_queue_value);
267 if (job->getLoadLevelerJobType() != "")
269 _ll_jobtype_value->setText(QVariant(job->getLoadLevelerJobType().c_str()).toString());
270 _other_run_values_form->insertRow(_other_run_values_form->rowCount(), _ll_jobtype_label, _ll_jobtype_value);
274 DEBTRACE ("itemFromIndex returns 0 !");
278 BL::JobTab::itemChanged(QStandardItem * item)
280 DEBTRACE("BL::JobTab::itemChanged slot");
282 QStandardItem * item_name = _model->item(item->row());
283 BL::Job * job = _jobs_manager->getJob(item_name->text().toStdString());
285 if (_job_name_label_value->text() == QString(job->getName().c_str()))
287 if (job->getState() == BL::Job::CREATED)
288 _job_state_label_value->setText("Created");
289 else if (job->getState() == BL::Job::IN_PROCESS)
290 _job_state_label_value->setText("In Process");
291 else if (job->getState() == BL::Job::QUEUED)
292 _job_state_label_value->setText("Queued");
293 else if (job->getState() == BL::Job::RUNNING)
294 _job_state_label_value->setText("Running");
295 else if (job->getState() == BL::Job::PAUSED)
296 _job_state_label_value->setText("Paused");
297 else if (job->getState() == BL::Job::ERROR)
298 _job_state_label_value->setText("Error");
299 else if (job->getState() == BL::Job::FAILED)
300 _job_state_label_value->setText("Failed");
301 else if (job->getState() == BL::Job::NOT_CREATED)
302 _job_state_label_value->setText("Not Created");
304 _job_state_label_value->setText("Finished");
309 BL::JobTab::reset(QString job_name)
311 if (job_name == _job_name_label_value->text() || job_name == "")
313 _job_name_label_value->setText("");
314 _job_type_label_value->setText("");
315 _job_state_label_value->setText("");
316 _job_launcher_label_value->setText("");
317 _job_resource_label_value->setText("");
318 _job_nif_label_value->setText("");
319 _job_nof_label_value->setText("");
320 _job_bd_label_value->setText("");
321 _job_rd_label_value->setText("");
322 _job_mdt_label_value->setText("");
323 _job_em_label_value->setText("");
324 _job_nop_label_value->setText("");
325 _job_jobfile_label_value->setText("");
326 _job_envfile_label_value->setText("");
328 _input_files_list->clear();
329 _output_files_list->clear();
331 _yacs_dump_state_value->setText("");
332 _batch_queue_value->setText("");
333 _ll_jobtype_value->setText("");
335 // Parameters for COORM
336 _job_lf_label_value->setText("");
337 _job_la_label_value->setText("");