diff --git a/procentric/application/app_hoteltv_full.html b/procentric/application/app_hoteltv_full.html index d0b57b4..8a0f306 100755 --- a/procentric/application/app_hoteltv_full.html +++ b/procentric/application/app_hoteltv_full.html @@ -187,6 +187,43 @@
+
+
+ +
+
+
+
+
+
+
+
+
+
+
diff --git a/procentric/application/lib/hoteltv.api.js b/procentric/application/lib/hoteltv.api.js index be366fb..3b631c7 100755 --- a/procentric/application/lib/hoteltv.api.js +++ b/procentric/application/lib/hoteltv.api.js @@ -82,13 +82,12 @@ HotelTV.api = (function() { */ function __apifxn_get_api_url(api_type) { var dic_api_url = { + /* Setting & Contents */ "get_translation": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/translation", "get_device_settings": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/setting", "get_site_info": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/info", "get_guest_info": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/guest", "get_opening_ctz": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/opening", - "get_amenity_ctz": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amentity", - "get_roomservice_ctz": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService", "get_widget_ctz": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/widget", "get_program_ctz": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/program", "get_epg_info": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/epg", @@ -97,13 +96,18 @@ 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 */ + /* Amenity&Room Service: get/request/sotck */ + "get_ctz_amenity": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amentity", + "get_stock_amenity": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amenity/stock", "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", "delete_carts_amenity": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amenity/carts", "get_order_amenity": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amenity/orders", "put_order_amenity": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/amenity/orders", + + "get_ctz_roomservice": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService", + "get_stock_roomservice": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService/stock", "get_carts_roomservice": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService/carts", "put_carts_roomservice": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService/carts", "update_carts_roomservice": __apifxn_get_base_url() + "/api/" + _api_ver + "/assets/" + _dev_familly + "/" + _serial_num + "/requests/roomService/carts", @@ -117,7 +121,6 @@ HotelTV.api = (function() { /* "get_emergency": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/emergency", "set_message_status": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/messages", - "set_device_opmode": __apifxn_get_base_url() + "/api/" + _api_ver + "/settops/" + _serial_num + "/bbdoors/opmode", */ } @@ -334,7 +337,7 @@ HotelTV.api = (function() { GetAmenityCtz: function() { return new Promise((resolve, reject) => { - let sz_api_url = __apifxn_get_api_url("get_amenity_ctz"); + let sz_api_url = __apifxn_get_api_url("get_ctz_amenity"); __apifxn_CallCmsApi("GET", sz_api_url, "GetAmenityCtz", null).then(_result => { //console.log(`Success::>${_result.data}`); resolve(JSON.parse(_result.data)); @@ -347,7 +350,7 @@ HotelTV.api = (function() { GetRoomServiceCtz: function() { return new Promise((resolve, reject) => { - let sz_api_url = __apifxn_get_api_url("get_roomservice_ctz"); + let sz_api_url = __apifxn_get_api_url("get_ctz_roomservice"); __apifxn_CallCmsApi("GET", sz_api_url, "GetRoomServiceCtz", null).then(_result => { //console.log(`Success::>${_result.data}`); resolve(JSON.parse(_result.data)); @@ -466,9 +469,33 @@ HotelTV.api = (function() { }); }, + /** + * HotelTV API ::> get amenity stock info + * @param {string} _item_id + * @param {number} _quantity + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} + */ + GetAmenityStocks: function(_item_id, _quantity) { + return new Promise((resolve, reject) => { + let sz_api_url = __apifxn_get_api_url("get_stock_amenity")+ "/" + _item_id + "?quantity=" + _quantity; + __apifxn_CallCmsApi("GET", sz_api_url, "GetAmenityStocks", null).then(_result => { + //console.log(`Success::>${_result.data}`); + resolve(JSON.parse(_result.data)); + }).catch(_error => { + console.error(`Failure::>${_error.reason}`); + reject(_error.reason); + }); + }); + }, + /** * HotelTV API ::> get amenity carts info - * @param {dictionary} _item_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _item_id + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ GetAmenityCarts: function(_item_id) { return new Promise((resolve, reject) => { @@ -485,7 +512,11 @@ HotelTV.api = (function() { /** * HotelTV API ::> put amenity carts info - * @param {dictionary} _item_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _item_id + * @param {number} _quantity + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ PutAmenityCarts: function(_item_id, _quantity) { return new Promise((resolve, reject) => { @@ -502,7 +533,11 @@ HotelTV.api = (function() { /** * HotelTV API ::> update amenity carts info - * @param {dictionary} _cart_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _cart_id + * @param {number} _quantity + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ UpdateAmenityCarts: function(_cart_id, _quantity) { return new Promise((resolve, reject) => { @@ -519,7 +554,10 @@ HotelTV.api = (function() { /** * HotelTV API ::> delete amenity carts info - * @param {dictionary} _cart_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _cart_id + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ DeleteAmenityCarts: function(_cart_id) { return new Promise((resolve, reject) => { @@ -536,7 +574,10 @@ HotelTV.api = (function() { /** * HotelTV API ::> get amenity order info - * @param {dictionary} _item_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _cart_id + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ GetAmenityOrders: function(_item_id) { return new Promise((resolve, reject) => { @@ -552,12 +593,36 @@ HotelTV.api = (function() { /** * HotelTV API ::> order amenity - * @param {dictionary} _cart_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _cart_id + * @returns + * null: if _cart_id isn't null it will return specified info with _cart_id + * {dictionary} */ - PutAmenityOrders: function(_cart_item) { + PutAmenityOrders: function(_cart_id) { return new Promise((resolve, reject) => { let sz_api_url = __apifxn_get_api_url("put_order_amenity"); - __apifxn_CallCmsApi("POST", `${sz_api_url}`, "PutAmenityOrders", _cart_item).then(_result => { + __apifxn_CallCmsApi("POST", `${sz_api_url}`, "PutAmenityOrders", _cart_id).then(_result => { + //console.log(`Success::>${_result.data}`); + resolve(JSON.parse(_result.data)); + }).catch(_error => { + console.error(`Failure::>${_error.reason}`); + reject(_error.reason); + }); + }); + }, + + /** + * HotelTV API ::> get roomservice stock info + * @param {string} _item_id + * @param {number} _quantity + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} + */ + GetRoomserviceStocks: function(_item_id, _quantity) { + return new Promise((resolve, reject) => { + let sz_api_url = __apifxn_get_api_url("get_stock_roomservice")+ "/" + _item_id + "?quantity=" + _quantity; + __apifxn_CallCmsApi("GET", sz_api_url, "GetRoomserviceStocks", null).then(_result => { //console.log(`Success::>${_result.data}`); resolve(JSON.parse(_result.data)); }).catch(_error => { @@ -569,7 +634,10 @@ HotelTV.api = (function() { /** * HotelTV API ::> get room service carts info - * @param {dictionary} _item_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _item_id + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ GetRoomserviceCarts: function(_item_id) { return new Promise((resolve, reject) => { @@ -586,7 +654,11 @@ HotelTV.api = (function() { /** * HotelTV API ::> put room service carts info - * @param {dictionary} _item_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _item_id + * @param {number} _quantity + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ PutRoomserviceCarts: function(_item_id, _quantity) { return new Promise((resolve, reject) => { @@ -603,7 +675,11 @@ HotelTV.api = (function() { /** * HotelTV API ::> update room service carts info - * @param {dictionary} _cart_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _item_id + * @param {number} _quantity + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ UpdateRoomserviceCarts: function(_cart_id, _quantity) { return new Promise((resolve, reject) => { @@ -620,7 +696,10 @@ HotelTV.api = (function() { /** * HotelTV API ::> delete room service carts info - * @param {dictionary} _cart_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _cart_id + * @returns + * null: if _cart_id isn't null it will return specified info with _cart_id + * {dictionary} */ DeleteRoomserviceCarts: function(_cart_id) { return new Promise((resolve, reject) => { @@ -637,7 +716,10 @@ HotelTV.api = (function() { /** * HotelTV API ::> get room service order info - * @param {dictionary} _item_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _item_id + * @returns + * null: if _item_id isn't null it will return specified info with _item_id + * {dictionary} */ GetRoomserviceOrders: function(_item_id) { return new Promise((resolve, reject) => { @@ -653,12 +735,15 @@ HotelTV.api = (function() { /** * HotelTV API ::> order room service - * @param {dictionary} _cart_id if _item_id isn't null it will return specified info with _item_id + * @param {string} _cart_id + * @returns + * null: if _cart_id isn't null it will return specified info with _cart_id + * {dictionary} */ - PutRoomserviceOrders: function(_cart_item) { + PutRoomserviceOrders: function(_cart_id) { return new Promise((resolve, reject) => { let sz_api_url = __apifxn_get_api_url("put_order_roomservice"); - __apifxn_CallCmsApi("POST", `${sz_api_url}`, "PutRoomserviceOrders", _cart_item).then(_result => { + __apifxn_CallCmsApi("POST", `${sz_api_url}`, "PutRoomserviceOrders", _cart_id).then(_result => { //console.log(`Success::>${_result.data}`); resolve(JSON.parse(_result.data)); }).catch(_error => { @@ -668,7 +753,7 @@ HotelTV.api = (function() { }); }, - ReportEvent: function(_arrary_event) { + ReportEvent: function(_arrary_event, _type=null) { let _json_event = { "events": [], }; @@ -677,6 +762,7 @@ HotelTV.api = (function() { _json_event.events.push({ "power": _arrary_event[_evtidx].power, "location": _arrary_event[_evtidx].location, + 'type': _type, "timestamp": Date.now() }) } diff --git a/procentric/application/lib/hoteltv.ui_appfull.js b/procentric/application/lib/hoteltv.ui_appfull.js index c3a663b..9766bff 100755 --- a/procentric/application/lib/hoteltv.ui_appfull.js +++ b/procentric/application/lib/hoteltv.ui_appfull.js @@ -522,6 +522,7 @@ HotelTV.ui_appfull = (function() { 'prev': 1, }, "items": {}, + "stock": {}, } }; } @@ -574,23 +575,431 @@ HotelTV.ui_appfull = (function() { } } + /** + * HotelTV UI[AppFull] Wrapper Function::> Draw amenity feature + */ + function __uifxn_AppFull_DrawAmUserGuide(_action) { + let _state = HotelTV.state; + let _trTbl = HotelTV.translation; + let _opening = HotelTV.opening; + let _aminfo_top = _opening.amenity; + let _aminfo_ctgy = _aminfo_top.menu; + let _elAmPupRoot = $('.popup .amenity'); + let _elAmUGRoot = _elAmPupRoot.children('.use_guide'); + let __status_am_specific = null; + + + try{ + // 어메니티 정보 오브젝트 + _aminfo_top = _opening.amenity; + _aminfo_ctgy = _aminfo_top.menu; + __status_am_specific = _state.hotkey.mm[_aminfo_top.button].status; + let __amctgyIdx = __status_am_specific.category_sel.cur; + let __amctgyItemStatus = __status_am_specific.items[_aminfo_ctgy[__amctgyIdx].name]; + + + if ( _action=="destroy" ){ + if ( _elAmUGRoot.children().length ){ + _elAmUGRoot.children().remove(); + } + return; + } + + switch(_state.menu.stage.cur) + { + case "amenity_ctgy_sel": { + + }break; + } + + switch ( _action ) + { + case "enter": { + } break; + } + }catch(_err){ + console.log(`Fail to draw::> ${_err}`); + } + } + + /** + * HotelTV UI[AppFull] Wrapper Function::> Draw amenity item selection cart ui + */ + function __uifxn_AppFull_DrawAmItemSeletionCart(_action) { + let _state = HotelTV.state; + let _trTbl = HotelTV.translation; + let _opening = HotelTV.opening; + let _carts = HotelTV.carts.amenity; + let _order = HotelTV.orders.amenity; + let _aminfo_top = _opening.amenity; + let _aminfo_ctgy = _aminfo_top.menu; + let _elAmPupRoot = $('.popup .amenity'); + let _elAmCtgyBg = _elAmPupRoot.children('.bg').find('#lst_ctgbg'); + let _elAmCtgyBgFocus = _elAmCtgyBg.find('.owl-item.active.center'); + let _elAmCtgyBgMenuItemWin = _elAmCtgyBgFocus.find('.am_item_sel_win'); + let _elAmCtgyBgMenuItemCartWin = _elAmCtgyBgFocus.find('.am_item_sel_cart_win'); + let _elAmCtgyBgMenuItemCartWinLeft = _elAmCtgyBgMenuItemCartWin.children('.winleft'); + let _elAmCtgyBgMenuItemCartWinRight = _elAmCtgyBgMenuItemCartWin.children('.winright'); + let __status_am_specific = null; + + + const __ifxn_estimateAmCartAmount = function(_item_idx) { + + + } + + + const __ifxn_removeAmSelectedItemCartWinElement = function() { + // Remove All element under winright div + if ( _elAmCtgyBgMenuItemCartWinLeft.children().length ){ + _elAmCtgyBgMenuItemCartWinLeft.children().remove(); + } + + if ( _elAmCtgyBgMenuItemCartWinRight.children().length ){ + _elAmCtgyBgMenuItemCartWinRight.children().remove(); + } + } + + const __ifxn_updateAmCartRecTable = function() { + try{ + let _elAmCtgyBgMenuItemCartLstRecTbl = _elAmCtgyBgMenuItemCartWinRight.children('.cart_table').find('.tbl_record'); + + if ( _elAmCtgyBgMenuItemCartLstRecTbl.length ) + { + // Remove all record under tbl_record + _elAmCtgyBgMenuItemCartLstRecTbl.children().remove(); + + // { + // let _elTBody_ItmesRec = document.createElement('tbody'); + // _elTBody_ItmesRec.setAttribute("id", "record"); + // for (let _j = 1; _j <= _objAm_ctgyItem.length; _j++) { + // let _objChkAvail=null; + // let _objItem = _objAm_ctgyItem[_j]; + + // var _elTr_ItmesRec = document.createElement('tr'); + // var _elDiv_ItmesRec = document.createElement('div'); + // _elDiv_ItmesRec.className = "cartItem"; + // var _elDiv_ItmesRecName = document.createElement('div'); + // _elDiv_ItmesRecName.setAttribute("id", "title"); + // _elDiv_ItmesRecName.textContent = _objItem.title[_state.lang]; + // _elDiv_ItmesRec.appendChild(_elDiv_ItmesRecName); + + // var _elDiv_ItmesRecPrice = document.createElement('div'); + // _elDiv_ItmesRecPrice.setAttribute("id", "quantity"); + // _elDiv_ItmesRecPrice.textContent = _objItem.quantity[_state.lang].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + _aminfo_top.currency[_state.lang]; + // _elDiv_ItmesRec.appendChild(_elDiv_ItmesRecPrice); + + + // var _elDiv_ItmesRecStatus = document.createElement('div'); + // _elDiv_ItmesRecStatus.setAttribute("id", "amount"); + + // _objChkAvail = __uifxn_Utils_CheckAmItemAvailable(_objItem.schedule); + // if(_objChkAvail.result==true){ + // _elDiv_ItmesRecStatus.textContent = _trTbl.ui.amenity.title.orderable[_state.lang]; + // }else{ + // _elDiv_ItmesRec.classList.add("unavailable"); + // if ( _objChkAvail.avail_dtime=="unorderable" ){ + // _elDiv_ItmesRecStatus.textContent = _trTbl.ui.amenity.title.unorderable[_state.lang]; + // }else{ + // _elDiv_ItmesRecStatus.textContent = _objChkAvail.avail_dtime; + // } + // } + // _elDiv_ItmesRec.appendChild(_elDiv_ItmesRecStatus); + // _elTr_ItmesRec.appendChild(_elDiv_ItmesRec); + // _elTBody_ItmesRec.appendChild(_elTr_ItmesRec); + // } + // _elAmCtgyBgMenuItemCartLstRecTbl.appendChild(_elTBody_ItmesRec); + // } + } + + } catch ( _err ){ + console.log(`Fail to update::> ${_err}`); + } + } + + /** + * 주어진 _item_idx 아이탬의 수량 및 금액을 갱신 + * @param {string} _item_idx + * @param {string} _action + */ + const __ifxn_updateAmSelectedItemCartWin = async function(_item_idx, _action) { + let __api_resp_stock = null; + let __selected_item_amount_quantity = 0; + let __selected_item_amount_subTotal = 0; + let __item_info = _aminfo_ctgy[__status_am_specific.category_sel.cur].items[_item_idx+1]; + + let _elDiv_QuntCtrlFrmQuantityValue = _elAmCtgyBgMenuItemCartWinLeft.children('.control').children('.quantity').find('#value_quantity'); + let _elDiv_QuntCtrlFrmAmountValue = _elAmCtgyBgMenuItemCartWinLeft.children('.control').children('.quantity').find('#value_amount'); + + const ___ifxn_checkCartItemExist = function(_object, _itemID) { + for (__j = 1; __j <= _object.length; __j++) { + if (_object[__j].itemId == _itemID) { + return true; + } + } + return false; + } + + /** + * cart 오브젝트에서 해당 item id에 해당하는 수량을 반환. + * 찾지 못하면 1개(디퐅트)를 반환 + * @param {object} _object + * @param {string} _itemID + * @returns + */ + const ___ifxn_getCartItemQuantity = function(_object, _itemID) { + for (__j = 1; __j <= _object.length; __j++) { + if ( _object[__j].id != null ){ + if ( _object[__j].itemId == _itemID ) { + return _object[__j].quantity; + } + } + } + return 1; + } + + const ___ifxn_updateSubTotalAmount = async function(_itemID, _quantityNum) { + let __api_resp = await HotelTV.api.GetAmenityStocks(_itemID, _quantityNum); + if ( __api_resp==null ){ + console.log("error"); + __selected_item_amount_subTotal = "Error"; + } else { + __selected_item_amount_subTotal = __api_resp['amount'][_state.lang].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + _aminfo_top.currency[_state.lang]; + } + + if ( _elDiv_QuntCtrlFrmAmountValue.length ){ + _elDiv_QuntCtrlFrmAmountValue.text(__selected_item_amount_subTotal); + } + } + + // 개수 및 산정 로직 + // i) 현재 카트내에 해당 item id에 해당하는 개수르 구함. + // ii) stock API로 총 비용을 산정 + if ( _action=="build" ){ + __selected_item_amount_quantity = ___ifxn_getCartItemQuantity(_carts.items, __item_info.id); + __status_am_specific.stock[__item_info.id] = {"req_quantity": __selected_item_amount_quantity}; + ___ifxn_updateSubTotalAmount(__item_info.id, __selected_item_amount_quantity); + } else if ( _action=="plus" ){ + __status_am_specific.stock[__item_info.id].req_quantity += 1; + ___ifxn_updateSubTotalAmount(__item_info.id, __status_am_specific.stock[__item_info.id].req_quantity); + } else if ( _action=="minus" ){ + if ( __status_am_specific.stock[__item_info.id].req_quantity>1 ){ + __status_am_specific.stock[__item_info.id].req_quantity -= 1; + ___ifxn_updateSubTotalAmount(__item_info.id, __status_am_specific.stock[__item_info.id].req_quantity); + } + } + + // 개수 및 금액 출력 + if ( _elDiv_QuntCtrlFrmQuantityValue.length ){ + _elDiv_QuntCtrlFrmQuantityValue.text(__status_am_specific.stock[__item_info.id].req_quantity); + } + } + + const __ifxn_buildAmSelectedItemCartWin = function(_item_idx) { + let _sz_styleOpt = null; + let __item_info = _aminfo_ctgy[__status_am_specific.category_sel.cur].items[_item_idx+1]; + + const __iCbfxn_buildAmSelectedItemWin = function() { + // 상품 상세 설명페이지 구성 + __ifxn_removeAmSelectedItemCartWinElement(); + + // Quantity Window + { + //// Quantity Window Title + let _elDiv_QuntWinTitle = document.createElement('div'); + _elDiv_QuntWinTitle.className = "title"; + _elDiv_QuntWinTitle.textContent = _trTbl.ui.amenity.title.selected_menu_quantity[_state.lang].toUpperCase(); + _elAmCtgyBgMenuItemCartWinLeft.append(_elDiv_QuntWinTitle); + + //// Quantity control Frame + var _elDiv_QuntCtrlFrm = document.createElement('div'); + _elDiv_QuntCtrlFrm.className = "control"; + _elDiv_QuntCtrlFrm.innerHTML = `
`; + var _elDiv_QuntCtrlFrmQuantity = document.createElement('div'); + _elDiv_QuntCtrlFrmQuantity.className = "quantity"; + _elDiv_QuntCtrlFrmQuantity.innerHTML = `
${_trTbl.ui.amenity.title.quantity[_state.lang].toUpperCase()}
`; + _elDiv_QuntCtrlFrmQuantity.innerHTML += `
`; + _elDiv_QuntCtrlFrmQuantity.innerHTML += `
${_trTbl.ui.amenity.title.amount[_state.lang].toUpperCase()}
`; + _elDiv_QuntCtrlFrmQuantity.innerHTML += `
`; + _elDiv_QuntCtrlFrm.append(_elDiv_QuntCtrlFrmQuantity); + _elAmCtgyBgMenuItemCartWinLeft.append(_elDiv_QuntCtrlFrm); + + //// Item description + var _elDiv_QuntItemDesc = document.createElement('div'); + _elDiv_QuntItemDesc.className = "description"; + _elDiv_QuntItemDesc.innerHTML = `
${__item_info.title[_state.lang]}
${__item_info.description[_state.lang]}
`; + _elAmCtgyBgMenuItemCartWinLeft.append(_elDiv_QuntItemDesc); + + //// Buttons + var _elDiv_QuntBtnFrm = document.createElement('div'); + _elDiv_QuntBtnFrm.className = "buttons"; + _elDiv_QuntBtnFrm.innerHTML = `
${_trTbl.ui.amenity.title.add_to_cart[_state.lang].toUpperCase()}
`; + _elDiv_QuntBtnFrm.innerHTML += `
${_trTbl.ui.amenity.title.order_now[_state.lang].toUpperCase()}
`; + _elDiv_QuntBtnFrm.innerHTML += `
${_trTbl.ui.amenity.title.back[_state.lang].toUpperCase()}
`; + _elAmCtgyBgMenuItemCartWinLeft.append(_elDiv_QuntBtnFrm); + } + + // CART Window + { + //// Cart Window Title + let _elDiv_CartWinTitle = document.createElement('div'); + _elDiv_CartWinTitle.className = "title"; + _elDiv_CartWinTitle.textContent = _trTbl.ui.amenity.title.cartslist[_state.lang].toUpperCase(); + _elAmCtgyBgMenuItemCartWinRight.append(_elDiv_CartWinTitle); + + //// Cart item table + let _elDiv_CartWinTable = document.createElement('div'); + _elDiv_CartWinTable.className = "cart_table"; + { + ////// ADD Table Header + var _elTbl_ItemsHdr = document.createElement('table'); + _elTbl_ItemsHdr.className = "tbl_header"; + + let _elTBody_ItmesHdr = document.createElement('tbody'); + { + _elTBody_ItmesHdr.setAttribute("id", "hdr"); + + var _elTr_ItmesHdr = document.createElement('tr'); + var _elTh_ItmesHdr_Title = document.createElement('th'); + _elTh_ItmesHdr_Title.setAttribute("id", "title"); + _elTh_ItmesHdr_Title.textContent = _trTbl.ui.amenity.title.item[_state.lang]; + _elTr_ItmesHdr.appendChild(_elTh_ItmesHdr_Title); + + var _elTh_ItmesHdr_Amount = document.createElement('th'); + _elTh_ItmesHdr_Amount.setAttribute("id", "quantity"); + _elTh_ItmesHdr_Amount.textContent = _trTbl.ui.amenity.title.quantity[_state.lang]; + _elTr_ItmesHdr.appendChild(_elTh_ItmesHdr_Amount); + + var _elTh_ItmesHdr_Status = document.createElement('th'); + _elTh_ItmesHdr_Status.setAttribute("id", "amount"); + //toUppderCase() + _elTh_ItmesHdr_Status.textContent = _trTbl.ui.amenity.title.amount[_state.lang]; + _elTr_ItmesHdr.appendChild(_elTh_ItmesHdr_Status); + + _elTBody_ItmesHdr.appendChild(_elTr_ItmesHdr); + } + _elTbl_ItemsHdr.appendChild(_elTBody_ItmesHdr); + _elDiv_CartWinTable.appendChild(_elTbl_ItemsHdr); + + ////// Append item list record + var _elTbl_ItemsRec = document.createElement('table'); + _elTbl_ItemsRec.className = "tbl_record"; + _elDiv_CartWinTable.appendChild(_elTbl_ItemsRec); + + //////// update cart table record + __ifxn_updateAmCartRecTable(); + } + _elAmCtgyBgMenuItemCartWinRight.append(_elDiv_CartWinTable); + + + + //// Quantity Window Title + let _elDiv_CartWinSummary = document.createElement('div'); + _elDiv_CartWinSummary.className = "summary"; + //_elDiv_CartWinSummary.textContent = _trTbl.ui.amenity.title.sum[_state.lang]; + _elAmCtgyBgMenuItemCartWinRight.append(_elDiv_CartWinSummary); + } + } + + _elAmCtgyBgMenuItemWin.fadeOut(200, function() { + __iCbfxn_buildAmSelectedItemWin(); + _elAmCtgyBgMenuItemCartWin.fadeIn(500, function() { + _elAmCtgyBgMenuItemCartWinLeft.find('#btn_back').addClass('focus'); + __ifxn_updateAmSelectedItemCartWin(_item_idx, "build"); + HotelTV.api.ReportEvent([ + { + 'power': true, + 'location':{ + // TODO: 통계 데이터 파라미터 확인해 + 'conId':__item_info.id + } + }], "indirect"); + }); + }); + } + + const __ifxn_removeAmSelectedItemCartWin = function(_item_idx) { + // Remove All element under winleft&winright div + _elAmCtgyBgMenuItemCartWin.fadeOut(200, function() { + __ifxn_removeAmSelectedItemCartWinElement(); + + if ( _elAmCtgyBgMenuItemWin.css('display') == "none") { + _elAmCtgyBgMenuItemWin.fadeIn(500, function() { + }); + } + }); + } + + + try{ + // 어메니티 정보 오브젝트 + _aminfo_top = _opening.amenity; + _aminfo_ctgy = _aminfo_top.menu; + __status_am_specific = _state.hotkey.mm[_aminfo_top.button].status; + let __amctgyIdx = __status_am_specific.category_sel.cur; + let __amctgyItemStatus = __status_am_specific.items[_aminfo_ctgy[__amctgyIdx].name]; + + switch ( _action ) + { + case "cart": { + __ifxn_buildAmSelectedItemCartWin(__amctgyItemStatus.idx); + } break; + + case "left": { + let _str_curBtnID = _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('.focus').attr('id'); + if ( _str_curBtnID=='btn_back' ){ + _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('.focus').removeClass('focus'); + _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('#btn_ordernow').addClass('focus'); + } else if ( _str_curBtnID=='btn_ordernow' ){ + _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('.focus').removeClass('focus'); + _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('#btn_addtocart').addClass('focus'); + } + } break; + + case "right": { + let _str_curBtnID = _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('.focus').attr('id'); + if ( _str_curBtnID=='btn_addtocart' ){ + _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('.focus').removeClass('focus'); + _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('#btn_ordernow').addClass('focus'); + } else if ( _str_curBtnID=='btn_ordernow' ){ + _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('.focus').removeClass('focus'); + _elAmCtgyBgMenuItemCartWinLeft.find('.buttons').find('#btn_back').addClass('focus'); + } + } break; + + case "quantity_plus": { + __ifxn_updateAmSelectedItemCartWin(__amctgyItemStatus.idx, "plus"); + } break; + + case "quantity_minus": { + __ifxn_updateAmSelectedItemCartWin(__amctgyItemStatus.idx, "minus"); + } break; + + case "return": { + __ifxn_removeAmSelectedItemCartWin(); + } break; + } + + }catch(_err){ + console.log(`Fail to draw::> ${_err}`); + } + } + /** * HotelTV UI[AppFull] Wrapper Function::> Draw amenity item selection ui */ function __uifxn_AppFull_DrawAmItemSeletion(_action) { let _state = HotelTV.state; - let __status_am_specific = null; let _trTbl = HotelTV.translation; let _opening = HotelTV.opening; let _order = HotelTV.orders.amenity; let _aminfo_top = _opening.amenity; let _aminfo_ctgy = _aminfo_top.menu; - // let _elMainRoot = $('.main'); - // let _elMainMenu = _elMainRoot.children('.mm'); let _elAmPupRoot = $('.popup .amenity'); let _elAmCtgyBg = _elAmPupRoot.children('.bg').find('#lst_ctgbg'); let _elAmCtgyBgFocus = _elAmCtgyBg.find('.owl-item.active.center'); - let _elAmCtgyBgMenuItemWin = _elAmCtgyBgFocus.find('.am_item_sel_win') + let _elAmCtgyBgMenuItemWin = _elAmCtgyBgFocus.find('.am_item_sel_win'); + let __status_am_specific = null; const __ifxn_updateAmItemDesc = function(_item_idx) { @@ -599,50 +1008,7 @@ HotelTV.ui_appfull = (function() { // Remove All element under winright div let _elDivWinRight = _elAmCtgyBgMenuItemWin.find('.winright'); - if ( _elDivWinRight.css('display') != "none") { - _elDivWinRight.fadeOut(200, function() { - if ( _elDivWinRight.children().length ){ - _elDivWinRight.children().remove(); - } - - //상품 상세 설명페이지 구성 - ////썸네일 - let _elDiv_ItmesThumb = document.createElement('div'); - _elDiv_ItmesThumb.className = "amItemDescThumb"; - //let thuri = __item_info.thumbnail.files[_state.lang].download; - _sz_styleOpt = "background-image: url(" + __item_info.thumbnail.files[_state.lang].download + "); "; - _sz_styleOpt += "background-repeat: no-repeat; background-position: center center; background-size: 100% 100%; "; - _elDiv_ItmesThumb.setAttribute("style", _sz_styleOpt); - - ////상세설명 - let _elDiv_ItmesDetails = document.createElement('div'); - _elDiv_ItmesDetails.className = "amItemDescDetails"; - - var _elDiv_ItmesTitle = document.createElement('div'); - _elDiv_ItmesTitle.setAttribute("id", "title"); - _elDiv_ItmesTitle.textContent = __item_info.title[_state.lang]; - - var _elDiv_ItmesDescription = document.createElement('div'); - _elDiv_ItmesDescription.setAttribute("id", "description"); - _elDiv_ItmesDescription.textContent = __item_info.description[_state.lang]; - //_elDiv_ItmesDescription.textContent = __item_info.description[_state.lang].replace(/(?:\r\n|\r|\n)/g, '
'); - - _elDiv_ItmesDetails.appendChild(_elDiv_ItmesTitle); - _elDiv_ItmesDetails.appendChild(_elDiv_ItmesDescription); - - //winright에 썸네일과 상세설명 추가 - _elDivWinRight.append(_elDiv_ItmesThumb); - _elDivWinRight.append(_elDiv_ItmesDetails); - - - _elDivWinRight.fadeIn(500, function() { - }); - }); - }else{ - if ( _elDivWinRight.children().length ){ - _elDivWinRight.children().remove(); - } - + const __iCbfxn_updateAmItemDesc = function() { //상품 상세 설명페이지 구성 ////썸네일 let _elDiv_ItmesThumb = document.createElement('div'); @@ -671,13 +1037,26 @@ HotelTV.ui_appfull = (function() { //winright에 썸네일과 상세설명 추가 _elDivWinRight.append(_elDiv_ItmesThumb); _elDivWinRight.append(_elDiv_ItmesDetails); + } + if ( _elDivWinRight.css('display') != "none") { + _elDivWinRight.fadeOut(200, function() { + if ( _elDivWinRight.children().length ){ + _elDivWinRight.children().remove(); + } + __iCbfxn_updateAmItemDesc(); + _elDivWinRight.fadeIn(500, function() { + }); + }); + }else{ + if ( _elDivWinRight.children().length ){ + _elDivWinRight.children().remove(); + } + __iCbfxn_updateAmItemDesc(); _elDivWinRight.fadeIn(500, function() { }); } - - } const __ifxn_removeAmItemDesc = function(_item_idx) { @@ -697,9 +1076,7 @@ HotelTV.ui_appfull = (function() { // 어메니티 정보 오브젝트 _aminfo_top = _opening.amenity; _aminfo_ctgy = _aminfo_top.menu; - __status_am_specific = _state.hotkey.mm[_aminfo_top.button].status; - let __amctgyIdx = __status_am_specific.category_sel.cur; let __amctgyItemStatus = __status_am_specific.items[_aminfo_ctgy[__amctgyIdx].name]; @@ -876,10 +1253,11 @@ HotelTV.ui_appfull = (function() { _elDiv_Ctgy.appendChild(_elDiv_CtgyGradientBottom); // ITEM LIST TOP-LEVEL ELEMENTS - let _elDiv_ItemWin = document.createElement('div'); - _elDiv_ItemWin.className = 'am_item_sel_win'; + //// ITEM SELECTION WINDOW + let _elDiv_ItemSelWin = document.createElement('div'); + _elDiv_ItemSelWin.className = 'am_item_sel_win'; { - //Window Left side + ////// Window Left side let _elDiv_ItemWinLeft = document.createElement('div'); _elDiv_ItemWinLeft.className = 'winleft'; @@ -889,7 +1267,7 @@ HotelTV.ui_appfull = (function() { } else { - //ADD Table + ////// ADD Table Header var _elTbl_ItemsHdr = document.createElement('table'); _elTbl_ItemsHdr.className = "tbl_header"; @@ -900,17 +1278,17 @@ HotelTV.ui_appfull = (function() { var _elTr_ItmesHdr = document.createElement('tr'); var _elTh_ItmesHdr_Title = document.createElement('th'); _elTh_ItmesHdr_Title.setAttribute("id", "title"); - _elTh_ItmesHdr_Title.textContent = _trTbl.ui.roomservice.title.item[_state.lang]; + _elTh_ItmesHdr_Title.textContent = _trTbl.ui.amenity.title.item[_state.lang]; _elTr_ItmesHdr.appendChild(_elTh_ItmesHdr_Title); var _elTh_ItmesHdr_Amount = document.createElement('th'); _elTh_ItmesHdr_Amount.setAttribute("id", "price"); - _elTh_ItmesHdr_Amount.textContent = _trTbl.ui.roomservice.title.amount[_state.lang]; + _elTh_ItmesHdr_Amount.textContent = _trTbl.ui.amenity.title.amount[_state.lang]; _elTr_ItmesHdr.appendChild(_elTh_ItmesHdr_Amount); var _elTh_ItmesHdr_Status = document.createElement('th'); _elTh_ItmesHdr_Status.setAttribute("id", "status"); - _elTh_ItmesHdr_Status.textContent = _trTbl.ui.roomservice.title.orderability[_state.lang]; + _elTh_ItmesHdr_Status.textContent = _trTbl.ui.amenity.title.orderability[_state.lang]; _elTr_ItmesHdr.appendChild(_elTh_ItmesHdr_Status); _elTBody_ItmesHdr.appendChild(_elTr_ItmesHdr); @@ -918,7 +1296,7 @@ HotelTV.ui_appfull = (function() { _elTbl_ItemsHdr.appendChild(_elTBody_ItmesHdr); _elDiv_ItemWinLeft.appendChild(_elTbl_ItemsHdr); - // Append item list record + ////// Append item list record var _elTbl_ItemsRec = document.createElement('table'); _elTbl_ItemsRec.className = "tbl_record"; @@ -965,19 +1343,38 @@ HotelTV.ui_appfull = (function() { } _elDiv_ItemWinLeft.appendChild(_elTbl_ItemsRec); } - _elDiv_ItemWin.appendChild(_elDiv_ItemWinLeft); + _elDiv_ItemSelWin.appendChild(_elDiv_ItemWinLeft); - - - - - //Window Right side + ////// Window Right side let _elDiv_ItemWinRight = document.createElement('div'); _elDiv_ItemWinRight.className = 'winright'; - _elDiv_ItemWin.appendChild(_elDiv_ItemWinRight); + _elDiv_ItemSelWin.appendChild(_elDiv_ItemWinRight); } - _elDiv_Ctgy.appendChild(_elDiv_ItemWin); + // _elDiv_Ctgy에 추가 + _elDiv_Ctgy.appendChild(_elDiv_ItemSelWin); + + // Selected Item Cart Window + let _elDiv_SelectedItemWin = document.createElement('div'); + _elDiv_SelectedItemWin.className = 'am_item_sel_cart_win'; + _elDiv_SelectedItemWin.style.display = 'none'; + { + if ( ["ORDER", "CARTS"].includes(_aminfo_ctgy[_idx].name)==false ) + { + ////// Window Left side + let _elDiv_ItemWinCartLeft = document.createElement('div'); + _elDiv_ItemWinCartLeft.className = 'winleft'; + _elDiv_SelectedItemWin.appendChild(_elDiv_ItemWinCartLeft); + + ////// Window Right side + let _elDiv_ItemWinCartRight = document.createElement('div'); + _elDiv_ItemWinCartRight.className = 'winright'; + + _elDiv_SelectedItemWin.appendChild(_elDiv_ItemWinCartRight); + } + } + // _elDiv_Ctgy에 추가 + _elDiv_Ctgy.appendChild(_elDiv_SelectedItemWin); // _elAmCtgyBg에 추가 _elAmCtgyBg.append(_elDiv_Ctgy); @@ -1045,7 +1442,7 @@ HotelTV.ui_appfull = (function() { // 카테고리 화면 빌드 및 화면 전환 _state.menu.stage.cur = "amenity_ctgy_item_sel"; __uifxn_AppFull_DrawAmItemSeletion("enter"); - + __uifxn_AppFull_DrawAmUserGuide(); } else if (event.keyCode == gRmtKey.back) { // 카테고리 폼의 썸네일 에니메이션용 타이머 제거 if (_hndl_tmrAmenityThumbAni != null) { @@ -1092,9 +1489,27 @@ HotelTV.ui_appfull = (function() { } else if (event.keyCode == gRmtKey.down) { __uifxn_AppFull_DrawAmItemSeletion("down"); } else if (event.keyCode == gRmtKey.back) { - console.log('AMENITY CATEGORY ITEM SEL: KEY::> ' + event.keyCode); __uifxn_AppFull_DrawAmItemSeletion("exit"); _state.menu.stage.cur = "amenity_ctgy_sel"; + } else if (event.keyCode == gRmtKey.enter) { + console.log('AMENITY CATEGORY ITEM SEL: KEY::> ' + event.keyCode); + __uifxn_AppFull_DrawAmItemSeletionCart("cart"); + _state.menu.stage.cur = "amenity_ctgy_item_cart"; + } + } else if (_state.menu.stage.cur == "amenity_ctgy_item_cart") { + if (event.keyCode == gRmtKey.left) { + __uifxn_AppFull_DrawAmItemSeletionCart("left"); + } else if (event.keyCode == gRmtKey.right) { + __uifxn_AppFull_DrawAmItemSeletionCart("right"); + } else if (event.keyCode == gRmtKey.up) { + __uifxn_AppFull_DrawAmItemSeletionCart("quantity_plus"); + } else if (event.keyCode == gRmtKey.down) { + __uifxn_AppFull_DrawAmItemSeletionCart("quantity_minus"); + } else if (event.keyCode == gRmtKey.back) { + __uifxn_AppFull_DrawAmItemSeletionCart("return"); + _state.menu.stage.cur = "amenity_ctgy_item_sel"; + } else if (event.keyCode == gRmtKey.enter) { + console.log('AMENITY CATEGORY ITEM SEL: KEY::> ' + event.keyCode); } } else { console.log("AMENITY SLIDER KEYEVT: Skip events"); @@ -1102,6 +1517,7 @@ HotelTV.ui_appfull = (function() { }); //어메니티 카테고리 선택 모드(생성시, 메뉴모드) _state.menu.stage.cur = "amenity_ctgy_sel"; + __uifxn_AppFull_DrawAmUserGuide(); }); }) }); @@ -1168,8 +1584,8 @@ HotelTV.ui_appfull = (function() { } // Draw Titile and message - _elRsOderAlertOrderComplete.children("#title").text(_trTbl.ui.roomservice.title.ordercomplete[_state.lang]); - _elRsOderAlertOrderComplete.children("#message").text(_trTbl.ui.roomservice.usage.orderAlertComplete[_state.lang]); + _elRsOderAlertOrderComplete.children("#title").text(_trTbl.ui.amenity.title.ordercomplete[_state.lang]); + _elRsOderAlertOrderComplete.children("#message").text(_trTbl.ui.amenity.usage.orderAlertComplete[_state.lang]); if (_elRsOderAlertOrderComplete.css('display') == "none") { _elRsOderAlertOrderComplete.show(); diff --git a/procentric/application/theme/HJS00001/hoteltv.app.full.popup.css b/procentric/application/theme/HJS00001/hoteltv.app.full.popup.css index 4705661..9b47a67 100755 --- a/procentric/application/theme/HJS00001/hoteltv.app.full.popup.css +++ b/procentric/application/theme/HJS00001/hoteltv.app.full.popup.css @@ -432,7 +432,7 @@ /******************************************************************************** * AMENITY STYLE [ START HERE] * ********************************************************************************/ -/*[AM1. Amenity bg style ] */ +/*[AM1. Amenity style ] */ .popup .amenity { top: 0px; left: 0px; @@ -447,6 +447,7 @@ padding: 0; } +/*[AM1-1. Amenity bg style ] */ .popup .amenity .bg { position: absolute; top: 0px; @@ -465,11 +466,12 @@ padding: 0; } - +/*[AM1-1-1. Amenity bg: owl style ] */ .popup .amenity .bg .owl-carousel .owl-stage .owl-item { width: 100%; } +/*[AM1-1-1-1. Amenity bg: owl: top gradient style ] */ .popup .amenity .bg .owl-carousel .owl-stage .top_gradient{ top: 0; left: 0; @@ -478,6 +480,7 @@ background: linear-gradient(0deg, rgba(7,8,11,0) 0%, rgba(7,8,11,0.5) 45%, rgba(7,8,11,0.9) 100%); } +/*[AM1-1-1-2. Amenity bg: owl: bottom gradient style ] */ .popup .amenity .bg .owl-carousel .owl-stage .bottom_gradient{ position: absolute; left: 0; @@ -487,7 +490,7 @@ background: linear-gradient(0deg, rgba(7,8,11,0.9) 0%, rgba(7,8,11,0.5) 65%, rgba(7,8,11,0) 100%); } - +/*[AM1-1-1-3. Amenity bg: owl: amenity item sel window ] */ .popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_win { position: absolute; left: 21px; @@ -501,6 +504,7 @@ } .popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_win .winleft { + position: relative; width: 902px; height: 100%; margin: 0; @@ -652,6 +656,7 @@ /**** Amenity Item Description ::> */ .popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_win .winright { + position: relative; width: 902px; height: 740px; margin: 0; @@ -693,6 +698,7 @@ } .popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_win .winright .amItemDescDetails div#description{ + height:174px; line-height: 30px; font-size: 30px; white-space: pre-wrap; @@ -701,10 +707,382 @@ padding: 14px 0px 0px 0px; } +/*[AM1-1-1-4. Amenity bg: owl: selected item cart style window ] */ +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win { + position: absolute; + left: 21px; + top: 207px; + width: 1874px; + height: 740px; + margin: 0; + padding: 0; + /* background: rgba(114,18,22,0.65); */ + display: flex; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft { + position: relative; + width: 902px; + height: 100%; + margin: 0; + padding: 0; + background: rgba(14,18,22,0.8); + margin: 0px 10px 0px 25px; + color: rgb(249, 249, 249); + border-top: 5px solid rgba(121,121,121,1); + border-bottom: 5px solid rgba(121,121,121,1); + /* border-top: 6px solid rgba(218,165,32,1); + border-bottom: 6px solid rgba(218,165,32,1); */ + /* display: none; */ +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.title{ + height: 54px; + width: 96%; + line-height: 54px; + font-size: 44px; + white-space: pre-wrap; + text-overflow: ellipsis; + overflow: hidden; + border-bottom: 4px solid rgb(235,235,235); + filter: drop-shadow(0 0 5px rgb(0, 0, 0)); + margin: 10px 2% 0px 2%; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.control{ + position: relative; + height: 254px; + width: 96%; + padding: 20px 2% 20px 2%; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.control #img_thumbnail{ + width: 42%; + height: 228px; + background-repeat: no-repeat; + background-position: center center; + background-size: contain; + float: left; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.control>.quantity{ + height: 228px; + width: 58%; + display: flex; + float: left; + flex-direction: row; + flex-wrap: wrap; + padding: 0px 30px 0px 30px; + overflow: hidden; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.control #lable_quantity{ + line-height: 137px; + width: 50%; + height: 60%; + font-size: 38px; + text-align: center; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.control #value_quantity{ + line-height: 137px; + width: 50%; + height: 60%; + font-size: 52px; + text-align: center; + color: rgba(218,165,32,1.0); + background-image: url(./images/quantity_edit_arrow.png); + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.control #lable_amount{ + line-height: 91px; + width: 50%; + height: 40%; + font-size: 38px; + text-align: center; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.control #value_amount{ + line-height: 91px; + width: 50%; + height: 40%; + font-size: 52px; + text-align: center; + color: rgba(218,165,32,1.0); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.description{ + height: 316px; + width: 100%; + padding: 20px 2% 20px 2%; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.description>#title{ + height: 54px; + width: 100%; + line-height: 54px; + font-size: 44px; + white-space: pre-wrap; + text-overflow: ellipsis; + overflow: hidden; + border-bottom: 4px solid rgb(235,235,235); + filter: drop-shadow(0 0 5px rgb(0, 0, 0)); +} +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.description>#details{ + /* height:174px; */ + line-height: 30px; + font-size: 30px; + white-space: pre-wrap; + text-overflow: ellipsis; + overflow: hidden; + padding: 14px 0px 0px 0px; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.buttons{ + line-height: 65px; + height: 65px; + width: 100%; + display: flex; + float: left; + flex-direction: row; + flex-wrap: nowrap; + padding: 0px 30px 0px 30px; + overflow: hidden; + text-align: center; + font-size: 32px; + color: rgba(51,51,51,1.0); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.buttons>div{ + border-radius: 14px; + background-color: rgba(255,255,255,1.0); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.buttons>div.focus{ + /*border: 8px solid rgba(218,165,32,1.0); */ + /* color: rgba(0,0,0,1); */ + /* background-color: rgba(218,165,32,1.0); */ + background-color: rgba(173,255,47,1.0); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.buttons #btn_addtocart{ + /* border-radius: 14px; */ + /* background-color: rgba(255,255,255,1.0); */ + margin: 0px 20px 0px 0px; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.buttons #btn_ordernow{ + /* border-radius: 14px; */ + /* background-color: rgba(255,255,255,1.0); */ + margin: 0px 20px 0px 20px; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winleft>.buttons #btn_back{ + /* border-radius: 14px; */ + /* background-color: rgba(255,255,255,1.0); */ + margin: 0px 0px 0px 20px; +} -/** Amenity slider style */ +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright { + position: relative; + width: 902px; + height: 740px; + margin: 0; + padding: 0; + background: rgba(14,18,22,0.8); + margin: 0px 25px 0px 10px; + color: rgb(249, 249, 249); + border-top: 5px solid rgba(121,121,121,1); + border-bottom: 5px solid rgba(121,121,121,1); + /* border-top: 6px solid rgba(218,165,32,1); + border-bottom: 6px solid rgba(218,165,32,1); */ + /* display: none; */ +} + + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.title{ + height: 54px; + width: 96%; + line-height: 54px; + font-size: 44px; + white-space: pre-wrap; + text-overflow: ellipsis; + overflow: hidden; + border-bottom: 4px solid rgb(235,235,235); + filter: drop-shadow(0 0 5px rgb(0, 0, 0)); + margin: 10px 2% 0px 2%; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table{ + position: relative; + height: 550px; + width: 100%; + padding: 20px 2% 20px 2%; +} + + + + + +/**** Amenity Category item ::> Table Header */ +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_header { + width:100%; + line-height: 54px; + font-size: 30px; + text-align: center; + /* margin: 5px 0 15px 0; */ + border-bottom: 4px solid rgba(121,121,121,1); + /* border-top: 2px solid rgba(121,121,121,1); */ +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_header tbody tr { + height: 54px; + max-height: 54px; + background-color: rgba(21, 27, 34, 1); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_header tbody tr>#title { + width: 50%; + float: left; + /* text-align: left; */ + padding: 0 0px 0 80px; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_header tbody tr>#quantity { + width: 25%; + float: left; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_header tbody tr>#amount { + width: 25%; + float: left; + padding: 0px 30px 0 0px; +} + + +/**** Amenity Category item ::> Table Recored */ +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record { + /* height: 284px;*/ + width:100%; + line-height: 54px; + font-size: 30px; + text-align: center; + /* margin: 5px 0 15px 0; */ +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody { + /* height: 285px; */ + overflow-y: auto; + display: block; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody tr { + /* height: 52px; */ + display: block; + background-color: rgba(36, 45, 57, 1); +} + + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody tr>.cartItem { + height: 52px; + width: 100%; + font-size: 30px; + /* line-height: 54px; */ + border-bottom: 2px solid rgb(21, 27, 34); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody tr>.cartItem.focus { + /* border-bottom: 2px solid rgb(255, 192, 0); */ + border-bottom: 2px solid rgb(173, 255, 47); + background: rgba(29,36,47,1.0); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody tr>.cartItem.unavailable { + /* border-bottom: 2px solid rgb(255, 192, 0); */ + background: rgba(21,27,34,1.0); + color: rgb(121, 121, 121); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody tr>.cartItem.focus.unavailable { + /* border-bottom: 2px solid rgb(255, 192, 0); */ + border-bottom: 2px solid rgb(173, 255, 47); + background: rgba(21,27,34,1.0); + color: rgb(121, 121, 121); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody tr>.cartItem>#title { + width: 50%; + float: left; + padding: 0px 0px 0px 20px; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody tr>.cartItem>#quantity { + width: 20%; + float: left; + text-align: center; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record tbody tr>.cartItem>#amount { + width: 30%; + float: left; + /* text-align: right; */ + padding: 0px 30px 0 0px; +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record ::-webkit-scrollbar { + display: block; + width: 20px; + /* 세로축 스크롤바 길이 */ + height: 20px; + /* 가로축 스크롤바 길이 */ +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record ::-webkit-scrollbar-track { + background-color: rgb(67, 82, 105); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record ::-webkit-scrollbar-track-piece { + background-color: rgb(80, 98, 124); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record ::-webkit-scrollbar-thumb { + border-radius: 8px; + background-color: rgb(51, 63, 80); +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record ::-webkit-scrollbar-button:start { + display: none; + /* background-color: orange; */ + /* Top, Left 방향의 이동버튼 */ +} + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.cart_table>.tbl_record ::-webkit-scrollbar-button:end { + display: none; + /* background-color: orange; */ + /* Bottom, Right 방향의 이동버튼 */ +} + + + + + + + +.popup .amenity .bg .owl-carousel .owl-stage .am_item_sel_cart_win .winright>.summary{ + position: relative; + height: 65px; + width: 96%; + padding: 20px 2% 20px 2%; + /* background: blue; */ +} + +/********************************************************************************/ +/*[AM2. Amenity slider style ] */ .popup .amenity .slider { position: absolute; top: 60px; @@ -821,6 +1199,69 @@ padding: 0; } + + +/*[AMx. Amenity cart style ] */ +.popup .amenity>div.cart { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 946px; + padding: 0px; + overflow: hidden; + display: none; + background: rgba(0,0,0,0.7); + z-index: 1; +} + +.popup .amenity>div.cart>div { + top: 60px; + left: 0px; + width: 100%; + height: 100%; + display: flex; + /* background: rgba(1,1,1,1.0); */ +} + +.popup .amenity>div.cart .menu { + width: 902px; + height: 876px; + margin: 0px 37px 0px 21px; + display: block; + /* background: rgba(100,1,1,1.0); */ +} + +.popup .amenity>div.cart .items { + width: 902px; + height: 876px; + margin: 0px 37px 0px 21px; + display: block; + /* background: rgba(100,1,1,1.0); */ +} + +.popup .amenity>div.cart .menu div#title { + +} + +.popup .amenity>div.cart .menu div#control { + +} + +.popup .amenity>div.cart .menu div#control #thumb { + +} + +.popup .amenity>div.cart .menu div#control #quantity { + +} + +.popup .amenity>div.cart .menu div#description { + +} + + + /********************************************************************************/ /* AMENITY STYLE [ END ] */ /********************************************************************************/ diff --git a/procentric/application/theme/HJS00001/images/quantity_edit_arrow.png b/procentric/application/theme/HJS00001/images/quantity_edit_arrow.png new file mode 100755 index 0000000..375f0e3 Binary files /dev/null and b/procentric/application/theme/HJS00001/images/quantity_edit_arrow.png differ