Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/app/code/Ecombricks/Common/Ui/DataProvider/Modifier/Meta/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/corals/old/app/code/Ecombricks/Common/Ui/DataProvider/Modifier/Meta/DynamicRows.php
<?php
/**
 * Copyright © eComBricks. All rights reserved.
 * See LICENSE.txt for license details.
 */
declare(strict_types=1);

namespace Ecombricks\Common\Ui\DataProvider\Modifier\Meta;

/**
 * Dynamic rows UI data provider meta
 */
class DynamicRows
{
    
    /**
     * Component
     * 
     * @var \Ecombricks\Common\Ui\DataProvider\Modifier\Meta\Component
     */
    protected $component;
    
    /**
     * Container
     * 
     * @var \Ecombricks\Common\Ui\DataProvider\Modifier\Meta\Container
     */
    protected $container;
    
    /**
     * Constructor
     * 
     * @param \Ecombricks\Common\Ui\DataProvider\Modifier\Meta\Component $component
     * @param \Ecombricks\Common\Ui\DataProvider\Modifier\Meta\Container $container
     * @return void
     */
    public function __construct(
        \Ecombricks\Common\Ui\DataProvider\Modifier\Meta\Component $component,
        \Ecombricks\Common\Ui\DataProvider\Modifier\Meta\Container $container
    )
    {
        $this->component = $component;
        $this->container = $container;
    }
    
    /**
     * Create record meta
     * 
     * @param array $columns
     * @param bool $actionDelete
     * @return array
     */
    protected function createRecord(array $columns, bool $actionDelete): array
    {
        $children = [];
        foreach ($columns as $columnName => $column) {
            if (!empty($column['config']) && !empty($column['children'])) {
                $children[$columnName] = $this->container->create(
                    array_merge(
                        [
                            'showLabel' => false,
                            'component' => 'Magento_Ui/js/form/components/group',
                            'additionalClasses' => 'admin__field-container_'.$columnName,
                            
                        ],
                        $column['config']
                    ),
                    $column['children']
                );
                continue;
            }
            $children[$columnName] = $column;
        }
        if ($actionDelete) {
            $children['action_delete'] = $this->component->create(
                [
                    'componentType' => 'actionDelete',
                    'label' => null,
                    'fit' => true,
                ]
            );
        }
        return $this->component->create(
            [
                'componentType' => \Magento\Ui\Component\Container::NAME,
                'isTemplate' => true,
                'is_collection' => true,
                'component' => 'Magento_Ui/js/dynamic-rows/record',
                'dataScope' => '',
            ],
            $children
        );
    }
    
    /**
     * Create
     * 
     * @param array $config
     * @param array $columns
     * @param bool $actionDelete
     * @return array
     */
    public function create(array $config, array $columns, bool $actionDelete = true): array
    {
        return $this->component->create(
            array_merge(
                [
                    'componentType' => \Magento\Ui\Component\DynamicRows::NAME,
                    'itemTemplate' => 'record',
                    'renderDefaultRecord' => false,
                    'columnsHeader' => true,
                    'additionalClasses' => 'admin__field-wide',
                    'deleteProperty'=> 'is_delete',
                    'deleteValue' => '1',
                ],
                $config
            ),
            [ 'record' => $this->createRecord($columns, $actionDelete), ]
        );
    }
    
}

Spamworldpro Mini