Skip to content

Commit 9094282

Browse files
committed
Server side service list filtering for hbbtv-client added
1 parent 1024cb9 commit 9094282

1 file changed

Lines changed: 115 additions & 16 deletions

File tree

frontend/hbbtv/main.js

Lines changed: 115 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ function loadServicelistProviders(url, cancelAllowed) {
152152
if (servicelists[i]["servicelists"][j]["url"] == serviceList) {
153153
selected = urls.length;
154154
}
155-
urls.push(servicelists[i]["servicelists"][j]["url"]);
155+
urls.push(servicelists[i]["servicelists"][j]);
156156
}
157157
}
158158
showDialog(
@@ -161,20 +161,108 @@ function loadServicelistProviders(url, cancelAllowed) {
161161
selected,
162162
selected,
163163
function (checked) {
164-
setLocalStorage("servicelist", urls[checked]);
165-
getLocalStorage("region", true); //New service list selected, clear region
166-
getServiceList(
167-
urls[checked],
168-
function (servicelist) {
169-
$("#dialog").html("");
170-
$("#dialog").removeClass("show");
171-
$("#dialog").addClass("hide");
172-
selectServiceList(servicelist);
173-
},
174-
function () {
175-
console.log("Error in fetching service data");
176-
}
177-
);
164+
if (urls[checked].postcodeFiltering) {
165+
var postcodes = [
166+
"Enter postcode:",
167+
"Skip",
168+
"Example: Augsburg (86150)",
169+
"Example: Dortmund (44135)",
170+
"Example: Düsseldorf (40210)",
171+
"Example: Franken (90402)",
172+
"Example: Köln (50126)",
173+
];
174+
var values = ["", null, "86150", "44135", "40210", "90402", "50126"];
175+
showDialog(
176+
"Server side postcode filtering",
177+
postcodes,
178+
null,
179+
null,
180+
function (checked2) {
181+
var url = urls[checked]["url"];
182+
183+
if (values[checked2]) {
184+
url += "?postcode=" + values[checked2];
185+
}
186+
187+
setLocalStorage("servicelist", url);
188+
getLocalStorage("region", true); //New service list selected, clear region
189+
getServiceList(
190+
url,
191+
function (servicelist) {
192+
$("#dialog").html("");
193+
$("#dialog").removeClass("show");
194+
$("#dialog").addClass("hide");
195+
selectServiceList(servicelist);
196+
},
197+
function () {
198+
console.log("Error in fetching service data");
199+
}
200+
);
201+
},
202+
null,
203+
function (keyCode, button) {
204+
if (button != 0) {
205+
return false;
206+
}
207+
if (keyCode == VK_BACK) {
208+
return true;
209+
} else {
210+
var num_key = null;
211+
switch (keyCode) {
212+
case VK_0:
213+
num_key = "0";
214+
break;
215+
case VK_1:
216+
num_key = "1";
217+
break;
218+
case VK_2:
219+
num_key = "2";
220+
break;
221+
case VK_3:
222+
num_key = "3";
223+
break;
224+
case VK_4:
225+
num_key = "4";
226+
break;
227+
case VK_5:
228+
num_key = "5";
229+
break;
230+
case VK_6:
231+
num_key = "6";
232+
break;
233+
case VK_7:
234+
num_key = "7";
235+
break;
236+
case VK_8:
237+
num_key = "8";
238+
break;
239+
case VK_9:
240+
num_key = "9";
241+
break;
242+
}
243+
if (num_key != null) {
244+
values[0] += num_key;
245+
updateLabel(button, "Enter postcode:" + values[0]);
246+
}
247+
}
248+
}
249+
);
250+
} else {
251+
setLocalStorage("servicelist", urls[checked]["url"]);
252+
getLocalStorage("region", true); //New service list selected, clear region
253+
getServiceList(
254+
urls[checked]["url"],
255+
function (servicelist) {
256+
$("#dialog").html("");
257+
$("#dialog").removeClass("show");
258+
$("#dialog").addClass("hide");
259+
selectServiceList(servicelist);
260+
},
261+
function () {
262+
console.log("Error in fetching service data");
263+
}
264+
);
265+
}
178266
},
179267
cancelAllowed
180268
);
@@ -193,7 +281,18 @@ function selectServiceList(servicelistXML) {
193281
} catch (e) {}
194282
serviceList = parseServiceList(servicelistXML, channelList, supportedDrmSystems);
195283
epgServiceList = serviceList;
284+
var selectable = 0;
196285
if (serviceList.regions) {
286+
for (var i = 0; i < serviceList.regions.length; i++) {
287+
if (serviceList.regions[i].selectable) {
288+
selectable++;
289+
}
290+
if (selectable > 1) {
291+
break;
292+
}
293+
}
294+
}
295+
if (selectable > 1) {
197296
selectRegion(serviceList, currentChannel, channelList);
198297
} else {
199298
createMenu(serviceList, currentChannel, channelList);
@@ -209,7 +308,7 @@ function selectRegion(serviceList, currentChannel, channelList) {
209308
}
210309
var buttons = [];
211310
for (var i = 0; i < serviceList.regions.length; i++) {
212-
if (serviceList.regions[i].regionName) {
311+
if (serviceList.regions[i].regionName && serviceList.regions[i].selectable != false) {
213312
buttons.push(serviceList.regions[i].regionName);
214313
}
215314
}

0 commit comments

Comments
 (0)