Beispiel #1
0
def Storage(params=None):
    handle_params(params)

    data = []
    with pg_connection(*current_user.get_config()) as (con, cur, err):
        with pg_log_err('list storage query'):
            cur.execute(query('list-storage'))
            data = cur.fetchall()

    display_schemas = params.getlist('schema')
    schemas = set()
    treemap_data = {'name': 'root', 'children': []}
    for (schema_name, table_name, t_size, t_tuples) in data:
        schemas.add(schema_name)
        if schema_name in display_schemas or len(display_schemas) == 0:
            treemap_data['children'].append({'schema_name': schema_name, 'name': table_name,
                                             'size': int(t_size), 'rows': int(t_tuples)})

    p = Page()

    # Header
    p.add_page(Header(title='Storage',
                      js=['static/pages/storage.js',
                          'static/lib/d3/d3.js',
                          'static/lib/d3/lib/colorbrewer/colorbrewer.js'],
                      css=['static/pages/storage.css']))
    p.add_page(Navigation(page='storage'))
    with p.div({'class': 'container-fluid'}):
        with p.div({'class': 'row form-row'}):
            with p.div({'class': 'col-md-10'}):
                with p.form({'id': 'schema-form', 'class': 'form-inline'}):
                    for schema in schemas:
                        with p.label({'class': 'checkbox-inline'}):
                            checked = (schema in display_schemas or len(display_schemas) == 0) and 'checked' or ''
                            with p.input({'type': 'checkbox', 'name': 'schema', 'value': '%s' % schema}, args=[checked]):
                                p.content(schema)

            with p.div({'class': 'col-md-2'}):
                with p.form({'id': 'mode-form', 'class': 'form-inline'}):
                    with p.label({'class': 'radio-inline'}):
                        with p.input({'type': 'radio', 'name': 'mode', 'value': 'size'}, args=['checked']):
                            p.content('Size')
                    with p.label({'class': 'radio-inline'}):
                        with p.input({'type': 'radio', 'name': 'mode', 'value': 'rows'}):
                            p.content('Rows (est.)')

        with p.div({'class': 'row'}):
            with p.div({'class': 'col-md-12'}):
                with p.div({'id': 'treemap-chart'}): pass
                with p.script():
                    p.content('PGUI.STORAGE.mk_treemap_chart(%s);' % json.dumps(treemap_data))

    p.add_page(Footer())

    return p
Beispiel #2
0
def Query(params=None):
    handle_params(params)
    p = Page()

    # Header
    p.add_page(Header(title='Query',
                      js=['static/pages/query.js',
                          'static/pages/query_completion.js',
                          'static/pages/keywords.js',
                          'static/lib/springy/springy.js',
                          'static/lib/springy/springyui.js'],
                      css=['static/pages/query.css']))
    with p.script():
        p.content('PGUI.QUERY.keymap = "%s";' % current_user.keymap)
    p.add_page(Navigation(page='query'))

    with p.div({'class': 'container-fluid'}):
        # Modal dialog for displaying previous queries
        with p.div({'class': 'modal fade', 'id': 'query-history-dialog', 'tabindex': '-1', 'role': 'dialog', 'aria-labelledby': 'Query History'}):
            with p.div({'class': 'modal-dialog', 'role': 'document'}):
                with p.div({'class': 'modal-content'}):
                    with p.div({'class': 'modal-header'}):
                        with p.button({'type': 'button', 'class': 'close', 'data-dismiss': 'modal', 'aria-label': 'Close'}):
                            with p.span({'aria-hidden': 'true'}):
                                p.content('×')
                        with p.h4({'class': 'modal-title', 'id': 'query-history-label'}):
                            p.content('Query history')

                    with p.div({'clas': 'modal-body'}):
                        with p.div({'id': 'query-history'}): pass

        # Tab bar controls
        with p.div({'id': 'query-panel', 'role': 'tabpanel'}):
            with p.ul({'id': 'query-nav-tabs', 'class': 'nav nav-tabs', 'role': 'tablist'}):
                with p.li({'role': 'presentation'}):
                    with p.a({'id': 'show-query-history', 'href': 'javascript:void(0);'}):
                        with p.span({'class': 'add-tab glyphicon glyphicon-camera', 'aria-hidden': 'true'}): pass
                with p.li({'role': 'presentation'}):
                    with p.a({'id': 'add-tab', 'href': 'javascript:void(0);'}):
                        with p.span({'class': 'add-tab glyphicon glyphicon-plus', 'aria-hidden': 'true'}): pass
            # Tab bar contents
            with p.div({'id': 'query-tab-panes', 'class': 'tab-content'}): pass

    # Footer
    p.add_page(Footer())

    return p
