//(function () { angular.module('MobileWebLogistics') .service('printMap', function () { var printMapServ = this; this.printComplete = function (result, $scope) { $scope.parcelLayer.setRenderer(new $scope.SimpleRenderer($scope.parcelSymbol)); $scope.parcelLayer.id = $scope.parcelLayerName; var basemap = ($scope.map.getLayersVisibleAtScale())[0]; basemap.setOpacity(1); $scope.labelLayer.setOpacity(1); pdfUrl = result.url; pdfTimeout = setTimeout(function () { if ($("#printBtn i").attr('class') == 'glyphicon glyphicon-save') { $("#printBtn i").removeClass('glyphicon glyphicon-save').addClass('glyphicon glyphicon-print'); pdfUrl = ""; } }, 420000); //milisec, 300000=5min, 420000=7min $("#printBtn i").removeClass('glyphicon glyphicon-cog gly-spin').addClass('glyphicon glyphicon-save'); $("#printBtn").attr('disabled', false); } this.printError = function (error, $scope) { $scope.parcelLayer.setRenderer(new $scope.SimpleRenderer($scope.parcelSymbol)); $scope.parcelLayer.id = $scope.parcelLayerName; if ($scope.pcount == 0) { $scope.printTask.execute($scope.params, $scope.printComplete, $scope.printError); } $scope.pcount = $scope.pcount + 1; if ($scope.pcount > 1) { $("#printBtn i").removeClass('glyphicon glyphicon-cog glyphicon-cog-animate').addClass('glyphicon glyphicon-print'); $("#printBtn").attr('disabled', false); pdfUrl = ""; var basemap = ($scope.map.getLayersVisibleAtScale())[0]; basemap.setOpacity(1); $scope.labelLayer.setOpacity(1); } } this.execPrintMap = function ($scope) { if ($("#printBtn i").attr('class') == 'glyphicon glyphicon-save') { var downLink = pdfUrl; pdfUrl = ""; window.open(downLink); self.focus(); $("#printBtn i").removeClass('glyphicon glyphicon-save').addClass('glyphicon glyphicon-print'); window.clearTimeout(pdfTimeout); } else { $("#printBtn i").removeClass('glyphicon glyphicon-print').addClass('glyphicon glyphicon-cog gly-spin'); $("#printBtn").attr('disabled', true); var selectList = document.getElementById("printSize"); var template = selectList.options[selectList.selectedIndex].value; var mapTitle = $("#mapTitle").val(); if (mapTitle == "") { mapTitle = ' '; } $scope.params.map = $scope.map; var ptemp = new $scope.PrintTemplate(); // If manualPrintScale == true, a user can define their map scale var userScale = $("#userMapScale").val() * 1; $scope.params.SpatialReference = new $scope.SpatialReference({ wkid: 102100 }); ptemp.format = "PDF"; ptemp.layout = template; var unit = 'Mile'; if ($scope.isDynamicUnit == 'true') { if ($scope.map.getScale() < $scope.dynamicUnit[1] || (userScale < $scope.dynamicUnit[1] && userScale != 0)) { unit = 'Feet' } } // If a user adds a graphic with the draw tools, it is displayed in the legend as Override // Creating the legendLayer object and calling layer1 which is created from the map service prevents that ptemp.layoutOptions = { titleText: mapTitle, scalebarUnit: unit, legendLayers: [] // empty array means no legend }; if ($scope.showPrintLegend == 'true') { if ($scope.isFeatureService) { for (let i = 0; i < $scope.map.graphicsLayerIds.length; i++) { for (let j = 0; j < $scope.mapLayers.length; j++) { if ($scope.map.graphicsLayerIds[i] == $scope.mapLayers[j].name) { if ($scope.map.getLayer($scope.map.graphicsLayerIds[i]).visible) { var legendLayer = new $scope.legendLayer(); legendLayer.layerId = $scope.map.graphicsLayerIds[i]; ptemp.layoutOptions.legendLayers.push(legendLayer); } } } } } else { var legendLayer = new $scope.legendLayer(); legendLayer.layerId = "map_layer1"; ptemp.layoutOptions.legendLayers.push(legendLayer); } } ptemp.exportOptions = { dpi: 120 }; $scope.parcelLayer.setRenderer(new $scope.SimpleRenderer($scope.parcelSymbolNull)); $scope.parcelLayer.id = $scope.parcelLyrName; ptemp.showAttribution = false; ptemp.showLabels = true; if (userScale > 0) { ptemp.outScale = userScale; } $scope.params.template = ptemp; var basemap = ($scope.map.getLayersVisibleAtScale())[0]; if ($("#baseMapCheck").is(':checked')) { basemap.setOpacity($("#baseMapTransparency").val() / 100); } else { basemap.setOpacity(0); } if ($("#showLineLabels").is(':checked')) { $scope.labelLayer.setOpacity(1); } else { $scope.labelLayer.setOpacity(0); } // set outScale with preserveScale to get the TOPO basemap to show if map scale is too close to basemap maxScale if (($scope.map.getScale() - basemap.maxScale) < 1) { ptemp.outScale = basemap.maxScale + 1; ptemp.preserveScale = true; } if (!$scope.isFeatureService) { $scope.dmsLayer.opacity = $("#overlayTransparency").val() / 100; } var printurl = $scope.printer.url; $scope.printTask = new $scope.PrintTask(printurl); $scope.printTask.execute($scope.params, $scope.printComplete, $scope.printError); } } }); //})();