Subversion Repositories bacoAlunos

Rev

Rev 1578 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script>
    /*FUNCOES DE CONFIRMACAO DO FORM BASTANTE SIMPLES*/
    function widgetConfirmSimples(form)
    {
        widgetSimpleCall('uploadFilesSimple',form,
                function()
                {
                    alert("OK");
                },
                function()
                {
                    alert("Fail");
                });
    }

    function widgetFeedbackCall(form)
    {
        widgetCall('uploadFilesFeedback',form,
                function(response)
                {
                    alert("Accao de resposta terminada: " + JSON.stringify(response));
                },
                function(response)
                {
                    alert("Accao Falhou mas as resposta foi esta: "  + JSON.stringify(response));
                });
    }
</script>

<!-- 1 - Para upload de ficheiros são necessários estes três attributos id ng-app ng-controller-->

<div class="container-fluid"
     id="exemploUploadModuleCall"
     ng-app="exemploUploadModuleCall"
     ng-controller="exemploUploadControllerCall">

<div class="panel panel-default">
    <div class="panel-heading">Exemplo de um Controlador de Widgets com Upload de Ficheiros</div>
    <div class="panel-body">


        <p>Form de Struts com Auto preenchimento de Campos mas invoca um Widget Controller</p>

        <p>Experimente a colocar manualmente este valor na caixa de transporte: {"service":"ok","uploadedFiles":[]}</p>

        <html:form styleClass="form-horizontal" action="/user/fileUploadWidgetExample" onsubmit="return false;">
            <div class="web-messages">Aqui vão aparecer as mensagens de Erro ou de Feedback do Widget</div>

            <!-- 2 - dar um ID à caixa de transporte -->

            <p>Caixa de recepção de dados do UPLOAD WIDGET</p>
            <p><input class="form-control" type="text" id="UPLOADED_FILES_RESULT"/></p>

            <div class="form-group">
                <label class="col-md-2 control-label">Campo para esconder os dados para enviar os ficheiros importados:</label>
                <div class="col-md-10">
                    <!-- 3 - associar a caixa de envio ao modelo de dados do controlador através do value -->
                    <html:text styleClass="form-control" property="uploadedFiles" value="{{jsonFiles()}}"/>
                </div>
            </div>

            <a class="btn btn-default" href="#"
               data-title="Importação para a pasta TMP Exemplo"
               data-toggle="modal"
               data-target="#filesUploadModal"
               data-jsontargetid="#UPLOADED_FILES_RESULT">
                Faça Upload de Ficheiros Clicando Aqui
            </a>
            <!-- 4 - Criar os scripts de Importacão basta copiar estes scripts exactamente como estão
            a menos que haja mais que um local para importação de ficheiros, nesse caso são necessários dois
            modulos e terão de se mudar o nome do módulo e da variavel e consequentemente o ng-app e o ng-controller no painel-->
            <script>

                //DECLARACAO DA APLICACAO LOCAL EM ANGULAR
                var exemploUploadModule = angular.module('exemploUploadModuleCall', []);
                GLOBAL_BacoAngularAppDependencies.push('exemploUploadModuleCall');

                exemploUploadModule.controller('exemploUploadControllerCall', function($scope) {
                    //$scope.files = {"service":"ok","uploadedFiles":[{fileName:"teste"}]};
                    $scope.uploadedFiles = [];
                    $scope.jsonFiles = function() {
                        return {"service":"ok","uploadedFiles": $scope.uploadedFiles };
                    };
                    $scope.removeFileFromModel = function(tmpName)
                    {
                        for(var i in $scope.uploadedFiles)
                        {
                            if($scope.uploadedFiles[i].tmpName == tmpName)
                            {
                                $scope.uploadedFiles.splice(i,1);
                            }
                        }

                    }
                });

                //EVENTO DE CHANGE PARA PUXAR DADOS PARA O MODELO
                $(document).ready(function(){
                    $("#UPLOADED_FILES_RESULT").change(function()
                    {
                        var uploadedIncomingJson = JSON.parse($("#UPLOADED_FILES_RESULT").val());
                        for(var i in uploadedIncomingJson.uploadedFiles)
                        {
                            file = uploadedIncomingJson.uploadedFiles[i];
                            angular.element($("#exemploUploadModuleCall")).scope().uploadedFiles.push(file);
                        }
                        angular.element($("#exemploUploadModuleCall")).scope().$apply();
                    });
                });

                function removeFileFromModel(tmpName)
                {
                    alert(tmpName);
                }

            </script>

            <!-- 5 - Finalmente, colocar a vista dos ficheiros importados copiar exactamente como está aqui -->
        <h2>VISTA EM ANGULAR DO MODELO DE DADOS, COM POSSIBILDADE DE UPDATE</h2>
        <div class="list-group">
            <div class="list-group-item clearfix" ng-repeat="f in uploadedFiles">
                <div class="list-group-item clearfix">
                    <div class="col-md-10">
                        <img src="<%=request.getContextPath()%>/imgs/mime/{{ f.extension }}.gif"/> - {{ f.fileName }} {{ (f.fileSize / 1024)| number:0 }}KB
                    </div>
                    <div class="col-md-2">
                        <button class="btn btn-danger" type="button" ng-click="removeFileFromModel(f.tmpName)"><span class="glyphicon glyphicon-remove"/></button>
                    </div>
                </div>
                <div class="list-group-item clearfix">
                    <div class=" col-md-2 control-label">Titulo:</div>
                    <div class="col-md-10 control-label">
                        <input type="text" class="form-control" ng-model="f.title"/>
                    </div>
                </div>
                <div class="list-group-item clearfix">
                    <div class="col-md-2 control-label">Descrição:</div>
                    <div class="col-md-10 control-label">
                        <textarea rows="3" class="form-control" ng-model="f.description"></textarea>
                    </div>
                </div>
            </div>
        </div>
    </div>

            <div class="form-group">
                <label class="col-md-2 control-label">Nome</label>
                <div class="col-md-10">
                    <html:text styleClass="form-control" property="nome"/>
                </div>
            </div>

            <button class="btn btn-success" type="button" onclick="widgetConfirmSimples(this.form)">Submeter Simulação Simples</button>
            <button class="btn btn-success" type="button" onclick="widgetFeedbackCall(this.form)">Submeter Simulação Servico Com Resposta JSON</button>
        </html:form>
    </div>
</div>

</div>