PageSourceSearch

https://ticket.tickebo.jp/top/script/TOP-01-01_index.js

js tickebo.jp collected 2026-10-02 05:04:41 UTC 14,891 bytes, 361 lines download raw bytes

1(function(App) {
2  /************************
3    トップ
4  ************************/
5  init();
6
7  function init() {
8    var API_DOMAIN_GET_URL = '/web/api/top/ticket-board-top';
9    let baseUrl_evt0101 = '/show/event.html?info=';
10    var DEBUG_MODE = false;
11    if (DEBUG_MODE) {
12      API_DOMAIN_GET_URL = '/dev/api/TOP_01.json';
13    }
14    // テスト用json
15    App.api.get(API_DOMAIN_GET_URL).done(function(data) {
16      data = normalize(data);
17      // 多言語対応
18      Vue.use(VueI18n);
19      var i18n = new VueI18n({
20        locale: App.locale.get(),
21        messages: App.locale.extendI18n(i18nMessages),
22      });
23
24      var vm = new Vue({
25        mixins: [App.mixin],
26        el: '#app',
27        i18n: i18n,
28        data: data,
29        mounted: function() {
30          $('.top__slider__container').on('init', function(event, slick) {
31            data.isLoaded = true;
32          });
33          $('.top__slider__container').slick({
34            autoplay: true,
35            autoplaySpeed: 5000,
36            slidesToShow: 1,
37            centerMode: true,
38            centerPadding: '15%',
39            speed: 500,
40            adaptiveHeight: false,
41            variableWidth: false,
42            prevArrow: '<buttom class="slick-prev"></div>', // 切り替え矢印
43            nextArrow: '<buttom class="slick-next"></div>', // 切り替え矢印
44            asNavFor: '.top__slider__background',
45            responsive: [
46              {
47                breakpoint: 640,
48                settings: {
49                  arrows: false,
50                  centerMode: true,
51                  centerPadding: '10%',
52                },
53              },
54            ],
55          });
56          $('.top__slider__background').slick({
57            slidesToShow: 1,
58            slidesToScroll: 1,
59            arrows: false,
60            fade: true,
61            asNavFor: '.top__slider__container',
62          });
63          // 戻るボタン押下後の表示崩れ軽減のための処理
64          $('.backLink').click(function() {
65            $('.top__slider__background').slick('setPosition');
66            $('.top__slider__container').slick('setPosition');
67          });
68          this.mx_initHeader();
69
70          // バナー
71          $('.banner__slider__container').slick({
72            autoplay: true,
73            autoplaySpeed: 5000,
74            slidesToShow: 1,
75            centerMode: true,
76            centerPadding: '15%',
77            speed: 500,
78            adaptiveHeight: false,
79            variableWidth: false,
80            prevArrow: '<buttom class="slick-prev"></div>', // 切り替え矢印
81            nextArrow: '<buttom class="slick-next"></div>', // 切り替え矢印
82            responsive: [
83              {
84                breakpoint: 640,
85                settings: {
86                  arrows: false,
87                  centerMode: true,
88                  centerPadding: '5%',
89                },
90              },
91            ],
92          });
93        },
94        methods: {
95          onTouchScrollAtention: function() {
96            var target;
97            if (this.noticeManagements.length > 0) {
98              target = $('.top__news').offset().top - 80;
99            } else {
100              target = $('.top__newevent').offset().top - 80;
101            }
102            window.scrollTo({
103              top: target,
104              behavior: 'smooth',
105            });
106          },
107          onMoreLoadNewEvent: function() {
108            var loadedItemLength = data.neweventDisplay.length;
109            var items = data.newEvents;
110            var count;
111            if (items.length - loadedItemLength > 4) {
112              count = 4;
113            } else {
114              count = items.length - loadedItemLength;
115            }
116            for (var i = 0; i < count; i++) {
117              var eventArray = [];
118              eventArray.imageUrl = data.newEvents[loadedItemLength + i].imageUrl;
119              if (data.newEvents[loadedItemLength + i].acceptanceNo) {
120                eventArray.urlEvt0101 = baseUrl_evt0101 + data.newEvents[loadedItemLength + i].acceptanceNo;
121              } else {
122                eventArray.urlEvt0101 = data.newEvents[loadedItemLength + i].externalUrl;
123              }
124              eventArray.link = data.newEvents[loadedItemLength + i].link;
125              eventArray.eventGroupTitleWeb = data.newEvents[loadedItemLength + i].eventGroupTitleWeb;
126              eventArray.performerNmWeb = data.newEvents[loadedItemLength + i].performerNmWeb.join(' / ');
127              // TOP画面で開始日と終了日が同じ日付けだったら片方のみを表示させる
128              if (data.newEvents[loadedItemLength + i].holdStartOn === data.newEvents[loadedItemLength + i].holdEndOn) {
129                eventArray.date = data.newEvents[loadedItemLength + i].dateFrom;
130              } else {
131                eventArray.date = data.newEvents[loadedItemLength + i].dateFrom + ' - ' + data.newEvents[loadedItemLength + i].dateTo;
132              }
133              eventArray.categoryNm = data.newEvents[loadedItemLength + i].categoryNm.join(' / ');
134              data.neweventDisplay.push(eventArray);
135            }
136            if (loadedItemLength + count >= items.length) {
137              data.neweventButtonState = false;
138            }
139          },
140          onMoreLoadGenre: function(categoryNo) {
141            var loadedItemLength = data.categories[categoryNo].categoryDisplay.length;
142            var items = data.categories[categoryNo].categoryVisuals;
143            var count;
144            if (items.length - loadedItemLength >= 8) {
145              count = 8;
146            } else {
147              count = items.length - loadedItemLength;
148            }
149            for (var i = 0; i < count; i++) {
150              let tgtCategoryVisuals = data.categories[categoryNo].categoryVisuals[loadedItemLength + i];
151              var genreArray = [];
152              genreArray.imageUrl = tgtCategoryVisuals.imageUrl;
153              if (tgtCategoryVisuals.acceptanceNo) {
154                genreArray.urlEvt0101 = baseUrl_evt0101 + tgtCategoryVisuals.acceptanceNo;
155              } else {
156                genreArray.urlEvt0101 = tgtCategoryVisuals.externalUrl;
157              }
158              genreArray.link = tgtCategoryVisuals.link;
159              genreArray.eventGroupTitleWeb = tgtCategoryVisuals.eventGroupTitleWeb;
160              genreArray.performerNmWeb = tgtCategoryVisuals.performerNmWeb.join(' / ');
161              // TOP画面で開始日と終了日が同じ日付けだったら片方のみを表示させる
162              if (tgtCategoryVisuals.holdStartOn === tgtCategoryVisuals.holdEndOn) {
163                genreArray.date = tgtCategoryVisuals.dateFrom;
164              } else {
165                genreArray.date = tgtCategoryVisuals.dateFrom + ' - ' + tgtCategoryVisuals.dateTo;
166              }
167              data.categories[categoryNo].categoryDisplay.push(genreArray);
168            }
169            if (loadedItemLength + count >= items.length) {
170              data.categories[categoryNo].buttonState = false;
171            }
172          },
173          onAboutElectronicTicket: function() {
174            location.href = '/top/ja/guide/ticket.html';
175          },
176          onGuideButton: function() {
177            location.href = '/top/ja/guide/top.html';
178          },
179          onFAQButton: function() {
180            location.href = '/top/ja/faq/qa/list.html';
181          },
182          // QRコードチケット - WEB
183          onQrCodeTicketWeb: function() {
184            location.href = '/top/ja/guide/qrtickets.html';
185          },
186          // QRコードチケット - LIVE QR
187          onQrCodeTicketLiveQr: function() {
188            location.href = '/top/ja/guide/liveqrplus.html';
189          },
190          // 電子スタンプ - QuickPASS
191          onQuickPass: function() {
192            location.href = '/top/ja/guide/web_tickets.html';
193          },
194          onNoticeClick: function(noticeManagementNo) {
195            const notice = this.noticeManagements.filter(function(notice) {
196              return noticeManagementNo === notice.noticeManagementNo;
197            })[0];
198            this.noticeDetail = {
199              title: notice.detailTitle, // 詳細タイトル
200              description: notice.detailDescription, // 詳細本文
201              imageUrl: notice.noticeManagementImageUrl, // 画像
202              noticeOn: notice.noticeOnDetail, // 配信日
203            };
204
205            // お知らせページへ遷移
206            sessionStorage.setItem('noticeDetail', JSON.stringify(this.noticeDetail));
207            location.href = '/top/notice.html';
208          },
209        },
210        created: function() {
211          location.hash = '';
212        },
213        computed: {},
214      });
215    });
216
217    function normalize(data) {
218      var fmt = App.formatter;
219      var i;
220
221      data.locale = App.locale.get();
222      data.noticeDetail = {
223        title: null,
224        description: null,
225        imageUrl: null,
226        noticeOn: null,
227      };
228
229      var currentDate = new Date();
230      var currentYear = currentDate.getFullYear();
231
232      data['isLoaded'] = false;
233
234      //mainVisuals
235      if (data.mainVisuals.length > 0) {
236        data.slideBackground = data.mainVisuals[0].imageUrl;
237        data.slideBackgroundFade = data.mainVisuals[0].imageUrl;
238        data.slideBackgroundFlg = false;
239      }
240      for (i = 0; i < data.mainVisuals.length; i++) {
241        data.mainVisuals[i].dateTo = fmt.getFullDateWithDay(data.mainVisuals[i].holdEndOn, data.locale);
242        var startDate = new Date(data.mainVisuals[i].holdStartOn);
243        if (currentYear === startDate.getFullYear()) {
244          data.mainVisuals[i].dateFrom = fmt.getDateWithDay(data.mainVisuals[i].holdStartOn, data.locale);
245        } else {
246          data.mainVisuals[i].dateFrom = fmt.getFullDateWithDay(data.mainVisuals[i].holdStartOn, data.locale);
247        }
248        if (data.mainVisuals[i].acceptanceNo) {
249          data.mainVisuals[i].urlEvt0101 = baseUrl_evt0101 + data.mainVisuals[i].acceptanceNo;
250        } else {
251          data.mainVisuals[i].urlEvt0101 = data.mainVisuals[i].externalUrl;
252        }
253        data.mainVisuals[i].categoryNm = data.mainVisuals[i].categoryNm.join(' / ');
254        data.mainVisuals[i].performerNmWeb = data.mainVisuals[i].performerNmWeb.join(' / ');
255        if (data.mainVisuals[i].holdStartOn === data.mainVisuals[i].holdEndOn) {
256          data.mainVisuals[i].dayOfEvent = data.mainVisuals[i].dateFrom;
257        } else {
258          data.mainVisuals[i].dayOfEvent = data.mainVisuals[i].dateFrom + " - " + data.mainVisuals[i].dateTo;
259        }
260      }
261
262      //noticeManagements
263      for (i = 0; i < data.noticeManagements.length; i++) {
264        const noticeOn = data.noticeManagements[i].noticeOn;
265        data.noticeManagements[i].noticeOn = fmt.getDotFullDate(noticeOn, data.locale);
266        data.noticeManagements[i].noticeOnDetail = fmt.getDotFullDate(noticeOn, data.locale);
267      }
268
269      //newEvents
270      for (i = 0; i < data.newEvents.length; i++) {
271        data.newEvents[i].dateTo = fmt.getFullDateWithDay(data.newEvents[i].holdEndOn, data.locale);
272        var newEventStartDate = new Date(data.newEvents[i].holdStartOn);
273        if (currentYear === newEventStartDate.getFullYear()) {
274          data.newEvents[i].dateFrom = fmt.getDateWithDay(data.newEvents[i].holdStartOn, data.locale);
275        } else {
276          data.newEvents[i].dateFrom = fmt.getFullDateWithDay(data.newEvents[i].holdStartOn, data.locale);
277        }
278      }
279      var neweventCount;
280      if (data.newEvents.length > 4) {
281        neweventCount = 4;
282        data.neweventButtonState = true;
283      } else {
284        neweventCount = data.newEvents.length;
285        data.neweventButtonState = false;
286      }
287      data.neweventDisplay = [];
288      for (i = 0; i < neweventCount; i++) {
289        var eventArray = [];
290        eventArray.imageUrl = data.newEvents[i].imageUrl;
291        if (data.newEvents[i].acceptanceNo) {
292          eventArray.urlEvt0101 = baseUrl_evt0101 + data.newEvents[i].acceptanceNo;
293        } else {
294          eventArray.urlEvt0101 = data.newEvents[i].externalUrl;
295        }
296        eventArray.eventGroupTitleWeb = data.newEvents[i].eventGroupTitleWeb;
297        eventArray.performerNmWeb = data.newEvents[i].performerNmWeb.join(' / ');
298        // TOP画面で開始日と終了日が同じ日付けだったら片方のみを表示させる
299        if (data.newEvents[i].holdStartOn === data.newEvents[i].holdEndOn) {
300          eventArray.date = data.newEvents[i].dateFrom;
301        } else {
302          eventArray.date = data.newEvents[i].dateFrom + ' - ' + data.newEvents[i].dateTo;
303        }
304        eventArray.categoryNm = data.newEvents[i].categoryNm.join(' / ');
305        data.neweventDisplay.push(eventArray);
306      }
307
308      // categories
309      for (let i = 0; i < data.categories.length; i++) {
310        let tgtCV = data.categories[i].categoryVisuals;
311        for (j = 0; j < tgtCV.length; j++) {
312          tgtCV[j].dateTo = fmt.getFullDateWithDay(tgtCV[j].holdEndOn, data.locale);
313          var genreStartDate = new Date(tgtCV[j].holdStartOn);
314          if (currentYear === genreStartDate.getFullYear()) {
315            tgtCV[j].dateFrom = fmt.getDateWithDay(tgtCV[j].holdStartOn, data.locale);
316          } else {
317            tgtCV[j].dateFrom = fmt.getFullDateWithDay(tgtCV[j].holdStartOn, data.locale);
318          }
319          tgtCV[j].date = tgtCV[j].dateFrom + ' - ' + tgtCV[j].dateTo;
320        }
321        data.categories[i].categoryNo = i;
322        var genreCount;
323        if (tgtCV.length >= 9) {
324          genreCount = 8;
325          data.categories[i].buttonState = true;
326        } else {
327          genreCount = tgtCV.length;
328          data.categories[i].buttonState = false;
329        }
330        data.categories[i].categoryDisplay = [];
331        for (j = 0; j < genreCount; j++) {
332          var genreArray = [];
333          genreArray.imageUrl = tgtCV[j].imageUrl;
334          if (tgtCV[j].acceptanceNo) {
335            genreArray.urlEvt0101 = baseUrl_evt0101 + tgtCV[j].acceptanceNo;
336          } else {
337            genreArray.urlEvt0101 = tgtCV[j].externalUrl;
338          }
339          genreArray.eventGroupTitleWeb = tgtCV[j].eventGroupTitleWeb;
340          genreArray.performerNmWeb = tgtCV[j].performerNmWeb.join(' / ');
341          // TOP画面で開始日と終了日が同じ日付けだったら片方のみを表示させる
342          if (tgtCV[j].holdStartOn === tgtCV[j].holdEndOn) {
343            genreArray.date = tgtCV[j].dateFrom;
344          } else {
345            genreArray.date = tgtCV[j].dateFrom + ' - ' + tgtCV[j].dateTo;
346          }
347          data.categories[i].categoryDisplay.push(genreArray);
348        }
349      }
350
351      // タイトルの変更
352      if (data.locale === 'ja') {
353        document.title = i18nMessages.ja.message.mainTitle;
354      } else {
355        document.title = i18nMessages.en.message.mainTitle;
356      }
357
358      return data;
359    }
360  }
361})(this.bw || (this.bw = {}));

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.