//(function () { angular.module('MobileWebLogistics') .service('localCustom', function () { var self = this; //====== modal images this.getImages = function ($scope, $modal, wlFactory, imageLink, i) { var isParcelImg = true; var parcelImgUrl = ''; if (i == 1) { $scope.parcelImages = []; $scope.parcelImages.push(imageLink + "_" + i); //add first image parcelImgUrl = $scope.parcelUrl + imageLink + "_" + i + $scope.JPG; //https://s3.amazonaws.com/timmons-weblogistics/Gloucester/Parcels/0662-52-0237_1.jpg } else { parcelImgUrl = $scope.parcelUrl + imageLink + "_" + i + $scope.JPG; //https://s3.amazonaws.com/timmons-weblogistics/Gloucester/Parcels/0662-52-0237_1.jpg } wlFactory.imageExists($scope, parcelImgUrl, function (exists) { isParcelImg = exists; if (isParcelImg == true) { if (i > 1 && $scope.parcelImages.indexOf(imageLink + "_" + i) == -1) { //if it's for 2nd or more image and is not in the array $scope.parcelImages.push(imageLink + "_" + i); } i++; parcelImgUrl = $scope.parcelUrl + imageLink + "_" + i + $scope.JPG; self.getImages($scope, $modal, wlFactory, imageLink, i) //check for next image } else { if ($scope.openImageDelay == 0) { setTimeout(function () { self.openImage($scope, $modal); }, 400); } setTimeout(function () { $scope.openImageDelay = 0; }, 1000); } }); } this.openImage = function ($scope, $modal, event) { if ($scope.openImageDelay == 0) { $scope.openImageDelay = 1; var modalInstance = $modal.open({ templateUrl: 'templates/imageModal.html', controller: 'ImageController', scope: $scope }); } } //======endof modal images //======custom create report var pdf, parcelImg, isParcelImg, parcelMap, isParcelMap, imgwidth1, imgwidth2, imgwidth3; var imgheight1, imgheight2, imgheight3; var availSpace = 270; var defaultTop = 28; var page = 1; this.createPDF = function ($scope, parcelImgUrl) { parcelImgUrl = parcelImgUrl.replace('_1.jpg', ''); parcelImg = new Image(); parcelImg.setAttribute('crossOrigin', 'anonymous'); var parcelImgUrl1 = parcelImgUrl.toString(); parcelImg.onload = function () { isParcelImg = true; }; parcelImg.onerror = function () { isParcelImg = false; }; parcelImg.src = parcelImgUrl; parcelImg.src = parcelImgUrl1 + "?"; setTimeout(function () { var img1; pdf = new jsPDF('portrait', 'mm', 'letter', true); var margins = { top: 15, bottom: 60, //left: $scope.headerH + 5, left: 20, width: 520 }; //adding report self.addTable1($scope); }, 500); } this.addHeader = function ($scope) { pdf.addImage($scope.headerData, 'PNG', 15, 8, 71.7 * 0.861, 19 * 0.861); pdf.setFont("arial"); pdf.setTextColor(0, 0, 0); pdf.setFontSize(10); pdf.textEx($scope.pdfHeaderTxt1, 193, 18, 'right', 'middle'); pdf.textEx($scope.pdfHeaderTxt2, 193, 23, 'right', 'middle'); pdf.setLineWidth(0.4); pdf.setDrawColor(0, 0, 0); pdf.line(37, 25, 198, 25); } this.addFooter = function (pidtxt, pid, page) { pdf.setLineWidth(0.4); pdf.setDrawColor(220, 220, 220); pdf.line(15, 260, 198, 260); pdf.setFont("arial"); pdf.setTextColor(100, 100, 100); pdf.setFontSize(10); if (pidtxt.length > 0) { pdf.text(16, 265, pidtxt + pid); } pdf.text(183, 265, page + ' | Page'); } this.addImages = function ($scope) { self.addFooter($scope.parcelpdfID[0], $scope.selectedParcel[$scope.parcelpdfID[1]], page); page += 1; if ($scope.propertyImg == 'false') { isParcelImg = false; } if (isParcelImg) { var pageHeight = pdf.internal.pageSize.height; var y = 400 // Height position of new content pdf.addPage(); self.addHeader($scope); y = 40 // Restart height position pdf.addImage(parcelImg, 'JPEG', 30, 30, 150, 100, 'house'); self.addFooter($scope.parcelpdfID[0], $scope.selectedParcel[$scope.parcelpdfID[1]], page); } pdf.save('Parcel_report.pdf'); $("#pdfPreloaderContainer").removeClass("active"); page = 1; } var tblNum = 1; this.addTable1 = function ($scope) { self.addHeader($scope); pdf.setFont("arial"); pdf.setTextColor(80, 80, 80); pdf.setFontSize(16); pdf.text(17, 42, $("#reportAddress").text()); html2canvas($("#reportBody > #reportTbl_1"), { onrendered: function (canvas1) { var imgData1 = canvas1.toDataURL('image/png'); imgwidth1 = canvas1.width * 0.227; // This will print out the width. imgheight1 = canvas1.height * 0.23; pdf.addImage(imgData1, 'PNG', 16, 45, imgwidth1, imgheight1); nextTblLoc = imgheight1 + 45; tblNum = 2; self.addAdditionalTable($scope); } }); } this.addAdditionalTable = function ($scope) { html2canvas($("#reportBody > #reportTbl_" + tblNum), { onrendered: function (canvas2) { var imgData2 = canvas2.toDataURL('image/png'); imgwidth2 = canvas2.width * 0.227; // This will print out the width. imgheight2 = canvas2.height * 0.23; if (nextTblLoc + imgheight2 > availSpace) { self.addFooter($scope.parcelpdfID[0], $scope.selectedParcel[$scope.parcelpdfID[1]], page); page += 1; pdf.addPage(); self.addHeader($scope); nextTblLoc = defaultTop; pdf.addImage(imgData2, 'PNG', 16, nextTblLoc, imgwidth2, imgheight2); nextTblLoc += imgheight2; } else { pdf.addImage(imgData2, 'PNG', 16, nextTblLoc, imgwidth2, imgheight2); nextTblLoc = nextTblLoc + imgheight2; } tblNum += 1; if (tblNum > $scope.numOfTable) { self.addImages($scope); } else { self.addAdditionalTable($scope); } } }); } //======end of custom create report //======findRelatedRecords this.findRelatedRecords = function ($scope, OBJECTID) { var relatedTblQuery = new $scope.RelationshipQuery(); relatedTblQuery.outFields = ["*"]; relatedTblQuery.objectIds = [OBJECTID]; relatedTblQuery.relationshipId = '0'; //ImprovementWeb - ImprType,UseDesc,BldgType,YrBuilt,FinSize,LastUpdD $scope.selectedParcelT0 = []; $scope.parcelLayer.queryRelatedFeatures(relatedTblQuery, function (relatedRecords) { if (relatedRecords[OBJECTID]) { $scope.relatedResult0 = relatedRecords[OBJECTID].features; for (var i = 0; i < $scope.relatedResult0.length; i++) { //alert($scope.relatedResult0[i].attributes['OBJECTID']); for (var key in $scope.relatedResult0[i].attributes) { var thisKey = $scope.relatedResult0[i].attributes[key.toString()]; //alert(key); alert(thisKey); //key=fieldname, thisKey=value $scope.relatedResult0[i].attributes[key.toString()] = $scope.formatParcelData(key, thisKey, $scope.relatedResult0[i].attributes[key.toString()]); } $scope.selectedParcelT0.push($scope.relatedResult0[i].attributes); } } }); }; //==========end of findRelatedRecords this.addCustomBasemap = function ($scope) { //========== var vgin2002 = new esri.dijit.BasemapLayer({ //type:"WebTiledLayer", url: "https://vginmaps.vdem.virginia.gov/arcgis/rest/services/VBMP_Imagery/VBMP2002_WGS/MapServer" //, }); var vgin2002Image = new esri.dijit.Basemap({ layers: [vgin2002], title: "2002 VGIN Imagery", thumbnailUrl: "img/vgin2002.PNG" }); $scope.basemapGallery.add(vgin2002Image); //========== var vgin2009 = new esri.dijit.BasemapLayer({ //type:"WebTiledLayer", url: "https://vginmaps.vdem.virginia.gov/arcgis/rest/services/VBMP_Imagery/VBMP2009_WGS/MapServer" //, }); var vgin2009Image = new esri.dijit.Basemap({ layers: [vgin2009], title: "2009 VGIN Imagery", thumbnailUrl: "img/vgin2009.PNG" }); $scope.basemapGallery.add(vgin2009Image); var vgin2017 = new esri.dijit.BasemapLayer({ //type:"WebTiledLayer", url: "https://vginmaps.vdem.virginia.gov/arcgis/rest/services/VBMP_Imagery/VBMP2017_WGS/MapServer" //, }); var vgin2017Image = new esri.dijit.Basemap({ layers: [vgin2017], title: "2017 VGIN Imagery", thumbnailUrl: "img/vgin2017.PNG" }); $scope.basemapGallery.add(vgin2017Image); } });