{"version":3,"sources":["../js/Text/GreenlightTextData.js"],"names":["g_oTextData","TextData","this","g_oLoadedTextData","prototype","getTextData","DocumentId","PageNumber","oTextData","i","length","documentId","pageNumber","removeTextData","splice","loadTextData","ShowEmptyTextDataError","Callback","textData","push","callbacks","oJSON","SessionId","g_szSessionId","$","ajax","type","url","data","JSON","stringify","contentType","dataType","success","response","loadTextData_CH","failure","g_oGreenlightMessages","displayErrorBubble","c_szFailedToLoadTextData","error","Response","Success","c_szDocumentHasNoLiveText","oTextContent","parse","Contents","Paragraphs","loadFullTextData","oDocument","fullDocumentDataLoaded","pages","documentPageNumber","loadFullTextData_CH","fullDocumentHasLiveText","window"],"mappings":"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","file":"GreenlightTextData-0828cbf91e.js","sourcesContent":["/*\r\n * Copyright (c) 2024 SGS Europe. All rights reserved.\r\n *\r\n * This program is the CONFIDENTIAL and PROPRIETARY property of SGS Europe.\r\n * Any unauthorised use, reproduction, or transfer of this program is strictly\r\n * prohibited.\r\n *\r\n * File Name: GreenlightTextData.js\r\n *\r\n * Description:\tFunctionality for loading and getting text data for greenlight documents.\r\n * \r\n */\r\n\r\n// The text data object.\r\nvar g_oTextData = {};\r\n\r\n(function () {\r\n\t\"use strict\";\r\n\r\n\t/**\r\n\t * Load the text data for greenlight documents.\r\n\t */\r\n\tfunction TextData() {\r\n\r\n\t\t// The list of loaded text data for greenlight documents.\r\n\t\tthis.g_oLoadedTextData = [];\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the text data for a document page.\r\n\t * @param {int} DocumentId - The id of the document.\r\n\t * @param {int} PageNumber - The page number.\r\n\t * @returns {object} - The text data.\r\n\t */\r\n\tTextData.prototype.getTextData = function (DocumentId, PageNumber) {\r\n\r\n\t\t// Outline the text data to be returned.\r\n\t\tvar oTextData = null;\r\n\r\n\t\t// Loop through each of the text data we have.\r\n\t\tfor (var i = 0; i < g_oTextData.g_oLoadedTextData.length; i++) {\r\n\r\n\t\t\t// If this is the text data for the document page.\r\n\t\t\tif (g_oTextData.g_oLoadedTextData[i].documentId == DocumentId && g_oTextData.g_oLoadedTextData[i].pageNumber == PageNumber) {\r\n\r\n\t\t\t\t// Return the text data.\r\n\t\t\t\toTextData = g_oTextData.g_oLoadedTextData[i];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Return the text data.\r\n\t\treturn oTextData;\r\n\t};\r\n\r\n\t/**\r\n\t * Removes text data for a document page.\r\n\t * @param {int} DocumentId - The id of the document.\r\n\t * @param {int} PageNumber - The page number.\r\n\t */\r\n\tTextData.prototype.removeTextData = function (DocumentId, PageNumber) {\r\n\r\n\t\t// Loop through each of the text data we have.\r\n\t\tfor (var i = 0; i < g_oTextData.g_oLoadedTextData.length; i++) {\r\n\r\n\t\t\t// If this is the text data for the document page.\r\n\t\t\tif (g_oTextData.g_oLoadedTextData[i].documentId == DocumentId && g_oTextData.g_oLoadedTextData[i].pageNumber == PageNumber) {\r\n\r\n\t\t\t\t// Remove the text data.\r\n\t\t\t\tg_oTextData.g_oLoadedTextData.splice(i, 1);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Loads the text data for a document page.\r\n\t * @param {int} DocumentId - The id of the document.\r\n\t * @param {int} PageNumber - The page number.\r\n\t * @param {bool} ShowEmptyTextDataError - If an error should be shown for empty text data.\r\n\t * @param {function} Callback - The callback once loaded.\r\n\t */\r\n\tTextData.prototype.loadTextData = function (DocumentId, PageNumber, ShowEmptyTextDataError, Callback) {\r\n\t\t\r\n\t\t// Get the text data for this document page.\r\n\t\tvar oTextData = g_oTextData.getTextData(DocumentId, PageNumber);\r\n\r\n\t\t// If this text data has already been loaded.\r\n\t\tif (oTextData != null && oTextData.textData != null) {\r\n\r\n\t\t\t// Call the callback.\r\n\t\t\tCallback();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// If this text data is in the process of loading.\r\n\t\telse if (oTextData != null && oTextData.textData == null) {\r\n\r\n\t\t\t// Add the callback to be called when the text data is loaded.\r\n\t\t\toTextData.callbacks.push(Callback);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Add the text data for this document page with the callback.\r\n\t\tg_oTextData.g_oLoadedTextData.push({\r\n\t\t\tdocumentId: DocumentId,\r\n\t\t\tpageNumber: PageNumber,\r\n\t\t\ttextData: null,\r\n\t\t\tcallbacks: [Callback]\r\n\t\t});\r\n\r\n\t\t// Build up the JSON to be posted.\r\n\t\tvar oJSON = {\r\n\t\t\tSessionId: g_szSessionId,\r\n\t\t\tDocumentId: DocumentId,\r\n\t\t\tPageNumber: PageNumber\r\n\t\t};\r\n\t\t\r\n\t\t// Call to load the text data.\r\n\t\t$.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: \"TextTools/GetTextData\",\r\n\t\t\tdata: JSON.stringify(oJSON),\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\tdataType: \"json\",\r\n\t\t\tsuccess: function (response) {\r\n\t\t\t\tg_oTextData.loadTextData_CH(DocumentId, PageNumber, ShowEmptyTextDataError, response);\r\n\t\t\t},\r\n\t\t\tfailure: function (response) {\r\n\t\t\t\tg_oGreenlightMessages.displayErrorBubble(g_oTextData.c_szFailedToLoadTextData);\r\n\t\t\t},\r\n\t\t\terror: function (response) {\r\n\t\t\t\tg_oGreenlightMessages.displayErrorBubble(g_oTextData.c_szFailedToLoadTextData);\r\n\t\t\t},\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Callback for loading the text data for a document page.\r\n\t * @param {int} DocumentId - The id of the document.\r\n\t * @param {int} PageNumber - The page number.\r\n\t * @param {bool} ShowEmptyTextDataError - If an error should be shown for empty text data.\r\n\t * @param {object} Response - The response from loading.\r\n\t */\r\n\tTextData.prototype.loadTextData_CH = function (DocumentId, PageNumber, ShowEmptyTextDataError, Response) {\r\n\r\n\t\t// If unsuccessful.\r\n\t\tif (!Response.Success) {\r\n\t\t\tg_oTextData.removeTextData(DocumentId, PageNumber);\r\n\t\t\tg_oGreenlightMessages.displayErrorBubble(g_oTextData.c_szDocumentHasNoLiveText);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Extract the text content.\r\n\t\tvar oTextContent = JSON.parse(Response.Contents);\r\n\r\n\t\t// Check for empty text data if required.\r\n\t\tif (ShowEmptyTextDataError && oTextContent.Paragraphs.length == 0) {\r\n\t\t\tg_oTextData.removeTextData(DocumentId, PageNumber);\r\n\t\t\tg_oGreenlightMessages.displayErrorBubble(g_oTextData.c_szDocumentHasNoLiveText);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Get the text data for this document page.\r\n\t\tvar oTextData = g_oTextData.getTextData(DocumentId, PageNumber);\r\n\r\n\t\t// Add the text data content.\r\n\t\toTextData.textData = oTextContent;\r\n\r\n\t\t// Call each of the callbacks for the text data.\r\n\t\tfor (var i = 0; i < oTextData.callbacks.length; i++) {\r\n\t\t\toTextData.callbacks[i]();\r\n\t\t\toTextData.callbacks.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Loads the text data for all the pages in a document.\r\n\t * @param {object} oDocument - The document.\r\n\t * @param {object} Callback - The callback.\r\n\t */\r\n\tTextData.prototype.loadFullTextData = function (oDocument, Callback) {\r\n\t\t\r\n\t\t// If this text data has already been loaded.\r\n\t\tif (g_oTextData.fullDocumentDataLoaded(oDocument)) {\r\n\r\n\t\t\t// Call the callback.\r\n\t\t\tCallback();\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Load the text data for each of the document pages.\r\n\t\tfor (var i = 0; i < oDocument.pages.length; i++) {\r\n\r\n\t\t\t// Load the text data for the document page.\r\n\t\t\tg_oTextData.loadTextData(oDocument.documentId, oDocument.pages[i].documentPageNumber, false, function () { g_oTextData.loadFullTextData_CH(oDocument, Callback); });\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Callback for loading all the text data for a document.\r\n\t * @param {any} oDocument - The document.\r\n\t * @param {any} Callback - The callback.\r\n\t */\r\n\tTextData.prototype.loadFullTextData_CH = function (oDocument, Callback) {\r\n\t\t\r\n\t\t// Check to ensure we have loaded the text data for all pages on this document.\r\n\t\tif (!g_oTextData.fullDocumentDataLoaded(oDocument)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check to see if we need an error when no pages have text data.\r\n\t\tif (!g_oTextData.fullDocumentHasLiveText(oDocument)) {\r\n\t\t\tg_oGreenlightMessages.displayErrorBubble(g_oTextData.c_szDocumentHasNoLiveText);\r\n\t\t}\r\n\r\n\t\t// Call the callback once all pages have loaded.\r\n\t\tCallback();\r\n\t};\r\n\r\n\t/**\r\n\t * Checks if the full data has been loaded for a document.\r\n\t * @param {object} oDocument - The document.\r\n\t * @returns - If the full data has been loaded.\r\n\t */\r\n\tTextData.prototype.fullDocumentDataLoaded = function (oDocument) {\r\n\r\n\t\t// Check to ensure we have loaded the text data for all pages on this document.\r\n\t\tfor (var i = 0; i < oDocument.pages.length; i++) {\r\n\t\t\tvar oTextData = g_oTextData.getTextData(oDocument.documentId, oDocument.pages[i].documentPageNumber);\r\n\t\t\tif (oTextData == null || oTextData.textData == null) {\r\n\r\n\t\t\t\t// Document page not loaded.\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// All document pages loaded.\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the full document has live text.\r\n\t * @param {object} oDocument - The document.\r\n\t * @returns - If the full document has live text.\r\n\t */\r\n\tTextData.prototype.fullDocumentHasLiveText = function (oDocument) {\r\n\r\n\t\t// Check for any text content.\r\n\t\tfor (var i = 0; i < oDocument.pages.length; i++) {\r\n\t\t\tvar oTextData = g_oTextData.getTextData(oDocument.documentId, oDocument.pages[i].documentPageNumber);\r\n\t\t\tif (oTextData != null && oTextData.textData != null && oTextData.textData.Paragraphs.length > 0) {\r\n\r\n\t\t\t\t// Document page has text data.\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// All document pages have no text data.\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Add the Text Data UI object to the window.\r\n\twindow.TextData = TextData;\r\n}());"]}