web/nexacro

[nexacro]공지팝업 localStorage 이용하기

내가 만드는게 길이 된다 2023. 12. 26. 12:34
//Util.js

// var parmObj = {
// 	id:"DZZ_POP1_331", //POP_ID + SEQ
// 	val:"331", //공자사항 SEQ
// 	expireDate:{
// 		yy:2024, 
// 		mm:12, 
// 		dd:28,
// 		hh:1,
// 		mi:59,
// 		ss:59
// 	}
// };
pForm.gfnSetLocalStorage = function(parmObj) {  

	let expireDate = parmObj.expireDate;
	let mm = parseInt(expireDate.mm - 1);
	let objDate = new Date(expireDate.yy, mm, expireDate.dd, expireDate.hh, expireDate.mi, expireDate.ss, 0);
	let s = this.gfnGetDateByType(objDate, "milli");
	let objStorage = {    
		value : parmObj.val,    
		expire : s,
		stopToday : parmObj.stopToday
	}   

	window.localStorage.setItem(parmObj.id, JSON.stringify(objStorage));
} 

pForm.gfnSetTodayStop = function(id) {  
	
	let sStorage = window.localStorage.getItem(id);   
	let objStorage = JSON.parse(sStorage); 
	
	objStorage.stopToday = this.gfnGetDateByType(new Date(), "date");

	window.localStorage.setItem(id, JSON.stringify(objStorage));
} 

pForm.gfnClearTodayStop = function(id) { 
	
// 	var sStorage = window.localStorage.getItem(id);   
// 	const objStorage = JSON.parse(sStorage); 
// 	
// 	objStorage.stopToday = null;
// 	
// 	console.log("clearTodayStop", JSON.stringify(objStorage));
// 
// 	window.localStorage.setItem(id, JSON.stringify(objStorage));

	window.localStorage.removeItem(id);
} 


// var parmObj = {
// 	id:"DZZ_POP1_331", //POP_ID + SEQ
// 	val:"331", //공자사항 SEQ
// 	expireDate:{
// 		yy:2024, 
// 		mm:12, 
// 		dd:28,
// 		hh:1,
// 		mi:59,
// 		ss:59
// 	}
// };

pForm.gfnIsNotiOpenOk = function(parmObj){
	let bFlag = false;
	
	let now = this.gfnGetDateByType(new Date(), "milli");
	let sStorage = window.localStorage.getItem(parmObj.id); 
	console.log("now=========================>", now);
	console.log("sStorage===============>", sStorage);
	
	let expireDate = parmObj.expireDate;
	let objDate = new Date(expireDate.yy, parseInt(expireDate.mm - 1), expireDate.dd, expireDate.hh, expireDate.mi, expireDate.ss, 0);
	let newReqExpire = this.gfnGetDateByType(objDate, "milli");
	
	console.log("newReqExpire===============>", newReqExpire);
	
	if(now > newReqExpire ){
		bFlag = false;
		console.log("(1)===============>", "이미 expire 된 공지가 호출");
		
		if(sStorage != null && sStorage != undefined){
			window.localStorage.removeItem(parmObj.id);
			console.log("(1)===============>", "이미 expire 된 공지 remove");
		}
		return bFlag;
	}
	

	if(sStorage == null || sStorage == undefined){
		console.log("(2)===============>", "최초세팅(공지오픈)");
		parmObj.stopToday = null;
		this.gfnSetLocalStorage(parmObj);
		bFlag = true;
	}
	else{
	
		let rtnObj = JSON.parse(sStorage);
		let today = this.gfnGetDateByType(new Date(), "date");
		console.log("(2)===============>rtnObj.expire", rtnObj.expire);
		
		if( newReqExpire != rtnObj.expire){
			console.log("(2)===============>", "expire 다시 세팅(공지오픈)");
			parmObj.stopToday = null;
			this.gfnSetLocalStorage(parmObj);
			bFlag = true;
		}
		else{		
		
			if(now > rtnObj.expire) {    
				console.log("(2)===============>", "expire 됨(오픈안됨)");
				window.localStorage.removeItem(parmObj.id);
				console.log("(2)===============>", "이미 expire 된 공지 remove");				
				bFlag = false;
			}else{
				if(rtnObj.stopToday != null && rtnObj.stopToday == today){
					console.log("(2)===============>", "오늘은 그만(오픈안됨)");
					bFlag = false;
				}else{
					console.log("(2)===============>", "(공지오픈)");
					bFlag = true;
				}
			}
		}
	}
	
	
	return bFlag;
}


