def ListarCampos(idTabela, edt = True, splColunas = []):
    listaCampos = meta.ListarColunas(idTabela)
    listaExibicao = dbTab.ListarExibicao(idTabela)

    campos = [ ]

    for col in listaCampos:
        if col.desabilitado == True:
            continue

        if len(splColunas) != 0:
            existeColunaFiltro = False
            for idCol in splColunas:
                if int(idCol) == int(col.id):
                    existeColunaFiltro = True

            if existeColunaFiltro == False:
                continue


        if col.chave_estrangeira == False or edt == False:
            c_campo = {'campo': col.nome, 'titulo': col.titulo }
        else:
            c_campo = {'campo': col.nome, 'titulo': '<a href="transformacao_sel?idTabela=' + str(idTabela) + '&idColuna=' + str(col.id) + '">' + col.titulo + '</a>' }

        campos.append(c_campo)

    conta_tb = 0
    for colExib in listaExibicao:

        col = meta.ObterColuna(colExib.id_coluna_fk)
        if col.desabilitado == True:
            continue

        if len(splColunas) != 0:
            existeColunaFiltro = False
            for idCol in splColunas:
                if int(idCol) == int(col.id):
                    existeColunaFiltro = True

            if existeColunaFiltro == False:
                continue

        conta_tb = conta_tb + 1

        if edt == True:
            c_campo = {'campo': col.nome, 'titulo': '<a href="#" style="color: red;">' + col.titulo + '</a>' }
        else:
            c_campo = {'campo': col.nome, 'titulo': col.titulo }


        campos.append(c_campo)

    return campos
Exemplo n.º 2
0
def Obter():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    id = request.params.get('id')
    listaColunas = meta.ListarColunas(id)

    lstCol = []
    for col in listaColunas:
        lstCol.append({'id': col.id, 'nome': col.nome})

    return json.dumps(lstCol)
Exemplo n.º 3
0
def SalvarMensagens(tabela, msgs):
    print(
        '==============================================================================================='
    )
    print('Salvar Mensagens')

    listaColunas = meta.ListarColunas(tabela.id)

    sqlDelete = 'DELETE FROM mensagem WHERE id_tabela = ' + str(tabela.id)

    print(sqlDelete)

    session = db.getSession()
    session.execute(sqlDelete)

    coluna_identif_aluno = None
    for col in listaColunas:
        if (col.fl_aluno):
            coluna_identif_aluno = col
            break

    dt_geracao = datetime.now()
    for msg in msgs:
        rowid = msg['Aluno']

        sql_busca_usuario = 'SELECT U.id  FROM "' + tabela.nome + '" AS T0 INNER JOIN usuario AS U ON "' + coluna_identif_aluno.nome + '" = U.login  WHERE T0.rowid = ' + str(
            rowid) + ' LIMIT 1'
        print(sql_busca_usuario)
        id_usuario_aluno = session.execute(
            sql_busca_usuario).fetchall()[0]['id']

        coluna = ObterColunaPorNomeLista(listaColunas, msg['Campo'])
        print(coluna.titulo)

        desc_mensagem = 'Na característica "' + coluna.titulo + '" esta informado: "' + msg[
            'ValAtual'] + '".\nRecomendamos que seja modificado para "' + msg[
                'ValSuger'] + '"'
        print(desc_mensagem)

        mensagem = db.Mensagem(None)
        mensagem.id_tabela = tabela.id
        mensagem.id_coluna = coluna.id
        mensagem.id_usuario_aluno = id_usuario_aluno
        mensagem.val_atual = msg['ValAtual']
        mensagem.val_suger = msg['ValSuger']
        mensagem.descartado = 'N'
        mensagem.lido = 'N'
        mensagem.dt_gerado = dt_geracao
        mensagem.descricao = desc_mensagem

        session.add(mensagem)

    session.commit()
    session.close()
