Skip to content

Commit 92a1bd3

Browse files
committed
Updated icon; Cleaned up files; Number of selections interval.
1 parent c9b1ba9 commit 92a1bd3

File tree

11 files changed

+94
-147
lines changed

11 files changed

+94
-147
lines changed

src/Umbraco.Cms.Integrations.Commerce.Shopify/App_Plugins/UmbracoCms.Integrations/Commerce/Shopify/Render/Products.cshtml

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/Umbraco.Cms.Integrations.Commerce.Shopify/App_Plugins/UmbracoCms.Integrations/Commerce/Shopify/js/productPicker.controller.js

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,15 @@
77
vm.loading = false;
88
vm.selectedProducts = [];
99

10+
vm.config = {
11+
validationLimit: {
12+
min: $scope.model.config.validationLimit.min ?? 0,
13+
max: $scope.model.config.validationLimit.max
14+
}
15+
}
16+
1017
// step 1. check configuration
11-
checkConfiguration(function() {
18+
checkConfiguration(function () {
1219
// step 2. get products
1320
getProducts();
1421
});
@@ -31,11 +38,19 @@
3138

3239
// products table events
3340
vm.selectProduct = function (item) {
34-
if ($scope.model.selectedProducts.filter(function (i) { return i.id === item.id }).length > 0) {
35-
$scope.model.selectedProducts = $scope.model.selectedProducts.filter(function (i) { return i.id !== item.id; });
36-
}
37-
else {
38-
$scope.model.selectedProducts.push(item);
41+
42+
var isProductSelected =
43+
$scope.model.selectedProducts.filter(function(i) { return i.id === item.id }).length > 0;
44+
45+
// check if products count is in the validation limit interval
46+
var isProductsCountValid = validateProductsCount(isProductSelected);
47+
if (isProductsCountValid) {
48+
if (isProductSelected) {
49+
$scope.model.selectedProducts =
50+
$scope.model.selectedProducts.filter(function(i) { return i.id !== item.id; });
51+
} else {
52+
$scope.model.selectedProducts.push(item);
53+
}
3954
}
4055
}
4156

@@ -48,6 +63,7 @@
4863
title: "Shopify products",
4964
description: "Select product(s)",
5065
selectedProducts: vm.selectedProducts,
66+
config: vm.config,
5167
view: "/App_Plugins/UmbracoCms.Integrations/Commerce/Shopify/views/productPickerOverlay.html",
5268
size: "large",
5369
submit: function (selectedProducts) {
@@ -65,7 +81,7 @@
6581
editorService.open(options);
6682
}
6783

68-
vm.submit = function(products) {
84+
vm.submit = function (products) {
6985
$scope.model.value = products.map(function (item) { return item.id }).join(',');
7086
}
7187

@@ -113,6 +129,23 @@
113129
});
114130
});
115131
}
132+
133+
function validateProductsCount(isRemoved) {
134+
135+
var updatedCount = isRemoved
136+
? $scope.model.selectedProducts.length - 1
137+
: $scope.model.selectedProducts.length + 1;
138+
139+
if (vm.config.validationLimit.min != null && vm.config.validationLimit.max != null) {
140+
return vm.config.validationLimit.min <= updatedCount && vm.config.validationLimit.max >= updatedCount;
141+
}
142+
143+
if (vm.config.validationLimit.min != null)
144+
return vm.config.validationLimit.min <= updatedCount;
145+
146+
if (vm.config.validationLimit.max != null)
147+
return vm.config.validationLimit.max >= updatedCount;
148+
}
116149
}
117150

118151
angular.module("umbraco")

src/Umbraco.Cms.Integrations.Commerce.Shopify/App_Plugins/UmbracoCms.Integrations/Commerce/Shopify/js/productPickerSettings.controller.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@
77
vm.oauthSetup = {};
88
vm.status = {};
99

10-
$scope.$on('formSubmitting', function () {
11-
12-
$scope.model.value.isValid = vm.status.isValid;
13-
$scope.model.value.type = vm.status.type;
14-
15-
});
16-
1710
umbracoCmsIntegrationsCommerceShopifyResource.checkConfiguration()
1811
.then(function (response) {
1912

src/Umbraco.Cms.Integrations.Commerce.Shopify/App_Plugins/UmbracoCms.Integrations/Commerce/Shopify/js/shopify.service.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"No access token is configured. To connect to your Shopify account using OAuth click 'Connect', select your account and agree to the permissions.",
77
None: "No access token or OAuth configuration could be found. Please review your settings before continuing.",
88
OAuthConnected:
9-
"OAuth is configured and an access token is available to connect to your HubSpot account. To revoke, click 'Revoke'"
9+
"OAuth is configured and an access token is available to connect to your Shopify account. To revoke, click 'Revoke'"
1010
}
1111
}
1212
}

