@inweb/client 25.3.8 → 25.3.10
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/dist/client.js +709 -687
- package/dist/client.js.map +1 -1
- package/dist/client.min.js +1 -1
- package/dist/client.module.js +621 -586
- package/dist/client.module.js.map +1 -1
- package/lib/Api/Client.d.ts +5 -8
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaCloud.d.ts +4 -4
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.d.ts +1 -1
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaLine.d.ts +3 -3
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.d.ts +4 -4
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaText.d.ts +3 -3
- package/lib/Viewer/Markup/IViewpoint.d.ts +30 -26
- package/lib/Viewer/Viewer.d.ts +0 -6
- package/package.json +1 -1
- package/src/Api/Client.ts +44 -12
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaCloud.ts +4 -4
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.ts +1 -1
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaLine.ts +1 -1
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.ts +6 -6
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaText.ts +3 -3
- package/src/Viewer/Markup/IViewpoint.ts +31 -26
- package/src/Viewer/Markup/Impl/Konva/KonvaMarkup.ts +8 -8
- package/src/Viewer/Markup/Impl/Visualize/VisualizeMarkup.ts +6 -6
- package/src/Viewer/Viewer.ts +1 -14
package/dist/client.js
CHANGED
|
@@ -1555,342 +1555,183 @@
|
|
|
1555
1555
|
}
|
|
1556
1556
|
|
|
1557
1557
|
///////////////////////////////////////////////////////////////////////////////
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
// license agreement with Open Design Alliance.
|
|
1573
|
-
// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.
|
|
1574
|
-
// All rights reserved.
|
|
1575
|
-
//
|
|
1576
|
-
// By use of this software, its documentation or related materials, you
|
|
1577
|
-
// acknowledge and accept the above terms.
|
|
1578
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
1579
|
-
class Options {
|
|
1580
|
-
constructor(emitter) {
|
|
1581
|
-
this._emitter = emitter;
|
|
1582
|
-
this._data = Options.defaults();
|
|
1583
|
-
this.loadFromStorage();
|
|
1584
|
-
}
|
|
1585
|
-
static defaults() {
|
|
1586
|
-
return {
|
|
1587
|
-
showWCS: true,
|
|
1588
|
-
cameraAnimation: true,
|
|
1589
|
-
antialiasing: true,
|
|
1590
|
-
groundShadow: false,
|
|
1591
|
-
shadows: false,
|
|
1592
|
-
cameraAxisXSpeed: 4,
|
|
1593
|
-
cameraAxisYSpeed: 1,
|
|
1594
|
-
ambientOcclusion: false,
|
|
1595
|
-
enableStreamingMode: true,
|
|
1596
|
-
enablePartialMode: false,
|
|
1597
|
-
memoryLimit: 3294967296,
|
|
1598
|
-
cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },
|
|
1599
|
-
edgesColor: { r: 0xff, g: 0x98, b: 0x00 },
|
|
1600
|
-
facesColor: { r: 0xff, g: 0x98, b: 0x00 },
|
|
1601
|
-
edgesVisibility: true,
|
|
1602
|
-
edgesOverlap: true,
|
|
1603
|
-
facesOverlap: false,
|
|
1604
|
-
facesTransparancy: 200,
|
|
1605
|
-
enableCustomHighlight: true,
|
|
1606
|
-
sceneGraph: false,
|
|
1607
|
-
edgeModel: true,
|
|
1608
|
-
reverseZoomWheel: false,
|
|
1609
|
-
enableZoomWheel: true,
|
|
1610
|
-
enableGestures: true,
|
|
1611
|
-
geometryType: "vsfx",
|
|
1612
|
-
};
|
|
1558
|
+
/**
|
|
1559
|
+
* A permission provides information about {@link File | file} sharing granted to a specific
|
|
1560
|
+
* {@link User | users}, group, or project {@link Member | member}.
|
|
1561
|
+
*/
|
|
1562
|
+
class Permission {
|
|
1563
|
+
/**
|
|
1564
|
+
* @param data - An object that implements permission data storage.
|
|
1565
|
+
* @param fileId - Owner file ID.
|
|
1566
|
+
* @param httpClient - Http client.
|
|
1567
|
+
*/
|
|
1568
|
+
constructor(data, fileId, httpClient) {
|
|
1569
|
+
this.httpClient = httpClient;
|
|
1570
|
+
this.fileId = fileId;
|
|
1571
|
+
this.data = data;
|
|
1613
1572
|
}
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
this.saveToStorage();
|
|
1617
|
-
this._emitter.emit({ type: "optionschange", data: this });
|
|
1618
|
-
}
|
|
1573
|
+
internalGet() {
|
|
1574
|
+
return this.httpClient.get(`/files/${this.fileId}/permissions/${this.id}`);
|
|
1619
1575
|
}
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
try {
|
|
1623
|
-
localStorage.setItem("od-client-settings", JSON.stringify(this.data));
|
|
1624
|
-
}
|
|
1625
|
-
catch (error) {
|
|
1626
|
-
console.error("Cannot save client settings.", error);
|
|
1627
|
-
}
|
|
1576
|
+
internalPut(body) {
|
|
1577
|
+
return this.httpClient.put(`/files/${this.fileId}/permissions/${this.id}`, body);
|
|
1628
1578
|
}
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
try {
|
|
1632
|
-
const item = localStorage.getItem("od-client-settings");
|
|
1633
|
-
if (item) {
|
|
1634
|
-
const data = JSON.parse(item);
|
|
1635
|
-
this.data = { ...data };
|
|
1636
|
-
}
|
|
1637
|
-
}
|
|
1638
|
-
catch (error) {
|
|
1639
|
-
console.error("Cannot load client settings.", error);
|
|
1640
|
-
}
|
|
1579
|
+
internalDelete() {
|
|
1580
|
+
return this.httpClient.delete(`/files/${this.fileId}/permissions/${this.id}`);
|
|
1641
1581
|
}
|
|
1642
1582
|
/**
|
|
1643
|
-
*
|
|
1583
|
+
* Defines what actions are allowed to be performed on a file with this permission:
|
|
1644
1584
|
*
|
|
1645
|
-
*
|
|
1585
|
+
* - `read` - The ability to read file description, geometry data and properties
|
|
1586
|
+
* - `readSourceFile` - The ability to read source file
|
|
1587
|
+
* - `write` - The ability to modify file name, description and references
|
|
1588
|
+
* - `readViewpoint` - The ability to read file viewpoints
|
|
1589
|
+
* - `createViewpoint` - The ability to create file viewpoints
|
|
1646
1590
|
*/
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
return acc;
|
|
1653
|
-
}, {});
|
|
1654
|
-
this.data = { ...this.data, ...resetData };
|
|
1655
|
-
}
|
|
1656
|
-
else {
|
|
1657
|
-
this.data = { ...this.data, ...Options.defaults() };
|
|
1658
|
-
}
|
|
1591
|
+
get actions() {
|
|
1592
|
+
return this.data.actions;
|
|
1593
|
+
}
|
|
1594
|
+
set actions(value) {
|
|
1595
|
+
this._data.actions = value;
|
|
1659
1596
|
}
|
|
1597
|
+
/**
|
|
1598
|
+
* Raw permission data received from the server.
|
|
1599
|
+
*
|
|
1600
|
+
* @readonly
|
|
1601
|
+
*/
|
|
1660
1602
|
get data() {
|
|
1661
1603
|
return this._data;
|
|
1662
1604
|
}
|
|
1663
1605
|
set data(value) {
|
|
1664
|
-
|
|
1665
|
-
this._data = { ...Options.defaults(), ...this._data, ...value, sceneGraph };
|
|
1666
|
-
this.notifierChangeEvent();
|
|
1606
|
+
this._data = value;
|
|
1667
1607
|
}
|
|
1668
|
-
|
|
1669
|
-
|
|
1608
|
+
/**
|
|
1609
|
+
* Unique permission ID.
|
|
1610
|
+
*
|
|
1611
|
+
* @readonly
|
|
1612
|
+
*/
|
|
1613
|
+
get id() {
|
|
1614
|
+
return this.data.id;
|
|
1670
1615
|
}
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1616
|
+
/**
|
|
1617
|
+
* Principials are any entity that can be authenticated by the server, such as a any user or
|
|
1618
|
+
* project that will get access to the file.
|
|
1619
|
+
*
|
|
1620
|
+
* @typedef {any} Principial
|
|
1621
|
+
* @property {any} user - The user entry that get access to the file.
|
|
1622
|
+
* @property {string} user.id - User ID.
|
|
1623
|
+
* @property {string} user.name - User name.
|
|
1624
|
+
* @property {any} project - The project entry that get access to the file.
|
|
1625
|
+
* @property {string} project.id - Project ID.
|
|
1626
|
+
* @property {string} project.name - Project name.
|
|
1627
|
+
*/
|
|
1628
|
+
/**
|
|
1629
|
+
* A collection of principials that will get access to the file.
|
|
1630
|
+
*/
|
|
1631
|
+
get grantedTo() {
|
|
1632
|
+
return this.data.grantedTo;
|
|
1674
1633
|
}
|
|
1675
|
-
|
|
1676
|
-
|
|
1634
|
+
set grantedTo(value) {
|
|
1635
|
+
this.data.grantedTo = value;
|
|
1677
1636
|
}
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1637
|
+
/**
|
|
1638
|
+
* Specifies whether all users have access to the file or not.
|
|
1639
|
+
*/
|
|
1640
|
+
get public() {
|
|
1641
|
+
return this.data.public;
|
|
1681
1642
|
}
|
|
1682
|
-
|
|
1683
|
-
|
|
1643
|
+
set public(value) {
|
|
1644
|
+
this.data.public = value;
|
|
1684
1645
|
}
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1646
|
+
/**
|
|
1647
|
+
* Refresh permission data.
|
|
1648
|
+
*
|
|
1649
|
+
* @async
|
|
1650
|
+
*/
|
|
1651
|
+
async checkout() {
|
|
1652
|
+
this.data = await json(this.internalGet());
|
|
1653
|
+
return this;
|
|
1688
1654
|
}
|
|
1689
|
-
|
|
1690
|
-
|
|
1655
|
+
/**
|
|
1656
|
+
* Update permission data on the server.
|
|
1657
|
+
*
|
|
1658
|
+
* @async
|
|
1659
|
+
* @param data - Raw permission data.
|
|
1660
|
+
*/
|
|
1661
|
+
async update(data) {
|
|
1662
|
+
this.data = await json(this.internalPut(data));
|
|
1663
|
+
return this;
|
|
1691
1664
|
}
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1665
|
+
/**
|
|
1666
|
+
* Remove a permission from a file.
|
|
1667
|
+
*
|
|
1668
|
+
* @async
|
|
1669
|
+
* @returns Returns the raw data of a deleted permission.
|
|
1670
|
+
*/
|
|
1671
|
+
delete() {
|
|
1672
|
+
return json(this.internalDelete());
|
|
1695
1673
|
}
|
|
1696
|
-
|
|
1697
|
-
|
|
1674
|
+
/**
|
|
1675
|
+
* Save permission data changes to the server. Call this method to update permission data on
|
|
1676
|
+
* the server after any changes.
|
|
1677
|
+
*
|
|
1678
|
+
* @async
|
|
1679
|
+
*/
|
|
1680
|
+
save() {
|
|
1681
|
+
return this.update(this.data);
|
|
1698
1682
|
}
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1683
|
+
}
|
|
1684
|
+
|
|
1685
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
1686
|
+
/**
|
|
1687
|
+
* The class representing a `job` entity describes the process of converting a file from one
|
|
1688
|
+
* format to another, to obtain geometric data, validate the file, or run a clash test.
|
|
1689
|
+
*/
|
|
1690
|
+
class Job {
|
|
1691
|
+
/**
|
|
1692
|
+
* @param data - An object that implements job data storage.
|
|
1693
|
+
* @param httpClient - Http client.
|
|
1694
|
+
*/
|
|
1695
|
+
constructor(data, httpClient) {
|
|
1696
|
+
this.httpClient = httpClient;
|
|
1697
|
+
this.data = data;
|
|
1702
1698
|
}
|
|
1703
|
-
|
|
1704
|
-
return this.
|
|
1699
|
+
internalGet() {
|
|
1700
|
+
return this.httpClient.get(`/jobs/${this.data.id}`);
|
|
1705
1701
|
}
|
|
1706
|
-
|
|
1707
|
-
this.
|
|
1708
|
-
this.notifierChangeEvent();
|
|
1702
|
+
internalPut(body) {
|
|
1703
|
+
return this.httpClient.put(`/jobs/${this.data.id}`, body);
|
|
1709
1704
|
}
|
|
1710
|
-
|
|
1711
|
-
return this.
|
|
1705
|
+
internalDelete() {
|
|
1706
|
+
return this.httpClient.delete(`/jobs/${this.data.id}`);
|
|
1712
1707
|
}
|
|
1713
|
-
set cameraAxisYSpeed(value) {
|
|
1714
|
-
this.cameraAxisYSpeed = value;
|
|
1715
|
-
this.notifierChangeEvent();
|
|
1716
|
-
}
|
|
1717
|
-
get ambientOcclusion() {
|
|
1718
|
-
return this._data.ambientOcclusion;
|
|
1719
|
-
}
|
|
1720
|
-
set ambientOcclusion(value) {
|
|
1721
|
-
this._data.ambientOcclusion = value;
|
|
1722
|
-
this.notifierChangeEvent();
|
|
1723
|
-
}
|
|
1724
|
-
get enableStreamingMode() {
|
|
1725
|
-
return this._data.enableStreamingMode;
|
|
1726
|
-
}
|
|
1727
|
-
set enableStreamingMode(value) {
|
|
1728
|
-
this._data.enableStreamingMode = value;
|
|
1729
|
-
if (this._data.enableStreamingMode) {
|
|
1730
|
-
this._data.enablePartialMode = false;
|
|
1731
|
-
}
|
|
1732
|
-
this.notifierChangeEvent();
|
|
1733
|
-
}
|
|
1734
|
-
get enablePartialMode() {
|
|
1735
|
-
return this._data.enablePartialMode;
|
|
1736
|
-
}
|
|
1737
|
-
set enablePartialMode(value) {
|
|
1738
|
-
this._data.enablePartialMode = value;
|
|
1739
|
-
if (value)
|
|
1740
|
-
this._data.sceneGraph = false;
|
|
1741
|
-
this.notifierChangeEvent();
|
|
1742
|
-
}
|
|
1743
|
-
get memoryLimit() {
|
|
1744
|
-
return this._data.memoryLimit;
|
|
1745
|
-
}
|
|
1746
|
-
set memoryLimit(value) {
|
|
1747
|
-
this._data.memoryLimit = value;
|
|
1748
|
-
this.notifierChangeEvent();
|
|
1749
|
-
}
|
|
1750
|
-
get cuttingPlaneFillColor() {
|
|
1751
|
-
return this._data.cuttingPlaneFillColor;
|
|
1752
|
-
}
|
|
1753
|
-
set cuttingPlaneFillColor(value) {
|
|
1754
|
-
this._data.cuttingPlaneFillColor = value;
|
|
1755
|
-
this.notifierChangeEvent();
|
|
1756
|
-
}
|
|
1757
|
-
get edgesColor() {
|
|
1758
|
-
return this._data.edgesColor;
|
|
1759
|
-
}
|
|
1760
|
-
set edgesColor(value) {
|
|
1761
|
-
this._data.edgesColor = value;
|
|
1762
|
-
this.notifierChangeEvent();
|
|
1763
|
-
}
|
|
1764
|
-
get facesColor() {
|
|
1765
|
-
return this._data.facesColor;
|
|
1766
|
-
}
|
|
1767
|
-
set facesColor(value) {
|
|
1768
|
-
this._data.facesColor = value;
|
|
1769
|
-
this.notifierChangeEvent();
|
|
1770
|
-
}
|
|
1771
|
-
get edgesVisibility() {
|
|
1772
|
-
return this._data.edgesVisibility;
|
|
1773
|
-
}
|
|
1774
|
-
set edgesVisibility(value) {
|
|
1775
|
-
this._data.edgesVisibility = value;
|
|
1776
|
-
this.notifierChangeEvent();
|
|
1777
|
-
}
|
|
1778
|
-
get edgesOverlap() {
|
|
1779
|
-
return this._data.edgesOverlap;
|
|
1780
|
-
}
|
|
1781
|
-
set edgesOverlap(value) {
|
|
1782
|
-
this._data.edgesOverlap = value;
|
|
1783
|
-
this.notifierChangeEvent();
|
|
1784
|
-
}
|
|
1785
|
-
get facesOverlap() {
|
|
1786
|
-
return this._data.facesOverlap;
|
|
1787
|
-
}
|
|
1788
|
-
set facesOverlap(value) {
|
|
1789
|
-
this._data.facesOverlap = value;
|
|
1790
|
-
this.notifierChangeEvent();
|
|
1791
|
-
}
|
|
1792
|
-
get facesTransparancy() {
|
|
1793
|
-
return this._data.facesTransparancy;
|
|
1794
|
-
}
|
|
1795
|
-
set facesTransparancy(value) {
|
|
1796
|
-
this._data.facesTransparancy = value;
|
|
1797
|
-
this.notifierChangeEvent();
|
|
1798
|
-
}
|
|
1799
|
-
get enableCustomHighlight() {
|
|
1800
|
-
return this._data.enableCustomHighlight;
|
|
1801
|
-
}
|
|
1802
|
-
set enableCustomHighlight(value) {
|
|
1803
|
-
this._data.enableCustomHighlight = value;
|
|
1804
|
-
this.notifierChangeEvent();
|
|
1805
|
-
}
|
|
1806
|
-
get sceneGraph() {
|
|
1807
|
-
return this._data.sceneGraph;
|
|
1808
|
-
}
|
|
1809
|
-
set sceneGraph(value) {
|
|
1810
|
-
this._data.sceneGraph = value;
|
|
1811
|
-
if (value)
|
|
1812
|
-
this._data.enablePartialMode = false;
|
|
1813
|
-
this.notifierChangeEvent();
|
|
1814
|
-
}
|
|
1815
|
-
get edgeModel() {
|
|
1816
|
-
return Boolean(this._data.edgeModel);
|
|
1817
|
-
}
|
|
1818
|
-
set edgeModel(value) {
|
|
1819
|
-
this._data.edgeModel = Boolean(value);
|
|
1820
|
-
this.notifierChangeEvent();
|
|
1821
|
-
}
|
|
1822
|
-
get reverseZoomWheel() {
|
|
1823
|
-
return this._data.reverseZoomWheel;
|
|
1824
|
-
}
|
|
1825
|
-
set reverseZoomWheel(value) {
|
|
1826
|
-
this._data.reverseZoomWheel = !!value;
|
|
1827
|
-
this.notifierChangeEvent();
|
|
1828
|
-
}
|
|
1829
|
-
get enableZoomWheel() {
|
|
1830
|
-
return this._data.enableZoomWheel;
|
|
1831
|
-
}
|
|
1832
|
-
set enableZoomWheel(value) {
|
|
1833
|
-
this._data.enableZoomWheel = !!value;
|
|
1834
|
-
this.notifierChangeEvent();
|
|
1835
|
-
}
|
|
1836
|
-
get enableGestures() {
|
|
1837
|
-
return this._data.enableGestures;
|
|
1838
|
-
}
|
|
1839
|
-
set enableGestures(value) {
|
|
1840
|
-
this._data.enableGestures = !!value;
|
|
1841
|
-
this.notifierChangeEvent();
|
|
1842
|
-
}
|
|
1843
|
-
get geometryType() {
|
|
1844
|
-
return this._data.geometryType;
|
|
1845
|
-
}
|
|
1846
|
-
set geometryType(value) {
|
|
1847
|
-
this._data.geometryType = value;
|
|
1848
|
-
this.notifierChangeEvent();
|
|
1849
|
-
}
|
|
1850
|
-
}
|
|
1851
|
-
|
|
1852
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
1853
|
-
/**
|
|
1854
|
-
* A permission provides information about {@link File | file} sharing granted to a specific
|
|
1855
|
-
* {@link User | users}, group, or project {@link Member | member}.
|
|
1856
|
-
*/
|
|
1857
|
-
class Permission {
|
|
1858
1708
|
/**
|
|
1859
|
-
*
|
|
1860
|
-
*
|
|
1861
|
-
* @
|
|
1709
|
+
* The ID of the assembly the job is working on (internal).
|
|
1710
|
+
*
|
|
1711
|
+
* @readonly
|
|
1862
1712
|
*/
|
|
1863
|
-
|
|
1864
|
-
this.
|
|
1865
|
-
this.fileId = fileId;
|
|
1866
|
-
this.data = data;
|
|
1867
|
-
}
|
|
1868
|
-
internalGet() {
|
|
1869
|
-
return this.httpClient.get(`/files/${this.fileId}/permissions/${this.id}`);
|
|
1870
|
-
}
|
|
1871
|
-
internalPut(body) {
|
|
1872
|
-
return this.httpClient.put(`/files/${this.fileId}/permissions/${this.id}`, body);
|
|
1873
|
-
}
|
|
1874
|
-
internalDelete() {
|
|
1875
|
-
return this.httpClient.delete(`/files/${this.fileId}/permissions/${this.id}`);
|
|
1713
|
+
get assemblyId() {
|
|
1714
|
+
return this.data.assemblyId;
|
|
1876
1715
|
}
|
|
1877
1716
|
/**
|
|
1878
|
-
*
|
|
1717
|
+
* Job creator ID. Use {@link Client#getUser | Client.getUser()} to obtain detailed creator information.
|
|
1879
1718
|
*
|
|
1880
|
-
*
|
|
1881
|
-
* - `readSourceFile` - The ability to read source file
|
|
1882
|
-
* - `write` - The ability to modify file name, description and references
|
|
1883
|
-
* - `readViewpoint` - The ability to read file viewpoints
|
|
1884
|
-
* - `createViewpoint` - The ability to create file viewpoints
|
|
1719
|
+
* @readonly
|
|
1885
1720
|
*/
|
|
1886
|
-
get
|
|
1887
|
-
return this.data.
|
|
1721
|
+
get authorId() {
|
|
1722
|
+
return this.data.authorId;
|
|
1888
1723
|
}
|
|
1889
|
-
|
|
1890
|
-
|
|
1724
|
+
/**
|
|
1725
|
+
* Job creation time (UTC) in the format specified in <a
|
|
1726
|
+
* href="https://www.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601</a>.
|
|
1727
|
+
*
|
|
1728
|
+
* @readonly
|
|
1729
|
+
*/
|
|
1730
|
+
get createdAt() {
|
|
1731
|
+
return this.data.createdAt;
|
|
1891
1732
|
}
|
|
1892
1733
|
/**
|
|
1893
|
-
* Raw
|
|
1734
|
+
* Raw job data received from the server.
|
|
1894
1735
|
*
|
|
1895
1736
|
* @readonly
|
|
1896
1737
|
*/
|
|
@@ -1901,190 +1742,54 @@
|
|
|
1901
1742
|
this._data = value;
|
|
1902
1743
|
}
|
|
1903
1744
|
/**
|
|
1904
|
-
*
|
|
1745
|
+
* `true` if job is `done` or `failed`. See {@link Job#status | status} for more details.
|
|
1905
1746
|
*
|
|
1906
1747
|
* @readonly
|
|
1907
1748
|
*/
|
|
1908
|
-
get
|
|
1909
|
-
return this.data.
|
|
1749
|
+
get done() {
|
|
1750
|
+
return this.data.status === "done" || this.data.status === "failed";
|
|
1910
1751
|
}
|
|
1911
1752
|
/**
|
|
1912
|
-
*
|
|
1913
|
-
* project that will get access to the file.
|
|
1753
|
+
* The ID of the file the job is working on.
|
|
1914
1754
|
*
|
|
1915
|
-
* @
|
|
1916
|
-
* @property {any} user - The user entry that get access to the file.
|
|
1917
|
-
* @property {string} user.id - User ID.
|
|
1918
|
-
* @property {string} user.name - User name.
|
|
1919
|
-
* @property {any} project - The project entry that get access to the file.
|
|
1920
|
-
* @property {string} project.id - Project ID.
|
|
1921
|
-
* @property {string} project.name - Project name.
|
|
1922
|
-
*/
|
|
1923
|
-
/**
|
|
1924
|
-
* A collection of principials that will get access to the file.
|
|
1755
|
+
* @readonly
|
|
1925
1756
|
*/
|
|
1926
|
-
get
|
|
1927
|
-
return this.data.
|
|
1928
|
-
}
|
|
1929
|
-
set grantedTo(value) {
|
|
1930
|
-
this.data.grantedTo = value;
|
|
1757
|
+
get fileId() {
|
|
1758
|
+
return this.data.fileId;
|
|
1931
1759
|
}
|
|
1932
1760
|
/**
|
|
1933
|
-
*
|
|
1761
|
+
* Unique job ID.
|
|
1762
|
+
*
|
|
1763
|
+
* @readonly
|
|
1934
1764
|
*/
|
|
1935
|
-
get
|
|
1936
|
-
return this.data.
|
|
1937
|
-
}
|
|
1938
|
-
set public(value) {
|
|
1939
|
-
this.data.public = value;
|
|
1765
|
+
get id() {
|
|
1766
|
+
return this.data.id;
|
|
1940
1767
|
}
|
|
1941
1768
|
/**
|
|
1942
|
-
*
|
|
1769
|
+
* Job last update (UTC) time in the format specified in <a
|
|
1770
|
+
* href="https://www.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601</a>.
|
|
1943
1771
|
*
|
|
1944
|
-
* @
|
|
1772
|
+
* @readonly
|
|
1945
1773
|
*/
|
|
1946
|
-
|
|
1947
|
-
this.data
|
|
1948
|
-
return this;
|
|
1774
|
+
get lastUpdate() {
|
|
1775
|
+
return this.data.lastUpdate;
|
|
1949
1776
|
}
|
|
1950
1777
|
/**
|
|
1951
|
-
*
|
|
1778
|
+
* Job type. Can be `properties`, `geomerty`, `geomertyGltf`, `validation`, `clash`, `dwg`,
|
|
1779
|
+
* `obj`, `gltf`, `glb`, `vsf`, `pdf` or `3dpdf`.
|
|
1952
1780
|
*
|
|
1953
|
-
* @
|
|
1954
|
-
* @param data - Raw permission data.
|
|
1781
|
+
* @readonly
|
|
1955
1782
|
*/
|
|
1956
|
-
|
|
1957
|
-
this.data
|
|
1958
|
-
return this;
|
|
1783
|
+
get outputFormat() {
|
|
1784
|
+
return this.data.outputFormat;
|
|
1959
1785
|
}
|
|
1960
1786
|
/**
|
|
1961
|
-
*
|
|
1787
|
+
* Parameters for the job runner.
|
|
1962
1788
|
*
|
|
1963
|
-
* @
|
|
1964
|
-
* @returns Returns the raw data of a deleted permission.
|
|
1789
|
+
* @readonly
|
|
1965
1790
|
*/
|
|
1966
|
-
|
|
1967
|
-
return
|
|
1968
|
-
}
|
|
1969
|
-
/**
|
|
1970
|
-
* Save permission data changes to the server. Call this method to update permission data on
|
|
1971
|
-
* the server after any changes.
|
|
1972
|
-
*
|
|
1973
|
-
* @async
|
|
1974
|
-
*/
|
|
1975
|
-
save() {
|
|
1976
|
-
return this.update(this.data);
|
|
1977
|
-
}
|
|
1978
|
-
}
|
|
1979
|
-
|
|
1980
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
1981
|
-
/**
|
|
1982
|
-
* The class representing a `job` entity describes the process of converting a file from one
|
|
1983
|
-
* format to another, to obtain geometric data, validate the file, or run a clash test.
|
|
1984
|
-
*/
|
|
1985
|
-
class Job {
|
|
1986
|
-
/**
|
|
1987
|
-
* @param data - An object that implements job data storage.
|
|
1988
|
-
* @param httpClient - Http client.
|
|
1989
|
-
*/
|
|
1990
|
-
constructor(data, httpClient) {
|
|
1991
|
-
this.httpClient = httpClient;
|
|
1992
|
-
this.data = data;
|
|
1993
|
-
}
|
|
1994
|
-
internalGet() {
|
|
1995
|
-
return this.httpClient.get(`/jobs/${this.data.id}`);
|
|
1996
|
-
}
|
|
1997
|
-
internalPut(body) {
|
|
1998
|
-
return this.httpClient.put(`/jobs/${this.data.id}`, body);
|
|
1999
|
-
}
|
|
2000
|
-
internalDelete() {
|
|
2001
|
-
return this.httpClient.delete(`/jobs/${this.data.id}`);
|
|
2002
|
-
}
|
|
2003
|
-
/**
|
|
2004
|
-
* The ID of the assembly the job is working on (internal).
|
|
2005
|
-
*
|
|
2006
|
-
* @readonly
|
|
2007
|
-
*/
|
|
2008
|
-
get assemblyId() {
|
|
2009
|
-
return this.data.assemblyId;
|
|
2010
|
-
}
|
|
2011
|
-
/**
|
|
2012
|
-
* Job creator ID. Use {@link Client#getUser | Client.getUser()} to obtain detailed creator information.
|
|
2013
|
-
*
|
|
2014
|
-
* @readonly
|
|
2015
|
-
*/
|
|
2016
|
-
get authorId() {
|
|
2017
|
-
return this.data.authorId;
|
|
2018
|
-
}
|
|
2019
|
-
/**
|
|
2020
|
-
* Job creation time (UTC) in the format specified in <a
|
|
2021
|
-
* href="https://www.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601</a>.
|
|
2022
|
-
*
|
|
2023
|
-
* @readonly
|
|
2024
|
-
*/
|
|
2025
|
-
get createdAt() {
|
|
2026
|
-
return this.data.createdAt;
|
|
2027
|
-
}
|
|
2028
|
-
/**
|
|
2029
|
-
* Raw job data received from the server.
|
|
2030
|
-
*
|
|
2031
|
-
* @readonly
|
|
2032
|
-
*/
|
|
2033
|
-
get data() {
|
|
2034
|
-
return this._data;
|
|
2035
|
-
}
|
|
2036
|
-
set data(value) {
|
|
2037
|
-
this._data = value;
|
|
2038
|
-
}
|
|
2039
|
-
/**
|
|
2040
|
-
* `true` if job is `done` or `failed`. See {@link Job#status | status} for more details.
|
|
2041
|
-
*
|
|
2042
|
-
* @readonly
|
|
2043
|
-
*/
|
|
2044
|
-
get done() {
|
|
2045
|
-
return this.data.status === "done" || this.data.status === "failed";
|
|
2046
|
-
}
|
|
2047
|
-
/**
|
|
2048
|
-
* The ID of the file the job is working on.
|
|
2049
|
-
*
|
|
2050
|
-
* @readonly
|
|
2051
|
-
*/
|
|
2052
|
-
get fileId() {
|
|
2053
|
-
return this.data.fileId;
|
|
2054
|
-
}
|
|
2055
|
-
/**
|
|
2056
|
-
* Unique job ID.
|
|
2057
|
-
*
|
|
2058
|
-
* @readonly
|
|
2059
|
-
*/
|
|
2060
|
-
get id() {
|
|
2061
|
-
return this.data.id;
|
|
2062
|
-
}
|
|
2063
|
-
/**
|
|
2064
|
-
* Job last update (UTC) time in the format specified in <a
|
|
2065
|
-
* href="https://www.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601</a>.
|
|
2066
|
-
*
|
|
2067
|
-
* @readonly
|
|
2068
|
-
*/
|
|
2069
|
-
get lastUpdate() {
|
|
2070
|
-
return this.data.lastUpdate;
|
|
2071
|
-
}
|
|
2072
|
-
/**
|
|
2073
|
-
* Job type. Can be `properties`, `geomerty`, `geomertyGltf`, `validation`, `clash`, `dwg`,
|
|
2074
|
-
* `obj`, `gltf`, `glb`, `vsf`, `pdf` or `3dpdf`.
|
|
2075
|
-
*
|
|
2076
|
-
* @readonly
|
|
2077
|
-
*/
|
|
2078
|
-
get outputFormat() {
|
|
2079
|
-
return this.data.outputFormat;
|
|
2080
|
-
}
|
|
2081
|
-
/**
|
|
2082
|
-
* Parameters for the job runner.
|
|
2083
|
-
*
|
|
2084
|
-
* @readonly
|
|
2085
|
-
*/
|
|
2086
|
-
get parameters() {
|
|
2087
|
-
return this.data.parameters;
|
|
1791
|
+
get parameters() {
|
|
1792
|
+
return this.data.parameters;
|
|
2088
1793
|
}
|
|
2089
1794
|
/**
|
|
2090
1795
|
* Job status. Can be `waiting`, `inprogress`, `done` or `failed`.
|
|
@@ -3875,7 +3580,6 @@
|
|
|
3875
3580
|
super();
|
|
3876
3581
|
this.configure(params);
|
|
3877
3582
|
this.eventEmitter = this;
|
|
3878
|
-
this._options = new Options(this);
|
|
3879
3583
|
this._user = null;
|
|
3880
3584
|
}
|
|
3881
3585
|
/**
|
|
@@ -3887,11 +3591,45 @@
|
|
|
3887
3591
|
return this._serverUrl;
|
|
3888
3592
|
}
|
|
3889
3593
|
/**
|
|
3890
|
-
* `
|
|
3891
|
-
*
|
|
3594
|
+
* Deprecated since `25.3`. Use [Viewer.options]{@link Viewer#options} instead to change
|
|
3595
|
+
* Viewer parameters.
|
|
3892
3596
|
*/
|
|
3893
3597
|
get options() {
|
|
3894
|
-
|
|
3598
|
+
console.warn("Client.options has been deprecated since 25.3 and will be removed in a future release, use Viewer.options instead.");
|
|
3599
|
+
const data = {
|
|
3600
|
+
showWCS: true,
|
|
3601
|
+
cameraAnimation: true,
|
|
3602
|
+
antialiasing: true,
|
|
3603
|
+
groundShadow: false,
|
|
3604
|
+
shadows: false,
|
|
3605
|
+
cameraAxisXSpeed: 4,
|
|
3606
|
+
cameraAxisYSpeed: 1,
|
|
3607
|
+
ambientOcclusion: false,
|
|
3608
|
+
enableStreamingMode: true,
|
|
3609
|
+
enablePartialMode: false,
|
|
3610
|
+
memoryLimit: 3294967296,
|
|
3611
|
+
cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },
|
|
3612
|
+
edgesColor: { r: 0xff, g: 0x98, b: 0x00 },
|
|
3613
|
+
facesColor: { r: 0xff, g: 0x98, b: 0x00 },
|
|
3614
|
+
edgesVisibility: true,
|
|
3615
|
+
edgesOverlap: true,
|
|
3616
|
+
facesOverlap: false,
|
|
3617
|
+
facesTransparancy: 200,
|
|
3618
|
+
enableCustomHighlight: true,
|
|
3619
|
+
sceneGraph: false,
|
|
3620
|
+
edgeModel: true,
|
|
3621
|
+
reverseZoomWheel: false,
|
|
3622
|
+
enableZoomWheel: true,
|
|
3623
|
+
enableGestures: true,
|
|
3624
|
+
};
|
|
3625
|
+
return {
|
|
3626
|
+
...data,
|
|
3627
|
+
data,
|
|
3628
|
+
defaults: () => data,
|
|
3629
|
+
resetToDefaults: () => { },
|
|
3630
|
+
saveToStorage: () => { },
|
|
3631
|
+
loadFromStorage: () => { },
|
|
3632
|
+
};
|
|
3895
3633
|
}
|
|
3896
3634
|
/**
|
|
3897
3635
|
* Change the client configuration parameters.
|
|
@@ -3925,7 +3663,7 @@
|
|
|
3925
3663
|
.then((data) => ({
|
|
3926
3664
|
...data,
|
|
3927
3665
|
server: data.version,
|
|
3928
|
-
client: "25.3.
|
|
3666
|
+
client: "25.3.10",
|
|
3929
3667
|
}));
|
|
3930
3668
|
}
|
|
3931
3669
|
/**
|
|
@@ -4187,7 +3925,7 @@
|
|
|
4187
3925
|
* @param params - An object containing upload parameters.
|
|
4188
3926
|
* @param params.geometry=true - Create job to extract file geometry data. Can be:
|
|
4189
3927
|
*
|
|
4190
|
-
* - `true` - Extract file geometry data into
|
|
3928
|
+
* - `true` - Extract file geometry data into `VSFX` to open the file in `VisualizeJS` viewer.
|
|
4191
3929
|
* - `vsfx` - Extract file geometry data into `VSFX` to open the file in `VisualizeJS` viewer.
|
|
4192
3930
|
* - `gltf` - Extract file geometry data into `glTF` to open the file in `Three.js` viewer.
|
|
4193
3931
|
*
|
|
@@ -4215,7 +3953,7 @@
|
|
|
4215
3953
|
})
|
|
4216
3954
|
.then((xhr) => JSON.parse(xhr.responseText))
|
|
4217
3955
|
.then((data) => new File$1(data, this._httpClient));
|
|
4218
|
-
const geometryType = typeof params.geometry === "string" ? params.geometry :
|
|
3956
|
+
const geometryType = typeof params.geometry === "string" ? params.geometry : "vsfx";
|
|
4219
3957
|
const jobs = [];
|
|
4220
3958
|
if (params.geometry)
|
|
4221
3959
|
jobs.push((await result.extractGeometry(geometryType)).outputFormat);
|
|
@@ -4691,217 +4429,512 @@
|
|
|
4691
4429
|
screenToWorld(x, y) {
|
|
4692
4430
|
return this.toPoint(this.m_module.getViewer().screenToWorld(x, y));
|
|
4693
4431
|
}
|
|
4694
|
-
toDoubleArray(points) {
|
|
4695
|
-
const p = [];
|
|
4696
|
-
for (let i = 0; i < points.length; i++) {
|
|
4697
|
-
p.push(points[i].x);
|
|
4698
|
-
p.push(points[i].y);
|
|
4699
|
-
p.push(points[i].z);
|
|
4700
|
-
}
|
|
4701
|
-
return p;
|
|
4432
|
+
toDoubleArray(points) {
|
|
4433
|
+
const p = [];
|
|
4434
|
+
for (let i = 0; i < points.length; i++) {
|
|
4435
|
+
p.push(points[i].x);
|
|
4436
|
+
p.push(points[i].y);
|
|
4437
|
+
p.push(points[i].z);
|
|
4438
|
+
}
|
|
4439
|
+
return p;
|
|
4440
|
+
}
|
|
4441
|
+
correctCameraTarget() {
|
|
4442
|
+
const params = this.getViewParams();
|
|
4443
|
+
const ext = this.m_module.getViewer().getActiveExtents();
|
|
4444
|
+
const { min, max } = ext;
|
|
4445
|
+
const target = this.toPoint(params.target);
|
|
4446
|
+
const contains = target.x >= min.x &&
|
|
4447
|
+
target.y >= min.y &&
|
|
4448
|
+
target.z >= min.z &&
|
|
4449
|
+
target.x <= max.x &&
|
|
4450
|
+
target.y <= max.y &&
|
|
4451
|
+
target.z <= max.z;
|
|
4452
|
+
if (!contains) {
|
|
4453
|
+
params.target = ext.center();
|
|
4454
|
+
this.setViewParams(params);
|
|
4455
|
+
}
|
|
4456
|
+
}
|
|
4457
|
+
}
|
|
4458
|
+
|
|
4459
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
4460
|
+
const CLICK_DELTA = 5;
|
|
4461
|
+
const INTERACTIVITY_FPS = 24;
|
|
4462
|
+
/**
|
|
4463
|
+
* A [Viewer]{@link Viewer} event that fires when the viewer needs to be updated.
|
|
4464
|
+
*
|
|
4465
|
+
* @property {string} type - `update`
|
|
4466
|
+
* @event update
|
|
4467
|
+
*/
|
|
4468
|
+
/**
|
|
4469
|
+
* A [Viewer]{@link Viewer} event that fires when the user selects an entity with the mouse.
|
|
4470
|
+
*
|
|
4471
|
+
* @property {string} type - `select`
|
|
4472
|
+
* @property {OdTvSelectionSet} data - The set of selected entities. For more information, see
|
|
4473
|
+
* [OdTvSelectionSet](https://cloud.opendesign.com/docs/index.html#/vis/OdTvSelectionSet?id=odtvselectionset).
|
|
4474
|
+
* @event select
|
|
4475
|
+
*/
|
|
4476
|
+
class OdBaseDragger extends OdaGeAction {
|
|
4477
|
+
constructor(subject) {
|
|
4478
|
+
super(subject.visualizeJs);
|
|
4479
|
+
this.beginInteractivity = () => {
|
|
4480
|
+
const viewer = this.getViewer();
|
|
4481
|
+
const view = viewer.activeView;
|
|
4482
|
+
if (view["beginInteractivity"]) {
|
|
4483
|
+
view.beginInteractivity(INTERACTIVITY_FPS);
|
|
4484
|
+
this.subject.update();
|
|
4485
|
+
}
|
|
4486
|
+
view.delete();
|
|
4487
|
+
};
|
|
4488
|
+
this.endInteractivity = () => {
|
|
4489
|
+
const viewer = this.getViewer();
|
|
4490
|
+
const view = viewer.activeView;
|
|
4491
|
+
if (view["endInteractivity"]) {
|
|
4492
|
+
view.endInteractivity();
|
|
4493
|
+
const device = this.getViewer().getActiveDevice();
|
|
4494
|
+
const canvas = this.m_module.canvas;
|
|
4495
|
+
device.invalidate([0, 0, canvas.width, canvas.height]);
|
|
4496
|
+
device.delete();
|
|
4497
|
+
this.subject.update();
|
|
4498
|
+
}
|
|
4499
|
+
view.delete();
|
|
4500
|
+
};
|
|
4501
|
+
this.subject = subject;
|
|
4502
|
+
this.needInputText = false;
|
|
4503
|
+
this.mouseDownPosition = { x: 0, y: 0 };
|
|
4504
|
+
this.autoSelect = false;
|
|
4505
|
+
this.onmessage = (event) => this.subject.emitEvent(event);
|
|
4506
|
+
this.canvasEvents = CANVAS_EVENTS;
|
|
4507
|
+
}
|
|
4508
|
+
initialize() {
|
|
4509
|
+
this.canvasEvents = this.canvasEvents.filter((x) => typeof this[x] === "function");
|
|
4510
|
+
this.canvasEvents.forEach((x) => (this[x] = this[x].bind(this)));
|
|
4511
|
+
this.canvasEvents.forEach((x) => this.subject.on(x, this[x]));
|
|
4512
|
+
this.getViewer().setEnableAutoSelect(!!this.autoSelect);
|
|
4513
|
+
}
|
|
4514
|
+
dispose() {
|
|
4515
|
+
this.canvasEvents.forEach((x) => this.subject.off(x, this[x]));
|
|
4516
|
+
}
|
|
4517
|
+
relativeCoords(event) {
|
|
4518
|
+
return { x: event.offsetX * window.devicePixelRatio, y: event.offsetY * window.devicePixelRatio };
|
|
4519
|
+
}
|
|
4520
|
+
pointerdown(ev) {
|
|
4521
|
+
if (!ev.isPrimary || OdBaseDragger.isGestureActive) {
|
|
4522
|
+
return;
|
|
4523
|
+
}
|
|
4524
|
+
ev.target.setPointerCapture(ev.pointerId);
|
|
4525
|
+
const relCoord = this.relativeCoords(ev);
|
|
4526
|
+
this.isDragging = true;
|
|
4527
|
+
this.mouseDownPosition = { x: relCoord.x, y: relCoord.y };
|
|
4528
|
+
this.start(relCoord.x, relCoord.y, ev.clientX, ev.clientY);
|
|
4529
|
+
this.subject.update();
|
|
4530
|
+
}
|
|
4531
|
+
pointerup(ev) {
|
|
4532
|
+
if (OdBaseDragger.needSkipPointerUp) {
|
|
4533
|
+
return;
|
|
4534
|
+
}
|
|
4535
|
+
if (!ev.isPrimary) {
|
|
4536
|
+
return;
|
|
4537
|
+
}
|
|
4538
|
+
ev.target.releasePointerCapture(ev.pointerId);
|
|
4539
|
+
const relCoord = this.relativeCoords(ev);
|
|
4540
|
+
this.end(relCoord.x, relCoord.y);
|
|
4541
|
+
this.isDragging = false;
|
|
4542
|
+
this.subject.update();
|
|
4543
|
+
}
|
|
4544
|
+
pointercancel(ev) {
|
|
4545
|
+
if (!ev.isPrimary) {
|
|
4546
|
+
return;
|
|
4547
|
+
}
|
|
4548
|
+
this.m_module.canvas.dispatchEvent(new PointerEvent("pointerup", ev));
|
|
4549
|
+
}
|
|
4550
|
+
pointermove(ev) {
|
|
4551
|
+
if (!ev.isPrimary || OdBaseDragger.isGestureActive) {
|
|
4552
|
+
return;
|
|
4553
|
+
}
|
|
4554
|
+
const relCoord = this.relativeCoords(ev);
|
|
4555
|
+
this.drag(relCoord.x, relCoord.y, ev.movementX, ev.movementY);
|
|
4556
|
+
if (this.isDragging) {
|
|
4557
|
+
this.subject.update();
|
|
4558
|
+
}
|
|
4559
|
+
}
|
|
4560
|
+
click(ev) {
|
|
4561
|
+
const viewer = this.getViewer();
|
|
4562
|
+
const relCoord = this.relativeCoords(ev);
|
|
4563
|
+
const x = relCoord.x;
|
|
4564
|
+
const y = relCoord.y;
|
|
4565
|
+
const isNotDragging = Math.abs(x - this.mouseDownPosition.x) < CLICK_DELTA && Math.abs(y - this.mouseDownPosition.y) < CLICK_DELTA;
|
|
4566
|
+
if (viewer && viewer.getEnableAutoSelect() && isNotDragging) {
|
|
4567
|
+
viewer.unselect();
|
|
4568
|
+
viewer.select(x, y, x, y);
|
|
4569
|
+
this.subject.update();
|
|
4570
|
+
const selectionSet = viewer.getSelected();
|
|
4571
|
+
const handles = this.subject.getSelected();
|
|
4572
|
+
this.onmessage({ type: "select", data: selectionSet, handles });
|
|
4573
|
+
}
|
|
4574
|
+
}
|
|
4575
|
+
dblclick(ev) {
|
|
4576
|
+
const viewer = this.getViewer();
|
|
4577
|
+
const relCoord = this.relativeCoords(ev);
|
|
4578
|
+
const x = relCoord.x;
|
|
4579
|
+
const y = relCoord.y;
|
|
4580
|
+
const device = viewer.getActiveDevice();
|
|
4581
|
+
const clickView = device.viewAt([x, y]);
|
|
4582
|
+
if (clickView && !clickView.active) {
|
|
4583
|
+
viewer.activeView = clickView;
|
|
4584
|
+
clickView.delete();
|
|
4585
|
+
this.subject.update();
|
|
4586
|
+
}
|
|
4587
|
+
else {
|
|
4588
|
+
if (viewer && viewer.getEnableAutoSelect()) {
|
|
4589
|
+
const pSelected = viewer.getSelected();
|
|
4590
|
+
if (!pSelected.isNull() && pSelected.numItems() !== 0) {
|
|
4591
|
+
const itr = pSelected.getIterator();
|
|
4592
|
+
const entity = itr.getEntity();
|
|
4593
|
+
viewer.zoomToEntity(entity);
|
|
4594
|
+
this.onmessage({ type: "zoomtoentity", data: entity });
|
|
4595
|
+
this.subject.update();
|
|
4596
|
+
this.deleteAll([itr, entity]);
|
|
4597
|
+
}
|
|
4598
|
+
}
|
|
4599
|
+
}
|
|
4600
|
+
device.delete();
|
|
4601
|
+
}
|
|
4602
|
+
start(x, y, absoluteX = 0, absoluteY = 0) { }
|
|
4603
|
+
drag(x, y, absoluteX = 0, absoluteY = 0) { }
|
|
4604
|
+
end(x, y) { }
|
|
4605
|
+
getActiveMarkupEntity(entityName) {
|
|
4606
|
+
return this.subject.addMarkupEntity(entityName);
|
|
4607
|
+
}
|
|
4608
|
+
syncOverlayView() {
|
|
4609
|
+
return this.subject.syncOverlay();
|
|
4610
|
+
}
|
|
4611
|
+
deleteAll(objects) {
|
|
4612
|
+
var _a;
|
|
4613
|
+
for (const obj of objects) {
|
|
4614
|
+
(_a = obj === null || obj === void 0 ? void 0 : obj.delete) === null || _a === void 0 ? void 0 : _a.call(obj);
|
|
4615
|
+
}
|
|
4616
|
+
}
|
|
4617
|
+
updatePreview() { }
|
|
4618
|
+
static set isGestureActive(value) {
|
|
4619
|
+
if (OdBaseDragger._isGestureActive === value) {
|
|
4620
|
+
return;
|
|
4621
|
+
}
|
|
4622
|
+
OdBaseDragger._isGestureActive = value;
|
|
4623
|
+
if (OdBaseDragger._isGestureActive) {
|
|
4624
|
+
OdBaseDragger.needSkipPointerUp = true;
|
|
4625
|
+
}
|
|
4626
|
+
}
|
|
4627
|
+
static get isGestureActive() {
|
|
4628
|
+
return OdBaseDragger._isGestureActive;
|
|
4629
|
+
}
|
|
4630
|
+
static get needSkipPointerUp() {
|
|
4631
|
+
if (OdBaseDragger._needSkipPointerUp) {
|
|
4632
|
+
OdBaseDragger.needSkipPointerUp = false;
|
|
4633
|
+
return true;
|
|
4634
|
+
}
|
|
4635
|
+
return false;
|
|
4636
|
+
}
|
|
4637
|
+
static set needSkipPointerUp(value) {
|
|
4638
|
+
OdBaseDragger._needSkipPointerUp = value;
|
|
4639
|
+
}
|
|
4640
|
+
}
|
|
4641
|
+
OdBaseDragger._isGestureActive = false;
|
|
4642
|
+
OdBaseDragger._needSkipPointerUp = false;
|
|
4643
|
+
|
|
4644
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
4645
|
+
// Copyright (C) 2002-2021, Open Design Alliance (the "Alliance").
|
|
4646
|
+
// All rights reserved.
|
|
4647
|
+
//
|
|
4648
|
+
// This software and its documentation and related materials are owned by
|
|
4649
|
+
// the Alliance. The software may only be incorporated into application
|
|
4650
|
+
// programs owned by members of the Alliance, subject to a signed
|
|
4651
|
+
// Membership Agreement and Supplemental Software License Agreement with the
|
|
4652
|
+
// Alliance. The structure and organization of this software are the valuable
|
|
4653
|
+
// trade secrets of the Alliance and its suppliers. The software is also
|
|
4654
|
+
// protected by copyright law and international treaty provisions. Application
|
|
4655
|
+
// programs incorporating this software must include the following statement
|
|
4656
|
+
// with their copyright notices:
|
|
4657
|
+
//
|
|
4658
|
+
// This application incorporates Open Design Alliance software pursuant to a
|
|
4659
|
+
// license agreement with Open Design Alliance.
|
|
4660
|
+
// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.
|
|
4661
|
+
// All rights reserved.
|
|
4662
|
+
//
|
|
4663
|
+
// By use of this software, its documentation or related materials, you
|
|
4664
|
+
// acknowledge and accept the above terms.
|
|
4665
|
+
///////////////////////////////////////////////////////////////////////////////
|
|
4666
|
+
class Options {
|
|
4667
|
+
constructor(emitter) {
|
|
4668
|
+
this._emitter = emitter;
|
|
4669
|
+
this._data = Options.defaults();
|
|
4670
|
+
this.loadFromStorage();
|
|
4671
|
+
}
|
|
4672
|
+
static defaults() {
|
|
4673
|
+
return {
|
|
4674
|
+
showWCS: true,
|
|
4675
|
+
cameraAnimation: true,
|
|
4676
|
+
antialiasing: true,
|
|
4677
|
+
groundShadow: false,
|
|
4678
|
+
shadows: false,
|
|
4679
|
+
cameraAxisXSpeed: 4,
|
|
4680
|
+
cameraAxisYSpeed: 1,
|
|
4681
|
+
ambientOcclusion: false,
|
|
4682
|
+
enableStreamingMode: true,
|
|
4683
|
+
enablePartialMode: false,
|
|
4684
|
+
memoryLimit: 3294967296,
|
|
4685
|
+
cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },
|
|
4686
|
+
edgesColor: { r: 0xff, g: 0x98, b: 0x00 },
|
|
4687
|
+
facesColor: { r: 0xff, g: 0x98, b: 0x00 },
|
|
4688
|
+
edgesVisibility: true,
|
|
4689
|
+
edgesOverlap: true,
|
|
4690
|
+
facesOverlap: false,
|
|
4691
|
+
facesTransparancy: 200,
|
|
4692
|
+
enableCustomHighlight: true,
|
|
4693
|
+
sceneGraph: false,
|
|
4694
|
+
edgeModel: true,
|
|
4695
|
+
reverseZoomWheel: false,
|
|
4696
|
+
enableZoomWheel: true,
|
|
4697
|
+
enableGestures: true,
|
|
4698
|
+
geometryType: "vsfx",
|
|
4699
|
+
};
|
|
4700
|
+
}
|
|
4701
|
+
notifierChangeEvent() {
|
|
4702
|
+
if (this._emitter !== undefined) {
|
|
4703
|
+
this.saveToStorage();
|
|
4704
|
+
this._emitter.emit({ type: "optionschange", data: this });
|
|
4705
|
+
}
|
|
4706
|
+
}
|
|
4707
|
+
saveToStorage() {
|
|
4708
|
+
if (typeof window !== "undefined")
|
|
4709
|
+
try {
|
|
4710
|
+
localStorage.setItem("od-client-settings", JSON.stringify(this.data));
|
|
4711
|
+
}
|
|
4712
|
+
catch (error) {
|
|
4713
|
+
console.error("Cannot save client settings.", error);
|
|
4714
|
+
}
|
|
4715
|
+
}
|
|
4716
|
+
loadFromStorage() {
|
|
4717
|
+
if (typeof window !== "undefined")
|
|
4718
|
+
try {
|
|
4719
|
+
const item = localStorage.getItem("od-client-settings");
|
|
4720
|
+
if (item) {
|
|
4721
|
+
const data = JSON.parse(item);
|
|
4722
|
+
this.data = { ...data };
|
|
4723
|
+
}
|
|
4724
|
+
}
|
|
4725
|
+
catch (error) {
|
|
4726
|
+
console.error("Cannot load client settings.", error);
|
|
4727
|
+
}
|
|
4728
|
+
}
|
|
4729
|
+
/**
|
|
4730
|
+
* Reset options to default
|
|
4731
|
+
*
|
|
4732
|
+
* @param fields - Name of fields to be reset
|
|
4733
|
+
*/
|
|
4734
|
+
resetToDefaults(fields) {
|
|
4735
|
+
if (fields !== undefined) {
|
|
4736
|
+
const defaults = Options.defaults();
|
|
4737
|
+
const resetData = fields.reduce((acc, field) => {
|
|
4738
|
+
acc[field] = defaults[field];
|
|
4739
|
+
return acc;
|
|
4740
|
+
}, {});
|
|
4741
|
+
this.data = { ...this.data, ...resetData };
|
|
4742
|
+
}
|
|
4743
|
+
else {
|
|
4744
|
+
this.data = { ...this.data, ...Options.defaults() };
|
|
4745
|
+
}
|
|
4746
|
+
}
|
|
4747
|
+
get data() {
|
|
4748
|
+
return this._data;
|
|
4749
|
+
}
|
|
4750
|
+
set data(value) {
|
|
4751
|
+
const sceneGraph = value.enablePartialMode ? false : value.sceneGraph;
|
|
4752
|
+
this._data = { ...Options.defaults(), ...this._data, ...value, sceneGraph };
|
|
4753
|
+
this.notifierChangeEvent();
|
|
4754
|
+
}
|
|
4755
|
+
get showWCS() {
|
|
4756
|
+
return this._data.showWCS;
|
|
4757
|
+
}
|
|
4758
|
+
set showWCS(value) {
|
|
4759
|
+
this._data.showWCS = value;
|
|
4760
|
+
this.notifierChangeEvent();
|
|
4761
|
+
}
|
|
4762
|
+
get cameraAnimation() {
|
|
4763
|
+
return this._data.cameraAnimation;
|
|
4764
|
+
}
|
|
4765
|
+
set cameraAnimation(value) {
|
|
4766
|
+
this._data.cameraAnimation = value;
|
|
4767
|
+
this.notifierChangeEvent();
|
|
4768
|
+
}
|
|
4769
|
+
get antialiasing() {
|
|
4770
|
+
return this._data.antialiasing;
|
|
4771
|
+
}
|
|
4772
|
+
set antialiasing(value) {
|
|
4773
|
+
this._data.antialiasing = value;
|
|
4774
|
+
this.notifierChangeEvent();
|
|
4775
|
+
}
|
|
4776
|
+
get groundShadow() {
|
|
4777
|
+
return this._data.groundShadow;
|
|
4778
|
+
}
|
|
4779
|
+
set groundShadow(value) {
|
|
4780
|
+
this._data.groundShadow = value;
|
|
4781
|
+
this.notifierChangeEvent();
|
|
4782
|
+
}
|
|
4783
|
+
get shadows() {
|
|
4784
|
+
return this._data.shadows;
|
|
4785
|
+
}
|
|
4786
|
+
set shadows(value) {
|
|
4787
|
+
this._data.shadows = value;
|
|
4788
|
+
this.notifierChangeEvent();
|
|
4789
|
+
}
|
|
4790
|
+
get cameraAxisXSpeed() {
|
|
4791
|
+
return this._data.cameraAxisXSpeed;
|
|
4792
|
+
}
|
|
4793
|
+
set cameraAxisXSpeed(value) {
|
|
4794
|
+
this._data.cameraAxisXSpeed = value;
|
|
4795
|
+
this.notifierChangeEvent();
|
|
4796
|
+
}
|
|
4797
|
+
get cameraAxisYSpeed() {
|
|
4798
|
+
return this._data.cameraAxisYSpeed;
|
|
4799
|
+
}
|
|
4800
|
+
set cameraAxisYSpeed(value) {
|
|
4801
|
+
this.cameraAxisYSpeed = value;
|
|
4802
|
+
this.notifierChangeEvent();
|
|
4803
|
+
}
|
|
4804
|
+
get ambientOcclusion() {
|
|
4805
|
+
return this._data.ambientOcclusion;
|
|
4806
|
+
}
|
|
4807
|
+
set ambientOcclusion(value) {
|
|
4808
|
+
this._data.ambientOcclusion = value;
|
|
4809
|
+
this.notifierChangeEvent();
|
|
4810
|
+
}
|
|
4811
|
+
get enableStreamingMode() {
|
|
4812
|
+
return this._data.enableStreamingMode;
|
|
4813
|
+
}
|
|
4814
|
+
set enableStreamingMode(value) {
|
|
4815
|
+
this._data.enableStreamingMode = value;
|
|
4816
|
+
if (this._data.enableStreamingMode) {
|
|
4817
|
+
this._data.enablePartialMode = false;
|
|
4818
|
+
}
|
|
4819
|
+
this.notifierChangeEvent();
|
|
4820
|
+
}
|
|
4821
|
+
get enablePartialMode() {
|
|
4822
|
+
return this._data.enablePartialMode;
|
|
4823
|
+
}
|
|
4824
|
+
set enablePartialMode(value) {
|
|
4825
|
+
this._data.enablePartialMode = value;
|
|
4826
|
+
if (value)
|
|
4827
|
+
this._data.sceneGraph = false;
|
|
4828
|
+
this.notifierChangeEvent();
|
|
4829
|
+
}
|
|
4830
|
+
get memoryLimit() {
|
|
4831
|
+
return this._data.memoryLimit;
|
|
4832
|
+
}
|
|
4833
|
+
set memoryLimit(value) {
|
|
4834
|
+
this._data.memoryLimit = value;
|
|
4835
|
+
this.notifierChangeEvent();
|
|
4836
|
+
}
|
|
4837
|
+
get cuttingPlaneFillColor() {
|
|
4838
|
+
return this._data.cuttingPlaneFillColor;
|
|
4839
|
+
}
|
|
4840
|
+
set cuttingPlaneFillColor(value) {
|
|
4841
|
+
this._data.cuttingPlaneFillColor = value;
|
|
4842
|
+
this.notifierChangeEvent();
|
|
4843
|
+
}
|
|
4844
|
+
get edgesColor() {
|
|
4845
|
+
return this._data.edgesColor;
|
|
4846
|
+
}
|
|
4847
|
+
set edgesColor(value) {
|
|
4848
|
+
this._data.edgesColor = value;
|
|
4849
|
+
this.notifierChangeEvent();
|
|
4850
|
+
}
|
|
4851
|
+
get facesColor() {
|
|
4852
|
+
return this._data.facesColor;
|
|
4853
|
+
}
|
|
4854
|
+
set facesColor(value) {
|
|
4855
|
+
this._data.facesColor = value;
|
|
4856
|
+
this.notifierChangeEvent();
|
|
4857
|
+
}
|
|
4858
|
+
get edgesVisibility() {
|
|
4859
|
+
return this._data.edgesVisibility;
|
|
4860
|
+
}
|
|
4861
|
+
set edgesVisibility(value) {
|
|
4862
|
+
this._data.edgesVisibility = value;
|
|
4863
|
+
this.notifierChangeEvent();
|
|
4864
|
+
}
|
|
4865
|
+
get edgesOverlap() {
|
|
4866
|
+
return this._data.edgesOverlap;
|
|
4867
|
+
}
|
|
4868
|
+
set edgesOverlap(value) {
|
|
4869
|
+
this._data.edgesOverlap = value;
|
|
4870
|
+
this.notifierChangeEvent();
|
|
4702
4871
|
}
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
const ext = this.m_module.getViewer().getActiveExtents();
|
|
4706
|
-
const { min, max } = ext;
|
|
4707
|
-
const target = this.toPoint(params.target);
|
|
4708
|
-
const contains = target.x >= min.x &&
|
|
4709
|
-
target.y >= min.y &&
|
|
4710
|
-
target.z >= min.z &&
|
|
4711
|
-
target.x <= max.x &&
|
|
4712
|
-
target.y <= max.y &&
|
|
4713
|
-
target.z <= max.z;
|
|
4714
|
-
if (!contains) {
|
|
4715
|
-
params.target = ext.center();
|
|
4716
|
-
this.setViewParams(params);
|
|
4717
|
-
}
|
|
4872
|
+
get facesOverlap() {
|
|
4873
|
+
return this._data.facesOverlap;
|
|
4718
4874
|
}
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
const CLICK_DELTA = 5;
|
|
4723
|
-
const INTERACTIVITY_FPS = 24;
|
|
4724
|
-
/**
|
|
4725
|
-
* A [Viewer]{@link Viewer} event that fires when the viewer needs to be updated.
|
|
4726
|
-
*
|
|
4727
|
-
* @property {string} type - `update`
|
|
4728
|
-
* @event update
|
|
4729
|
-
*/
|
|
4730
|
-
/**
|
|
4731
|
-
* A [Viewer]{@link Viewer} event that fires when the user selects an entity with the mouse.
|
|
4732
|
-
*
|
|
4733
|
-
* @property {string} type - `select`
|
|
4734
|
-
* @property {OdTvSelectionSet} data - The set of selected entities. For more information, see
|
|
4735
|
-
* [OdTvSelectionSet](https://cloud.opendesign.com/docs/index.html#/vis/OdTvSelectionSet?id=odtvselectionset).
|
|
4736
|
-
* @event select
|
|
4737
|
-
*/
|
|
4738
|
-
class OdBaseDragger extends OdaGeAction {
|
|
4739
|
-
constructor(subject) {
|
|
4740
|
-
super(subject.visualizeJs);
|
|
4741
|
-
this.beginInteractivity = () => {
|
|
4742
|
-
const viewer = this.getViewer();
|
|
4743
|
-
const view = viewer.activeView;
|
|
4744
|
-
if (view["beginInteractivity"]) {
|
|
4745
|
-
view.beginInteractivity(INTERACTIVITY_FPS);
|
|
4746
|
-
this.subject.update();
|
|
4747
|
-
}
|
|
4748
|
-
view.delete();
|
|
4749
|
-
};
|
|
4750
|
-
this.endInteractivity = () => {
|
|
4751
|
-
const viewer = this.getViewer();
|
|
4752
|
-
const view = viewer.activeView;
|
|
4753
|
-
if (view["endInteractivity"]) {
|
|
4754
|
-
view.endInteractivity();
|
|
4755
|
-
const device = this.getViewer().getActiveDevice();
|
|
4756
|
-
const canvas = this.m_module.canvas;
|
|
4757
|
-
device.invalidate([0, 0, canvas.width, canvas.height]);
|
|
4758
|
-
device.delete();
|
|
4759
|
-
this.subject.update();
|
|
4760
|
-
}
|
|
4761
|
-
view.delete();
|
|
4762
|
-
};
|
|
4763
|
-
this.subject = subject;
|
|
4764
|
-
this.needInputText = false;
|
|
4765
|
-
this.mouseDownPosition = { x: 0, y: 0 };
|
|
4766
|
-
this.autoSelect = false;
|
|
4767
|
-
this.onmessage = (event) => this.subject.emitEvent(event);
|
|
4768
|
-
this.canvasEvents = CANVAS_EVENTS;
|
|
4875
|
+
set facesOverlap(value) {
|
|
4876
|
+
this._data.facesOverlap = value;
|
|
4877
|
+
this.notifierChangeEvent();
|
|
4769
4878
|
}
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
this.canvasEvents.forEach((x) => (this[x] = this[x].bind(this)));
|
|
4773
|
-
this.canvasEvents.forEach((x) => this.subject.on(x, this[x]));
|
|
4774
|
-
this.getViewer().setEnableAutoSelect(!!this.autoSelect);
|
|
4879
|
+
get facesTransparancy() {
|
|
4880
|
+
return this._data.facesTransparancy;
|
|
4775
4881
|
}
|
|
4776
|
-
|
|
4777
|
-
this.
|
|
4882
|
+
set facesTransparancy(value) {
|
|
4883
|
+
this._data.facesTransparancy = value;
|
|
4884
|
+
this.notifierChangeEvent();
|
|
4778
4885
|
}
|
|
4779
|
-
|
|
4780
|
-
return
|
|
4886
|
+
get enableCustomHighlight() {
|
|
4887
|
+
return this._data.enableCustomHighlight;
|
|
4781
4888
|
}
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
}
|
|
4786
|
-
ev.target.setPointerCapture(ev.pointerId);
|
|
4787
|
-
const relCoord = this.relativeCoords(ev);
|
|
4788
|
-
this.isDragging = true;
|
|
4789
|
-
this.mouseDownPosition = { x: relCoord.x, y: relCoord.y };
|
|
4790
|
-
this.start(relCoord.x, relCoord.y, ev.clientX, ev.clientY);
|
|
4791
|
-
this.subject.update();
|
|
4889
|
+
set enableCustomHighlight(value) {
|
|
4890
|
+
this._data.enableCustomHighlight = value;
|
|
4891
|
+
this.notifierChangeEvent();
|
|
4792
4892
|
}
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
return;
|
|
4796
|
-
}
|
|
4797
|
-
if (!ev.isPrimary) {
|
|
4798
|
-
return;
|
|
4799
|
-
}
|
|
4800
|
-
ev.target.releasePointerCapture(ev.pointerId);
|
|
4801
|
-
const relCoord = this.relativeCoords(ev);
|
|
4802
|
-
this.end(relCoord.x, relCoord.y);
|
|
4803
|
-
this.isDragging = false;
|
|
4804
|
-
this.subject.update();
|
|
4893
|
+
get sceneGraph() {
|
|
4894
|
+
return this._data.sceneGraph;
|
|
4805
4895
|
}
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
|
|
4810
|
-
this.
|
|
4896
|
+
set sceneGraph(value) {
|
|
4897
|
+
this._data.sceneGraph = value;
|
|
4898
|
+
if (value)
|
|
4899
|
+
this._data.enablePartialMode = false;
|
|
4900
|
+
this.notifierChangeEvent();
|
|
4811
4901
|
}
|
|
4812
|
-
|
|
4813
|
-
|
|
4814
|
-
return;
|
|
4815
|
-
}
|
|
4816
|
-
const relCoord = this.relativeCoords(ev);
|
|
4817
|
-
this.drag(relCoord.x, relCoord.y, ev.movementX, ev.movementY);
|
|
4818
|
-
if (this.isDragging) {
|
|
4819
|
-
this.subject.update();
|
|
4820
|
-
}
|
|
4902
|
+
get edgeModel() {
|
|
4903
|
+
return Boolean(this._data.edgeModel);
|
|
4821
4904
|
}
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
|
|
4825
|
-
const x = relCoord.x;
|
|
4826
|
-
const y = relCoord.y;
|
|
4827
|
-
const isNotDragging = Math.abs(x - this.mouseDownPosition.x) < CLICK_DELTA && Math.abs(y - this.mouseDownPosition.y) < CLICK_DELTA;
|
|
4828
|
-
if (viewer && viewer.getEnableAutoSelect() && isNotDragging) {
|
|
4829
|
-
viewer.unselect();
|
|
4830
|
-
viewer.select(x, y, x, y);
|
|
4831
|
-
this.subject.update();
|
|
4832
|
-
const selectionSet = viewer.getSelected();
|
|
4833
|
-
const handles = this.subject.getSelected();
|
|
4834
|
-
this.onmessage({ type: "select", data: selectionSet, handles });
|
|
4835
|
-
}
|
|
4905
|
+
set edgeModel(value) {
|
|
4906
|
+
this._data.edgeModel = Boolean(value);
|
|
4907
|
+
this.notifierChangeEvent();
|
|
4836
4908
|
}
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
const relCoord = this.relativeCoords(ev);
|
|
4840
|
-
const x = relCoord.x;
|
|
4841
|
-
const y = relCoord.y;
|
|
4842
|
-
const device = viewer.getActiveDevice();
|
|
4843
|
-
const clickView = device.viewAt([x, y]);
|
|
4844
|
-
if (clickView && !clickView.active) {
|
|
4845
|
-
viewer.activeView = clickView;
|
|
4846
|
-
clickView.delete();
|
|
4847
|
-
this.subject.update();
|
|
4848
|
-
}
|
|
4849
|
-
else {
|
|
4850
|
-
if (viewer && viewer.getEnableAutoSelect()) {
|
|
4851
|
-
const pSelected = viewer.getSelected();
|
|
4852
|
-
if (!pSelected.isNull() && pSelected.numItems() !== 0) {
|
|
4853
|
-
const itr = pSelected.getIterator();
|
|
4854
|
-
const entity = itr.getEntity();
|
|
4855
|
-
viewer.zoomToEntity(entity);
|
|
4856
|
-
this.onmessage({ type: "zoomtoentity", data: entity });
|
|
4857
|
-
this.subject.update();
|
|
4858
|
-
this.deleteAll([itr, entity]);
|
|
4859
|
-
}
|
|
4860
|
-
}
|
|
4861
|
-
}
|
|
4862
|
-
device.delete();
|
|
4909
|
+
get reverseZoomWheel() {
|
|
4910
|
+
return this._data.reverseZoomWheel;
|
|
4863
4911
|
}
|
|
4864
|
-
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
getActiveMarkupEntity(entityName) {
|
|
4868
|
-
return this.subject.addMarkupEntity(entityName);
|
|
4912
|
+
set reverseZoomWheel(value) {
|
|
4913
|
+
this._data.reverseZoomWheel = !!value;
|
|
4914
|
+
this.notifierChangeEvent();
|
|
4869
4915
|
}
|
|
4870
|
-
|
|
4871
|
-
return this.
|
|
4916
|
+
get enableZoomWheel() {
|
|
4917
|
+
return this._data.enableZoomWheel;
|
|
4872
4918
|
}
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
(_a = obj === null || obj === void 0 ? void 0 : obj.delete) === null || _a === void 0 ? void 0 : _a.call(obj);
|
|
4877
|
-
}
|
|
4919
|
+
set enableZoomWheel(value) {
|
|
4920
|
+
this._data.enableZoomWheel = !!value;
|
|
4921
|
+
this.notifierChangeEvent();
|
|
4878
4922
|
}
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
if (OdBaseDragger._isGestureActive === value) {
|
|
4882
|
-
return;
|
|
4883
|
-
}
|
|
4884
|
-
OdBaseDragger._isGestureActive = value;
|
|
4885
|
-
if (OdBaseDragger._isGestureActive) {
|
|
4886
|
-
OdBaseDragger.needSkipPointerUp = true;
|
|
4887
|
-
}
|
|
4923
|
+
get enableGestures() {
|
|
4924
|
+
return this._data.enableGestures;
|
|
4888
4925
|
}
|
|
4889
|
-
|
|
4890
|
-
|
|
4926
|
+
set enableGestures(value) {
|
|
4927
|
+
this._data.enableGestures = !!value;
|
|
4928
|
+
this.notifierChangeEvent();
|
|
4891
4929
|
}
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
OdBaseDragger.needSkipPointerUp = false;
|
|
4895
|
-
return true;
|
|
4896
|
-
}
|
|
4897
|
-
return false;
|
|
4930
|
+
get geometryType() {
|
|
4931
|
+
return this._data.geometryType;
|
|
4898
4932
|
}
|
|
4899
|
-
|
|
4900
|
-
|
|
4933
|
+
set geometryType(value) {
|
|
4934
|
+
this._data.geometryType = value;
|
|
4935
|
+
this.notifierChangeEvent();
|
|
4901
4936
|
}
|
|
4902
4937
|
}
|
|
4903
|
-
OdBaseDragger._isGestureActive = false;
|
|
4904
|
-
OdBaseDragger._needSkipPointerUp = false;
|
|
4905
4938
|
|
|
4906
4939
|
function createHtmlElementIfNeed(element, targetElement, dataTestId) {
|
|
4907
4940
|
if (!element) {
|
|
@@ -6997,7 +7030,7 @@
|
|
|
6997
7030
|
: {};
|
|
6998
7031
|
exports.Konva = {
|
|
6999
7032
|
_global: exports.glob,
|
|
7000
|
-
version: '9.3.
|
|
7033
|
+
version: '9.3.3',
|
|
7001
7034
|
isBrowser: detectBrowser(),
|
|
7002
7035
|
isUnminified: /param/.test(function (param) { }.toString()),
|
|
7003
7036
|
dblClickWindow: 400,
|
|
@@ -9906,8 +9939,8 @@
|
|
|
9906
9939
|
pixelRatio: pixelRatio,
|
|
9907
9940
|
}), context = canvas.getContext();
|
|
9908
9941
|
const bufferCanvas = new Canvas_1$1.SceneCanvas({
|
|
9909
|
-
width: canvas.width,
|
|
9910
|
-
height: canvas.height,
|
|
9942
|
+
width: canvas.width / canvas.pixelRatio + Math.abs(x),
|
|
9943
|
+
height: canvas.height / canvas.pixelRatio + Math.abs(y),
|
|
9911
9944
|
pixelRatio: canvas.pixelRatio,
|
|
9912
9945
|
});
|
|
9913
9946
|
if (config.imageSmoothingEnabled === false) {
|
|
@@ -18580,7 +18613,7 @@
|
|
|
18580
18613
|
|
|
18581
18614
|
class KonvaRectangle {
|
|
18582
18615
|
constructor(params, ref = null) {
|
|
18583
|
-
var _a, _b;
|
|
18616
|
+
var _a, _b, _c, _d;
|
|
18584
18617
|
if (ref) {
|
|
18585
18618
|
this._ref = ref;
|
|
18586
18619
|
return;
|
|
@@ -18595,8 +18628,8 @@
|
|
|
18595
18628
|
lineJoin: "round",
|
|
18596
18629
|
x: params.position.x,
|
|
18597
18630
|
y: params.position.y,
|
|
18598
|
-
width: params.width,
|
|
18599
|
-
height: params.height,
|
|
18631
|
+
width: (_c = params.width) !== null && _c !== void 0 ? _c : 200,
|
|
18632
|
+
height: (_d = params.height) !== null && _d !== void 0 ? _d : 200,
|
|
18600
18633
|
draggable: true,
|
|
18601
18634
|
strokeScaleEnabled: false,
|
|
18602
18635
|
});
|
|
@@ -19257,9 +19290,9 @@
|
|
|
19257
19290
|
this.loadMarkup(viewpoint);
|
|
19258
19291
|
}
|
|
19259
19292
|
getViewpoint() {
|
|
19260
|
-
// TODO: at the current 25.2 state we need VisualizeJS here and below. In the future we need to use it as an external interface
|
|
19293
|
+
// TODO: at the current 25.2 state we need VisualizeJS here and below. In the future we need to use it as an external interface.
|
|
19261
19294
|
if (!this._viewer.visualizeJs)
|
|
19262
|
-
return {
|
|
19295
|
+
return {};
|
|
19263
19296
|
const viewpoint = {
|
|
19264
19297
|
lines: [],
|
|
19265
19298
|
texts: [],
|
|
@@ -19797,9 +19830,9 @@
|
|
|
19797
19830
|
}
|
|
19798
19831
|
const konvaLine = new KonvaLine({
|
|
19799
19832
|
points,
|
|
19800
|
-
color: color || this._markupColor.HexColor,
|
|
19801
19833
|
type: type || "solid",
|
|
19802
19834
|
width: width || this.lineWidth,
|
|
19835
|
+
color: color || this._markupColor.HexColor,
|
|
19803
19836
|
id,
|
|
19804
19837
|
});
|
|
19805
19838
|
const obj = konvaLine.ref();
|
|
@@ -19861,9 +19894,9 @@
|
|
|
19861
19894
|
const konvaText = new KonvaText({
|
|
19862
19895
|
position: { x: position.x, y: position.y },
|
|
19863
19896
|
text: specifiedText,
|
|
19897
|
+
rotation: angle,
|
|
19864
19898
|
fontSize,
|
|
19865
19899
|
color: color || this._markupColor.HexColor,
|
|
19866
|
-
rotation: angle,
|
|
19867
19900
|
id,
|
|
19868
19901
|
});
|
|
19869
19902
|
this._konvaLayer.add(konvaText.ref());
|
|
@@ -19882,10 +19915,10 @@
|
|
|
19882
19915
|
return;
|
|
19883
19916
|
const konvaRectangle = new KonvaRectangle({
|
|
19884
19917
|
position,
|
|
19885
|
-
color: color || this._markupColor.HexColor,
|
|
19886
|
-
lineWidth: lineWidth || this.lineWidth,
|
|
19887
19918
|
width,
|
|
19888
19919
|
height,
|
|
19920
|
+
lineWidth: lineWidth || this.lineWidth,
|
|
19921
|
+
color: color || this._markupColor.HexColor,
|
|
19889
19922
|
id,
|
|
19890
19923
|
});
|
|
19891
19924
|
const obj = konvaRectangle.ref();
|
|
@@ -20172,7 +20205,7 @@
|
|
|
20172
20205
|
return { x: array[0], y: array[1], z: array[2] };
|
|
20173
20206
|
}
|
|
20174
20207
|
if (!this._viewer.visualizeJs)
|
|
20175
|
-
return {
|
|
20208
|
+
return {};
|
|
20176
20209
|
const visLib = this._viewer.visLib();
|
|
20177
20210
|
const visViewer = visLib.getViewer();
|
|
20178
20211
|
const viewpoint = {
|
|
@@ -20300,7 +20333,6 @@
|
|
|
20300
20333
|
this.configure(params);
|
|
20301
20334
|
this._options = new Options(this);
|
|
20302
20335
|
this.client = client;
|
|
20303
|
-
this.clientoptionschange = (event) => (this._options.data = event.data.data);
|
|
20304
20336
|
this._activeDragger = null;
|
|
20305
20337
|
this._renderTime = 0;
|
|
20306
20338
|
this.markup = MarkupFactory.createMarkup((_a = params.markupType) !== null && _a !== void 0 ? _a : MarkupType.Konva);
|
|
@@ -20329,11 +20361,6 @@
|
|
|
20329
20361
|
}
|
|
20330
20362
|
/**
|
|
20331
20363
|
* `VisualizeJS` parameters.
|
|
20332
|
-
*
|
|
20333
|
-
* Use this only for standalone viewer instances. Use {@link Client#options | Client.options}
|
|
20334
|
-
* instead if the viewer was created with a `Client` reference using
|
|
20335
|
-
* {@link Viewer | Viewer.create(client)}. Changes in client options will be automatically
|
|
20336
|
-
* applied to the viewer options.
|
|
20337
20364
|
*/
|
|
20338
20365
|
get options() {
|
|
20339
20366
|
return this._options;
|
|
@@ -20378,10 +20405,6 @@
|
|
|
20378
20405
|
* of the `VisualizeJS` library. Retrieves {@link event:visualizeprogress | visualizeprogress} event.
|
|
20379
20406
|
*/
|
|
20380
20407
|
async initialize(canvas, onProgress) {
|
|
20381
|
-
if (this.client) {
|
|
20382
|
-
this.client.addEventListener("optionschange", this.clientoptionschange);
|
|
20383
|
-
this.options.data = this.client.options.data;
|
|
20384
|
-
}
|
|
20385
20408
|
this.addEventListener("optionschange", (event) => this.syncOptions(event.data));
|
|
20386
20409
|
if (canvas.style.width === "" && canvas.style.height === "") {
|
|
20387
20410
|
canvas.style.width = "100%";
|
|
@@ -20421,7 +20444,7 @@
|
|
|
20421
20444
|
* release the `Viewer` instance.
|
|
20422
20445
|
*/
|
|
20423
20446
|
dispose() {
|
|
20424
|
-
var _a, _b, _c, _d
|
|
20447
|
+
var _a, _b, _c, _d;
|
|
20425
20448
|
this.cancel();
|
|
20426
20449
|
this.emitEvent({ type: "dispose" });
|
|
20427
20450
|
if (this.frameId)
|
|
@@ -20438,7 +20461,6 @@
|
|
|
20438
20461
|
this.canvas = undefined;
|
|
20439
20462
|
(_d = this.visualizeJs) === null || _d === void 0 ? void 0 : _d.getViewer().clear();
|
|
20440
20463
|
this.visualizeJs = undefined;
|
|
20441
|
-
(_e = this.client) === null || _e === void 0 ? void 0 : _e.removeEventListener("optionschange", this.clientoptionschange);
|
|
20442
20464
|
return this;
|
|
20443
20465
|
}
|
|
20444
20466
|
/**
|
|
@@ -21508,7 +21530,7 @@
|
|
|
21508
21530
|
commands("VisualizeJS").registerCommand("zoomToSelected", zoomToSelected);
|
|
21509
21531
|
|
|
21510
21532
|
///////////////////////////////////////////////////////////////////////////////
|
|
21511
|
-
const version = "25.3.
|
|
21533
|
+
const version = "25.3.10";
|
|
21512
21534
|
|
|
21513
21535
|
exports.Assembly = Assembly;
|
|
21514
21536
|
exports.CANVAS_EVENTS = CANVAS_EVENTS;
|