9.0.0

New features

  • W-CF is now available on NPM under the name @easterngraphics/wcf, please see breaking changes
  • added modules/polyfill/core-js which can be imported as a module to bundle the core-js polyfill
  • [core] added prop/groupProperties() utility to simplify and unify the property grouping in applications
  • [core] choice property values may now be marked as not selectable, see prop/PropertyValue.selectable
  • [core] added view/Viewer.handleWheelEvent property which can be used to disable wheel event handling and allow page scrolling
  • [cf] added support for OAP 1.5
  • [eaiws] added support for EAIWS 4.14 beta 2
  • [bsk] added action/splitUpCompositeArticles()
  • [bsk] added CalculationManager.getExchangeRatesMap()
  • [bsk] added optional parameter pReferenceCurrency to CalculationManager.setExchangeRates()

Changes

  • [core] the option AppInitOptions.stencilBuffer is now enabled by default to circumvent an IOS bug
  • [cf] spaces and colons at the end of the property text will be removed (can be disabled using wcfConfig.articleConfigurationOptions.trimPropText)
  • [libs] updated to core-js 3.32.1 (see breaking changes)
  • [libs] updated to BabylonJS 6.19.1
  • [libs] removed pep.js as its no longer required
  • [libs] removed jssha as its no longer used

Bug fixes

  • [core] fixed transparency for materials with alpha testing enabled
  • [utils] result of number/toLocaleCurrencyString() was not correct for some option combinations

Deprecations

  • [eaiws] the bundle bundles/eaiws.js is now deprecated please use the modules instead
  • [libs] the bundle libs/core-js is now deprecated, modules/polyfill/core-js should be imported intead

Breaking Changes

  • IOS 12 or older is no longer supported
  • the package name was changed from @egr/wcf to @easterngraphics/wcf therefore all module imports have to be changed
  • [eaiws] EAIWS 4.14 beta 2 or higher is required now
  • [core] removed deprecated GLTF scene export (mdl/io/GltfScene), GLTF export provided by EAIWS should be used instead
  • [bsk] removed obsolete function Basket.InitSessionGeneratedImageOptions() (defaults are now defined in EAIWS server.cfg)
  • [cf] replaced ArticleElement.getCatalogImage() by ArticleElement.getCatalogImageUrl()
  • [cf] article catalog images for placeholder geometries are no longer stored as part of the document (pbox file)
  • [utils] the functions string/hash() and arraybuffer/hash()now require a secure connection (HTTPS)
  • [utils] removed wcfConfig.libsPath and getLibsPath()
  • [utils] replaced Log.eventWarn and eventError by callbacks onWarn and onError to prevent circular dependency errors
  • [libs] to reduce size, core-js is now a custom build containing only stable ES and web standards for the last 3 browser versions.

8.4.2

Bug fixes

  • [bsk] set article structure was incorrect in certain cases after using actions/relocateItems()

8.4.1

Changes

  • [eaiws] updated SOAP binding for final EAIWS 4.13 release (added external catalog DSR information)

8.4.0

New features

  • [core] alpha testing for transparent materials is now supported
  • [core] added prop.AngleProperty as new property type
  • [bsk] added SetArticleItem.setCollapsed()
  • [cf] use alpha testing for GFJ materials with a non semi transparent texture
  • [eaiws] added support for EAIWS 4.13 rc 3
  • [eaiws] add new tag NET_VALUE_ECO to PricingProcedureLineTag

Changes

  • [core] GLTF scene export (mdl/io/GltfScene) is now deprecated, GLTF export provided by EAIWS should be used instead
  • [core] loadDocumentFromContainer() and saveDocumentToContainer() no longer catch/hide AppModule exceptions
  • [core] a re-rending will be triggered after the WebGL context was restored
  • [bsk] action/updateOfmlArticles() does no longer throw article update errors as an exception. They are now collected and returned as part of the update result.
  • [eaiws] EaiwsSession.uploadFileToUrl() and uploadFile() are now using utils/async/ajax() instead of using XMLHttpRequest directly
  • [eaiws] PriceProfileService is now deprecated, use REST API of PriceProfile plugin (v1.5) instead.
  • [eaiws] minor optimization to reduce soap request size
  • [libs] updated to BabylonJS 5.43.1
  • [libs] updated to core-js 3.27.2
  • [libs] updated to JSZip 3.10.1

Bug fixes

  • [core] shadow of rendering/ShadowPlane was missing after the WebGL context was restored
  • [cf] do not show OAP interactors if article has no geometry
  • [eaiws] it was not possible to reset the value of AddressData.countryCode
  • [eaiws] added missing basket functions collapseSetArticles() and expandSetArticles()
  • [eaiws] fixed error handling in case a soap response contains invalid XML

Breaking Changes

  • Internet Explorer and legacy Edge (Version <= 18) are no longer supported
  • [core] removed USDZ export, USDZ export provided by EAIWS should be used instead

8.3.0

New features

  • [eaiws] added support for PriceProfile plugin 1.4.0

8.2.0

New features

  • [core] added AppCallbacks.showMessage (part of OAP 1.4)
  • [core] added prop/PropertyValue.image
  • [bsk] parameter pArticle of actions/insertArticle() now also supports eaiws/basket/InsertInfo as type
  • [bsk] added FolderItem.setLongText() and FolderItem.getLongText()
  • [bsk] added TextItem.setLongText() and TextItem.getLongText()
  • [cf] added support for OAP 1.4
  • [cf] added support for high resolution property icons
  • [cf] parameter pArticle of ArticleManager.insertArticle() now also supports eaiws/basket/InsertInfo as type
  • [pl] added parameter pLineDistance to utils/createGrid()
  • [eaiws] added support for EAIWS 4.12 rc 1
  • [utils] added articleConfigurationOptions to wcfConfig which can be used to enable high resolution property icons

Bug fixes

  • [bsk] fixed error in internal sortItems() function (used from actions/relocateItems() and moveItems)
  • [core] fixed wrong callback type definition of AppCallbacks.ShowActionChoiceOptions.goBack
  • [core] enabling or disabling SSAO didn't had an immediate effect

Changes

  • [bsk] alternative/optional items are no longer ignored when operating on group calculations
  • [bsk] ItemUpdateFlags.UserArticleDescription is now deprecated, use ItemUpdateFlags.UserItemDescription instead
  • [libs] updated to BabylonJS 5.15.1
  • [libs] updated to core-js 3.23.5
  • [libs] updated to JSZip 3.9.1

Breaking Changes

  • [eaiws] EAIWS 4.12 rc 1 or higher is required now

8.1.0

New features

  • [bsk] improved performance of Basket.loadFromSession() by executing some requests in parallel
  • [bsk] improved performance of actions/insertArticle() when inserting ofml articles with many children
  • [bsk] Basket.checkConsistency() optionally checks for calculation errors (enabled by default)
  • [bsk] Basket.loadFromSession() optionally activates a given pricing procedure during loading (which is faster than doing it afterwards)
  • [bsk] added support for item comments, see BasketItem.setComments()
  • [bsk] added support for optional items, see BasketItem.getInactiveState()
  • [bsk] added ItemLockFlags.OfmlArticleUpdate
  • [cf] speed up article geometry loading (GFJ) by loading textures in parallel
  • [cf] speed up article configuration (setPropertyValue) by disabling unnecessary computations on EAIWS side
  • [utils] async/ajax() now also accepts HEAD as request method
  • [utils] added function async/fetchContentType()
  • [utils] added function image/getImageMimeType()
  • [utils] added function string/removeQueryString()
  • [eaiws] added callback SoapService.onGetRequestOptions which allows to define custom request options for different soap methods
  • [eaiws] added support for EAIWS 4.11 rc1

Changes

  • [bsk] Basket/View.root now throws an exception if it was not initialized yet or already cleared
  • [bsk] BaseItem.children is no longer undefined after an item was disposed, its now empty instead
  • [bsk] fixed unknown item id error during execution of deleteItems() action
  • [bsk] nested set articles are no longer automatically converted back to folders, e.g when pasting a set article into another set article
  • [bsk] actions/setItemAlternativeState() is now deprecated, use actions/setItemInactiveState() instead
  • [cf] removed series id from internal property key to allow merging of properties from different series
  • [utils] string/getFileExtension() now always returns the extension lowercase
  • [utils] string/getFileExtension(), getFilePath() and getFileName() now ignore the query string of the given url
  • [eaiws] parameter pTimeout of BasketService.getExportedGeometry is now deprecated (use SoapService.onGetRequestOptions instead)
  • [libs] updated to core-js 3.21.1
  • [libs] updated to BabylonJS 5.0.0-beta.9

Bug fixes

  • [core] OAP interactor position was wrong after cf/ArticleManager.createArticleScreenshot()
  • [core] fixed interactor event handling issue with firefox and touch devices
  • [core/cf] fixed memory leak related to interactors
  • [bsk] fixed wrong calculation of folder view items if the folder contains alternative items
  • [bsk] fixed wrong regular expression which is used to validate a series id
  • [bsk] always use the stored article image as fallback if no image can be generated
  • [eaiws] correctly handle Infinity value returned from EAIWS for decimal data type

