MetaModels\DcGeneral\Dca\Builder\Builder::parsePalettes PHP Метод

parsePalettes() защищенный Метод

Parse the palettes from the input screen into the data container.
protected parsePalettes ( MetaModels\DcGeneral\DataDefinition\IMetaModelDataDefinition $container ) : void
$container MetaModels\DcGeneral\DataDefinition\IMetaModelDataDefinition The data container.
Результат void
    protected function parsePalettes(IMetaModelDataDefinition $container)
    {
        $inputScreen = $this->getInputScreenDetails();
        $metaModel = $this->getMetaModel();
        if ($container->hasDefinition(PalettesDefinitionInterface::NAME)) {
            $palettesDefinition = $container->getDefinition(PalettesDefinitionInterface::NAME);
        } else {
            $palettesDefinition = new DefaultPalettesDefinition();
            $container->setDefinition(PalettesDefinitionInterface::NAME, $palettesDefinition);
        }
        $palette = new Palette();
        $palette->setName('default')->setCondition(new DefaultPaletteCondition());
        $palettesDefinition->addPalette($palette);
        foreach ($inputScreen->getLegends() as $legendName => $legend) {
            $paletteLegend = new Legend($legendName);
            $paletteLegend->setInitialVisibility($legend['visible']);
            $palette->addLegend($paletteLegend);
            $this->translator->setValue($legendName . '_legend', $legend['name'], $container->getName());
            foreach ($legend['properties'] as $propertyName) {
                $property = new Property($propertyName);
                $paletteLegend->addProperty($property);
                $propInfo = $inputScreen->getProperty($propertyName);
                $chain = new PropertyConditionChain();
                $property->setEditableCondition($chain);
                $chain->addCondition(new BooleanCondition(!(isset($propInfo['info']['readonly']) && $propInfo['info']['readonly'])));
                if ($metaModel->hasVariants() && !$metaModel->getAttribute($propertyName)->get('isvariant')) {
                    $chain->addCondition(new PropertyValueCondition('varbase', 1));
                }
                $extra = $propInfo['info'];
                $chain = new PropertyConditionChain();
                $property->setVisibleCondition($chain);
                $chain->addCondition(new BooleanCondition(!(isset($extra['doNotShow']) && $extra['doNotShow'] || isset($extra['hideInput']) && $extra['hideInput'])));
                $propertyConditions = $inputScreen->getConditionsFor($propertyName);
                if ($propertyConditions !== null) {
                    $chain->addCondition($propertyConditions);
                }
                // If variants, do show only if allowed.
                if ($metaModel->hasVariants()) {
                    $chain->addCondition(new IsVariantAttribute());
                }
            }
        }
    }