Filtrovanie dát v stromovej štruktúre ublaboo/datagridu?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
KristianSubweb
Člen | 146
+
0
-

Ahoj chcel by som sa opýtať na výpis dát v tabulke používam stromový datagrid. Momentálne viem filtrovať dáta len na úrovni rodiča. Ale ja potrebujem filtrovať aj dáta na úrovni ich potomovkov. Neriešili ste tu niekto niečo podobné ?

Tu je zdrojak datagridu:

 public function createComponentTestAnalysesGrid($name) {

        $qb = $this->testSetService->getAllAsQb()
                ->where("ts.project = :project")
                ->setParameter("project", $this->project);



        $grid = new DataGrid($this, $name);
        // setup
        $grid->setTranslator($this->translator);
        $grid->setDataSource($qb);
        $grid->setStrictSessionFilterValues(FALSE);
        $grid->setTemplateFile($this->dirService->getBlocksDir() . "/datagridTemplate.latte");
        $grid->setDefaultSort(["id" => "DESC"]);
        $grid->setDefaultPerPage("all");
        $grid->setColumnsHideable();

        // ID is everywhere
        $grid->addColumnText("id", "ID")
            ->setSortable();

        $grid->setHeader("Test Set / Test Case");

        $grid->setHugeTreeView([$this, "getChildren"], [$this, "hasChildren"]);

        $grid->addColumnText("name", "is.projects.nameTestSet")
            ->setRenderer(function($item) {
                if ($item instanceof \ProjectModule\Entities\TestSet) {
                    return $item->getTrProp("name");
                } else {
                    return Html::el("a onclick='return false;' data-caseid=" . $item->getId())
                        ->href("#")
                        ->setText($item->getTrProp("name"))
                        ->setClass("showCaseInModal");
                }
            })
            ->setSortable();
        $grid->addColumnText("user", "is.projects.createdBy")
            ->setRenderer(function($item) {
                return $item->getCreator()->getFullName();
            });
        $grid->addColumnText("approved", "is.projects.approved")
            ->setRenderer(function($item) {
                return $item->getApprovedInStyle();
            })
            ->setTemplateEscaping(false);

        $grid->addColumnDateTime("createDate", "is.projects.createDate")
            ->setSortable();

        $grid->addFilterText("name", "is.projects.nameTS");
        $grid->addFilterDateRange("createDate", "is.projects.createDateTS");
        $grid->addFilterSelect("creator", "is.projects.createdTS", Functions::insertEmptyArray($this->userService->getAllUsersInProject($this->projectID)));

        $grid->addColumnText("action", "is.default.action")
            ->setAlign("right")
            ->setTemplate($this->dirService->getModulesDir().'/ProjectModule/templates/TestAnalyses/Blocks/actionDatagridAnalyses.latte', ["presenter" => $grid->getPresenter()]);

        $grid->setPagination(FALSE);

        return $grid;
    }