222 lines
5.5 KiB
C
222 lines
5.5 KiB
C
|
|
/**
|
|||
|
|
* @file SubmitWorkflowDialog.h
|
|||
|
|
* @brief 提交工作流对话框
|
|||
|
|
* @date 2014-12-10
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef PAI_FRAME_WORKFLOWVIEW_SUBMITWORKFLOWDIALOG_H_
|
|||
|
|
#define PAI_FRAME_WORKFLOWVIEW_SUBMITWORKFLOWDIALOG_H_
|
|||
|
|
|
|||
|
|
#include "PaiDialog.h"
|
|||
|
|
#include "Job.h"
|
|||
|
|
#include <QCheckBox>
|
|||
|
|
|
|||
|
|
class QStackedWidget;
|
|||
|
|
class QTableWidget;
|
|||
|
|
|
|||
|
|
namespace pai
|
|||
|
|
{
|
|||
|
|
namespace gui
|
|||
|
|
{
|
|||
|
|
class PaiPushButton;
|
|||
|
|
class PaiLabel;
|
|||
|
|
class PaiNameLineEdit;
|
|||
|
|
class PaiCheckBox;
|
|||
|
|
class PaiCollapsibleWidget;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
namespace pai
|
|||
|
|
{
|
|||
|
|
namespace gui
|
|||
|
|
{
|
|||
|
|
/**
|
|||
|
|
* @class SubmitWorkflowDialog
|
|||
|
|
* @brief 提交工作流对话框
|
|||
|
|
*/
|
|||
|
|
class SubmitWorkflowDialog : public PaiDialog
|
|||
|
|
{
|
|||
|
|
Q_OBJECT
|
|||
|
|
public:
|
|||
|
|
/**
|
|||
|
|
* @brief 表示一条资源信息
|
|||
|
|
*/
|
|||
|
|
struct ResItem
|
|||
|
|
{
|
|||
|
|
QString queueName; // 队列名称
|
|||
|
|
QString mainTitle; // 主标题
|
|||
|
|
QString totalTitle; // 总资源量标题
|
|||
|
|
QString freeTitle; // 可用资源量标题
|
|||
|
|
QString usedTitle; // 已经使用资源量标题
|
|||
|
|
long total; // 总资源量
|
|||
|
|
long used; // 已经使用资源量
|
|||
|
|
long required; // 所需资源量
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 构造函数
|
|||
|
|
* @param[in] pParent 父窗口句柄
|
|||
|
|
*/
|
|||
|
|
SubmitWorkflowDialog(QWidget *pParent = NULL);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 析构函数
|
|||
|
|
*/
|
|||
|
|
virtual ~SubmitWorkflowDialog();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置map slot的资源信息
|
|||
|
|
* @param[in] item 槽资源的信息
|
|||
|
|
*/
|
|||
|
|
void SetCpuItem(const ResItem& item);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置配额资源的信息
|
|||
|
|
* @param[in] item 配额资源信息
|
|||
|
|
*/
|
|||
|
|
void SetStorageItem(const ResItem& item);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置作业名称
|
|||
|
|
* @param[in] jobName 作业名称
|
|||
|
|
*/
|
|||
|
|
void SetJobName(const QString& jobName);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取作业名称
|
|||
|
|
* @return 作业名称
|
|||
|
|
*/
|
|||
|
|
QString GetJobName();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 根据槽信息和配额信息添加Widget
|
|||
|
|
*/
|
|||
|
|
void SetWidgets();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取作业优先级
|
|||
|
|
* @return 作业优先级
|
|||
|
|
*/
|
|||
|
|
pai::ios::job::JobPriority GetPriority();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取队列名称
|
|||
|
|
* @return 队列名称
|
|||
|
|
*/
|
|||
|
|
QString GetQueueName();
|
|||
|
|
|
|||
|
|
private slots:
|
|||
|
|
/**
|
|||
|
|
* @brief 点击NormalRadioButton时触发
|
|||
|
|
* @param[in] toggled true选中,false取消选中
|
|||
|
|
*/
|
|||
|
|
void ToggleNormalRadio(bool toggled);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 点击SpecialRadioButton时触发
|
|||
|
|
* @param[in] toggled true选中,false取消选中
|
|||
|
|
*/
|
|||
|
|
void ToggleSpecialRadio(bool toggled);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 显示所有的特殊队列
|
|||
|
|
*/
|
|||
|
|
void ExpandAllSpecilaQueue();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 收起所有的特殊队列
|
|||
|
|
*/
|
|||
|
|
void CollapseAllSpecilaQueue();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 选中当前被选中radioButton所在行
|
|||
|
|
* @param[in] toggled true选中,false取消选中
|
|||
|
|
*/
|
|||
|
|
void SelectCurrentRow(bool toggled);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 选中当前行以及当前行的radioButton
|
|||
|
|
*/
|
|||
|
|
void SelectCurrentRadioBtn();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 权限checkBox选中
|
|||
|
|
* @param[in] checked true选中,false取消选中
|
|||
|
|
*/
|
|||
|
|
void SetPriority(int checked);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
/**
|
|||
|
|
* @brief 清理槽Widget
|
|||
|
|
*/
|
|||
|
|
void ClearCpuWidget();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置特殊队列时,槽资源的Widget
|
|||
|
|
*/
|
|||
|
|
void SetSpecialCpuWidget();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 根据队列名称获取队列的槽信息
|
|||
|
|
* @param[in] name 队列名称
|
|||
|
|
* @return 槽信息
|
|||
|
|
*/
|
|||
|
|
ResItem GetSpecialQueueResItem(const QString& name);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取所有特殊队列的槽信息
|
|||
|
|
* @return 所有特殊队列槽信息
|
|||
|
|
*/
|
|||
|
|
QList<ResItem> GetSpecialQueueResItems();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置普通队列的槽Widget
|
|||
|
|
*/
|
|||
|
|
void SetCpuWidget();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置配额的Widget
|
|||
|
|
*/
|
|||
|
|
void SetStorageWidget();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 根据item信息添加Widget
|
|||
|
|
* @param[in] item 槽或者配额信息
|
|||
|
|
* @param[in] pIcon 槽或者配额对应图标
|
|||
|
|
*/
|
|||
|
|
QWidget* AddItemWidget(const ResItem& item, PaiLabel *pIcon);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 根据队列槽总数设置continue状态
|
|||
|
|
* @param[in] name 队列名称
|
|||
|
|
*/
|
|||
|
|
void UpdateContinueBtn(const QString& name);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 根据队列名称获取当前的特殊队列的槽资源
|
|||
|
|
* @param[in] name 队列名称
|
|||
|
|
*/
|
|||
|
|
ResItem GetCurrentItem(const QString& name);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
QWidget *m_pCpuWgt; //普通队列槽信息Widget显示容器
|
|||
|
|
QWidget *m_pSpecialCpuWgt; //特殊队列槽信息Widget显示容器
|
|||
|
|
QStackedWidget *m_pStack; //槽信息分页显示布局器
|
|||
|
|
QWidget *m_pStorage; //配额信息Widget显示容器
|
|||
|
|
PaiPushButton *m_pContinuePBtn; //continue按钮
|
|||
|
|
PaiPushButton *m_pCancelPBtn; //Cancel按钮
|
|||
|
|
PaiNameLineEdit *m_pJobNameEdit; //作业名称编辑框
|
|||
|
|
ResItem m_cpuItem; //普通队列槽信息
|
|||
|
|
ResItem m_storageItem; //配额信息
|
|||
|
|
QCheckBox *m_priorityCheckBox; //作业优先级设置checkBox
|
|||
|
|
PaiCollapsibleWidget *m_pExtendCtrl; //所有特殊队列展示控制控件
|
|||
|
|
QTableWidget *m_pTable; //展示特殊队列的表格
|
|||
|
|
pai::ios::job::JobPriority m_priority; //记录当前的作业优先级
|
|||
|
|
QString m_currentSQueue; //当前队列名称
|
|||
|
|
QList<ResItem> m_items; //特殊队列的槽资源信息
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|