Skip to content
Permalink
Browse files

Geomap: allow geocoder and AOI widgets to be loaded independently. Fi…

…xes issue #6207.
  • Loading branch information...
jvanulde committed Dec 17, 2014
1 parent 3a897ab commit 00ebd970d29117e0f9434bf5763de3f524e4b1a0
Showing with 86 additions and 89 deletions.
  1. +83 −86 src/plugins/deps/geomap-lib.js
  2. +2 −2 src/plugins/geomap/demo/client_functions.js
  3. +1 −1 src/plugins/geomap/geomap-en.hbs
@@ -14,7 +14,6 @@ var componentName = "wb-geomap",

// timeout for overlay loading in milliseconds
overlayTimeout = 2000,
uniqueId = 0,
colourIndex = 0,
mapArray = [],
selectedFeature, geomap, i18n, i18nText,
@@ -138,7 +137,6 @@ var componentName = "wb-geomap",
proj4.defs( "EPSG:3978", "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs");

// Set the Geomap object
uniqueId += 1;
geomap = setGeomapObject( $elm );

// Load configuration file
@@ -172,7 +170,6 @@ var componentName = "wb-geomap",
*/
setGeomapObject = function( $elm ) {
var geomap = {
uniqueId: uniqueId,
mapid: $elm.attr( "id" ),
map: null,
selectControl: null,
@@ -186,9 +183,9 @@ var componentName = "wb-geomap",
},
$elmMap = $elm.find( ".wb-geomap-map" );

geomap.gmap = $elmMap.attr( "id", "geomap-map-" + uniqueId ).height( $elmMap.width() * 0.8 );
geomap.glegend = $elm.find( ".wb-geomap-legend" ).attr( "id", "geomap-legend-" + uniqueId );
geomap.glayers = $elm.find( ".wb-geomap-layers" ).attr( "id", "geomap-layers-" + uniqueId );
geomap.gmap = $elmMap.attr( "id", "geomap-map-" + geomap.mapid ).height( $elmMap.width() * 0.8 );
geomap.glegend = $elm.find( ".wb-geomap-legend" ).attr( "id", "geomap-legend-" + geomap.mapid );
geomap.glayers = $elm.find( ".wb-geomap-layers" ).attr( "id", "geomap-layers-" + geomap.mapid );

return geomap;
},
@@ -402,14 +399,14 @@ var componentName = "wb-geomap",
$tabs
.attr({
"class": "wb-tabs auto-height-none",
id: "geomap-tabs-" + uniqueId
id: "geomap-tabs-" + geomap.mapid
});