def pre_processamento():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    listaTabelas = imp.ListarTabelas()
    idTabela = request.params.get('idTabela')
    idColuna = request.params.get('idColuna')
    nomeColuna = ''
    nomeTabela = ''
    sql=''

    for tab in listaTabelas:
        tab.selecionado = False


    if idTabela == None:
        idTabela = 0
    else:
        for tab in listaTabelas:
            if int(tab.id) == int(idTabela):
                tab.selecionado = True
                nomeTabela = tab.nome

    listaColunas = meta.ListarColunas(idTabela)
    for col in listaColunas:
        col.selecionado = False

    if idColuna == None:
        idColuna = 0
    else:
        for col in listaColunas:
            if int(col.id) == int(idColuna):
                col.selecionado = True
                nomeColuna = col.nome
                sql = col.sql

    
    resultado = None
    if idColuna != 0 and idTabela != 0:
        resultado = pre.RetornarValoresColuna(idTabela, idColuna)

    grfPizza = comp.grfPizza('Valores Válidos', resultado, 'COL', 'qtd', 'Valores válidos para a coluna selecionada');
    return dict(listaTabelas=listaTabelas, 
                listaColunas=listaColunas,
                nomeTabela=nomeTabela,
                nomeColuna=nomeColuna,
                idTabela=idTabela,
                idColuna=idColuna,
                sql=sql,
                grfPizza=grfPizza.grf,
                scriptGrafico=grfPizza.js)
Exemplo n.º 5
0
def def_visao():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    id_tabela = request.params.get('id_tabela')
    id = request.params.get('id')
    nome = ''
    modelo = ''
    tipo = {  }
    tipo['1']  = ''
    tipo['2']  = ''
    tipo['3']  = ''
    tipo['4']  = ''
    tipo['5']  = ''

    tabela = imp.ObterTabela(id_tabela)
    listaColunas = meta.ListarColunas(id_tabela)
    for col in listaColunas:
        col.selecionado = False

    visao = None
    if id != '0':
        visao = vis.ObterVisao(id)
        nome = visao.nome
        dTipo = visao.tipo
        modelo = visao.modelo

        tipo[dTipo] = 'selected'

        objModelo = json.loads(modelo)

        for col in listaColunas:
            for mod in objModelo:
                if int(mod['id_coluna']) == col.id:
                    col.selecionado = True

    else:
        tipo['1'] = 'checked'

    return dict(id=id,
                nome=nome,
                tipo=tipo,
                modelo=modelo,
                idTabela=id_tabela,
                nomeTabela=tabela.nome,
                listaColunas=listaColunas,
                visao=visao,
                js='<script>ReconstruirGrid();</script>')
Exemplo n.º 6
0
def DefColunas():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    id = request.params.get('id')

    if id == None:
        id = 0

    coluna = meta.ObterColuna(id)
    listaTabelas = imp.ListarTabelas()
    colunasFk = None

    if coluna != None:
        if coluna.val_aluno_risco == None:
            coluna.val_aluno_risco = ''

        if coluna.chave_estrangeira == True:
            colunasFk = meta.ListarColunas(coluna.id_tabela_fk)

        coluna.lstTipos = (
            {
                'id': 'T',
                'nome': 'Texto',
                'selecionado': False
            },
            {
                'id': 'N',
                'nome': 'Número',
                'selecionado': False
            },
            {
                'id': 'D',
                'nome': 'Data (seq. temporal)',
                'selecionado': False
            },
        )

        for tp in coluna.lstTipos:
            tp['selecionado'] = False
            if tp['id'] == coluna.tipo:
                tp['selecionado'] = True

    return dict(listaTabelas=listaTabelas, colunasFk=colunasFk, coluna=coluna)
Exemplo n.º 7
0
def LstColunas():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    listaTabelas = imp.ListarTabelas()
    campos = ({
        'campo': 'id_coluna_cid',
        'titulo': 'ID'
    }, {
        'campo': 'comando',
        'titulo': 'Nome'
    }, {
        'campo': 'tipo',
        'titulo': 'Tipo'
    }, {
        'campo': 'titulo',
        'titulo': 'Titulo'
    }, {
        'campo': 'desabilitado',
        'titulo': 'Desabilitado'
    })

    idTabela = request.params.get('id')
    listaColunas = meta.ListarColunas(idTabela)

    for col in listaColunas:
        col.comando = '<a href="/defcoluna?id=' + str(
            col.id) + '">' + col.nome + '</a>'

    for tab in listaTabelas:
        tab.selecionado = False

    if idTabela == None:
        idTabela = 0
    else:
        for tab in listaTabelas:
            if int(tab.id) == int(idTabela):
                tab.selecionado = True

    grid = comp.grid('Lista de Colunas', listaColunas, campos,
                     'dados atualizados em 26/01/2018')

    return dict(listaTabelas=listaTabelas, grid=grid)
