issue #11 Done amenity cart scrolling function on category item selection popup.
This commit is contained in:
@@ -753,6 +753,11 @@ HotelTV.api = (function() {
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 통계데이터 발송 API
|
||||
* @param {array} _arrary_event
|
||||
* @param {string} _type : 어메니티&룸서비스의 경우, "indirect" 그외는 null
|
||||
*/
|
||||
ReportEvent: function(_arrary_event, _type=null) {
|
||||
let _json_event = {
|
||||
"events": [],
|
||||
|
||||
@@ -117,7 +117,7 @@ HotelTV.ui_appfull = (function() {
|
||||
}else if ( ___schedule_day_obj.date.mode=="between" ){
|
||||
var _from = new Date(___schedule_day_obj.date.start).getTime();
|
||||
var _to = new Date(___schedule_day_obj.date.end).getTime();
|
||||
if(___curDayTime.getTime() >= _from && today <= _to) {
|
||||
if(___curDayTime.getTime() >= _from && ___curDayTime.getTime() <= _to) {
|
||||
return true;
|
||||
}
|
||||
_result.avail_dtime = `${___schedule_day_obj.date.start}~${___schedule_day_obj.date.end}`;
|
||||
@@ -130,15 +130,16 @@ HotelTV.ui_appfull = (function() {
|
||||
let __month = ___curDayTime.getMonth() + 1;
|
||||
let __year = ___curDayTime.getFullYear();
|
||||
|
||||
let _str_startTime = `${__day}/${__month}/${__year} ${___schedule_day_obj.time.start}`;
|
||||
let _str_endTime = `${__day}/${__month}/${__year} ${___schedule_day_obj.time.end}`;
|
||||
let _str_datePrefix = [__year, '-', (__month>9 ? '' : '0') + __month, '-', (__day>9 ? '' : '0') + __day].join('');
|
||||
let _str_startTime = `${_str_datePrefix}T${___schedule_day_obj.time.start}`;
|
||||
let _str_endTime = `${_str_datePrefix}T${___schedule_day_obj.time.end}`;
|
||||
|
||||
if ( ___schedule_day_obj.time.mode=="always" ){
|
||||
return true;
|
||||
}else if ( ___schedule_day_obj.time.mode=="between" ){
|
||||
var _from = new Date(_str_startTime).getTime();
|
||||
var _to = new Date(_str_endTime).getTime();
|
||||
if(___curDayTime.getTime() >= _from && today <= _to) {
|
||||
if(___curDayTime.getTime() >= _from && ___curDayTime.getTime() <= _to) {
|
||||
_result.result = true;
|
||||
return true;
|
||||
}
|
||||
@@ -650,6 +651,29 @@ HotelTV.ui_appfull = (function() {
|
||||
let __status_am_specific = null;
|
||||
|
||||
|
||||
/**
|
||||
* CART에 _itemID에 해당하는 항목이 있는지 검사
|
||||
* @param {object} _objCart
|
||||
* @param {string} _itemID
|
||||
* @returns
|
||||
*/
|
||||
const __ifxn_checkCartItemExist = function(_objCart, _itemID) {
|
||||
for (__j = 1; __j <= _objCart.length; __j++) {
|
||||
if ( _objCart[__j].id!=null && _objCart[__j].itemId == _itemID ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
const __ifxn_getCartIdbyItemID = function(_objCart, _itemID) {
|
||||
for (__j = 1; __j <= _objCart.length; __j++) {
|
||||
if ( _objCart[__j].id!=null && _objCart[__j].itemId == _itemID ) {
|
||||
return _objCart[__j].id;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* order/add to cart/back중 포커스 된 버턴의 ID를 반환
|
||||
@@ -670,6 +694,10 @@ HotelTV.ui_appfull = (function() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 어메니티 카트 테이블 갱신
|
||||
* @returns
|
||||
*/
|
||||
const __ifxn_updateAmCartRecTable = function() {
|
||||
try{
|
||||
const __ifxn_getValidCartItemCount = function(_cartObj) {
|
||||
@@ -721,13 +749,17 @@ HotelTV.ui_appfull = (function() {
|
||||
|
||||
var _elDiv_CartItmesRecPrice = document.createElement('div');
|
||||
_elDiv_CartItmesRecPrice.setAttribute("id", "amount");
|
||||
_elDiv_CartItmesRecPrice.textContent = _objCartItem.price[_state.lang].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + _aminfo_top.currency[_state.lang];
|
||||
_elDiv_CartItmesRecPrice.textContent = _objCartItem.amount[_state.lang].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + _aminfo_top.currency[_state.lang];
|
||||
_elDiv_CartItmesRec.appendChild(_elDiv_CartItmesRecPrice);
|
||||
|
||||
_elTr_CartItmesRec.appendChild(_elDiv_CartItmesRec);
|
||||
_elTBody_ItmesRec.appendChild(_elTr_CartItmesRec);
|
||||
}
|
||||
_elAmCtgyBgMenuItemCartLstRecTbl.append(_elTBody_ItmesRec);
|
||||
|
||||
// 전체 금액 갱신
|
||||
let _elAmCtgyBgMenuItemCartTotalAmountValue = _elAmCtgyBgMenuItemCartWinRight.find('.summary').children('#value');
|
||||
_elAmCtgyBgMenuItemCartTotalAmountValue.text(_carts.amount[_state.lang].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + _aminfo_top.currency[_state.lang]);
|
||||
}
|
||||
} catch ( _err ){
|
||||
console.log(`Fail to update::> ${_err}`);
|
||||
@@ -747,15 +779,6 @@ HotelTV.ui_appfull = (function() {
|
||||
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개(디퐅트)를 반환
|
||||
@@ -796,8 +819,10 @@ HotelTV.ui_appfull = (function() {
|
||||
__status_am_specific.stock[_aminfo_item.id] = {"req_quantity": __selected_item_amount_quantity};
|
||||
___ifxn_updateSubTotalAmount(_aminfo_item.id, __selected_item_amount_quantity);
|
||||
} else if ( _action=="plus" ){
|
||||
__status_am_specific.stock[_aminfo_item.id].req_quantity += 1;
|
||||
___ifxn_updateSubTotalAmount(_aminfo_item.id, __status_am_specific.stock[_aminfo_item.id].req_quantity);
|
||||
if ( __status_am_specific.stock[_aminfo_item.id].req_quantity<_aminfo_item.limitation.max ){
|
||||
__status_am_specific.stock[_aminfo_item.id].req_quantity += 1;
|
||||
___ifxn_updateSubTotalAmount(_aminfo_item.id, __status_am_specific.stock[_aminfo_item.id].req_quantity);
|
||||
}
|
||||
} else if ( _action=="minus" ){
|
||||
if ( __status_am_specific.stock[_aminfo_item.id].req_quantity>1 ){
|
||||
__status_am_specific.stock[_aminfo_item.id].req_quantity -= 1;
|
||||
@@ -915,7 +940,8 @@ HotelTV.ui_appfull = (function() {
|
||||
//// Quantity Window Title
|
||||
let _elDiv_CartWinSummary = document.createElement('div');
|
||||
_elDiv_CartWinSummary.className = "summary";
|
||||
//_elDiv_CartWinSummary.textContent = _trTbl.ui.amenity.title.sum[_state.lang];
|
||||
_elDiv_CartWinSummary.innerHTML = `<div id="lable">${_trTbl.ui.amenity.title.sum[_state.lang].toUpperCase()}</div>`;
|
||||
_elDiv_CartWinSummary.innerHTML += `<div id="value">${_carts.amount[_state.lang].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + _aminfo_top.currency[_state.lang]}</div>`;
|
||||
_elAmCtgyBgMenuItemCartWinRight.append(_elDiv_CartWinSummary);
|
||||
}
|
||||
}
|
||||
@@ -932,7 +958,6 @@ HotelTV.ui_appfull = (function() {
|
||||
{
|
||||
'power': true,
|
||||
'location':{
|
||||
// TODO: 통계 데이터 파라미터 확인해
|
||||
'conId':_aminfo_item.id
|
||||
}
|
||||
}], "indirect");
|
||||
@@ -952,22 +977,53 @@ HotelTV.ui_appfull = (function() {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const __ifxn_processAmAddtoCart = async function(_item_idx, _new_quantity, _cbFxn_Success, _cbFxn_Failure) {
|
||||
/**
|
||||
* 어메니티 상품을 쇼핑카트에 추가
|
||||
* @param {object} _am_itemInf
|
||||
* @param {number} _new_quantity
|
||||
* @param {callback} _cbFxn_Success
|
||||
* @param {callback} _cbFxn_Failure
|
||||
*/
|
||||
const __ifxn_processAmAddtoCart = async function(_am_itemInf, _new_quantity, _cbFxn_Success, _cbFxn_Failure) {
|
||||
try {
|
||||
console.log("_item_idx:" + _item_idx);
|
||||
console.log("_new_quantity:" + _new_quantity);
|
||||
|
||||
// let _result = await HotelTV.api.PutAmenityCarts(_item_idx, _new_quantity);
|
||||
// if (_result) {
|
||||
// if (_cbFxn_Success) {
|
||||
// _cbFxn_Success();
|
||||
// }
|
||||
// } else {
|
||||
// if (_cbFxn_Failure) {
|
||||
// _cbFxn_Failure();
|
||||
// }
|
||||
// }
|
||||
if ( __ifxn_checkCartItemExist(_carts.items, _am_itemInf.id)==true )
|
||||
{
|
||||
// Modify API
|
||||
let _result = await HotelTV.api.UpdateAmenityCarts(__ifxn_getCartIdbyItemID(_carts.items, _am_itemInf.id), _new_quantity);
|
||||
if (_result) {
|
||||
console.log(`Amenity Update cart successed::> ${_am_itemInf.id} ::> ${_am_itemInf.name}`);
|
||||
if (_cbFxn_Success) {
|
||||
HotelTV.carts.amenity = _carts = await HotelTV.api.GetAmenityCarts(null);
|
||||
__ifxn_updateAmCartRecTable();
|
||||
_cbFxn_Success();
|
||||
}
|
||||
} else {
|
||||
console.log(`Amenity Update cart failed::> ${_am_itemInf.id} ::> ${_am_itemInf.name}`);
|
||||
if (_cbFxn_Failure) {
|
||||
_cbFxn_Failure();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Put API
|
||||
let _result = await HotelTV.api.PutAmenityCarts(_am_itemInf.id, _new_quantity);
|
||||
if (_result) {
|
||||
console.log(`Amenity Add to cart successed::> ${_am_itemInf.id} ::> ${_am_itemInf.name}`);
|
||||
if (_cbFxn_Success) {
|
||||
HotelTV.carts.amenity = _carts = await HotelTV.api.GetAmenityCarts(null);
|
||||
__ifxn_updateAmCartRecTable();
|
||||
_cbFxn_Success();
|
||||
}
|
||||
} else {
|
||||
console.log(`Amenity Add to cart failed::> ${_am_itemInf.id} ::> ${_am_itemInf.name}`);
|
||||
if (_cbFxn_Failure) {
|
||||
_cbFxn_Failure();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch ( _err ){
|
||||
console.log(`Fail to call API::> ${_err}`);
|
||||
}
|
||||
@@ -1028,13 +1084,51 @@ HotelTV.ui_appfull = (function() {
|
||||
__ifxn_updateAmSelectedItemCartWin(__amctgyItemStatus.idx, "minus");
|
||||
} break;
|
||||
|
||||
case "cart_scroll_up": {
|
||||
let _elDiv_AmCtgyCartRecTable = _elAmCtgyBgMenuItemCartWinRight.find('.tbl_record').children('#record');
|
||||
if ( _elDiv_AmCtgyCartRecTable.children().length>0 ){
|
||||
let _heightTable = _elDiv_AmCtgyCartRecTable.outerHeight(true); // passing "true" will also include the top and bottom margin
|
||||
let _numTrHeight = _elDiv_AmCtgyCartRecTable.find('tr').first().height(); //테이블 레코드 1줄 높이
|
||||
let _posFirstTr = _elDiv_AmCtgyCartRecTable.find('tr').first().position();
|
||||
let _posLastTr = _elDiv_AmCtgyCartRecTable.find('tr').last().position();
|
||||
|
||||
if ( _posFirstTr.top<0 ){
|
||||
_elDiv_AmCtgyCartRecTable.animate({ scrollTop: _posFirstTr.top-_numTrHeight}, 200);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
case "cart_scroll_down": {
|
||||
let _elDiv_AmCtgyCartRecTable = _elAmCtgyBgMenuItemCartWinRight.find('.tbl_record').children('#record');
|
||||
if ( _elDiv_AmCtgyCartRecTable.children().length>0 ){
|
||||
const ___ifxn_calScrollTopOffset = function(){
|
||||
let neededScrollRowCnt = 1;
|
||||
for (__kk = 0; __kk < _elDiv_AmCtgyCartRecTable.children().length; __kk++) {
|
||||
if ( _elDiv_AmCtgyCartRecTable.children().eq(__kk).position().top>_numTrHeight ){
|
||||
break;
|
||||
}
|
||||
neededScrollRowCnt ++;
|
||||
}
|
||||
return neededScrollRowCnt*_numTrHeight;
|
||||
}
|
||||
let _heightTable = _elDiv_AmCtgyCartRecTable.outerHeight(true); // passing "true" will also include the top and bottom margin
|
||||
let _numTrHeight = _elDiv_AmCtgyCartRecTable.find('tr').first().height(); //테이블 레코드 1줄 높이
|
||||
let _posFirstTr = _elDiv_AmCtgyCartRecTable.find('tr').first().position();
|
||||
let _posLastTr = _elDiv_AmCtgyCartRecTable.find('tr').last().position();
|
||||
|
||||
if ( _posLastTr.top > _heightTable ){
|
||||
_elDiv_AmCtgyCartRecTable.animate({ scrollTop: ___ifxn_calScrollTopOffset()}, 200);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
||||
case "enter": {
|
||||
if ( _str_curBtnID=='btn_ordernow' ){
|
||||
console.log("TODO::>> ORDERING NOW...");
|
||||
} else if ( _str_curBtnID=='btn_addtocart' ){
|
||||
//console.log("TODO::>> ADD TO CART NOW...");
|
||||
__ifxn_processAmAddtoCart(
|
||||
__amctgyItemStatus.idx,
|
||||
_aminfo_item,
|
||||
__status_am_specific.stock[_aminfo_item.id].req_quantity,
|
||||
function() {
|
||||
|
||||
@@ -1190,7 +1284,6 @@ HotelTV.ui_appfull = (function() {
|
||||
|
||||
// 테이블 ROW인덱스와 스크롤 OFFSET계산
|
||||
__amctgyItemStatus.idx = _elTblTr_AmItemNext.prop('rowIndex');
|
||||
//__amctgyItemStatus.scroll_TOfset = __amctgyItemStatus.idx*_elTblTr_AmItemNext.prop('scrollHeight');
|
||||
__amctgyItemStatus.scroll_TOfset += _elTblTr_AmItemNext.prop('scrollHeight');
|
||||
|
||||
//스크롤 에니메이션 수행
|
||||
@@ -1221,7 +1314,6 @@ HotelTV.ui_appfull = (function() {
|
||||
|
||||
// 테이블 ROW인덱스와 스크롤 OFFSET계산
|
||||
__amctgyItemStatus.idx = _elTblTr_AmItemNext.prop('rowIndex');
|
||||
//__amctgyItemStatus.scroll_TOfset = __amctgyItemStatus.idx*_elTblTr_AmItemNext.prop('scrollHeight');
|
||||
__amctgyItemStatus.scroll_TOfset += _elTblTr_AmItemNext.prop('scrollHeight');
|
||||
|
||||
//스크롤 에니메이션 수행
|
||||
@@ -1259,15 +1351,6 @@ HotelTV.ui_appfull = (function() {
|
||||
let _elAmCtgyBg = _elAmPupRoot.children('.bg').find('#lst_ctgbg');
|
||||
let _elAmCtgySel = _elAmPupRoot.children('.slider').find('#lst_ctgsel');
|
||||
|
||||
const __ifxn_getRsItemValue = function(_object, _key, _itemID) {
|
||||
for (__j = 1; __j <= _object.length; __j++) {
|
||||
if (_object[__j].id == _itemID) {
|
||||
return _object[__j][_key];
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
// 어메니티 인포 Validation
|
||||
if (!_opening.amenity) {
|
||||
@@ -1319,7 +1402,11 @@ HotelTV.ui_appfull = (function() {
|
||||
if ( !(_aminfo_ctgy[_idx].name in __status_am_specific.items)==true ){
|
||||
__status_am_specific.items[_aminfo_ctgy[_idx].name] = {
|
||||
"idx": 0,
|
||||
"scroll_TOfset": 0
|
||||
"scroll_TOfset": 0,
|
||||
"carts": {
|
||||
"idx": 0,
|
||||
"scroll_TOfset": 0
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1605,6 +1692,10 @@ HotelTV.ui_appfull = (function() {
|
||||
__uifxn_AppFull_DrawAmItemSeletionCart("quantity_plus");
|
||||
} else if (event.keyCode == gRmtKey.down) {
|
||||
__uifxn_AppFull_DrawAmItemSeletionCart("quantity_minus");
|
||||
} else if (event.keyCode == gRmtKey.chup) {
|
||||
__uifxn_AppFull_DrawAmItemSeletionCart("cart_scroll_up");
|
||||
} else if (event.keyCode == gRmtKey.chdown) {
|
||||
__uifxn_AppFull_DrawAmItemSeletionCart("cart_scroll_down");
|
||||
} else if (event.keyCode == gRmtKey.back) {
|
||||
__uifxn_AppFull_DrawAmItemSeletionCart("return", function() {
|
||||
_state.menu.stage.cur = "amenity_ctgy_item_sel";
|
||||
|
||||
Reference in New Issue
Block a user