Tabelas do scriptcase

Standard

Na versão 8.1 o ScriptCase faz uso de tabelas para armazenar os dados das aplicações desenvolvidas:

sc_tbprj Tabela de Grupos
sc_tbusu Tabela de Usuários
sc_tbati Tabela de Status dos Usuários
sc_tbapl Tabela de Aplicações
sc_tbcmp Tabela de Campos
sc_tblog Tabela de esquemas de log
sc_tblog_apl Tabela de Backup de Aplicações
sc_tblog_cmp Tabela de Backup de Campos
sc_tbrep Tabela de Dicionário de Dados
sc_tbrep_tables Tabela de Dicionário de Dados (Tabelas)
sc_tbrep_fields Tabela de Dicionário de Dados (Campos)
sc_tbconex Tabela de Conexoes
sc_tbsess Tabela de sessão
sc_tbversao Tabela de Versao do Projeto
sc_tbevt Tabela de Eventos
sc_tblog_evt Tabela de Backup de Eventos
sc_tbtrans Tabela de Transacoes
sc_tbtodo Tabela de lista de tarefas
sc_tbmsg Tabela de mensagens entre usuários

Barra de progresso no scriptcase

Standard

Pare este exemplo eu usei a tabela order_details da base de dados do projeto samples(um dos projetos de exemplo disponíveis no próprio scriptcase)

1) Crie a biblioteca pública com o código no link abaixo:


ProgressBar


2) Crie uma aplicação do tipo blank com o código abaixo e marque para usar a biblioteca que você criou no passo 1 para usar nesta aplicação

 

PHP Code:
// Barra de progresso $prb = new ProgressBar(400, 30); // create new ProgressBar (width:300px,height:30px)

$prb->left = 400; // position from left
$prb->top = 120; // position from top
$prb->addLabel('text','txt1');
$prb->setLabelFont('txt1','20');
$prb->setLabelPosition('txt1','405','122','300','20');
$prb->setBarColor('#00FF7F');
$prb->setBarDirection('right');
$prb->show(); // show the ProgressBar
$sql="SELECT * FROM order_details UNION SELECT * FROM order_details UNION SELECT * FROM order_details UNION SELECT * FROM order_details UNION SELECT * FROM order_details"; sc_lookup(dataset,$sql);

$contador= count({dataset});
$prb->max = $contador;
for($b=0;$b<$contador;$b++) {
   
   $nome = {dataset[$b][0]};
   $cpf = {dataset[$b][1]};
   $id = {dataset[$b][2]};
   $prb->moveStep($b);
   $prb->setLabelValue('txt1','Processando: '.$b.'/'.$contador);
   flush();
   ob_flush();}
$prb->setLabelValue('txt1','Concluido!');  

Desativar botão (Para rotinas que demoram a processar)

Standard

Essa dica pode ser utilizada em aplicações que demoram quando estão processando e desta forma você pode evitar que o usuário clique novamente no botão. Basta adicionar o código abaixo na configuração javascript formonload da sua aplicação no scriptcase, onde sub_form_b é o id do botão que você quer esconder, para descobrir o id que o scriptcase gera basta inspecionar o elemento(botão) com o navegador:

$( ‘#sub_form_b’ ).click(function() {
alert(‘Botão Clicado Aguarde Processamento’);
$(this).hide();
});

Javascript Scriptcase

Javascript no Scriptcase

 

 

Dimensão do Modal Com sc_redir

Standard

Esta dica explica como você pode definir a largura e altura do modal de destino usando o macro sc_redir do scriptcase, foi testado tanto na versão 5 como na 6 e funcionou perfeitamente:

// 400 é a altura e 220 é a largura

sc_redir(aplicacao_destino.php, global_msg=[global_msg];tipo_msg=[tipo_msg], “modal”,””,”400″,”220″);161

Mostrar Versão do Sistema no login

Standard

Primeiro coloque o trecho de código abaixo no Evento OnScriptInit da aplicação de login

[versao_sist]=$this->Ini->nm_app_version;

Depois vá em Aplicação > Variáveis Globais e Deixe marcado apenas o escopo de SESSION e no Tipo selecione saída, desta forma esta váriável global pode ser acessada em outras aplicações do sistema caso queira exibir a versão.

Depois vá em Controle > Layout > Cabeçalho & Rodapé e vá em variáveis do cabeçalho ou rodapé, depende de onde você escolher exibir e em uma Linha exemplo LIN1_COL2 selecione no combo Valor e na caixa de texto que aparecerá ao lado digite o nome da variável global [versao_sist]

