PageSourceSearch

https://edicola.ilmattinoquotidiano.it/mattino/assets/js/areas/newsstand/editorialCategories.js?v=1

js ilmattinoquotidiano.it collected 2026-10-02 13:23:36 UTC 7,317 bytes, 306 lines download raw bytes

1/**
2 * Created by Sara on 16-Nov-18.
3 */
4VNP.Areas.Newsstand.module.EditorialCategories = new function () {
5
6  var self = this;
7  var editorialCategories;
8  var $selectEditorialCategories = $(".vc_select_editorial_categories");
9  var $slider = $(".vc_slider");
10  var sliderEditorial;
11  var sliderIssues;
12  var titles;
13  self.singleCategory = false;
14
15  var editorialCategoriesService = function(params) {
16
17    if( params === null  || typeof params === "undefined" ) params = "";
18
19    var xhrObj = {
20      url: VNP.baseUrl + "/webservice/getLatestEditorial.jsp",
21      data: $.param(params),
22      dataType: "json"
23
24    };
25
26    return $.ajax(xhrObj);
27  };
28
29  /* load categories and render slider and select */
30  var loadCategories = function() {
31
32    var params = "";
33
34    /* check if exists a single category and title selected */
35    if( $slider.data("editorialCategory") && $slider.data("nameTitle") ){
36
37      self.singleCategory = true;
38      params = {
39        "publication_category" : $slider.data("editorialCategory"),
40        "testata" : $slider.data("nameTitle")
41      };
42
43    }
44
45    editorialCategoriesService(params).done(function(data){
46      setEditorialCategories(data);
47      render();
48    });
49
50
51  };
52
53
54  var getEditorialCategories = function() {
55    return editorialCategories;
56  };
57
58
59  var setEditorialCategories = function(cateogories) {
60    editorialCategories = cateogories;
61  };
62
63
64  var setTitles = function( data ){
65    titles = data;
66  };
67
68
69  var getTitles = function(){
70    return titles;
71  };
72
73
74  var getIssues = function(){
75
76    var edCat = getEditorialCategories();
77    return edCat.issues;
78
79  };
80
81
82  var getTitlesById = function( editorialCategoryId ) {
83
84    if( typeof editorialCategoryId !== "number" && typeof parseInt( editorialCategoryId ) !== "number" ) return;
85
86    var edCat = getEditorialCategories();
87
88    var titles = $.map(edCat, function(value, index) {
89
90      if( value.id == editorialCategoryId ) {
91
92        return value.titles;
93
94      }
95
96    });
97
98    return titles;
99
100  };
101
102
103  var renderEditorialCategoriesSelect = function(element){
104
105    var edCat = getEditorialCategories();
106    var categories = edCat;
107
108    if( categories.length > 0 ){
109
110      element.empty();
111
112      // render the select
113      $.each(categories, function(index, value){
114        element.append("<option value='" +  value.id + "'>" + value.name +  "</option>");
115      });
116
117    }
118
119  };
120
121
122  var renderTitlesSelect = function(element){
123
124    var edCat = getEditorialCategories();
125    var categories = edCat;
126    var selected = "";
127
128    editorialCategoriesService().done(function (data) {
129
130      var idCat = $selectEditorialCategories.data("editorialCategory");
131
132      // get the publication category to list titles available
133      categories = $.map(data, function (value, index) {
134
135        if (value.id == idCat) {
136          $(".vc_editorial_category_selected").html(value.name);
137          return value.titles;
138        }
139
140      });
141
142      // render the select
143      if (categories.length > 0) {
144
145        element.empty();
146
147        $.each(categories, function (index, value) {
148
149          // set the default value
150          if( value.titleDirectory == $(element).data("nameTitle") ) selected = "selected";
151          else selected = "";
152
153          element.append("<option " + selected + " value='" + value.titleDirectory + "'>" + value.titleName + "</option>");
154
155        });
156
157      }
158
159    });
160
161  };
162
163
164  var renderSelect = function(element) {
165
166    /* render titles select */
167    if( self.singleCategory ){
168
169      renderTitlesSelect(element);
170
171    } else {
172
173      renderEditorialCategoriesSelect(element)
174
175    }
176  };
177
178
179  var renderSliderIssues = function(selector){
180
181    var issues = getIssues();
182    var slides = [];
183
184    if( issues.length > 0 ) {
185
186      for( var i = 0; i < issues.length; i++ ) {
187
188        var title = selector.data("name-title");
189        var clone = selector.find(".vc_thumb").clone();
190        var link = VNP.baseUrl + "/pageflip/" + VNP.Areas.Reader.getReader() + "/" + issues[i].titleDirectory + "/" + issues[i].issue;
191
192        clone.find(".vc_thumb_img").attr("data-src", issues[i].firstPage);
193        clone.find(".vc_thumb_img").attr("alt", issues[i].titleDirectory);
194        clone.find(".vc_link").attr("href", link);
195        clone.find(".vc_link").attr("title", issues[i].titleDirectory);
196        clone.find(".vc_thumb_title_link").text(issues[i].titleDirectory);
197        //add the cloned element to the container
198        slides.push(clone.html());
199
200      }
201
202      var sliderOptions = selector.data();
203      sliderOptions.virtual = {cache : false };
204
205      // for multiple instance, save into array to update on change select
206      if (typeof sliderIssues == "undefined") {
207        sliderIssues = new Swiper( selector, sliderOptions);
208      }
209
210      sliderIssues.virtual.slides = [];
211      sliderIssues.update();
212      sliderIssues.virtual.slides = slides;
213      sliderIssues.virtual.update();
214
215    }
216
217  };
218
219  var renderSlider = function(selector, idEdCat) {
220
221    var titles = getTitlesById(idEdCat);
222    var slides = [];
223
224    if( titles.length > 0 ) {
225
226      for( var i = 0; i < titles.length; i++ ) {
227
228        var title = selector.data("name-title");
229        var clone = selector.find(".vc_thumb").clone();
230        var link = VNP.baseUrl + "/newsstand/editorial/" + titles[i].publication_category + "/title/" + titles[i].titleDirectory;
231
232        var thumb = VNP.baseUrl + "/upload/app/" + titles[i].publication_category + "_" + titles[i].titleName.replace(/ /g, '_') + ".jpg";
233
234        clone.find(".vc_thumb_img").attr("data-src", thumb);
235        clone.find(".vc_thumb_img").attr("alt", titles[i].titleName);
236        clone.find(".vc_link").attr("href", link);
237        clone.find(".vc_link").attr("title", titles[i].titleName);
238        clone.find(".vc_thumb_title_link").text(titles[i].titleName);
239        //add the cloned element to the container
240        slides.push(clone.html());
241
242      }
243
244      var sliderOptions = selector.data();
245      sliderOptions.virtual = {cache : false };
246
247      // for multiple instance, save into array to update on change select
248      if (typeof sliderEditorial == "undefined") {
249        sliderEditorial = new Swiper( selector, sliderOptions);
250      }
251
252      sliderEditorial.virtual.slides = [];
253      sliderEditorial.update();
254      sliderEditorial.virtual.slides = slides;
255      sliderEditorial.virtual.update();
256
257    }
258
259  };
260
261  var updateSlider = function(idEdCat) {
262
263    if(self.singleCategory){
264
265      var idCat = $selectEditorialCategories.data("editorialCategory");
266      location.href = VNP.baseUrl + "/newsstand/editorial/" + idCat + "/title/" + $selectEditorialCategories.val();
267
268    } else {
269
270      renderSlider( $(".vc_slider"), idEdCat);
271
272    }
273
274  };
275
276  var render = function() {
277
278    var idEdCat = $selectEditorialCategories.val();
279
280    if( $selectEditorialCategories.length > 0 ) {
281
282      renderSelect($selectEditorialCategories, self.singleCategory);
283    }
284
285    /* render issues or editorial categories */
286    if( self.singleCategory ){
287
288      idEdCat = $selectEditorialCategories.data("editorialCategory");
289      renderSliderIssues( $slider, idEdCat);
290
291    } else {
292
293      renderSlider( $slider, $selectEditorialCategories.val());
294
295    }
296
297  };
298
299
300  return {
301    //render : render,
302    load: loadCategories,
303    updateSlider: updateSlider
304  }
305
306}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.