PDA

View Full Version : My application does not show the records in the grid



Marcelo Augusto
2 Jul 2015, 3:31 AM
I have a grid that has a combo box and I can filter my logs for inputs, outputs and display all. However, when the application starts, nothing is shown. In chrome console, in networking, my request has nothing. I have other pagination in my application, but that's the only corner they're not working. I'm using EasyPHP 14.1. I did a test, I took all my project and put on a machine that had EasyPHP 12.1 and to my surprise it worked perfectly. I will let down the application code.

FormEntradaSaida.js (view)


Ext.define('Packt.view.inventory.entrada_saida.FormEntradaSaida', {
extend: 'Ext.form.Panel',
alias: 'widget.formentradasaida',


store: 'Packt.store.inventory.Entradas_Saidas',


requires: ['Packt.util.Util'],


frame: true,
bodyPadding: 2,


layout: {
type: 'hbox',
align: 'stretch'
},


items: [
{
xtype: 'grid',
width: '70%',
columnLines: true,
viewConfig: {
listeners: {
render: createTooltip
}
},
store: 'Packt.store.inventory.Entradas_Saidas',
columns: [
{
width: '15%',
text: 'Produto',
dataIndex: 'produto'
},
{
width: '10%',
text: 'Quantidade',
dataIndex: 'quantidade'
},
{
width: '20%',
text: 'Destino',
dataIndex: 'destino'
},
{
xtype: 'datecolumn',
width: '15%',
format: 'd-m-Y H:i:s',
text: 'Data da Operação',
dataIndex: 'dataOperacao'
},
{
width: '30%',
text: 'Usuário| Matrícula',
dataIndex: 'User_id'
},
{
width: '10%',
text: 'Operação',
dataIndex: 'operacao'
}


],
tbar: [
{
xtype: 'combo',
labelWidth: 40,
fieldLabel: 'Filtrar',
displayField: 'name',
valueField: 'valor',
queryMode: 'local',
store: Ext.create('Ext.data.Store', {
fields: ['valor', 'name'],
data: [
{"valor": "entrada", "name":"Entrada"},
{"valor": "saida", "name":"Saída"},
{"valor": "todos", "name":"Todos"}
]
}),
listeners: {
select: function(obj) {
var grid = obj.up('grid');
var liststore = grid.store;
liststore.proxy.extraParams = {
action: 'filtrar_log',
operacao: obj.getDisplayValue()
},
liststore.load();
}
}
},
{
xtype: 'tbseparator'
},
{
xtype: 'button',
text: 'Exportar para PDF',
itemId: 'exportar_pdf',
iconCls: 'pdf'
}
],
dockedItems: [
{
xtype: 'pagingtoolbar',
dock: 'bottom',
store: 'Packt.store.inventory.Entradas_Saidas',
displayInfo: true
}
]
},
{
xtype: 'tbfill'
},
{
xtype: 'form',
bodyPadding: 10,
width: '29%',
items: [
{
xtype: 'fieldset',
title: 'Formulário',
defaults: {
afterLabelTextTpl: Packt.util.Util.required,
anchor: '100%',
allowBlank: false,
labelWidth: 80
},
items: [
{
xtype: 'combobox',
fieldLabel: 'Produto',
name: 'produto',
displayField: 'nome',
valueField: 'nome',
queryMode: 'remote',
store: 'inventory.Products',
listeners: {//Evento do combobox para setar as informações do produto selecionado no fieldset de informações do produto
select: function(combo, records, e0pts) {
if(combo.getValue() != "" || combo.getValue() != null) {
//Query para pegar a referência dos campos a serem preenchidos com os valores do produto
var nomeProduto = Ext.ComponentQuery.query('#produto');
var codProduto = Ext.ComponentQuery.query('#codProduto');
var qtdeProduto = Ext.ComponentQuery.query('#qtdeProduto');
var qtdeMinProduto = Ext.ComponentQuery.query('#qtdeMinProduto');
var descProduto = Ext.ComponentQuery.query('#descProduto');
var imageProduto = Ext.ComponentQuery.query('#imageProduto');


//Setando os valores nos campos
nomeProduto[0].setText('Produto: '+ records[0].data.nome);
codProduto[0].setText('Código: '+ records[0].data.codigo);
qtdeProduto[0].setText('Quantidade no Estoque: '+ records[0].data.quantidade);
qtdeMinProduto[0].setText('Quantidade Mínima: '+ records[0].data.quantidadeMin);
descProduto[0].setText('Descrição: '+ records[0].data.descricao);
if (records[0].data.picture != null) {//Se não tiver imagem, coloque uma padrão
imageProduto[0].setSrc('resources/productImages/'+records[0].data.picture);


} else {
imageProduto[0].setSrc('resources/productImages/sem_imagem.gif');
}


}
}
}
},
{
xtype: 'textfield',
fieldLabel: 'Quantidade',
name: 'quantidade',
msgTarget: 'under'
},
{
xtype: 'textfield',
fieldLabel: 'Destino',
name: 'destino',
msgTarget: 'under'
},
{
afterLabelTextTpl: '', //Override da configuração padrão
allowBlank: true, //Override da configuração padrão
xtype: 'textarea',
fieldLabel: 'Observações',
name: 'observacoes',
height: 150
}
]
},
{
xtype: 'fieldset',
itemId: 'infoDoProduto',
title: 'Info do Produto',
cls: 'userNameText',
items: [
{
xtype: 'text',
itemId: 'produto',
text: 'Produto: ',
},
{
xtype: 'tbfill'//Separar uma informação de outra
},
{
xtype: 'text',
itemId: 'codProduto',
text: 'Código'
},
{
xtype: 'tbfill'
},
{
xtype: 'text',
itemId: 'qtdeProduto',
text: 'Quantidade no Estoque: '
},
{
xtype: 'tbfill'
},
{
xtype: 'text',
itemId: 'qtdeMinProduto',
text: 'Quantidade Mínima: '
},
{
xtype: 'tbfill'
},
{
xtype: 'text',
itemId: 'descProduto',
text: 'Descrição: '
}
]
},
{
xtype: 'fieldset',
title: 'Imagem do Produto',
//width: 300,
items: [
{
xtype: 'image',
itemId: 'imageProduto',
//height: '50%',
width: '80%',
src: ''
}
]
}
],
rbar: [//Toolbar localizada no lado direito com dois botões
{
xtype: 'button',
itemId: 'entrada',
scale: 'large',
text: 'Entrada',
iconCls: 'entrada',
iconAlign: 'top',
cls: 'x-btn-as-arrow',
formBind: true
},
{
xtype: 'tbseparator'
},
{
xtype: 'button',
itemId: 'saida',
scale: 'large',
text: 'Saída',
iconCls: 'saida',
iconAlign: 'top',
cls: 'x-btn-as-arrow',
formBind: true
}
]
}
]
});