// User hasn't specified where they want the tabs
} else {
geomap
.glayers
.prepend( "<div id='geomap-tabs-" + uniqueId +
.prepend( "<div id='geomap-tabs-" + geomap.mapid +
"' class='wb-geomap-tabs wb-tabs auto-height-none' style='width: " +
geomap.glayers.width() + "px;'>" );
}
@@ -1795,7 +1792,7 @@ var componentName = "wb-geomap",
addPanZoom( geomap );

$mapDiv.before(
"<details id='geomap-details-" + geomap.uniqueId +
"<details id='geomap-details-" + geomap.id +
"' class='wb-geomap-detail' style='width:" +
( $mapDiv.width() - 10 ) + "px;'><summary>" +
i18nText.accessTitle + "</summary><p>" + i18nText.access +
@@ -1922,12 +1919,12 @@ var componentName = "wb-geomap",
// Add the geocoder widget
createGeocoderWidget( geomap );

if ( opts.useAOI ) {
}

// Add the AOI widget
createAOIWidget( geomap );
if ( opts.useAOI ) {

}
// Add the AOI widget
createAOIWidget( geomap );

}

@@ -1979,91 +1976,91 @@ var componentName = "wb-geomap",
geomap.locLayer,
OpenLayers.Handler.RegularPolygon, {
handlerOptions: {
sides: 4,
irregular: true
},
sides: 4,
irregular: true
},
eventListeners: {
featureadded: function( e ) {
var projLatLon = new OpenLayers.Projection( "EPSG:4326" ),
projMap = geomap.map.getProjectionObject(),
bnds = e.feature.geometry.getBounds(),
bndsLL = bnds.transform( projMap, projLatLon );

$( "#geomap-aoi-extent-" + geomap.uniqueId ).val( bnds.toString() );
$( "#geomap-aoi-extent-lonlat-" + geomap.uniqueId ).val( bndsLL.toString() );
$( "#geomap-aoi-minx-" + geomap.uniqueId ).val( bndsLL.toArray()[ 0 ].toFixed( 6 ) );
$( "#geomap-aoi-miny-" + geomap.uniqueId ).val( bndsLL.toArray()[ 1 ].toFixed( 6 ) );
$( "#geomap-aoi-maxx-" + geomap.uniqueId ).val( bndsLL.toArray()[ 2 ].toFixed( 6 ) );
$( "#geomap-aoi-maxy-" + geomap.uniqueId ).val( bndsLL.toArray()[ 3 ].toFixed( 6 ) );
$( "#geomap-aoi-extent-" + geomap.mapid ).val( bnds.toString() );
$( "#geomap-aoi-extent-lonlat-" + geomap.mapid ).val( bndsLL.toString() );
$( "#geomap-aoi-minx-" + geomap.mapid ).val( bndsLL.toArray()[ 0 ].toFixed( 6 ) );
$( "#geomap-aoi-miny-" + geomap.mapid ).val( bndsLL.toArray()[ 1 ].toFixed( 6 ) );
$( "#geomap-aoi-maxx-" + geomap.mapid ).val( bndsLL.toArray()[ 2 ].toFixed( 6 ) );
$( "#geomap-aoi-maxy-" + geomap.mapid ).val( bndsLL.toArray()[ 3 ].toFixed( 6 ) );

$( "#geomap-aoi-btn-draw-" + geomap.uniqueId ).click();
$( "#geomap-aoi-btn-draw-" + geomap.mapid ).click();
}
}
}
);

geomap.map.addControl( geomap.drawControl );

geomap.gmap.before( "<div class='geomap-aoi panel panel-default'><div id='geomap-aoi-" + geomap.uniqueId + "' class='panel-body'></div></div>" );
geomap.gmap.before( "<div class='geomap-aoi panel panel-default'><div id='geomap-aoi-" + geomap.mapid + "' class='panel-body'></div></div>" );

var mapDiv = $( "#geomap-map-" + geomap.uniqueId );
var mapDiv = $( "#geomap-map-" + geomap.mapid );