Exemplo n.º 8
0
def ListarRecomendacoes(idTabela):
    session = db.getSession()
    listaMensagens = session.query(
        db.Mensagem).filter_by(id_tabela=idTabela).all()

    listaRetorno = []

    listaColunas = meta.ListarColunas(idTabela)

    for msg in listaMensagens:
        existeAluno = False
        edtRow = {}
        msgsAluno = []

        for rowRet in listaRetorno:
            if rowRet['id_usuario_aluno'] == msg.id_usuario_aluno:
                existeAluno = True
                edtRow = rowRet
                msgsAluno = edtRow['MsgsAluno']
                break

        if existeAluno == False:
            edtRow['id_usuario_aluno'] = msg.id_usuario_aluno
            usuario = session.query(
                db.Usuario).filter_by(id=msg.id_usuario_aluno).first()
            edtRow['nome'] = usuario.nome
            listaRetorno.append(edtRow)

        msgsAluno.append(msg)
        edtRow['MsgsAluno'] = msgsAluno

    session.close()

    tabPredicao = ObterTabelaPredicao(idTabela)
    tx_acerto = 0
    for alg in tabPredicao.Alg:
        if alg.selecionado:
            tx_acerto = alg.tx_acerto

    return dict(tabela=imp.ObterTabela(idTabela),
                tx_acerto=tx_acerto,
                lista=listaRetorno)
Exemplo n.º 9
0
def ExportarDados(id_tabela):
    tabela = imp.ObterTabela(id_tabela)
    #-- Rede Gazeta
    #path = "C:/Users/bstoll/source/repos/LA-Intervencao/LA-Intervencao/arquivosUpld"
    #-- pythonanywhere
    path = "/home/bstoll/mysite/arquivosUpld"
    #-- Casa
    #path = "C:/Users/Bruno Stoll/source/repos/LA-Intervencao/LA-Intervencao"

    pathFile = "{path}/{file}".format(path=path, file=tabela.nome + ".csv")

    listaColunas = meta.ListarColunas(id_tabela)
    ar_lst_cols = []
    for col in listaColunas:
        ar_lst_cols.append(col.id)

    sql = dbTab.GerarSQL(id_tabela, 'O', ar_lst_cols)
    df = dbTab.db.consultarSQLDataFrame(sql)
    if os.path.isfile(pathFile):
        os.remove(pathFile)

    df.to_csv(pathFile, index=False)
def explorar_dados():
    seg.ChecarPerfil(seg.PERFIL_Analista)

    idTabela = request.params.get('id')
    idColunas = request.params.get('idColunas')
    tipo = request.params.get('tipo')

    listaTabelas = imp.ListarTabelas()
    listaColunas = []
    grid = ''

    if tipo == None:
        tipo = 'D'

    if idTabela == None:
        idTabela = 0
        idColunas = ''
        tipo = 'D'

    else:
        for col in meta.ListarColunas(idTabela):
            listaColunas.append(col)

        listaExibicao = dbTab.ListarExibicao(idTabela)

        for colExib in listaExibicao:
            col_lookup = meta.ObterColuna(colExib.id_coluna_fk)
            listaColunas.append(col_lookup)

        for col in listaColunas:
            col.selecionado = False

        if idColunas == None or idColunas == '':
            idColunas = ''
        else:
            splColunas = idColunas.split(',')

            for col in listaColunas:
                for idCol in splColunas:
                    if int(idCol) == int(col.id):
                        col.selecionado = True

            if len(splColunas) != 0:
                campos = meta.ListarCampos(idTabela, False, splColunas)
                if tipo == 'D':
                    resultado = dbTab.ListarDados(idTabela, splColunas)
                    grid = comp.grid('Registros', resultado, campos, '')
                elif tipo == 'I':
                    resultado = dbTab.InformDados(idTabela, splColunas)
                    #grid = comp.grid('Registros', resultado, campos, '')

    for tab in listaTabelas:
        tab.selecionado = False
        if int(tab.id) == int(idTabela):
            tab.selecionado = True

    return dict(idTabela=idTabela,
                idColunas=idColunas,
                tipo=tipo,
                listaTabelas=listaTabelas,
                listaColunas=listaColunas,
                grid=grid)
