API Docs for: 2.0.0
Show:

Label Class

Extends Position
Module: labelling
Parent Module: BIMSURFER

A Label is a user-defined HTML element that floats over a 3D position within a Viewer.

Overview

  • When configured with an Object, a Label will always track its Object position, offset by the vector indicated in Label/pos:property.
  • For debugging purposes, an Object has its own built-in Label, which can be shown by setting the Object label property true.

Example

// Create a Viewer
var viewer = new BIMSURFER.Viewer({ element: "myDiv" });

// Create a Camera
var camera = new BIMSURFER.Camera(viewer, {
       eye: [20, 15, -20],
       look: [0,-10,0]
   });

// Spin the camera
viewer.on("tick", function () {
       camera.rotateEyeY(0.2);
   });

// Create a CameraControl so we can move the Camera
var cameraControl = new BIMSURFER.CameraControl(viewer, {
       camera: camera
   });

// Create an AmbientLight
var ambientLight = new BIMSURFER.AmbientLight(viewer, {
       color: [0.7, 0.7, 0.7]
   });

// Create a DirLight
var dirLight1 = new BIMSURFER.DirLight(viewer, {
       color: [0.6, 0.9, 0.9],
       dir: [1.0, 0.0, 0.0],
       space: "view"
   });

// Create a DirLight
var dirLight2 = new BIMSURFER.DirLight(viewer, {
       color: [0.6, 0.9, 0.9],
       dir: [-0.5, 0.0, -1.0],
       space: "view"
   });

// Create a BoxGeometry
var geometry = new BIMSURFER.BoxGeometry(viewer, {
       id: "myGeometry"
   });

// Create some Objects
// Share the BoxGeometry among them
// Activate their debug Labels

var object1 = new BIMSURFER.Object(viewer, {
       id: "object1",
       type: "IfcRoof",
       geometries: [ geometry ],
       matrix: BIMSURFER.math.translationMat4v([-8, 0, -8])
   });

var object2 = new BIMSURFER.Object(viewer, {
       id: "object2",
       type: "IfcDistributionFlowElement",
       geometries: [ geometry ],
       matrix: BIMSURFER.math.translationMat4v([8, 0, -8])
   });

var object3 = new BIMSURFER.Object(viewer, {
       id: "object3",
       type: "IfcRailing",
       geometries: [ geometry ],
       matrix: BIMSURFER.math.translationMat4v([-8, 0, 8])
   });

var object4 = new BIMSURFER.Object(viewer, {
       id: "object4",
       type: "IfcRoof",
       geometries: [ geometry ],
       matrix: BIMSURFER.math.translationMat4v([8, 0, 8])
   });

// Create some Labels on two of the Objects
// Each Label displays a snippet of HTML and is positioned relative to its Object's origin

var label1 = new BIMSURFER.Label(viewer, {
       object: object1,
       text: "<b>Label on Object 'object1'</b><br><br><iframe width='320' height='200' " +
           "src='https://www.youtube.com/embed/oTONvRtlW44' frameborder='0' allowfullscreen></iframe>",
       pos: [0, 2, 0] // Offset from Object's local Model-space origin
   });

var label2 = new BIMSURFER.Label(viewer, {
       object: object4,
       text: "<b>First Label on Object 'object2'</b><br>",
       pos: [0, 0, 0] // Offset from Object's local Model-space origin
   });

var label3 = new BIMSURFER.Label(viewer, {
       object: object4,
       text: "<b>Second label on Object 'object2'</b><br>",
       pos: [0, -2, 0] // Offset from Object's local Model-space origin
   });

Constructor

Label

(
  • [viewer]
  • [cfg]
)

