Better handling of settings for charts
Change-Id: I6cbe04abb1d498a5222510aeb57038e4814a3e2d
This commit is contained in:
parent
ab767a61b0
commit
34788178c7
@ -137,11 +137,8 @@ class PerformanceView(base.TemplateView):
|
||||
node_uuid = kwargs.get('node_uuid')
|
||||
node = api.node.Node.get(request, node_uuid)
|
||||
|
||||
average = used = 0
|
||||
tooltip_average = ''
|
||||
unit = ''
|
||||
series = []
|
||||
start_datetime = end_datetime = ''
|
||||
|
||||
try:
|
||||
ip_addr = node.driver_info['ip_address']
|
||||
@ -212,26 +209,12 @@ class PerformanceView(base.TemplateView):
|
||||
util['unit'] = '%'
|
||||
series = [util]
|
||||
|
||||
if series and barchart:
|
||||
average, used, tooltip_average = (
|
||||
metering_utils.get_barchart_stats(series, unit))
|
||||
|
||||
if date_from:
|
||||
start_datetime = date_from.strftime("%Y-%m-%dT%H:%M:%S")
|
||||
if date_to:
|
||||
end_datetime = date_to.strftime("%Y-%m-%dT%H:%M:%S")
|
||||
|
||||
json_output = metering_utils.create_json_output(
|
||||
series,
|
||||
start_datetime,
|
||||
end_datetime)
|
||||
|
||||
if series and barchart:
|
||||
json_output = metering_utils.add_barchart_settings(
|
||||
json_output,
|
||||
average,
|
||||
used,
|
||||
tooltip_average)
|
||||
barchart,
|
||||
unit,
|
||||
date_from,
|
||||
date_to)
|
||||
|
||||
return http.HttpResponse(json.dumps(json_output),
|
||||
mimetype='application/json')
|
||||
|
@ -11,6 +11,7 @@
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import copy
|
||||
|
||||
from datetime import datetime # noqa
|
||||
from datetime import timedelta # noqa
|
||||
@ -24,6 +25,39 @@ from horizon import exceptions
|
||||
from openstack_dashboard.api import ceilometer
|
||||
from openstack_dashboard.dashboards.admin.metering import views as metering
|
||||
|
||||
SETTINGS = {
|
||||
'settings': {
|
||||
'renderer': 'StaticAxes',
|
||||
'xMin': None,
|
||||
'xMax': None,
|
||||
'higlight_last_point': True,
|
||||
'auto_size': False,
|
||||
'auto_resize': False,
|
||||
'axes_x': False,
|
||||
'axes_y': True,
|
||||
'axes_y_label': False,
|
||||
'bar_chart_settings': {
|
||||
'orientation': 'vertical',
|
||||
'used_label_placement': 'left',
|
||||
'width': 30,
|
||||
'color_scale_domain': [0, 80, 80, 100],
|
||||
'color_scale_range': [
|
||||
'#0000FF',
|
||||
'#0000FF',
|
||||
'#FF0000',
|
||||
'#FF0000'
|
||||
],
|
||||
'average_color_scale_domain': [0, 100],
|
||||
'average_color_scale_range': ['#0000FF', '#0000FF']
|
||||
}
|
||||
},
|
||||
'stats': {
|
||||
'average': None,
|
||||
'used': None,
|
||||
'tooltip_average': None,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#TODO(lsmola) this should probably live in Horizon common
|
||||
def query_data(request,
|
||||
@ -159,42 +193,28 @@ def get_barchart_stats(series, unit):
|
||||
return average, used, tooltip_average
|
||||
|
||||
|
||||
def create_json_output(series, start_datetime, end_datetime):
|
||||
return {
|
||||
'series': series,
|
||||
'settings': {
|
||||
'renderer': 'StaticAxes',
|
||||
'yMin': 0,
|
||||
'xMin': start_datetime,
|
||||
'xMax': end_datetime,
|
||||
'higlight_last_point': True,
|
||||
'auto_size': False,
|
||||
'auto_resize': False,
|
||||
'axes_x': False,
|
||||
'axes_y': True,
|
||||
'axes_y_label': False,
|
||||
},
|
||||
}
|
||||
def create_json_output(series, barchart, unit, date_from, date_to):
|
||||
start_datetime = end_datetime = ''
|
||||
if date_from:
|
||||
start_datetime = date_from.strftime("%Y-%m-%dT%H:%M:%S")
|
||||
if date_to:
|
||||
end_datetime = date_to.strftime("%Y-%m-%dT%H:%M:%S")
|
||||
|
||||
settings = copy.deepcopy(SETTINGS)
|
||||
settings['settings']['xMin'] = start_datetime
|
||||
settings['settings']['xMax'] = end_datetime
|
||||
|
||||
def add_barchart_settings(ret, average, used, tooltip_average):
|
||||
ret['settings']['bar_chart_settings'] = {
|
||||
'orientation': 'vertical',
|
||||
'used_label_placement': 'left',
|
||||
'width': 30,
|
||||
'color_scale_domain': [0, 80, 80, 100],
|
||||
'color_scale_range': [
|
||||
'#0000FF',
|
||||
'#0000FF',
|
||||
'#FF0000',
|
||||
'#FF0000'
|
||||
],
|
||||
'average_color_scale_domain': [0, 100],
|
||||
'average_color_scale_range': ['#0000FF', '#0000FF']
|
||||
}
|
||||
ret['stats'] = {
|
||||
'average': average,
|
||||
'used': used,
|
||||
'tooltip_average': tooltip_average,
|
||||
}
|
||||
return ret
|
||||
if series and barchart:
|
||||
average, used, tooltip_average = get_barchart_stats(series, unit)
|
||||
settings['settings']['yMin'] = 0
|
||||
settings['settings']['yMax'] = 100
|
||||
settings['stats']['average'] = average
|
||||
settings['stats']['used'] = used
|
||||
settings['stats']['tooltip_average'] = tooltip_average
|
||||
else:
|
||||
del settings['settings']['bar_chart_settings']
|
||||
del settings['stats']
|
||||
|
||||
json_output = {'series': series}
|
||||
json_output = dict(json_output.items() + settings.items())
|
||||
return json_output
|
||||
|
Loading…
x
Reference in New Issue
Block a user