A lista suspensa acima dos resultados é o seletor de departamento. As categorias são os diferentes grupos de itens nos resultados de um escopo, e é por isso que você pode ter tido problemas para encontrar a API correta.
Para adicionar departamentos ao seu escopo, você deve chamar register_departments
no objeto de resposta no método run
da sua classe de consulta. Isso leva um objeto unity::scopes::Department::SCPtr
representando o conjunto de departamentos visíveis para este conjunto específico de resultados:
-
se o usuário estiver navegando no departamento de nível superior, você deve passar um
Department
representando o nível superior, com seus filhos imediatos preenchidos. -
Se o usuário estiver navegando em um subdepartamento, você deve passar um
Department
representando o pai, com seus filhos imediatos preenchidos. O departamento atual deve aparecer dentro dos filhos.
A ideia é que apenas as partes da árvore de departamento necessárias para a navegação imediata sejam fornecidas. Seu código pode ser algo assim:
Department::SPtr parent = Department::create("parent", query(), "Parent Dept")
parent->set_subdepartments({
Department::create("sibling", query(), "Sibling department"),
Department::create("current", query(), "Current departmnet")});
reply->register_departments(parent);
Agora, tudo o que você precisa fazer é fazer com que o seu escopo forneça resultados relevantes para o departamento selecionado pelo usuário. Isso é disponibilizado em sua classe de consulta como query().department_id()
. Isso corresponderá à ID de um dos departamentos que você registrou anteriormente ou ""
, que deve ser tratado como o departamento de nível superior.