From 0f8593da3e75b8d44399c5f04edf000555b7406a Mon Sep 17 00:00:00 2001 From: Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> Date: Thu, 6 Apr 2023 22:17:13 +0530 Subject: Now downloading plot information pdf as well. --- config/webpack.config.js | 16 +- .../create-manifest-webpack-plugin/index.js | 2 +- config/webpack/utils/get-injection-code.js | 21 ++ .../view-khatian/download-document-content.ts | 228 +++++++++++++++++++++ src/scripts/functionality/view-khatian/index.ts | 30 ++- .../view-khatian/khatian-download-document.ts | 160 --------------- src/shared/download-pdf.ts | 2 +- 7 files changed, 280 insertions(+), 179 deletions(-) create mode 100644 src/scripts/functionality/view-khatian/download-document-content.ts delete mode 100644 src/scripts/functionality/view-khatian/khatian-download-document.ts diff --git a/config/webpack.config.js b/config/webpack.config.js index 629a373..78f4060 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -129,15 +129,7 @@ const uninjectedScriptConfiguration = merge( commonOptions, sharedModuleOptions, { - entry: uninjectedScriptEntries, - plugins: [ - new CopyPlugin({ - patterns: [{ - from: path.resolve(ROOT_DIR, "static"), - to: "./" - }] - }) - ] + entry: uninjectedScriptEntries } ); @@ -169,6 +161,12 @@ const sharedModulesConfiguration = merge( { entry: sharedModuleEntries, plugins: [ + new CopyPlugin({ + patterns: [{ + from: path.resolve(ROOT_DIR, "static"), + to: "./" + }] + }), new CreateManifestPlugin({ sharedModulesImportedCount, sortedSharedModules diff --git a/config/webpack/plugins/create-manifest-webpack-plugin/index.js b/config/webpack/plugins/create-manifest-webpack-plugin/index.js index 667f1de..2187a05 100644 --- a/config/webpack/plugins/create-manifest-webpack-plugin/index.js +++ b/config/webpack/plugins/create-manifest-webpack-plugin/index.js @@ -17,7 +17,7 @@ class CreateManifestPlugin { compilation.hooks.processAssets.tap( { name: "CreateManifestPlugin", - stage: compiler.webpack.Compilation.PROCESS_ASSETS_ADDITIONAL, + stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_ANALYSE, additionalAssets: true }, assets => { diff --git a/config/webpack/utils/get-injection-code.js b/config/webpack/utils/get-injection-code.js index ec969c1..0a57ef9 100644 --- a/config/webpack/utils/get-injection-code.js +++ b/config/webpack/utils/get-injection-code.js @@ -1,9 +1,30 @@ +const insertAtIndex = (str, substring, index) => str.slice(0, index) + substring + str.slice(index); + module.exports.getInjectionCode = (code, front) => { let finalCode = code .replaceAll("\\", "\\\\") .replaceAll("`","\\`") .replaceAll("${", "\\${"); + let i = 0; + + while (true) { + i = finalCode.indexOf("chrome.runtime", i); + + if (i < 0) { + break; + } + + finalCode = insertAtIndex(finalCode, "\"${", i); + i = finalCode.indexOf(")", i) + 1; + + if (i <= 0) { + break; + } + + finalCode = insertAtIndex(finalCode, "}\"", i); + } + const concatenationCode = front ? "t.innerHTML=i+t.innerHTML" : "t.innerHTML+=i"; diff --git a/src/scripts/functionality/view-khatian/download-document-content.ts b/src/scripts/functionality/view-khatian/download-document-content.ts new file mode 100644 index 0000000..594db5e --- /dev/null +++ b/src/scripts/functionality/view-khatian/download-document-content.ts @@ -0,0 +1,228 @@ +const sanghaFacilitationCentreBannerUrl = chrome.runtime.getURL("/assets/sangha-facilitation-centre-banner.jpg"); + +export default (isPlotInformation: boolean, details: string, { district, block, mouza }: { district: string, block: string, mouza: string }) => ` + + +
${details}
+ + +`; diff --git a/src/scripts/functionality/view-khatian/index.ts b/src/scripts/functionality/view-khatian/index.ts index baf6d8e..0cb3947 100644 --- a/src/scripts/functionality/view-khatian/index.ts +++ b/src/scripts/functionality/view-khatian/index.ts @@ -1,7 +1,7 @@ import { downloadPDF } from "@/shared/download-pdf"; -import getKhatinDetailsPDFPageData from "@/scripts/functionality/view-khatian/khatian-download-document"; +import getDetailsPDFContent from "@/scripts/functionality/view-khatian/download-document-content"; -declare function loadKhatian(): void; +declare function load(): void; document.addEventListener("DOMContentLoaded", () => { const proxiedPost = $.post; @@ -23,21 +23,33 @@ document.addEventListener("DOMContentLoaded", () => { return element.options[element.selectedIndex].text; }; - const downloadKhatianInformationPDF = () => { - const documentStringContent = getKhatinDetailsPDFPageData(document.querySelector("#khdetails")!.innerHTML, { + let isPlotInformation: boolean | null = null; + + const downloadInformationPDF = () => { + let contentElement = document.getElementById(isPlotInformation ? "plotdetails" : "khdetails"); + const documentStringContent = getDetailsPDFContent(!!isPlotInformation, contentElement!.innerHTML, { district: getValueOfSelectElement("#lstDistrictCode1"), block: getValueOfSelectElement("#lstBlockCode1"), mouza: getValueOfSelectElement("#lstMouzaList") }); - downloadPDF(`
${documentStringContent}
`, "khatian-details.pdf"); + downloadPDF(`
${documentStringContent}
`); }; $.post = function() { - if (arguments[0].startsWith("khDetailsAction_LandInfo.action")) { + if (arguments[0].startsWith("plotDetailsAction_LandInfo.action")) { + isPlotInformation = true; + } else if (arguments[0].startsWith("khDetailsAction_LandInfo.action")) { + isPlotInformation = false; + } + + if (isPlotInformation !== null) { const callback = arguments[2]; arguments[2] = (data: any) => { callback(data); - const tableElement = document.querySelector("#khdetails > table > tbody > tr > td:nth-child(1) > div:nth-child(5) > table > tbody") as HTMLElement | null; + const tableElement = document.querySelector(isPlotInformation + ? "#plotdetails > div:nth-child(1) > div:nth-child(4) > table > tbody" + : "#khdetails > table > tbody > tr > td:nth-child(1) > div:nth-child(5) > table > tbody" + ) as HTMLElement | null; if (tableElement) { tableElement.style.height = "auto"; @@ -48,11 +60,13 @@ document.addEventListener("DOMContentLoaded", () => { downloadPDFButton.innerHTML = "Download PDF"; downloadPDFButton.style.cssText = styles; downloadPDFButton.style.width = "auto"; - downloadPDFButton.addEventListener("click", downloadKhatianInformationPDF); + downloadPDFButton.style.marginBottom = "1rem"; + downloadPDFButton.addEventListener("click", downloadInformationPDF); formElement.insertBefore(downloadPDFButton, separatorElement); } } else if (downloadPDFButton) { formElement.removeChild(downloadPDFButton); + isPlotInformation = null; downloadPDFButton = null; } } diff --git a/src/scripts/functionality/view-khatian/khatian-download-document.ts b/src/scripts/functionality/view-khatian/khatian-download-document.ts deleted file mode 100644 index c13d0dd..0000000 --- a/src/scripts/functionality/view-khatian/khatian-download-document.ts +++ /dev/null @@ -1,160 +0,0 @@ -// TODO: Use the local static asset -const sanghaFacilitationCentreBannerUrl = /* chrome.runtime.getURL("/sangha-facilitation-centre-banner.jpg") */ "https://raw.githubusercontent.com/arpitchakladar/banglar-bhumi-utils/master/static/sangha-facilitation-centre-banner.jpg"; - -export default (khatianDetails: string, { district, block, mouza }: { district: string, block: string, mouza: string }) => ` - - -
${khatianDetails}
- - -`; diff --git a/src/shared/download-pdf.ts b/src/shared/download-pdf.ts index 67540a6..e741942 100644 --- a/src/shared/download-pdf.ts +++ b/src/shared/download-pdf.ts @@ -13,7 +13,7 @@ const autoPrintCode = ` `; -export const downloadPDF = (content: string, filename: string = "banglarbhumi.pdf") => { +export const downloadPDF = (content: string) => { const tab = window.open("about:blank", "_blank"); if (tab) { -- cgit v1.2.3