Exemplo n.º 11
0
def ExibirPesos(id_tabela):
    tabela = imp.ObterTabela(id_tabela)
    nome_coluna, id_coluna = meta.ObterColunaClasse(tabela.id)
    coluna = meta.ObterColuna(id_coluna)
    tabPredicao = ObterTabelaPredicao(id_tabela)

    listaColunas = meta.ListarColunas(id_tabela)

    pesos = json.loads(tabPredicao.pesos)
    pesosOrdenado = sorted(pesos, key=itemgetter('Peso'), reverse=True)

    scriptGrafico = ''

    for peso in pesosOrdenado:
        df = pd.DataFrame(peso['Valores'])
        print(peso)
        print(df)

        maxFalha = df[df['Classe'] ==
                      coluna.val_aluno_risco]['_percValor'].max()
        maxSucesso = df[
            df['Classe'] != coluna.val_aluno_risco]['_percValor'].max()
        df['destaca'] = ''
        df[df['Classe'] == coluna.val_aluno_risco][df['_percValor'] ==
                                                   maxFalha]['destaca'] = 'F'
        df[df['Classe'] != coluna.val_aluno_risco][df['_percValor'] ==
                                                   maxSucesso]['destaca'] = 'S'

        for item in peso['Valores']:
            item['destaca'] = ''
            if item['Classe'] == coluna.val_aluno_risco and item[
                    '_percValor'] == maxFalha:
                item['destaca'] = 'F'
            if item['Classe'] != coluna.val_aluno_risco and item[
                    '_percValor'] == maxSucesso:
                item['destaca'] = 'S'

        #df[dfClsFalha['_percRelativo'] == df['_percValor']] ['destaca'] = 'R'
        #df[dfClsSucesso['_percRelativo'] == df['_percValor']]['destaca'] = 'B'

        dfClsFalha = df[df['Classe'] == coluna.val_aluno_risco]
        dfClsSucesso = df[df['Classe'] != coluna.val_aluno_risco]

        legendaPadrao = ' Registros com o campo "' + coluna.titulo + '"'
        legendaFalha = legendaPadrao + ' igual a "' + coluna.val_aluno_risco + '"'
        legendaSucesso = legendaPadrao + ' diferente de "' + coluna.val_aluno_risco + '"'

        grfFalha = comp.grfPizza(legendaFalha, dfClsFalha, 'Valor', '_qtd', '')
        grfSucesso = comp.grfPizza(legendaSucesso, dfClsSucesso, 'Valor',
                                   '_qtd', '')
        scriptGrafico += grfFalha.js
        scriptGrafico += grfSucesso.js

        peso['grfFalha'] = grfFalha.grf
        peso['grfSucesso'] = grfSucesso.grf
        campo = ObterColunaPorNomeLista(listaColunas, peso['Campo'])
        peso['Campo'] = campo.titulo

    return dict(id_tabela=tabela.id,
                nome=tabela.nome,
                pesos=pesosOrdenado,
                scriptGrafico=scriptGrafico)
