Everything you need to know about IPTV


(window.innerWidth || document.documentElement.clientWidth); out.any = out.top || out.left || out.bottom || out.right; out.all = out.top && out.left && out.bottom && out.right; return out; }; function centreInViewport(el) { var activateIcon = document.querySelector(“.js-tourtip-activate”); var iconBounding = activateIcon.getBoundingClientRect(); var viewportWidth = window.innerWidth; var tourtipBounding = el.getBoundingClientRect(); // Formula to centre the tour tip var leftPosition = iconBounding.left – (viewportWidth – tourtipBounding.width) / 2; el.classList.remove(“darwin-arc6134__tourtip–rightOut”); el.classList.remove(“darwin-arc6134__tourtip–leftOut”); el.classList.add(“js-tourtip–centred”); el.style.left = “-“+leftPosition+”px”; } // Adds classes to keep the tour tip in the viewport horizontally function keepInViewport() { var el = document.querySelector(“.darwin-arc6134__tourtip”); var icon = document.querySelector(“.darwin-arc6134__activateIcon”); var isOut = isOutOfViewport(el); // Left side is out of viewport if (isOut.left && !el.classList.contains(“js-tourtip–centred”)) { el.classList.add(“darwin-arc6134__tourtip–leftOut”); icon.classList.add(“darwin-arc6134__tourtip–leftOut”); // If then it’s out to the right, center(ish) it isOut = isOutOfViewport(el); if (isOut.right) { centreInViewport(el); } } // Right side is out of viewport if (isOut.right && !el.classList.contains(“js-tourtip–centred”)) { el.classList.add(“darwin-arc6134__tourtip–rightOut”); icon.classList.add(“darwin-arc6134__tourtip–rightOut”); isOut = isOutOfViewport(el); // If then it’s out to the left, center(ish) it if (isOut.left) { centreInViewport(el); } } } // IntersectionObserver for showing the pulse animation function intersectTourtip() { var options = { root: null, rootMargin: “0px”, threshold: 1.0 }; var target = document.querySelector(“.js-tourtip-activate”); var observer = new IntersectionObserver(function(entries, observer) { console.log(“[ARC-6134] entries: “, entries); entries.forEach(function (entry) { console.log(“[ARC-6134] tourtip icon in viewport: “, entry.isIntersecting); if (entry.isIntersecting) { tourtipPulse(target); observer.disconnect(); observer = null; } }); }, options); observer.observe(target); } function tourtipPulse(el) { var tourtipCount = “tgam.tourtips_viewed”; var hasFollowedTopics = localStorage.getItem(“tgam.has_followed_topics”) === “true”; var tourtipsViewed = getCount(tourtipCount); var iconClicked = localStorage.getItem(“tgam.tourtip_icon_clicked”) === “true”; var showPulseAnimation = !hasFollowedTopics && tourtipsViewed < 3 && !iconClicked; console.log("[ARC-6134] hasFollowedTopics: ", hasFollowedTopics); console.log("[ARC-6134] tourtipsViewed: ", tourtipsViewed); console.log("[ARC-6134] iconClicked: ", iconClicked); console.log("[ARC-6134] showPulseAnimation: ", showPulseAnimation); if (showPulseAnimation) { el.classList.add('c-button__icon-pulse'); el.classList.add('c-button__icon-pulse--animate'); setCount(tourtipCount, ++tourtipsViewed); } } // Tour tip content panels var content1 = [ "“, “

Save time by making it easy to scan all the latest stories on topics you follow in one place.

“, “”, “

” ].join(“”); var content2 = [ ““, “”, “

Adding topics. Click on the + symbol to save the topic to your Following page.

“, “”, “

(Step 1 of 3)

“, “

“, ““, ““, “

” ].join(“”); var content3 = [ ““, “”, “

Clicking on the topic’s name will bring you to a page where you can view all the articles that pertain to that topic.

“, “”, “

(Step 2 of 3)

“, “

“, ““, ““, “

” ].join(“”); var content4 = [ ““, “”, “Access your following topics by clicking on your display name.“, “

Access your following topics by clicking on your display name. The number in your display name indicates the number of new articles you haven’t read from your following topics.

“, “”, “

(Step 3 of 3)

“, “

“, ““, ““, “

” ].join(“”); var contentMarkup = [content1, content2, content3, content4]; function createTourtip() { var relatedTopics = document.querySelector(“#main-content-area .pb-f-topics-article-related .c-topic-group__body ul”); var topicPageTitle = document.querySelector(“.o-primary-header–section .c-topic”); // If the following topics buttons are present on the page, set up the tourtips if (relatedTopics || topicPageTitle) { var modifier = relatedTopics ? ‘darwin-arc6134–article’ : ‘darwin-arc6134–topic-page’ var dataAnalyticsClick = JSON.stringify({ testId: “arc6134”, type: “button”, feature: “topic tour tip”, label: “show tooltip” }); var el = relatedTopics ? document.createElement(“li”) : document.createElement(“div”); el.classList.add(“darwin-arc6134”); el.classList.add(modifier); el.innerHTML = “

“+contentMarkup[0] + “

“; relatedTopics ? relatedTopics.appendChild(el) : topicPageTitle.appendChild(el); // Remove follow topics onboarding messages and activation tooltips setTimeout(function() { var onboardingMessages = document.querySelectorAll(“.c-topic-group__body .c-onboarding-message”); var tooltips = document.querySelectorAll(“.c-topic-group__body .c-tooltip”); console.log(“[ARC-6134]: onboardingMessages: “, onboardingMessages); Array.from(onboardingMessages).forEach(function(el) { el.parentNode.removeChild(el); }); Array.from(tooltips).forEach(function(el) { el.parentNode.removeChild(el); }); }, 3000); } } function analyticsPush(type, panel, action) { if (type === “simple”) { analyticsLayer.push({ “event”: “simpleEvent”, “simpleEvent”: { “testId”: “arc6134”, “action”: “view tour slide”, “label”: “slide “+panel } }); } if (type === “click”) { analyticsLayer.push({ “event”:”clickEvent”, “clickEvent”: { “testId”: “arc6134”, “feature”: “topic tour tip”, “type”: “button”, “label”: action, } }); } } function tourtipActions() { // Open tourtips var container = document.querySelector(“.darwin-arc6134”); var activateIcon = document.querySelector(“.js-tourtip-activate”); var tourtipContainer = document.querySelector(“.darwin-arc6134__tourtip”); activateIcon.addEventListener(“click”, function() { if (!container.classList.contains(“darwin-arc6134–open”)) { container.classList.add(“darwin-arc6134–open”); tourtipContainer.removeAttribute(“hidden”); keepInViewport(); localStorage.setItem(“tgam.tourtip_icon_clicked”, true); analyticsPush(“click”, 1, “show tooltip”); analyticsPush(“simple”, 1, “”); } }); // Advance tourtip panels tourtipContainer.addEventListener(‘click’, function(e) { var tourtipPanel = tourtipContainer.getAttribute(“data-panel”); var activateIcon = document.querySelector(“.js-tourtip-activate”); var el = e.target || e.srcElement; var action = el.getAttribute(“data-action”); if (action === “next”) { tourtipPanel++; analyticsPush(“simple”, tourtipPanel, action); } else if (action === “prev”) { tourtipPanel–; analyticsPush(“simple”, tourtipPanel, action); } else { tourtipPanel = 1; tourtipContainer.setAttribute(“hidden”, true); container.classList.remove(“darwin-arc6134–open”); tourtipContainer.classList.remove(“darwin-arc6134__tourtip–leftOut”); tourtipContainer.classList.remove(“darwin-arc6134__tourtip–rightOut”); activateIcon.classList.remove(“darwin-arc6134__tourtip–leftOut”); activateIcon.classList.remove(“darwin-arc6134__tourtip–rightOut”); tourtipContainer.classList.remove(“js-tourtip–centred”); tourtipContainer.style.removeProperty(“left”); } analyticsPush(“click”, tourtipPanel, action); tourtipPanel === 4 ? tourtipContainer.classList.add(“darwin-arc6134__tourtip–last-panel”) : tourtipContainer.classList.remove(“darwin-arc6134__tourtip–last-panel”); tourtipContainer.innerHTML = contentMarkup[tourtipPanel-1]; tourtipContainer.dataset.panel = tourtipPanel; }); } function init() { console.log(“[ARC-6134] init”); var testIsEnabled = /token=arc6134/.test(window.location.search); console.log(“ARC-6134 testIsEnabled: “, testIsEnabled); var testGroup = userTestGroup(); if (testGroup === “variant” || testIsEnabled) { setUnitState(“arc6134”, “variant”); console.log(“[ARC-6134] test group: variant”); createTourtip(); tourtipActions(); intersectTourtip(); } if (testGroup === “control”) { console.log(“[ARC-6134] test group: control”); setUnitState(“arc6134”, “control”); } } init(); }]); } window.tgam.darwin.tests.after.push(dwExecute_UXTestARC6134); })();

= 180 : false; var isQA = window.location.href.indexOf(“CEMQA1792”) > -1; return commonSeg() && isSubscriber && (sixMonth || isQA); }); function commonSeg() { const darwinState = getDarwinState() || {}; const isNotPb = window.location.href.indexOf(‘/ellipsis/’) === -1 && window.location.href.indexOf(‘/pb/’) === -1; const isArticle = window.location.href.indexOf(‘/article’) > -1; const isNotInteractive = isArticle && !getSegment(‘article.pagesubtype’, ‘interactive’) && !getSegment(‘article.pagesubtype’, ‘longread’); var isNotAdv = getSegment(‘article.advContent’, false); var count = count || 1; if (darwinState.hasOwnProperty(“cem1792”) && count == 1 && darwinState.cem1792.variant) { count += 1; setDarwinVariant(‘promotions-cem1792’, darwinState.cem1792.variant); } return notIE && isNotPb && isNotInteractive && isNotAdv; } }]); } window.tgam.darwin.tests.segments.push(dwSegment_promotionscem1792); function dwExecute_promotionscem1792(data) { window._dw.push([‘global’, ‘ready’, function onReady(api) { var variant = api.get(“promotions-cem1792”); var variantData = data; if (variant.is(‘control’)) { console.info(‘promotions:cem-1792:control’); setUnitState(“cem1792”, “control”); } if (variant.is(‘experience’)) { console.info(‘promotions:cem-1792:experience’); setUnitState(“cem1792”, “experience”); showDidYouKnowFeature(); } }]); } window.tgam.darwin.tests.after.push(dwExecute_promotionscem1792); })(); ]]> ‘, ‘bottomTitle’: ”, ‘featureName’: ‘The Globe’s Watchlist’, ‘featureLink’: ‘https://www.theglobeandmail.com/investing/markets/watchlist/?cid=didyouknow_cem1792_experience’, ‘body’: ‘Get the analysis, news and insight you need to make informed financial decisions.’ }, { ‘featureIcon’: window.tgam.env.assets[“panther/images/member-centre-sprite.svg”] + ‘#icon-portfolio’, ‘featureIconClass’: ‘icon-fill’, ‘topTitle’: ‘You can track your investments using
‘, ‘bottomTitle’: ”, ‘featureName’: ‘The Globe’s Investor Tools’, ‘featureLink’: ‘https://www.theglobeandmail.com/investing/markets/portfolio/?cid=didyouknow_cem1792_experience’, ‘body’: ‘Start a portfolio to get a comprehensive overview of your investments’ performance.’ }, { ‘featureIcon’: ‘https://www.theglobeandmail.com/files/cem/icons/follow-ico.svg?token=1’, ‘featureIconClass’: ‘u-hidden’, ‘topTitle’: ‘You can’, ‘bottomTitle’: ”, ‘featureName’: ‘follow topics’, ‘featureLink’: ‘https://www.theglobeandmail.com/your-globe/#following’, ‘body’: ‘Look for the FOLLOW button and follow the topics that interest you.