Beispiel #3
0
def Storage(params=None):
    handle_params(params)

    data = []
    with pg_connection(*current_user.get_config()) as (con, cur, err):
        with pg_log_err('list storage query'):
            cur.execute(query('list-storage'))
            data = cur.fetchall()

    display_schemas = params.getlist('schema')
    schemas = set()
    treemap_data = {'name': 'root', 'children': []}
    for (schema_name, table_name, t_size, t_tuples) in data:
        schemas.add(schema_name)
        if schema_name in display_schemas or len(display_schemas) == 0:
            treemap_data['children'].append({
                'schema_name': schema_name,
                'name': table_name,
                'size': int(t_size),
                'rows': int(t_tuples)
            })

    p = Page()

    # Header
    p.add_page(
        Header(title='Storage',
               js=[
                   'static/pages/storage.js', 'static/lib/d3/d3.js',
                   'static/lib/d3/lib/colorbrewer/colorbrewer.js'
               ],
               css=['static/pages/storage.css']))
    p.add_page(Navigation(page='storage'))
    with p.div({'class': 'container-fluid'}):
        with p.div({'class': 'row form-row'}):
            with p.div({'class': 'col-md-10'}):
                with p.form({'id': 'schema-form', 'class': 'form-inline'}):
                    for schema in schemas:
                        with p.label({'class': 'checkbox-inline'}):
                            checked = (schema in display_schemas
                                       or len(display_schemas)
                                       == 0) and 'checked' or ''
                            with p.input(
                                {
                                    'type': 'checkbox',
                                    'name': 'schema',
                                    'value': '%s' % schema
                                },
                                    args=[checked]):
                                p.content(schema)

            with p.div({'class': 'col-md-2'}):
                with p.form({'id': 'mode-form', 'class': 'form-inline'}):
                    with p.label({'class': 'radio-inline'}):
                        with p.input(
                            {
                                'type': 'radio',
                                'name': 'mode',
                                'value': 'size'
                            },
                                args=['checked']):
                            p.content('Size')
                    with p.label({'class': 'radio-inline'}):
                        with p.input({
                                'type': 'radio',
                                'name': 'mode',
                                'value': 'rows'
                        }):
                            p.content('Rows (est.)')

        with p.div({'class': 'row'}):
            with p.div({'class': 'col-md-12'}):
                with p.div({'id': 'treemap-chart'}):
                    pass
                with p.script():
                    p.content('PGUI.STORAGE.mk_treemap_chart(%s);' %
                              json.dumps(treemap_data))

    p.add_page(Footer())

    return p
Beispiel #4
0
def Header(params=None, title=None, css=None, js=None):
    p = Page()

    p.content('<!DOCTYPE html>')
    with p.html(close=False):
        with p.head():
            with p.title():
                p.content('pgui - %s/%s' % (cu.database, title))

            with p.meta({'charset': 'utf-8'}):
                pass
            with p.script({'src': 'static/lib/jquery/jquery-2.1.3.js'}):
                pass
            with p.script({'src': 'static/pgui.js'}):
                pass
            with p.link({'href': 'static/pgui.css', 'rel': 'stylesheet'}):
                pass
            with p.link({
                    'href':
                    'static/lib/bootstrap/bootstrap-3.3.4-dist/css/bootstrap.css',
                    'rel': 'stylesheet'
            }):
                pass
            with p.link({
                    'href':
                    'static/lib/codemirror/codemirror-5.1/lib/codemirror.css',
                    'rel': 'stylesheet'
            }):
                pass
            with p.link({
                    'href':
                    'static/lib/codemirror/codemirror-5.1/theme/neo.css',
                    'rel': 'stylesheet'
            }):
                pass
            with p.link({
                    'href':
                    'static/lib/codemirror/codemirror-5.1/addon/hint/show-hint.css',
                    'rel': 'stylesheet'
            }):
                pass
            if css:
                for c in css:
                    with p.link({'href': c, 'rel': 'stylesheet'}):
                        pass
            with p.script({
                    'src':
                    'static/lib/bootstrap/bootstrap-3.3.4-dist/js/bootstrap.js'
            }):
                pass
            with p.script({
                    'src':
                    'static/lib/codemirror/codemirror-5.1/lib/codemirror.js'
            }):
                pass
            with p.script({
                    'src':
                    'static/lib/codemirror/codemirror-5.1/keymap/emacs.js'
            }):
                pass
            with p.script(
                {'src': 'static/lib/codemirror/codemirror-5.1/keymap/vim.js'}):
                pass
            with p.script({
                    'src':
                    'static/lib/codemirror/codemirror-5.1/keymap/sublime.js'
            }):
                pass
            with p.script({
                    'src':
                    'static/lib/codemirror/codemirror-5.1/mode/sql/sql.js'
            }):
                pass
            with p.script({
                    'src':
                    'static/lib/codemirror/codemirror-5.1/addon/hint/show-hint.js'
            }):
                pass
            if js:
                for j in js:
                    with p.script({'src': j}):
                        pass

        with p.body(close=False):
            config = 'PGUI.user = "******"; PGUI.db = "%s"; PGUI.host = "%s";' % (
                cu.name, cu.database, cu.host)
            with p.script():
                p.content(config)

    return p
