1// ìë¹ì¤ ì커ë ie11 ì§ì ìí¨. ë°ë¼ì ie11 ì§ì ì¬ë¶ 무ì. 2// ë¹ì¼ì ì ì§ë ìº íì¸ì ì¤íìí¤ê±°ë, ì¤íì¤ì¸ ìº íì¸ì ì ì§ìì¼ë ë°ë¡ ì ì©ë¨ 3// ëì ëì¼ ìº íì¸ì ê°ìë ì ì§ => ì¤í ìí¤ë©´ ê°ì íì ëë² ë³¼ ì ë ìì 4// ì¦, ì¤íì¤ => ì¬ì©ìê° íì ë´ => ì ì§ => ì¤í => ë¤ì íì ë´ ì´ ê°ë¥ 5importScripts("/contents/js/InedxedDB_v1.js"); 6 7// ìë¹ì¤ìí¬ ì¤ì¹ 8self.addEventListener("install", function (event) { 9 event.waitUntil(self.skipWaiting()); 10}); 11 12// ìë¹ì¤ì커 íì±í 13self.addEventListener("activate", function (event) { 14 event.waitUntil( 15 clients 16 .claim() 17 .then() 18 ); 19}); 20 21 22// ì ìë³ì 23var db1 = new IndexedDbHelper(); 24var db2 = new IndexedDbHelper(); 25var lock = false; // ë½. ì¡í ìì¼ë©´ ìì§ ë¹ë기 ìì ìëëê±°. ë¡ê·¸ì¸ìë§ ê±¸ì´ë . 26var first_login = false; // ë¡ê·¸ì¸ì íµí 첫 ì ê·¼ì¸ì§ íì¸ì ìí ë³ì 27var no_campaign; // íê² ìº íì¸ì´ ìëì§ íì¸í기 ìí ë³ì 28 29 30// ì¸ë±ì¤ë ëë¹ ì¤ë¸ì í¸ ì¤í ì´ 31var NON_MEMBER_STORE = { name: "NOMEMBER", keyPath: "ck_user" }; 32var LIKEGOODS1_STORE = { name: "LIKEGOODS1", keyPath: ["sc_idx", "mg_code"], }; 33var HELPCHOICE_STORE = { name: "HELPCHOICE", keyPath: "sc_idx" }; 34var MASTER_STORE = { name: "MASTER_STORE", keyPath: ["sc_idx", "cc_idx"] }; 35var CAMPAIGN_RANKING_STORE = { name: "CAMPAIGN_RANK", keyPath: "sc_idx" }; 36var LASTSETTING_STORE = { name: "LAST_SETTING", keyPath: "sc_idx" }; 37var MOVING_COUNT_STORE = { name: "MOVING_COUNT", keyPath: "sc_idx" }; 38var NON_MEMBER_POPUP = { name: "NOMEMBER", keyPath: "image" }; 39var EXCLUDE_GOODS = { name: "EXCLUDE_GOODS", keyPath: "mg_code" }; 40 41 42// ì¸ë±ì¤ë ëë¹ ì¸ë±ì¤ 43var MASTER_STORE_INDEX = { MASTER_STORE: [{ index: "popup_flag", unique: false }, { index: ["sc_idx", "type"], unique: false }], }; 44 45db2.dbName = "NON_MEMBER_DB"; 46 47 48// í´ë¼ì´ì¸í¸ìì ë©ìì§ ë°ê¸° 49self.addEventListener("message", async function (event) { 50 var now = new Date(); 51 var today3AM = new Date(now.getFullYear(), now.getMonth(), now.getDate(), "03", 0, 0); // ì¤ë ìë²½ 3ì 52 53 // ë¡ê·¸ì¸. ëì ë°ì´í° ìì ìì² 54 if (event.data.type == "LOGIN") { 55 var sc_idx = event.data.message.sc_idx; 56 57 first_login = true; 58 db1.dbName = sc_idx; 59 60 getLock(); // ë½ê±¸ê¸°. ì걸면 LOGIN ìì² ì§í INDEX ìì²ë ë¤ì´ìì ì¸ë±ì¤ëëë¹ ë¹ë기 ëì ì ê·¼ ì¤ë¥ ë°ì 61 62 db1.getData("LAST_SETTING", sc_idx, "sc_idx", function (e) { 63 var objStoreNames; 64 if (e == null || e.target.result == null || (e.target.result.date <= today3AM && now > today3AM)) { // ì´ê¸°í ìì²ì´ ë´ìì´ ìê±°ë, ì´ê¸°í íê² ì¤ë 3ì ì´ì ì¼ë. ì¤ë 첫 ë¡ê·¸ì¸ 65 objStoreNames = ["MASTER_STORE", "CAMPAIGN_RANK", "MOVING_COUNT", "LIKEGOODS1", "HELPCHOICE"]; 66 } else { // ìº íì¸ ì ë³´ê° ëª¨ë ì³ë°ë¥´ë©´ ëì ë°ì´í°ë§ ë 리기 67 objStoreNames = ["MOVING_COUNT", "LIKEGOODS1", "HELPCHOICE"]; 68 } 69 db1.clearData(objStoreNames, function () { 70 releaseLock(); 71 }); 72 }); 73 } 74 75 // íì ë³´ì¬ì¤. íì íëê·¸ ì ë°ì´í¸ ìì² 76 if (event.data.type === "COMPLETE") { 77 78 var popupTarget = event.data.message.popupTarget; 79 var sc_idx = event.data.message.sc_idx; 80 if (popupTarget == "success") { 81 return; 82 } 83 84 popupTarget.popup_flag = "Y"; 85 updateMasterStorePoupFlag(popupTarget, sc_idx); 86 } 87 88 // ì¼ë° íë©´ ì§ì . íì ì²´í¬ ìì² 89 if (event.data.type === "INDEX") { 90 var sc_idx = event.data.message.sc_idx; 91 var ck_user = event.data.message.ck_user; 92 var page = event.data.message.page; // ìì² ë¤ì´ì¨ íì´ì§ DETAIL / HOME / LIST 93 var mg_code = event.data.message.mg_code; 94 var nomember_cc_idx = event.data.message.nomember_cc_idx; // íìê°ì ì ë ìº íì¸ idx 95 var onsite_term = event.data.message.onsite_term; // ì¨ì¬ì´í¸ íì í´ì í . ê¸°ë³¸ê° 2 96 var last_update_date = new Date(event.data.message.update_date.replace(" ", "T")); // ìº íì¸ì´ ë§ì§ë§ì¼ë¡ ìì ë ìê°. "T"를 ì¶ê°íì¬ ISO íìì¼ë¡ ë³í 97 var soldout = event.data.message.soldout; // ìí ìì¸ì ê²½ì° íì ìíì¸ì§ 98 99 db1.dbName = sc_idx; // íìë²í¸ë¡ db를 ë§ë¬ 100 101 if (sc_idx == 0 && nomember_cc_idx >
101 0) { // ë¹íìì´ê³ íìê°ì ì ë íì±íì¤ì¼ë 102 103 // crm ì¼ë¡ ì ê·¼íì¼ë©´ ìë³´ì¬ì¤ 104 var is_crm_approach = event.data.message.is_crm_approach; 105 if (is_crm_approach) { 106 return; 107 } 108 109 db2.initialize(NON_MEMBER_STORE, null, function () { 110 db2.getData("NOMEMBER", ck_user, "ck_user", 111 async function (e) { 112 if (e == null || e.target.result == null) { // 첫 ì ê·¼ì¼ë 113 db2.writeData("NOMEMBER", { 114 ck_user: ck_user, 115 cc_idx: nomember_cc_idx, 116 popup_flag: "N", 117 save_date: now, 118 }); 119 } else if (e.target.result.save_date <= today3AM && now > today3AM) { // ì´ì ì 근기ë¡ì´ ìì¼ë ìë²½ 3ì ì´ì ì ê·¼ì¼ë 120 db2.updateData("NOMEMBER", ck_user, "ck_user", { 121 ck_user: ck_user, 122 cc_idx: e.target.result.cc_idx, 123 popup_flag: "N", 124 save_date: now, 125 }); 126 } else { 127 var result = e.target.result; 128 if (result.popup_flag == "N") {// ëë²ì§¸ ì ê·¼ì¼ë 129 db2.updateData("NOMEMBER", ck_user, "ck_user", { 130 ck_user: ck_user, 131 cc_idx: result.cc_idx, 132 popup_flag: "Y", 133 save_date: now, 134 }); 135 136 var paramsObj = new URLSearchParams({ cc_idx: nomember_cc_idx, cct_type: "NOMEMBER", page: page }); 137 138 var response = await fetch("/CRM/PortletPopUp?" + paramsObj.toString(), { 139 method: "GET", 140 headers: { "Content-Type": "application/json" } 141 }); 142 143 response = await response.text(); 144 var popupTarget = "success"; 145 event.ports[0].postMessage({ response: response, cc_idx: nomember_cc_idx, popupTarget: popupTarget }); 146 } 147 } 148 }); 149 }); 150 } else if (sc_idx > 0) { // íìì¼ë 151 db1.getData("LAST_SETTING", sc_idx, "sc_idx", function (e) { 152 waitForLockChange(function () { 153 if (e == null || e.target.result == null || (e.target.result.date <= today3AM && now > today3AM)) { // ì´ê¸°í ìì²ì´ ë´ìì´ ìê±°ë, ì´ê¸°í íê² ì¤ë 3ì ì´ì ì¼ë 154 settingIndexedDb(function () { 155 if (no_campaign) { // ë³´ì¬ì¤ì¼ í ì¼íì¸ì´ ìì¼ë©´ ë°ë¡ 리í´. 156 return; 157 } 158 checkPopup(function (target) { // ë°ë¡ ë³´ì¬ì¤ì¼ íë íì ìëì§ íì¸ 159 showPopupAndUpdate(target); // ìì¼ë©´ ë³´ì¬ì£¼ê³ ë½ í´ì 160 }); 161 }); 162 } else { // íì¬ ì¸ë±ì¤ë ëë¹ ë°ì´í°ê° ìµì ë°ì´í°ì¼ë 163 if (e.target.result.date <= last_update_date) { // ì¸ë±ì¤ë ëë¹ ì´ê¸°íí ìê°ì´ ë§ì§ë§ ìº íì¸ ì ë°ì´í¸ ìê° ì´ì ì´ë©´ ìë¡ê² ì´ê¸°í 164 settingIndexedDb(function () { 165 if (no_campaign) { 166 return; 167 } 168 checkPopup(function (target) { // ë°ë¡ ë³´ì¬ì¤ì¼ íë íì ìëì§ íì¸ 169 showPopupAndUpdate(target); 170 }); 171 }); 172 } else { // ìº íì¸ ë³ëì¬í ìì. 173 if (no_campaign) { 174 return; 175 } 176 addMovingCount(); // íì´ì§ ì´ë íì ì¹´ì´í¸ 177 checkPopup(function (target) { // íì ë³´ì¬ì¤ì¼ íëê² ìëì§ ì²´í¬ 178 showPopupAndUpdate(target); 179 }); 180 } 181 } 182 }); 183 }); 184 } 185 } 186 187 function getLock() { 188 lock = true; 189 } 190 191 function releaseLock() { 192 lock = false; 193 } 194 195 // ë¡ê·¸ì¸ì íì ê²½ì°, ë¡ê·¸ì¸ìì í ì¸ë±ì¤ë ëë¹ ìì²ì´ ëë ì´íì ì¸ë±ì¤ë ëë¹ì ì ê·¼í´ì¼ í¨. ìëë©´ ì¶©ë. 196 // lock ì´ ê±¸ë ¤ì ¸ ìì¼ë©´ 루íì ê°íì 주기ì ì¼ë¡ lock ì´ í´ì ëëì§ íì¸. í´ì ëì´ì¼ ì½ë°± ì¤í. 197 function waitForLockChange(callback) { 198 if (lock === false) { 199 callback(); 200 } else { 201 setTimeout(function () { waitForLockChange(callback) }, 50); // 50ms ë§ë¤ ì¬íì¸. 202 } 203 } 204 205 // ì¸ë±ì¤ëëë¹ ì´ê¸° ì í 206 async function settingIndexedDb(callBack) { 207 208 var response = await fetch("/CRM/SettingIndexedDb", { // ìë²ìì ëì ìº íì¸ ë°ì´í° ë°ìì¤ê¸°.
209 method: "post", 210 headers: { "Content-Type": "application/json" }, 211 }); 212 213 var responseData = await response.json(); 214 215 if (responseData.data == null) { // ëì ìº íì¸ì´ ìì¼ë©´ ì í ë ì§ë§ ì ì¥íê³ ë. 216 no_campaign = true; 217 db1.initialize(LASTSETTING_STORE, null, function () { 218 db1.updateData("LAST_SETTING", sc_idx, "sc_idx", { sc_idx: sc_idx, date: now }); 219 }); 220 return; 221 } 222 223 no_campaign = false; 224 225 // ìë²ìì ë°ìì¨ ë°ì´í° ë°°ì´ë¡ ë³í. ì°ì ìììì¼ë¡ ì ë ¬ë ë°ì´í°ë¡ ë°ì. 226 var idxs = responseData.data.campaignIdxs.split(","); // ìº íì¸ idx 227 var types = responseData.data.type.split(","); // ìº íì¸ íì 228 var time = responseData.data.time.split(","); // íì ë ¸ì¶ ìê° 229 var excludeGoods = responseData.data.exclude_goods.split(","); // ì ì¸ ìí 230 231 var masterStoreData = []; // ë§ì¤í° ì¤í ì´ì ë´ê¸¸ ë°ì´í° 232 var campaigns = []; // ìì ìº íì¸ ë°°ì´ 233 var objStoresName = []; // ìë¡ ìì±í ì¤ë¸ì í¸ ì¤í ì´ ì´ë¦ 234 235 db1.getAll("MASTER_STORE", function (e) { // ìë¡ê² ì¶ê°ë ìº íì¸, ìì ë ìº íì¸ ë½ê¸° 236 var allreadyIn = []; 237 var deleteList = []; 238 var oldList = []; 239 240 if (e != null) { 241 allreadyIn = e.target.result; 242 } 243 244 for (var old of allreadyIn) { // 기존 ìº íì¸ ë¦¬ì¤í¸ 245 oldList.push({ type: old.type, cc_idx: old.cc_idx }); 246 } 247 248 for (var old of oldList) { 249 if (!types.includes(old.type)) { // ìì ë ìº íì¸ ë½ê¸° 250 deleteList.push([sc_idx, old.cc_idx]); 251 } 252 } 253 254 // ì¶ê°ë ìº íì¸ ë½ê¸° 255 for (var i = 0; i < types.length; i++) { // ì¼ë¨ ë°ìì¨ ëì ìº íì¸ ëª¨ë ë°ë³µë¬¸ ë 256 var type = types[i]; 257 var continueFlag = false; 258 259 campaigns.push({ type: types[i], cc_idx: idxs[i], rank: i }); 260 261 for (var item of allreadyIn) { 262 if (item.type == type) { // ìë¡ê² ì¶ê°ë ìº íì¸ì´ ìëë©´ for문 ëê°ê¸°. ë¤ì ë°ë³µ. 263 continueFlag = true; 264 break 265 } 266 } 267 268 if (continueFlag) { 269 continue; 270 } 271 272 if (type == "LIKEGOODS1") { // ëì ìº íì¸ì ê´ì¬ìí1 ì´ ì¡´ì¬íë©´ ì¤ë¸ì í¸ ì¤í ì´ ë§ëë¦ 273 objStoresName.push(LIKEGOODS1_STORE); 274 } else if (type == "HELPCHOICE") { // ëì ìº íì¸ì ì í ëìì£¼ê¸°ê° ì¡´ì¬íë©´ ì¤ë¸ì í¸ ì¤í ì´ ë§ëë¦ 275 objStoresName.push(HELPCHOICE_STORE); 276 } 277 278 // ë§ì¤í° ì¤í ì´ ë°ì´í° ë§ë¤ê¸° 279 var showTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), time[i], 0, 0); 280 var data = { sc_idx: sc_idx, cc_idx: idxs[i], time: showTime, type: types[i], popup_flag: "N", }; 281 masterStoreData.push(data); 282 } 283 284 285 for (var idx in excludeGoods) { // ì ì¸ ìí 리ì¤í¸ 286 excludeGoods[idx] = { mg_code: excludeGoods[idx] }; 287 } 288 289 objStoresName.push(MASTER_STORE); 290 objStoresName.push(LASTSETTING_STORE); 291 objStoresName.push(CAMPAIGN_RANKING_STORE); 292 objStoresName.push(MOVING_COUNT_STORE); 293 objStoresName.push(EXCLUDE_GOODS); 294 295 db1.initialize(objStoresName, MASTER_STORE_INDEX, function () { // db1 ì í 296 db1.updateData("LAST_SETTING", sc_idx, "sc_idx", { sc_idx: sc_idx, date: now, }, function () { // ë°ì´í° ì´ê¸°í ìê° ì ë°ì´í¸ 297 addMovingCount(); // íì´ì§ ì´ë íì ì´ê¸° ë°ì´í° ì í 298 db1.writeData("MASTER_STORE", masterStoreData, function () { // ë§ì¤í° ì¤í ì´ì ë°ìì¨ ë°ì´í° ë£ê¸° 299 db1.updateData("CAMPAIGN_RANK", sc_idx, "sc_idx", { sc_idx: sc_idx, campaigns: campaigns, }, function () { // ì°ì ìì í ì´ë¸ì ê° ë£ê¸°. ì ë°ì´í¸ 300 db1.deleteData("MASTER_STORE", deleteList, function () { // ìì ë ìº íì¸ ìì¼ë©´ ìì . 301 db1.clearData("EXCLUDE_GOODS", function () { 302 db1.writeData("EXCLUDE_GOODS", excludeGoods, function () { 303 callBack(); 304 }); 305 }); 306 }); 307 }); 308 }); 309 }); 310 }); 311 }); 312 } 313 314 315 // íì íê² ì°¾ê¸° 316 function checkPopup(callback) { 317 db1.getData("MASTER_STORE", "N", "popup_flag", function (e) { // íì ì ìë³´ì¬ì¤ ìº íì¸ë§ ë½ê¸°. 318 var targets = []; 319 var masterStoreResult = e.target.result; 320 var masterStoreData = {}; 321 var today12AM = new Date(now.getFullYear(), now.getMonth(), now.getDate(), "00", 0, 0
321); // ì¤ë ìì 322 var ignoredCouponData = null; 323 324 masterStoreResult.forEach(function (data) { // íì ë³´ì¬ì¤ ìê°ì´ ì§ë ìº íì¸ë§ targets ì ë´ê¸° 325 if (now >= today12AM && now <= today3AM) { // 00ììì 03ì ì¬ì´ë ì¿ í° ë§ë£ íì ìë³´ì¬ì¤. ì¬íí°ë§ì´ íë¤ì´ì. 326 if (data.type == "EXPIRECOUPON") { 327 data.popup_flag = 'Y'; 328 ignoredCouponData = data; 329 } 330 } 331 332 if (data.time != null && data.time <= now) { 333 targets.push(data.type); 334 } 335 336 masterStoreData[data.type] = data; 337 }); 338 339 if (ignoredCouponData != null) { 340 db1.updateData("MASTER_STORE", [sc_idx, ignoredCouponData.cc_idx], ["sc_idx", "cc_idx"], ignoredCouponData, function () { // ì¿ í° ë§ë£ íì ì 무ì. 341 filterAccumulativeDataAndUpdate(targets, function (filtered) { // targets ìº íì¸ì´ db1 ì¡°ê±´ë ë§ì¡±íëì§ íì¸ 342 ifMoveMoreThanCountOrNotShown(onsite_term, function () { // íì´ì§ ì´ë íìê° ë§ì¡±ëëì§ íì¸ 343 getHighestTarget(filtered, masterStoreData, function (target) { // ê°ì¥ ì°ì ìì ëìê±° 1ê°ë§ ë½ê¸° 344 callback(target); 345 }); 346 }); 347 }); 348 }); 349 } else { 350 filterAccumulativeDataAndUpdate(targets, function (filtered) { 351 ifMoveMoreThanCountOrNotShown(onsite_term, function () { 352 getHighestTarget(filtered, masterStoreData, function (target) { 353 callback(target); 354 }); 355 }); 356 }); 357 } 358 }); 359 } 360 361 362 // db1ì ìë ìº íì¸ë¤ì´ ì¡°ê±´ì´ ë§ì¡± ì¬ë¶ íì¸íê³ ì¹´ì´í¸ ì¸ê¸°. ëì ë°ì´í° íì¸. 363 function filterAccumulativeDataAndUpdate(targets, callback) { 364 if (page != "DETAIL") { 365 targets = targets.filter(function (e) { return e != "LIKEGOODS1" && e != "HELPCHOICE" }); 366 callback(targets); 367 return; 368 369 } else { 370 371 db1.getData("EXCLUDE_GOODS", mg_code, "mg_code", function (e) { 372 373 if (e != null && e.target.result != undefined) { // ì ì¸ ìí íì´ì§ì¼ë. - ê´ì¬ìí1 ëì ì ì¸ 374 375 targets = targets.filter(function (e) { return e != "LIKEGOODS1" }); 376 377 checkHelpChoicePopup(targets, callback); 378 379 } else { // ì ì¸ ìí íì´ì§ê° ìëë 380 db1.getData("LIKEGOODS1", [sc_idx, mg_code], ["sc_idx", "mg_code"], function (e) { // ê´ì¬ìí1 ì¼ë 381 382 if (e != null && e.target.result == null) { // ë°ì´í°ê° ììë. 2ë²ì§¸ ì ê·¼ì´ ìëë¯ë¡ íê² ì ì¸ 383 targets = targets.filter(function (e) { return e != "LIKEGOODS1" }); 384 db1.writeData("LIKEGOODS1", { sc_idx: sc_idx, mg_code: mg_code }); 385 } else if (e != null && e.target.result != null && soldout) { 386 targets = targets.filter(function (e) { return e != "LIKEGOODS1" }); 387 } 388 389 checkHelpChoicePopup(targets, callback); 390 }); 391 } 392 }); 393 } 394 } 395 396 // ì í ëì주기 ì²´í¬ 397 function checkHelpChoicePopup(targets, callback) { 398 399 db1.getData("HELPCHOICE", sc_idx, "sc_idx", function (e) { 400 401 if (e != null && e.target.result == null) { 402 targets = targets.filter(function (e) { return e != "HELPCHOICE" }); 403 db1.writeData("HELPCHOICE", { sc_idx: sc_idx, count: 0 }); 404 405 } else if (e != null && e.target.result.count < 2) { 406 var oldData = e.target.result; 407 targets = targets.filter(function (e) { return e != "HELPCHOICE" }); 408 oldData.count = oldData.count + 1; 409 db1.updateData("HELPCHOICE", sc_idx, "sc_idx", oldData); 410 } 411 412 callback(targets); 413 }); 414 415 } 416 417 // íì ì ë³´ì¬ì¤ì ìê±°ë ì´ë íì ì¡°ê±´ì´ ì¶©ì¡±ë ì ë¤ë§ ì½ë°± í¨ì ì¤í 418 function ifMoveMoreThanCountOrNotShown(count, callback) { 419 count++; 420 if (first_login) { 421 first_login = false; 422 callback(); 423 } else { 424 db1.getData("MOVING_COUNT", sc_idx, "sc_idx", function (e) { 425 if (e.target.result != null) { 426 if (e.target.result.last_popup == null || (e.target.result.last_popup != null && e.target.result.count >= count)) { // íì ì ë³´ì¬ì¤ì ìê±°ë, íì ë³´ì¬ì£¼ê³ ì´ë íìê° 2ì´ìì¼ëë§ 427 callback(); 428 } 429 } 430 }); 431 } 432 } 433 434 // íê²ì¤ ìµì°ì ìì 찾기. ì°ì ìì íí°ë§ 435 function getHighestTarget(targets, masterStoreData, callback) { 436 var popupTarget; 437 var rank = 100; 438 439 if (!isMondayToThursday) { 440 targets.filter(function (e) { return e != "REACTIVE" }
440) // ë¨ê³¨ íì±íë ììì¼ìì 목ìì¼ ì¬ì´ìë§ 441 } 442 if (!isSunday) { 443 targets.filter(function (e) { return e != "CARTGOODS" }) // ì¥ë°êµ¬ë 구매ë ì¼ìì¼ìë§ 444 } 445 446 if (targets.length > 1) {// íê²ì´ ì¬ë¬ê°ë©´ ì°ì ìì ëìê±° 447 db1.getData("CAMPAIGN_RANK", sc_idx, "sc_idx", function (e) { 448 var allcampaigns = e.target.result.campaigns; 449 allcampaigns.forEach(function (campaign) { 450 if (targets.includes(campaign.type) && campaign.rank < rank) { // íê²ì ì¡´ì¬íê³ ëí¬ê° ê°ì¥ ë®ì ìº íì¸ ì°¾ê¸° 451 rank = campaign.rank; 452 popupTarget = masterStoreData[campaign.type]; 453 } 454 }); 455 popupTarget = masterStoreData[popupTarget.type]; 456 callback(popupTarget); 457 }); 458 } else { // íê²ì´ 1ê° ì´íë¼ë©´ 459 popupTarget = masterStoreData[targets]; 460 callback(popupTarget); // ë§ì¤í° ì¤í ì´ ê°ì²´ë¡ íê² ë겨주기 461 } 462 } 463 464 function isMondayToThursday() { // ììì¼ìì 목ìì¼ ì¬ì´ë©´ true 465 var today = now.getDay(); 466 return today >= 1 && today <= 4; // ììì¼(1) ~ 목ìì¼(4) 467 } 468 469 function isSunday() { // ì¼ìì¼ì´ë©´ true 470 var today = now.getDay(); 471 return today == 6; // ììì¼(1) ~ 목ìì¼(4) 472 } 473 474 // íì ë³´ì¬ì£¼ê³ ë§ì¤í° ì¤í ì´ íì íëê·¸ ì ë°ì´í¸ 475 async function showPopupAndUpdate(popupTarget) { 476 if (popupTarget == null) { return; } 477 478 if (page != 'DETAIL') { 479 var paramsObj = new URLSearchParams({ cc_idx: popupTarget.cc_idx, cct_type: popupTarget.type, page: page }); 480 } else { 481 var paramsObj = new URLSearchParams({ cc_idx: popupTarget.cc_idx, cct_type: popupTarget.type, mg_code: mg_code, page: page }); 482 } 483 484 485 var response = await fetch("/CRM/PortletPopUp?" + paramsObj.toString(), { 486 method: "GET", 487 headers: { "Content-Type": "application/json" } 488 }); 489 490 response = await response.text(); 491 if (response == "N") { 492 popupTarget.popup_flag = "Y"; 493 updateMasterStorePoupFlag(popupTarget, sc_idx, function () { 494 }); 495 return; 496 } 497 498 let isLikeOrHelp = popupTarget.type === "LIKEGOODS1" || popupTarget.type === "HELPCHOICE"; 499 var cc_idx = popupTarget.cc_idx; 500 501 if (isLikeOrHelp) { // ê´ì¬ìí1 ëë ì í ëì주기 ê°ì ê²½ì°ë ìí ì½ëë ë³´ë. 502 if (page == "DETAIL") { 503 event.ports[0].postMessage({ response, mg_code, cc_idx, popupTarget }); 504 } 505 } else { 506 event.ports[0].postMessage({ response, cc_idx, popupTarget }); 507 } 508 } 509 510 511 // íì´ì§ ì´ë íì ì¹´ì´í¸. 512 function addMovingCount() { 513 db1.getData("MOVING_COUNT", sc_idx, "sc_idx", function (e) { 514 if (e.target.result != null) { 515 e.target.result.count += 1; 516 db1.updateData("MOVING_COUNT", sc_idx, "sc_idx", e.target.result); 517 } else { 518 var data = { sc_idx: sc_idx, count: 0, last_popup: null }; 519 db1.writeData("MOVING_COUNT", data); 520 } 521 }); 522 } 523 524 525 // ë§ì¤í°ì¤í ì´ì íì íëê·¸ ì ë°ì´í¸ 526 async function updateMasterStorePoupFlag(popupTarget, sc_idx) { 527 db1.updateData("MASTER_STORE", [sc_idx, popupTarget.cc_idx], ["sc_idx", "cc_idx"], popupTarget, function () { 528 var data = { sc_idx: sc_idx, last_popup: popupTarget.type, count: 0 }; 529 db1.updateData("MOVING_COUNT", sc_idx, "sc_idx", data, function () { 530 if (popupTarget.type == "HELPCHOICE") { 531 db1.getData("HELPCHOICE", sc_idx, "sc_idx", function (e) {// ì í ëì주기ì¼ë 532 if (e.target.result.count >= 4) { // ì¹´ì´í¸ê° 4ì´ìì´ë©´ 5ë²ì§¸ ì ê·¼. íì íê² ì ì§. ì¹´ì´í¸ë 0ì¼ë¡ ì ë°ì´í¸í기. 533 var oldData = e.target.result; 534 oldData.count = 0; 535 db1.updateData("HELPCHOICE", sc_idx, "sc_idx", oldData); 536 } 537 }); 538 } 539 event.ports[0].postMessage({ result: "success" });
540 }); 541 }); 542 } 543}); 544 545
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.