Breaking Changes

  • [eaiws] EAIWS 4.11 rc1 or higher is required now

Breaking Changes (typescript compile time only)

  • [eaiws-bundle] egrWcf.eaiws.plugins.priceProfile.ConditionRule has to be used as type instead of egrWcf.eaiws.plugins.PriceProfileService.ConditionRule

8.0.3

Bug fixes

  • [libs] updated to BabylonJS 5.0.0-alpha.65 to fix WebGL 2 errors in Chrome and Edge version >= 97

8.0.2

Bug fixes (compile time only)

  • [eaiws] fixed wrong typescript typings of eaiws bundle

8.0.1

Bug fixes

  • [cf] fixed wrong dimension text alignment of BoundingBoxDimensions in case of offsetFactor > 1
  • [cf] MainArticleElement.getCompositeCalculation() returned wrong price for alternative articles
  • [bsk] ArticleItem.getCompositeCalculation() returned wrong price for alternative articles
  • [eaiws] added missing property images to catalog/CatalogItem

8.0.0

New features

  • converted the whole framework to ES6 modules which reduces the bundle size
  • [core] rendering performance improvements
  • [core] added support for FXAA to reduce aliasing during user interaction (can be enabled by Viewer.fxaaEnabled)
  • [core] enabled specular anti aliasing for mdl/PbrMaterial to reduce aliasing of glossy materials
  • [core] added CameraControl.stopOrbitInertia()
  • [core] added support for custom environment maps, see MaterialManager.customEnvironmentUrl
  • [core] added optional surcharge/extra charge information to property values, see prop/PropertyValue.surcharge
  • [cf] surcharges of OFML property values can now be accessed using core/prop/PropertyValue.surcharge (see breaking changes)
  • [cf] added flag ArticleManager.includeCalculationErrorsInInconsistencies
  • [bsk] added flag Basket.includeCalculationErrorsInInconsistencies
  • [bsk] additional custom images (up to 10) can be assigned to an basket item
  • [bsk] cfg/ArticleConfiguration.assignArticleImageCamera() optionally updates article images immediately
  • [bsk] added ItemLockFlags.Quantity (see breaking changes)
  • [bsk] added optional pForce parameter to View.update()
  • [utils] added new option additionalDecimalPlaces to number/toLocaleCurrencyString()
  • [eaiws] added support for EAIWS 4.10 rc2

Changes

  • [core] default value of AppInitOptions.disableWebGL2Support is now true because of issues with WebGL 2 in some browsers (e.g. IOS 15.0 or some low-end Android devices)
  • [core] changed bounding box calculation to ensure correct bounding box size in case of rotated child elements
  • [core] changing property showMainElementSelection or showSubElementSelection of tool/SelectionDefault will now update the current selection
  • [eaiws] improved type safety for SOAP function calls (typescript only)
  • [libs] updated to BabylonJS 5.0.0-alpha.45
  • [libs] updated to core-js 3.18.1

Bug fixes

  • [core] MSAA post-process wasn't completely disabled if Viewer.antiAliasingQuality was set to 0
  • [core] resizing the viewer while generating a screenshot resulted in a corrupted screenshot and a wrongly resized viewer
  • [core] mdl/SceneElement.replaceNode() didn't handle the case that the SceneElement was removed from the scene or was already disposed
  • [core] fixed memory leak when executing commands without undo recording being enabled
  • [bsk] stored article image of partial plannings wasn't loaded from obk
  • [bsk] ItemLockManager.isHeaderCalculationLocked() returned true even if the calculation of an item was not locked
  • [bsk] fixed wrong price calculation of merged alternative items in basket views
  • [bsk] adjusting the price calculation of all sub items of a selected folder was not possible
  • [cf] prevent concurrent calls of ArticleElement.getArticleData()
  • [pl] rotate interactors were visible in some cases even if rotation was disabled

Breaking Changes

  • scripts are no longer part of the W-CF distribution (there is still an eaiws bundle), the application has to migrate to modules (see README.md)
  • [eaiws] EAIWS 4.10 rc2 or higher is required now
  • [core] removed Application.dataPath use /utils/wcfConfig.dataPath instead
  • [core] AppInitOptions for Application.initialize() is now an interface instead of a class
  • [core] removed load/save functions from AppDocument, import load/save functions from /core instead (e.g. loadDocumentFromZip())
  • [core] css class for the view dom element was renamed from view to wcf-view
  • [cf] PecImport is no longer available as a class, import functions from /cf/io instead (e.g. importPec())
  • [cf] surcharges of OFML property values are no longer part of the value text, use core/prop/PropertyValue.surcharge to get the surcharge
  • [bsk] removed BASKET_COLUMN_ID_USER_IMAGE and BASKET_COLUMN_ID_EXT_ITEM_NUMBER from Basket class, can be imported from /bsk instead
  • [bsk] removed all actions from Basket and View, can be imported as individual functions from /bsk/actions (e.g. insertArticle())
  • [bsk] removed configuration property from Basket, /bsk/cfg/ArticleConfiguration should be used instead
  • [bsk] removed unused ArticleItem.hasIndependentChildren()
  • [bsk] cfg/ArticleConfiguration.loadPreConfigurationFromSession() has to be called to restore the pre configuration
  • [bsk] cfg/ArticleConfiguration.assignArticleImageCamera() is now a promise and the parameters have changed
  • [bsk] ItemLockFlags.Calculation no longer locks the article quantity, use ItemLockFlags.Quantity instead
  • [utils] removed utils.wcfLibsPath use /utils/wcfConfig.libsPath instead
  • [utils] removed utils.dom.loadContentErrorHandler use /utils/wcfConfig.loadContentErrorHandler instead
  • [utils] global ajax error handler and default ajax options can be configured using /utils/wcfConfig
  • [utils] renamed image/load() to loadImage()
  • [utils] renamed array/remove() to removeElement()

7.1.4

Bug fixes

  • [cf] prevent duplicate sub articles in GFJ loader if multiple sub articles have identical geometry ids

7.1.3

Bug fixes

  • [cf] fixed gfj path not found error in pec import for some pec files if no eaiws session is available

7.1.2

Bug fixes

  • [core] fixed error in Camera.setTarget() resulting in rotated top view (introduced in 7.1.1)

7.1.1

Bug fixes

  • [core] fixed a numerical error in Camera.setTarget() resulting in wrong camera rotation
  • [eaiws] fixed wrong type definition of SortGroupSelector

7.1.0

New features

  • [bsk] added ArticleItem.getCameraSetup() and setCameraSetup()
  • [bsk] added static method Basket.PrepareBasketColumns()
  • [bsk] added UserArticleItem.setPurchasePrice()
  • [bsk] added UserArticleItem.setSalesPrice()
  • [bsk] added UserArticleItem.setPriceDate()
  • [bsk] added ProjectInfo.get/setDefaultPriceDate()
  • [bsk] added optional pPriceDate parameter to Basket.updateOfmlArticles()
  • [cf] added optional pPriceDate parameter to MainArticleElement.updateOfmlArticle()
  • [core] added optional pImmediateResize flag to Viewer.resize()
  • [core] added optional scaling factor to USDZ and GLTF scene export
  • [eaiws] added support for EAIWS 4.9 beta1

Breaking changes

  • [eaiws] EAIWS 4.9 beta1 or higher is required now
  • [cf/bsk] ItemProperties and ArticleData are now always using the eaiws option separateCurrencies. The properties purchaseCurrency and salesCurrency have to be used instead of currency.

Bug fixes

  • [bsk] moving nested items to a set article created duplicate items in some cases
  • [cf] eventPropertiesChanged wasn't triggered for articles which were indirectly changed by a property change of another subarticle

7.0.1

Changes

  • [core] reduced number of SSAO samples if low SSAO quality is used

Bug fixes

  • [core] added workaround to prevent black/dark materials if WebGL 2 is used without shadowMapping

7.0.0

New features

  • [core] added rendering.ShadowMapping which generates soft directional shadows
  • [core] added rendering.createShadowOnlyFloor() helper function (to be used in combination with rendering.ShadowMapping)
  • [core] Ambient Occlusion (SSAO) is now used to increase rendering quality if WebGL 2.0 is available (see Viewer.ssaoQuality to disable it)
  • [core] Viewer.createScreenshot() now supports all rendering effects of BabylonJS (e.g. shadows, post processing, gui)
  • [cf] added PecImportOptions.dataLanguage
  • [cf] added ArticleManager.eventOapError
  • [cf] custom InsertArticleOptions can be provided for ArticleManager.insertArticle() and insertSubArticle()
  • [cf] class BoundingBoxDimensions is now public and can be used to show dimensions for a group of elements
  • [bsk] custom InsertArticleOptions can be provided for Basket.insertArticle()
  • [bsk] added showSubTotal option to Basket.insertFolder()
  • [bsk] added CalculationManager.setItemConditionDescription()
  • [bsk] ArticleItem.setShortText(), setLongText() or setFeatureText() can be used for OFML articles to set a user defined article description
  • [bsk] added ArticleItem.getUserDescription()
  • [eaiws] added support for EAIWS 4.8 rc2
  • [eaiws] added SoapError.methodName