src/Umbraco.Cms.Integrations.Commerce.Shopify/App_Plugins/UmbracoCms.Integrations/Commerce/Shopify/views/productPickerOverlay.html

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,39 @@
7676
position="center">
7777
<localize key="content_listViewNoItems">There are no products in the list.</localize>
7878
</umb-empty-state>
79+
80+
<!-- Min Max help messages-->
81+
<div class="umb-contentpicker__min-max-help" ng-if="(model.config.validationLimit.max > 1 || model.config.validationLimit.min > 0)">
82+
<!-- Both min and max items -->
83+
<span ng-if="model.config.validationLimit.min && model.config.validationLimit.max && model.config.validationLimit.min !== model.config.validationLimit.max">
84+
<span ng-if="model.selectedProducts.length < model.config.validationLimit.max">Add between {{model.config.validationLimit.min}} and {{model.config.validationLimit.max}} items</span>
85+
<span ng-if="model.selectedProducts.length > model.config.validationLimit.max">
86+
<localize key="validation_maxCount">You can only have</localize> {{model.config.validationLimit.max}} <localize key="validation_itemsSelected"> items selected</localize>
87+
</span>
88+
</span>
89+
90+
<!-- Equal min and max -->
91+
<span ng-if="model.config.validationLimit.min && model.config.validationLimit.max && model.config.validationLimit.min === model.config.validationLimit.max">
92+
<span ng-if="model.selectedProducts.length < model.config.validationLimit.max">Add {{model.config.validationLimit.min - renderModel.length}} item(s)</span>
93+
<span ng-if="model.selectedProducts.length > model.config.validationLimit.max">
94+
<localize key="validation_maxCount">You can only have</localize> {{model.config.validationLimit.max}} <localize key="validation_itemsSelected"> items selected</localize>
95+
</span>
96+
</span>
97+
98+
<!-- Only max -->
99+
<span ng-if="!model.config.validationLimit.min && model.config.validationLimit.max">
100+
<span ng-if="model.selectedProducts.length < model.config.validationLimit.max">Add up to {{model.config.validationLimit.max}} items</span>
101+
<span ng-if="model.selectedProducts.length > model.config.validationLimit.max">
102+
<localize key="validation_maxCount">You can only have</localize> {{model.config.validationLimit.max}} <localize key="validation_itemsSelected">items selected</localize>
103+
</span>
104+
</span>
105+
106+
<!-- Only min -->
107+
<span ng-if="model.config.validationLimit.min && !model.config.validationLimit.max && renderModel.length < model.config.validationLimit.min">
108+
Add at least {{model.config.validationLimit.min}} item(s)
109+
</span>
110+
111+
</div>
79112
</umb-box-content>
80113
</umb-box>
81114
</umb-editor-container>

src/Umbraco.Cms.Integrations.Commerce.Shopify/Editors/ShopifyProductPickerConfiguration.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Umbraco.Cms.Integrations.Commerce.Shopify.Models;
2+
using Umbraco.Cms.Integrations.Shared.Models;
23
using Umbraco.Core.PropertyEditors;
34

45
namespace Umbraco.Cms.Integrations.Commerce.Shopify.Editors
@@ -10,5 +11,8 @@ public class ShopifyProductPickerConfiguration
1011
name: "Settings",
1112
view: "~/App_Plugins/UmbracoCms.Integrations/Commerce/Shopify/views/productPickerSettings.html")]
1213
public ProductPickerSettings ProductPickerSettings { get; set; }
14+
15+
[ConfigurationField("validationLimit", "Amount", "numberrange", Description = "Set a required range of items selected")]
16+
public NumberRange ValidationLimit { get; set; } = new NumberRange();
1317
}
1418
}

src/Umbraco.Cms.Integrations.Commerce.Shopify/Editors/ShopifyProductPickerPropertyEditor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Umbraco.Cms.Integrations.Commerce.Shopify.Editors
88
name: "Shopify Product Picker",
99
view: "~/App_Plugins/UmbracoCms.Integrations/Commerce/Shopify/views/productPicker.html",
1010
Group = "Pickers",
11-
Icon = "icon-shopify")]
11+
Icon = "icon-shopping-basket-alt")]
1212
public class ShopifyProductPickerPropertyEditor: DataEditor
1313
{
1414
public ShopifyProductPickerPropertyEditor(ILogger logger) : base(logger)

src/Umbraco.Cms.Integrations.Commerce.Shopify/Editors/ShopifyProductPickerValueConverter.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ public override object ConvertIntermediateToObject(IPublishedElement owner, IPub
4646

4747
var ids = (long[]) inter;
4848

49-
var t = Task.Run(async () => await _apiService.GetResults());
50-
var result = t.Result;
49+
var result = _apiService.GetResults().GetAwaiter().GetResult();
5150

5251
var products = from p in result.Result.Products
5352
where ids.Contains(p.Id)

src/Umbraco.Cms.Integrations.Commerce.Shopify/packages.config

Lines changed: 0 additions & 57 deletions
This file was deleted.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System.Runtime.Serialization;
2+
3+
namespace Umbraco.Cms.Integrations.Shared.Models
4+
{
5+
[DataContract]
6+
public class NumberRange
7+
{
8+
[DataMember(Name = "min")]
9+
public int? Min { get; set; }
10+
11+
[DataMember(Name = "max")]
12+
public int? Max { get; set; }
13+
}
14+
}

0 commit comments

Comments
 (0)