{"id":6041,"date":"2019-11-02T16:47:21","date_gmt":"2019-11-02T11:17:21","guid":{"rendered":"https:\/\/mgt.sjp.ac.lk\/bec\/?p=6041"},"modified":"2026-11-12T09:36:38","modified_gmt":"2026-11-12T04:06:38","slug":"the-business-economist-volume-1","status":"publish","type":"post","link":"https:\/\/mgt.sjp.ac.lk\/bec\/the-business-economist-volume-1\/","title":{"rendered":"The Business Economist (Volume 01)"},"content":{"rendered":"\n<div id=\"bec-business-economist-volume-01\"\n     class=\"bec-pdf-flipbook\"\n     aria-label=\"The Business Economist Volume 01 flipbook\">\n\n  <div class=\"bec-pdf-toolbar\">\n\n    <button type=\"button\"\n            class=\"bec-pdf-button bec-pdf-previous\"\n            disabled>\n      Previous\n    <\/button>\n\n    <span class=\"bec-pdf-status\" aria-live=\"polite\">\n      Loading publication&#8230;\n    <\/span>\n\n    <button type=\"button\"\n            class=\"bec-pdf-button bec-pdf-next\"\n            disabled>\n      Next\n    <\/button>\n\n    <button type=\"button\"\n            class=\"bec-pdf-button bec-pdf-fullscreen\">\n      Fullscreen\n    <\/button>\n\n    <a class=\"bec-pdf-open\"\n       href=\"https:\/\/mgt.sjp.ac.lk\/bec\/wp-content\/uploads\/2020\/12\/The-Business-Economist-Volume-01-December-2019.pdf\"\n       target=\"_blank\"\n       rel=\"noopener\">\n      Open PDF\n    <\/a>\n\n  <\/div>\n\n  <div class=\"bec-pdf-stage\">\n\n    <div class=\"bec-pdf-loading\" aria-live=\"polite\">\n      Loading publication&#8230;\n    <\/div>\n\n    <div class=\"bec-pdf-book\"><\/div>\n\n  <\/div>\n\n  <div class=\"bec-pdf-error\" hidden>\n    The publication could not be displayed. Please use the \u201cOpen PDF\u201d option.\n  <\/div>\n\n<\/div>\n\n<style>\n.bec-pdf-flipbook {\n  width: 100%;\n  margin: 0;\n  color: #222;\n  background: #fff;\n  border: 1px solid #e5e5e5;\n  border-left: 5px solid #8A0007;\n  border-radius: 14px;\n  overflow: hidden;\n  font-family: Arial, sans-serif;\n  box-sizing: border-box;\n}\n\n.bec-pdf-flipbook *,\n.bec-pdf-flipbook *::before,\n.bec-pdf-flipbook *::after {\n  box-sizing: border-box;\n}\n\n\/* Toolbar *\/\n.bec-pdf-toolbar {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-wrap: wrap;\n  gap: 9px;\n  padding: 13px;\n  background: #fafafa;\n  border-bottom: 1px solid #e5e5e5;\n}\n\n.bec-pdf-button,\n.bec-pdf-open {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 38px;\n  padding: 8px 14px;\n  color: #fff;\n  background: #4E0205;\n  border: 1px solid #4E0205;\n  border-radius: 7px;\n  font-family: Arial, sans-serif;\n  font-size: 13px;\n  font-weight: bold;\n  line-height: 1.2;\n  text-decoration: none;\n  cursor: pointer;\n  transition:\n    background 0.25s ease,\n    border-color 0.25s ease;\n}\n\n.bec-pdf-button:hover,\n.bec-pdf-open:hover {\n  color: #fff;\n  background: #8A0007;\n  border-color: #8A0007;\n  text-decoration: none;\n}\n\n.bec-pdf-button:disabled {\n  opacity: 0.4;\n  cursor: not-allowed;\n}\n\n.bec-pdf-status {\n  min-width: 120px;\n  color: #4E0205;\n  font-size: 13px;\n  font-weight: bold;\n  text-align: center;\n}\n\n\/* Book area *\/\n.bec-pdf-stage {\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  min-height: 560px;\n  padding: 22px 10px;\n  overflow: hidden;\n  background: #efeded;\n}\n\n.bec-pdf-book {\n  margin: 0 auto;\n  visibility: hidden;\n}\n\n.bec-pdf-book.bec-pdf-ready {\n  visibility: visible;\n}\n\n\/* Individual PDF pages *\/\n.bec-pdf-page {\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  overflow: hidden;\n  background: #fff;\n}\n\n.bec-pdf-page canvas {\n  display: block;\n  width: 100%;\n  height: 100%;\n  background: #fff;\n  object-fit: contain;\n}\n\n.bec-pdf-page-number {\n  position: absolute;\n  right: 8px;\n  bottom: 6px;\n  color: #777;\n  font-size: 10px;\n  line-height: 1;\n}\n\n\/* Loading message *\/\n.bec-pdf-loading {\n  position: absolute;\n  z-index: 10;\n  top: 50%;\n  left: 50%;\n  padding: 12px 16px;\n  color: #4E0205;\n  background: rgba(255, 255, 255, 0.95);\n  border-radius: 8px;\n  font-size: 14px;\n  font-weight: bold;\n  transform: translate(-50%, -50%);\n  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.1);\n}\n\n.bec-pdf-error {\n  padding: 15px;\n  color: #8A0007;\n  background: #fff5f5;\n  border-top: 1px solid #e5e5e5;\n  font-size: 14px;\n  line-height: 1.6;\n  text-align: center;\n}\n\n.bec-pdf-flipbook [hidden] {\n  display: none !important;\n}\n\n\/* Keyboard focus *\/\n.bec-pdf-button:focus-visible,\n.bec-pdf-open:focus-visible {\n  outline: 3px solid rgba(138, 0, 7, 0.25);\n  outline-offset: 3px;\n}\n\n\/* Fullscreen *\/\n.bec-pdf-flipbook:fullscreen {\n  padding: 0;\n  overflow: auto;\n  background: #efeded;\n  border: 0;\n  border-radius: 0;\n}\n\n.bec-pdf-flipbook:fullscreen .bec-pdf-stage {\n  min-height: calc(100vh - 66px);\n}\n\n\/* Mobile *\/\n@media (max-width: 680px) {\n  .bec-pdf-toolbar {\n    gap: 7px;\n    padding: 10px;\n  }\n\n  .bec-pdf-button,\n  .bec-pdf-open {\n    min-height: 36px;\n    padding: 8px 11px;\n    font-size: 12px;\n  }\n\n  .bec-pdf-status {\n    order: -1;\n    width: 100%;\n    min-width: 0;\n    margin-bottom: 2px;\n  }\n\n  .bec-pdf-stage {\n    min-height: 430px;\n    padding: 14px 5px;\n  }\n}\n<\/style>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/page-flip@2.0.7\/dist\/js\/page-flip.browser.js\"><\/script>\n\n<script type=\"module\">\nimport * as pdfjsLib from \"https:\/\/cdn.jsdelivr.net\/npm\/pdfjs-dist@6.5.438\/build\/pdf.min.mjs\";\n\n(async function () {\n  const reader = document.getElementById(\"bec-business-economist-volume-01\");\n\n  if (!reader || reader.dataset.initialised === \"true\") {\n    return;\n  }\n\n  reader.dataset.initialised = \"true\";\n\n  const PDF_URL =\n    \"https:\/\/mgt.sjp.ac.lk\/bec\/wp-content\/uploads\/2020\/12\/The-Business-Economist-Volume-01-December-2019.pdf\";\n\n  const bookElement = reader.querySelector(\".bec-pdf-book\");\n  const loadingElement = reader.querySelector(\".bec-pdf-loading\");\n  const errorElement = reader.querySelector(\".bec-pdf-error\");\n  const statusElement = reader.querySelector(\".bec-pdf-status\");\n  const previousButton = reader.querySelector(\".bec-pdf-previous\");\n  const nextButton = reader.querySelector(\".bec-pdf-next\");\n  const fullscreenButton = reader.querySelector(\".bec-pdf-fullscreen\");\n\n  pdfjsLib.GlobalWorkerOptions.workerSrc =\n    \"https:\/\/cdn.jsdelivr.net\/npm\/pdfjs-dist@6.5.438\/build\/pdf.worker.min.mjs\";\n\n  try {\n    if (!window.St || !window.St.PageFlip) {\n      throw new Error(\"PageFlip could not be loaded.\");\n    }\n\n    const loadingTask = pdfjsLib.getDocument({\n      url: PDF_URL,\n      cMapUrl:\n        \"https:\/\/cdn.jsdelivr.net\/npm\/pdfjs-dist@6.5.438\/cmaps\/\",\n      cMapPacked: true,\n      standardFontDataUrl:\n        \"https:\/\/cdn.jsdelivr.net\/npm\/pdfjs-dist@6.5.438\/standard_fonts\/\",\n      wasmUrl:\n        \"https:\/\/cdn.jsdelivr.net\/npm\/pdfjs-dist@6.5.438\/wasm\/\"\n    });\n\n    const pdf = await loadingTask.promise;\n    const firstPdfPage = await pdf.getPage(1);\n    const firstViewport = firstPdfPage.getViewport({ scale: 1 });\n\n    const pageRatio =\n      firstViewport.height \/ firstViewport.width;\n\n    const basePageWidth = 550;\n    const basePageHeight =\n      Math.round(basePageWidth * pageRatio);\n\n    const pageElements = [];\n    const pageCanvases = [];\n    const renderedPages = new Set();\n    const renderingPages = new Map();\n\n    for (\n      let pageNumber = 1;\n      pageNumber <= pdf.numPages;\n      pageNumber++\n    ) {\n      const pageElement = document.createElement(\"div\");\n      pageElement.className = \"bec-pdf-page\";\n      pageElement.dataset.pageNumber = pageNumber;\n\n      if (\n        pageNumber === 1 ||\n        pageNumber === pdf.numPages\n      ) {\n        pageElement.dataset.density = \"hard\";\n      }\n\n      const canvas = document.createElement(\"canvas\");\n      canvas.setAttribute(\n        \"aria-label\",\n        \"Page \" + pageNumber\n      );\n\n      const pageNumberElement =\n        document.createElement(\"span\");\n\n      pageNumberElement.className =\n        \"bec-pdf-page-number\";\n\n      pageNumberElement.textContent = pageNumber;\n\n      pageElement.appendChild(canvas);\n      pageElement.appendChild(pageNumberElement);\n      bookElement.appendChild(pageElement);\n\n      pageElements.push(pageElement);\n      pageCanvases.push(canvas);\n    }\n\n    async function renderPage(pageNumber) {\n      if (\n        pageNumber < 1 ||\n        pageNumber > pdf.numPages ||\n        renderedPages.has(pageNumber)\n      ) {\n        return;\n      }\n\n      if (renderingPages.has(pageNumber)) {\n        return renderingPages.get(pageNumber);\n      }\n\n      const renderPromise = (async function () {\n        const pdfPage = await pdf.getPage(pageNumber);\n        const originalViewport =\n          pdfPage.getViewport({ scale: 1 });\n\n        const targetWidth =\n          window.innerWidth <= 680 ? 700 : 900;\n\n        const renderScale =\n          targetWidth \/ originalViewport.width;\n\n        const viewport =\n          pdfPage.getViewport({ scale: renderScale });\n\n        const canvas =\n          pageCanvases[pageNumber - 1];\n\n        const context = canvas.getContext(\"2d\", {\n          alpha: false\n        });\n\n        canvas.width =\n          Math.floor(viewport.width);\n\n        canvas.height =\n          Math.floor(viewport.height);\n\n        await pdfPage.render({\n          canvasContext: context,\n          viewport: viewport\n        }).promise;\n\n        renderedPages.add(pageNumber);\n      })();\n\n      renderingPages.set(pageNumber, renderPromise);\n\n      try {\n        await renderPromise;\n      } finally {\n        renderingPages.delete(pageNumber);\n      }\n    }\n\n    \/* Render the cover and first internal page *\/\n    await Promise.all([\n      renderPage(1),\n      renderPage(2)\n    ]);\n\n    const pageFlip = new window.St.PageFlip(\n      bookElement,\n      {\n        width: basePageWidth,\n        height: basePageHeight,\n        size: \"stretch\",\n        minWidth: 260,\n        maxWidth: 650,\n        minHeight: Math.round(260 * pageRatio),\n        maxHeight: Math.round(650 * pageRatio),\n        showCover: true,\n        usePortrait: true,\n        autoSize: true,\n        drawShadow: true,\n        maxShadowOpacity: 0.28,\n        flippingTime: 700,\n        mobileScrollSupport: true,\n        clickEventForward: true\n      }\n    );\n\n    pageFlip.loadFromHTML(pageElements);\n\n    function updateControls(pageIndex) {\n      const currentPage = Math.min(\n        pageIndex + 1,\n        pdf.numPages\n      );\n\n      statusElement.textContent =\n        \"Page \" +\n        currentPage +\n        \" of \" +\n        pdf.numPages;\n\n      previousButton.disabled =\n        pageIndex <= 0;\n\n      nextButton.disabled =\n        pageIndex >= pdf.numPages - 1;\n    }\n\n    function renderNearbyPages(pageIndex) {\n      const currentPage = pageIndex + 1;\n\n      for (\n        let pageNumber = currentPage - 1;\n        pageNumber <= currentPage + 3;\n        pageNumber++\n      ) {\n        renderPage(pageNumber);\n      }\n    }\n\n    pageFlip.on(\"init\", function (event) {\n      const pageIndex = Number(event.data.page || 0);\n\n      updateControls(pageIndex);\n      renderNearbyPages(pageIndex);\n    });\n\n    pageFlip.on(\"flip\", function (event) {\n      const pageIndex = Number(event.data);\n\n      updateControls(pageIndex);\n      renderNearbyPages(pageIndex);\n    });\n\n    previousButton.addEventListener(\n      \"click\",\n      function () {\n        pageFlip.flipPrev();\n      }\n    );\n\n    nextButton.addEventListener(\n      \"click\",\n      function () {\n        pageFlip.flipNext();\n      }\n    );\n\n    reader.addEventListener(\n      \"keydown\",\n      function (event) {\n        if (event.key === \"ArrowLeft\") {\n          pageFlip.flipPrev();\n        }\n\n        if (event.key === \"ArrowRight\") {\n          pageFlip.flipNext();\n        }\n      }\n    );\n\n    if (!reader.requestFullscreen) {\n      fullscreenButton.hidden = true;\n    } else {\n      fullscreenButton.addEventListener(\n        \"click\",\n        async function () {\n          if (!document.fullscreenElement) {\n            await reader.requestFullscreen();\n          } else {\n            await document.exitFullscreen();\n          }\n        }\n      );\n\n      document.addEventListener(\n        \"fullscreenchange\",\n        function () {\n          fullscreenButton.textContent =\n            document.fullscreenElement === reader\n              ? \"Exit Fullscreen\"\n              : \"Fullscreen\";\n        }\n      );\n    }\n\n    loadingElement.hidden = true;\n    bookElement.classList.add(\"bec-pdf-ready\");\n    previousButton.disabled = true;\n    nextButton.disabled = pdf.numPages <= 1;\n\n    updateControls(0);\n\n    \/* Prepare the next pages without delaying the reader *\/\n    renderPage(3);\n    renderPage(4);\n\n  } catch (error) {\n    console.error(error);\n\n    loadingElement.hidden = true;\n    errorElement.hidden = false;\n    statusElement.textContent =\n      \"Unable to load publication\";\n\n    previousButton.disabled = true;\n    nextButton.disabled = true;\n  }\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Department of Business Economics proudly presents the inaugural edition of its official newsletter, The Business Economist, published by the Alumni Association. <\/p>\n","protected":false},"author":2,"featured_media":6279,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[7,36,2],"tags":[],"class_list":["post-6041","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-publications","category-the-business-economist","category-top-stories"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7odTZ-1zr","jetpack_featured_media_url":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-content\/uploads\/2019\/11\/Featured-Image.png","_links":{"self":[{"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/posts\/6041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/comments?post=6041"}],"version-history":[{"count":25,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/posts\/6041\/revisions"}],"predecessor-version":[{"id":13110,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/posts\/6041\/revisions\/13110"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/media\/6279"}],"wp:attachment":[{"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/media?parent=6041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/categories?post=6041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mgt.sjp.ac.lk\/bec\/wp-json\/wp\/v2\/tags?post=6041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}