Changes

  • [core] default value of AppInitOptions.preserveDrawingBuffer is now true
  • [core] default value of AppInitOptions.disableWebGL2Support is now false
  • [core] improvements for rendering.ShadowPlane to reduce z-fighting (not for IE 11 browser)
  • [core] mdl.io.UsdScene exports only visible meshes
  • [bsk] moved setTaxInformation, setPackagingVolume and setPackagingNetWeight from UserArticleItem to ArticleItem
  • [bsk] changing the label, shortText, longText or featureText for an item is no longer language independent
  • [libs] updated to BabylonJS 4.2.0-egr.1
  • [libs] updated to core-js 3.8.2

Breaking changes

  • [eaiws] EAIWS 4.8 rc2 or higher is required now
  • [core] Viewer.createScreenshot() requires AppInitOptions.preserveDrawingBuffer to be enabled
  • [core] removed support for multiple views, Viewer.view is now the only available view
  • [core] removed ScreenshotView, the different callbacks of ScreenshotOptions should be used instead
  • [core] removed pView parameter from Viewer.createScreenshot()
  • [core] the callbacks BaseScreenshotOptions.onDrawBackground() and onDrawOverlay() are now asynchronous
  • [core] reduced the internal Y offset of rendering.ShadowPlane from 2mm to 0.5mm (rendering.ShadowPlane.planeYOffset can be set to 0.0015 to get the old behavior)
  • [bsk] removed experimental and unfinished support for set-article based 3d configurations
  • [cf] removed ArticleManager.offlineContext, therefore article information in loaded documents is no longer available without an valid EAIWS session

Bug fixes

  • [bsk] Basket.insertArticle() didn't handle the varCodeType of eaiws.catalog.ArticleCatalogItem
  • [core] fixed wrong multi selection behavior in tool.SelectionDefault
  • [core] ignoring line meshes in mdl.io.UsdScene to prevent exceptions
  • [cf] prevent flickering of hiddenMode OAP interactors if they are initially invisible

6.4.0

New features

  • [core] added AppCallbacks.showMedia
  • [cf] new OAP interactor symbols
  • [cf] added OAP 1.2 support
  • [eaiws] added support for EAIWS 4.8 rc1 (superseded by EAIWS 4.8 beta 6)
  • [eaiws] added FINAL_VALUE_NO_DISCOUNTS tag to PricingProcedureLineTag
  • [bsk] added View.extraPriceInfoSelectors property (requires EAIWS 4.8 beta 5)

Changes

  • [core] rectangle selection now ignores meshes if they are not pickable (isPickable = false)
  • [core/pl] adjusted colors of tool feedback lines to be more visible on dark backgrounds

Breaking changes

  • [eaiws] EAIWS 4.8 beta 5 or higher is required now

Bug fixes

  • [core] prevent page scrolling if user clicks on the WebGL canvas
  • [core] partial rectangle selection wasn't working as intended
  • [core] fixed error during partial rectangle selection if a line mesh was selected
  • [core] fixed error in View.pickSceneWithFrustum() if a line mesh was picked
  • [cf] "is selectable" flag of sub articles wasn't updated after configuration

6.3.1

Bug fixes

  • [bsk] Basket.pasteItems() returned the original items instead of the pasted ones

6.3.0

New features

  • [eaiws] added support for EAIWS 4.8 beta 2
  • [eaiws] added optional SoapError.detail which contains additional error information (e.g. basket.BasketServiceFault)
  • [eaiws] added INVISIBLE and PURCHASE_CALC tag to PricingProcedureLineTag
  • [pl] svg images are now used for interactors in the default tool which are also automatically adjusted according to the theme color
  • [bsk] added Basket.eventItemsPasted
  • [bsk] added ProjectInfo.getEffectiveProjectLanguages() and eventEffectiveProjectLanguagesChanged
  • [bsk] added CalculationManager.updateConditionAmounts()
  • [cf] color of article dimensions can be changed, see MainArticleElement.dimensionsColor
  • [utils] added async.delay() and async.delayForAnimation()

Changes

  • [core] split up USD export operation into smaller chunks for better UI animations during export
  • [core] improved PBR material export for USD
  • [bsk] BasketItem.setTmText() now uses the primary project language as default instead of the session locale
  • [bsk] ProjectInfo.getProjectData() returns the project texts in JSON format
  • [cf] dimensions of MainArticleElement will be updated automatically if dimensionsColor or dimensionsScaleFactor changed
  • [utils] added additional pError parameter to async.ajaxRejectedEvent
  • [libs] updated to JSZip 3.5.0
  • [libs] updated to core-js 3.6.5
  • [libs] updated to jsSHA 3.1.2

Breaking changes

  • [pl] the style sheet styles/pl.css has to be loaded from the application if the pl module is used

Bug fixes

  • [bsk] ArticleConfiguration.assignArticleImageCamera() only worked correctly for articles positioned at the origin
  • [bsk] fixed handling of cached item calculation in case of active header conditions (see also pIgnoreHeaderCalculation parameter of BaseItem.getCalculation())
  • [cf] fixed handling of ofml update states
  • [core] added workaround for clipped 3d css interactors in firefox
  • [core] fixed wrong camera position/rotation after zoom to fit

6.2.0

New features

  • [core] added experimental GLTF scene export mdl.io.GltfScene (api and functionality may change)
  • [core] added USD scene export mdl.io.UsdScene

Changes

  • [libs] added optional /libs/babylonjs/babylonjs.serializers.min.js (only required by the GLTF scene export)

6.1.2

Bug fixes

  • [utils] the path returned from string.joinPath() contained double slashes in some cases

6.1.1

Changes

  • [core] CommandManager.executeCommand() and ToolManager.startTool() no longer hide/swallow exceptions

Bug fixes

  • [core] planningHDR_512.env was loaded even if not used

6.1.0

New features

  • [core] added mutiLine flag to prop.StringProperty
  • [core] added the environment map of pCon.planner as alternative which can be enabled with MaterialManager.environmentMode
  • [cf] added support for multine ofml string properties (requires EAIWS 4.8 beta 1)
  • [bsk] added CalculationManager.adjustConditionValue(), adjustCalculationLineAmount() and adjustCalculationLineValue() (requires EAIWS 4.8 beta 1)
  • [eaiws] added support for EAIWS 4.8 beta 1

Changes

  • [bsk] Basket.addView() now also accepts a view config to avoid an additional SOAP request

Bug fixes

  • [core] fixed material roughness handling by reconverting the env map
  • [bsk] fixed exception in Basket.insertSetArticle() if a folder is currently selected which is part of a set article
  • [pl] fixed potential null reference exception in DefaultRotate tool

6.0.0

New features

  • [utils] added string.hash() and arraybuffer.hash()
  • [utils] added string.encodeToUtf8()
  • [utils] added arraybuffer.toHex()
  • [utils] added additional request information to async.ajaxResolvedEvent and async.ajaxRejectedEvent
  • [bsk] added options for folder handling to Basket.mergeArticles()
  • [libs] added jsSHA version 2.4.0, will be used as a fallback for hash generation and is loaded on-demand
  • [cf] added OAP interactor symbol OnOff (requires EAIWS 4.7.4)

Changes

  • [cf] id generation for materials and catalog images is now based on SHA instead of MD5

Breaking changes

  • the path utils.wcfLibsPath has to be defined or hash generation will fail under chrome if a non-secure connection is used
  • [utils] changed execution order and arguments of async.ajaxResolvedEvent and async.ajaxRejectedEvent
  • [bsk] removed deprecated function UserArticleItem.setNetWeight()
  • [bsk] removed deprecated function BaseItem.getPositionNumber()
  • [libs] blueimp-md5 is no longer used internally and therefore is no longer part of the W-CF distribution

Bug fixes

  • [utils] number.toLocaleLengthString() returned wrong unit for LengthUnit.Kilometer
  • [utils] added missing xml type to AjaxOptions.responseType
  • [eaiws] SessionService.loadEmptySession() didn't clear internal caches
  • [pl] improved stability of rotate interactor position in orthographic views
  • [cf] OAP symbols ChangeDim2Left and ChangeDim2Right didn't work in all sizes

5.4.4

Bug fixes

  • [bsk] fixed unknown item id error during article configuration if nested sub articles got deleted that are not part of the main article hierarchy

5.4.3

Bug fixes

  • [cf] prevent errors in pec import for user articles if no eaiws session is available

5.4.2

Bug fixes

  • [cf] internal obk reader was reading wrong article rotations

5.4.1

Bug fixes

  • [core] minimum webgl canvas size is now 4px to prevent webgl errors
  • [core/cf/pl] disabled vertex alpha for opaque line meshes to prevent potential drawing order issues

5.4.0

Changes

  • [bsk] CalculationManager.setCurrency() resets the ofml update state for UpToDate articles
  • [libs] updated to BabylonJS 4.1.0

