Indicates the timestamp when this job status has been queried.
Object.defineProperty(StatusJobData.prototype, 'queryJobStatusTimestamp',get: function())
readonly queryJobStatusTimestamp: string;
The timestamp when this job status has been queried. The default value is null.
This property will be set the first time StatusJobDataRunner.queryConvertJobStatus is called.
This property is a string that contains the timestamp in UTC using "yyyy-MM-ddTHH:mm:ss" format. Use Date.parse to parse it and Date.toLocalTime to convert it to a local time string.
import { DocumentHelper } from "../../utilities/DocumentHelper";export class StatusJobDataRunner_Example {private el: HTMLElement;public constructor() {lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);DocumentHelper.initFactory();}public run(buttonID: string) {document.getElementById(buttonID).onclick = this.convert;}convert = () => {// We will be converting this TIFF file to PDFconst imageUrl = "https://demo.leadtools.com/images/tiff/ocr.tif";const loadDocumentOptions = new lt.Document.LoadDocumentOptions();DocumentHelper.log("Loading document...");// Load the source document and save it to the cachelt.Document.DocumentFactory.loadFromUri(imageUrl, loadDocumentOptions).done((doc) => {DocumentHelper.log("Saving document to cache...");lt.Document.DocumentFactory.saveToCache(doc).done(() => {let userToken = null;let jobToken = null;let minWaitFromResponse = 2000;let minWaitFromRequest = 3000;let requestTime = -1;let responseTime = -1;let runQuery = null;// Document is the cache, create the job data and set its optionsconst jobData = new lt.Document.DocumentConverterJobData();jobData.documentFormat = lt.Document.Writer.DocumentFormat.pdf;// Convertconst convertJobPromise = lt.Document.Converter.StatusJobDataRunner.runConvertJob(doc.documentId, jobData).done((convertJobResult) => {// convertJobResult is of type lt.Document.Converter.StatusJobDataRunner.RunConvertJobResult// Get the user and job tokenuserToken = convertJobResult.userToken;jobToken = convertJobResult.jobToken;// Create the function to call when the job is doneconst queryDone = (statusJobData) => {// statusJobData is of type lt.Document.Converter.StatusJobData// Check for errorsif (statusJobData.errorMessages && statusJobData.errorMessages.length) {const messages = ["The conversion job encountered an error:",statusJobData.errorMessages[0],"Check the console for more information."];alert(messages.join("\n"));return;}else if (statusJobData.isCompleted) {// Completed successfully// Delete the joblt.Document.Converter.StatusJobDataRunner.deleteConvertJob(userToken, jobToken).always(() => {// Success, load the documentDocumentHelper.log("Finished loading result document...");lt.Document.DocumentFactory.loadFromUri(statusJobData.outputDocumentUri, loadDocumentOptions).done((resultDoc) => {const resultDocument = resultDoc.cacheUri;const link = document.createElement("a");const url = resultDocument;link.href = url;link.innerHTML = url;link.target = "_default";DocumentHelper.log("Converted: " + url, url);}).fail(DocumentHelper.showServiceError);});return;}DocumentHelper.log("Converting " + statusJobData.jobStatusMessage + "...");// Keep queryingrunQuery(Date.now());};runQuery = (responseTime) => {const now = Date.now();if (requestTime !== -1) {const timeSinceRequest = now - requestTime;const timeSinceResponse = now - responseTime;// If we haven't waited the minimum since the response and haven't waited the maximum since the request, waitif (timeSinceResponse < minWaitFromResponse || timeSinceRequest < minWaitFromRequest) {const waitTime = Math.max(minWaitFromResponse - timeSinceResponse, minWaitFromRequest - timeSinceRequest);window.setTimeout(() => {runQuery(responseTime);}, waitTime);return;}}lt.Document.Converter.StatusJobDataRunner.queryConvertJobStatus(userToken, jobToken).done(queryDone).fail(DocumentHelper.showServiceError);requestTime = Date.now();return;}runQuery(Date.now());}).fail(DocumentHelper.showServiceError);}).fail(DocumentHelper.showServiceError);}).fail(DocumentHelper.showServiceError);}}
export class DocumentHelper {static showServiceError = (jqXHR, statusText, errorThrown) => {alert("Error returned from service. See the console for details.");const serviceError = lt.Document.ServiceError.parseError(jqXHR, statusText, errorThrown);console.error(serviceError);}static log = (message: string, data?: any) => {const outputElement = document.getElementById("output");if (outputElement) {const time = (new Date()).toLocaleTimeString();const textElement = document.createElement("p");textElement.innerHTML = (outputElement.childElementCount + 1) + " [" + time + "]: " + message;outputElement.insertBefore(textElement, outputElement.firstChild);}if (!data)console.log(message);elseconsole.log(message, data);}static initFactory = () => {// To communicate with the DocumentsService, it must be running!// Change these parameters to match the path to the service.lt.Document.DocumentFactory.serviceHost = "http://localhost:40000";lt.Document.DocumentFactory.servicePath = "";lt.Document.DocumentFactory.serviceApiPath = "api";}}
import { DocumentHelper } from "../../utilities/DocumentHelper";export class StatusJobDataRunner_Example {el;constructor() {lt.RasterSupport.setLicenseUri("https://demo.leadtools.com/licenses/js/LEADTOOLSEVAL.txt", "EVAL", null);DocumentHelper.initFactory();}run(buttonID) {document.getElementById(buttonID).onclick = this.convert;}convert = () => {// We will be converting this TIFF file to PDFconst imageUrl = "https://demo.leadtools.com/images/tiff/ocr.tif";const loadDocumentOptions = new lt.Document.LoadDocumentOptions();DocumentHelper.log("Loading document...");// Load the source document and save it to the cachelt.Document.DocumentFactory.loadFromUri(imageUrl, loadDocumentOptions).done((doc) => {DocumentHelper.log("Saving document to cache...");lt.Document.DocumentFactory.saveToCache(doc).done(() => {let userToken = null;let jobToken = null;let minWaitFromResponse = 2000;let minWaitFromRequest = 3000;let requestTime = -1;let responseTime = -1;let runQuery = null;// Document is the cache, create the job data and set its optionsconst jobData = new lt.Document.DocumentConverterJobData();jobData.documentFormat = lt.Document.Writer.DocumentFormat.pdf;// Convertconst convertJobPromise = lt.Document.Converter.StatusJobDataRunner.runConvertJob(doc.documentId, jobData).done((convertJobResult) => {// convertJobResult is of type lt.Document.Converter.StatusJobDataRunner.RunConvertJobResult// Get the user and job tokenuserToken = convertJobResult.userToken;jobToken = convertJobResult.jobToken;// Create the function to call when the job is doneconst queryDone = (statusJobData) => {// statusJobData is of type lt.Document.Converter.StatusJobData// Check for errorsif (statusJobData.errorMessages && statusJobData.errorMessages.length) {const messages = ["The conversion job encountered an error:",statusJobData.errorMessages[0],"Check the console for more information."];alert(messages.join("\n"));return;}else if (statusJobData.isCompleted) {// Completed successfully// Delete the joblt.Document.Converter.StatusJobDataRunner.deleteConvertJob(userToken, jobToken).always(() => {// Success, load the documentDocumentHelper.log("Finished loading result document...");lt.Document.DocumentFactory.loadFromUri(statusJobData.outputDocumentUri, loadDocumentOptions).done((resultDoc) => {const resultDocument = resultDoc.cacheUri;const link = document.createElement("a");const url = resultDocument;link.href = url;link.innerHTML = url;link.target = "_default";DocumentHelper.log("Converted: " + url, url);}).fail(DocumentHelper.showServiceError);});return;}DocumentHelper.log("Converting " + statusJobData.jobStatusMessage + "...");// Keep queryingrunQuery(Date.now());};runQuery = (responseTime) => {const now = Date.now();if (requestTime !== -1) {const timeSinceRequest = now - requestTime;const timeSinceResponse = now - responseTime;// If we haven't waited the minimum since the response and haven't waited the maximum since the request, waitif (timeSinceResponse < minWaitFromResponse || timeSinceRequest < minWaitFromRequest) {const waitTime = Math.max(minWaitFromResponse - timeSinceResponse, minWaitFromRequest - timeSinceRequest);window.setTimeout(() => {runQuery(responseTime);}, waitTime);return;}}lt.Document.Converter.StatusJobDataRunner.queryConvertJobStatus(userToken, jobToken).done(queryDone).fail(DocumentHelper.showServiceError);requestTime = Date.now();return;}runQuery(Date.now());}).fail(DocumentHelper.showServiceError);}).fail(DocumentHelper.showServiceError);}).fail(DocumentHelper.showServiceError);}}
export class DocumentHelper {static showServiceError = (jqXHR, statusText, errorThrown) => {alert("Error returned from service. See the console for details.");const serviceError = lt.Document.ServiceError.parseError(jqXHR, statusText, errorThrown);console.error(serviceError);}static log = (message, data) => {const outputElement = document.getElementById("output");if (outputElement) {const time = (new Date()).toLocaleTimeString();const textElement = document.createElement("p");textElement.innerHTML = (outputElement.childElementCount + 1) + " [" + time + "]: " + message;outputElement.insertBefore(textElement, outputElement.firstChild);}if (!data)console.log(message);elseconsole.log(message, data);}static initFactory = () => {// To communicate with the DocumentsService, it must be running!// Change these parameters to match the path to the service.lt.Document.DocumentFactory.serviceHost = "http://localhost:40000";lt.Document.DocumentFactory.servicePath = "";lt.Document.DocumentFactory.serviceApiPath = "api";}}
<!doctype html><html lang="en"><title>Document Example | StatusJobDataRunner</title><head><script src="https://code.jquery.com/jquery-2.2.4.min.js"integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script><script src="../../LT/Leadtools.js"></script><script src="../../LT/Leadtools.Controls.js"></script><script src="../../LT/Leadtools.Annotations.Engine.js"></script><script src="../../LT/Leadtools.Annotations.Designers.js"></script><script src="../../LT/Leadtools.Annotations.Rendering.Javascript.js"></script><script src="../../LT/Leadtools.Annotations.Automation.js"></script><script src="../../LT/Leadtools.ImageProcessing.Main.js"></script><script src="../../LT/Leadtools.ImageProcessing.Color.js"></script><script src="../../LT/Leadtools.ImageProcessing.Core.js"></script><script src="../../LT/Leadtools.ImageProcessing.Effects.js"></script><script src="../../LT/Leadtools.Document.js"></script><script src="../../LT/Leadtools.Document.Viewer.js"></script><link rel="stylesheet" type="text/css" href="../../css/examples.css"><!-- All demo files are bundled and appended to the window --><script src="../../bundle.js" type="text/javascript"></script></head><body><div><button type="button" id="exampleButton">Run Example</button></div><div id="output"></div><div><img id="img" /></div></body><script>window.onload = () => {const example = new window.examples.StatusJobDataRunner();example.run("exampleButton");};</script></html>
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
