@sapui5/sap.ui.vbm 1.107.0 → 1.108.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/ui/vbm/.library +1 -1
- package/src/sap/ui/vbm/Adapter.js +1 -1
- package/src/sap/ui/vbm/Adapter3D.js +9 -5
- package/src/sap/ui/vbm/AnalyticMap.js +6 -3
- package/src/sap/ui/vbm/AnalyticMapRenderer.js +3 -1
- package/src/sap/ui/vbm/Cluster.js +3 -1
- package/src/sap/ui/vbm/ClusterRenderer.js +75 -46
- package/src/sap/ui/vbm/GeoMap.js +3 -1
- package/src/sap/ui/vbm/GeoMapRenderer.js +3 -1
- package/src/sap/ui/vbm/VBI.js +3 -1
- package/src/sap/ui/vbm/VBIRenderer.js +39 -30
- package/src/sap/ui/vbm/Viewport.js +8 -2
- package/src/sap/ui/vbm/ViewportRenderer.js +11 -12
- package/src/sap/ui/vbm/VoAggregation.js +1 -1
- package/src/sap/ui/vbm/adapter3d/DragDropHandler.js +1 -1
- package/src/sap/ui/vbm/adapter3d/ModelHandler.js +1 -1
- package/src/sap/ui/vbm/adapter3d/ObjectFactory.js +1 -1
- package/src/sap/ui/vbm/adapter3d/PolygonHandler.js +1 -1
- package/src/sap/ui/vbm/adapter3d/SceneBuilder.js +1 -1
- package/src/sap/ui/vbm/adapter3d/Utilities.js +135 -0
- package/src/sap/ui/vbm/adapter3d/VBIJSONParser.js +1 -1
- package/src/sap/ui/vbm/adapter3d/thirdparty/OrbitControls.js +51 -55
- package/src/sap/ui/vbm/library.js +2 -2
package/package.json
CHANGED
package/src/sap/ui/vbm/.library
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<name>sap.ui.vbm</name>
|
|
4
4
|
<vendor>SAP SE</vendor>
|
|
5
5
|
<copyright>SAP UI development toolkit for HTML5 (SAPUI5) (c) Copyright 2009-2012 SAP AG. All rights reserved</copyright>
|
|
6
|
-
<version>1.
|
|
6
|
+
<version>1.108.0</version>
|
|
7
7
|
|
|
8
8
|
<documentation>SAP UI library: sap.ui.vbm</documentation>
|
|
9
9
|
|
|
@@ -22,7 +22,7 @@ sap.ui.define([
|
|
|
22
22
|
* @param {string} [sId] id for the new control, generated automatically if no id is given
|
|
23
23
|
* @param {object} [mSettings] initial settings for the new object
|
|
24
24
|
* @author SAP SE
|
|
25
|
-
* @version 1.
|
|
25
|
+
* @version 1.108.0
|
|
26
26
|
* @extends sap.ui.core.Element
|
|
27
27
|
* @constructor
|
|
28
28
|
* @public
|
|
@@ -45,7 +45,7 @@ sap.ui.define([
|
|
|
45
45
|
* @param {string} [sId] id for the new control, generated automatically if no id is given
|
|
46
46
|
* @param {object} [mSettings] initial settings for the new object
|
|
47
47
|
* @author SAP SE
|
|
48
|
-
* @version 1.
|
|
48
|
+
* @version 1.108.0
|
|
49
49
|
* @extends sap.ui.core.Element
|
|
50
50
|
* @constructor
|
|
51
51
|
* @public
|
|
@@ -293,6 +293,9 @@ sap.ui.define([
|
|
|
293
293
|
this._disconnectViewport();
|
|
294
294
|
this._viewport = associatedViewport;
|
|
295
295
|
this._connectViewport();
|
|
296
|
+
var orbitInstance = this._viewport.getOrbitControl();
|
|
297
|
+
orbitInstance.setConfig(this._context.config);
|
|
298
|
+
orbitInstance.setUtilities(Utilities);
|
|
296
299
|
}
|
|
297
300
|
};
|
|
298
301
|
|
|
@@ -751,11 +754,12 @@ sap.ui.define([
|
|
|
751
754
|
};
|
|
752
755
|
|
|
753
756
|
Adapter3D.prototype._genericEventHandler = function(name, event) {
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
+
|
|
758
|
+
var homeButtonKey = Utilities.parseKeyboardShortcut(this._context.config.has("HOME_VIEW") ? this._context.config.get("HOME_VIEW") : "72");
|
|
759
|
+
|
|
760
|
+
if (Utilities.matchKeyboardShortcut(event, homeButtonKey)) {
|
|
757
761
|
this._viewport.applyCameraHome(false); // no fly-to animation needed here
|
|
758
|
-
|
|
762
|
+
return;
|
|
759
763
|
}
|
|
760
764
|
|
|
761
765
|
var instance = event.instance;
|
|
@@ -9,8 +9,9 @@ sap.ui.define([
|
|
|
9
9
|
"sap/ui/core/theming/Parameters",
|
|
10
10
|
"jquery.sap.global",
|
|
11
11
|
"sap/base/Log",
|
|
12
|
-
"./library"
|
|
13
|
-
|
|
12
|
+
"./library",
|
|
13
|
+
"./AnalyticMapRenderer"
|
|
14
|
+
], function(GeoMap, VoBase, Parameters, jQuery, Log, library, AnalyticMapRenderer) {
|
|
14
15
|
"use strict";
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -92,7 +93,9 @@ sap.ui.define([
|
|
|
92
93
|
*/
|
|
93
94
|
regionDeselect: {}
|
|
94
95
|
}
|
|
95
|
-
}
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
renderer: AnalyticMapRenderer
|
|
96
99
|
});
|
|
97
100
|
|
|
98
101
|
// ...........................................................................//
|
|
@@ -11,7 +11,9 @@ sap.ui.define([
|
|
|
11
11
|
* @class MapRenderer renderer.
|
|
12
12
|
* @static
|
|
13
13
|
*/
|
|
14
|
-
var AnalyticMapRenderer = {
|
|
14
|
+
var AnalyticMapRenderer = {
|
|
15
|
+
apiVersion: 2 // Semantic Rendering
|
|
16
|
+
};
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
19
|
* Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}.
|
|
@@ -11,7 +11,9 @@ sap.ui.define([
|
|
|
11
11
|
* @class Cluster renderer.
|
|
12
12
|
* @static
|
|
13
13
|
*/
|
|
14
|
-
var ClusterRenderer = {
|
|
14
|
+
var ClusterRenderer = {
|
|
15
|
+
apiVersion: 2 // Semantic Rendering
|
|
16
|
+
};
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
19
|
* Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}.
|
|
@@ -21,15 +23,12 @@ sap.ui.define([
|
|
|
21
23
|
*/
|
|
22
24
|
ClusterRenderer.render = function(oRm, oControl) {
|
|
23
25
|
// write the HTML into the render manager
|
|
24
|
-
oRm.
|
|
25
|
-
oRm.
|
|
26
|
-
oRm.
|
|
27
|
-
oRm.
|
|
28
|
-
oRm.
|
|
29
|
-
oRm.
|
|
30
|
-
|
|
31
|
-
oRm.writeStyles();
|
|
32
|
-
oRm.write(">"); // span element
|
|
26
|
+
oRm.openStart("div", oControl);
|
|
27
|
+
oRm.attr("align", "center");
|
|
28
|
+
oRm.attr("role", sap.ui.core.AccessibleRole.Presentation);
|
|
29
|
+
oRm.attr("tabindex", "-1");
|
|
30
|
+
oRm.class("sapUiVbicluster-main");
|
|
31
|
+
oRm.openEnd();
|
|
33
32
|
|
|
34
33
|
var Id1 = oControl.getId() + "-" + "backgroundcircle";
|
|
35
34
|
var Id2 = Id1 + "-" + "innercircle";
|
|
@@ -55,58 +54,88 @@ sap.ui.define([
|
|
|
55
54
|
}
|
|
56
55
|
var classOuter, classInner, classTextbox, classIcon;
|
|
57
56
|
if (type == sap.ui.vbm.SemanticType.Error) {
|
|
58
|
-
classOuter = "
|
|
59
|
-
classInner = "
|
|
60
|
-
classIcon = "
|
|
61
|
-
classTextbox = "
|
|
57
|
+
classOuter = "sapUiVbicluster-backgroundcircle sapUiVbicluster-border-error";
|
|
58
|
+
classInner = "sapUiVbicluster-innercircle sapUiVbicluster-background-error";
|
|
59
|
+
classIcon = "sapUiVbicluster-icon sapUiVbicluster-iconLight";
|
|
60
|
+
classTextbox = "sapUiVbicluster-textbox sapUiVbicluster-textbox-error";
|
|
62
61
|
} else if (type == sap.ui.vbm.SemanticType.Warning) {
|
|
63
|
-
classOuter = "
|
|
64
|
-
classInner = "
|
|
65
|
-
classIcon = "
|
|
66
|
-
classTextbox = "
|
|
62
|
+
classOuter = "sapUiVbicluster-backgroundcircle sapUiVbicluster-border-warning";
|
|
63
|
+
classInner = "sapUiVbicluster-innercircle sapUiVbicluster-background-warning";
|
|
64
|
+
classIcon = "sapUiVbicluster-icon sapUiVbicluster-iconLight";
|
|
65
|
+
classTextbox = "sapUiVbicluster-textbox sapUiVbicluster-textbox-warning";
|
|
67
66
|
} else if (type == sap.ui.vbm.SemanticType.Success) {
|
|
68
|
-
classOuter = "
|
|
69
|
-
classInner = "
|
|
70
|
-
classIcon = "
|
|
71
|
-
classTextbox = "
|
|
67
|
+
classOuter = "sapUiVbicluster-backgroundcircle sapUiVbicluster-border-success";
|
|
68
|
+
classInner = "sapUiVbicluster-innercircle sapUiVbicluster-background-success sapUiVbicluster-inner-light";
|
|
69
|
+
classIcon = "sapUiVbicluster-icon sapUiVbicluster-iconSuccess";
|
|
70
|
+
classTextbox = "sapUiVbicluster-textbox sapUiVbicluster-textbox-success";
|
|
72
71
|
} else if (type == sap.ui.vbm.SemanticType.None && col) {
|
|
73
72
|
// not type but color
|
|
74
|
-
classOuter = "
|
|
75
|
-
classInner = "
|
|
76
|
-
classIcon = "
|
|
77
|
-
classTextbox = "
|
|
73
|
+
classOuter = "sapUiVbicluster-backgroundcircle";
|
|
74
|
+
classInner = "sapUiVbicluster-innercircle sapUiVbicluster-inner-light";
|
|
75
|
+
classIcon = "sapUiVbicluster-icon";
|
|
76
|
+
classTextbox = "sapUiVbicluster-textbox";
|
|
78
77
|
} else {
|
|
79
|
-
classOuter = "
|
|
80
|
-
classInner = "
|
|
81
|
-
classIcon = "
|
|
82
|
-
classTextbox = "
|
|
78
|
+
classOuter = "sapUiVbicluster-backgroundcircle sapUiVbicluster-border-default";
|
|
79
|
+
classInner = "sapUiVbicluster-innercircle sapUiVbicluster-background-default sapUiVbicluster-inner-light";
|
|
80
|
+
classIcon = "sapUiVbicluster-icon sapUiVbicluster-iconDefault";
|
|
81
|
+
classTextbox = "sapUiVbicluster-textbox sapUiVbicluster-textbox-default";
|
|
83
82
|
}
|
|
84
83
|
|
|
85
|
-
var ariaRolePresentation =
|
|
86
|
-
var ariaRoleImg =
|
|
87
|
-
var ariaRoleDescription =
|
|
84
|
+
var ariaRolePresentation = sap.ui.core.AccessibleRole.Presentation;
|
|
85
|
+
var ariaRoleImg = sap.ui.core.AccessibleRole.Img;
|
|
86
|
+
var ariaRoleDescription = sap.ui.core.AccessibleRole.Description;
|
|
87
|
+
|
|
88
|
+
oRm.openStart("div", Id1);
|
|
89
|
+
oRm.attr("class", classOuter);
|
|
90
|
+
|
|
91
|
+
if (type == sap.ui.vbm.SemanticType.None && col) {
|
|
92
|
+
oRm.style("border-color", col)
|
|
93
|
+
}
|
|
94
|
+
oRm.attr("role", ariaRolePresentation);
|
|
95
|
+
oRm.openEnd();
|
|
96
|
+
|
|
97
|
+
oRm.openStart("div", Id2);
|
|
98
|
+
oRm.attr("class", classInner);
|
|
99
|
+
if (type == sap.ui.vbm.SemanticType.None && col) {
|
|
100
|
+
oRm.style("border-color", col)
|
|
101
|
+
}
|
|
102
|
+
oRm.attr("role", ariaRolePresentation);
|
|
103
|
+
oRm.openEnd();
|
|
104
|
+
|
|
105
|
+
|
|
88
106
|
|
|
89
|
-
oRm.write("<div id= " + Id1 + " " + classOuter + " " + ariaRolePresentation + ">");
|
|
90
|
-
oRm.write("<div id= " + Id2 + " " + classInner + " " + ariaRolePresentation + ">");
|
|
91
107
|
|
|
92
108
|
if (icon) {
|
|
93
109
|
var IdIcon = oControl.getId() + "-" + "icon";
|
|
94
|
-
oRm.
|
|
95
|
-
oRm.
|
|
96
|
-
|
|
110
|
+
oRm.openStart("span", IdIcon);
|
|
111
|
+
oRm.attr("class", classIcon);
|
|
112
|
+
if (type == sap.ui.vbm.SemanticType.None && col) {
|
|
113
|
+
oRm.style("color", col)
|
|
114
|
+
}
|
|
115
|
+
oRm.attr("role", ariaRoleImg);
|
|
116
|
+
oRm.openEnd();
|
|
117
|
+
oRm.text(icon);
|
|
118
|
+
oRm.close("span");
|
|
97
119
|
}
|
|
98
120
|
|
|
99
|
-
oRm.
|
|
121
|
+
oRm.close("div"); // end of cluster-innercircle
|
|
100
122
|
if ((oControl.getText())) {
|
|
101
123
|
var IdTextbox = oControl.getId() + "-" + "textbox";
|
|
102
|
-
oRm.
|
|
103
|
-
oRm.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
124
|
+
oRm.openStart("div", IdTextbox);
|
|
125
|
+
oRm.attr("class", classTextbox);
|
|
126
|
+
if (type == sap.ui.vbm.SemanticType.None && col) {
|
|
127
|
+
oRm.style("border-color", col);
|
|
128
|
+
}
|
|
129
|
+
oRm.attr("role", ariaRoleDescription);
|
|
130
|
+
oRm.openEnd();
|
|
131
|
+
oRm.openStart("div");
|
|
132
|
+
oRm.openEnd();
|
|
133
|
+
oRm.text(oControl.getText());
|
|
134
|
+
oRm.close("div");
|
|
135
|
+
oRm.close("div");
|
|
107
136
|
}
|
|
108
|
-
oRm.
|
|
109
|
-
oRm.
|
|
137
|
+
oRm.close("div"); // end of cluster-backgroundcircle
|
|
138
|
+
oRm.close("div");
|
|
110
139
|
|
|
111
140
|
};
|
|
112
141
|
|
package/src/sap/ui/vbm/GeoMap.js
CHANGED
|
@@ -10,7 +10,9 @@ sap.ui.define([
|
|
|
10
10
|
/*
|
|
11
11
|
* @class GeoMap renderer. @static
|
|
12
12
|
*/
|
|
13
|
-
var GeoMapRenderer = {
|
|
13
|
+
var GeoMapRenderer = {
|
|
14
|
+
// apiVersion: 2 // Semantic Rendering
|
|
15
|
+
};
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}.
|
package/src/sap/ui/vbm/VBI.js
CHANGED
|
@@ -9,7 +9,9 @@ sap.ui.define(function() {
|
|
|
9
9
|
* @class VBI renderer.
|
|
10
10
|
* @static
|
|
11
11
|
*/
|
|
12
|
-
var VBIRenderer = {
|
|
12
|
+
var VBIRenderer = {
|
|
13
|
+
apiVersion: 2 // Semantic Rendering
|
|
14
|
+
};
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}.
|
|
@@ -18,37 +20,32 @@ sap.ui.define(function() {
|
|
|
18
20
|
* @param {sap.ui.core.Control} oControl an object representation of the control that should be rendered
|
|
19
21
|
*/
|
|
20
22
|
VBIRenderer.render = function(oRm, oControl) {
|
|
21
|
-
// console.log( "sap.ui.vbm.VBIRenderer.render.....\r\n");
|
|
22
23
|
var sAriaLabel = oControl.getAriaLabel();
|
|
23
24
|
var aLabelledBy = oControl.getAriaLabelledBy();
|
|
24
25
|
var aDescribedBy = oControl.getAriaDescribedBy();
|
|
25
26
|
|
|
26
27
|
// write the HTML into the render manager
|
|
27
|
-
oRm.
|
|
28
|
-
oRm.
|
|
29
|
-
|
|
28
|
+
oRm.openStart("div", oControl);
|
|
29
|
+
oRm.attr("role", "Figure");
|
|
30
|
+
|
|
30
31
|
|
|
31
32
|
if (sAriaLabel) {
|
|
32
|
-
oRm.
|
|
33
|
+
oRm.attr("aria-label", sAriaLabel);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
// aria-labelledby references
|
|
36
37
|
if (aLabelledBy && aLabelledBy.length > 0) {
|
|
37
|
-
oRm.
|
|
38
|
+
oRm.attr("aria-labelledby", aLabelledBy.join(" "));
|
|
38
39
|
}
|
|
39
40
|
// aria-describedby references
|
|
40
41
|
if (aDescribedBy && aDescribedBy.length > 0) {
|
|
41
|
-
oRm.
|
|
42
|
+
oRm.attr("aria-describedby", aDescribedBy.join(" "));
|
|
42
43
|
}
|
|
43
|
-
|
|
44
|
-
oRm.
|
|
45
|
-
oRm.
|
|
46
|
-
oRm.
|
|
47
|
-
oRm.
|
|
48
|
-
oRm.addStyle("height", oControl.getHeight());
|
|
49
|
-
|
|
50
|
-
oRm.writeStyles();
|
|
51
|
-
oRm.write(">"); // span element
|
|
44
|
+
oRm.attr("tabindex", "0");
|
|
45
|
+
oRm.class("vbi-main");
|
|
46
|
+
oRm.style("width", oControl.getWidth());
|
|
47
|
+
oRm.style("height", oControl.getHeight());
|
|
48
|
+
oRm.openEnd();
|
|
52
49
|
|
|
53
50
|
var id = oControl.getId();
|
|
54
51
|
|
|
@@ -58,30 +55,40 @@ sap.ui.define(function() {
|
|
|
58
55
|
// for IE 11 do the regexp test........................................//
|
|
59
56
|
if ((navigator.appName == "Microsoft Internet Explorer") || /(trident)\/[\w.]+;.*rv:([\w.]+)/i.test(navigator.userAgent)) {
|
|
60
57
|
// write the object tag
|
|
61
|
-
oRm.
|
|
62
|
-
|
|
63
|
-
"
|
|
64
|
-
|
|
58
|
+
oRm.openStart("object", "'VBI" + id + "'" + " data-sap-ui-preserve='" + id + "' CLASSID='CLSID:00100000-2011-0070-2000-FC7214A1CD7B'");
|
|
59
|
+
oRm.attr("width", oControl.getWidth());
|
|
60
|
+
oRm.attr("height", oControl.getHeight());
|
|
61
|
+
oRm.openEnd();
|
|
65
62
|
// set a link to the native installer...............................//
|
|
66
|
-
oRm.
|
|
63
|
+
oRm.openStart("a");
|
|
64
|
+
oRm.attr("href", "https://help.sap.com/viewer/product/SAP_VISUAL_BUSINESS_2.1");
|
|
65
|
+
oRm.openEnd();
|
|
66
|
+
oRm.text("Get the Visual Business PlugIn.");
|
|
67
|
+
oRm.close("a");
|
|
67
68
|
|
|
68
|
-
oRm.
|
|
69
|
+
oRm.close("object");
|
|
69
70
|
|
|
70
71
|
} else {
|
|
71
72
|
// write the embed tag
|
|
72
|
-
oRm.
|
|
73
|
+
oRm.openStart("write", "'VBI" + id + "'" + " data-sap-ui-preserve='" + id + "' type='application/x-visualbusiness'");
|
|
74
|
+
oRm.attr("width", oControl.getWidth());
|
|
75
|
+
oRm.attr("height", oControl.getHeight());
|
|
76
|
+
oRm.openEnd();
|
|
73
77
|
|
|
74
78
|
}
|
|
75
79
|
// render the information for using the native plugin
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
|
|
79
|
-
oRm.
|
|
80
|
-
|
|
81
|
-
oRm.
|
|
83
|
+
oRm.openStart("div");
|
|
84
|
+
oRm.class("vbi-hidden");
|
|
85
|
+
oRm.attr("role", sap.ui.core.AccessibleRole.Presentation);
|
|
86
|
+
oRm.openEnd();
|
|
87
|
+
this.renderDependants(oRm, oControl.m_renderList);
|
|
88
|
+
oRm.close("div");
|
|
82
89
|
oControl.m_renderList = [];
|
|
83
90
|
|
|
84
|
-
oRm.
|
|
91
|
+
oRm.close("div");
|
|
85
92
|
|
|
86
93
|
// the config is not loaded here any more, due the set config will be.....//
|
|
87
94
|
// called, then queueing or execution will take place.....................//
|
|
@@ -94,9 +101,11 @@ sap.ui.define(function() {
|
|
|
94
101
|
// We need to find a better solution because the real problem
|
|
95
102
|
// is the fact that we fire the container creation event twice.
|
|
96
103
|
if (!oEntry.control.getDomRef()) {
|
|
97
|
-
oRm.
|
|
104
|
+
oRm.openStart("div");
|
|
105
|
+
oRm.attr("data", oEntry.data);
|
|
106
|
+
oRm.openEnd();
|
|
98
107
|
oRm.renderControl(oEntry.control);
|
|
99
|
-
oRm.
|
|
108
|
+
oRm.close("div");
|
|
100
109
|
}
|
|
101
110
|
}
|
|
102
111
|
};
|
|
@@ -23,7 +23,7 @@ sap.ui.define([
|
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @author SAP SE
|
|
26
|
-
* @version 1.
|
|
26
|
+
* @version 1.108.0
|
|
27
27
|
* @extends sap.ui.core.Control
|
|
28
28
|
* @alias sap.ui.vbm.Viewport
|
|
29
29
|
*/
|
|
@@ -81,7 +81,9 @@ sap.ui.define([
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
}
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
renderer: ViewportRenderer
|
|
85
87
|
});
|
|
86
88
|
|
|
87
89
|
var EPS = 0.000001;
|
|
@@ -182,6 +184,10 @@ sap.ui.define([
|
|
|
182
184
|
this._cameraController.update();
|
|
183
185
|
};
|
|
184
186
|
|
|
187
|
+
Viewport.prototype.getOrbitControl = function () {
|
|
188
|
+
return this._cameraController;
|
|
189
|
+
};
|
|
190
|
+
|
|
185
191
|
Viewport.prototype.exit = function () {
|
|
186
192
|
if (this._resizeListenerId) {
|
|
187
193
|
ResizeHandler.deregister(this._resizeListenerId);
|
|
@@ -9,20 +9,19 @@ sap.ui.define(function() {
|
|
|
9
9
|
* Viewport renderer.
|
|
10
10
|
* @namespace
|
|
11
11
|
*/
|
|
12
|
-
var ViewportRenderer = {
|
|
12
|
+
var ViewportRenderer = {
|
|
13
|
+
apiVersion: 2 // Semantic Rendering
|
|
14
|
+
};
|
|
13
15
|
|
|
14
16
|
ViewportRenderer.render = function(rm, control) {
|
|
15
|
-
|
|
16
|
-
rm.
|
|
17
|
-
rm.
|
|
18
|
-
rm.
|
|
19
|
-
rm.
|
|
20
|
-
rm.
|
|
21
|
-
rm.
|
|
22
|
-
rm.
|
|
23
|
-
rm.writeClasses();
|
|
24
|
-
rm.write(">");
|
|
25
|
-
rm.write("</div>");
|
|
17
|
+
rm.openStart("div", control);
|
|
18
|
+
rm.attr("tabindex", 0);
|
|
19
|
+
rm.attr("role", "figure");
|
|
20
|
+
rm.style("width", control.getWidth())
|
|
21
|
+
rm.style("height", control.getHeight());
|
|
22
|
+
rm.class("sapUiVbmViewport");
|
|
23
|
+
rm.openEnd();
|
|
24
|
+
rm.close("div");
|
|
26
25
|
};
|
|
27
26
|
|
|
28
27
|
return ViewportRenderer;
|
|
@@ -354,7 +354,7 @@ sap.ui.define([
|
|
|
354
354
|
var key = (name.indexOf(".") !== -1) ? name.split(".")[1] : name;
|
|
355
355
|
for (var nJ = 0, len = aVO.length; nJ < len; ++nJ) {
|
|
356
356
|
// get the control.....................................................//
|
|
357
|
-
if (aVO[nJ].
|
|
357
|
+
if (aVO[nJ].getKey() === key) {
|
|
358
358
|
return aVO[nJ];
|
|
359
359
|
}
|
|
360
360
|
}
|
|
@@ -83,7 +83,7 @@ sap.ui.define([
|
|
|
83
83
|
*
|
|
84
84
|
* @private
|
|
85
85
|
* @author SAP SE
|
|
86
|
-
* @version 1.
|
|
86
|
+
* @version 1.108.0
|
|
87
87
|
* @alias sap.ui.vbm.adapter3d.DragDropHandler
|
|
88
88
|
*/
|
|
89
89
|
var DragDropHandler = BaseObject.extend("sap.ui.vbm.adapter3d.DragDropHandler", /** @lends sap.ui.vbm.adapter3d.DragDropHandler.prototype */ {
|
|
@@ -29,7 +29,7 @@ sap.ui.define([
|
|
|
29
29
|
*
|
|
30
30
|
* @private
|
|
31
31
|
* @author SAP SE
|
|
32
|
-
* @version 1.
|
|
32
|
+
* @version 1.108.0
|
|
33
33
|
* @alias sap.ui.vbm.adapter3d.ModelHandler
|
|
34
34
|
*/
|
|
35
35
|
var ModelHandler = BaseObject.extend("sap.ui.vbm.adapter3d.ModelHandler", /** @lends sap.ui.vbm.adapter3d.ModelHandler.prototype */ {
|
|
@@ -377,7 +377,7 @@ sap.ui.define([
|
|
|
377
377
|
*
|
|
378
378
|
* @private
|
|
379
379
|
* @author SAP SE
|
|
380
|
-
* @version 1.
|
|
380
|
+
* @version 1.108.0
|
|
381
381
|
* @alias sap.ui.vbm.adapter3d.ObjectFactory
|
|
382
382
|
*/
|
|
383
383
|
var ObjectFactory = BaseObject.extend("sap.ui.vbm.adapter3d.ObjectFactory", /** @lends sap.ui.vbm.adapter3d.ObjectFactory.prototype */ {});
|
|
@@ -32,7 +32,7 @@ sap.ui.define([
|
|
|
32
32
|
*
|
|
33
33
|
* @private
|
|
34
34
|
* @author SAP SE
|
|
35
|
-
* @version 1.
|
|
35
|
+
* @version 1.108.0
|
|
36
36
|
* @alias sap.ui.vbm.adapter3d.PolygonHandler
|
|
37
37
|
*/
|
|
38
38
|
var PolygonHandler = BaseObject.extend("sap.ui.vbm.adapter3d.PolygonHandler", /** @lends sap.ui.vbm.adapter3d.PolygonHandler.prototype */ {
|
|
@@ -46,7 +46,7 @@ sap.ui.define([
|
|
|
46
46
|
*
|
|
47
47
|
* @private
|
|
48
48
|
* @author SAP SE
|
|
49
|
-
* @version 1.
|
|
49
|
+
* @version 1.108.0
|
|
50
50
|
* @alias sap.ui.vbm.adapter3d.SceneBuilder
|
|
51
51
|
*/
|
|
52
52
|
var SceneBuilder = BaseObject.extend("sap.ui.vbm.adapter3d.SceneBuilder", /** @lends sap.ui.vbm.adapter3d.SceneBuilder.prototype */ {
|
|
@@ -561,5 +561,140 @@ sap.ui.define([
|
|
|
561
561
|
return (layers.mask & ( 1 << channel | 0 ) ) !== 0;
|
|
562
562
|
};
|
|
563
563
|
|
|
564
|
+
Utilities.parseKeyboardShortcut = function (shortcutsString) {
|
|
565
|
+
|
|
566
|
+
var shortcutsArray = [];
|
|
567
|
+
var shortcutObject = {},
|
|
568
|
+
code = false,
|
|
569
|
+
shortcuts;
|
|
570
|
+
shortcutObject.ctrlKey = false;
|
|
571
|
+
shortcutObject.altKey = false;
|
|
572
|
+
shortcutObject.shiftKey = false;
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
if (typeof shortcutsString === 'string') {
|
|
576
|
+
shortcuts = shortcutsString.split(",");
|
|
577
|
+
} else {
|
|
578
|
+
shortcuts = shortcutsString;
|
|
579
|
+
shortcutObject.keyCode = shortcuts;
|
|
580
|
+
shortcutsArray.push(shortcutObject);
|
|
581
|
+
return shortcutsArray;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
shortcuts.forEach(parseShortcut);
|
|
585
|
+
|
|
586
|
+
function parseShortcut(shortcut) {
|
|
587
|
+
if (shortcut.includes("CTRL")) {
|
|
588
|
+
shortcutObject.ctrlKey = true;
|
|
589
|
+
code = true;
|
|
590
|
+
}
|
|
591
|
+
if (shortcut.includes("ALT")) {
|
|
592
|
+
shortcutObject.altKey = true;
|
|
593
|
+
code = true;
|
|
594
|
+
}
|
|
595
|
+
if (shortcut.includes("SHIFT")) {
|
|
596
|
+
shortcutObject.shiftKey = true;
|
|
597
|
+
code = true;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
if (code) {
|
|
601
|
+
var keys = shortcut.split("+");
|
|
602
|
+
shortcutObject.keyCode = keys[keys.length - 1];
|
|
603
|
+
} else {
|
|
604
|
+
shortcutObject.keyCode = shortcut;
|
|
605
|
+
}
|
|
606
|
+
shortcutsArray.push({
|
|
607
|
+
shiftKey: shortcutObject.shiftKey,
|
|
608
|
+
ctrlKey: shortcutObject.ctrlKey,
|
|
609
|
+
altKey: shortcutObject.altKey,
|
|
610
|
+
keyCode: shortcutObject.keyCode
|
|
611
|
+
});
|
|
612
|
+
shortcutObject.ctrlKey = false;
|
|
613
|
+
shortcutObject.altKey = false;
|
|
614
|
+
shortcutObject.shiftKey = false;
|
|
615
|
+
shortcutObject.keyCode = '';
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
return shortcutsArray;
|
|
619
|
+
|
|
620
|
+
};
|
|
621
|
+
|
|
622
|
+
Utilities.matchKeyboardShortcut = function (event, shortcutsArray) {
|
|
623
|
+
// The below code will return true if a single pair of shortcut matches with the clicked event
|
|
624
|
+
var flag = false,
|
|
625
|
+
eventCount = 0,
|
|
626
|
+
eventExists = false,
|
|
627
|
+
shortcutsCount = 0;
|
|
628
|
+
|
|
629
|
+
if (event.altKey) {
|
|
630
|
+
eventCount++;
|
|
631
|
+
eventExists = true;
|
|
632
|
+
}
|
|
633
|
+
if (event.shiftKey) {
|
|
634
|
+
eventCount++;
|
|
635
|
+
eventExists = true;
|
|
636
|
+
}
|
|
637
|
+
if (event.ctrlKey) {
|
|
638
|
+
eventCount++;
|
|
639
|
+
eventExists = true;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
for (var i = 0; i < shortcutsArray.length; i++) {
|
|
643
|
+
var key = false,
|
|
644
|
+
trueCount = 0,
|
|
645
|
+
specifierCount = 0,
|
|
646
|
+
specifierExists = false;
|
|
647
|
+
|
|
648
|
+
if (shortcutsArray[i].altKey || shortcutsArray[i].shiftKey || shortcutsArray[i].ctrlKey) {
|
|
649
|
+
specifierExists = true;
|
|
650
|
+
if (shortcutsArray[i].altKey) {
|
|
651
|
+
shortcutsCount++;
|
|
652
|
+
}
|
|
653
|
+
if (shortcutsArray[i].ctrlKey) {
|
|
654
|
+
shortcutsCount++;
|
|
655
|
+
}
|
|
656
|
+
if (shortcutsArray[i].shiftKey) {
|
|
657
|
+
shortcutsCount++;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
if (event.keyCode == shortcutsArray[i].keyCode) {
|
|
661
|
+
|
|
662
|
+
trueCount++;
|
|
663
|
+
key = true;
|
|
664
|
+
} else {
|
|
665
|
+
key = false;
|
|
666
|
+
flag = false;
|
|
667
|
+
continue;
|
|
668
|
+
}
|
|
669
|
+
if (event.altKey || shortcutsArray[i].altKey) {
|
|
670
|
+
if (event.altKey == shortcutsArray[i].altKey) {
|
|
671
|
+
trueCount++;
|
|
672
|
+
specifierCount++;
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
if (event.shiftKey || shortcutsArray[i].shiftKey) {
|
|
676
|
+
if (event.shiftKey == shortcutsArray[i].shiftKey) {
|
|
677
|
+
trueCount++;
|
|
678
|
+
specifierCount++;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
if (event.ctrlKey || shortcutsArray[i].ctrlKey) {
|
|
682
|
+
if (event.ctrlKey == shortcutsArray[i].ctrlKey) {
|
|
683
|
+
trueCount++;
|
|
684
|
+
specifierCount++;
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
if ((trueCount > 1 && key == true && specifierCount == eventCount && eventCount == shortcutsCount ) ||
|
|
689
|
+
(trueCount = 1 && key == true && specifierExists == false && eventExists == false)) {
|
|
690
|
+
flag = true;
|
|
691
|
+
break;
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
return flag;
|
|
697
|
+
};
|
|
698
|
+
|
|
564
699
|
return Utilities;
|
|
565
700
|
});
|
|
@@ -56,7 +56,7 @@ sap.ui.define([
|
|
|
56
56
|
*
|
|
57
57
|
* @private
|
|
58
58
|
* @author SAP SE
|
|
59
|
-
* @version 1.
|
|
59
|
+
* @version 1.108.0
|
|
60
60
|
* @alias sap.ui.vbm.adapter3d.VBIJSONParser
|
|
61
61
|
*/
|
|
62
62
|
var VBIJSONParser = BaseObject.extend("sap.ui.vbm.adapter3d.VBIJSONParser", /** @lends sap.ui.vbm.adapter3d.VBIJSONParser.prototype */ {
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
constructor( object, domElement ) {
|
|
22
22
|
|
|
23
23
|
super();
|
|
24
|
+
var that = this;
|
|
24
25
|
if ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.' );
|
|
25
26
|
if ( domElement === document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
|
|
26
27
|
this.object = object;
|
|
@@ -570,63 +571,50 @@
|
|
|
570
571
|
}
|
|
571
572
|
|
|
572
573
|
function handleKeyDown( event ) {
|
|
573
|
-
|
|
574
|
+
const cameraRotateLeft = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_ROTATE_LEFT") ? that.config.get("CAMERA_ROTATE_LEFT") : "SHIFT+"+scope.keys.LEFT);
|
|
575
|
+
const cameraRotateRight = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_ROTATE_RIGHT") ? that.config.get("CAMERA_ROTATE_RIGHT") : "SHIFT+"+scope.keys.RIGHT);
|
|
576
|
+
const cameraRotateUp = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_ROTATE_UP") ? that.config.get("CAMERA_ROTATE_UP") : "SHIFT+"+scope.keys.UP);
|
|
577
|
+
const cameraRotateDown = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_ROTATE_DOWN") ? that.config.get("CAMERA_ROTATE_DOWN") : "SHIFT+"+scope.keys.DOWN);
|
|
578
|
+
const cameraPanLeft = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_PAN_LEFT") ? that.config.get("CAMERA_PAN_LEFT") : scope.keys.LEFT);
|
|
579
|
+
const cameraPanRight = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_PAN_RIGHT") ? that.config.get("CAMERA_PAN_RIGHT") : scope.keys.RIGHT);
|
|
580
|
+
const cameraPanUp = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_PAN_UP") ? that.config.get("CAMERA_PAN_UP") : scope.keys.UP);
|
|
581
|
+
const cameraPanDown = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_PAN_DOWN") ? that.config.get("CAMERA_PAN_DOWN") : scope.keys.DOWN);
|
|
582
|
+
const cameraZoomIn = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_ZOOM_IN") ? that.config.get("CAMERA_ZOOM_IN") : scope.keys.PLUS+","+scope.keys.NUMPLUS);
|
|
583
|
+
const cameraZoomOut = that.utilities.parseKeyboardShortcut(that.config.has("CAMERA_ZOOM_OUT") ? that.config.get("CAMERA_ZOOM_OUT") : scope.keys.MINUS+","+scope.keys.NUMMINUS);
|
|
574
584
|
let needsUpdate = true;
|
|
575
585
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
case scope.keys.RIGHT:
|
|
609
|
-
if (event.shiftKey) {
|
|
610
|
-
if (scope.enableRotate) {
|
|
611
|
-
rotate(-scope.keyRotateSpeed, 0);
|
|
612
|
-
}
|
|
613
|
-
} else if (scope.enablePan) {
|
|
614
|
-
pan( - scope.keyPanSpeed, 0 );
|
|
615
|
-
}
|
|
616
|
-
break;
|
|
617
|
-
|
|
618
|
-
case scope.keys.MINUS:
|
|
619
|
-
case scope.keys.NUMMINUS:
|
|
620
|
-
dollyOut(getZoomScale());
|
|
621
|
-
break;
|
|
622
|
-
|
|
623
|
-
case scope.keys.PLUS:
|
|
624
|
-
case scope.keys.NUMPLUS:
|
|
625
|
-
dollyIn(getZoomScale());
|
|
626
|
-
break;
|
|
627
|
-
|
|
628
|
-
default:
|
|
629
|
-
needsUpdate = false;
|
|
586
|
+
if (that.utilities.matchKeyboardShortcut(event, cameraRotateLeft)) {
|
|
587
|
+
rotate(scope.keyRotateSpeed, 0);
|
|
588
|
+
}
|
|
589
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraRotateRight)) {
|
|
590
|
+
rotate(-scope.keyRotateSpeed, 0);
|
|
591
|
+
}
|
|
592
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraRotateUp)) {
|
|
593
|
+
rotate(0, scope.keyRotateSpeed);
|
|
594
|
+
}
|
|
595
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraRotateDown)) {
|
|
596
|
+
rotate(0, - scope.keyRotateSpeed);
|
|
597
|
+
}
|
|
598
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraPanLeft)) {
|
|
599
|
+
pan( scope.keyPanSpeed, 0 );
|
|
600
|
+
}
|
|
601
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraPanRight)) {
|
|
602
|
+
pan( - scope.keyPanSpeed, 0 );
|
|
603
|
+
}
|
|
604
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraPanUp)) {
|
|
605
|
+
pan( 0, scope.keyPanSpeed );
|
|
606
|
+
}
|
|
607
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraPanDown)) {
|
|
608
|
+
pan( 0, - scope.keyPanSpeed );
|
|
609
|
+
}
|
|
610
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraZoomIn)) {
|
|
611
|
+
dollyIn(getZoomScale());
|
|
612
|
+
}
|
|
613
|
+
else if (that.utilities.matchKeyboardShortcut(event, cameraZoomOut)) {
|
|
614
|
+
dollyOut(getZoomScale());
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
needsUpdate = false;
|
|
630
618
|
}
|
|
631
619
|
|
|
632
620
|
if ( needsUpdate ) {
|
|
@@ -1147,6 +1135,14 @@
|
|
|
1147
1135
|
|
|
1148
1136
|
}
|
|
1149
1137
|
|
|
1138
|
+
setConfig(config) {
|
|
1139
|
+
this.config = config;
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
setUtilities(utilities) {
|
|
1143
|
+
this.utilities = utilities;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1150
1146
|
}
|
|
1151
1147
|
|
|
1152
1148
|
// This set of controls performs orbiting, dollying (zooming), and panning.
|
|
@@ -19,7 +19,7 @@ sap.ui.define([
|
|
|
19
19
|
* @namespace
|
|
20
20
|
* @alias sap.ui.vbm
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.108.0
|
|
23
23
|
* @public
|
|
24
24
|
*/
|
|
25
25
|
|
|
@@ -42,7 +42,7 @@ sap.ui.define([
|
|
|
42
42
|
"sap.ui.vbm.ClusterBase", "sap.ui.vbm.ClusterTree", "sap.ui.vbm.ClusterGrid", "sap.ui.vbm.ClusterDistance", "sap.ui.vbm.Heatmap",
|
|
43
43
|
"sap.ui.vbm.HeatPoint", "sap.ui.vbm.ClusterContainer", "sap.ui.vbm.Adapter", "sap.ui.vbm.Adapter3D"
|
|
44
44
|
],
|
|
45
|
-
version: "1.
|
|
45
|
+
version: "1.108.0"
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
sap.ui.loader.config({
|