pForm.gfnGetDateByType = function(d, sGubn) {
	if(sGubn == null || sGubn == undefined) sGubn = "date";
	
	//var d = new Date();
	
	let s;
	
	if (sGubn == "date") {
		s = d.getFullYear()
			  + ((d.getMonth() + 1) + "").padLeft(2, '0')
			  + (d.getDate() + "").padLeft(2, '0');
	}
	else if (sGubn == "time") {
		s = d.getFullYear()
	      + ((d.getMonth() + 1) + "").padLeft(2, '0')
	      + (d.getDate() + "").padLeft(2, '0')
	      + (d.getHours() + "").padLeft(2, '0')
	      + (d.getMinutes() + "").padLeft(2, '0')
	      + (d.getSeconds() + "").padLeft(2, '0');
	}
	else if (sGubn == "milli") {
		s = d.getFullYear()
	      + ((d.getMonth() + 1) + "").padLeft(2, '0')
	      + (d.getDate() + "").padLeft(2, '0')
	      + (d.getHours() + "").padLeft(2, '0')
	      + (d.getMinutes() + "").padLeft(2, '0')
	      + (d.getSeconds() + "").padLeft(2, '0')
		  + (d.getMilliseconds() + "").padLeft(3, '0');
	}
	return (s);
};

//** 넥사크로함수이용시
//nexacro.setPrivateProfile( "popupStopYN", "Y" );
//nexacro.getPrivateProfile( "popupStopYN" );
//nexacro.removePrivateProfile( "popupStopYN" );
//공지팝업 오픈 하는곳

this.div_srch_Button02_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	
	var parmObj = {
		id:"DZZ_POP1_331", //POP_ID + SEQ
		val:"331", //공자사항 SEQ
		expireDate:{
			yy:2024, 
			mm:12, 
			dd:28,
			hh:1,
			mi:59,
			ss:59
		}
	};
	
	var bOpenOk = this.gfnIsNotiOpenOk(parmObj); 
	
	if(bOpenOk){
		this.fnPopup("DZZ_POP1");
	}
};

this.fnPopup = function(id){
	if(id == "DZZ_POP1"){
		var objChildFrame = new ChildFrame();  
		var objParentFrame = this.getOwnerFrame();
		objChildFrame.init("childframe00", 0, 0, 300, 300, null, null);
		objChildFrame.set_formurl( "ztblm::DZZ_POP1.xfdl" );
		objChildFrame.set_border("1px solid #999999");
		objChildFrame.set_showstatusbar(true);
		objChildFrame.set_openalign('center middle');
		objChildFrame.set_resizable(true);
		objChildFrame.set_overlaycolor("rgba(255,0,0,0.3)");
		//objChildFrame.set_overlaycolor("RGBA(0, 0, 0, 0)");
		var vRtn = objChildFrame.showModal( objParentFrame, {a:'aaa', b:'bbb'}, this, this.fn_popCallback );	
	}
}
//DZZ_POP1.xfdl
//오늘은 그만 체크박스

this.chkTodayStop_onchanged = function(obj:nexacro.CheckBox,e:nexacro.CheckBoxChangedEventInfo)
{
	this.gfnSetTodayStop("DZZ_POP1_331");
	
	this.close();
};