Bug fixes

  • [core] fixed wrong handling of left mouse button rectangle selection in tool.SelectionDefault
  • [bsk] Basket.clear() didn't reset the ProjectInfo cache

5.3.0

Changes

  • [core] adjusted conversion of legacy materials to PBR based on document Conversion from OMATS1 to PBR version 1.2
  • [cf] a placeholder geometry for articles without any valid geometry will be generated

Bug fixes

  • [core] disabled parallel shader compilation (chrome only) to avoid potential side effects
  • [bsk] the item order was not correct after moving or relocating items (in some cases moving was not possible at all)
  • [cf] transparency of ofml materials was ignored if the material had a texture (without alpha channel)
  • [eaiws] fixed handling of soap node text values

5.2.0

New features

  • [core] added support for left mouse button rectangle selection, see tool.SelectionDefault.leftMouseButtonRectangleSelectEnabled flag
  • [core] added different selection modes to rectangle selection, see tool.SelectionDefault.rectangleSelectMode
  • [core] added view.CameraControl.leftMouseButtonEnabled flag which can be used to disable left mouse button navigation
  • [core] MultiPropertyProvider now provides an abortable progress while handling properties
  • [bsk] added UserArticleItem.setPackagingVolume()
  • [bsk] added UserArticleItem.setPackagingNetWeight()
  • [bsk] added BaseItem.getItemNumber()
  • [bsk] added Basket.eventOfmlUpdateStateChanged
  • [bsk] added ProjectInfo.notifyProjectDataChanged()
  • [bsk] added optional progress callback to Basket.updateOfmlArticles()
  • [bsk] added support for external item numbers
  • [pl] added moveLimitMin and moveLimitMax property to Default and TouchDefault tool
  • [utils] added array.chunk()
  • [utils] added utilities for loading and resizing of images

Changes

  • [core] changed tabIndex of viewer canvas from 1 to 0
  • [bsk] deprecated UserArticleItem.setNetWeight() in favor of UserArticleItem.setPackagingNetWeight()
  • [bsk] deprecated BaseItem.getPositionNumber() in favor of BaseItem.getItemNumber()
  • [libs] updated to BabylonJS 4.1.0-beta.22
  • [libs] updated to core-js 3.6.4

Breaking changes

  • [pl] Default and TouchDefault tool limit the object movement by default to an 40 meter area, see moveLimitMin and moveLimitMax properties

Bug fixes

  • [bsk] views with merge mode SubArticles weren't updated correctly after changing the quantity of a view item
  • [bsk] prevent timeout error if Basket.updateOfmlArticles() is called for many articles
  • [bsk] prevent timeout error if Basket.fetchOfmlUpdateStates() is called for many articles
  • [bsk] value of ArticleItem.ofmlUpdateState wasn't always correct
  • [bsk] calling Basket.clear() didn't reset the cached tax scheme
  • [eaiws] value of BasketViewConfig.visibleColumns was always undefined
  • [eaiws] added missing itemId property to basket.ImageInfo
  • [eaiws] fixed wrong function signature of basket.getPriceCalculationSheets()

5.1.1

Bug fixes

  • [pl] angle feedback of rotate tool wasn't shown correctly
  • [cf] delayed update events while processing OAP DimChange to prevent unknown item id errors

5.1.0

New features

  • [bsk] added ItemLockManager which can be used to lock certain item related operations.
  • [utils] added string.generateRandomUUID()

Changes

  • [libs] updated to core-js 3.4.7

Bug fixes

  • [eaiws] prevent exception if project.AddressData.countryCode is empty when changing/adding an address
  • [bsk] the calculation returned from ArticleItem.getCompositeCalculation() now contains a quantity and has correct unit prices
  • [cf] the calculation returned from MainArticleElement.getCompositeCalculation() now contains a quantity and has correct unit prices

5.0.0

New features

  • [core] added io.DocumentInputContext.getFile()
  • [core] added io.DocumentInputContext.listFiles()
  • [core] added tool.SelectionMenu.deactivateOnToolStart property
  • [core] added targetCanvas option to view.BaseScreenshotOptions
  • [core] added CameraControl.zoomBy()
  • [core] added ModelManager.getElementLoader()
  • [cf] added ArticleElement.hasInteractors()
  • [cf] added OAP 1.0 support
  • [utils] async.ajax() now returns an abortable promise
  • [utils] async.ajax(), dom.loadScript() and dom.loadStyleSheet() will automatically retry the request in case of network errors, up tp 3 times by default
  • [utils] added optional pAsync parameter to dom.loadScript()
  • [utils] maximum number of concurrent tasks can be defined for async.forEachParallel()
  • [utils] added object.fromMap()
  • [eaiws] added EaiwsSession.eventConnected and eventDisconnected
  • [eaiws] added EaiwsSession.eventSessionLocaleChanged
  • [eaiws] added EaiwsSession.eventCatalogLanguagesChanged
  • [eaiws] added EaiwsSession.eventBasketLanguagesChanged
  • [eaiws] SessionService.getSystemInformation() now also available as non static function
  • [eaiws] added SessionService.importFile()
  • [eaiws] added CatalogService.getLanguages()
  • [eaiws] added BasketService.getLanguages()
  • [eaiws] added BasketService.moveItems()
  • [eaiws] added functions for basket column handling to BasketService
  • [eaiws] added support for EAIWS 4.7 beta 1
  • [bsk] added Basket.eventModified
  • [bsk] added Basket.updateSessionLanguage()
  • [bsk] added Basket.checkConsistency()
  • [bsk] added Basket.mergeArticles()
  • [bsk] added Basket.importPec()
  • [bsk] added Basket.moveItems() and Basket.getPossibleMoveDirections()
  • [bsk] added BasketItem.setTmText()
  • [bsk] added FolderItem.setShowSubTotal()
  • [bsk] added CalculationManager.eventTaxSchemeChanged
  • [bsk] added CalculationManager.eventCurrencyChanged
  • [bsk] added CalculationManager.getReferenceCurrency()
  • [bsk] added support for user defined images to basket items
  • [bsk] added functions for address, contact and project data handling to ProjectInfo

Changes

  • [bsk] ProjectInfo.getSettings() and ProjectInfo.changeSettings() are now marked as obsolete
  • [libs] updated to blueimp-md5 2.11.0
  • [libs] updated to JSZip 3.2.2

Bug fixes

  • [core] prevent selection of the canvas in IOS 13
  • [cf] during loading of article geometries, geometries with an invalid bounding box will be ignored to prevent consequential errors
  • [cf] ArticleManager.insertArticle() didn't handle the varCodeType of eaiws.catalog.ArticleCatalogItem
  • [cf] fixed wrong event order during OAP processing which could lead to some side effects
  • [cf] fixed wrong handling of OAP object definitions which resulted in some failed OAP actions
  • [cf] visibility check for OAP interactors did only check the current child article instead of checking the whole main article
  • [bsk] wrong return type of Basket.insertUserArticle()
  • [eaiws] soap requests returned an empty error message in case of network errors or timeouts
  • [eaiws] added missing OAPPropChangeAction to basket service
  • [eaiws] added missing type Import to SessionCacheFileType of session service

Breaking changes

  • [core] implementations of io.DocumentContainer have to implement the listFiles() function
  • [utils] renamed async.ajaxError into async.AjaxErrorInfo
  • [utils] renamed async.ajaxError.debugInfo into async.AjaxErrorInfo.requestInfo
  • [utils] renamed async.ajaxErrorDebugInfo into async.AjaxRequestInfo
  • [utils] renamed async.AjaxErrorMessageCallback into async.AjaxCustomErrorCallback
  • [utils] async.ajaxDefaultOptions has to be used instead of qwest.setDefaultOptions()
  • [utils] removed object.className() as its not working as intended for minified code
  • [eaiws] EAIWS 4.7 beta 1 or higher is required now
  • [eaiws] changed parameters of EaiwsSession.open()
  • [eaiws] moved SessionService and all related types from eaiws to eaiws.session namespace
  • [eaiws] moved BasketService and all related types from eaiws to eaiws.basket namespace
  • [eaiws] moved CatalogService and all related types from eaiws to eaiws.catalog namespace
  • [bsk] Basket.importObx() may now return null if the file upload was aborted
  • [bsk] renamed Basket.moveItems() to Basket.relocateItems()
  • [pl] deleted unnecessary styles/pl.css from distribution
  • [libs] qwest is no longer used and therefore is no longer part of the W-CF distribution
  • [libs] updated to BabylonJS 4.0.3 which introduces some breaking changes
  • [libs] updated to core-js 3.3.6 therefore libs/core-js/shim.min.js is now named libs/core-js/minified.js

4.4.1

Bug fixes

  • [core] tool.SelectionDefault.eventBackgroundClick was triggered even if an element was picked after a long touch

4.4.0