function createTooltip(view) {//Função para mostrar uma informação ao passar o mouse sobre um registro


view.tip = Ext.create('Ext.tip.ToolTip', {
target: view.el,
delegate: view.itemSelector,
trackMouse: true,
dismissDelay: 15000,
renderTo: Ext.getBody(),
listeners: {
beforeShow: function(tip) {


var tooltip = view.getRecord(tip.triggerElement).get('observacoes');

if(tooltip == "") {
tip.update("Nenhuma observação");


} else {
tip.update(tooltip);
tip.on('show', function(){
Ext.defer(tip.show, 10, tip);
}, tip, {single: true});
}
}
}
});
}




Entradas_Saidas,js (store)


Ext.define('Packt.store.inventory.Entradas_Saidas', {
extend: 'Ext.data.Store',


requires: [
'Packt.model.inventory.Entrada_Saida'
],


model: 'Packt.model.inventory.Entrada_Saida',


//pageSize: 25,


autoLoad: true,


proxy: {
type: 'ajax',


api: {
create: 'php/inventory/entrada_saida/createEntradaSaida.php',
read: 'php/inventory/entrada_saida/listaEntradaSaida.php',
update: '',
destroy: 'php/inventory/entrada_saida/deleteEntradaSaida.php'
},


reader: {
type: 'json',
root: 'data'
},


writer: {
type: 'json',
root: 'data',
encode: true
}
}
});


listaEntradaSaida.php (PHP code)


<?php

require("../../db/db.php");
session_start();


$start = $_REQUEST['start'];
$limit = $_REQUEST['limit'];


$sql = "SELECT * FROM estoque LIMIT $start, $limit";
$sqlTotal = "SELECT COUNT(*) AS num FROM estoque";


if(isset($_REQUEST['action']) AND $_REQUEST['action'] == 'filtrar_log') {
$operacao = $_REQUEST['operacao'];


if($operacao !== 'Todos') {
$sql = "SELECT * FROM estoque WHERE operacao = '$operacao' LIMIT $start, $limit";
$sqlTotal = "SELECT count(*) AS num FROM estoque WHERE operacao = '$operacao'";
}
}


$result = array();
if ($resultdb = $mysqli->query($sql)) {
while($profile = $resultdb->fetch_assoc()) {
$result[] = $profile;
}
$resultdb->close();
}


$sqlTotal = $mysqli->query($sqlTotal);
$row = $sqlTotal->fetch_assoc();
$total = $row['num'];


echo json_encode(array(
"success" => $mysqli->connect_errno == 0,
"total" => $total,
"data" => $result
));
//FECHANDO A CONEXÃO
$mysqli->close();
?>


Thanks in advance..

scottmartin
7 Jul 2015, 11:34 AM
>>> In chrome console, in networking, my request has nothing.

Can you elaborate on this? Are you getting a JSON response from your server code? It would help to see.

If you create a manual JSON file is that seen in the grid?


api: {
read: 'data.json'
}


Scott.