Skip to content

Commit

Permalink
Merge pull request Smile-SA#97 from Elastic-Suite/feat-ESP-315-Behav-…
Browse files Browse the repository at this point in the history
…Optimizers-UX-i18n-update

ESP-315 [Optimizers] UX i18n update
  • Loading branch information
romainruaud authored Nov 22, 2021
2 parents c9d4481 + 0b4a69a commit c15d16d
Show file tree
Hide file tree
Showing 5 changed files with 155 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?php
/**
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Smile ElasticSuite to newer
* versions in the future.
*
* @category Smile
* @package Smile\ElasticsuiteBehavioralOptimizer
* @author Richard Bayet <[email protected]>
* @copyright 2021 Smile
* @license Licensed to Smile-SA. All rights reserved. No warranty, explicit or implicit, provided.
* Unauthorized copying of this file, via any medium, is strictly prohibited.
*/

namespace Smile\ElasticsuiteBehavioralOptimizer\Ui\Component\Optimizer\Form\Modifier;

use Smile\ElasticsuiteCatalogOptimizer\Model\Optimizer\Locator\LocatorInterface as OptimizerLocatorInterface;

/**
* Optimizer create/edit form UI component scale function modifier.
* Allows the choice of 'ln1p' as a scale function if in edit mode and the optimizer already uses it.
*
* @category Smile
* @package Smile\ElasticsuiteBehavioralOptimizer
* @author Richard Bayet <[email protected]>
*/
class ScaleFunction implements \Magento\Ui\DataProvider\Modifier\ModifierInterface
{
/**
* @var OptimizerLocatorInterface
*/
private $locator;

/**
* Search Terms constructor.
*
* @param OptimizerLocatorInterface $locator Optimizer Locator
*/
public function __construct(OptimizerLocatorInterface $locator)
{
$this->locator = $locator;
}

/**
* {@inheritDoc}
*/
public function modifyData(array $data)
{
return $data;
}

/**
* {@inheritDoc}
*/
public function modifyMeta(array $meta)
{
$optimizer = $this->locator->getOptimizer();

$scaleFunctionsOptions = [
['value' => 'log1p', 'label' => __('Low')],
['value' => 'sqrt', 'label' => __('Medium')],
['value' => 'none', 'label' => __('High')],
];
$optionsTooltips = [
'log1p' => __('behavioral log1p desc'),
'sqrt' => __('behavioral sqrt desc'),
'none' => __('behavioral none desc'),
];
$scaleFunctionChartFunctions = [
'log1p' => 'log1p',
'sqrt' => 'sqrt',
'none' => 'none',
];

if ($optimizer && $optimizer->getId()) {
$scaleFunction = $optimizer->getConfig('scale_function');
if ($scaleFunction === 'ln1p') {
$scaleFunctionsOptions = array_merge(
[['value' => 'ln1p', 'label' => __('Low (deprecated)')]],
$scaleFunctionsOptions
);
$optionsTooltips = array_merge(
['ln1p' => __('behavioral ln1p desc')],
$optionsTooltips
);
$scaleFunctionChartFunctions = array_merge(
['ln1p' => 'ln1p'],
$scaleFunctionChartFunctions
);
}
}

$meta['behavioral']['children']['scale_function']['arguments']['data']['config']['options'] = $scaleFunctionsOptions;
$meta['behavioral']['children']['scale_function']['arguments']['data']['config']['optionsTooltips'] = $optionsTooltips;
$meta['behavioral']['children']['scale_function_chart']['arguments']['data']['config']['functions'] = $scaleFunctionChartFunctions;

return $meta;
}
}
32 changes: 32 additions & 0 deletions src/module-elasticsuite-behavioral-optimizer/etc/adminhtml/di.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0"?>
<!--
/**
* Smile\ElasticsuiteBehavioralOptimizer adminhtml dependency injection configuration.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Smile ElasticSuite to newer
* versions in the future.
*
* @category Smile
* @package Smile\ElasticsuiteBehavioralOptimizer
* @author Richard Bayet <[email protected]>
* @copyright 2021 Smile
* @license Licensed to Smile-SA. All rights reserved. No warranty, explicit or implicit, provided.
* Unauthorized copying of this file, via any medium, is strictly prohibited.
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">

<virtualType name="Smile\ElasticsuiteCatalogOptimizer\Ui\Component\Optimizer\Form\Modifier\Pool" type="Magento\Ui\DataProvider\Modifier\Pool">
<arguments>
<argument name="modifiers" xsi:type="array">
<item name="behavioral_scale_function" xsi:type="array">
<item name="class" xsi:type="string">Smile\ElasticsuiteBehavioralOptimizer\Ui\Component\Optimizer\Form\Modifier\ScaleFunction</item>
<item name="sortOrder" xsi:type="number">50</item>
</item>
</argument>
</arguments>
</virtualType>

</config>
6 changes: 6 additions & 0 deletions src/module-elasticsuite-behavioral-optimizer/i18n/en_US.csv
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,9 @@
"Weekly sales (average)","Weekly sales (average)"
"Weekly sales (number)","Weekly sales (number)"
"Based on behavioral data","Based on behavioral data"
"behavioral scale function desc","Behavioral metric based optimizers can easily overshadow constant score ones. You can limit the boost impact by reducing the initial range of raw source values to keep the spread of applied boosts to something reasonable, both between products impacted by this optimizer and with regard to products only boosted by other optimizers. For instance if you boost products according to their sales volume, frequently bought products might overcrowd higher priced and less frequently bought products."
"behavioral log1p desc","Very aggressively reduces the spread of boost values by retaining the power of ten of the metric value (using the common logarithm), so a product with a metric value of 100 will be boosted by a factor of 2, a product with a metric value of 1000 will be boosted by a factor of 3, a product with a metric value of 10000 will be boosted by a factor of 4."
"behavioral ln1p desc","Very aggressively reduces the spread of boost values by using the natural logarithm function, so a product with a metric value of 10 will be boosted by a factor a little over 2, a product with a metric value of 100 will be boosted by a factor of 4 and a half, a product with a metric value of 1000 will be boosted by a factor of around 7."
"behavioral sqrt desc","Aggressively reduces the spread of the boost metric values by applying the square root function : a product with a metric value of 10 will be boosted by a factor of around 3, a product with a metric value of 100 will be boosted by a factor of 10, a product with a metric value of 1000 will be boosted by a factor of around 30, a product with a metric value of 10000 will be boosted by a factor of 100."
"behavioral none desc","No change to the spread of the boost metric values which are taken as is, so a product with a metric value of 1000 will be boosted 200 times more than a product with a metric value of 5. This function is best suited for metrics that do not have a very wide range."
"Value the metric will be multiplied by before potentially limiting the boost impact","Value the metric will be multiplied by before potentially limiting the boost impact"
6 changes: 6 additions & 0 deletions src/module-elasticsuite-behavioral-optimizer/i18n/fr_FR.csv
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,9 @@
"Weekly conversion rate (average)","Taux de conversion hebdomadaire (moyenne)"
"Weekly conversion rate (number)","Taux de conversion hebdomadaire (glissant)"
"Based on behavioral data","Basé sur les données comportementales"
"behavioral scale function desc","Les optimiseurs basés sur une métrique comportementale peuvent aisément éclipser ceux à score constant. Vous pouvez limiter l'impact du boost en réduisant la plage de valeurs initiale pour restreindre les valeurs de boost appliquées à quelque chose de raisonnable, à la fois entre les produits impactés par cet optimiseur et aussi vis-à-vis des produits uniquement boostés par d'autres optimiseurs. Par exemple si vous boostez des produits selon leur volume de ventes, des produits bon marché fréquemment achetés pourraient éclipser des produits plus chers et moins fréquemment achetés."
"behavioral log1p desc","Réduit très agressivement l'étendue des valeurs de boost en ne retenant que la puissance de 10 de la valeur de la métrique (utilisation du logarithme décimal), de sorte qu'un produit avec une valeur de métrique de 100 sera boosté par un facteur de 2, un produit avec une valeur de métrique de 1000 sera boosté par un facteur de 3, un produit avec une valeur de métrique de 10000 sera boosté par un facteur de 4."
"behavioral ln1p desc","Réduit très agressivement l'étendue des valeurs de boost en calculant le logarithme des valeurs, de sorte qu'un produit avec une valeur de métrique de 10 sera boosté par un facteur légèrement au-dessus de 2, un produit avec une valeur de métrique de 100 sera boosté par un facteur de 4 et demi, un produit avec une valeur de métrique de 1000 sera boosté par un facteur d'environ 7."
"behavioral sqrt desc","Réduit assez agressivement l'étendue des valeurs de la métrique de boost en leur appliquant la fonction racine carrée: un produit avec une valeur de métrique de 10 sera boosté par un facteur d'environ 3, un produit avec une valeur de métrique de 100 sera boosté par un facteur de 10, un produit avec une valeur de métrique de 1000 sera boosté par un facteur d'environ 30, un produit avec une valeur de métrique de 10000 sera boosé par un facteur de 100."
"behavioral none desc","Aucun changement à l'étendue des valeurs de la métrique de boost, qui sont prises telles quelles, ainsi un produit avec une valeur de métrique de 1000 sera boosté 200 fois plus qu'un produit avec une valeur de métrique de 5. Cette fonction est plutôt adaptée aux métriques qui n'ont pas une grande plage de valeurs."
"Value the metric will be multiplied by before potentially limiting the boost impact","Multiplicateur appliqué à la valeur de la métrique avant de potentiellement réduire l'impact du boost"
Original file line number Diff line number Diff line change
Expand Up @@ -128,33 +128,24 @@
<item name="config" xsi:type="array">
<item name="sortOrder" xsi:type="number">20</item>
<item name="component" xsi:type="string">Smile_ElasticsuiteCore/js/form/element/checkbox-set</item>
<item name="template" xsi:type="string">Smile_ElasticsuiteCore/form/element/checkbox-set</item>
<item name="source" xsi:type="string">optimizer</item>
<item name="description" translate="true" xsi:type="string">behavioral scale function desc</item>
<item name="additionalClasses" xsi:type="string">radioset-tooltip optimizer-radioset-tooltip</item>
<item name="tooltips" xsi:type="array">
<item name="ln1p" xsi:type="string">ln1p desc</item>
<item name="sqrt" xsi:type="string">sqrt desc</item>
<item name="none" xsi:type="string">none desc</item>
<!-- tooltips defined in defined in \Smile\ElasticsuiteBehavioralOptimizer\Ui\Component\Optimizer\Form\Modifier\ScaleFunction
<item name="optionsTooltips" xsi:type="array">
</item>
-->
</item>
</argument>
<settings>
<label translate="true">Scale function</label>
<label translate="true">Boost impact</label>
<dataType>string</dataType>
<dataScope>config.scale_function</dataScope>
<!-- options defined in \Smile\ElasticsuiteBehavioralOptimizer\Ui\Component\Optimizer\Form\Modifier\ScaleFunction
<options>
<option name="0" xsi:type="array">
<item name="value" xsi:type="string">ln1p</item>
<item name="label" xsi:type="string" translate="true">Low</item>
</option>
<option name="1" xsi:type="array">
<item name="value" xsi:type="string">sqrt</item>
<item name="label" xsi:type="string" translate="true">Medium</item>
</option>
<option name="2" xsi:type="array">
<item name="value" xsi:type="string">none</item>
<item name="label" xsi:type="string" translate="true">High</item>
</option>
</options>
-->
</settings>
</radioset>

Expand All @@ -173,11 +164,10 @@
<item name="listens" xsi:type="array">
<item name="${ $.provider }:data.config.scale_function" xsi:type="string">onScaleFunctionChange</item>
</item>
<!-- chart function defined in \Smile\ElasticsuiteBehavioralOptimizer\Ui\Component\Optimizer\Form\Modifier\ScaleFunction
<item name="functions" xsi:type="array">
<item name="ln1p" xsi:type="string">ln1p</item>
<item name="sqrt" xsi:type="string">sqrt</item>
<item name="none" xsi:type="string">none</item>
</item>
-->
</item>
</argument>
</field>
Expand All @@ -201,7 +191,7 @@
<rule name="validate-number" xsi:type="boolean">true</rule>
</validation>
<tooltip>
<description translate="true">Value the field will be multiplied by before applying the scale function</description>
<description translate="true">Value the metric will be multiplied by before potentially limiting the boost impact</description>
</tooltip>
</settings>
</field>
Expand Down

0 comments on commit c15d16d

Please sign in to comment.