New features

  • [cf] added title support for OAP action choice actions
  • [cf] added support for nested OAP action choice actions
  • [cf] added support for OAP create object actions with attach area placement
  • [cf] added ArticleManager.initializeSession() which has to be called to enable new OAP features
  • [cf] added MainArticleElement.fetchBasketItems()
  • [cf] added ArticleElement.getBasketItem()
  • [cf] article properties also store the source eaiws.ArticleData in its user data, added ArticlePropertyHelpers.GetPropertyUserData() to retrieve the user data
  • [core] added prop.MultiPropertyProvider.isPropertyValueUndetermined()
  • [core] bounding box can be disabled for SceneElements (see mdl.SceneElement.isSelectionHighlightEnabled())
  • [core] added boundingBoxEnabled flag to AppSnappingSettings
  • [core] added CommandManager.eventHistoryChanged
  • [core] horizontal and vertical zoom to fit margin can be configured separately, see view.CameraControl.CameraZoomToFitOptions
  • [core] improved camera navigation for touchpad users (e.g. ctrl can be pressed to switch from orbit to panning)
  • [bsk] added Basket.InitSessionGeneratedImageOptions()
  • [eaiws] added support for EAIWS 4.6
  • [eaiws] added BasketService.getItemFields()
  • [eaiws] added BasketService.resetItemFields()
  • [eaiws] added BasketService.setItemFields()

Changes

  • [eaiws] changed type for array parameters from Array to ReadonlyArray
  • [core] feedback of rectangle selection tool now respects the application theme

Bug fixes

  • [utils] async.Timer.isRunning was always true after the timer was started once
  • [bsk] operating with multiple basket views could lead to wrong article images

Breaking changes

  • [core] fixed a typo in multiSelectAutoStartEnabled and multiSelectDeselectAllEnabled of tool.SelectionDefault
  • [eaiws] EAIWS 4.6 or higher is required now
  • [eaiws] OAPActionListItem.action is now optional

4.3.2

Bug fixes

  • [core] disabled texture binding optimization in BabylonJS for android devices to prevent rendering errors

4.3.1

Changes

  • [core] AppDocument.saveToContainer() and saveToZip() do no longer disable the rendering while saving
  • [core] pointer move tolerance now depends on device pixel ratio

4.3.0

New features

  • [core] added settings to Application which contain global settings for the snapping grid
  • [core] added tool.SelectionMenu class which can be used to provide a custom menu for the selected SceneElements
  • [core] added mdl.SceneElement.getSelectableParentElement()
  • [core] added mdl.ModelManager.selectParentSubElement()
  • [core] added mdl.SceneElement.boundingBoxVisible which represents the visible bounds of an object
  • [core] added eventInteractorTriggered to tool.ToolManager
  • [core] added eventMultiSelectModeChanged to tool.SelectionDefault
  • [core] added eventElementClick to tool.SelectionDefault
  • [core] added eventBackgroundClickImmediate to tool.SelectionDefault
  • [core] added option multiSelectAutoStartEnabled to tool.SelectionDefault
  • [core] added option multiSelectDeselectAllEnabled to tool.SelectionDefault
  • [core] added addResourceFromCache() to DocumentOutputContext
  • [core] added Color3 as new property type
  • [utils] added PATCH as available AjaxMethod
  • [utils] added optional pBeforeCallback to async.ajax()
  • [utils] added object.toMap()
  • [utils] added object.shallowEqual()
  • [utils] added dom.loadContentAsBlobUrl()
  • [utils] added dom.submitForm()
  • [utils] added retryCount property to async.ajaxError
  • [utils] added async.Timer()
  • [utils] added async.DelayedTask()

Changes

  • [core] the visible bounding box is used for the selection highlight instead of the complete one
  • [core] the RectangleSelect tool no longer toggles the selection in multi selection mode (it only adds new elements)
  • [cf] reduced number of network requests for OAP interactos by caching the interactor images
  • [pl] placement and snapping logics now operate on the visible element bounds instead of the complete one
  • [pl] improved touch handling for tool.TouchDefault if camera controls are disabled
  • [utils] improved typings of ListenableEvent and AsyncListenableEvent, event parameter may only be undefined if is type supports it
  • [libs] updated to core-js 2.6.5
  • [libs] updated to JSZip 3.2.0

Bug fixes

  • [core] camera orbit inertia animation wasn't stopped when switching camera modes
  • [core] view.CameraControl.zoomToFitMeshes() ignored the pOptions parameter
  • [pl] moving elements didn't work in snapped orthographic views
  • [libs] fixed memory leak in BabylonJS (a custom BabylonJs build is now used based on version 3.3.0)

4.2.0

New features

  • [core] added optional progress handler to prop.MultiPropertyProvider.setPropertyValueUndoable()

Changes

  • [core] prop.MultiPropertyProvider ignores property classes while merging properties (properties with different classes but same key are now identical)
  • [cf] the key of article properties now also contains the property type to increase uniqueness
  • [cf] the key of article property classes now also contains the manfacturer ID and series ID to increase uniqueness
  • [libs] updated to core-js 2.6.1

4.1.0

New features

  • [bsk] added CalculationManager.getTaxSchemeId() and setTaxSchemeId()
  • [bsk] added CalculationManager.getTaxScheme() and getDefaultTaxScheme()
  • [bsk] added CalculationManager.setTaxRate()
  • [bsk] added CalculationManager.resetTaxRate() and resetTaxScheme()
  • [bsk] added ArticleItem.getTaxInformation()
  • [bsk] added UserArticleItem.setTaxInformation()
  • [bsk] added BaseItem.childIndex
  • [bsk] added BaseItem.getPositionNumber()
  • [bsk] added ArticleConfiguration.startMultiConfiguration() which starts configuration of multiple articles
  • [bsk] added Basket.fetchOfmlUpdateStates()
  • [core] added mdl.SceneElement.isDisposed property
  • [eaiws] added BasketService.resetTaxConfiguration()
  • [eaiws] added BasketService.resetTaxScheme()
  • [eaiws] added BasketService.resetTaxRate()
  • [eaiws] added BasketService.setTaxRate()
  • [utils] added dom.loadScript()
  • [utils] added dom.loadStyleSheet()

Changes

  • [bsk] speedup of ArticleConfiguration.start() (if started again for same article) by caching configuration related article data
  • [cf] eventPropertiesChanged is now triggered from ArticleElement.setEaiwsPropertyValue() after the article geometry was updated instead of before

Bug fixes

  • [cf] added missing pBasketItems parameter to ArticleManager.createArticleById()
  • [cf] handling of OAPPropEditAction triggered an unknown item id exception on EAIWS side in some edge cases
  • [cf] some OAP actions didn't get executed during processing of action lists which include user interactions
  • [cf] execution of OAP actions didn't trigger the property changed event in some cases
  • [core] ModelManager.eventModified got triggered if an element not part of the scene was modified
  • [eaiws] progress callback for EaiwsSession.uploadFile() and uploadFileToUrl() wasn't working as intended
  • [eaiws] ItemProperties.positionNumber was declared as boolean instead of string

Breaking changes

  • [bsk] moved ArticleConfiguration from bsk to bsk.cfg namespace
  • [libs] removed js subfolder for each library and moved javascript files to the root of each library
  • [libs] babylon.max.js is no longer part of the W-CF distribution

4.0.0

New features

  • [core] added support for arbitrary up-vector to CameraControl.setTarget() and setDirection()
  • [core] position of rendering.ShadowPlane on Y axis can be changed (see setPlaneYPosition())
  • [core] transparency of rendering.ShadowPlane can be changed (see setTransparency())
  • [core] added MaterialManager.pbrImageProcessing property which gives access to the image processing configuration of PBR materials
  • [core] its now possible to add a custom background to screenshots (see BaseScreenshotOptions.onDrawBackground)
  • [core] added tool.SelectionDefault as a default tool which handles element selection
  • [core] MultiPropertyProvider can also show the union of all properties instead of the intersection
  • [core] added Viewer.forceRenderFrame()
  • [eaiws] added PricingProcedureInfo.getLineTags() and CalculationSheetInfo.getLineTags()
  • [eaiws] added descriptionMode to ArticleProperties and ArticleData
  • [eaiws] added visibleOnly and editableOnly flag to OAPPropEditAction
  • [pl] added basic multi touch default tool (see tool.TouchDefault)
  • [pl] added property groundYPosition to tool.Default
  • [pl] added property automaticInteractorVisibility to tool.Default
  • [pl] move and rotate interactor images now have a white border
  • [bsk] camera setup will be loaded from article images stored inside the .obk
  • [bsk] it possible to reset the article image camera to its defaults (see, ArticleConfiguration.assignArticleImageCamera())
  • [bsk] added ArticleConfiguration.resetView()
  • [bsk] added ArticleConfiguration.getArticleImageCamera()
  • [bsk] added Basket.updateOfmlArticles()
  • [bsk] added Basket.eventOfmlArticleUpdated
  • [bsk] added Basket.projectInfo
  • [bsk] added Basket.generatedImageResolution property to adjust size of server generated images
  • [bsk] added ViewItem.findSetArticle()
  • [bsk] added ViewArticleItem.findMainArticle()
  • [bsk] added CalculationManager.setConditionDescription()
  • [bsk] added CalculationManager.setConditionAmount()
  • [bsk] added CalculationManager.resetConditionAmount()
  • [bsk] added CalculationManager.getGroupCalculation()
  • [bsk] added CalculationManager.addManualCondition()
  • [bsk] added CalculationManager.removeCondition()
  • [bsk] added CalculationManager.setQuantityRelation()
  • [bsk] added CalculationManager.resetQuantityRelation()
  • [bsk] ofml update state can be retrieved from article items
  • [cf] added property cameraFov to ArticleScreenshotOptions
  • [cf] ArticleManager.importFromSession() and importObx() now optionally load articles which do not have a position
  • [utils] added async.Lock.waitWhileLocked()