Exemplo n.º 12
0
def GerarSQL(idTabela,
             filtroClasse='',
             somenteColunas=[],
             agrupar=False,
             defColunasAgrp={},
             filtroSql=''):
    """ filtroClasse
         S = sem classe     = para TREINAR
         O = somente classe = para PREVER
    """

    tabela = imp.ObterTabela(idTabela)
    listaColunas = meta.ListarColunas(idTabela)
    listaExibicao = ListarExibicao(idTabela)
    conta_tb = 0

    sql_table = '[' + tabela.nome + ']'
    if not (tabela.sql_destino == None or tabela.sql_destino == ''):
        sql_table = '(' + tabela.sql_destino + ')'

    sql_table = sql_table

    sql = ''
    sql_coluna = '       rowid'
    sql_coluna_classe = ''
    sql_inner_join = ''
    sql_where = '\n WHERE 0=0 \n'
    sql_group = ''

    if agrupar == True:
        sql_group = ''

    for col in listaColunas:
        if col.desabilitado == True:
            existeSomenteCol = False
            for idCol in somenteColunas:
                if int(idCol) == col.id:
                    existeSomenteCol = True
            if existeSomenteCol == False:
                continue

        if len(somenteColunas) != 0:
            existeFiltroColuna = False
            for idCol in somenteColunas:
                if int(idCol) == int(col.id):
                    existeFiltroColuna = True

            if existeFiltroColuna == False:
                continue

        sql_coluna_tmp = col.sql.replace(col.nome, 't0.' + col.nome)
        sql_coluna_one = sql_coluna_tmp + ' AS ' + col.nome

        if agrupar == True:
            if defColunasAgrp[col.id] != '':
                sql_coluna_one = defColunasAgrp[
                    col.id] + '(' + sql_coluna_tmp + ') AS ' + defColunasAgrp[
                        col.id] + '_' + col.nome
            elif defColunasAgrp[col.id] == '':
                if sql_group == '':
                    sql_group = ' GROUP BY ' + sql_coluna_tmp
                else:
                    sql_group = sql_group + ',' + sql_coluna_tmp

        if col.classe:
            sql_coluna_classe = sql_coluna_one
            if filtroClasse == 'S':
                sql_where += ' AND ' + sql_coluna_tmp + ' IS NOT NULL \n'
                sql_where += ' AND ' + sql_coluna_tmp + ' <> \'\' \n'
                sql_where += ' AND ' + sql_coluna_tmp + ' <> \'?\' \n'
                sql_where += ' AND ' + sql_coluna_tmp + ' NOT LIKE \'LA :: Prev%\' \n'
            elif filtroClasse == 'O':
                sql_where += ' AND (' + sql_coluna_tmp + ' IS NULL \n'
                sql_where += '  OR  ' + sql_coluna_tmp + ' = \'\' \n'
                sql_where += '  OR  ' + sql_coluna_tmp + ' = \'?\' \n'
                sql_where += '  OR  ' + sql_coluna_tmp + ' LIKE \'LA :: Prev%\' ) \n'
        elif sql_coluna == '':
            sql_coluna = '       ' + sql_coluna_one
        else:
            sql_coluna = sql_coluna + ', \n       ' + sql_coluna_one

    tabelasJoin = {}

    for colExib in listaExibicao:

        col = meta.ObterColuna(colExib.id_coluna)
        col_fk = meta.ObterColuna(col.id_coluna_fk)
        col_lookup = meta.ObterColuna(colExib.id_coluna_fk)
        tabela_fk = imp.ObterTabela(colExib.id_tabela_fk)

        if col_lookup.desabilitado == True:
            continue

        if len(somenteColunas) != 0:
            existeFiltroColuna = False
            for idCol in somenteColunas:
                if int(idCol) == int(col_lookup.id):
                    existeFiltroColuna = True

            if existeFiltroColuna == False:
                continue

        sql_table_join = tabela_fk.nome
        if (tabela_fk.sql_destino != None):
            sql_table_join = tabela_fk.sql_destino

        prefixo = ''
        tb_corrente = -1
        if tabela_fk.nome in tabelasJoin:
            tb_corrente = tabelasJoin[tabela_fk.nome]
            prefixo = 't' + str(tb_corrente)
        else:
            conta_tb = conta_tb + 1
            tb_corrente = conta_tb
            prefixo = 't' + str(tb_corrente)
            tabelasJoin[tabela_fk.nome] = conta_tb
            tb_corrente = conta_tb

            sql_inner_join = sql_inner_join + ' INNER JOIN ' + sql_table_join + ' AS ' + prefixo + ' ON t0.' + col.nome + ' = ' + prefixo + '.' + col_fk.nome

        sql_coluna_tmp = col_lookup.sql.replace(
            col.nome, prefixo + '.' + col_lookup.nome)
        sql_coluna_one = sql_coluna_tmp + ' AS ' + col_lookup.nome

        if agrup == True:
            if sql_group == '':
                sql_group = ' GROUP BY ' + sql_coluna_tmp
            else:
                sql_group = sql_group + ',' + sql_coluna_tmp

        if col_lookup.classe:
            sql_coluna_classe = sql_coluna_one
            if filtroClasse == 'S':
                sql_where += ' AND ' + sql_coluna_tmp + ' IS NOT NULL'
                sql_where += ' AND ' + sql_coluna_tmp + ' <> \'\' '
                sql_where += ' AND ' + sql_coluna_tmp + ' <> \'?\' '
                sql_where += ' AND ' + sql_coluna_tmp + ' NOT LIKE \'LA :: Prev%\' '
            elif filtroClasse == 'O':
                sql_where += ' AND (' + sql_coluna_tmp + ' IS NULL'
                sql_where += '  OR  ' + sql_coluna_tmp + ' = \'\' '
                sql_where += '  OR  ' + sql_coluna_tmp + ' = \'?\' '
                sql_where += '  OR  ' + sql_coluna_tmp + ' LIKE \'LA :: Prev%\' )'

        else:
            sql_coluna = sql_coluna + ', ' + sql_coluna_one

    if sql_coluna_classe != '':
        sql_coluna = sql_coluna + ', ' + sql_coluna_classe

    if filtroSql != '':
        sql_where += '\n and ' + filtroSql

    sql = 'SELECT \n' + sql_coluna + ' FROM \n' + sql_table + ' as t0 ' + sql_inner_join + sql_where + '\n' + sql_group

    print('GerarSQL:')
    print(sql)

    return sql
