73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
BR.RoutingOptions = BR.Control.extend({
|
|
options: {
|
|
heading: 'Options',
|
|
divId: 'route_options'
|
|
},
|
|
|
|
onAdd: function (map) {
|
|
L.DomUtil.get('profile').onchange = this._getChangeHandler();
|
|
L.DomUtil.get('alternative').onchange = this._getChangeHandler();
|
|
|
|
return BR.Control.prototype.onAdd.call(this, map);
|
|
},
|
|
|
|
getOptions: function() {
|
|
return {
|
|
profile: L.DomUtil.get('profile').value,
|
|
alternative: L.DomUtil.get('alternative').value
|
|
};
|
|
},
|
|
|
|
setOptions: function(options) {
|
|
var select,
|
|
profile = options.profile;
|
|
|
|
if (profile) {
|
|
select = L.DomUtil.get('profile');
|
|
select.value = profile;
|
|
|
|
// profile got not selected = not in option values -> custom profile passed with permalink
|
|
if (select.value != profile) {
|
|
this.setCustomProfile(profile, true);
|
|
}
|
|
|
|
}
|
|
if (options.alternative) {
|
|
L.DomUtil.get('alternative').value = options.alternative;
|
|
}
|
|
},
|
|
|
|
setCustomProfile: function(profile, noUpdate) {
|
|
var select,
|
|
option;
|
|
|
|
select = L.DomUtil.get('profile');
|
|
option = select.options[0]
|
|
option.value = profile;
|
|
option.disabled = !profile;
|
|
option.selected = !!profile;
|
|
|
|
if (!noUpdate) {
|
|
this.fire('update', {options: this.getOptions()});
|
|
}
|
|
},
|
|
|
|
getCustomProfile: function() {
|
|
var select = L.DomUtil.get('profile'),
|
|
option = select.options[0],
|
|
profile = null;
|
|
|
|
if (!option.disabled) {
|
|
profile = option.value;
|
|
}
|
|
return profile;
|
|
},
|
|
|
|
_getChangeHandler: function() {
|
|
return L.bind(function(evt) {
|
|
this.fire('update', {options: this.getOptions()});
|
|
}, this);
|
|
}
|
|
});
|
|
|
|
BR.RoutingOptions.include(L.Mixin.Events);
|