Changes

  • most static class members start with an uppercase letter now (see breaking changes)
  • unknown is used instead of any in many cases
  • [core] mdl.ModelManager no longer creates default lights as they are not required for PBR materials
  • [core] replaced uncompressed env texture (defaultHDR_256.dds) with a compressed version to reduce file size and in the same time increase the resolution
  • [pl] tool.Default is now derived from core.tool.SelectionDefault
  • [cf] GfjLoader will clamp incoming color values to prevent potential errors
  • [cf] improved mapping of material roughness values
  • [libs] updated to BabylonJS 3.3.0

Breaking changes

  • TypeScript 3.1 or higher is required now
  • [core] removed deprecated material mdl.Material, use mdl.PbrMaterial instead
  • [core] removed translation support from I18nManager
  • [core] renamed io.ZipDocumentContainer.newContainer() into NewContainer()
  • [core] renamed io.ZipDocumentContainer.loadContainer() into LoadContainer()
  • [core] renamed mdl.PbrMaterial.convertToPbrParameters() into ConvertToPbrParameters()
  • [core] renamed mdl.BoundingBox.fromNode() into FromNode()
  • [core] renamed mdl.BoundingBox.fromMesh() into FromMesh()
  • [core] renamed mdl.BoundingBox.fromElements() into FromElements()
  • [core] renamed mdl.io.GltfMesh.importFromUrl() into ImportFromUrl()
  • [core] renamed mdl.io.GltfMesh.import() into Import()
  • [core] renamed mdl.io.GltfMesh.export() into Export()
  • [core] renamed mdl.NodeUserData.fromNode() into FromNode()
  • [core] renamed mdl.NodeUserData.getData() into GetData()
  • [core] renamed mdl.NodeUserData.setData() into SetData()
  • [core] renamed mdl.SceneElement.fromNode() into FromNode()
  • [core] renamed prop.StringProperty.convertValueToString() into ConvertValueToString()
  • [core] renamed prop.BoolProperty.convertValueToBool() into ConvertValueToBool()
  • [core] renamed prop.NumberProperty.convertValueToNumber() into ConvertValueToNumber()
  • [core] renamed tool.SnapLine.fromAxis() into FromAxis()
  • [core] renamed tool.SnapLine.snap() into Snap()
  • [core] renamed tool.SnapPoint.snap() into Snap()
  • [core] renamed view.CameraControl.setMeshCameraModeMask() into SetMeshCameraModeMask()
  • [core] renamed view.CameraControl.getMeshCameraModeMask() into GetMeshCameraModeMask()
  • [core] renamed view.InputState.isMousePointer() into IsMousePointer()
  • [core] renamed view.InputState.isPrimaryMousePointer() into IsPrimaryMousePointer()
  • [cf] renamed ArticleElement.getEaiwsProperty() into GetEaiwsProperty()
  • [cf] moved getOfmlUpdateState() and getKnownOfmlUpdateState from ArticleElement to MainArticleElement
  • [cf] function signature of ArticleManager.importFromSession() and importObx has changed
  • [eaiws] EAIWS 4.4 rc 2 or higher is required now
  • [eaiws] renamed SoapService.logSoapErrors into LogSoapErrors
  • [eaiws] renamed SessionService.getSystemInformation() into GetSystemInformation()
  • [eaiws] renamed SessionService.openSession() into OpenSession()
  • [eaiws] renamed PricingProcedureInfo.createInfo() into CreateInfo()
  • [eaiws] removed CalculationSheetInfo.vat, unitVat and vatAmount because there can be multiple VATs, use CalculationSheetInfo.getLineTags() instead
  • [eaiws] removed additional wrappers for literal types as they are no longer necessary, use literals directly
  • [pl] renamed tool.Default.moveYBelowZeroEnabled to tool.Default.moveYBelowGroundEnabled
  • [libs] removed i18next

Bug fixes

  • [core] rendering.ShadowPlane was rendered incorrectly if the scenes clearColor was changed
  • [core] fixed wrong colors in transparent screenshots (objects had an outline)
  • [core] prevent numerical issues with flat objects (size y = 0) in core.tool.SelectionDefault bounds calulation

3.1.2

Bug fixes

  • [cf] fixed cache handling in gfj loader, already loaded materials were loaded again

3.1.1

changes

  • [core] added an internal lock to prevent saving of the document while its still loading and vice versa

Bug fixes

  • [cf] handling of missing textures wasn't correct for PBR materials

3.1.0

New features

  • [core/cf] non-PBR materials will be automatically converted to PBR materials (set MaterialManager.pbrConversionEnabled false to disable the conversion)
  • [core] added Viewer.antiAliasingQuality property
  • [core] camera FOV can be changed, see CameraControl.setFov() property
  • [pl] element deselection can be disabled for default tool, atleast one element always stays selected (see tool.Default.deselectionEnabled)
  • [pl] added tool.Default.showElementInteractors
  • [bsk] starting an article configuration optionally initializes the camera of a given view
  • [bsk] ArticleConfiguration.assignArticleImageCamera can be used to define the camera which is used for the article image generation
  • [bsk] added Basket.deleteItems()
  • [bsk] added Basket.insertFolder()
  • [bsk] added Basket.insertTextItem()
  • [bsk] added Basket.insertUserArticle()
  • [bsk] added Basket.insertSetArticle()
  • [bsk] added Basket.insertContainerItem()
  • [bsk] added Basket.copyItems()
  • [bsk] added Basket.pasteItems()
  • [bsk] added Basket.moveItems()
  • [bsk] added Basket.importObx()
  • [bsk] added Basket.beginSelectionChange() and Basket.endSelectionChange()
  • [bsk] added Basket.setItemAlternativeState()
  • [bsk] added Basket.convertToUserArticles()
  • [bsk] added Basket.convertToSetArticle()
  • [bsk] added Basket.breakUpSetArticle()
  • [bsk] added pShouldFetchCallback to BaseItem.fetchItemProperties() and BaseItem.fetchCalculations()
  • [bsk] added eventHeaderCalculationChanged to Basket and View
  • [bsk] added ArticleItem.hasIndependentChildren()
  • [bsk] added ArticleItem.getCompositeCalculation()
  • [bsk] added BaseItemManager.waitUntilItemsUpdated()
  • [bsk] added BaseItem.isExcludedFromCalculations()
  • [bsk] added CalculationManager.get/setExchangeRates()
  • [bsk] added support for basket views
  • [cf] added MainArticleElement.getCompositeCalculation()
  • [cf] support RotateNY90 and RotatePY90 OAP interactor symbols
  • [eaiws] added sessionId property to EaiwsSession
  • [eaiws] added support for basket views
  • [eaiws] added plugins.PriceProfileService as wrapper for the SOAP interface of the eaiws PriceProfile plugin
  • [eaiws] added manufacturer, program and distributionRegion to ArticleProperties
  • [eaiws] added BasketService.changeAlternativePositionState()
  • [eaiws] added BasketService.insertUserArticle()
  • [eaiws] added BasketService.convertToUserArticles()
  • [eaiws] added BasketService.removeFromSetArticle()
  • [eaiws] added BasketService.breakUpSetArticle()
  • [utils] the maximum number of concurrent operations can be defined for async.Lock
  • [utils] added string.joinPath()
  • [utils] added string.compare()
  • [utils] added number.toLocaleCurrencyString()

Changes

  • [core] removed special handling of mirrored geometries, this is now done from BabylonJs (results in reduced memory usage)
  • [core] mdl.Material is now marked as deprecated and will be removed in later releases, use mdl.PbrMaterial instead
  • [bsk] article configuration view uses a camera FOV of 30°
  • [bsk] enabled PBR render mode for article images
  • [cf] a fallback OAP interactor symbol will be used if the specified symbol size is not available
  • [cf] updated OAP interactor symbols
  • [cf] a camera FOV of 30° will be used for article screenshots
  • [libs] updated to BabylonJS 3.2.0
  • [libs] updated to core-js 2.5.7
  • [libs] updated to i18next 11.5.0