Exemplo n.º 13
0
def PainelDinamicoPln(expressao):
    expressao, d_filtro = Parametros(expressao)

    nlp = spacy.load('pt') # pt_core_news_sm
    doc = nlp(expressao)
    sents = [sent for sent in doc.sents]
    #tokenCalculoMedidas = [token for token in nlp('soma,média,mínimo,máximo') if token.is_punct == False]
    id_tabela = 53 # parte fixa no código
    listaObjColunas =  [coluna for coluna in meta.ListarColunas(id_tabela) if coluna.sinonimos != '']

    html = ''
    js = ''
    conta=0
    tokenFiltro = [token for token in nlp('onde')][0]

    for sent in sents:
        print(str(sent))
        existeFiltro = False
        sentencaTotal = str(sent)
        sentencaBase =  str(sent)
        sentencaFiltro = ''

        for token in sent:
            d_similaridade = tokenFiltro.similarity(token)
            print(str(token), d_similaridade)
            if tokenFiltro.similarity(token) > 0.9:
                sentencaFiltro = sentencaTotal[sentencaTotal.find(str(token)):]
                sentencaBase = sentencaTotal[:sentencaTotal.find(str(token))-1]
                print('existe filtro!')
                print('sentenca base:', sentencaBase)
                print('sentenca filtro:', sentencaFiltro)
                existeFiltro = True
                break
        
        sentFiltro = None
        if existeFiltro:
            sent = nlp(sentencaBase)
            sentFiltro = nlp(sentencaFiltro)

        conta+= 1
        caminho = "/static/images/sentence" + str(conta) + ".svg"

        if not existeFiltro:
            svg = displacy.render(sent, style="dep")
            output_path = Path("." + caminho)
            output_path.open("w", encoding="utf-8").write(svg)
            html += '<div class="row"><div class="col-lg-5"><img src="' + caminho + '" style="max-width: 120%" /></div>'
        else:
            svg = displacy.render(sent, style="dep")
            output_path = Path("." + caminho)
            output_path.open("w", encoding="utf-8").write(svg)

            caminhoFiltro = "/static/images/sentence" + str(conta) + "_filtro.svg"            
            svg = displacy.render(sentFiltro, style="dep")
            output_path = Path("." + caminhoFiltro)
            output_path.open("w", encoding="utf-8").write(svg)
            
            html += '<div class="row"><div class="col-lg-5"><img src="' + caminho + '" style="max-width: 100%" /><br><img src="' + caminhoFiltro + '" style="max-width: 100%" /></div>'

        tokens = [token for token in sent if not token.is_punct]
        
        colunasMedidas, colunasDimensoes = ProcessarSentenca(nlp, tokens, listaObjColunas)
        filtro = ' (final_result = \'\' or final_result LIKE \'LA :: Prev%\' )'
        if existeFiltro:
            tokensFiltros = [token for token in sentFiltro if not token.is_punct]
            filtro_medidas, filtro_dimensoes = ProcessarSentenca(nlp, tokensFiltros, listaObjColunas, tokenFiltro)
            print('filtro_ColMedida', filtro_medidas)
            print('filtro_ColDimensoes', filtro_dimensoes)

            conta=0
            for col in filtro_dimensoes:
                conta+= 1
                nomeParam = 'param' + str(conta)
                aux_filtro = col.nome+'= \'' + d_filtro[nomeParam] + '\''
                if filtro != '':
                    filtro += ' and ' + aux_filtro
                else:
                    filtro = aux_filtro

        df = None
        if len(colunasMedidas) == 0:
            df = GerarDfVisaoPln(id_tabela, listaObjColunas, [], filtro)
        else:
            df = GerarDfVisaoPln(id_tabela, colunasDimensoes, colunasMedidas, filtro)

        obj = GerarVisao(str(sent), df, colunasDimensoes, colunasMedidas)
        if obj != None:
            html += '<div class="col-lg-7">' + obj.grf + '</div>'
            js += obj.js
        
        html+= "</div>"

    return html, js