<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Vuforia Studio with Thingworx in Vuforia Studio</title>
    <link>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Vuforia-Studio-with-Thingworx/m-p/1017101#M13025</link>
    <description>&lt;P&gt;Hi Everyone,&lt;/P&gt;&lt;P&gt;Good Morning,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a use case in which the user uses model target and inspects a part. The inspection involves various checkpoints. For each check point the user clicks Pass/Fail button and on click of the button the screenshot is taken and the image is send to thingworx along with other details and after that the system moves on next checkpoint and the process follows.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Issue:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The below code works fine in preview all the images are sent along with the details but when previewed through View app on iPad the images are sent randomly example out of 50 images only 38 are sent or sometimes 45 are sent.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can anyone help me out in figuring out what's wrong&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// $scope, $element, $attrs, $injector, $sce, $timeout, $http, $ionicPopup, and $ionicPopover services are available&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//console.log($scope.app)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Start Time&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.timeStart = function(){&lt;/P&gt;&lt;P&gt;$scope.app.params.startTime = new Date();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//End Time&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.timeEnd = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.app.params.endTime = new Date();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Add Inspection Data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.addEmployeeData = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'AddInspectionData';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'GUID':$scope.app.params.uniqueID, 'PartNumber': $scope.view.wdg['labelPartNumber'].text, 'EmployeeID': $scope.app.params.userName, 'CycleStartTime' : $scope.app.params.startTime, 'Experience':$scope.view.wdg['programName'].text, 'Revision':$scope.view.wdg['revisionName'].text}; //'Bin':$scope.view.wdg['textInputBinName'].text&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //console.log("Starting UPLOAD using image size " + width);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'AddInspectionData', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //},100);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Employee Name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.employeeName = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; const empID = Number($scope.app.params.employeeID);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;const employeeList = $scope.view.wdg['selectEmployee'].list;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; const idToFind = empID; // Change this to the ID you're looking for&lt;/P&gt;&lt;P&gt;const person = employeeList.find(p =&amp;gt; p.ID === idToFind);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params.userName = person.Name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.timeStart();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.addEmployeeData();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },500)&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Defect Reason&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.defectName = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params.defectID = $scope.view.wdg['selectDefect'].value;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; const defID = Number($scope.app.params.defectID);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;const defectList = $scope.view.wdg['selectDefect'].list;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; const idToFind = defID; // Change this to the ID you're looking for&lt;/P&gt;&lt;P&gt;const defect = defectList.find(p =&amp;gt; p.ID === idToFind);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params.defectName = defect.Reason&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Setting Zone:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.setZone = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName1 = 'GetStepExperienceData';&lt;/P&gt;&lt;P&gt;&amp;nbsp; var serviceName2 = 'GetReasonList';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'Zone':1};&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName1, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'GetStepExperienceData', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName2, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'GetReasonList', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Blink UI&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.blinkUI = function(){&lt;/P&gt;&lt;P&gt;$scope.view.wdg['imagePassBtn'].visible = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg['imageFailBtn'].visible = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.view.wdg['imagePassBtn'].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg['imageFailBtn'].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },900)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.firstImage = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.view.wdg['imageRef'].imgsrc='app/Resources/Uploaded/P10_Bkt.png';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.timeStart();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.createFolder();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.app.params.stepImgName = "P10_Bkt";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.addEmployeeData();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //},200);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.view.wdg['image_bottom_image_001'].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg['imageModelTarget'].visible = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params.current_Step = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;///////////////////////////////////////&lt;/P&gt;&lt;P&gt;/// Thingworx interaction functions START&lt;/P&gt;&lt;P&gt;///////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;///////////////////// ThingWorx Code to transfer Data////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//ThingWorx:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;// Globals indicated by uppercase naming&lt;/P&gt;&lt;P&gt;// // **************************************************************************************************************&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// Globals&lt;/P&gt;&lt;P&gt;////&lt;/P&gt;&lt;P&gt;var LOG_MESSAGE_FAILURE = 'A failure occured';&lt;/P&gt;&lt;P&gt;var LOG_MESSAGE_CONNECTION_FAILURE = 'This action initially tries to connect to Windchill if there is a failure please check the windchill server is up and running';&lt;/P&gt;&lt;P&gt;var WIDTH_USED ;&lt;/P&gt;&lt;P&gt;var UPLOAD_IMAGE_AS_IS;&lt;/P&gt;&lt;P&gt;var NUMBER_OF_HISTORY_IMAGES = 5;&lt;/P&gt;&lt;P&gt;var IMAGE_BORDER = 15;&lt;/P&gt;&lt;P&gt;var IMAGE_BORDER_COLOR = '#FFF832';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;P&gt;// Local functions&amp;nbsp;&lt;/P&gt;&lt;P&gt;//&amp;nbsp; &amp;nbsp; These functions can not be used directly with studio&lt;/P&gt;&lt;P&gt;//&amp;nbsp; &amp;nbsp; The are help function to make the main $scope visible function be more readable&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;//&amp;nbsp; draw image to a canvas to reduce size&amp;nbsp;&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;////&lt;/P&gt;&lt;P&gt;drawImageToCanvas = function (imageToDraw , imageWidth) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var canvas = document.createElement("canvas");&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var ctx = canvas.getContext("2d");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var image = new Image();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; image.src=imageToDraw ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var aspect_width =&amp;nbsp; &amp;nbsp;imageWidth;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var aspect_height =&amp;nbsp; parseInt( (image.height / image.width ) * imageWidth );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; canvas.width = aspect_width; // target width&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; canvas.height =aspect_height; // target height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; ctx.drawImage(image,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0, 0, image.width, image.height,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0, 0, aspect_width, aspect_height&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; );&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; ctx.beginPath();&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //ctx.strokeStyle = IMAGE_BORDER_COLOR;&amp;nbsp; // some color/style&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //ctx.lineWidth = IMAGE_BORDER;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// thickness&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return canvas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Take Screenshot&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var callback = function (pngBase64String, args) {&lt;/P&gt;&lt;P&gt;$scope.view.wdg['currentPhoto'].imgsrc='data&amp;amp;colon;image/png;base64,' + pngBase64String;&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("args");&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log(args);&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("pngBase64String");&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log(pngBase64String);&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg["textArea_args"].text = args;&lt;/P&gt;&lt;P&gt;$scope.$applyAsync();&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// params = { dataURL:bool, withAugmentation: bool, imgFormat: string, imgWidth: number, imgHeight:number}&lt;/P&gt;&lt;P&gt;$scope.screenShot = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var params = {withAugmentation: true};&lt;/P&gt;&lt;P&gt;tml3dRenderer.takeScreenshot(params, callback, null);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.blinkUI();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;/// filter input service data and display gauges based on step number START&lt;/P&gt;&lt;P&gt;//////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.filterBasedOnStepNumber = function(inputStepNumber){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // First set all CheckPoint_xxxx Widgets back to invisible again&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.setAllCheckpointsVisibility(false);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // determine the dataTableLength to see the number of cycles to go through&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dataTableListLength = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data.length;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //// if needed activate the console.log to see the data result of the 'My_GetDataTableEntries' Thingworx Service&lt;/P&gt;&lt;P&gt;&amp;nbsp; //console.log($scope.app.mdl['data_table_inspection_point_data'].svc['My_GetDataTableEntries'].data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //(re-)set the CheckPoint counter cp back to 0&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var cp = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // go through all rows of the service data to see if they match the inputStepNumber input and then place/change the CheckPoint widgets&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(var i = 0 ; i &amp;lt; dataTableListLength; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; try{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; var rowStepNumber = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Step;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("i: " + i + ", Step: " + rowStepNumber);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if (rowStepNumber == inputStepNumber){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cp = cp + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("tried cp: " + cp);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var checkpointName = "CheckPoint_" + (900000 + (cp));&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log("CheckPoint Name: " + checkpointName);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_X_Coordinate = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].CAD_X_Coordinate;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Y_Coordinate = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].CAD_Y_Coordinate;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Z_Coordinate = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].CAD_Z_Coordinate;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Pin_Text = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Pin_Text;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Pin_Size_Factor = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Pin_Size_Factor;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Bottom_Label = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Bottom_Label;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Info_Image_Name = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Info_Image_Name;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ///Trigger the function 'setIndividualCheckPoint_Position'&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log('buffer_X_Coordinate: ' + buffer_X_Coordinate);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log('buffer_Y_Coordinate: ' + buffer_Y_Coordinate);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log('buffer_Z_Coordinate: ' + buffer_Z_Coordinate);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.setIndividualCheckPoint_Position(checkpointName, buffer_X_Coordinate, buffer_Y_Coordinate, buffer_Z_Coordinate, buffer_Pin_Text, buffer_Pin_Size_Factor);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg[checkpointName].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //for each row in the table set the text in the bottom label and help picture&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg['label_bottom_label'].text = buffer_Bottom_Label;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log("buffer_Info_Image_Name: " + buffer_Info_Image_Name);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log("app/resources/Uploaded/" + buffer_Info_Image_Name);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg['image_bottom_image_001'].imgsrc='app/resources/Uploaded/'+buffer_Info_Image_Name;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch(err){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("error on cp: " + cp);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //var checkpointName = "CheckPoint_" + (900000 + i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //console.log(checkpointName);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //$scope.view.wdg[checkpointName].visible = arg;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; catch(err){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("error on: " + i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;/// filter input service data and display gauges based on step number END&lt;/P&gt;&lt;P&gt;//////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//var imageCounter = Number($scope.app.params.current_Step)-1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Upload Image&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.TriggerUpload = function (width) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //let num1 = $scope.app.params.current_Step - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;let numStep = $scope.app.params.current_Step;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (width != null &amp;amp;&amp;amp; width != "") {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; UPLOAD_IMAGE_AS_IS = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; canvas = drawImageToCanvas($scope.view.wdg["currentPhoto"].imgsrc , width );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; contextArray = canvas.toDataURL().split(",");&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'UploadImageIntoRepo';&lt;/P&gt;&lt;P&gt;var parameters = {'GUID':$scope.app.params.uniqueID, 'ImageName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'Content' : contextArray[1] };&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'UploadImageIntoRepo', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.$applyAsync();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; },500)//600&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//This is the function increase or decrease the current_Step application parameter value and then update the display of CheckPoints&lt;/P&gt;&lt;P&gt;$scope.changeCurrentStep = function(delta)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.TriggerUpload(480);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var current_step_buffer = parseInt($scope.app.params['current_Step']);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var current_step_changed = parseInt(current_step_buffer) + parseInt(delta);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (current_step_changed &amp;lt;= 1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; current_step_changed = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; else{&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log (current_step_changed);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params['current_Step'] = current_step_changed;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //once the application parameter has been changed run the 'filterBasedOnStepNumber-function&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.filterBasedOnStepNumber($scope.app.params['current_Step']);&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.$applyAsync();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //},900)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;////This is a function to set the visibility of all placeholder CheckPoint_90000X widgets in one go (the maximum is currently set to 10 but can be changed)&lt;/P&gt;&lt;P&gt;$scope.setAllCheckpointsVisibility = function(arg)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(var i = 1 ; i &amp;lt; 11; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; try{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; var checkpointName = "CheckPoint_" + (900000 + i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("set visibility of checkpoint =" + checkpointName);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg[checkpointName].visible = arg;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; catch(err){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("error on: " + i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;////This is the function to manipulate an individual CheckPoint's position and content&lt;/P&gt;&lt;P&gt;$scope.setIndividualCheckPoint_Position = function(cpid, x, y, z, pintext, scale){&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("Widget '" + cpid +"' placed.");&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].text=pintext;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].scale=scale;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].x=x/1000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].y=y/1000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].z=z/1000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].visible=true;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;///////////////////////////////////////&lt;/P&gt;&lt;P&gt;/// Thingworx interaction functions START&lt;/P&gt;&lt;P&gt;///////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/// Function to programmatically trigger the TWX service My_GetDataTableEntries if required&lt;/P&gt;&lt;P&gt;$scope.GetDataTableEntries = function() {&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH'; //'Test_Experience_Th';&lt;/P&gt;&lt;P&gt;&amp;nbsp; var serviceName = 'GetStepExperienceData';//'GetDataByStepNumber';&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var parameters = {}; &lt;/P&gt;&lt;P&gt;&amp;nbsp; twx.app.fn.triggerDataService(TWXmodelID, serviceName, parameters);&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// what to do automatically after the My_GetDataTableEntriesp TWX Service has been completed&lt;/P&gt;&lt;P&gt;$scope.$on('GetStepExperienceData.serviceInvokeComplete', function(evt, arg)&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; var buffer_stepNumber = parseInt($scope.app.params['current_Step']);&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.filterBasedOnStepNumber(buffer_stepNumber);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;});&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Inspection Complete Popup //$scope.app.params.last_Step $scope.app.params.current_Step&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.inspectionComplete = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg["popupExperienceDetails"].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg["gridLayoutBottomButtons"].visible = false;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg["imageRef"].visible = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //}&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },1000)//1200&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Zone Navigation&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.navigateToZone = function(n){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.app.fn.navigate('Zone'+n);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.app.params.current_Step = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; },1000)&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Multiple Zones&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.trial = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var n = Number($scope.app.params.numberOfZones);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep1 = Number($scope.app.params.lastStepZone1); //+ Number($scope.app.params.stepIncrement);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep2 = Number($scope.app.params.lastStepZone2); //+ Number($scope.app.params.stepIncrement);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep3 = Number($scope.app.params.lastStepZone3); //+ Number($scope.app.params.stepIncrement);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep4 = Number($scope.app.params.lastStepZone4); //+ Number($scope.app.params.stepIncrement);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep5 = Number($scope.app.params.lastStepZone5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep6 = Number($scope.app.params.lastStepZone6);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if(n==1){&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if(n==2){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; else if(n==3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if(n==4){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(4);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep4){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;else if(n==5){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(4);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep4){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep5){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if(n==6){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(4);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep4){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep5){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(6);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep6){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Add Inspection Image&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.addImagePass = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //let num1 = $scope.app.params.current_Step - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; let numStep = $scope.app.params.current_Step;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'AddInspectionImage';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'GUID':$scope.app.params.uniqueID, 'EmployeeID': $scope.app.params.userName, 'StepNumber' : 'Step-' + numStep, 'FailureReason' : null, 'StepStatus' : true, 'ImageName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'ImageDisplayName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'Zone': 1};&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'AddInspectionImage', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.TriggerUpload(480);&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.trial();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.changeCurrentStep(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },900)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.addImageFail = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.defectName();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //let num1 = $scope.app.params.current_Step - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; let numStep = $scope.app.params.current_Step;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'AddInspectionImage';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'GUID':$scope.app.params.uniqueID, 'EmployeeID': $scope.app.params.userName, 'StepNumber' : 'Step-' + numStep, 'FailureReason' : $scope.app.params.defectName, 'StepStatus' : false, 'ImageName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'ImageDisplayName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'Zone': 1};&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'AddInspectionImage', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.TriggerUpload(480);&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.trial();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.changeCurrentStep(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },900)&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Cycle Completed&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.cycleCompleted = function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'CompleteInspection';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'GUID':$scope.app.params.uniqueID, 'CycleStartTime' : $scope.app.params.startTime, 'CycleEndTime' : $scope.app.params.endTime, 'Bin': $scope.view.wdg['textInputBinName'].text};&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'CompleteInspection', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.app.params.current_Step = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //window.location="&lt;A href="https://view.vuforia.com/command/view-experience?url=http%3A%2F%2F172.26.1.89%3A2019%2FExperienceService%2Fcontent%2Fprojects%2Fskhproject_inspection-wip%2Findex.html%3FexpId%3D1" target="_blank"&gt;https://view.vuforia.com/command/view-experience?url=http%3A%2F%2F172.26.1.89%3A2019%2FExperienceService%2Fcontent%2Fprojects%2Fskhproject_inspection-wip%2Findex.html%3FexpId%3D1&lt;/A&gt;";&lt;/P&gt;&lt;P&gt;&amp;nbsp; window.location = $scope.app.params.expURL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; },910)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Show Hide Model&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.showModel = function(){&lt;/P&gt;&lt;P&gt;$scope.view.wdg["model-1"].opacity = 0.7;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.hideModel = function(){&lt;/P&gt;&lt;P&gt;$scope.view.wdg["model-1"].opacity = 0.01;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks and Best Regards,&lt;/P&gt;&lt;P&gt;Aditya Gupta.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 26 May 2025 05:29:34 GMT</pubDate>
    <dc:creator>Aditya1702</dc:creator>
    <dc:date>2025-05-26T05:29:34Z</dc:date>
    <item>
      <title>Vuforia Studio with Thingworx</title>
      <link>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Vuforia-Studio-with-Thingworx/m-p/1017101#M13025</link>
      <description>&lt;P&gt;Hi Everyone,&lt;/P&gt;&lt;P&gt;Good Morning,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a use case in which the user uses model target and inspects a part. The inspection involves various checkpoints. For each check point the user clicks Pass/Fail button and on click of the button the screenshot is taken and the image is send to thingworx along with other details and after that the system moves on next checkpoint and the process follows.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Issue:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The below code works fine in preview all the images are sent along with the details but when previewed through View app on iPad the images are sent randomly example out of 50 images only 38 are sent or sometimes 45 are sent.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can anyone help me out in figuring out what's wrong&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// $scope, $element, $attrs, $injector, $sce, $timeout, $http, $ionicPopup, and $ionicPopover services are available&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//console.log($scope.app)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Start Time&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.timeStart = function(){&lt;/P&gt;&lt;P&gt;$scope.app.params.startTime = new Date();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//End Time&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.timeEnd = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.app.params.endTime = new Date();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Add Inspection Data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.addEmployeeData = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'AddInspectionData';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'GUID':$scope.app.params.uniqueID, 'PartNumber': $scope.view.wdg['labelPartNumber'].text, 'EmployeeID': $scope.app.params.userName, 'CycleStartTime' : $scope.app.params.startTime, 'Experience':$scope.view.wdg['programName'].text, 'Revision':$scope.view.wdg['revisionName'].text}; //'Bin':$scope.view.wdg['textInputBinName'].text&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //console.log("Starting UPLOAD using image size " + width);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'AddInspectionData', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //},100);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Employee Name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.employeeName = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; const empID = Number($scope.app.params.employeeID);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;const employeeList = $scope.view.wdg['selectEmployee'].list;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; const idToFind = empID; // Change this to the ID you're looking for&lt;/P&gt;&lt;P&gt;const person = employeeList.find(p =&amp;gt; p.ID === idToFind);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params.userName = person.Name&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.timeStart();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.addEmployeeData();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },500)&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Defect Reason&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.defectName = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params.defectID = $scope.view.wdg['selectDefect'].value;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; const defID = Number($scope.app.params.defectID);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;const defectList = $scope.view.wdg['selectDefect'].list;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; const idToFind = defID; // Change this to the ID you're looking for&lt;/P&gt;&lt;P&gt;const defect = defectList.find(p =&amp;gt; p.ID === idToFind);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params.defectName = defect.Reason&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Setting Zone:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.setZone = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName1 = 'GetStepExperienceData';&lt;/P&gt;&lt;P&gt;&amp;nbsp; var serviceName2 = 'GetReasonList';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'Zone':1};&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName1, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'GetStepExperienceData', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName2, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'GetReasonList', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Blink UI&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.blinkUI = function(){&lt;/P&gt;&lt;P&gt;$scope.view.wdg['imagePassBtn'].visible = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg['imageFailBtn'].visible = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.view.wdg['imagePassBtn'].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg['imageFailBtn'].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },900)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.firstImage = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.view.wdg['imageRef'].imgsrc='app/Resources/Uploaded/P10_Bkt.png';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.timeStart();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.createFolder();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.app.params.stepImgName = "P10_Bkt";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.addEmployeeData();&lt;/P&gt;&lt;P&gt;&amp;nbsp; //},200);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.view.wdg['image_bottom_image_001'].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg['imageModelTarget'].visible = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params.current_Step = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;///////////////////////////////////////&lt;/P&gt;&lt;P&gt;/// Thingworx interaction functions START&lt;/P&gt;&lt;P&gt;///////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;///////////////////// ThingWorx Code to transfer Data////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//ThingWorx:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;// Globals indicated by uppercase naming&lt;/P&gt;&lt;P&gt;// // **************************************************************************************************************&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// Globals&lt;/P&gt;&lt;P&gt;////&lt;/P&gt;&lt;P&gt;var LOG_MESSAGE_FAILURE = 'A failure occured';&lt;/P&gt;&lt;P&gt;var LOG_MESSAGE_CONNECTION_FAILURE = 'This action initially tries to connect to Windchill if there is a failure please check the windchill server is up and running';&lt;/P&gt;&lt;P&gt;var WIDTH_USED ;&lt;/P&gt;&lt;P&gt;var UPLOAD_IMAGE_AS_IS;&lt;/P&gt;&lt;P&gt;var NUMBER_OF_HISTORY_IMAGES = 5;&lt;/P&gt;&lt;P&gt;var IMAGE_BORDER = 15;&lt;/P&gt;&lt;P&gt;var IMAGE_BORDER_COLOR = '#FFF832';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;P&gt;// Local functions&amp;nbsp;&lt;/P&gt;&lt;P&gt;//&amp;nbsp; &amp;nbsp; These functions can not be used directly with studio&lt;/P&gt;&lt;P&gt;//&amp;nbsp; &amp;nbsp; The are help function to make the main $scope visible function be more readable&lt;/P&gt;&lt;P&gt;//&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;//&amp;nbsp; draw image to a canvas to reduce size&amp;nbsp;&lt;/P&gt;&lt;P&gt;// *****************************************************************************************************************&lt;/P&gt;&lt;P&gt;////&lt;/P&gt;&lt;P&gt;drawImageToCanvas = function (imageToDraw , imageWidth) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var canvas = document.createElement("canvas");&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var ctx = canvas.getContext("2d");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var image = new Image();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; image.src=imageToDraw ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var aspect_width =&amp;nbsp; &amp;nbsp;imageWidth;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var aspect_height =&amp;nbsp; parseInt( (image.height / image.width ) * imageWidth );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; canvas.width = aspect_width; // target width&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; canvas.height =aspect_height; // target height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; ctx.drawImage(image,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0, 0, image.width, image.height,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0, 0, aspect_width, aspect_height&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; );&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; ctx.beginPath();&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //ctx.strokeStyle = IMAGE_BORDER_COLOR;&amp;nbsp; // some color/style&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //ctx.lineWidth = IMAGE_BORDER;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// thickness&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return canvas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Take Screenshot&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var callback = function (pngBase64String, args) {&lt;/P&gt;&lt;P&gt;$scope.view.wdg['currentPhoto'].imgsrc='data&amp;amp;colon;image/png;base64,' + pngBase64String;&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("args");&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log(args);&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("pngBase64String");&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log(pngBase64String);&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg["textArea_args"].text = args;&lt;/P&gt;&lt;P&gt;$scope.$applyAsync();&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// params = { dataURL:bool, withAugmentation: bool, imgFormat: string, imgWidth: number, imgHeight:number}&lt;/P&gt;&lt;P&gt;$scope.screenShot = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var params = {withAugmentation: true};&lt;/P&gt;&lt;P&gt;tml3dRenderer.takeScreenshot(params, callback, null);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.blinkUI();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;/// filter input service data and display gauges based on step number START&lt;/P&gt;&lt;P&gt;//////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.filterBasedOnStepNumber = function(inputStepNumber){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // First set all CheckPoint_xxxx Widgets back to invisible again&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.setAllCheckpointsVisibility(false);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // determine the dataTableLength to see the number of cycles to go through&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dataTableListLength = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data.length;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //// if needed activate the console.log to see the data result of the 'My_GetDataTableEntries' Thingworx Service&lt;/P&gt;&lt;P&gt;&amp;nbsp; //console.log($scope.app.mdl['data_table_inspection_point_data'].svc['My_GetDataTableEntries'].data);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //(re-)set the CheckPoint counter cp back to 0&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var cp = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // go through all rows of the service data to see if they match the inputStepNumber input and then place/change the CheckPoint widgets&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(var i = 0 ; i &amp;lt; dataTableListLength; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; try{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; var rowStepNumber = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Step;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("i: " + i + ", Step: " + rowStepNumber);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if (rowStepNumber == inputStepNumber){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cp = cp + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("tried cp: " + cp);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var checkpointName = "CheckPoint_" + (900000 + (cp));&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log("CheckPoint Name: " + checkpointName);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_X_Coordinate = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].CAD_X_Coordinate;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Y_Coordinate = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].CAD_Y_Coordinate;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Z_Coordinate = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].CAD_Z_Coordinate;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Pin_Text = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Pin_Text;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Pin_Size_Factor = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Pin_Size_Factor;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Bottom_Label = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Bottom_Label;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var buffer_Info_Image_Name = $scope.app.mdl['SKH-M.SKH-M-AR.VuforiaConfiguration_TH'].svc['GetStepExperienceData'].data[i].Info_Image_Name;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ///Trigger the function 'setIndividualCheckPoint_Position'&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log('buffer_X_Coordinate: ' + buffer_X_Coordinate);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log('buffer_Y_Coordinate: ' + buffer_Y_Coordinate);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log('buffer_Z_Coordinate: ' + buffer_Z_Coordinate);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.setIndividualCheckPoint_Position(checkpointName, buffer_X_Coordinate, buffer_Y_Coordinate, buffer_Z_Coordinate, buffer_Pin_Text, buffer_Pin_Size_Factor);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg[checkpointName].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //for each row in the table set the text in the bottom label and help picture&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg['label_bottom_label'].text = buffer_Bottom_Label;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log("buffer_Info_Image_Name: " + buffer_Info_Image_Name);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log("app/resources/Uploaded/" + buffer_Info_Image_Name);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg['image_bottom_image_001'].imgsrc='app/resources/Uploaded/'+buffer_Info_Image_Name;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch(err){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("error on cp: " + cp);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //var checkpointName = "CheckPoint_" + (900000 + i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //console.log(checkpointName);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //$scope.view.wdg[checkpointName].visible = arg;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; catch(err){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("error on: " + i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;/// filter input service data and display gauges based on step number END&lt;/P&gt;&lt;P&gt;//////////////////////////////////////////////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//var imageCounter = Number($scope.app.params.current_Step)-1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Upload Image&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.TriggerUpload = function (width) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //let num1 = $scope.app.params.current_Step - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;let numStep = $scope.app.params.current_Step;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (width != null &amp;amp;&amp;amp; width != "") {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; UPLOAD_IMAGE_AS_IS = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; canvas = drawImageToCanvas($scope.view.wdg["currentPhoto"].imgsrc , width );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; contextArray = canvas.toDataURL().split(",");&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'UploadImageIntoRepo';&lt;/P&gt;&lt;P&gt;var parameters = {'GUID':$scope.app.params.uniqueID, 'ImageName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'Content' : contextArray[1] };&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'UploadImageIntoRepo', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.$applyAsync();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; },500)//600&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//This is the function increase or decrease the current_Step application parameter value and then update the display of CheckPoints&lt;/P&gt;&lt;P&gt;$scope.changeCurrentStep = function(delta)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.TriggerUpload(480);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var current_step_buffer = parseInt($scope.app.params['current_Step']);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var current_step_changed = parseInt(current_step_buffer) + parseInt(delta);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (current_step_changed &amp;lt;= 1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; current_step_changed = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; else{&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log (current_step_changed);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.app.params['current_Step'] = current_step_changed;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //once the application parameter has been changed run the 'filterBasedOnStepNumber-function&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.filterBasedOnStepNumber($scope.app.params['current_Step']);&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.$applyAsync();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //},900)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;////This is a function to set the visibility of all placeholder CheckPoint_90000X widgets in one go (the maximum is currently set to 10 but can be changed)&lt;/P&gt;&lt;P&gt;$scope.setAllCheckpointsVisibility = function(arg)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(var i = 1 ; i &amp;lt; 11; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; try{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; var checkpointName = "CheckPoint_" + (900000 + i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("set visibility of checkpoint =" + checkpointName);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg[checkpointName].visible = arg;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; catch(err){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; console.log ("error on: " + i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;////This is the function to manipulate an individual CheckPoint's position and content&lt;/P&gt;&lt;P&gt;$scope.setIndividualCheckPoint_Position = function(cpid, x, y, z, pintext, scale){&lt;/P&gt;&lt;P&gt;&amp;nbsp; console.log("Widget '" + cpid +"' placed.");&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].text=pintext;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].scale=scale;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].x=x/1000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].y=y/1000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].z=z/1000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.view.wdg[cpid].visible=true;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;///////////////////////////////////////&lt;/P&gt;&lt;P&gt;/// Thingworx interaction functions START&lt;/P&gt;&lt;P&gt;///////////////////////////////////////&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/// Function to programmatically trigger the TWX service My_GetDataTableEntries if required&lt;/P&gt;&lt;P&gt;$scope.GetDataTableEntries = function() {&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH'; //'Test_Experience_Th';&lt;/P&gt;&lt;P&gt;&amp;nbsp; var serviceName = 'GetStepExperienceData';//'GetDataByStepNumber';&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var parameters = {}; &lt;/P&gt;&lt;P&gt;&amp;nbsp; twx.app.fn.triggerDataService(TWXmodelID, serviceName, parameters);&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// what to do automatically after the My_GetDataTableEntriesp TWX Service has been completed&lt;/P&gt;&lt;P&gt;$scope.$on('GetStepExperienceData.serviceInvokeComplete', function(evt, arg)&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; var buffer_stepNumber = parseInt($scope.app.params['current_Step']);&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.filterBasedOnStepNumber(buffer_stepNumber);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;});&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Inspection Complete Popup //$scope.app.params.last_Step $scope.app.params.current_Step&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.inspectionComplete = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg["popupExperienceDetails"].visible = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg["gridLayoutBottomButtons"].visible = false;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.view.wdg["imageRef"].visible = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //}&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },1000)//1200&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Zone Navigation&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.navigateToZone = function(n){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.app.fn.navigate('Zone'+n);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.app.params.current_Step = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; },1000)&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Multiple Zones&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.trial = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var n = Number($scope.app.params.numberOfZones);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep1 = Number($scope.app.params.lastStepZone1); //+ Number($scope.app.params.stepIncrement);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep2 = Number($scope.app.params.lastStepZone2); //+ Number($scope.app.params.stepIncrement);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep3 = Number($scope.app.params.lastStepZone3); //+ Number($scope.app.params.stepIncrement);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep4 = Number($scope.app.params.lastStepZone4); //+ Number($scope.app.params.stepIncrement);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep5 = Number($scope.app.params.lastStepZone5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var numLastStep6 = Number($scope.app.params.lastStepZone6);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if(n==1){&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if(n==2){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; else if(n==3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if(n==4){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(4);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep4){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;else if(n==5){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(4);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep4){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep5){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if(n==6){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep1){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*if($scope.app.params.current_Step==numLastStep2){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep3){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(4);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep4){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep5){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.navigateToZone(6);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($scope.app.params.current_Step==numLastStep6){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }*/&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Add Inspection Image&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.addImagePass = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //let num1 = $scope.app.params.current_Step - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; let numStep = $scope.app.params.current_Step;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'AddInspectionImage';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'GUID':$scope.app.params.uniqueID, 'EmployeeID': $scope.app.params.userName, 'StepNumber' : 'Step-' + numStep, 'FailureReason' : null, 'StepStatus' : true, 'ImageName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'ImageDisplayName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'Zone': 1};&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'AddInspectionImage', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.TriggerUpload(480);&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.trial();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.changeCurrentStep(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },900)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.addImageFail = function() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.defectName();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //let num1 = $scope.app.params.current_Step - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; let numStep = $scope.app.params.current_Step;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'AddInspectionImage';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'GUID':$scope.app.params.uniqueID, 'EmployeeID': $scope.app.params.userName, 'StepNumber' : 'Step-' + numStep, 'FailureReason' : $scope.app.params.defectName, 'StepStatus' : false, 'ImageName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'ImageDisplayName': 'Z1_S'+numStep+'_'+$scope.app.params.imageName+'.png', 'Zone': 1};&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'AddInspectionImage', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.TriggerUpload(480);&lt;/P&gt;&lt;P&gt;&amp;nbsp; //$scope.inspectionComplete();&lt;/P&gt;&lt;P&gt;&amp;nbsp; $scope.trial();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; $scope.changeCurrentStep(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; },900)&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Cycle Completed&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.cycleCompleted = function () {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;var TWXmodelID = 'SKH-M.SKH-M-AR.VuforiaConfiguration_TH';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var serviceName = 'CompleteInspection';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; var parameters = {'GUID':$scope.app.params.uniqueID, 'CycleStartTime' : $scope.app.params.startTime, 'CycleEndTime' : $scope.app.params.endTime, 'Bin': $scope.view.wdg['textInputBinName'].text};&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $timeout(function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', serviceName, parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //twx.app.fn.triggerDataService('SKH-M.SKH-M-AR.VuforiaConfiguration_TH', 'CompleteInspection', parameters);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //$scope.app.params.current_Step = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; //window.location="&lt;A href="https://view.vuforia.com/command/view-experience?url=http%3A%2F%2F172.26.1.89%3A2019%2FExperienceService%2Fcontent%2Fprojects%2Fskhproject_inspection-wip%2Findex.html%3FexpId%3D1" target="_blank"&gt;https://view.vuforia.com/command/view-experience?url=http%3A%2F%2F172.26.1.89%3A2019%2FExperienceService%2Fcontent%2Fprojects%2Fskhproject_inspection-wip%2Findex.html%3FexpId%3D1&lt;/A&gt;";&lt;/P&gt;&lt;P&gt;&amp;nbsp; window.location = $scope.app.params.expURL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; },910)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//Show Hide Model&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.showModel = function(){&lt;/P&gt;&lt;P&gt;$scope.view.wdg["model-1"].opacity = 0.7;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;$scope.hideModel = function(){&lt;/P&gt;&lt;P&gt;$scope.view.wdg["model-1"].opacity = 0.01;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks and Best Regards,&lt;/P&gt;&lt;P&gt;Aditya Gupta.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 26 May 2025 05:29:34 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Vuforia-Studio-with-Thingworx/m-p/1017101#M13025</guid>
      <dc:creator>Aditya1702</dc:creator>
      <dc:date>2025-05-26T05:29:34Z</dc:date>
    </item>
    <item>
      <title>Re: Vuforia Studio with Thingworx</title>
      <link>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Vuforia-Studio-with-Thingworx/m-p/1017124#M13026</link>
      <description>&lt;P&gt;The code has been pasted twice by mistake&lt;/P&gt;</description>
      <pubDate>Mon, 26 May 2025 04:50:42 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Vuforia-Studio-with-Thingworx/m-p/1017124#M13026</guid>
      <dc:creator>Aditya1702</dc:creator>
      <dc:date>2025-05-26T04:50:42Z</dc:date>
    </item>
  </channel>
</rss>

