prefeiturasp/SME-PratoAberto-Editor

View on GitHub
templates/configuracoes_unidades_especiais.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Prato Aberto - Editor Cardapio</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <style>
        /* Objetos da tabela */
        .row {
            margin-top: 40px;
            padding: 0 10px;
        }

        .forms {
            margin-top: 0px;
            padding-top: 10px;
        }

        .input-form {
            display: inline-flex;
        }

        .container {
            width: 90%;
        }

        .clickable {
            cursor: pointer;
        }

        .panel-heading div {
            margin-top: -18px;
            font-size: 15px;
        }

        .panel-body {
            display: none;
        }

        .table-responsive {
            height: 500px;
            overflow-y: auto;
            overflow-x: auto;
        }

        .panel-heading div span {
            margin-left: 5px;
        }

        .table>tbody>tr>th,
        .table>tfoot>tr>th {
            font-size: 10px;
        }

        .table>tbody>tr>td,
        .table>tfoot>tr>td {
            vertical-align: inherit;
        }

        .navbar-nav {
            margin-top: 8px;
            padding-left: 10px;
            padding-right: 15px;
        }

        thead th {
            position: sticky;
            position: -webkit-sticky;
            top: 0;
            background: white;
            z-index: 10;
        }

        input#cod_eol,
        select#school_type,
        input#latitude,
        input#longitude {
            width: 125px;

        }


        label {
            text-align: right;
            padding: 0;
        }

        .col-sm-6 {
            padding-right: 11px;
        }

        textarea {
            width: 447px;
            height: 133px;
        }
    </style>
</head>

