1// import main 2import {main_link, service_link, CallService, checkErrorMsg, loader_spinn, value, gtagCheck, gtagCheckParam} from '/js/__main2.js'; 3 4// import text 5import * as text_memo from '/text/text.js'; 6const text = text_memo.exText; 7const local = text_memo.localTime; 8 9 10// Element's name 11const announcement_modal_container = '#announcement-modal-container'; 12const image_announcement = '#image-announcement'; 13const announcement_modal_link = '.announcement-modal-link'; 14 15 16// Global variables 17export let lastestId; 18export let duration_sec = 0; 19 20 21 22 23 24 25// ============== Show Announcement Function ============= 26export function exModal() { 27 28 setTimeout(function() { 29 30 $(announcement_modal_container).modal('show'); 31 32 }, 3000); 33} 34 35 36 37 38// =============== Get announcement Function =============== 39export function getAnnouncement() { 40 41 const allowCall = checkExpired(); 42 if (allowCall == true && value != undefined) { 43 44 const url = service_link + '/announcement_service.php'; 45 const get_announcement = { 46 get_announce: true, 47 lastestId: lastestId 48 }; 49 50 // Add Lazy load image 51 $(image_announcement).attr('src', loader_spinn); 52 53 CallService(get_announcement, url, 'POST', false, function(msg) { 54 55 checkErrorMsg(msg, 56 function(){ 57 58 }, 59 function() { 60 61 if (msg != 204) { 62 63 let { 64 actionUrl, 65 activeDate, 66 createdDate, 67 expiredDate, 68 id, 69 imageUrl, 70 targetGroup, 71 viewCount, 72 duration 73 } = msg; 74 75 lastestId = id; 76 77 // Set Duration 78 durationCal(duration); 79 80 // Gtag 81 gtagCheckParam('announcement_view', 'id', id, 'announcement'); 82 83 84 if (actionUrl == "" || actionUrl == null) { 85 actionUrl = "#"; 86 } 87 else { 88 89 const checkAction1 = actionUrl.indexOf('aduang://'); 90 const checkAction2 = actionUrl.indexOf('http'); 91 92 if (checkAction1 >= 0) { 93 94 const action = actionUrl.split('aduang://')[1]; 95 96 if (action == 'register') { 97 actionUrl = '/teller/register'; 98 } 99 else if (action == 'campaign') { 100 actionUrl = '/campaign'; 101 } 102 else { 103 actionUrl = '/'; 104 } 105 106 } 107 108 } 109 110 111 // Maping Image Announcement 112 $(announcement_modal_link).attr('href', actionUrl); 113 $(image_announcement).attr('data-src', imageUrl); 114 115 116 // Stamp time and expire time 117 stampTime(id); 118 119 120 // Pop Image Announcement 121 exModal(); 122 } 123 else { 124 let announcementTimeStamp = sessionStorage.getItem('announcementTimeStamp'); 125 announcementTimeStamp = JSON.parse(announcementTimeStamp); 126 127 if (announcementTimeStamp != null) { 128 129 let { 130 id, 131 timeStamp, 132 expiredTime 133 } = announcementTimeStamp; 134 135 let newTimeStamp = { 136 id: undefined, 137 timeStamp: timeStamp, 138 expiredTime: expiredTime 139 }; 140 141 newTimeStamp = JSON.stringify(newTimeStamp); 142 sessionStorage.setItem('announcementTimeStamp', newTimeStamp); 143 144 getAnnouncement(); 145 146 } 147 } 148 149 }); 150 151 152 153 }); 154 155 } 156} 157 158 159 160 161 162 163 164 165 166 167 168export function postClickAnnouncement(id, action) { 169 170 const url = service_link + '/announcement_service.php'; 171 const postClick = { 172 clickAnnouncement: id 173 }; 174 175 176 gtagCheckParam('announcement_click', 'id', id, 'announcement'); 177 178 CallService(postClick, url, 'POST', false, function(msg) { 179 180 window.location.href(action); 181 182 }); 183 184} 185 186 187 188 189 190 191 192 193 194 195 196 197 198// ================== Duration Calculating Function ================= 199export function durationCal(duration) { 200 201 let hr = duration.split(':')[0]; 202 let min = duration.split(':')[1]; 203 let sec = duration.split(':')[2]; 204 205 hr = parseInt(hr); 206 min = parseInt(min); 207 sec = parseInt(sec); 208 209 hr = Math.pow(60, 2) * hr; 210 min = min * 60; 211 212 sec = hr + min + sec; 213 duration_sec = sec; 214} 215 216 217 218 219 220 221 222 223 224 225 226 227 228// ==================== Stamp Time Function ====================== 229export function stampTime (id) { 230 231 const timeStamp = moment().format(); 232 const expiredTime = moment().add(duration_sec, 'seconds').format(); 233 234 let announcementTimeStamp = { 235 id: id, 236 timeStamp: timeStamp, 237 expiredTime: expiredTime, 238 }; 239 240 241 announcementTimeStamp = JSON.stringify(announcementTimeStamp); 242 sessionStorage.setItem('announcementTimeStamp', announcementTimeStamp); 243} 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260// ================== Check Expired Time Function ================ 261export function checkExpired() { 262 263 let announcementTimeStamp = sessionStorage.getItem('announcementTimeStamp'); 264 announcementTimeStamp = JSON.parse(announcementTimeStamp); 265 266 const thisTime = moment(); 267 268 if (announcementTimeStamp != null && value != undefined) { 269 270 let { 271 id, 272 timeStamp, 273 expiredTime 274 } = announcementTimeStamp; 275 276 // Set Lastest Id 277 lastestId = id; 278 279 // Check expired time 280 expiredTime = moment(expiredTime); 281 let durationMin = expiredTime.diff(thisTime, 'minutes'); 282 283 if (durationMin < 0) { 284 285 return true; 286 } 287 else { 288 289 return false; 290 } 291 } 292 else { 293 294 return true; 295 } 296 297 298}
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.