mapDiv.append( "<button id='geomap-aoi-toggle-mode-draw-" + geomap.uniqueId +
mapDiv.append( "<button id='geomap-aoi-toggle-mode-draw-" + geomap.mapid +
"' href='#' class='btn btn-sm geomap-geoloc-aoi-btn' title='" + i18nText.aoiBtnDraw +
"'><i class='glyphicon glyphicon-edit'></i><span class='wb-inv'> " +
i18nText.aoiBtnDraw + "</span></button>" );

$( "#geomap-aoi-" + geomap.uniqueId ).parent().hide();
$( "#geomap-aoi-" + geomap.mapid ).parent().hide();

$( "#geomap-aoi-" + geomap.uniqueId ).append(
"<fieldset id='form-aoi-" + geomap.uniqueId + "'>" +
$( "#geomap-aoi-" + geomap.mapid ).append(
"<fieldset id='form-aoi-" + geomap.mapid + "'>" +
"<legend tabindex='-1'>" + i18nText.aoiInstructions + "</legend>" +
"<div class='row'>" +
"<div class='col-md-2'>" +
"<label for='geomap-aoi-maxy-" + geomap.uniqueId + "' class='input-sm control-label wb-inv'>" + i18nText.aoiNorth + "</label>" +
"<label for='geomap-aoi-maxy-" + geomap.mapid + "' class='wb-inv'>" + i18nText.aoiNorth + "</label>" +
"<div class='input-group input-group-sm'>" +
"<span class='input-group-addon'>" + i18nText.aoiNorth.charAt( 0 ) + "</span>" +
"<input type='number' id='geomap-aoi-maxy-" + geomap.uniqueId + "' placeholder='90' class='form-control input-sm' min='-90' max='90' step='0.000001'/> " +
"<input type='number' id='geomap-aoi-maxy-" + geomap.mapid + "' placeholder='90' class='form-control input-sm' min='-90' max='90' step='0.000001'/> " +
"</div>" +
"</div>" +
"<div class='col-md-2'>" +
"<label for='geomap-aoi-maxx-" + geomap.uniqueId + "' class='input-sm control-label wb-inv'>" + i18nText.aoiEast + "</label>" +
"<label for='geomap-aoi-maxx-" + geomap.mapid + "' class='wb-inv'>" + i18nText.aoiEast + "</label>" +
"<div class='input-group input-group-sm'>" +
"<span class='input-group-addon'>" + i18nText.aoiEast.charAt( 0 ) + "</span>" +
"<input type='number' id='geomap-aoi-maxx-" + geomap.uniqueId + "' placeholder='180' class='form-control input-sm' min='-180' max='180' step='0.000001'/> " +
"<input type='number' id='geomap-aoi-maxx-" + geomap.mapid + "' placeholder='180' class='form-control input-sm' min='-180' max='180' step='0.000001'/> " +
"</div>" +
"</div>" +
"<div class='col-md-2'>" +
"<label for='geomap-aoi-miny-" + geomap.uniqueId + "' class='input-sm control-label wb-inv'>" + i18nText.aoiSouth + "</label>" +
"<label for='geomap-aoi-miny-" + geomap.mapid + "' class='wb-inv'>" + i18nText.aoiSouth + "</label>" +
"<div class='input-group input-group-sm'>" +
"<span class='input-group-addon'>" + i18nText.aoiSouth.charAt( 0 ) + "</span>" +
"<input type='number' id='geomap-aoi-miny-" + geomap.uniqueId + "' placeholder='-90' class='form-control input-sm' min='-90' max='90' step='0.000001'/> " +
"<input type='number' id='geomap-aoi-miny-" + geomap.mapid + "' placeholder='-90' class='form-control input-sm' min='-90' max='90' step='0.000001'/> " +
"</div>" +
"</div>" +
"<div class='col-md-2'>" +
"<label for='geomap-aoi-minx-" + geomap.uniqueId + "' class='input-sm control-label wb-inv'>" + i18nText.aoiWest + "</label>" +
"<label for='geomap-aoi-minx-" + geomap.mapid + "' class='wb-inv'>" + i18nText.aoiWest + "</label>" +
"<div class='input-group input-group-sm'>" +
"<span class='input-group-addon'>" + i18nText.aoiWest.charAt( 0 ) + "</span>" +
"<input type='number' id='geomap-aoi-minx-" + geomap.uniqueId + "' placeholder='-180' class='form-control input-sm' min='-180' max='180' step='0.000001'/> " +
"<input type='number' id='geomap-aoi-minx-" + geomap.mapid + "' placeholder='-180' class='form-control input-sm' min='-180' max='180' step='0.000001'/> " +
"</div>" +
"</div>" +
"<div class='col-md-4'>" +
"<button class='btn btn-default btn-sm' id='geomap-aoi-btn-draw-" + geomap.uniqueId + "'>" + i18nText.aoiBtnDraw + "</button> " +
"<button class='btn btn-default btn-sm' id='geomap-aoi-btn-clear-" + geomap.uniqueId + "'>" + i18nText.aoiBtnClear + "</button> " +
"<button class='btn btn-default btn-sm' id='geomap-aoi-btn-draw-" + geomap.mapid + "'>" + i18nText.aoiBtnDraw + "</button> " +
"<button class='btn btn-default btn-sm' id='geomap-aoi-btn-clear-" + geomap.mapid + "'>" + i18nText.aoiBtnClear + "</button> " +
"</div>" +
"</div>" +
"<input type='hidden' id='geomap-aoi-extent-" + geomap.uniqueId + "'/>" +
"<input type='hidden' id='geomap-aoi-extent-lonlat-" + geomap.uniqueId + "'/>" +
"<input type='hidden' id='geomap-aoi-extent-" + geomap.mapid + "'/>" +
"<input type='hidden' id='geomap-aoi-extent-lonlat-" + geomap.mapid + "'/>" +
"</fieldset>" +
"</div>" +
"<div class='clear'></div>" );

$document.on( "click", "#geomap-aoi-toggle-mode-draw-" + geomap.uniqueId, function( evt ) {
$document.on( "click", "#geomap-aoi-toggle-mode-draw-" + geomap.mapid, function( evt ) {
evt.preventDefault();

var drawFeature = geomap.map.getControlsByClass( "OpenLayers.Control.DrawFeature" )[ 0 ],
active = drawFeature.active,
$aoiElm = $( "#geomap-aoi-" + geomap.uniqueId );
$aoiElm = $( "#geomap-aoi-" + geomap.mapid );

if ( active ) {
drawFeature.deactivate();
@@ -2080,23 +2077,23 @@ var componentName = "wb-geomap",
geomap.map.updateSize();
});

$document.on( "click", "#geomap-aoi-btn-draw-" + geomap.uniqueId, function( evt ) {
$document.on( "click", "#geomap-aoi-btn-draw-" + geomap.mapid, function( evt ) {

evt.preventDefault();

$( "#geomap-aoi-extent-" + geomap.uniqueId ).val( "" );
$( "#geomap-aoi-extent-lonlat-" + geomap.uniqueId ).val( "" );
$( "#geomap-aoi-minx-" + geomap.uniqueId ).parent().removeClass( "has-error" );
$( "#geomap-aoi-maxx-" + geomap.uniqueId ).parent().removeClass( "has-error" );
$( "#geomap-aoi-maxy-" + geomap.uniqueId ).parent().removeClass( "has-error" );
$( "#geomap-aoi-miny-" + geomap.uniqueId ).parent().removeClass( "has-error" );
$( "#geomap-aoi-extent-" + geomap.mapid ).val( "" );
$( "#geomap-aoi-extent-lonlat-" + geomap.mapid ).val( "" );
$( "#geomap-aoi-minx-" + geomap.mapid ).parent().removeClass( "has-error" );
$( "#geomap-aoi-maxx-" + geomap.mapid ).parent().removeClass( "has-error" );
$( "#geomap-aoi-maxy-" + geomap.mapid ).parent().removeClass( "has-error" );
$( "#geomap-aoi-miny-" + geomap.mapid ).parent().removeClass( "has-error" );

geomap.locLayer.removeAllFeatures();

var left = parseFloat( $( "#geomap-aoi-minx-" + geomap.uniqueId ).val() ),
bottom = parseFloat( $( "#geomap-aoi-miny-" + geomap.uniqueId ).val() ),
right = parseFloat( $( "#geomap-aoi-maxx-" + geomap.uniqueId ).val() ),
top = parseFloat( $( "#geomap-aoi-maxy-" + geomap.uniqueId ).val() ),
var left = parseFloat( $( "#geomap-aoi-minx-" + geomap.mapid ).val() ),
bottom = parseFloat( $( "#geomap-aoi-miny-" + geomap.mapid ).val() ),
right = parseFloat( $( "#geomap-aoi-maxx-" + geomap.mapid ).val() ),
top = parseFloat( $( "#geomap-aoi-maxy-" + geomap.mapid ).val() ),
isValid = true,
bnds,
ring,
@@ -2107,22 +2104,22 @@ var componentName = "wb-geomap",
feat;

if ( !left || left < -180 || left > 180 ) {
$( "#geomap-aoi-minx-" + geomap.uniqueId ).parent().addClass( "has-error" );
$( "#geomap-aoi-minx-" + geomap.mapid ).parent().addClass( "has-error" );
isValid = false;
}

if ( !right || right < -180 || right > 180 ) {
$( "#geomap-aoi-maxx-" + geomap.uniqueId ).parent().addClass( "has-error" );
$( "#geomap-aoi-maxx-" + geomap.mapid ).parent().addClass( "has-error" );
isValid = false;
}

if ( !top || top < -90 || top > 90) {
$( "#geomap-aoi-maxy-" + geomap.uniqueId ).parent().addClass( "has-error" );
$( "#geomap-aoi-maxy-" + geomap.mapid ).parent().addClass( "has-error" );
isValid = false;
}

if ( !bottom || bottom < -90 || bottom > 90 ) {
$( "#geomap-aoi-miny-" + geomap.uniqueId ).parent().addClass( "has-error" );
$( "#geomap-aoi-miny-" + geomap.mapid ).parent().addClass( "has-error" );
isValid = false;
}

@@ -2142,41 +2139,41 @@ var componentName = "wb-geomap",

geomap.map.zoomToExtent( geomap.locLayer.getDataExtent() );

$( "#geomap-aoi-extent-" + geomap.uniqueId ).val( geomProj.getBounds().toBBOX() ).trigger( "change" );
$( "#geomap-aoi-extent-lonlat-" + geomap.uniqueId ).val( left + ", " + bottom + ", " + right + ", " + top ).trigger( "change" );
$( "#geomap-aoi-extent-" + geomap.mapid ).val( geomProj.getBounds().toBBOX() ).trigger( "change" );
$( "#geomap-aoi-extent-lonlat-" + geomap.mapid ).val( left + ", " + bottom + ", " + right + ", " + top ).trigger( "change" );

} );

$document.on( "click", "#geomap-aoi-btn-clear-" + geomap.uniqueId, function( evt ) {
$document.on( "click", "#geomap-aoi-btn-clear-" + geomap.mapid, function( evt ) {
evt.preventDefault();
$( "#geomap-aoi-extent-" + geomap.uniqueId ).val( "" );
$( "#geomap-aoi-extent-lonlat-" + geomap.uniqueId ).val( "" );
$( "#geomap-aoi-minx-" + geomap.uniqueId ).val( "" ).parent().removeClass( "has-error" );
$( "#geomap-aoi-miny-" + geomap.uniqueId ).val( "" ).parent().removeClass( "has-error" );
$( "#geomap-aoi-maxx-" + geomap.uniqueId ).val( "" ).parent().removeClass( "has-error" );
$( "#geomap-aoi-maxy-" + geomap.uniqueId ).val( "" ).parent().removeClass( "has-error" );
$( "#geomap-aoi-extent-" + geomap.mapid ).val( "" );
$( "#geomap-aoi-extent-lonlat-" + geomap.mapid ).val( "" );
$( "#geomap-aoi-minx-" + geomap.mapid ).val( "" ).parent().removeClass( "has-error" );
$( "#geomap-aoi-miny-" + geomap.mapid ).val( "" ).parent().removeClass( "has-error" );
$( "#geomap-aoi-maxx-" + geomap.mapid ).val( "" ).parent().removeClass( "has-error" );
$( "#geomap-aoi-maxy-" + geomap.mapid ).val( "" ).parent().removeClass( "has-error" );

geomap.locLayer.removeAllFeatures();
});
},

createGeocoderWidget = function( geomap ) {

var mapDiv = $("#geomap-map-" + geomap.uniqueId),
var mapDiv = $("#geomap-map-" + geomap.mapid),
xhr,
timer;

mapDiv.append(
"<div class='geomap-geoloc form-inline'>" +
"<label for='wb-geomap-geocode-search-" + geomap.uniqueId + "' class='wb-inv'>" + i18nText.geoCoderLabel + "</label>" +
"<input type='text' class='form-control input-sm opct-90 pull-right' name='wb-geomap-geocode-search-" + geomap.uniqueId + "' id='wb-geomap-geocode-search-" + geomap.uniqueId + "' list='wb-geomap-geocode-results-" + geomap.uniqueId + "' autocomplete='off' placeholder='" + i18nText.geoCoderPlaceholder + "' />" +
"<datalist id='wb-geomap-geocode-results-" + geomap.uniqueId + "'></datalist>" +
"<label for='wb-geomap-geocode-search-" + geomap.mapid + "' class='wb-inv'>" + i18nText.geoCoderLabel + "</label>" +
"<input type='text' class='form-control input-sm opct-90 pull-right' name='wb-geomap-geocode-search-" + geomap.mapid + "' id='wb-geomap-geocode-search-" + geomap.mapid + "' list='wb-geomap-geocode-results-" + geomap.mapid + "' autocomplete='off' placeholder='" + i18nText.geoCoderPlaceholder + "' />" +
"<datalist id='wb-geomap-geocode-results-" + geomap.mapid + "'></datalist>" +
"</div>"
);

$( "#wb-geomap-geocode-search-" + geomap.uniqueId ).trigger( "wb-init.wb-datalist" );
$( "#wb-geomap-geocode-search-" + geomap.mapid ).trigger( "wb-init.wb-datalist" );

$document.on( "keypress", "#wb-geomap-geocode-search-" + geomap.uniqueId, function( evt ) {
$document.on( "keypress", "#wb-geomap-geocode-search-" + geomap.mapid, function( evt ) {

if ( evt.keyCode !== 13 ) {
return;
@@ -2200,21 +2197,21 @@ var componentName = "wb-geomap",

geomap.locLayer.destroyFeatures();

val = $("#wb-geomap-geocode-search-" + geomap.uniqueId ).val();
val = $("#wb-geomap-geocode-search-" + geomap.mapid ).val();

if ( !val ) {
$("#wb-geomap-geocode-search-" + geomap.uniqueId ).parent().addClass( "has-error" );
$("#wb-geomap-geocode-search-" + geomap.mapid ).parent().addClass( "has-error" );
setTimeout( function() {
$("#wb-geomap-geocode-search-" + geomap.uniqueId ).parent().removeClass( "has-error" );
$("#wb-geomap-geocode-search-" + geomap.mapid ).parent().removeClass( "has-error" );
}, 5000 );
return;
}

bbox = $( "#wb-geomap-geocode-results-" + geomap.uniqueId + " option" ).filter( function() {
bbox = $( "#wb-geomap-geocode-results-" + geomap.mapid + " option" ).filter( function() {
return this.value === val;
}).data("bbox");

ll = $( "#wb-geomap-geocode-results-" + geomap.uniqueId + " option" ).filter(function() {
ll = $( "#wb-geomap-geocode-results-" + geomap.mapid + " option" ).filter(function() {
return this.value === val;
} ).data( "lat-lon" );

@@ -2244,9 +2241,9 @@ var componentName = "wb-geomap",

});

$document.on( "keyup", "#wb-geomap-geocode-search-" + geomap.uniqueId, function( evt ) {
$document.on( "keyup", "#wb-geomap-geocode-search-" + geomap.mapid, function( evt ) {

var $dataList = $("<datalist id='wb-geomap-geocode-results-" + geomap.uniqueId + "'></datalist>"), //$("#wb-geomap-geocode-results-" + geomap.uniqueId),
var $dataList = $("<datalist id='wb-geomap-geocode-results-" + geomap.mapid + "'></datalist>"), //$("#wb-geomap-geocode-results-" + geomap.mapid),
val,
bnd,
ll,
@@ -2300,14 +2297,14 @@ var componentName = "wb-geomap",
}

// remove the data list and plugin elements
$( "#wb-geomap-geocode-search-" + geomap.uniqueId ).removeClass( "wb-datalist-inited" );
$( "#wb-geomap-geocode-results-" + geomap.uniqueId ).remove();
$( "#wb-al-wb-geomap-geocode-search-" + geomap.uniqueId ).remove();
$( "#wb-al-wb-geomap-geocode-search-" + geomap.uniqueId + "-src" ).remove();
$( "#wb-geomap-geocode-search-" + geomap.mapid ).removeClass( "wb-datalist-inited" );
$( "#wb-geomap-geocode-results-" + geomap.mapid ).remove();
$( "#wb-al-wb-geomap-geocode-search-" + geomap.mapid ).remove();
$( "#wb-al-wb-geomap-geocode-search-" + geomap.mapid + "-src" ).remove();

// add the datalist and initialize the plugin
$( "#wb-geomap-geocode-search-" + geomap.uniqueId ).after( $dataList );
$( "#wb-geomap-geocode-search-" + geomap.uniqueId ).trigger( "wb-init.wb-datalist" );
$( "#wb-geomap-geocode-search-" + geomap.mapid ).after( $dataList );
$( "#wb-geomap-geocode-search-" + geomap.mapid ).trigger( "wb-init.wb-datalist" );

}, "jsonp" );
}, 500 );
@@ -28,8 +28,8 @@ $document.on( "wb-ready.wb-geomap", "#sample_map", function( event, map ) {

// Get the sample_map to use in zoomFeature function
mapSample = map;
var $aoiExtent = $( "#geomap-aoi-extent-" + mapSample.uniqueId ),
$aoiExtentLonLat = $( "#geomap-aoi-extent-lonlat-" + mapSample.uniqueId );
var $aoiExtent = $( "#geomap-aoi-extent-" + mapSample.id ),
$aoiExtentLonLat = $( "#geomap-aoi-extent-lonlat-" + mapSample.id );

if ( $aoiExtent ) {

Oops, something went wrong.

0 comments on commit 00ebd97

Please sign in to comment.
You can’t perform that action at this time.