Beispiel #5
0
def Query(params=None):
    handle_params(params)
    p = Page()

    # Header
    p.add_page(
        Header(title='Query',
               js=[
                   'static/pages/query.js', 'static/pages/query_completion.js',
                   'static/pages/keywords.js', 'static/lib/springy/springy.js',
                   'static/lib/springy/springyui.js'
               ],
               css=['static/pages/query.css']))
    with p.script():
        p.content('PGUI.QUERY.keymap = "%s";' % current_user.keymap)
    p.add_page(Navigation(page='query'))

    with p.div({'class': 'container-fluid'}):
        # Modal dialog for displaying previous queries
        with p.div({
                'class': 'modal fade',
                'id': 'query-history-dialog',
                'tabindex': '-1',
                'role': 'dialog',
                'aria-labelledby': 'Query History'
        }):
            with p.div({'class': 'modal-dialog', 'role': 'document'}):
                with p.div({'class': 'modal-content'}):
                    with p.div({'class': 'modal-header'}):
                        with p.button({
                                'type': 'button',
                                'class': 'close',
                                'data-dismiss': 'modal',
                                'aria-label': 'Close'
                        }):
                            with p.span({'aria-hidden': 'true'}):
                                p.content('&times;')
                        with p.h4({
                                'class': 'modal-title',
                                'id': 'query-history-label'
                        }):
                            p.content('Query history')

                    with p.div({'clas': 'modal-body'}):
                        with p.div({'id': 'query-history'}):
                            pass

        # Tab bar controls
        with p.div({'id': 'query-panel', 'role': 'tabpanel'}):
            with p.ul({
                    'id': 'query-nav-tabs',
                    'class': 'nav nav-tabs',
                    'role': 'tablist'
            }):
                with p.li({'role': 'presentation'}):
                    with p.a({
                            'id': 'show-query-history',
                            'href': 'javascript:void(0);'
                    }):
                        with p.span({
                                'class': 'add-tab glyphicon glyphicon-camera',
                                'aria-hidden': 'true'
                        }):
                            pass
                with p.li({'role': 'presentation'}):
                    with p.a({'id': 'add-tab', 'href': 'javascript:void(0);'}):
                        with p.span({
                                'class': 'add-tab glyphicon glyphicon-plus',
                                'aria-hidden': 'true'
                        }):
                            pass
            # Tab bar contents
            with p.div({'id': 'query-tab-panes', 'class': 'tab-content'}):
                pass

    # Footer
    p.add_page(Footer())

    return p
Beispiel #6
0
def Header(params=None, title=None, css=None, js=None):
    p = Page()

    p.content('<!DOCTYPE html>')
    with p.html(close=False):
        with p.head():
            with p.title():
                p.content('pgui - %s/%s' % (cu.database, title))

            with p.meta({'charset': 'utf-8'}): pass
            with p.script({'src': 'static/lib/jquery/jquery-2.1.3.js'}): pass
            with p.script({'src': 'static/pgui.js'}): pass
            with p.link({'href': 'static/pgui.css', 'rel': 'stylesheet'}): pass
            with p.link({'href': 'static/lib/bootstrap/bootstrap-3.3.4-dist/css/bootstrap.css', 'rel': 'stylesheet'}): pass
            with p.link({'href': 'static/lib/codemirror/codemirror-5.1/lib/codemirror.css', 'rel': 'stylesheet'}): pass
            with p.link({'href': 'static/lib/codemirror/codemirror-5.1/theme/neo.css', 'rel': 'stylesheet'}): pass
            with p.link({'href': 'static/lib/codemirror/codemirror-5.1/addon/hint/show-hint.css', 'rel': 'stylesheet'}): pass
            if css:
                for c in css:
                    with p.link({'href': c, 'rel': 'stylesheet'}): pass
            with p.script({'src': 'static/lib/bootstrap/bootstrap-3.3.4-dist/js/bootstrap.js'}): pass
            with p.script({'src': 'static/lib/codemirror/codemirror-5.1/lib/codemirror.js'}): pass
            with p.script({'src': 'static/lib/codemirror/codemirror-5.1/keymap/emacs.js'}): pass
            with p.script({'src': 'static/lib/codemirror/codemirror-5.1/keymap/vim.js'}): pass
            with p.script({'src': 'static/lib/codemirror/codemirror-5.1/keymap/sublime.js'}): pass
            with p.script({'src': 'static/lib/codemirror/codemirror-5.1/mode/sql/sql.js'}): pass
            with p.script({'src': 'static/lib/codemirror/codemirror-5.1/addon/hint/show-hint.js'}): pass
            if js:
                for j in js:
                    with p.script({'src': j}): pass

        with p.body(close=False):
            config = 'PGUI.user = "******"; PGUI.db = "%s"; PGUI.host = "%s";' % (cu.name, cu.database, cu.host)
            with p.script():
                p.content(config)

    return p