Skip to content

Commit bd52a94

Browse files
Campaigns pagination
1 parent 4c0ba01 commit bd52a94

File tree

2 files changed

+46
-24
lines changed

2 files changed

+46
-24
lines changed

src/view/adminhtml/templates/product/edit/productCampaigns.phtml

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ use Aplazame\Serializer\JsonSerializer;
2121

2222
var articles = <?php echo json_encode(JsonSerializer::serializeValue($block->getArticles())) ?>;
2323

24+
var dateObj = new Date();
25+
var currentDate = dateObj.toISOString();
26+
var byEndDate = function (campaign) {
27+
return (campaign.end_date > currentDate);
28+
};
29+
2430
function associateArticlesToCampaign(articles, campaignId) {
2531
apiRequest("POST", "/me/campaigns/" + campaignId + "/articles", articles, function() {});
2632
}
@@ -110,6 +116,7 @@ use Aplazame\Serializer\JsonSerializer;
110116
function apiRequest(method, path, data, callback) {
111117
new Ajax.Request(apiProxyEndpoint, {
112118
method: "POST",
119+
asynchronous: false,
113120
parameters: {
114121
method: method,
115122
path: path,
@@ -123,23 +130,30 @@ use Aplazame\Serializer\JsonSerializer;
123130
});
124131
}
125132

126-
apiRequest("GET", "/me/campaigns", null, function(payload) {
127-
var campaigns = payload.results;
128-
var dateObj = new Date();
129-
var currentDate = dateObj.toISOString();
130-
var byEndDate = function (campaign) {
131-
return (campaign.end_date > currentDate);
132-
};
133+
function getCampaigns(page = 1) {
134+
apiRequest("GET", "/me/campaigns?page=" + page, null, function(payload) {
135+
var campaigns = payload.results;
136+
137+
displayCampaigns(campaigns.filter(byEndDate));
133138

134-
campaigns = campaigns.filter(byEndDate);
139+
if (payload.cursor.after != null) {
140+
getCampaigns(payload.cursor.after);
141+
}
142+
});
143+
}
135144

136-
apiRequest("GET", "/me/campaigns?articles-mid=" + articles[0].id, null, function(payload) {
145+
function getCampaignsFromArticle(page = 1) {
146+
apiRequest("GET", "/me/campaigns?articles-mid=" + articles[0].id + "&page=" + page, null, function(payload) {
137147
var selectedCampaigns = payload.results;
138148

139-
selectedCampaigns = selectedCampaigns.filter(byEndDate);
149+
selectCampaigns(selectedCampaigns.filter(byEndDate));
140150

141-
displayCampaigns(campaigns);
142-
selectCampaigns(selectedCampaigns);
151+
if (payload.cursor.after != null) {
152+
getCampaignsFromArticle(payload.cursor.after);
153+
}
143154
});
144-
});
155+
}
156+
157+
getCampaigns();
158+
getCampaignsFromArticle();
145159
</script>

src/view/adminhtml/templates/product/edit/productsCampaigns.phtml

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ use Aplazame\Serializer\JsonSerializer;
2626

2727
var articles = <?php echo json_encode(JsonSerializer::serializeValue($block->getArticles())) ?>;
2828

29+
var dateObj = new Date();
30+
var currentDate = dateObj.toISOString();
31+
var byEndDate = function (campaign) {
32+
return (campaign.end_date > currentDate);
33+
};
34+
2935
function associateArticlesToCampaign(articles, campaignId) {
3036
apiRequest("POST", "/me/campaigns/" + campaignId + "/articles", articles, function() {});
3137
}
@@ -118,6 +124,7 @@ use Aplazame\Serializer\JsonSerializer;
118124
function apiRequest(method, path, data, callback) {
119125
new Ajax.Request(apiProxyEndpoint, {
120126
method: "POST",
127+
asynchronous: false,
121128
parameters: {
122129
method: method,
123130
path: path,
@@ -131,20 +138,21 @@ use Aplazame\Serializer\JsonSerializer;
131138
});
132139
}
133140

134-
require([
135-
'prototype'
136-
], function () {
137-
apiRequest("GET", "/me/campaigns", null, function(payload) {
141+
function getCampaigns(page = 1) {
142+
apiRequest("GET", "/me/campaigns?page=" + page, null, function(payload) {
138143
var campaigns = payload.results;
139-
var dateObj = new Date();
140-
var currentDate = dateObj.toISOString();
141-
var byEndDate = function (campaign) {
142-
return (campaign.end_date > currentDate);
143-
};
144144

145-
campaigns = campaigns.filter(byEndDate);
145+
displayCampaigns(campaigns.filter(byEndDate));
146146

147-
displayCampaigns(campaigns);
147+
if (payload.cursor.after != null) {
148+
getCampaigns(payload.cursor.after);
149+
}
148150
});
151+
}
152+
153+
require([
154+
'prototype'
155+
], function () {
156+
getCampaigns();
149157
});
150158
</script>

0 commit comments

Comments
 (0)