Hi all, here the solution: 1.) I extended the [...]WebContent/productserver/templates/V7UI.vm with two <div>-s with ids: "Viewmode" and "Pressure". 2.) I extended the [...]WebContent/JavaScript/ui/LASUI.js like this: -- added two Widgets: this.refs = { [...] "ViewModeWidget" : {"widgetType":null}, "PressureWidget" : {"widgetType":null}, [...] } -- created a selector with entries "Pressure"/"Depth" and bound it to an event handler. It is rendered in the <div id="Viewmode"></div>. And an input element for the pressure, rendered in <div id="Pressure"></div>: LASUI.prototype.initZConstraint = function (mode, reset) { [...] this.refs.ViewModeWidget.menu = [document.createElement("SELECT"),document.createElement("SELECT")]; [...] this.refs.ViewModeWidget[this.refs.ViewModeWidget.widgetType][0].onchange=this.handleViewModeChange.LASBind(this); [...] this.refs.PressureWidget.arange = [document.createElement("INPUT"),document.createElement("INPUT")]; this.refs.PressureWidget.widgetType = "arange"; for(var m=0;m<this.refs.PressureWidget[this.refs.PressureWidget.widgetType].length;m++) { this.refs.PressureWidget[this.refs.PressureWidget.widgetType][m].className = "LASTextInputNode"; this.refs.PressureWidget[this.refs.PressureWidget.widgetType][m].type = "text"; this.refs.PressureWidget[this.refs.PressureWidget.widgetType][m].name = "pressurelevel"; this.refs.PressureWidget[this.refs.PressureWidget.widgetType][m].value = "500"; this.refs.PressureWidget[this.refs.PressureWidget.widgetType][m].onchange=this.handleDepthRangeChange.LASBind(this); } -- The event handler hides the depth/pressure element, which is not needed: LASUI.prototype.handleViewModeChange = function (evt) { if(!this.updating) { this.pressure = !this.pressure if (this.pressure) { document.getElementById("Depth").style.display="none"; document.getElementById("Pressure").style.display=""; } else { document.getElementById("Depth").style.display=""; document.getElementById("Pressure").style.display="none"; } this.makeRequest(); } } -- When makeRequest() is called and the this.pressure variable is true, an init_script is added to the xml request and the pressure value is used (instead of the depth value): if (this.pressure) { this.request.setProperty("ferret","hz_var", this.state.variable); this.request.setProperty("ferret","init_script","hybrid2pressinit"); } [...] if(this.state.view[type].indexOf('z')>=0||this.state.variables[this.state.dataset].grid_type=="scattered") { this.request.addRange('z',this.refs.PressureWidget[this.refs.PressureWidget.widgetType] [0].value,this.refs.PressureWidget[this.refs.PressureWidget.widgetType][1].value); } else { this.request.addRange('z',this.refs.PressureWidget[this.refs.PressureWidget.widgetType][0].value); } 3.) The init-script: set data ($data_url) set mem/size=80 ! calculate pressure levels LET PRESS = (HYAM + HYBM * APS[k=1])/100 ! define new z-axis of pressure levels DEFINE AXIS/Z/FROM_DATA/NAME=PAX/depth/units=hPa ((HYAM[d=1] + HYBM[d=1] * 101325.)/100) ! output variable is variable from input with new z-axis let ($data_var)_P = ZAXREPLACE(($data_var), press[d=1], Z[gz=pax]) define symbol data_var = ($data_var)_P Perhaps this helps someone ;-) Bastian
Attachment:
LASUI.js
Description: JavaScript source