Better handling of settings for charts

Change-Id: I6cbe04abb1d498a5222510aeb57038e4814a3e2d
This commit is contained in:
Ana Krivokapic 2014-08-06 13:12:19 +02:00
parent ab767a61b0
commit 34788178c7
2 changed files with 61 additions and 58 deletions

View File

@ -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')

View File

@ -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