Breaking changes

  • [core] function signature of AppCallbacks.showPropertyEditor() has changed
  • [bsk] removed Basket.deleteItem(), use Basket.deleteItems() instead
  • [bsk] moved invalidateHeaderCalculation() and getHeaderCalculation() from CalculationManager to Basket
  • [bsk] renamed BasketItemUpdateFlags to ItemUpdateFlags
  • [bsk] EAIWS 4.4 beta 1 or higher is required now
  • [eaiws] BasketItem.getMainArticleId() returns undefined if BasketItem.mainArticleId is undefined
  • [utils] the pErrorMessageCallback of the ajax function now gets the thrown error as first argument
  • [dev_utils] the dev_utils module was removed, the createAxisTrihedron function is now part of the pl module (see utils.planning.createAxisTrihedron())

Bug fixes

  • [core] camera navigation temporarily not working correctly after zoom to fit for orthographic cameras
  • [core] prevent clipping of small objects (<10 cm) after zoom to fit for perspective cameras
  • [bsk] fixed issues regarding header calculation updates
  • [cf] OAP PropEditAction didn't work correctly for multiple properties
  • [eaiws] pItemIds parameter of BasketService.getAllItems() and BasketService.getItemProperties() is now optional
  • [eaiws] SOAP services didn't work if base-url contained a trailing slash
  • [eaiws] wrong handling of Value types in soap requests
  • [utils] parallel execution of AsyncListenableEvent.trigger() is now prevented using async.Lock

3.0.1

New features

  • [pl] moveYBelowZeroEnabled property of default tool can be set to false to prevent moving objects below zero

3.0.0

New features

  • [bsk] new module which is a wrapper for the eaiws basket functionality
  • [core] experimental support for PBR materials
  • [core] WebGL 2.0 is disabled by default, see AppInitOptions.disableWebGL2Support
  • [core] added support for BABYLON.TransformNode
  • [core] CameraControl.zoomToFitElements() and zoomToFitMeshes() now support zoom based on the bounding sphere
  • [core] a minimum pixel based margin can be defined for zoom to fit (see CameraZoomToFitOptions.minMarginPx )
  • [core] added property providers to MultiPropertyProvider
  • [core] added support for horizontal fov mode to camera (BABYLON.Camera.FOVMODE_HORIZONTAL_FIXED)
  • [core] added Application.eventAnimate
  • [core] added Application.theme.fontFamily
  • [core] default camera position and zoom can be changed, see CameraControl.DEFAULT_CAMERA_POSITION and CameraControl.DEFAULT_CAMERA_ORTHO
  • [core] its now possible to draw an overlay on screenshots, see BaseScreenshotOptions.onDrawOverlay
  • [core] added BaseScreenshotOptions.pixelScaleFactor to adjust scaling of certain elements like 2D text
  • [core] added Application.appCallbacks.showActionChoice
  • [core] added orthographic orbit snapping to CameraControl, see CameraControl.orthoOrbitSnappingEnabled
  • [core] added Application.dispose()
  • [cf] added hideMainArticle and visibleSubArticles properties to MainArticleElement to control article visibility
  • [cf] added ArticleManager.eventArticleAdded and eventArticleRemoved and eventArticleInstanceRestored
  • [cf] added ArticleManager.createArticlesById()
  • [cf] added ArticleManager.getArticleById()
  • [cf] added ArticleManager.fatherItemId property
  • [cf] added MainArticleElement.hasSubArticles()
  • [cf] added calculation support
  • [cf] added support for custom article geometry placeholders
  • [cf] added support for sub articles to article geometry placeholders
  • [cf] added support for sub articles which do not have a geometry
  • [cf] sub article highlighting, see MainArticleElement.highlightSubArticles()
  • [cf] bounding box dimensions for articles, see MainArticleElement.showDimensions
  • [cf] PEC import no longer requires an open EAIWS session
  • [cf] PEC import supports loading of camera position from PEC
  • [cf] added support for OAP interactor visibility and action choice
  • [pl] rotation and movement can be enabled/disabled in default tool for each axis
  • [pl] main and sub selection box can be disabled in default tool, see showMainElementSelection and showSubElementSelection
  • [pl] enabled bounding box snapping on walls for move tool
  • [pl] added eventBackgroundClick to default tool
  • [eaiws] added relocateItems() to basket soap interface
  • [eaiws] added getImages() to basket soap interface
  • [eaiws] added getSessionProperty() to session soap interface
  • [eaiws] added set/getProjectSettings() to session soap interface
  • [eaiws] added configureSessionLog() and getSessionLog() to session soap interface
  • [eaiws] added helper classes for calculation handling, see PricingProcedureInfo and CalculationSheetInfo
  • [eaiws] default request timeout can be defined, see SoapService.requestTimeout
  • [eaiws] added support for OAP interactor visibilit and action choicey
  • [utils] added object.Indexable interface
  • [utils] added string.isNotNullOrEmpty()
  • [utils] added newError() and rejectError() helper functions
  • [utils] added AsyncListenableEvent
  • [utils] added async.Lock
  • [utils] string.fromBlob() optionally returns a data-uri instead of a text

Changes

  • whole framework is compiled with strictNullCheck and strictFunctionTypes compiler option enabled (it is recommended that the host application also enables it)
  • [cf] TransformNodes are used now for GFJ-nodes without geometry
  • [libs] updated to BabylonJS 3.1.1
  • [libs] updated to core-js 2.5.4
  • [libs] updated to JSZip 3.1.5
  • [libs] updated to i18next 10.6.0

Breaking changes

  • [room] room is no longer part of the W-CF distribution, it is distributed separately
  • [core] replaced SceneElement.mesh with SceneElement.node
  • [core] replaced SceneElement.getMeshes() with SceneElement.getNodes()
  • [core] replaced SceneElement.cloneMesh() with SceneElement.cloneNode()
  • [core] BABYLON.Node.getChildTransformNodes() should be used instead of BABYLON.Node.getChildMeshes() to ensure correct handling of TransformNodes
  • [core] replaced pMargin parameter of CameraControl.zoomToFitElements() and zoomToFitMeshes() with pOptions parameter
  • [core] replaced CameraControl.dblClickZoomToFitMargin with dblClickZoomToFitOptions property
  • [core] moved Serializable interface from core.io to utils.object namespace
  • [core] moved and renamed core.util.CustomDataMap to utils.GroupedMap
  • [core] removed pImageData parameter from BaseScreenshotOptions.onAfterRender callback
  • [core] signature of Application.appCallbacks.showPropertyEditor has changed
  • [cf] EAIWS 4.3.0 beta 2 or higher is required now
  • [cf] renamed EaiwsManager to ArticleManager
  • [cf] renamed MainArticleElement.cacheItemProperties() to fetchItemProperties()
  • [pl] removed simpleEditMode from default tool, use rotateXEnabled = false and rotateZEnabled = false instead
  • [utils] several functions no longer silently ignore null parameters, an ERR_INVALID_ARGUMENT exception is now thrown
  • [eaiws] removed SoapService.isValid() and SoapService.setSessionId()
  • [eaiws] SessionService.openSession() is now a static member function
  • [eaiws] SessionService.getSystemInformation() is now a static member function

Bug fixes

  • [eaiws] added missing originalItemIds to PasteContainerResult

2.1.1

Breaking changes

  • [cf] path to stored catalog images is now lowercase

Bug fixes

  • documentation failed to build

2.1.0

New features

  • [core] SceneElements can implement own interactors (SceneElement.showInteractors())
  • [core] SceneElements can provide additional undo data for delete and transform commands (SceneElement.saveUndoData())
  • [core] SceneElements can provide a custom bounding box for the selection highlight (SceneElement.getSelectionHighlightBoundingBox())
  • [core] Its now possible to hide meshes for certain camera modes, see view.CameraControl.setMeshCameraModeMask()
  • [core] added tool.InteractorManager.dispose()
  • [core] added I18nManager.lengthUnit and I18nManager.setLengthUnit()
  • [core] I18nManager.translate() now supports fallback keys and interpolation
  • [core] added basic theme support (Application.theme)
  • [core] added application callbacks (Application.appCallbacks)
  • [core] added support for 3d transformed interactors
  • [core] AppModules can abort the document load and save process
  • [core] added support for custom document validation during loading, see (AppDocumentLoadOptions.onValidateDocument)
  • [core] added failed/aborted parameter to eventAfterLoad and eventAfterSave of AppDocument
  • [core] added ModelManager.eventBeginTransformElements and eventEndTransformElements (will be triggered from TransformElements command)
  • [core] Viewer.createScreenshot() optionally returns the image as blob (pAsBlob parameter)
  • [core] GltfMesh.import() and importFromUrl() also support glTF 2.0
  • [core] added mdl.BasicElement
  • [core] added mdl.SceneElement.getSelectableElement()
  • [eaiws] added calculation support to basket soap interface
  • [eaiws] added oap support to basket soap interface
  • [eaiws] added setSessionProperty() to session soap interface
  • [utils] added functions for length unit handling to number namespace
  • [utils] added object.isNullOrEmpty()
  • [pl] DefaultMove tool uses application settings for length feedback
  • [pl] application theme is used for selection bounding box and tool feedback
  • [cf] a placeholder will be shown for articles without geometry
  • [cf] PEC import (io.PecImport)
  • [cf] basic support for user articles
  • [cf] added support for OAP interactors
  • [cf] added ArticleElement.hasGeometry()
  • [cf] added ArticleElement.getKnownOfmlUpdateState()
  • [cf] support selectable flag of sub articles
  • [utils] added trim(), trimLeft(), trimRight(), regExpEscape() and fromBlob() to string utils

