<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
 * @author Amasty Team
 * @copyright Copyright (c) Amasty (https://www.amasty.com)
 * @package Elastic Search Base for Magento 2
 */-->
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="provider" xsi:type="string">amasty_elastic_relevancerule_form.amasty_elastic_relevance_rule_form_data_source</item>
            <item name="deps" xsi:type="string">amasty_elastic_relevancerule_form.amasty_elastic_relevance_rule_form_data_source</item>
        </item>
        <item name="label" xsi:type="string" translate="true">Relevance Rule Information</item>
        <item name="config" xsi:type="array">
            <item name="dataScope" xsi:type="string">data</item>
            <item name="namespace" xsi:type="string">amasty_elastic_relevancerule_form</item>
        </item>
        <item name="template" xsi:type="string">templates/form/collapsible</item>
        <item name="buttons" xsi:type="array">
            <item name="back" xsi:type="array">
                <item name="name" xsi:type="string">back</item>
                <item name="label" xsi:type="string" translate="true">Back</item>
                <item name="class" xsi:type="string">back</item>
                <item name="url" xsi:type="string">*/*/</item>
            </item>
            <item name="save" xsi:type="array">
                <item name="name" xsi:type="string">save</item>
                <item name="label" xsi:type="string" translate="true">Save</item>
                <item name="class" xsi:type="string">save primary</item>
                <item name="url" xsi:type="string">*/*/save</item>
            </item>
            <item name="reset" xsi:type="array">
                <item name="name" xsi:type="string">reset</item>
                <item name="label" xsi:type="string" translate="true">Reset</item>
                <item name="class" xsi:type="string">reset</item>
                <item name="url" xsi:type="string">*/*/edit</item>
            </item>
        </item>
    </argument>
    <dataSource name="amasty_elastic_relevance_rule_form_data_source">
        <argument name="dataProvider" xsi:type="configurableObject">
            <argument name="class" xsi:type="string">Amasty\ElasticSearch\Ui\RelevanceRule\Form\DataProvider</argument>
            <argument name="name" xsi:type="string">amasty_elastic_relevance_rule_form_data_source</argument>
            <argument name="primaryFieldName" xsi:type="string">rule_id</argument>
            <argument name="requestFieldName" xsi:type="string">rule_id</argument>
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="submit_url" xsi:type="url" path="amasty_elastic/relevancerule/save"/>
                </item>
            </argument>
        </argument>
        <argument name="data" xsi:type="array">
            <item name="js_config" xsi:type="array">
                <item name="component" xsi:type="string">Magento_Ui/js/form/provider</item>
            </item>
        </argument>
    </dataSource>

    <fieldset name="general">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string" translate="true"></item>
            </item>
        </argument>
        <field name="rule_id">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="visible" xsi:type="boolean">false</item>
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="formElement" xsi:type="string">input</item>
                    <item name="dataScope" xsi:type="string">optimizer_id</item>
                </item>
            </argument>
        </field>

        <field name="title">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">string</item>
                    <item name="formElement" xsi:type="string">input</item>
                    <item name="label" xsi:type="string" translate="true">Title</item>
                    <item name="dataScope" xsi:type="string">title</item>
                    <item name="validation" xsi:type="array">
                        <item name="required-entry" xsi:type="boolean">true</item>
                    </item>
                </item>
            </argument>
        </field>

        <field name="is_enabled">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">boolean</item>
                    <item name="label" xsi:type="string" translate="true">Enabled</item>
                    <item name="formElement" xsi:type="string">checkbox</item>
                    <item name="prefer" xsi:type="string">toggle</item>
                    <item name="dataScope" xsi:type="string">is_enabled</item>
                    <item name="valueMap" xsi:type="array">
                        <item name="true" xsi:type="number">1</item>
                        <item name="false" xsi:type="number">0</item>
                    </item>
                    <item name="default" xsi:type="number">1</item>
                    <item name="tooltip" xsi:type="array">                            
                            <item name="description" xsi:type="string" translate="true">Please note that the "Relevance Rules" may impact store performance. Optimize rules, avoid complexity, and ensure your infrastructure can handle the added load.</item>
                        </item>
                </item>
            </argument>
        </field>

        <field name="website_id">
            <argument name="data" xsi:type="array">
                <item name="options" xsi:type="object">Magento\CatalogRule\Model\Rule\WebsitesOptionsProvider</item>
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">int</item>
                    <item name="label" xsi:type="string" translate="true">Website</item>
                    <item name="formElement" xsi:type="string">select</item>
                    <item name="dataScope" xsi:type="string">website_id</item>
                    <item name="default" xsi:type="string">0</item>
                </item>
            </argument>
        </field>

        <container name="date">
            <argument name="data" xsi:type="array">
                <item name="type" xsi:type="string">group</item>
                <item name="config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
                    <item name="additionalClasses" xsi:type="string">admin__control-grouped-date</item>
                    <item name="breakLine" xsi:type="boolean">false</item>
                </item>
            </argument>
            <field name="from_date">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="label" xsi:type="string" translate="true">Active</item>
                        <item name="addbefore" xsi:type="string" translate="true">from</item>
                        <item name="dataType" xsi:type="string">text</item>
                        <item name="formElement" xsi:type="string">date</item>
                        <item name="dataScope" xsi:type="string">from_date</item>
                        <item name="additionalClasses" xsi:type="string">admin__field-medium amelastic-datefield</item>
                        <item name="validation" xsi:type="array">
                            <item name="validate-date" xsi:type="boolean">true</item>
                        </item>
                    </item>
                </argument>
            </field>
            <field name="to_date">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="label" xsi:type="string" translate="true">Active To</item>
                        <item name="addbefore" xsi:type="string" translate="true">to</item>
                        <item name="dataType" xsi:type="string">text</item>
                        <item name="formElement" xsi:type="string">date</item>
                        <item name="dataScope" xsi:type="string">to_date</item>
                        <item name="additionalClasses" xsi:type="string">admin__field-medium amelastic-datefield</item>
                        <item name="validation" xsi:type="array">
                            <item name="validate-date" xsi:type="boolean">true</item>
                        </item>
                    </item>
                </argument>
            </field>
        </container>

        <container name="modification_type">
            <argument name="data" xsi:type="array">
                <item name="type" xsi:type="string">group</item>
                <item name="config" xsi:type="array">
                    <item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
                    <item name="breakLine" xsi:type="boolean">false</item>
                </item>
            </argument>
            <field name="boost">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="formElement" xsi:type="string">select</item>
                        <item name="dataType" xsi:type="string">text</item>
                        <item name="label" xsi:type="string" translate="true">Product Relevance</item>
                        <item name="dataScope" xsi:type="string">modification_type</item>
                        <item name="additionalClasses" xsi:type="string">admin__field-small</item>
                        <item name="validation" xsi:type="array">
                            <item name="required-entry" xsi:type="boolean">true</item>
                        </item>
                    </item>
                    <item name="options" xsi:type="object">Amasty\ElasticSearch\Model\Source\RelevanceRuleModificationType</item>
                </argument>
            </field>
            <field name="multiplier">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="dataType" xsi:type="string">string</item>
                        <item name="formElement" xsi:type="string">input</item>
                        <item name="dataScope" xsi:type="string">multiplier</item>
                        <item name="addafter" xsi:type="string" translate="true">times</item>
                        <item name="additionalClasses" xsi:type="string">admin__field-small amelastic-field-block</item>
                        <item name="validation" xsi:type="array">
                            <item name="required-entry" xsi:type="boolean">true</item>
                            <item name="validate-digits" xsi:type="boolean">true</item>
                        </item>

                        <item name="tooltip" xsi:type="array">
                            <item name="link" xsi:type="string"><![CDATA[https://amasty.com/docs/doku.php?id=magento_2:elastic_search&utm_source=extension&utm_medium=backend&utm_campaign=userguide_Amasty_ElasticSearch_manage_relevance#manage_relevance_rules]]></item>
                            <item name="description" xsi:type="string" translate="true">Specify a number from 1 to 100. Please click to consult the user guide.</item>
                        </item>
                    </item>
                </argument>
            </field>
        </container>
    </fieldset>

    <fieldset name="conditions_fieldset">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string" translate="true">Conditions</item>
            </item>
        </argument>

        <container name="conditions" sortOrder="10">
            <htmlContent name="html_content">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="component" xsi:type="string">Amasty_ElasticSearch/js/relevance_rule/conditions/html</item>
                        <item name="template" xsi:type="string">Amasty_ElasticSearch/form/element/rule/conditions</item>
                    </item>
                </argument>
                <block class="Amasty\ElasticSearch\Block\Adminhtml\RelevanceRule\Conditions" name="amasty.relevance.conditions" />
            </htmlContent>
        </container>

        <container name="preview_button" sortOrder="20">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="label" xsi:type="boolean">false</item>
                    <item name="formElement" xsi:type="string">container</item>
                    <item name="componentType" xsi:type="string">container</item>
                    <item name="component" xsi:type="string">Magento_Ui/js/form/components/button</item>
                    <item name="title" xsi:type="string" translate="true">Preview Products</item>
                    <item name="actions" xsi:type="array">
                        <item name="0" xsi:type="array">
                            <item name="targetName" xsi:type="string">${ $.parentName + ".products_grid" }</item>
                            <item name="actionName" xsi:type="string">visible</item>
                            <item name="params" xsi:type="array">
                                <item name="0" xsi:type="boolean">true</item>
                            </item>
                        </item>
                        <item name="1" xsi:type="array">
                            <item name="targetName" xsi:type="string">amasty_elastic_relevance_rule_product_preview_listing.amasty_elastic_relevance_rule_product_preview_listing_data_source</item>
                            <item name="actionName" xsi:type="string">reload</item>
                        </item>
                    </item>
                </item>
            </argument>
        </container>

        <container name="hide_preview" sortOrder="30">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="label" xsi:type="boolean">false</item>
                    <item name="formElement" xsi:type="string">container</item>
                    <item name="componentType" xsi:type="string">container</item>
                    <item name="component" xsi:type="string">Magento_Ui/js/form/components/button</item>
                    <item name="title" xsi:type="string" translate="true">Hide Products</item>
                    <item name="actions" xsi:type="array">
                        <item name="0" xsi:type="array">
                            <item name="targetName" xsi:type="string">${ $.parentName + ".products_grid" }</item>
                            <item name="actionName" xsi:type="string">visible</item>
                            <item name="params" xsi:type="array">
                                <item name="0" xsi:type="boolean">false</item>
                            </item>
                        </item>
                    </item>
                </item>
            </argument>
        </container>

        <field name="preview_comment">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="content" xsi:type="string" translate="true">Please click here to preview the product list.</item>
                    <item name="visible" xsi:type="boolean">true</item>
                    <item name="formElement" xsi:type="string">container</item>
                    <item name="componentType" xsi:type="string">container</item>
                    <item name="template" xsi:type="string">Amasty_ElasticSearch/form/element/comment</item>
                    <item name="component" xsi:type="string">Magento_Ui/js/form/components/html</item>
                </item>
            </argument>
        </field>

        <insertListing name="products_grid" sortOrder="40">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="visible" xsi:type="boolean">false</item>
                </item>
            </argument>
            <settings>
                <dataLinks>
                    <exports>true</exports>
                    <imports>true</imports>
                </dataLinks>
                <autoRender>true</autoRender>
                <externalFilterMode>true</externalFilterMode>
                <dataScope>amasty_elastic_relevance_rule_product_preview_listing</dataScope>
                <ns>amasty_elastic_relevance_rule_product_preview_listing</ns>
            </settings>
        </insertListing>
    </fieldset>
</form>