<body>

    {% include 'messages.html' %}

    <div class="container">
        <!-- NAVBAR -->
        <div class="row">
            <nav class="navbar navbar-default">
                <div class="container-fluid">
                    <!-- Brand and toggle get grouped for better mobile display -->
                    <div class="navbar-header">
                        <a class="navbar-brand" href="#">Prato Aberto - Lista Cardápios Unidades Especiais</a>
                    </div>
                    <form method="post" action="/editor/atualiza_receitas">
                        <div class="collapse navbar-collapse">
                            <ul class="nav navbar-nav navbar-right">
                                <a type="button" class="btn btn-default " href="{{ referrer }}">
                                    <span class="glyphicon glyphicon-chevron-left"></span> VOLTAR PARA CARDÁPIOS
                                </a>

                            </ul>
                        </div>
                    </form>
                </div>
            </nav>
        </div>
        <div class="row">
            <button data-toggle="modal" data-target="#modalAddOutSourcedMenu"
                title="Adicionar nova lista de cardápio de unidade especial." class="btn btn-primary btn-lg"
                style="float: right"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Cardápio Unidade
                Especial</button>&nbsp;&nbsp;
        </div>

        <div class="row">
            <div class="panel panel-success">
                <div class="panel-heading">
                    <h2 class="panel-title">Cardápios Unidades Especiais</h2>
                    <div class="pull-right">
                        <span class="clickable filter" data-toggle="tooltip" title="Toggle table filter"
                            data-container="body">
                            <i class="glyphicon glyphicon-filter"></i>
                        </span>
                    </div>
                </div>
                <div class="panel-body">
                    <input type="text" class="form-control" id="task-table-filter" data-action="filter"
                        data-filters="#task-table" placeholder="Filter Tasks" />
                </div>
                <div class="table-responsive">
                    <div class="panel panel-default">
                        <table class="table table-hover table-striped" id="task-table">
                            <thead>
                                <tr>
                                    <th onclick="w3.sortHTML('#task-table', '.item', 'td:nth-child(1)')"
                                        style="cursor:pointer; word-wrap: break-word;min-width: 150px;max-width: 150px;">
                                        ID <i class="fa fa-sort" aria-hidden="true"></i></th>
                                    <th onclick="w3.sortHTML('#task-table', '.item', 'td:nth-child(2)')"
                                        style="cursor:pointer; word-wrap: break-word;min-width: 150px;max-width: 150px;">
                                        TIPO GESTÃO <i class="fa fa-sort" aria-hidden="true"></i></th>
                                    <th onclick="w3.sortHTML('#task-table', '.item', 'td:nth-child(3)')"
                                        style="cursor:pointer; word-wrap: break-word;min-width: 150px;max-width: 150px;">
                                        TIPO ESCOLA <i class="fa fa-sort" aria-hidden="true"></i></th>
                                    <th onclick="w3.sortHTML('#task-table', '.item', 'td:nth-child(4)')"
                                        style="cursor:pointer; word-wrap: break-word;min-width: 150px;max-width: 150px;">
                                        EDITAL <i class="fa fa-sort" aria-hidden="true"></i></th>
                                    <th onclick="w3.sortHTML('#task-table', '.item', 'td:nth-child(5)')"
                                        style="cursor:pointer; word-wrap: break-word;min-width: 150px;max-width: 150px;">
                                        DIA SEMANA <i class="fa fa-sort" aria-hidden="true"></i></th>
                                    <th onclick="w3.sortHTML('#task-table', '.item', 'td:nth-child(6)')"
                                        style="cursor:pointer; word-wrap: break-word;min-width: 150px;max-width: 150px;">
                                        IDADE <i class="fa fa-sort" aria-hidden="true"></i></th>
                                    <th onclick="w3.sortHTML('#task-table', '.item', 'td:nth-child(7)')"
                                        style="cursor:pointer; word-wrap: break-word;min-width: 150px;max-width: 150px;">
                                        REFEIÇÃO <i class="fa fa-sort" aria-hidden="true"></i></th>
                                    <th onclick="w3.sortHTML('#task-table', '.item', 'td:nth-child(8)')"
                                        style="cursor:pointer; word-wrap: break-word;min-width: 150px;max-width: 150px;">
                                        CARDÁPIO <i class="fa fa-sort" aria-hidden="true"></i></th>
                                    <th></th>
                                </tr>
                            </thead>
                            <tbody>
                                {% for linha in config: %}
                                <tr class="item">
                                    <td class="ids">{{ linha[0] }}</td>
                                    <td class="tipo_gestao">{{ linha[1] }}</td>
                                    <td class="tipo_escola" contenteditable="true">{{ linha[2] }}</td>
                                    <td class="edital" contenteditable="true">{{ linha[3] }}</td>
                                    <td class="dia_semana" contenteditable="true">{{ linha[4] }}</td>
                                    <td class="idade" contenteditable="true">{{ linha[5] }}</td>
                                    <td class="refeicao" contenteditable="true">{{ linha[6] }}</td>
                                    <td class="cardapio" contenteditable="true">{{ linha[7] }}</td>
                                    <td><a value='Delete' data-id="{{ linha[0] }}" class="remove-card"><i
                                                style='color:#D9534F;font-size:30px;text-align: center; cursor: pointer'
                                                class='fa'></i></a></td>
                                </tr>
                                {% endfor %}
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
        <footer class="container-fluid text-center">
            <br>
            <p><a href="http://pratoaberto.sme.prefeitura.sp.gov.br/"
                    title="Projeto Prato Aberto">http://pratoaberto.sme.prefeitura.sp.gov.br/</a></p>
        </footer>
    </div>

    {% include 'nova_lista_unidades_especiais.html' %}

    <!-- Script com a funcionalidade do filtro da tabela -->
    <script>
        /**
        *   I don't recommend using this plugin on large tables, I just wrote it to make the demo useable. It will work fine for smaller tables
        *   but will likely encounter performance issues on larger tables.
        *
        *       <input type="text" class="form-control" id="dev-table-filter" data-action="filter" data-filters="#dev-table" placeholder="Filter Developers" />
        *       $(input-element).filterTable()
        *
        *   The important attributes are 'data-action="filter"' and 'data-filters="#table-selector"'
        */
        (function () {
            'use strict';
            var $ = jQuery;
            $.fn.extend({
                filterTable: function () {
                    return this.each(function () {
                        $(this).on('keyup', function (e) {
                            $('.filterTable_no_results').remove();
                            var $this = $(this),
                                search = $this.val().toLowerCase(),
                                target = $this.attr('data-filters'),
                                $target = $(target),
                                $rows = $target.find('tbody tr');

                            if (search == '') {
                                $rows.show();
                            } else {
                                $rows.each(function () {
                                    var $this = $(this);
                                    $this.text().toLowerCase().indexOf(search) === -1 ? $this.hide() : $this.show();
                                })
                                if ($target.find('tbody tr:visible').size() === 0) {
                                    var col_count = $target.find('tr').first().find('td').size();
                                    var no_results = $('<tr class="filterTable_no_results"><td colspan="' + col_count + '">No results found</td></tr>')
                                    $target.find('tbody').append(no_results);
                                }
                            }
                        });
                    });
                }
            });
            $('[data-action="filter"]').filterTable();
        })(jQuery);

        $(function () {
            // attach table filter plugin to inputs
            $('[data-action="filter"]').filterTable();

            $('.container').on('click', '.panel-heading span.filter', function (e) {
                var $this = $(this),
                    $panel = $this.parents('.panel');

                $panel.find('.panel-body').slideToggle();
                if ($this.css('display') != 'none') {
                    $panel.find('.panel-body input').focus();
                }
            });
            $('[data-toggle="tooltip"]').tooltip();
        })
    </script>

    <!-- Botões de ordenação da tabela -->
    <script src="/editor/static/js/w3.js"></script>

    <!-- Substitui o texto do dropdown -->
    <script>
        $('.dropdown-toggle').dropdown();
        $(".dropdown-menu > li").click(function () {
            var $toggle = $(this).parent().siblings('.dropdown-toggle');
            $toggle.html("<i class=\"icon icon-envelope icon-white\"></i> " + $(this).text() + "<span class=\"caret\"></span>")
        });
    </script>

    <!-- Deleta linha da tabela -->
    <script>
        function deleteRow(r) {
            if (confirm('Deseja remover este cardápio?')) {
                var i = r.parentNode.parentNode.rowIndex;
                document.getElementById("task-table").deleteRow(i);

            }
        }

        jQuery('.remove-card').click(function () {
            var id = jQuery(this).attr('data-id');
            $.get('/remove-lista-terceirizada/' + id, {}, function (data) {
                alert(data.message);
                location.reload();

            });
        });
    </script>



    <!-- Monta tabela -->
    <script>
        function geraTabela() {
            json_dump = [];
            $('#task-table tr.item').each(function () {
                var tipo_gestao = $(this).find(".tipo_gestao").html();
                var tipo_escola = $(this).find(".tipo_escola").html();
                var edital = $(this).find(".edital").html();
                var dia_semana = $(this).find(".dia_semana").html();
                var idade = $(this).find(".idade").html();
                var refeicao = $(this).find(".refeicao").html();
                var cardapio = $(this).find(".cardapio").html();
                var Tabela = [tipo_gestao, tipo_escola, edital, dia_semana, idade, refeicao, cardapio]
                json_dump.push(Tabela);
            });
            $('#json_dump').attr('value', JSON.stringify(json_dump))

        }
    </script>



</body>

</html>