Skip to content

Commit 61a3e31

Browse files
VCST-1812: Open index value mapping from aggregation property details (#776)
1 parent ef66a82 commit 61a3e31

File tree

6 files changed

+74
-50
lines changed

6 files changed

+74
-50
lines changed

src/VirtoCommerce.CatalogModule.Core/VirtoCommerce.CatalogModule.Core.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
<PackageReference Include="VirtoCommerce.CoreModule.Core" Version="3.816.0" />
2020
<PackageReference Include="VirtoCommerce.ExportModule.Core" Version="3.803.0" />
2121
<PackageReference Include="VirtoCommerce.Platform.Core" Version="3.877.0" />
22-
<PackageReference Include="VirtoCommerce.SearchModule.Core" Version="3.805.0" />
22+
<PackageReference Include="VirtoCommerce.SearchModule.Core" Version="3.808.0" />
2323
</ItemGroup>
2424
</Project>

src/VirtoCommerce.CatalogModule.Web/Controllers/Api/CatalogBrowseFiltersController.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ private async Task<IList<AggregationProperty>> GetSelectedPropertiesAsync(string
189189
IsSelected = true,
190190
Type = _attributeType,
191191
Name = attributeFilter.Key,
192-
Values = attributeFilter.Values?.Select(v => v.Id).OrderBy(v => v, StringComparer.OrdinalIgnoreCase).ToArray(),
192+
Values = attributeFilter.Values?.Select(v => v.Id).OrderBy(v => v, StringComparer.OrdinalIgnoreCase).ToArray() ?? [],
193193
Size = attributeFilter.FacetSize,
194194
},
195195
RangeFilter rangeFilter => new AggregationProperty

src/VirtoCommerce.CatalogModule.Web/Scripts/blades/aggregation-properties-details.js

+31-5
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ angular.module('virtoCommerce.catalogModule')
44
blade.updatePermission = 'store:update';
55
blade.headIcon = 'fa fa-gear';
66

7-
var attributeType = "Attribute";
8-
var rangeType = "Range";
9-
var priceRangeType = "PriceRange";
7+
var attributeType = 'Attribute';
8+
var rangeType = 'Range';
9+
var priceRangeType = 'PriceRange';
1010
blade.propertyTypes = [attributeType, rangeType];
1111

1212
function initializeBlade() {
@@ -20,7 +20,6 @@ angular.module('virtoCommerce.catalogModule')
2020

2121
aggregationProperties.getValues({ storeId: blade.storeId, propertyName: blade.originalProperty.name }, function (results) {
2222
blade.values = results;
23-
2423
blade.isLoading = false;
2524
}, function (error) {
2625
bladeNavigationService.setError('Error: ' + error.status, blade);
@@ -65,7 +64,8 @@ angular.module('virtoCommerce.catalogModule')
6564
}
6665

6766
blade.onClose = function (closeCallback) {
68-
bladeNavigationService.showConfirmationIfNeeded(isDirty(), true, blade, $scope.saveChanges, closeCallback, "Save changes", "The property settings have been modified. Do you want to save changes?");
67+
bladeNavigationService.showConfirmationIfNeeded(isDirty(), true, blade, $scope.saveChanges, closeCallback,
68+
'Save changes', 'The property settings have been modified. Do you want to save changes?');
6969
};
7070

7171
$scope.saveChanges = function () {
@@ -74,5 +74,31 @@ angular.module('virtoCommerce.catalogModule')
7474
$scope.bladeClose();
7575
};
7676

77+
function openValueMapping() {
78+
var newBlade = {
79+
id: 'valueMappingFieldDetails',
80+
controller: 'virtoCommerce.searchModule.valueMappingFieldDetailsController',
81+
template: 'Modules/$(VirtoCommerce.Search)/Scripts/blades/value-mapping-field-details.html',
82+
data: {
83+
documentType: 'Product',
84+
fieldName: blade.property.name,
85+
values: [],
86+
},
87+
};
88+
bladeNavigationService.showBlade(newBlade, blade);
89+
}
90+
91+
blade.toolbarCommands = [
92+
{
93+
name: 'search.commands.value-mapping',
94+
icon: 'fas fa-wrench',
95+
executeMethod: openValueMapping,
96+
canExecuteMethod: function () {
97+
return true;
98+
},
99+
permission: 'search:index:manage',
100+
},
101+
];
102+
77103
initializeBlade();
78104
}]);
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,42 @@
1-
<div class="blade-content __medium-wide">
2-
<div class="blade-inner">
3-
<div class="inner-block">
4-
<div class="sub-t">Pick Catalog properties eligible for filtering in this Store</div>
5-
<div class="columns" ng-if="blade.currentEntities.length">
6-
<div class="column">
7-
<div class="form-group">
8-
<p class="note">Available properties.<br><i>Click to select.<br><br></i></p>
9-
<ul class="list __items">
10-
<li class="list-item" ng-click='blade.select(data)' ng-repeat="data in blade.currentEntities | filter: {isSelected: false} | orderBy: 'name'">
11-
<div class="list-t">{{data.name}}</div>
12-
<div class="list-descr">{{data.type}}</div>
13-
</li>
14-
</ul>
15-
</div>
16-
</div>
17-
<div class="column">
18-
<div class="form-group">
19-
<p class="note">Selected properties.<br><i>Click to unselect.<br>Drag and drop to change the order.</i></p>
20-
<div class="table-wrapper">
21-
<ul class="list __items __reverse" ui-sortable="sortableOptions" ng-model="blade.selectedEntities">
22-
<li class="list-item" ng-repeat="data in blade.selectedEntities" ng-click='blade.unselect(data)'>
23-
<div class="list-t">
24-
<span>{{data.name}}</span>
25-
<a href="" ng-click="blade.edit(data); $event.stopPropagation();" class="form-edit">
26-
<i class="form-ico fa fa-pencil"></i>
27-
</a>
28-
</div>
29-
<div class="list-descr">
30-
<span>{{data.type}}</span>
31-
<span ng-if="data.values">, values: {{data.valuesCount}}</span>
32-
<span ng-if="data.size !== undefined && data.size !== null">, size: {{data.size}}</span>
33-
</div>
34-
</li>
35-
</ul>
36-
</div>
37-
</div>
38-
</div>
1+
<div class="blade-content __medium-wide">
2+
<div class="blade-inner">
3+
<div class="inner-block">
4+
<div class="sub-t">Pick Catalog properties eligible for filtering in this Store</div>
5+
<div class="columns" ng-if="blade.currentEntities.length">
6+
<div class="column">
7+
<div class="form-group">
8+
<p class="note">Available properties.<br><i>Click to select.<br></i></p>
9+
<ul class="list __items">
10+
<li class="list-item" ng-click="blade.select(data)" ng-repeat="data in blade.currentEntities | filter: {isSelected: false} | orderBy: 'name'">
11+
<div class="list-t">{{data.name}}</div>
12+
<div class="list-descr">{{data.type}}</div>
13+
</li>
14+
</ul>
15+
</div>
16+
</div>
17+
<div class="column">
18+
<div class="form-group">
19+
<p class="note">Selected properties.<br><i>Drag and drop to change the order.</i></p>
20+
<div class="table-wrapper">
21+
<ul class="list __items __reverse" ui-sortable="sortableOptions" ng-model="blade.selectedEntities">
22+
<li class="list-item" ng-repeat="data in blade.selectedEntities" ng-click="blade.edit(data)">
23+
<div class="list-t">
24+
<span>{{data.name}}</span>
25+
<a href="" ng-click="blade.unselect(data); $event.stopPropagation();" class="form-edit">
26+
<span class="form-ico fa fa-remove"></span>
27+
</a>
28+
</div>
29+
<div class="list-descr">
30+
<span>{{data.type}}</span><span ng-if="data.valuesCount > 0">, values: {{data.valuesCount}}</span><span ng-if="data.size !== undefined && data.size !== null">, size: {{data.size}}</span>
31+
</div>
32+
</li>
33+
</ul>
3934
</div>
40-
41-
<p class="text" ng-if="!blade.currentEntities.length">No Catalog properties found.</p>
35+
</div>
4236
</div>
37+
</div>
38+
39+
<p class="text" ng-if="!blade.currentEntities.length">No Catalog properties found.</p>
4340
</div>
41+
</div>
4442
</div>

