diff --git a/procentric/application/lib/hoteltv.api.js b/procentric/application/lib/hoteltv.api.js index 4b1a94a..f773bf1 100755 --- a/procentric/application/lib/hoteltv.api.js +++ b/procentric/application/lib/hoteltv.api.js @@ -94,6 +94,7 @@ HotelTV.api = (function() { "get_services": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/services", "get_news": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/news", "get_message": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/messages", + /* Requests */ "get_carts_amenity": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amenity/carts", "put_carts_amenity": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amenity/carts", "update_carts_amenity": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amenity/carts", @@ -106,14 +107,13 @@ HotelTV.api = (function() { "delete_carts_roomservice": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService/carts", "get_order_roomservice": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService/orders", "put_order_roomservice": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService/orders", + /* Events */ + "update_event": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/event", /* "get_emergency": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/emergency", - "get_news": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/news", - "get_message": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/messages", "set_message_status": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/messages", "set_device_status": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/state", - "get_epg_info": __apifxn_get_base_url() + "/api/" + _api_ver + "/channels/epg", "set_device_opmode": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/bbdoors/opmode", */ } @@ -625,6 +625,27 @@ HotelTV.api = (function() { }); }, + ReportEvent: function(_arrary_event) { + let _json_event = { + "events": [], + }; + + for (let _evtidx in _arrary_event) { + _json_event.events.push({ + "power": _arrary_event[_evtidx].power, + "location": _arrary_event[_evtidx].location, + "timestamp": Date.now() + }) + } + + let sz_api_url = __apifxn_get_api_url("update_event"); + __apifxn_CallCmsApi("POST", sz_api_url, "UpdateEvent", _json_event).then(_result => { + console.log(`Success::>${_result.data}`); + }).catch(_error => { + console.log(`Failure::>${_error.reason}`); + }); + }, + ReportBrief: function(_dev_inf, _gst_info, _usage_inf) { let _json_report = { "updated": "YYYY-MM-DD HH:MM:SS", diff --git a/procentric/application/lib/hoteltv.ui_appfull.js b/procentric/application/lib/hoteltv.ui_appfull.js index d17dbe6..bf78223 100755 --- a/procentric/application/lib/hoteltv.ui_appfull.js +++ b/procentric/application/lib/hoteltv.ui_appfull.js @@ -265,7 +265,7 @@ HotelTV.ui_appfull = (function() { // HOTKEY정보를 state에 기록 if (!(_brcCtz.button in _state.hotkey.mm)) { - _state.hotkey.mm[_brcCtz.button] = { 'type': "brochure" }; + _state.hotkey.mm[_brcCtz.button] = { 'type': "brochure" , 'id':_brcCtz.id}; } } } @@ -320,7 +320,7 @@ HotelTV.ui_appfull = (function() { let _elAmOLstItems = _elAmOLstRoot.children(`#orders`); let _elAmOLstSummary = _elAmOLstRoot.children('#summary'); - const __fxn_getRsItemValue = function(_object, _key, _itemID) { + const __fxn_getAmItemValue = function(_object, _key, _itemID) { for (__j = 1; __j <= _object.length; __j++) { if (_object[__j].id == _itemID) { return _object[__j][_key]; @@ -476,7 +476,7 @@ HotelTV.ui_appfull = (function() { _elDiv_OdItmesRec.className = "oditem"; var _elDiv_OdItmesRecName = document.createElement('div'); _elDiv_OdItmesRecName.setAttribute("id", "name"); - _elDiv_OdItmesRecName.textContent =`[${_j}] ` + __fxn_getRsItemValue(_amenity.children, "title", + _elDiv_OdItmesRecName.textContent =`[${_j}] ` + __fxn_getAmItemValue(_amenity.children, "title", _OdItem.itemId)[_state.lang]; _elDiv_OdItmesRec.appendChild(_elDiv_OdItmesRecName); @@ -577,7 +577,7 @@ HotelTV.ui_appfull = (function() { let _elAmCLstSummary = _elAmCLstRoot.children('#summary'); let _elAmCLstButtons = _elAmCLstRoot.children('#buttons'); - const __fxn_getRsItemValue = function(_object, _key, _itemID) { + const __fxn_getAmItemValue = function(_object, _key, _itemID) { for (__j = 1; __j <= _object.length; __j++) { if (_object[__j].id == _itemID) { return _object[__j][_key]; @@ -634,7 +634,7 @@ HotelTV.ui_appfull = (function() { // Append Sub elements::title let _elDiv_title = document.createElement('div'); _elDiv_title.setAttribute("id", "title"); - _elDiv_title.textContent = __fxn_getRsItemValue(_amenity.children, "title", _rsItem.itemId)[_state.lang]; + _elDiv_title.textContent = __fxn_getAmItemValue(_amenity.children, "title", _rsItem.itemId)[_state.lang]; _eldiv_item_ctz.appendChild(_elDiv_title); // Append Sub elements::quantity @@ -719,7 +719,7 @@ HotelTV.ui_appfull = (function() { let _elAmMnItmTbl = _elAmMnRoot.children('#items').find('.tbl_record').children('#record'); let _elAmMnDesc = _elAmPupRoot.children('.description'); - const __fxn_getRsItemValue = function(_object, _key, _itemID) { + const __fxn_getAmItemValue = function(_object, _key, _itemID) { for (__j = 1; __j <= _object.length; __j++) { if (_object[__j].id == _itemID) { return _object[__j][_key]; @@ -738,13 +738,15 @@ HotelTV.ui_appfull = (function() { let selectedTblItemID = _elAmMnItmTbl.children('tr.active').prop('id'); //Redraw Description - _elAmMnDesc.children('#title').text(__fxn_getRsItemValue(_amenity.children, "title", selectedTblItemID)[_state.lang]); - _elAmMnDesc.children('#comment').text(__fxn_getRsItemValue(_amenity.children, "description", selectedTblItemID)[_state.lang]); - _elAmMnDesc.children('#thumb').css('background-image', 'url(' + __fxn_getRsItemValue(_amenity.children, "thumbnail", selectedTblItemID).files[_state.lang].download + ')'); + _elAmMnDesc.children('#title').text(__fxn_getAmItemValue(_amenity.children, "title", selectedTblItemID)[_state.lang]); + _elAmMnDesc.children('#comment').text(__fxn_getAmItemValue(_amenity.children, "description", selectedTblItemID)[_state.lang]); + _elAmMnDesc.children('#thumb').css('background-image', 'url(' + __fxn_getAmItemValue(_amenity.children, "thumbnail", selectedTblItemID).files[_state.lang].download + ')'); if (_elAmMnDesc.css('display') == "none") { _elAmMnDesc.show(); } + + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':__fxn_getAmItemValue(_amenity.children, "id", selectedTblItemID)}}]) } /** @@ -859,6 +861,7 @@ HotelTV.ui_appfull = (function() { // state내의 Amenity 관련 HOTKEY정보를 초기화 _state.hotkey.mm[_amenity.button] = { 'type': "amenity", + 'id': _amenity.id, "status": { "focus": "menu", "menu": { @@ -1214,6 +1217,7 @@ HotelTV.ui_appfull = (function() { if (!(_amenity.button in _state.hotkey.mm)) { _state.hotkey.mm[_amenity.button] = { 'type': "amenity", + 'id': _amenity.id, "status": { "focus": "menu", "menu": { @@ -1712,6 +1716,8 @@ HotelTV.ui_appfull = (function() { if (_elRsMnDesc.css('display') == "none") { _elRsMnDesc.show(); } + + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':__fxn_getRsItemValue(_roomservice.children, "id", selectedTblItemID)}}]) } /** @@ -1826,6 +1832,7 @@ HotelTV.ui_appfull = (function() { // state내의 Room service관련 HOTKEY정보를 초기화 _state.hotkey.mm[_roomservice.button] = { 'type': "roomservice", + 'id': _roomservice.id, "status": { "focus": "menu", "menu": { @@ -2181,6 +2188,7 @@ HotelTV.ui_appfull = (function() { if (!(_roomservice.button in _state.hotkey.mm)) { _state.hotkey.mm[_roomservice.button] = { 'type': "roomservice", + 'id': _roomservice.id, "status": { "focus": "menu", "menu": { @@ -2456,7 +2464,7 @@ HotelTV.ui_appfull = (function() { for (let _i = 1; _i <= _mpinfo.length; _i++) { let _div_mpsel_item = document.createElement('div'); _div_mpsel_item.className = 'item'; - _div_mpsel_item.id = 'mpsel_' + _mpinfo[_i].id; + _div_mpsel_item.id = 'mpsel_' + _mpinfo[_i].type; _div_mpsel_item.setAttribute("mpid", _mpinfo[_i].id); // Append Sub elements::title @@ -2694,7 +2702,6 @@ HotelTV.ui_appfull = (function() { //DOWN __uifxn_AppFull_MyPageSelectMessage("down"); } else if (event.keyCode == 13) { - const _mpinfo = HotelTV.tvguide.program[_mmIdx].children; // 메시지 팝업 빌드 및 화면 전환 if (HotelTV.tvguide.program[_mmIdx].children[_state.menu.main[_mmIdx].cur].type == 'message') { let _msginf = HotelTV.message; @@ -2798,20 +2805,28 @@ HotelTV.ui_appfull = (function() { }); $('#lst_mypagesel').on('translate.owl.carousel', function(event) { - // 메뉴 셀렉터 좌/우 헨들링 및 이펙트 - let idx = 0; - if (typeof event.item != 'undefined') { - idx = event.item.index; - } else { - idx = $('.main .mypage .slider .owl-item.active.center').index(); + const __fxn_getMyPaggeItemValue = function(_object, _key, _itemType) { + for (__j = 1; __j <= _object.length; __j++) { + if (_object[__j].type == _itemType) { + return _object[__j][_key]; + } + } } - console.log("MYPAGE EVT(TRANSLATED) IDX::>" + idx); - if ($('.main .mypage .slider .owl-item').eq(idx).children('.item').length == 1) { - let _mp_sm = $('.main .mypage .slider .owl-item').eq(idx).children('.item')[0].id; - if (_mp_sm == "mpsel_accomodation") { + // 메뉴 셀렉터 좌/우 헨들링 및 이펙트 + let uiCtrl_idx = 0; + if (typeof event.item != 'undefined') { + uiCtrl_idx = event.item.index; + } else { + uiCtrl_idx = $('.main .mypage .slider .owl-item.active.center').index(); + } + //console.log("MYPAGE EVT(TRANSLATED) IDX::>" + uiCtrl_idx); + if ($('.main .mypage .slider .owl-item').eq(uiCtrl_idx).children('.item').length == 1) { + let _mp_sm = $('.main .mypage .slider .owl-item').eq(uiCtrl_idx).children('.item')[0].id; + + if (_mp_sm == "mpsel_accommodation") { // MYPAGE서브 메뉴 인덱스 갱신 - _state.menu.main[_mmIdx].cur = 'accomodation'; + _state.menu.main[_mmIdx].cur = 'accommodation'; } else if (_mp_sm == "mpsel_message") { let __curMsgDspIdx = 0; // MYPAGE서브 메뉴 인덱스 갱신 @@ -2831,12 +2846,21 @@ HotelTV.ui_appfull = (function() { $('.main>.mypage>.bg>.owl-carousel .owl-item #mp_msg_tblrec tr').filter("[msgidx='" + __curMsgDspIdx + "']").addClass('focus'); } console.log("MYPAGE EVT(TRANSLATED) MYPAGE MENU::>" + _state.menu.main[_mmIdx].cur); + + HotelTV.api.ReportEvent([ + { + 'power': true, + 'location': + { + 'conId':__fxn_getMyPaggeItemValue(_mpinfo,'id', _state.menu.main[_mmIdx].cur) + } + }]) } $('.main .mypage .slider .owl-item.focus').removeClass('focus'); $('.main .mypage .slider .owl-item.unfocus').removeClass('unfocus'); - $('.main .mypage .slider .owl-item').eq(idx).addClass('focus'); - $('.main .mypage .slider .owl-item').eq(idx - 1).addClass('unfocus'); - $('.main .mypage .slider .owl-item').eq(idx + 1).addClass('unfocus'); + $('.main .mypage .slider .owl-item').eq(uiCtrl_idx).addClass('focus'); + $('.main .mypage .slider .owl-item').eq(uiCtrl_idx - 1).addClass('unfocus'); + $('.main .mypage .slider .owl-item').eq(uiCtrl_idx + 1).addClass('unfocus'); }); }); @@ -2909,6 +2933,14 @@ HotelTV.ui_appfull = (function() { // console.log("Major=5 minor=" + _major); // HotelTV.hcap.ChannelSetup("rf_analog_ntsc", { "major": _major, "minor": 0 }); // } + + HotelTV.api.ReportEvent([{ + 'power': true, + 'location':{ + 'category':_tvProg[_tvCtgIdx].id, + 'chId': _tvChInfo.id, + } + }]) } else { console.log(`SKIPPED::TVCTG[${_tvProg[_tvCtgIdx].name}]` + ` CUR CH IDX::>${_tvChIdx} EPGID: ${_tvChInfo.epg_id} URL::>${_tvChInfo.url} TMDIFF::>${_tm_diff_ms}`); @@ -3167,6 +3199,8 @@ HotelTV.ui_appfull = (function() { } } console.log("CTZ(GEN) IDX::>" + _state.menu.main[_mmIdx][_smIdx].cur); + + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_ctzinfo[_state.menu.main[_mmIdx][_smIdx].cur].id}}]) }); $('#lst_ctzgenbg').on('translate.owl.carousel', function(event) { @@ -3478,21 +3512,23 @@ HotelTV.ui_appfull = (function() { _state.menu.main[_mmIdx].cur = Object.keys(_sminfo)[event.page.index]; //console.log("SUB IDX::>" + _state.menu.main[_mmIdx].cur); __uifxn_AppFull_OnKeyDnEvt_SmSel(event); + + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_sminfo[_state.menu.main[_mmIdx].cur].id}}]) }); $('#lst_smsel').on('translate.owl.carousel', function(event) { // 메뉴 셀렉터 좌/우 헨들링 및 이펙트 - let idx = 0; + let _uiCtrl_idx = 0; if (typeof event.item != 'undefined') { - idx = event.item.index; + _uiCtrl_idx = event.item.index; } else { - idx = $('.main .sub .slider .owl-item.active.center').index(); + _uiCtrl_idx = $('.main .sub .slider .owl-item.active.center').index(); } - console.log("SUB IDX4::>" + idx); + //console.log("SUB UI CTRL IDX::>" + _uiCtrl_idx); $('.main .sub .slider .owl-item.focus').addClass('unfocus'); $('.main .sub .slider .owl-item.focus').removeClass('focus'); - $('.main .sub .slider .owl-item').eq(idx).addClass('focus'); - $('.main .sub .slider .owl-item').eq(idx).removeClass('unfocus'); + $('.main .sub .slider .owl-item').eq(_uiCtrl_idx).addClass('focus'); + $('.main .sub .slider .owl-item').eq(_uiCtrl_idx).removeClass('unfocus'); }); } @@ -4331,6 +4367,7 @@ HotelTV.ui_appfull = (function() { * @param {boolean} uri_img background image url */ function __uifxn_AppFull_BldPage_Main() { + let _opening = HotelTV.tvguide.opening; let _program = HotelTV.tvguide.program; let _weather = HotelTV.weather; let _state = HotelTV.state; @@ -4386,7 +4423,7 @@ HotelTV.ui_appfull = (function() { } if (!(_program[_mm_idx].type in _state['specialKey'])) { - _state['specialKey'][_program[_mm_idx].type] = { "mm_index": _mm_idx }; + _state['specialKey'][_program[_mm_idx].type] = { "mm_index": _mm_idx , "id": _program[_mm_idx].id}; } } } @@ -4501,11 +4538,15 @@ HotelTV.ui_appfull = (function() { if (_state.menu.stage == "main") { console.log(`MM KEY EVENT::> ${_evt.keyCode}, UINT=>${parseInt(_evt.keyCode)}`); - //console.log("MM KEY EVENT::> " + _evt.keyCode); + if (_evt.keyCode == 37) { $('#lst_mmsel').trigger('prev.owl', 700) + //console.log(" MM ID::> " + _state.menu.main.cur + _program[_state.menu.main.cur].name); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_program[_state.menu.main.cur].id}}]) } else if (_evt.keyCode == 39) { $('#lst_mmsel').trigger('next.owl', 700) + //console.log(" MM ID::> " + _state.menu.main.cur + _program[_state.menu.main.cur].name); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_program[_state.menu.main.cur].id}}]) } else if (_evt.keyCode == 13) { // 서브 메뉴 빌드 및 화면 전환 __uifxn_AppFull_ShowMMHotKeyBtn(false); @@ -4579,6 +4620,7 @@ HotelTV.ui_appfull = (function() { }); } }); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_state.hotkey.mm['red'].id}}]) } } else if (_evt.keyCode == 404) { // GREEN BUTTON @@ -4608,6 +4650,7 @@ HotelTV.ui_appfull = (function() { }); } }); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_state.hotkey.mm['green'].id}}]) } } else if (_evt.keyCode == 405) { // YELLOW BUTTON @@ -4637,6 +4680,7 @@ HotelTV.ui_appfull = (function() { }); } }); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_state.hotkey.mm['yellow'].id}}]) } } else if (_evt.keyCode == 406) { // BLUE BUTTON @@ -4666,6 +4710,7 @@ HotelTV.ui_appfull = (function() { }); } }); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_state.hotkey.mm['blue'].id}}]) } } else if (_evt.keyCode == -2072433963) { // DEDICATED HOT KEY: Amenity @@ -4678,6 +4723,7 @@ HotelTV.ui_appfull = (function() { __uifxn_AppFull_ShowMMHotKeyBtn(false); }); }); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_opening.amenity.id}}]) } } else if (_evt.keyCode == -2072437788) { // DEDICATED HOT KEY: Room service @@ -4690,24 +4736,28 @@ HotelTV.ui_appfull = (function() { __uifxn_AppFull_ShowMMHotKeyBtn(false); }); }); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_opening.amenity.roomService}}]) } } else if (_evt.keyCode == -2072437533) { // DEDICATED HOT KEY: Flight // Check flight main menu index and go if (('flight' in _state['specialKey'])) { $('#lst_mmsel').trigger("to.owl.carousel", [Number(_state['specialKey']['flight'].mm_index) - 1, 10, true]); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_state['specialKey']['flight'].id}}]) } } else if (_evt.keyCode == -2072438298) { // DEDICATED HOT KEY: Weather // Check flight main menu index and go if (('weather' in _state['specialKey'])) { $('#lst_mmsel').trigger("to.owl.carousel", [Number(_state['specialKey']['weather'].mm_index) - 1, 10, true]); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_state['specialKey']['weather'].id}}]) } } else if (_evt.keyCode == -2072443143) { // DEDICATED HOT KEY: TV // Check flight main menu index and go if (('tv' in _state['specialKey'])) { $('#lst_mmsel').trigger("to.owl.carousel", [Number(_state['specialKey']['tv'].mm_index) - 1, 10, true]); + HotelTV.api.ReportEvent([{'power': true, 'location':{'conId':_state['specialKey']['tv'].id}}]) } } } else if (_state.menu.stage == "hotkey_mm_red") {