Como Integrar Relatório Jasper com o Scriptcase

Standard

Segue um passo a passo de como: Integrar os relatórios jasper com Scriptcase:
• Testado com: PHP Version 5.3.5 (Xampp 1.7.4) / Tomcat 6.0 / Mysql, SqlServer
• Instalar pacotes para utilizacao de web-services (atraves do pear)

$pear install SOAP-0.12.0
$pear install Net_DIME-1.0.2
• Como instalar e configurar o Jasper Reports:
1-Instalar Jasper Server
2-Incluir .jar do conector jtds na lib do Tomcat
3-Adicionar novo Datasource:
driver = net.sourceforge.jtds.jdbc.Driver
url/user/pass = banco
4-Inserir novos relatorios apontando para o Datasource criadoAbaixo você segue o código para chamar o relatório (Utilizar este código em uma aplicação do tipo Blank):
<?php
// PHP client for requesting reports from JasperServer via SOAP.
//USAGE:
$jasper_url = "http://localhost:8081/jasperserver/services/repository";
$jasper_username = "jasperadmin";
$jasper_password = 'jasperadmin';
$client = new JasperClient($jasper_url, $jasper_username, $jasper_password);
/* Nome do arquivo do relatório importado para o jasper server */
$report_unit = "/reports/relatorio";
/* Formato de exportaçao do relatório */
$report_format = "PDF";
/* Parâmetos que são passados para o relatório, caso seja mais de um separar por vírgulas */
$report_params = array('id_plano_curso' => 4); 
$result = $client->requestReport($report_unit, $report_format,$report_params); 
header('Content-type: application/pdf');
echo $result;
 
 
/* Essa classe (abaixo) você pode colocar numa biblioteca no Scriptcase e só marcar nas aplicações que você for usar */
class JasperClient {
  private $url;
  private $username;
  private $password;
  
  public function __construct($url, $username, $password) {
    $this->url = $url;
    $this->username = $username;
    $this->password = $password;
  }
  
  public function requestReport($report, $format, $params) {
    $params_xml = "";
    foreach ($params as $name => $value) {
      $params_xml .= "<parameter name=\"$name\"><![CDATA[$value]]></parameter>\n";
    }
    
    $request = "
      <request operationName=\"runReport\" locale=\"pt_BR\">
        <argument name=\"RUN_OUTPUT_FORMAT\">$format</argument>
        <resourceDescriptor name=\"\" wsType=\"\"
        uriString=\"$report\"
        isNew=\"false\">
        <label>null</label>
        $params_xml
        </resourceDescriptor>
      </request>
    ";
    
    $client = new SoapClient(null, array(
        'location'  => $this->url,
        'uri'       => 'urn:',
        'login'     => $this->username,
        'password'  => $this->password,
        'trace'    => 1,
        'exception'=> 1,
        'soap_version'  => SOAP_1_1,
        'style'    => SOAP_RPC,
        'use'      => SOAP_LITERAL
 
      ));
 
    $pdf = null;
    try {
      $result = $client->__soapCall('runReport', array(
        new SoapParam($request,"requestXmlString") 
      ));
      
      $pdf = $this->parseReponseWithReportData(
        $client->__getLastResponseHeaders(),
        $client->__getLastResponse());
    } catch(SoapFault $exception) {
      $responseHeaders = $client->__getLastResponseHeaders();
      if ($exception->faultstring == "looks like we got no XML document" &&
          strpos($responseHeaders, "Content-Type: multipart/related;") !== false) {
        $pdf = $this->parseReponseWithReportData($responseHeaders, $client->__getLastResponse());
      } else {
        throw $exception;
      }
    }
    
    if ($pdf)
      return $pdf;
    else
      throw new Exception("Jasper did not return PDF data. Instead got: \n$pdf");
  }
  
  protected function parseReponseWithReportData($responseHeaders, $responseBody) {
    preg_match('/boundary="(.*?)"/', $responseHeaders, $matches);
    $boundary = $matches[1];
    $parts = explode($boundary, $responseBody);
      
    $pdf = null;
    foreach($parts as $part) {
      if (strpos($part, "Content-Type: application/pdf") !== false) {
        $pdf = substr($part, strpos($part, '%PDF-'));
        break;
      }
    }
    
    return $pdf;
  }
 
}