<?php

use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;

/* @PimDataGrid/macros.html.twig */
class __TwigTemplate_42b375d621435aea07959f5fb626eb3c extends Template
{
    private $source;
    private $macros = [];

    public function __construct(Environment $env)
    {
        parent::__construct($env);

        $this->source = $this->getSourceContext();

        $this->parent = false;

        $this->blocks = [
        ];
        $macros["_self"] = $this->macros["_self"] = $this;
    }

    protected function doDisplay(array $context, array $blocks = [])
    {
        $macros = $this->macros;
        // line 20
        yield "
";
        // line 192
        yield "
";
        return; yield '';
    }

    // line 4
    public function macro_renderGrid($__name__ = null, $__params__ = [], $__renderParams__ = [], ...$__varargs__)
    {
        $macros = $this->macros;
        $context = $this->env->mergeGlobals([
            "name" => $__name__,
            "params" => $__params__,
            "renderParams" => $__renderParams__,
            "varargs" => $__varargs__,
        ]);

        $blocks = [];

        return ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) {
            // line 5
            yield "    ";
            $context["metaData"] = $this->env->getFunction('oro_datagrid_metadata')->getCallable()(($context["name"] ?? null), ($context["params"] ?? null));
            // line 6
            yield "
    <div id=\"grid-";
            // line 7
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "\" data-type=\"datagrid\" data-data=\"";
            yield Twig\Extension\EscaperExtension::escape($this->env, $this->env->getFunction('oro_datagrid_data')->getCallable()(($context["name"] ?? null), ($context["params"] ?? null)));
            yield "\"
         ";
            // line 8
            if (CoreExtension::getAttribute($this->env, $this->source, ($context["renderParams"] ?? null), "cssClass", [], "any", true, true, false, 8)) {
                yield " class=\"";
                yield Twig\Extension\EscaperExtension::escape($this->env, CoreExtension::getAttribute($this->env, $this->source, ($context["renderParams"] ?? null), "cssClass", [], "any", false, false, false, 8), "html", null, true);
                yield "\" ";
            }
            // line 9
            yield "         data-metadata=\"";
            yield Twig\Extension\EscaperExtension::escape($this->env, json_encode(($context["metaData"] ?? null)), "html", null, true);
            yield "\"></div>
    <script type=\"text/javascript\" nonce=\"";
            // line 10
            yield Twig\Extension\EscaperExtension::escape($this->env, $this->extensions['Akeneo\Platform\Bundle\UIBundle\Twig\ContentSecurityPolicyExtension']->getScriptNonce(), "html", null, true);
            yield "\">
        require(['jquery', 'oro/datagrid-builder', 'underscore'].concat(";
            // line 11
            yield json_encode(CoreExtension::getAttribute($this->env, $this->source, ($context["metaData"] ?? null), "requireJSModules", [], "any", false, false, false, 11));
            yield "),
        function (\$, datagridBuilder, _) {
            var builders = _.toArray(arguments).slice(3);
            \$(function () {
                datagridBuilder(builders);
            });
        });
    </script>
";
        })() ?? new \EmptyIterator())) ? '' : new Markup($tmp, $this->env->getCharset());
    }

    // line 24
    public function macro_renderStatefulGrid($__name__ = null, $__params__ = [], $__renderParams__ = [], $__defaultView__ = [], $__categoryBaseRoute__ = null, $__includeFilters__ = false, ...$__varargs__)
    {
        $macros = $this->macros;
        $context = $this->env->mergeGlobals([
            "name" => $__name__,
            "params" => $__params__,
            "renderParams" => $__renderParams__,
            "defaultView" => $__defaultView__,
            "categoryBaseRoute" => $__categoryBaseRoute__,
            "includeFilters" => $__includeFilters__,
            "varargs" => $__varargs__,
        ]);

        $blocks = [];

        return ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) {
            // line 25
            yield "    <div id=\"grid-";
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "\" data-type=\"datagrid\" ";
            if (CoreExtension::getAttribute($this->env, $this->source, ($context["renderParams"] ?? null), "cssClass", [], "any", true, true, false, 25)) {
                yield " class=\"";
                yield Twig\Extension\EscaperExtension::escape($this->env, CoreExtension::getAttribute($this->env, $this->source, ($context["renderParams"] ?? null), "cssClass", [], "any", false, false, false, 25), "html", null, true);
                yield "\" ";
            }
            yield "></div>
    <script type=\"text/javascript\" nonce=\"";
            // line 26
            yield Twig\Extension\EscaperExtension::escape($this->env, $this->extensions['Akeneo\Platform\Bundle\UIBundle\Twig\ContentSecurityPolicyExtension']->getScriptNonce(), "html", null, true);
            yield "\">
        require(
            [
                'underscore',
                'jquery',
                'pim/router',
                'oro/datagrid-builder',
                'oro/pageable-collection',
                'pim/datagrid/state',
                'oro/datafilter/product_category-filter'
            ],
            function (
                _,
                \$,
                Routing,
                datagridBuilder,
                PageableCollection,
                DatagridState,
                CategoryFilter
            ) {
                'use strict';

                \$(function() {

                    var defaultColumnsRoute = Routing.generate(
                            'pim_datagrid_view_rest_default_columns',
                            {alias: '";
            // line 52
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "' }
                    );

                    \$.get(defaultColumnsRoute, function (defaultColumns) {
                        initDatagrid(defaultColumns);
                    });

                    var initDatagrid = function (defaultColumns) {
                        var urlParams    = ";
            // line 60
            yield json_encode(($context["params"] ?? null));
            yield ";
                        urlParams.alias  = '";
            // line 61
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "';
                        urlParams.params = ";
            // line 62
            yield json_encode(($context["params"] ?? null));
            yield ";

                        ";
            // line 64
            $context["hasDefaultView"] =  !Twig\Extension\CoreExtension::testEmpty(($context["defaultView"] ?? null));
            // line 65
            yield "                        var viewStored = DatagridState.get('";
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "', ['view']);
                        if (!viewStored.view) {
                            DatagridState.refreshFiltersFromUrl('";
            // line 67
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "');
                        }

                        var hasDefaultView = ";
            // line 70
            if (($context["hasDefaultView"] ?? null)) {
                yield "true";
            } else {
                yield "false";
            }
            yield ";
                        var state          = DatagridState.get('";
            // line 71
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "', ['view', 'filters', 'columns']);

                        var applyView = function (viewId) {
                            urlParams['";
            // line 74
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "[_parameters][view][id]'] = viewId;

                            DatagridState.set('";
            // line 76
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "', {
                                view: viewId
                            });
                        };

                        var applyFilters = function (rawFilters) {
                            var filters = PageableCollection.prototype.decodeStateData(rawFilters);
                            var options = {};

                            if (!_.isEmpty(filters.filters)) {
                                options = {
                                    state: {
                                        filters: _.omit(filters.filters, 'scope')
                                    }
                                };
                            }

                            var collection = new PageableCollection(null, options);
                            collection.processFiltersParams(urlParams, filters, '";
            // line 94
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "[_filter]');

                            for (var column in filters.sorters) {
                                urlParams['";
            // line 97
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "[_sort_by][' + column + ']'] =
                                        1 === parseInt(filters.sorters[column]) ?
                                                'DESC' :
                                                'ASC';
                            }

                            if (undefined !== filters.pageSize) {
                                urlParams['";
            // line 104
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "[_pager][_per_page]'] = filters.pageSize;
                            }

                            if (undefined !== filters.currentPage) {
                                urlParams['";
            // line 108
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "[_pager][_page]'] = filters.currentPage;
                            }

                            DatagridState.set('";
            // line 111
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "', {
                                filters: rawFilters
                            });
                        };

                        var applyColumns = function (columns) {
                            if (_.isArray(columns)) {
                                columns = columns.join();
                            }
                            urlParams['";
            // line 120
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "[_parameters][view][columns]'] = columns;

                            DatagridState.set('";
            // line 122
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "', {
                                columns: columns
                            });
                        };

                        if (hasDefaultView && ('0' === state.view || null === state.view)) {
                            ";
            // line 128
            if (($context["hasDefaultView"] ?? null)) {
                // line 129
                yield "                            applyView(";
                yield Twig\Extension\EscaperExtension::escape($this->env, CoreExtension::getAttribute($this->env, $this->source, ($context["defaultView"] ?? null), "id", [], "any", false, false, false, 129), "html", null, true);
                yield ");
                            applyFilters('";
                // line 130
                yield CoreExtension::getAttribute($this->env, $this->source, ($context["defaultView"] ?? null), "filters", [], "any", false, false, false, 130);
                yield "');
                            applyColumns(";
                // line 131
                yield json_encode(CoreExtension::getAttribute($this->env, $this->source, ($context["defaultView"] ?? null), "columns", [], "any", false, false, false, 131));
                yield ");
                            ";
            }
            // line 133
            yield "                        } else {
                            if (state.view) {
                                applyView(state.view);
                            }

                            if (state.filters) {
                                applyFilters(state.filters);
                            }

                            if (state.columns) {
                                applyColumns(state.columns);
                            } else {
                                applyColumns(defaultColumns);
                            }
                        }

                        ";
            // line 149
            if ( !(null === ($context["categoryBaseRoute"] ?? null))) {
                // line 150
                yield "                        var categoryFilter = new CategoryFilter(
                            urlParams,
                            '";
                // line 152
                yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
                yield "',
                            '";
                // line 153
                yield Twig\Extension\EscaperExtension::escape($this->env, ($context["categoryBaseRoute"] ?? null), "html", null, true);
                yield "',
                            '#tree'
                        );
                        ";
            }
            // line 157
            yield "
                        state = DatagridState.get('";
            // line 158
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "', ['view', 'filters', 'columns']);

                        \$.get(Routing.generate('pim_datagrid_load', urlParams), function(resp) {
                            if (state.columns) {
                                resp.metadata.state.parameters = _.extend({}, resp.metadata.state.parameters, {
                                    view: {
                                        columns: state.columns,
                                        id: state.view
                                    }
                                });
                            }
                            \$('#grid-";
            // line 169
            yield Twig\Extension\EscaperExtension::escape($this->env, ($context["name"] ?? null), "html", null, true);
            yield "').data({ 'metadata': resp.metadata, 'data': JSON.parse(resp.data) });

                            var modules = resp.metadata.requireJSModules;
                            modules.push('pim/datagrid/state-listener');

                            // Will be removed in TIP-733-2
                            ";
            // line 175
            if (($context["includeFilters"] ?? null)) {
                // line 176
                yield "                                modules.push('oro/datafilter-builder');
                            ";
            }
            // line 178
            yield "
                            var resolvedModules = []
                            _.each(modules, function(module) {
                              var resolvedModule = require(module)
                              resolvedModules.push(resolvedModule)
                            })
                            datagridBuilder(resolvedModules);
                        });
                    };
                });
            }
        );
    </script>
";
        })() ?? new \EmptyIterator())) ? '' : new Markup($tmp, $this->env->getCharset());
    }

    // line 196
    public function macro_renderHistoryGrid($__entity__ = null, ...$__varargs__)
    {
        $macros = $this->macros;
        $context = $this->env->mergeGlobals([
            "entity" => $__entity__,
            "varargs" => $__varargs__,
        ]);

        $blocks = [];

        return ('' === $tmp = \Twig\Extension\CoreExtension::captureOutput((function () use (&$context, $macros, $blocks) {
            // line 197
            yield "    ";
            yield CoreExtension::callMacro($macros["_self"], "macro_renderGrid", ["history-grid", ["object_class" => $this->extensions['Akeneo\Platform\Bundle\UIBundle\Twig\ObjectClassExtension']->getClass(($context["entity"] ?? null)), "object_id" => CoreExtension::getAttribute($this->env, $this->source, ($context["entity"] ?? null), "id", [], "any", false, false, false, 197)]], 197, $context, $this->getSourceContext());
            yield "
";
        })() ?? new \EmptyIterator())) ? '' : new Markup($tmp, $this->env->getCharset());
    }

    /**
     * @codeCoverageIgnore
     */
    public function getTemplateName()
    {
        return "@PimDataGrid/macros.html.twig";
    }

    /**
     * @codeCoverageIgnore
     */
    public function isTraitable()
    {
        return false;
    }

    /**
     * @codeCoverageIgnore
     */
    public function getDebugInfo()
    {
        return array (  406 => 197,  394 => 196,  376 => 178,  372 => 176,  370 => 175,  361 => 169,  347 => 158,  344 => 157,  337 => 153,  333 => 152,  329 => 150,  327 => 149,  309 => 133,  304 => 131,  300 => 130,  295 => 129,  293 => 128,  284 => 122,  279 => 120,  267 => 111,  261 => 108,  254 => 104,  244 => 97,  238 => 94,  217 => 76,  212 => 74,  206 => 71,  198 => 70,  192 => 67,  186 => 65,  184 => 64,  179 => 62,  175 => 61,  171 => 60,  160 => 52,  131 => 26,  120 => 25,  103 => 24,  89 => 11,  85 => 10,  80 => 9,  74 => 8,  68 => 7,  65 => 6,  62 => 5,  48 => 4,  42 => 192,  39 => 20,);
    }

    public function getSourceContext()
    {
        return new Source("", "@PimDataGrid/macros.html.twig", "/var/www/html/pim/vendor/akeneo/pim-community-dev/src/Oro/Bundle/PimDataGridBundle/Resources/views/macros.html.twig");
    }
}