Changes

  • [core] rendering.ShadowPlane is only visible in perspective and orthographic views
  • [core] rendering.ShadowPlane ignores objects which are positioned at y = 0 and have zero height (eg. planes)
  • [pl] default tool only selects sub elements if they are selectable
  • [cf] maximum texture size of gfj materials is now 1024 (can be changed with EaiwsManager.setGfjMaxTextureSize())
  • [libs] updated to BabylonJS 3.1.0-alpha
  • [libs] added blueimp-md5 2.10.0
  • [libs] updated to core-js 2.5.1
  • [libs] updated to i18next 9.0.0
  • [libs] updated to JSZip 3.1.4
  • [libs] updated to PEP 0.4.3
  • [libs] updated to qwest 4.5.0

Breaking changes

  • [core] interactores will override the css tranform style of the HTML element, use Interactor.customCssTransform to define additional transforms
  • [core] GltfMesh.export() exports glTF version 2.0 and uses a right handed coordinate system
  • [core] changed document major file version to 2 (loading of version 1 files is supported)
  • [room] reimplemented whole module, replaced polygon based concept with simple wall system based on pCon.planner
  • [cf] blueimp-md5 library is required now
  • [cf] EaiwsManager.importObx() does no longer add the loaded articles to the ModelManager automatically
  • [cf] EAIWS 4.2.0 beta 5 or higher is required now
  • [cf] Parameter of ArticleElement.getArticleData() has changed
  • [cf] moved OfflineContext and GfjLoader to io namespace
  • [cf] requires that stylesheet dist/cf.css is loaded
  • [pl] requires that stylesheet dist/pl.css is loaded

Bug fixes

  • [core] env map was visible even for materials with reflection = 0
  • [core] prop.LengthProperty didn't implement clone()
  • [core] memory leak after cloning a ThickLinesMesh
  • [core] mirrored top and bottom view in Firefox 64bit
  • [core] mirrored shadow plane in Firefox 64bit
  • [core] property choice lists of multi selection contained invalid choices
  • [core] GltfMesh.import() failed if glTF mesh did not had indices
  • [cf] EaiwsManager.synchronizeSession() didn't save article transformations correctly
  • [cf] ArticleElement didn't handle intervals of eaiws properties
  • [cf] GfjLoader used same id for different materials in some cases
  • [cf] OfflineContext returned wrong data in some cases
  • [pl] utils.placeElementsAtFreePosition() didn't consider given position if model was not empty
  • [pl] fixed sub element selection under chrome and some android devices

2.0.0

New features

  • [core] new persistence concept
  • [core] added localization support
  • [core] added mdl.GeometryManager which handles geometry caching
  • [core] added AppDocument for document handling (e.g. load, save)
  • [core] new AppModule system, modules can now register anAppModule at the application
  • [core] reduced texture memory usage by disabling the alpha channel if possible
  • [core] updated to BabylonJS 3.0 alpha
  • [core] added prop.Property.type which returns the property type as enum
  • [core] added ThickLinesMesh to mesh utils
  • [core] added disableWebGL2Support option to AppInitOptions (default: false)
  • [eaiws] added support for catalog resources
  • [cf] added EaiwsManager.importObx() and exportObx()
  • [cf] offline article information
  • [cf] ofml article migration support
  • [pl] changed style of the selection bounding box

Breaking changes

  • [core] TypeScript 2.3 or higher is required now
  • [core] JSZip and i18next as new library dependency
  • [core] document.clear() should be used instead of model.clear() to start a new document/project
  • [core] moved eventBeforeClear and eventAfterClear from model to document
  • [core] moved eventBeforeLoad and eventAfterLoad from model to document
  • [core] moved eventBeforeSave and eventAfterSave from model to document
  • [core] replaced mdl.MaterialManager.getOrCreateTexture() with createTexture() and createResourceTexture()
  • [core] mdl.MaterialManager now operates on mdl.Material instead of BABYLON.StandardMaterial
  • [core] BabylonJs audio engine is disabled by default
  • [room] moved RoomManager from room.mdl to room namespace
  • [cf] EAIWS 4.1.0 or higher is required now
  • [cf] camera settings and scene are no longer saved inside the obk file, they are part of the document now
  • [cf] renamed EaiwsManager.loadFromSession() to importFromSession()
  • [cf] added parameter pSaveArticleTransformations to EaiwsManager.synchronizeSession() and saveToObk()

Bug fixes

  • [core] utils.math.orientationToLine2() returned wrong results
  • [core] double click detection did not work on windows tablets
  • [cf] configuring multiple articles at once created geometrical artifacts
  • [pl] rectangle selection tool wasn't aborted if default tool was stopped
  • [pl] rectangle selection tool selected all elements if the user entered a zero sized area

1.3.0

New features

  • [pl] improved placing logic of utils.planning.placeElementsInViewCenter() and utils.planning.placeElementsAtFreePosition()
  • [pl] snapping grid and placing area can be defined for utils.planning.placeElementsInViewCenter()
  • [pl] rotate interactors of default tool are only shown if they are useful with the current camera viewing direction
  • [core] a navigation area can be defined for view.CameraControl to limit certain camera interactions (e.g. zoom)
  • [core] added view.CameraControl.yawMin and yawMax
  • [core] rendering.ShadowPlane is no longer limited to an 10x10m area, the area size will be updated automatically
  • [core] reduced gpu memory usage of rendering.ShadowPlane by 25% (from 16 MB to 12 MB)
  • [core] improved anti-aliasing performance

Breaking changes

  • [pl] pMaxOriginDistance parameter of utils.planning.placeElementsInViewCenter() got replaced by pOptions parameter
  • [pl] pDesiredPos parameter of utils.planning.placeElementsAtFreePosition() is now of type Vector2 instead of Vector3
  • [cf] pShouldMigrateCallback of EaiwsManager.loadFromSession() will be called for migratable and updatable articles

Bug fixes

  • [cf] fixed wrong item properties after article migration in EaiwsManager.loadFromSession()

1.2.0

New features

  • [utils] added async.ajaxResolvedEvent and async.ajaxRejectedEvent
  • [utils] added some ArrayBuffer utility functions
  • [core] added math.angleDistance() which returns the signed distance between 2 angles
  • [core] added mdl.io.GltfMesh class which provides import and export functionality for glTF meshes
  • [eaiws] added CatalogService.getCatalogPath()

Breaking changes

  • [utils] async.ajax() is now based on qwest instead of jQuery
  • [utils] jQuery is no longer part of the W-CF distribution
  • [core] tool.SnapGrid.size is now of type BABYLON.Vector3 instead of number
  • [cf] removed GltfMeshLoader class, core.mdl.io.GltfMesh can be used instead

Bug fixes

  • [eaiws] "no element found" error in EaiwsSession.uploadFile() and deleteFile() (Firefox)
  • [pl] angle feedback value of rotate tool was sometimes invisible inside Android WebView
  • [core] orbit for orthographic camera wasn't working correctly

1.1.0

New features

  • [utils] added array.unique() which returns the unique entries of a given array
  • [utils] type checking helpers array.isArray(), string.isString(), number.isNumber() and boolean.isBoolean()
  • [core] current view is given as paramater for tool.Interactor.onBeforeUpdateViewPosition callback
  • [core] view.Viewer.onDemandRenderingEnabled which can be used to enable permanent rendering
  • [core] view.Viewer.beginDisableRendering() and view.Viewer.endDisableRendering()
  • [core] mdl.LayerManager.getMeshesOnLayer() which retrieves all meshes for a given layer
  • [core] mdl.BoundingBox.intersectsPoint() and mdl.BoundingBox.intersectsMinMax()
  • [cf] added article migration support to EaiwsManager.loadFromSession()
  • [cf] added event MainArticleElement.eventGeometryChanged which will be triggered inside updateGeometry()
  • [cf] added MainArticleElement.waitUntilGeometryUpdated() which waits for pending geometry updates
  • [build] generate map files for minified js

Breaking changes

  • [core] renamed math.quaternionFromAxis() to math.quaternionFromAxes()
  • [core] view.Viewer.renderingEnabled is now readonly, use view.Viewer.beginDisableRendering() and view.Viewer.endDisableRendering() instead
  • [core] added additional parameter pBorderIntersections to mdl.BoundingBox.intersects() to control the behavior on the border of the bounding box. Use false for behavior from previous version.
  • [core] changed pEpsilon parameter default value of mdl.BoundingBox.intersects() to utils.math.EPSILON. Use 0.0 for default behavior from previous version.

Bug fixes

  • [utils] math.roundTo() returned NaN for very small values
  • [core] fixed "null is not an object" exception in io.stringifyToJson()
  • [core] camera panning and orbit didn't work in some cases if camera was very close to an object
  • [pl] bounding box snapping wasn't working for different sized objects

Generated using TypeDoc