You’ll find your followed topics list by clicking on your username in the top right navigation bar.’ }, { ‘featureIcon’: window.tgam.env.assets[“panther/images/member-centre-sprite.svg”] + ‘#icon-newsletters’, ‘featureIconClass’: ‘icon-fill’, ‘topTitle’: ‘The Globe has over 20 ‘, ‘bottomTitle’: ”, ‘featureName’: ‘newsletters’, ‘featureLink’: ‘https://www.theglobeandmail.com/newsletters/?cid=didyouknow_cem1792_experience’, ‘body’: ‘Sign up for breaking news, market insights, business headlines and more delivered right to your inbox.’ }, { ‘featureIcon’: window.tgam.env.assets[“panther/sprites/sprite.svg”] + ‘#icon-comments’, ‘featureIconClass’: ‘icon-fill’, ‘topTitle’: ‘You can’, ‘bottomTitle’: ‘on articles’, ‘featureName’: ‘comment’, ‘featureLink’: pageURL +’/#comments’, ‘body’: ‘Look for the comments section at the bottom of articles. This is a space where subscribers can engage with each other and Globe staff.’ }, { ‘featureIcon’: window.tgam.env.assets[“panther/images/member-centre-sprite.svg”] + ‘#icon-portfolio’, ‘featureIconClass’: ‘icon-fill’, ‘topTitle’: ‘You have access to
‘, ‘bottomTitle’: ”, ‘featureName’: ‘The Globe’s personal finance tools’, ‘featureLink’: ‘https://www.theglobeandmail.com/member-benefits/online-tools/?cid=didyouknow_cem1792_experience’, ‘body’: ‘Online interactive Globe Investor tools, Stock Screener tools and more, make it easy to manage your personal finances.’ }, { ‘featureIcon’: window.tgam.env.assets[“panther/sprites/sprite.svg”] + ‘#subscribed’, ‘featureIconClass’: ‘icon-fill’, ‘topTitle’: ‘You have access to’, ‘bottomTitle’: ”, ‘featureName’: ‘Member Benefits’, ‘featureLink’: ‘https://www.theglobeandmail.com/member-benefits/?cid=didyouknow_cem1792_experience’, ‘body’: ‘Member Benefits give you access to exclusive events only for subscribers, e-books and guides, and a behind-the-scenes look at our journalists and more.’ }, { ‘featureIcon’: ‘https://www.theglobeandmail.com/files/cem/icons/podcast-ico.png?token=1’, ‘featureIconClass’: ”, ‘topTitle’: ‘The Globe and Mail has’, ‘bottomTitle’: ”, ‘featureName’: ‘podcasts’, ‘featureLink’: ‘https://www.theglobeandmail.com/featured-reports/article-listen-to-podcasts-from-the-globe-and-mail/?cid=didyouknow_cem1792_experience’, ‘body’: ‘From retirement and personal finance topics to the gig economy and important conversations about race in Canada, explore podcasts from The Globe.’ }, { ‘featureIcon’: ‘https://www.theglobeandmail.com/files/cem/icons/history-ico.png?token=1’, ‘featureIconClass’: ”, ‘topTitle’: ‘You can see your
‘, ‘bottomTitle’: ”, ‘featureName’: ‘reading history’, ‘featureLink’: ‘https://www.theglobeandmail.com/your-globe/#reading-history?cid=didyouknow_cem1792_experience’, ‘body’: ‘ Find it under the drop-down menu by clicking on your username.’ } ]; var darwinState = getDarwinState() || {}; var shownCount = darwinState.hasOwnProperty(“cem1792”) && darwinState.cem1792.hasShown >= 0 && darwinState.cem1792.hasShown = 4 && frequency <= 2) { // to remove figure styles document.getElementsByClassName('c-article-body')[0].className += ' didyouknow'; var newNode = document.createElement('div'); var featureName = didyouknow[shownCount].featureName; var featureIconClass = didyouknow[shownCount].featureIconClass; var didyouknowContainer = ' Did you know? ‘; // determin the icon type var featureIcon = didyouknow[shownCount].featureIcon; didyouknowContainer += /^https/.test(featureIcon) ? ‘' + featureName + '‘ : ‘ ‘; didyouknowContainer += ‘]]>

‘ + didyouknow[shownCount] .topTitle + ‘ ‘; // determin the feature with action var featureLink = didyouknow[shownCount].featureLink; var featureName = didyouknow[shownCount].featureName; didyouknowContainer += featureLink !== ” ? ” + featureName + ” : featureName; didyouknowContainer += ‘ ‘+didyouknow[shownCount].bottomTitle+’

‘+didyouknow[shownCount].body+’

Source