Project

General

Profile

1
/*
2
License: LGPL as per: http://www.gnu.org/copyleft/lesser.html
3
$Id: Abstract.js 2546 2007-01-23 12:07:39Z gjvoosten $
4
*/
5

    
6
// Ensure this object's dependencies are loaded.
7
mapbuilder.loadScript(baseDir+"/widget/WidgetBaseXSL.js");
8

    
9
/**
10
 * Show a layer's metadata
11
 * @constructor
12
 * @base WidgetBaseXSL
13
 * @param widgetNode  The widget's XML object node from the configuration document.
14
 * @param model       The model object that this widget belongs to.
15
 */
16

    
17

    
18
function LayerMetadata(widgetNode, model) {
19
  WidgetBaseXSL.apply(this,new Array(widgetNode, model));
20

    
21
  this.model.setParam("layerMetadata", true);
22
  /**
23
   * Toggles the visibility of a layer's metadata
24
   * @param layerNode Dom element containing the OWS layer 
25
   * @param domNode Pointer the Dom element where the metadata should
26
   *                           be shown
27
   */
28
  this.paint = function(objRef, params) {
29

    
30
    var layerNode = objRef.model.getLayer(params.layerId);
31
    var domNode = document.getElementById(params.domNodeId);
32

    
33
    if (!domNode || !layerNode) {
34
      return;
35
    }
36

    
37
    // If clicked and metadata was visible, hide it and do nothing
38
    if (domNode.style.display && (domNode.style.display != "none") && (domNode.innerHTML != "")) { 
39
      domNode.style.display = "none";
40
      return false;
41
    }
42

    
43
    // add the layerNode as a parameter to the XSL
44
    objRef.stylesheet.setParameter("layerNode", layerNode);
45

    
46
    // create meta HTML
47
    var metadataHtml = objRef.stylesheet.transformNodeToString(objRef.model.doc);
48

    
49
    // insert the metadata HTML in the designated Dom Element 
50
    domNode.innerHTML = metadataHtml;
51

    
52
    // make it visible 
53
    domNode.style.display = "block";
54

    
55
    // debug info. TBD: remove
56
    //console.info((new XMLSerializer()).serializeToString(layerNode));
57

    
58
  }
59
  this.model.addListener("layerMetadata", this.paint, this);
60

    
61
}
62

    
63

    
(5-5/19)