<?php
require_once("config/config_dir_raiz.php");
include_once("cabecalho.php");
include_once("rodape.php");

?>
<head>
	<style>
		.tabela_view tr:nth-child(even) {background-color: #f2f2f2;}
		.tabela_view { border-collapse: collapse;}
		.tabela, td, th {
		  padding: 10px;
		}
		/*#table, td, th {
		  border: 1px solid;
		}*/
	</style>
</head>

<div id="etapa1">
	Etapa 1 <Br><Br>
	
	Query:<Br>
	<input type="text"  class="form " id="nome_analise" >
	<Br
	Query:<Br>
	<textarea id="query" name="query" rows="4" cols="50">

	</textarea>
	<Br>
	Filtros:<Br>
	<button onclick="analisar_colunas_query()">Adicionar filtro</button>
	Filtros estaticos servem para melhorar o desempenho <br>
	
		<div id="resultadoBi_filtro"  >
			<div id="linha_grid_1" style="width: 300px; border: solid 1px black; display: table; float: left;">
				<div style="width: auto; float: left;">
					<span class="form_obrigatorio_grid_editavel">&nbsp;</span>
					<a href="javaScript:void(0)" class="cor_verde" onclick="$('#linha_grid_1').remove();">
					<i class="fa fa-trash" aria-hidden="true"></i></a>
				</div>
				<div style="display: none; float: left;">
					<span class="form_obrigatorio_grid_editavel">&nbsp;</span>
					<label style="display: none;">Código</label>
					<input type="text" readonly="" class="form mask" name="listtablebi_filtro1codigo" placeholder="000000000000" data-mask="000000000000" value="" valuedefault="" autocomplete="off" maxlength="12">
				</div>
				<div style="width: auto; display: none;">
					<label style="">Análise</label>
					<input type="hidden" class="form" name="analise" placeholder="Análise" readonly="" value="" valuedefault="">
				</div>
				<div style="width: 100px; float: left;">
					<label style=""><span class="form_obrigatorio">*</span>Tipo</label>
					<select class="form" name="listtablebi_filtro1tipo" placeholder="Tipo" required="" value="" valuedefault="" style="width: 100%; padding: 5px;" tabindex="-1" aria-hidden="true">
						<option value=""></option>
						<option value="1">texto</option>
						<option value="2">número inteiro</option>
						<option value="3">número decimal</option>
						<option value="4">data</option>
						<option value="5">data hora minuto</option>
						<option value="6">múltipla escolha</option>
					</select>
				</div>
				<div style="width: 100px; float: left;">
					<label style=""><span class="form_obrigatorio">*</span>Id</label>
					<input type="text" class="form" name="listtablebi_filtro1id" placeholder="Id" required="" value="" valuedefault="">
				</div>
				<div style=" clear: both; width: 100%; "></div>
				<div style="width: 100px; float: left;">
					<label style=""><span class="form_obrigatorio">*</span>Descrição</label>
					<input type="text" class="form" name="listtablebi_filtro1descricao" placeholder="Descrição" required="" value="" valuedefault="">
				</div>
				<div style="width: 100px; float: left;"><span class="form_obrigatorio_grid_editavel">&nbsp;</span>
					<label style="">Obrigatório</label>
					<input type="checkbox" class="" name="listtablebi_filtro1obrigatorio" placeholder="Obrigatório" value="" valuedefault="" onclick="checkboxForm(this);"> 
				</div>
				<div style=" clear: both; width: 100%; "></div>
				<div style="width: 100px; float: left;"><span class="form_obrigatorio_grid_editavel">&nbsp;</span>
					<label style="">Tabelabuscar</label>
					<input type="text" class="form" name="listtablebi_filtro1tabela_buscar" placeholder="Tabelabuscar" value="" valuedefault="">
				</div>
				<div style="width: 100px; float: left;">
					<span class="form_obrigatorio_grid_editavel">&nbsp;</span>
					<label style="">Colunabuscar</label>
					<input type="text" class="form" name="listtablebi_filtro1coluna_buscar" placeholder="Colunabuscar" value="" valuedefault="">
				</div>
			</div>
			
			
		
		</div>
		
	<div style=" clear: both; width: 100%; "></div>	
			
	
	
	<Br><Br>
	<button onclick="analisar_colunas_query()">Analisar query e avançar</button>
	<Br><Br>
	Obs: Será realizado uma consulta com limit 20 linhas para obter o tipo de dados de cada coluna
	
</div>

<div id="etapa2" style="display: none;">
	Etapa 2 <Br><Br>
	Escolha o tipo da análise
	<select class="form" id="select_tipo_analise" placeholder="Tipo"  style="width: 100%; padding: 5px;">
		<option value=""></option>
		<option value="tabela">Tabela simples</option>
		<option value="tabela_quebra">Tabela com quebra parcial</option>
		<option value="tabela_vertical">Tabela com colunas vertical</option>
		<option value="grafico">Gráfico</option>
	</select>
	<Br><Br>
	<button onclick="escolher_tipo_analise()">Avançar</button>
</div>	

<div id="etapa3" style="display: none;">
	Análise vertical
	<table id="tabela" border="1">
		<thead>
		<tr>
			<td><Br><Br> Colunas visualização
				<select class="form" id="select_colunas_info" placeholder="Tipo" onchange="atualiza_select_vertical()"  multiple style="width: 150px; padding: 5px;">
					<option value=""></option>
				</select>
			</td>
			
			<td>Coluna vertical (Exemplo Mes: JAN, FEV, MAR)<Br>
				<select class="form" id="select_coluna_vertical" placeholder="Tipo" onchange="atualiza_select_valores_vertical()"  style="width: 150px; padding: 5px;">
					<option value=""></option>
				</select>
				<Br>
				JAN
				<Br>Valor 1 (Colunas de valores)
				<select class="form" id="select_colunas_valores_vertical" onchange="atualiza_select_quebrar_parcial_vertical()" placeholder="Tipo" multiple   style="width: 150px; padding: 5px;">
					<option value=""></option>
				</select>
			</td>
			<td>- <Br>
				<Br><Br><Br>
				Valor 2
			</td>
			<td>- <Br>
				<Br><Br><Br>
				Valor 3
			</td>
			<td> <Br>
				<Br>
				FEV
				<Br><Br>Valor 1
			</td>
			<td>- <Br>
				<Br><Br><Br>
				Valor 2
			</td>
			<td>- <Br>
				<Br><Br><Br>
				Valor 3
			</td>
			<td> <Br>
				<Br>
				MAR
				<Br><Br>Valor 1
			</td>
			<td>- <Br>
				<Br><Br><Br>
				Valor 2
			</td>
			<td>- <Br>
				<Br><Br><Br>
				Valor 3
			</td>
		</tr>
		</thead>
		<tbody>
			<tr><td>-</td></tr>
			<tr><td>-</td></tr>
			<tr><td>Total parcial. (Colunas tot parcial)
				<select class="form" id="select_colunas_quebra_parcial_vertical" placeholder="Tipo"  multiple style="width: 150px; padding: 5px;">
					<option value=""></option>
				</select>
			</td></tr>
			<tr><td>-</td></tr>
			<tr><td>-</td></tr>
		</tbody>
	</table>

	
	
	<!--
	Tebela simples
	<select class="form" id="select_colunas_info" placeholder="Tipo" onchange="atualiza_figura_tabelaSimples()" multiple style="width: 150px; padding: 5px;">
		<option value=""></option>
	</select>
	<div id="tabela_simples_div" style="width: 100%;">
		<table class="tabela_view">
			<thead>
			<tr>
				<td>aa</td>
			</tr>
			</thead>
			<tbody>
				<tr><td>-</td></tr>
				<tr><td>-</td></tr>
				<tr><td>-</td></tr>
				<tr><td>-</td></tr>
			</tbody>
		</table>
	</div>	
	
	-->
	<script>
		$("#select_colunas_info").select2({ width: '100%' });
		//abaixo codigo para colocar na sequencia de clique
		$("#select_colunas_info").on("select2:select", function (evt) {var element = evt.params.data.element; var $element = $(element); $element.detach(); $(this).append($element); $(this).trigger("change");});
		//if(tipo_analise == "tabela_vertical")
		//{
			$("#select_coluna_vertical").select2({ width: '100%' });
			$("#select_colunas_quebra_parcial_vertical").select2({ width: '100%' });
			$("#select_colunas_valores_vertical").select2({ width: '100%' });
			//abaixo codigo para colocar na sequencia de clique
			$("#select_colunas_quebra_parcial_vertical").on("select2:select", function (evt) {var element = evt.params.data.element; var $element = $(element); $element.detach(); $(this).append($element); $(this).trigger("change");});
			$("#select_colunas_valores_vertical").on("select2:select", function (evt) {var element = evt.params.data.element; var $element = $(element); $element.detach(); $(this).append($element); $(this).trigger("change");});
		
		//}
	</script>
	<button onclick="finalizar_analise()">Finalizar</button>
	
</div>
	
<script>
	colunas = null;
	tipo_analise = null;
	function analisar_colunas_query()
	{
		$.post("src/controller/Bi_analiseControllerUser.php?mod=analisar_colunas_query", 
			{query: $("#query").val()}, 
			function (retorno)
			{
				if(retorno.length > 0)
				{
					colunas = retorno;
					$("#etapa1").css("display", "none");
					$("#etapa2").css("display", "block");
				}
				else
				{
					alert("Sem dados para a consulta");
				}
			},'json'
		);	
	}
	
	function escolher_tipo_analise()
	{
		tipo_analise = $("#select_tipo_analise").val();
		$("#etapa1").css("display", "none");
		$("#etapa2").css("display", "none");
		$("#etapa3").css("display", "block");
		for(i =0; i < colunas.length; i++)
		{
			$("#select_colunas_info").append($('<option>', {
				value: colunas[i].nome,
				text: colunas[i].nome
			}));
		}
		if(tipo_analise == "tabela_vertical")
		{
			
			for(i =0; i < colunas.length; i++)
			{
				//if(colunas[i].tipo_dado != "int" && colunas[i].tipo_dado != "float")
				//{
					$("#select_coluna_vertical").append($('<option>', {
						value: colunas[i].nome,
						text: colunas[i].nome
					}));
				//}
				
				if(colunas[i].tipo_dado == "int" || colunas[i].tipo_dado == "float")
				{
					$("#select_colunas_valores_vertical").append($('<option>', {
						value: colunas[i].nome,
						text: colunas[i].nome
					}));
				}
			}
		}
	}
	
	function atualiza_figura_tabelaSimples()
	{
		html='<table class="tabela_view">';
		tabela = $("#select_colunas_info").val();
		$("#tabela_simples_div").append("<thead><tr>");
		if(tabela.length > 0)
		{
			for(i =0; i < tabela.length; i++)
			{
				html+="<td>"+tabela[i]+"</td>";
			}
		}
		html+="</tr></thead>";
		
		html+= "<tbody>";
		htmlBody = "<tr>";
		if(tabela.length > 0)
		{
			for(i =0; i < tabela.length; i++)
			{
				htmlBody+= "<td>-</td>";
			}
		}
		htmlBody += "</tr>";
		htmlBody += htmlBody;
		html+=htmlBody+"</tbody>";
		
		html+='</table>';
		
		$("#tabela_simples_div").html(html);
	}
	
	function finalizar_analise()
	{
		colunasSelecionadas = $("#select_colunas_info").val();
		aColunasSelecionadas = [];
		strColunas = "";
		for(i =0; i < colunasSelecionadas.length; i++)
		{
			for(j =0; j < colunas.length; j++)
			{
				if(colunas[j].nome == colunasSelecionadas[i])
				{
					if(strColunas != "")
					{
						strColunas += ",";
					}
					strColunas += "`"+colunas[j].nome+"`";
					//console.log(colunas[j].nome+" "+colunas[j].tipo_dado);
					aColunasSelecionadas.push({nome: colunas[j].nome, tipo: colunas[j].tipo_dado});
				}
			}
			strColunas.replaceAll("``","`");
		}
		colunas_view_vertical = "";
		colunas_valores_vertical = "";
		coluna_vertical = "";
		colunas_quebra_parcial_vertical = "";
		if(tipo_analise == "tabela_vertical")
		{
			if($("#select_colunas_info").val() != null)
			{
				//colunas_view_vertical = $("#select_colunas_info").val().toString();
				for(k =0; k < $("#select_colunas_info").val().length; k++)
				{
					if(colunas_view_vertical != ""){colunas_view_vertical += ",";}
					colunas_view_vertical += "`"+$("#select_colunas_info").val()[k]+"`";
				}
				colunas_view_vertical.replaceAll("``","`");
				
			}
			if($("#select_colunas_valores_vertical").val() != null)
			{
				//colunas_valores_vertical = $("#select_colunas_valores_vertical").val().toString();
				for(k =0; k < $("#select_colunas_valores_vertical").val().length; k++)
				{
					if(colunas_valores_vertical != ""){colunas_valores_vertical += ",";}
					colunas_valores_vertical += "`"+$("#select_colunas_valores_vertical").val()[k]+"`";
				}
				colunas_valores_vertical.replaceAll("``","`");
			}
			coluna_vertical = $("#select_coluna_vertical").val();
			if($("#select_colunas_quebra_parcial_vertical").val() != null)
			{
				//colunas_quebra_parcial_vertical = $("#select_colunas_quebra_parcial_vertical").val().toString();
				for(k =0; k < $("#select_colunas_quebra_parcial_vertical").val().length; k++)
				{
					if(colunas_quebra_parcial_vertical != ""){colunas_quebra_parcial_vertical += ",";}
					colunas_quebra_parcial_vertical += "`"+$("#select_colunas_quebra_parcial_vertical").val()[k]+"`";
				}
				colunas_quebra_parcial_vertical.replaceAll("``","`");
			}
		}
		if(coluna_vertical == "" && colunas_valores_vertical == "")
		{
			query = " select "+strColunas+" from ("+$("#query").val()+") a";
			query += " order by "+strColunas
		}
		else if(coluna_vertical != "" && colunas_valores_vertical != "")
		{
			coluna_vertical = "`"+coluna_vertical+"`";
			query = " select "+strColunas+","+coluna_vertical+","+colunas_valores_vertical+" from ("+$("#query").val()+") a ";
			query += " order by "+strColunas
		}
		else if(colunas_valores_vertical != "" )
		{
			query = " select "+strColunas+", "+colunas_valores_vertical+" from ("+$("#query").val()+") a";
			query += " order by "+strColunas
		}
		else
		{
			query = $("#query").val();
		}
		
		analise = {nome: $("#nome_analise").val(), query: query, colunas_view_vertical: colunas_view_vertical, 
				colunas_valores_vertical: colunas_valores_vertical, coluna_vertical: coluna_vertical,
				colunas_quebra_parcial_vertical: colunas_quebra_parcial_vertical
			};
		$.post("src/controller/Bi_analiseControllerUser.php?mod=salvar_analise", 
			analise, 
			function (retorno)
			{
				
			},'json'
		);	
		
	}
	
	$(".select2-container--default").click(function(){
		//reprocessar ao abrir os selects
	  atualiza_select_vertical()
	});
	function atualiza_select_vertical()
	{
		colunasViewSelecionadas = $("#select_colunas_info").val();
		//$("#select_colunas_quebra_parcial_vertical").empty();
		for(i =0; i < colunasViewSelecionadas.length; i++)
		{
			
			//retira dos outros select
			//$("#select_coluna_vertical option[value='"+colunasViewSelecionadas[i]+"']").css("display", "none");
			//$("#select_colunas_valores_vertical option[value='"+colunasViewSelecionadas[i]+"']").css("display", "none");
			$("#select2-select_coluna_vertical-results .select2-results__option").each(function(){
				if($(this).html()==colunasViewSelecionadas[i])
				{
					$(this).css("display", "none");
				}
			});
			$("#select2-select_colunas_valores_vertical-results .select2-results__option").each(function(){
				if($(this).html()==colunasViewSelecionadas[i])
				{
					$(this).css("display", "none");
				}
			});
			atualiza_select_valores_vertical();
		}
		
	}
	function atualiza_select_valores_vertical()
	{
		$("#select2-select_colunas_valores_vertical-results .select2-results__option").each(function(){
				if($(this).html()==$("#select_coluna_vertical").val())
				{
					$(this).css("display", "none");
				}
			});	
	}
	function atualiza_select_quebrar_parcial_vertical()
	{
		colunasViewSelecionadas = $("#select_colunas_info").val();
		//$("#select_colunas_quebra_parcial_vertical").empty();
		for(i =0; i < colunasViewSelecionadas.length; i++)
		{
			$("#select_colunas_quebra_parcial_vertical").append($('<option>', {
				value: colunasViewSelecionadas[i],
				text: colunasViewSelecionadas[i]
			}));
		}
	}
</script>