src/VirtoCommerce.CatalogModule.Web/module.manifest

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<dependency id="VirtoCommerce.BulkActionsModule" version="3.802.0" optional="true" />
1111
<dependency id="VirtoCommerce.Core" version="3.816.0" />
1212
<dependency id="VirtoCommerce.Export" version="3.803.0" optional="true" />
13-
<dependency id="VirtoCommerce.Search" version="3.805.0" />
13+
<dependency id="VirtoCommerce.Search" version="3.808.0" />
1414
<dependency id="VirtoCommerce.Store" version="3.809.0" />
1515
</dependencies>
1616

@@ -26,7 +26,7 @@
2626
<iconUrl>Modules/$(VirtoCommerce.Catalog)/Content/logo.png</iconUrl>
2727
<requireLicenseAcceptance>false</requireLicenseAcceptance>
2828
<releaseNotes>Third version.</releaseNotes>
29-
<copyright>Copyright © 2011-2025 Virto Commerce. All rights reserved</copyright>
29+
<copyright>Copyright © 20112025 Virto Commerce. All rights reserved</copyright>
3030
<tags>catalog</tags>
3131
<assemblyFile>VirtoCommerce.CatalogModule.Web.dll</assemblyFile>
3232
<moduleType>VirtoCommerce.CatalogModule.Web.Module, VirtoCommerce.CatalogModule.Web</moduleType>

tests/VirtoCommerce.CatalogModule.Tests/VirtoCommerce.CatalogModule.Tests.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</PropertyGroup>
1212
<ItemGroup>
1313
<PackageReference Include="AutoFixture" Version="4.18.1" />
14-
<PackageReference Include="coverlet.collector" Version="6.0.2">
14+
<PackageReference Include="coverlet.collector" Version="6.0.4">
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1616
<PrivateAssets>all</PrivateAssets>
1717
</PackageReference>

0 commit comments

Comments
 (0)