1$(function () { 2 3 // Check if we are on the last page of the article: true if the specific mission part is not there 4 const articleLastPageIsReached = document.getElementById('mission-window-complete-mission-on-last-page-please') === null; 5 6 let stayOnPageConditionIsCompleted = false; 7 let scrollToReactionIconConditionIsCompleted = false; 8 let progressBarCompleted = false; 9 let selectedArticleReaction = null; 10 let agreedMissionList = null; 11 const mission_window = $('#mission-window'); 12 const missionBar = $('.mission-stay_bar'); 13 const missionStayCheckIcon = $('.mission-stay_bar-icon img'); 14 const missionReactCheckIcon = $('.mission-react_icon img'); 15 const missionNotCompletedStayBar = $('#mission_not_completed_stay_bar'); 16 const missionLoading = $('#mission-window-loading'); 17 const missionWindowCount = $('#mission-window-count'); 18 const missionWindowError = $('#mission-window-error'); 19 const missionClose = $('.mission-window-close'); 20 const articleId = $('#article-id').val(); 21 const missionProgress = $('.mission-progress'); 22 23 const missionBoxHead = $('#missionBoxHead'); 24 const missionNotLogin = $('#missionStatus_NotLogin'); 25 const missionError = $('#missionStatus_Error'); 26 const missionLogin = $('#missionStatusContent'); 27 28 const reactionIconContainer = $('#reaction-icon-container'); 29 const reactionIconContainerClickWall = $('#reaction-icon-container-click-wall'); 30 const reactionIconContainerLink = $('#reaction-icon-container-link'); 31 const reactionIconErrorContainer = $('#reaction-icon-error-container'); 32 const reactionIconLoadingContainer = $('#reaction-icon-loading-container'); 33 const reactionIconBalloon = $('.reaction-icon-balloon'); 34 const reactionIcons = $('.js-reaction-icon'); 35 36 const switchTeamsiteByMissionProgressConfig = $('#switch_teamsite_by_mission_progress_config'); 37 38 const adDataInArticleContentsPc = $('#adDataInArticleContentsPc'); 39 const adDataInArticleContentsPcDMission = $('#adDataInArticleContentsPcDMission'); 40 const adDataInArticleContentsPcInitialState = $('#adDataInArticleContentsPcInitialState'); 41 42 const middleDoubleRectangle2Detail = $('#middle_double_rectangle2_detail'); 43 const middleDoubleRectangle2DetailDMission = $('#middle_double_rectangle2_detail_dmission'); 44 45 const rnRectangle1Detail = $('#rnRectangle1Detail'); 46 const rnRectangle1DetailDMission = $('#rnRectangle1DetailDMission'); 47 48 const rnRectangle2Detail = $('#rnRectangle2Detail'); 49 const rnRectangle2DetailDMission = $('#rnRectangle2DetailDMission'); 50 51 const rnRectangle3Detail = $('#rnRectangle3Detail'); 52 const rnRectangle3DetailDMission = $('#rnRectangle3DetailDMission'); 53 54 const rnRectangle4Detail = $('#rnRectangle4Detail'); 55 const rnRectangle4DetailDMission = $('#rnRectangle4DetailDMission'); 56 57 const headerAd1CmpDetail = $('#headerAd1CmpDetail'); 58 const headerAd1CmpDetailDMission = $('#headerAd1CmpDetailDMission'); 59 60 const detailUnderSNS = $('#detailUnderSNS'); 61 const detailUnderSNSDMission = $('#detailUnderSNSDMission'); 62 63 const loginBox = $('#loginBox'); 64 const userBox = $('#userBox'); 65 66 const STARTED = 'STARTED'; 67 const ANY_COMPLETED = 'ANY_COMPLETED'; 68 const ANY_PROGRESSED = 'ANY_PROGRESSED'; 69 const IN_PROGRESS = 'IN_PROGRESS'; 70 const COMPLETED = 'COMPLETED'; 71 const POINTS_REQUESTED = 'POINTS_REQUESTED'; 72 const DAY = 'DAY'; 73 const WEEK = 'WEEK'; 74 const MONTH = 'MONTH'; 75 76 const stayPageMilliSecond = 10000; // Stay on page for 10 seconds 77 const IN_PROGRESS_DISPLAY_TIME = 5000;
77 // Stay for 5 seconds if only in progress 78 const COMPLETED_DISPLAY_TIME = 8000; // Stay for 8 seconds if completed exists 79 const VALID_ARTICLE_REACTIONS = new Set(['bikkuri', 'iine', 'naruhodo', 'zannen']); 80 81 missionLoading.hide(); 82 missionWindowError.hide(); 83 missionWindowCount.hide(); 84 85 missionBoxHead.hide(); 86 missionNotLogin.hide(); 87 missionError.hide(); 88 missionLogin.hide(); 89 90 let startedReadingMissionList = []; 91 92 /* Start Mission window timer logic */ 93 const progressBar = document.getElementById('mission-stay_bar-item-id'); 94 let progressBarWidth = 0; 95 let progressBarIntervalId; 96 97 /* Variables related to interstitial ads*/ 98 let isInterstitialAdShowing = false; 99 100 const interstitialAdObserver = new MutationObserver(() => { 101 const externalAdFrame = $('body > #gn_interstitial_iframe_content'); 102 const runaAdFrame = $('.interstitialClickAdRUNA'); 103 104 if (externalAdFrame.length || runaAdFrame.length) { 105 interstitialAdObserver.disconnect(); 106 clearTimeout(adObserverFallbackTimer); 107 108 isInterstitialAdShowing = true; 109 if (progressBarIntervalId !== undefined) { 110 pause(); 111 } 112 window.addEventListener('CloseInterstitialModal', () => { 113 isInterstitialAdShowing = false; 114 play(); 115 }, { once: true }); 116 } 117 }); 118 119 const adObserverFallbackTimer = setTimeout( 120 () => interstitialAdObserver.disconnect(), 121 10000 122 ); 123 124 interstitialAdObserver.observe(document.body, { childList: true, subtree: true }); 125 126 // We only start missions and show reaction UI on the last page of an article 127 if (articleLastPageIsReached) { 128 // Display article reaction loading state 129 displayReactionIconLoadingContainer(); 130 131 // When window is on focus, play mission window timer 132 window.addEventListener('focus', play, false); 133 134 // When window loses focus, pause mission window timer 135 window.addEventListener('blur', pause, false); 136 137 // Handle page visibility change 138 document.addEventListener('visibilitychange', () => { 139 if (document.hidden) { 140 pause(); 141 } else { 142 play(); 143 } 144 }); 145 146 window.addEventListener('StartMissionStatusBar', play, false); 147 } 148 149 // request mission list 150 requestMissionList(); 151 152 // Close button 153 if (missionClose) { 154 missionClose.on('click', function () { 155 mission_window.toggleClass('mission-window-fixed'); 156 }); 157 } 158 159 function startProgressBar() { 160 progressBarIntervalId = clearInterval(progressBarIntervalId); 161 progressBarIntervalId = setInterval(() => { 162 if (progressBarWidth < 100) { 163 progressBarWidth++; 164 progressBar.style.width = `${progressBarWidth}%`; 165 } else { 166 progressBarCompleted = true; 167 progressBarIntervalId = clearInterval(progressBarIntervalId); 168 169 $(missionBar).addClass('stay-clear'); 170 $(missionStayCheckIcon).attr('src', '/pc/img/mission/mission_check_icon_green-1.0.png'); 171 } 172 }, 100); 173 } 174 175 function play() { 176 if (isInterstitialAdShowing) { 177 return; 178 } 179 startProgressBar(); 180 } 181 182 function pause() { 183 progressBarIntervalId = clearInterval(progressBarIntervalId); 184 } 185 186 /* End Mission window timer logic */ 187 188 function requestMissionList() { 189 $.ajax({ 190 url: '/mission/progress/list/ajax/', 191 method: 'POST', 192 timeout: 10000, 193 data: { 194 articleId: articleId, 195 }, 196 }) 197 /** 198 * @param {Object} missionListResult 199 * @param {Boolean} missionListResult.isLoggedIn 200 * @param {Boolean} missionListResult.progressPossibleMissionExists 201 * @param {Array} missionListResult.agreedMissionList 202 * @param {string} missionListResult.reactionToHighlight 203 */ 204 .done(function (missionListResult) { 205 206 if (!missionListResult.isLoggedIn) { 207 missionBoxHead.show(); 208 missionNotLogin.show(); 209 loginBox?.show(); 210 displayReactionIconInactiveContainer(); 211 // Show the default ads in article and detail under sns 212 displayAdInArticleAndAdUnderSNS(); 213 globalDatabaseFunction.displayInterstitialAdForNonDailyMissionUser(); 214 return; 215 } 216 userBox.show(); 217 if (missionListResult.activeMissionCount !== 0) { 218 // Show mission status bar 219 startedReadingMissionList = getStartedReadingMissionList(missionListResult.missionStatusInfoList); 220 window.globalFunction.displayMissionStatusBar(missionListResult); 221 222 let isDailyMissionAgreed = false;
223 // Show interstitial ad 224 missionListResult.agreedMissionList.forEach((mission) => { 225 let advancement = mission.missionProgressAdvancement; 226 if (mission.missionTaskTimeframe === 'DAY' && (advancement === IN_PROGRESS || advancement === STARTED || 227 advancement === COMPLETED || advancement === POINTS_REQUESTED)) { 228 displayTeamsiteAds(mission); 229 isDailyMissionAgreed = true; 230 } 231 }); 232 233 // Show the default ads content if there's no daily reading mission agreed 234 if (!isDailyMissionAgreed) { 235 displayAdInArticleAndAdUnderSNS(); 236 globalDatabaseFunction.displayInterstitialAdForNonDailyMissionUser(); 237 } 238 } else { 239 globalDatabaseFunction.displayInterstitialAdForNonDailyMissionUser(); 240 } 241 242 // If not on the last page, we do not start the mission, nor show the reaction counts 243 if (!articleLastPageIsReached) { 244 // Only if there are missions to do, we invite the user to go to the last page to complete the mission 245 if (missionListResult.progressPossibleMissionExists) { 246 mission_window.toggleClass('mission-window-fixed'); 247 } 248 return; 249 } 250 251 // If we are on the last page, we can start handling the missions, and show reaction UI 252 if (missionListResult.agreedMissionList.length === 0) { 253 // If the user didn't join any article mission, do not start missions 254 // And only show the reaction counts with an invitation to start missions 255 displayReactionIconInactiveContainer(); 256 // Show the default ads content if there's no reading mission agreed 257 displayAdInArticleAndAdUnderSNS(); 258 } else if (missionListResult.progressPossibleMissionExists) { 259 // Play mission window timer 260 play(); 261 262 // Store agreed mission list to make it usable outside of this function's scope 263 agreedMissionList = missionListResult.agreedMissionList; 264 265 // Show article reaction icon 266 displayReactionIconActiveContainer(); 267 268 // show mission window 269 mission_window.toggleClass('mission-window-fixed'); 270 271 // IntersectionObserver replaces scroll handler (INP optimization) 272 const reactionIconObserver = new IntersectionObserver((entries) => { 273 if (entries[0].isIntersecting) { 274 checkScrollToReactionButtonCondition(); 275 reactionIconObserver.disconnect(); 276 } 277 }, { rootMargin: '0px 0px -90px 0px', threshold: 0 }); 278 if (reactionIcons.length > 0) { 279 reactionIconObserver.observe(reactionIcons[0]); 280 // Alternative to $(window).trigger('scroll'): check initial state 281 const rect = reactionIcons[0].getBoundingClientRect(); 282 if (rect.top < window.innerHeight - 90) { 283 checkScrollToReactionButtonCondition(); 284 reactionIconObserver.disconnect(); 285 } 286 } 287 288 // Page stay duration 289 setTimeout(function () { 290 stayPageCompleted(missionListResult.agreedMissionList); 291 }, stayPageMilliSecond); 292 } else { 293 // If there is no possible mission to be completed i.e. article already counted in all missions 294 displayReactionIconHighlightedContainer(missionListResult.reactionToHighlight); 295 } 296 }) 297 .fail(function () { 298 missionBoxHead.show();
299 missionError.show(); 300 userBox.show(); 301 displayReactionIconErrorContainer(); 302 }); 303 } 304 305 function displayReactionIconLoadingContainer() { 306 reactionIconLoadingContainer.css('display', 'flex'); 307 } 308 309 function hideReactionIconLoadingContainer() { 310 reactionIconLoadingContainer.css('display', 'none'); 311 } 312 313 function displayReactionIconErrorContainer() { 314 // Do not show, unless on last article page 315 if (!articleLastPageIsReached) { 316 return; 317 } 318 hideReactionIconLoadingContainer(); 319 reactionIconErrorContainer.css('display', 'flex'); 320 } 321 322 // Show reaction icon UI if there is a reaction that user can react 323 function displayReactionIconActiveContainer() { 324 hideReactionIconLoadingContainer(); 325 reactionIconContainerClickWall.hide(); 326 reactionIcons.on('click', reactionArticleIconClickedHandler); 327 reactionIconContainer.show(); 328 } 329 330 function displayReactionIconInactiveContainer() { 331 // Do not show, unless on last article page 332 if (!articleLastPageIsReached) { 333 return; 334 } 335 336 hideReactionIconLoadingContainer(); 337 disableClickOnReactionIcons(); 338 reactionIconContainerLink.show(); 339 reactionIcons.addClass('is-disabled'); 340 reactionIconBalloon.addClass('is-not-joined-mission'); 341 reactionIconContainer.show(); 342 } 343 344 function displayReactionIconHighlightedContainer(reaction) { 345 // Hide loading UI 346 hideReactionIconLoadingContainer(); 347 348 // If the reaction value is not supported or null, do not show the reaction UI 349 if (!VALID_ARTICLE_REACTIONS.has(reaction)) { 350 return; 351 } 352 353 // Show highlighted reaction icon UI 354 disableClickOnReactionIcons(); 355 reactionIcons.addClass('is-disabled'); 356 reactionIcons.filter('.reaction-icon.-' + reaction).addClass('is-active'); 357 reactionIconBalloon.addClass('is-active'); 358 reactionIconContainer.show(); 359 } 360 361 function reactionArticleIconClickedHandler() { 362 // Extract the reaction from the icon's class name 363 const iconClassList = $(this).attr('class').split(' '); 364 selectedArticleReaction = iconClassList.find(className => className.startsWith('-')).substring(1); 365 366 // Update mission progress icon on mission parts 367 $(missionReactCheckIcon).attr('src', '/pc/img/mission/mission_check_icon_green-1.0.png'); 368 $(missionReactCheckIcon).addClass('read-clear'); 369 370 // Check if the mission was completed or not 371 checkArticleMissionCompleteCondition(agreedMissionList); 372 373 // Prevent any other click 374 reactionIconContainerClickWall.show(); 375 disableClickOnReactionIcons(); 376 } 377 378 function disableClickOnReactionIcons() { 379 // Remove click listeners, e.g. reaction or RAT 380 reactionIcons.off('click'); 381 } 382 383 function getStartedReadingMissionList(missionStatusInfoList) { 384 let missionList = []; 385 for (const missionStatusInfo of missionStatusInfoList) { 386 if (missionStatusInfo.taskRepetitionCondition === 'DIFFERENT_ARTICLE') { 387 missionList.push(missionStatusInfo.missionTaskTimeframe); 388 } 389 } 390 return missionList; 391 } 392 393 function stayPageCompleted(missionList) { 394 if (stayOnPageConditionIsCompleted) { 395 checkArticleMissionCompleteCondition(missionList); 396 } else { 397 stayOnPageConditionIsCompleted = true; 398 } 399 } 400 401 function checkScrollToReactionButtonCondition() { 402 if (!scrollToReactionIconConditionIsCompleted) { 403 scrollToReactionIconConditionIsCompleted = true; 404 } 405 } 406 407 // Check if all conditions to complete article mission already fulfilled or not, and record mission data if all conditions fulfilled 408 function checkArticleMissionCompleteCondition(missionList) { 409 let IntervalId = setInterval(() => { 410 if (scrollToReactionIconConditionIsCompleted && stayOnPageConditionIsCompleted && progressBarCompleted && VALID_ARTICLE_REACTIONS.has(selectedArticleReaction)) { 411 clearInterval(IntervalId); 412 413 $('#mission-window-during').hide(); 414 missionLoading.show(); 415 416 let missionIdArray = []; 417 for (let missionData of missionList) { 418 if (missionData.missionProgressAdvancement === COMPLETED || 419 missionData.missionProgressAdvancement === POINTS_REQUESTED) { 420 continue; 421 } 422 missionIdArray.push(missionData.missionId); 423 } 424 let missionIds = missionIdArray.join(','); 425 426 $.ajax({ 427 url: '/mission/progress/ajax/', 428 method: 'POST', 429 timeout: 10000, 430 data: { 431 articleId: articleId, 432 missionIds: missionIds, 433 articleReaction: selectedArticleReaction, 434 }, 435 }) 436 .done(function (progressResult) { 437 438 missionLoading.hide(); 439 mission_window.removeClass('mission-window-fixed').addClass('mission-window-fixed'); 440 missionWindowCount.show(); 441 442 let progressResultMap = createProgressResultMap(progressResult, missionList); 443 let displayTime = displayProgressResult(progressResultMap); 444 setTimeout(function () { 445 if ($(mission_window).hasClass('mission-window-fixed')) { 446 $(mission_window).removeClass('mission-window-fixed'); 447 } 448 }, displayTime); 449 }) 450 .fail(function () { 451 // Error 452 missionLoading.hide();
453 missionWindowError.show(); 454 }); 455 } 456 }, 500); 457 } 458 459 function createProgressResultMap(progressResultList, missionList) { 460 let resultMap = new Map(); 461 let anyCompleted = false; 462 let anyProgressed = false; 463 464 /** 465 * @param {Object} missionData 466 * @param {Number} missionData.missionProgressNumDoneRepetitions 467 * @param {String} missionData.missionProgressAdvancement 468 * @param {String} missionData.missionTaskTimeframe 469 * @param {Boolean} missionData.changedToCompleted 470 * @param {Number} missionData.missionTaskPointsToGrant 471 */ 472 for (let missionData of missionList) { 473 for (let progressResult of progressResultList) { 474 if (progressResult.missionId === missionData.missionId.toString()) { 475 missionData.missionProgressNumDoneRepetitions = progressResult.missionProgressNumDoneRepetitions; 476 missionData.changedToCompleted = 477 (missionData.missionProgressAdvancement !== progressResult.missionProgressAdvancement 478 && progressResult.missionProgressAdvancement === COMPLETED); 479 missionData.missionProgressAdvancement = progressResult.missionProgressAdvancement; 480 } 481 } 482 if (missionData.missionProgressAdvancement === COMPLETED) { 483 anyCompleted = true; 484 } 485 if (missionData.missionProgressAdvancement === IN_PROGRESS) { 486 anyProgressed = true; 487 } 488 resultMap.set(missionData.missionTaskTimeframe, missionData); 489 } 490 491 resultMap.set(ANY_COMPLETED, anyCompleted); 492 resultMap.set(ANY_PROGRESSED, anyProgressed); 493 return resultMap; 494 } 495 496 function displayProgressResult(resultDataMap) { 497 displayStatus(resultDataMap, DAY); 498 displayStatus(resultDataMap, WEEK); 499 displayStatus(resultDataMap, MONTH); 500 501 changeNotYetRequestedPoints(resultDataMap); 502 503 if (resultDataMap.get(ANY_PROGRESSED)) { 504 $('#mission-next-article-button').show(); 505 } else { 506 $('#mission-next-article-button').hide(); 507 } 508 509 let displayTime; 510 if (resultDataMap.get(ANY_COMPLETED)) { 511 $('#mission-completed').show(); 512 $('#mission-not_completed').hide(); 513 displayTime = COMPLETED_DISPLAY_TIME; 514 } else { 515 $('#mission-completed').hide(); 516 $('#mission-not_completed').show(); 517 missionNotCompletedStayBar.css('width', '100%'); 518 missionNotCompletedStayBar.css('background-color', '#002896'); 519 displayTime = IN_PROGRESS_DISPLAY_TIME; 520 } 521 522 return displayTime; 523 } 524 525 function displayStatus(resultDataMap, timeframe) { 526 527 let innerElement = $('#mission-' + timeframe + '-inner'); 528 let statusElement = $('#mission-' + timeframe + '-status'); 529 530 let resultData = resultDataMap.get(timeframe); 531 if (!resultData) { 532 if (!startedReadingMissionList.includes(timeframe)) { 533 innerElement.hide(); 534 } 535 return; 536 } 537 538 let statusText; 539 if (resultData.missionProgressAdvancement === POINTS_REQUESTED) { 540 innerElement.addClass('text-gray'); 541 statusText = 'å®äº'; 542 } else if (resultData.missionProgressAdvancement === COMPLETED) { 543 statusElement.addClass('text-red'); 544 statusText = resultData.missionTaskNumRepetitionsToComplete + '/' + resultData.missionTaskNumRepetitionsToComplete + 'è¨äºéæï¼'; 545 } else { 546 statusText = resultData.missionProgressNumDoneRepetitions + '/' + resultData.missionTaskNumRepetitionsToComplete + 'è¨äºéæï¼'; 547 } 548 statusElement.text(statusText); 549 550 if (resultData.changedToCompleted) { 551 // update mission status bar 552 let prefix = '#pcReading' + timeframe; 553 let completed_inProgress = $(prefix + '_completed_inProgress'); 554 let completed_completed = $(prefix + '_completed_completed'); 555 let requested_notAgreedInProgress = $(prefix + '_requested_notAgreedInProgress'); 556 let requested_completed = $(prefix + '_requested_completed'); 557 completed_inProgress.css({'cssText': 'display: none!important;'}); 558 completed_completed.show(); 559 requested_notAgreedInProgress.css({'cssText': 'display: none!important;'}); 560 requested_completed.show(); 561 } 562 563 if (resultData.missionProgressAdvancement === IN_PROGRESS || 564 (resultData.missionProgressAdvancement === COMPLETED && resultData.changedToCompleted)) { 565 let ratId = 'mission_' + resultData.missionId + '_progress_' + resultData.missionProgressNumDoneRepetitions; 566 missionProgress.append('<p data-ratid="' + ratId + '" data-ratevent="appear"></p>'); 567 } 568 } 569 570 function changeNotYetRequestedPoints(resultDataMap) { 571 let dayData = resultDataMap.get(DAY); 572 let weekData = resultDataMap.get(WEEK); 573 let monthData = resultDataMap.get(MONTH); 574 575 if ((dayData && dayData.changedToCompleted) || (weekData && weekData.changedToCompleted) || (monthData && monthData.changedToCompleted)) { 576 let notYetRequestedPoints = 0; 577 if (dayData && dayData.missionProgressAdvancement === COMPLETED) { 578 notYetRequestedPoints += dayData.missionTaskPointsToGrant; 579 } 580 if (weekData && weekData.missionProgressAdvancement === COMPLETED) { 581 notYetRequestedPoints += weekData.missionTaskPointsToGrant; 582 } 583 if (monthData && monthData.missionProgressAdvancement === COMPLETED) { 584 notYetRequestedPoints += monthData.missionTaskPointsToGrant; 585 } 586 const notYetRequestedInfo = $('#notYetRequestedInfo'); 587 notYetRequestedInfo.empty(); 588 notYetRequestedInfo.append('æªç²å¾ï¼' + notYetRequestedPoints + 'ãã¤ã³ã'); 589 } 590 } 591 592 /** 593 * Show the target interstitial ads by the number of daily mission progress repetitions and agreementDateTime
594 * @param {Object} agreedMission 595 * @param {Number} agreedMission.missionNumDoneRepetitions 596 * @param {Number} agreedMission.missionTaskNumRepetitionsToComplete 597 * @param {String} agreedMission.missionAgreementDateTime 598 * @param {String} agreedMission.missionProgressAdvancement 599 */ 600 function displayTeamsiteAds(agreedMission) { 601 const numDoneRepetitions = agreedMission.missionNumDoneRepetitions; 602 const numToComplete = agreedMission.missionTaskNumRepetitionsToComplete; 603 const agreedDateTime = agreedMission.missionAgreementDateTime; 604 const missionProgressAdvancement = agreedMission.missionProgressAdvancement; 605 606 // Show interstitial ads 607 globalDatabaseFunction.displayInterstitialAdForDailyMissionUser(numDoneRepetitions, numToComplete, agreedDateTime, missionProgressAdvancement); 608 609 // Show ads inside article and ads under SNS if mission progress more than switchTeamsiteByMissionProgressConfig 610 displayAdInArticleDmissionAndAdUnderSNSDmission(numDoneRepetitions); 611 612 displayMiddleDouble2DetailDMissionAds(numDoneRepetitions); 613 614 displayRnRectangle1DetailDMission(numDoneRepetitions); 615 616 displayRnRectangle2DetailDMission(numDoneRepetitions); 617 618 displayRnRectangle3DetailDMission(numDoneRepetitions); 619 620 displayRnRectangle4DetailDMission(numDoneRepetitions); 621 622 displayHeaderAd1DetailDMission(numDoneRepetitions); 623 } 624 625 /* This function will show ad_in_article_dmission and detail_under_sns_dmission teamsite */ 626 function displayAdInArticleDmissionAndAdUnderSNSDmission(numDoneRepetitions) { 627 if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) { 628 if (adDataInArticleContentsPcInitialState.length !== 0) { 629 adDataInArticleContentsPcInitialState.replaceWith(adDataInArticleContentsPcDMission.attr('value')); 630 } 631 if (detailUnderSNSDMission.length !== 0) { 632 detailUnderSNSDMission.replaceWith(detailUnderSNSDMission.attr('value')); 633 } 634 } else { 635 displayAdInArticleAndAdUnderSNS(); 636 } 637 } 638 639 /* This function will show ad_in_article and detail_under_sns teamsite */ 640 function displayAdInArticleAndAdUnderSNS() { 641 if (adDataInArticleContentsPcInitialState.length !== 0) { 642 adDataInArticleContentsPcInitialState.replaceWith(adDataInArticleContentsPc.attr('value')); 643 } 644 if (detailUnderSNS.length !== 0) { 645 detailUnderSNS.replaceWith(detailUnderSNS.attr('value')); 646 } 647 } 648 649 /* This function will show middle_double_rectangle2_detail_dmission teamsite */ 650 function displayMiddleDouble2DetailDMissionAds(numDoneRepetitions) { 651 if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) { 652 middleDoubleRectangle2Detail.html(middleDoubleRectangle2DetailDMission.attr('value')); 653 } 654 } 655 656 /* This function will show rn_1st_rectangle_detail_dmission teamsite */ 657 function displayRnRectangle1DetailDMission(numDoneRepetitions) { 658 if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) { 659 rnRectangle1Detail.html(rnRectangle1DetailDMission.attr('value')); 660 } 661 } 662 663 /* This function will show rn_2nd_rectangle_detail_dmission teamsite */ 664 function displayRnRectangle2DetailDMission(numDoneRepetitions) { 665 if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) { 666 rnRectangle2Detail.html(rnRectangle2DetailDMission.attr('value')); 667 } 668 } 669 670 /* This function will show rn_3rd_rectangle_detail_dmission teamsite */ 671 function displayRnRectangle3DetailDMission(numDoneRepetitions) { 672 if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) { 673 rnRectangle3Detail.html(rnRectangle3DetailDMission.attr('value')); 674 } 675 } 676 677 /* This function will show rn_4th_rectangle_detail_dmission teamsite */ 678 function displayRnRectangle4DetailDMission(numDoneRepetitions) { 679 if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) { 680 rnRectangle4Detail.html(rnRectangle4DetailDMission.attr('value')); 681 } 682 } 683 684 /* This function will show header_ad1_detail_dmission teamsite */ 685 function displayHeaderAd1DetailDMission(numDoneRepetitions) { 686 if (numDoneRepetitions >= parseInt(switchTeamsiteByMissionProgressConfig.attr('value'))) { 687 headerAd1CmpDetail.html(headerAd1CmpDetailDMission.attr('value')); 688 } 689 } 690 691}); /* $function */
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.