Parameters:

  • [viewer] Viewer optional

    Parent Viewer.

  • [cfg] optional

    Configs

    • [id] String optional

      Optional ID, unique among all components in the parent viewer, generated automatically when omitted.

    • [meta] String:Object optional

      Optional map of user-defined metadata to attach to this Label.

    • [object] Object optional

      The Object to attach this Label to.

    • [text] String optional

      Text to insert into this Label.

    • [pos] Array of Number optional

      Label's 3D offset from the Object origin.

    • [matrix=[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]] Array of Number optional

      Transform matrix - a one-dimensional, sixteen element array of elements, an identity matrix by default.

Methods

destroy

()

Destroys this component.

Removes this Component from its Viewer.

Fires a destroyed event on this Component.

error

(
  • message
)

Logs an error for this component to the JavaScript console.

The console message will have this format: [ERROR] <component id>: <message>

Parameters:

  • message String

    The message to log

fire

(
  • event
  • value
  • [forget=false]
)

Fires an event on this component.

Notifies existing subscribers to the event, retains the event to give to any subsequent notifications on that location as they are made.

Parameters:

  • event String

    The event type name

  • value Object

    The event

  • [forget=false] Boolean optional

    When true, does not retain for subsequent subscribers

log

(
  • message
)

Logs a console debugging message for this component.

The console message will have this format: [LOG] <component id>: <message>

Parameters:

  • message String

    The message to log

off

(
  • handle
)

Cancels an event subscription that was previously made with on or once.

Parameters:

  • handle String

    Subscription handle

on

(
  • event
  • callback
  • [scope=this]
)
String

Subscribes to an event on this component.

The callback is be called with this component as scope.

Parameters:

  • event String

    Publication event

  • callback Function

    Called when fresh data is available at the event

  • [scope=this] Object optional

    Scope for the callback

Returns:

String:

Handle to the subscription, which may be used to unsubscribe with {@link #off}.

once

(
  • event
  • callback
  • [scope=this]
)

Subscribes to the next occurrence of the given event, then un-subscribes as soon as the event is handled.

Parameters:

  • event String

    Data event to listen to

  • callback Function(data)

    Called when fresh data is available at the event

  • [scope=this] Object optional

    Scope for the callback

warn

(
  • message
)

Logs a warning for this component to the JavaScript console.

The console message will have this format: [WARN] <component id>: <message>

Parameters:

  • message String

    The message to log

Properties

active

Boolean

Flag which indicates whether this Label is active or not.

Fires an active event on change.

canvasPos

Array of Number final

This Position's 2D coordinates within the Canvas coordinate system.

className

String final

Inherited from Component but overwritten in src/viewer/labelling/label.js:142

JavaScript class name for this Component.

destroyed

Boolean

True as soon as this Component has been destroyed

id

String final

Unique ID for this Component within its parent Viewer.

Items in this map

Unknown

matrix

Array of Number

This Positions's 4x4 modelling transformation matrix.

Default: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]

metadata

Object

Metadata on this component.

object

BIMSURFER.Object final

This Label's Object.

Can be undefined.

pos

Array of Number

The Position's 3D coordinates within its local Model coordinate system, ie. before transformation by the Position's matrix.

Default: [0,0,0]

projPos

Array of Number final

This Position's 3D homogeneous coordinates within the Projection coordinate system, ie. after transformation by the Viewer's projection matrix.

text

String

Text within this Label.

Fires an text event on change.

viewer

Viewer final

The Viewer that contains this Component.

viewPos

Array of Number final

This Position's 3D coordinates within the View coordinate system, ie. after transformation by the Viewer's view matrix and before transformation by the Viewer's projection matrix.

worldPos

Array of Number final

This Position's 3D coordinates within the World coordinate system, ie. after transformation by the Position's matrix and before transformation by Viewer's viewing matrix.

Default: [0,0,0]

Events

active

Fired whenever this Label's active property changes.

Event Payload:

  • value Object

    The property's new value

destroyed

Fired when this Component is destroyed.

text

Fired whenever this Label's text property changes.

Event Payload:

  • value Object

    The property's new value