From d74b495736f0c04522ec54274b70fed0ded2878d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 11:30:06 +0800
Subject: [PATCH] 任务新增导出

---
 public/map/controls/toolbar/tools/ScreenWindowTool.js |  104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 0 deletions(-)

diff --git a/public/map/controls/toolbar/tools/ScreenWindowTool.js b/public/map/controls/toolbar/tools/ScreenWindowTool.js
new file mode 100644
index 0000000..7529ed4
--- /dev/null
+++ b/public/map/controls/toolbar/tools/ScreenWindowTool.js
@@ -0,0 +1,104 @@
+/**
+ * 截屏按钮
+ *
+ * @author haoml
+ */
+define([ "dojo", "dojo/dom", "dojo/query", "dojo/on", "dojo/request", "dojo/dom-construct", "dojo/_base/window",
+    "dojo/dom-style", "dojo/dom-attr", "dojo/_base/declare", "base/AppEvent",
+    "controls/toolbar/tools/BaseTool","controls/toolbar/tools/Jcrop/Jcrop"
+    ], function(dojo, dom, query, on, 
+    		request, domConstruct, win, domStyle, domAttr, declare,
+            AppEvent, BaseTool) {
+    var RL = declare([ BaseTool ], {
+        _map : null,
+        coord:null,
+        oricoord:null,
+        mapStyle:null,
+        jcrop_api:null,
+        constructor : function(args) {
+            this._normalIconClass = "tool-screenWindow-normal";
+            this._overIconClass = "tool-screenWindow-over";
+            this._selectedIconClass = "tool-screenWindow-select";
+            this._disableClass = "";
+            this.tooltip = "截屏";
+            this._map = args.map;
+            dojo.create("link", {
+                    href: "controls/toolbar/tools/Jcrop/jquery.Jcrop.min.css",
+                    type: "text/css",
+                    rel: "stylesheet"
+                },
+                document.getElementsByTagName("head")[0]);
+            dojo.create("link", {
+            	href: "controls/toolbar/tools/Jcrop/save.css",
+            	type: "text/css",
+            	rel: "stylesheet"
+            },
+            document.getElementsByTagName("head")[0]);
+        },
+        deactivate : function(args) {
+            this.inherited(arguments);
+        },
+        activate : function() {
+            this.inherited(arguments);
+            var thisObj = this;
+            mapStyle = domAttr.get(dom.byId("mainMapWidget"), "style");
+            jQuery(function($) {
+                $("#mainMapWidget").Jcrop({
+                    onChange : getCoords
+                }, function() {
+                    thisObj.jcrop_api = this;
+                });
+            });
+            on(dom.byId("btnCancel"), "click", destroyClick);
+            on(dom.byId("btnSave"), "click", postClick);
+            function getCoords(coords) {
+            	thisObj.coord = coords;
+                if(thisObj.oricoord == null || (thisObj.oricoord.screenx != coords.screenx || thisObj.oricoord.screeny != coords.screeny)){
+                	thisObj.oricoord = thisObj.coord;
+                }
+
+                var saveDiv = dom.byId("saveDiv");
+                domStyle.set(saveDiv, "display", "block");
+                domStyle.set(saveDiv, "top", coords.y
+                    + coords.h - saveDiv.clientHeight + "px");
+                
+                var saveDivleft = 0;
+                if((coords.x + coords.w + saveDiv.clientWidth) > dom.byId("mainMapWidget").clientWidth)
+                	saveDivleft = coords.x - saveDiv.clientWidth;
+                else
+                	saveDivleft = coords.x + coords.w;
+                domStyle.set(saveDiv, "left", saveDivleft + "px");
+            }
+
+            function destroyClick() {
+                domConstruct.place(dom.byId("mainMapWidget"),query(".jcrop-holder")[0],"before");
+                domAttr.remove(dom.byId("mainMapWidget"),"style");
+                domAttr.set(dom.byId("mainMapWidget"),"style",thisObj.mapStyle);
+                thisObj.jcrop_api.destroy();
+                domStyle.set(dom.byId("saveDiv"), "display", "none");
+                thisObj.oricoord = null;
+            }
+
+            function postClick() {
+                var offx = 0;
+                var offy = 0;
+                offx = thisObj.coord.x - thisObj.oricoord.x;
+                offy = thisObj.coord.y - thisObj.oricoord.y;
+                var top = thisObj.coord.screeny + offy;
+                var left = thisObj.coord.screenx + offx;
+                var x = thisObj.coord.x;
+				var y = thisObj.coord.y;
+				var x2 = thisObj.coord.x2;
+				var y2 = thisObj.coord.y2;
+				
+				var rightx2 = (x2 - x) + left;
+				var righty2 = (y2 - y) + top;
+                window.location.href = "../ScreenWindowServlet?x=" + left + "&y=" + top + "&x1=" + rightx2 + "&y1=" + righty2;
+                destroyClick();
+            }
+
+            this.deactivate();
+        }
+    });
+    return RL;
+});
\ No newline at end of file

--
Gitblit v1.9.3