source: qesdi/graphplotter/trunk/graphplotter/controllers/buildplot.py @ 6331

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/qesdi/graphplotter/trunk/graphplotter/controllers/buildplot.py@6331
Revision 6331, 2.7 KB checked in by pnorton, 12 years ago (diff)

Introduced the 'dataVariables' config section to specify which of the many variables actually contains the data and to specify an alias for the variable name.

Line 
1import logging
2
3from pylons import request, response, session, tmpl_context as c
4from pylons.controllers.util import abort, redirect_to
5
6from graphplotter.lib.base import BaseController, render
7
8from graphplotter.lib.df_config_reader import DFConfigReader
9from graphplotter.lib.data_reader import DataReader
10
11from graphplotter.lib.utils import getParams
12
13log = logging.getLogger(__name__)
14
15class BuildplotController(BaseController):
16
17    def index(self):
18       
19        # need a list of all the available data files
20        cr = DFConfigReader()
21       
22        c.dataFiles = [''] + cr.getDataFileList()
23       
24        params = getParams(request)
25       
26        c.selectedDataFile = params.get('datafile', '')
27       
28        # if datafile is selected,
29        if c.selectedDataFile != '':
30           
31            self._addDataFileSelection(params, cr)
32           
33       
34        return render('buildplot.html')
35
36    def _addDataFileSelection(self, params, cr):
37       
38        dfConfig = cr.getConfig(c.selectedDataFile)
39        reader = DataReader(dfConfig['path'], dfConfig['axisLookup'])
40        log.debug("dfConfig = %s" % (dfConfig,))
41       
42        if 'dataVariables' in dfConfig:
43            allVars = reader.getVariableNames()
44           
45            for v in dfConfig['dataVariables'].keys():
46                assert v in allVars, 'Variable %s not found in file. Variables found = %s' % (v, allVars)
47               
48            c.variables = [('','')] + dfConfig['dataVariables'].items()
49           
50        else:
51            c.variables = [''] + reader.getVariableNames()
52       
53       
54        c.selectedVariable = params.get('variable', '')
55       
56        if c.selectedVariable != '':
57           
58            self._addVariableSelection(params, reader)
59           
60
61
62    def _addVariableSelection(self, params, reader):
63        c.axis = [''] + reader.getAxisNames(c.selectedVariable)
64        c.selectedAxis = params.get('axis', '')
65       
66        if c.selectedAxis != '':
67           
68            self._addAxisSelection(params, reader)
69           
70                   
71    def _addAxisSelection(self, params, reader):
72       
73        for k in params:
74            if k[:4] == 'sel_':
75                setattr(c, k, params[k])
76                               
77        c.axisSelect = {}
78       
79        for ax in c.axis:
80            if ax in ['', c.selectedAxis]:
81                continue
82           
83            vals = reader.getAxisValues(c.selectedVariable, ax)
84           
85            if type(vals[0]) == str:
86                c.axisSelect[ax] = [''] + vals
87            else:
88                c.axisSelect[ax] = "%s - %s" % (min(vals), max(vals))
89       
90        log.debug("c.axisSelect = %s" % (c.axisSelect,))
Note: See TracBrowser for help on using the repository browser.