Моя страница не масштабируется в скрипте приложения Google.только на мобильном телефоне и когда не в ландшафтном режиме - PullRequest
0 голосов
/ 03 июня 2019

Я создал страницу с формой. Когда я попробовал это в chrome, масштабирование работает просто отлично. После того, как я создал страницу скрипта приложения Google, масштабирование не работает должным образом при использовании мобильного размера. это работает, когда я перевожу мобильный телефон в ландшафтный режим. В Firefox это работает.

Моя первая страница была создана с materializecss. В первый раз я попробовал, поэтому подумал, что с этим возникла проблема. Я воссоздал страницу с начальной загрузкой, тот же результат. Я не могу найти проблему. Надеюсь, ты сможешь мне помочь. Я создаю выборку с данными из электронной таблицы.

<!DOCTYPE html>
<html lang="fr">

<head>
   <base target="_top">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="description" content="">
    <meta name="author" content="Armin Neumann">
    <link rel="icon" href="#">
    <!-- Compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
   <!-- <meta name="viewport" content="width=device-width, initial-scale=1,  minimum-scale=1.0, maximum-scale=1.0, shrink-to-fit=no"/>-->
    <!-- custom css -->
    <?!= include('stylesheet'); ?>
        <title>GoodId Intervention</title>
</head>

<body>

        <div class="container center">



        <div class="py-5 text-center">
                <img class="d-block mx-auto mb-4" src="http://www.goodid-fr.com/wp-content/uploads/2018/04/logo_goodid.jpg" alt="" max-height="100px" width="auto">
                <h2>Intervention</h2>

              </div>
<!-- Default form contact -->

<div class="row justify-content-center">
<form class="text-center border border-light col-md-6" id="form" onsubmit="handleFormSubmit(this)" name="form">

    <p class="h4 mb-4">Temps passé pour le client</p>

    <!-- Name -->
    <input type="date" id="date" name="date" class="form-control mb-4 col-sm-12"  required>



    <!-- Subject -->
    <label>Acteur</label>
    <select class=" custom-select mb-4 col-sm-12" id="acteur" name="acteur" required>
        <option value="" disabled selected>Sélectionner...</option>

    </select>

    <label>Client</label>
    <select class="custom-select mb-4 col-sm-12" id="client" name="client" required>
        <option value="" disabled selected>Sélectionner...</option>

    </select>
    <label>Contract</label>
    <select class=" custom-select mb-4 col-sm-12" id="contract" name="contract" required>
        <option value="" disabled selected>Sélectionner...</option>

    </select>


    <input type="number" name="time" id="time" class="form-control mb-4 col-sm-12" placeholder="Temps passeé(in min)" required>
    <!-- Message -->
    <div class="form-group">
        <textarea class="form-control rounded-0" id="notes" name="notes" rows="10" placeholder="Message"></textarea>
    </div>



    <!-- Send button -->
    <button class="btn btn-info btn-block" type="submit">Send</button>

</form>

</div>
<div class="row justify-content-center">
<button id="reset-button" class="btn btn-warning btn-lg " style="width:40%; margin-top:10px">Reset
    </button>
</div>
</div>
<!-- Default form contact -->


    <footer class="row justify-content-center">

        <div class="footer-copyright ">
            <div class=" container center">
                Made by
                <a class="orange-text text-lighten-3" href="http://www.goodid-fr.com/">GoodId </a> Version:
                <?!= version ?>
            </div>
        </div>
    </footer>
    <div class="modal loading">
        <!-- Place at bottom of page -->
    </div>
    <!-- Compiled and minified JavaScript -->
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
    <script>


       var acteurs = <?!= acteurs ?> ;
       var clients = <?!= clients ?> ;


        /*
        function to get contracts
        */

        document.getElementById("client").addEventListener("change", function () {
            let val = document.getElementById("client").value;
            console.log("val :"+val);
              var body = document.querySelector('body');
            body.classList.add("load");
            if (val != "") {
                google.script.run.withSuccessHandler(setContracts).getContracts(val);
            }
        });


        document.addEventListener('DOMContentLoaded', function () {
             var selActeur = document.getElementById("acteur");
             var selClients = document.getElementById("client");
             var optActeur;
             var optClients;
             var resetBtn = document.getElementById("reset-button");
             // NOTE: showAlert(); ou showAlert(param); NE fonctionne PAS ici.
             // Il faut fournir une valeur de type function (nom de fonction déclaré ailleurs ou declaration en ligne de fonction).
             resetBtn.onclick = reset;



            for (x in acteurs) {
                  optActeur = document.createElement('option');
                  optActeur.appendChild( document.createTextNode(acteurs[x]) );
                  // set value property of opt
                 optActeur.value = acteurs[x]; 
                // add opt to end of select box (sel)
                selActeur.appendChild(optActeur); 
            }

            for (c in clients) {
                optClients = document.createElement('option');
                optClients.appendChild( document.createTextNode(clients[c]) );
                // set value property of opt
                optClients.value = clients[c]; 
                // add opt to end of select box (sel)
                selClients.appendChild(optClients); 
            }

           // var elems = document.querySelectorAll('select');
            var elema = document.getElementById("acteur");
            var elemc = document.getElementById("client");
            var elemco = document.getElementById("contract");


            //var instances = M.FormSelect.init(elems);
            var elemt = document.querySelectorAll('.datepicker');


        });

        /**
         * function to set acteurs
         * 
         * @param {string or json} titles 
         * return html select for titles
         */
        function setContracts(contracts) {
            var elems = document.getElementById("contract");
            removeAllOptions(elems, false);
             var optContract;
             console.log(contracts);
            for (v in contracts) {
                optContract = document.createElement('option');
                optContract.appendChild( document.createTextNode(contracts[v]) );
                // set value property of opt
                optContract.value = contracts[v]; 
                // add opt to end of select box (sel)
                elems.appendChild(optContract); 
            }
             var body = document.querySelector('body');
            body.classList.remove("load");
        }




        function reset(){

               document.getElementById("form").reset();
               var body = document.querySelector('body');
               var elems = document.getElementById("contract");
         var optContract;
            var elems = document.getElementById("contract");
           removeAllOptions(elems, false);
                optContract = document.createElement('option');
                optContract.appendChild( document.createTextNode('Sélectionner...') );
                // set value property of opt
                optContract.value = ""; 
                // add opt to end of select box (sel)
                elems.appendChild(optContract); 
                elems.options[0].disabled = true;
                elems.options[0].selected = true;
               body.classList.remove("load");
        }

        function formulaireEnvoye() {
            var body = document.querySelector('body');
             var elems = document.getElementById("contract");
             var optContract;
           reset();
           removeAllOptions(elems, false);
            optContract = document.createElement('option');
                optContract.appendChild( document.createTextNode('Sélectionner...') );
                // set value property of opt
                optContract.value = ''; 
                // add opt to end of select box (sel)
                elems.appendChild(optContract); 
                elems.options[0].disabled = true;
                elems.options[0].selected = true;
             body.classList.remove("load");
        }

        function handleFormSubmit(formObject) {
            var body = document.querySelector('body');
            body.classList.add("load");
            event.preventDefault();
            google.script.run.withSuccessHandler(formulaireEnvoye).processForm(formObject);
        }


        function removeAllOptions(sel, removeGrp) {
        var len, groups, par;
        if (removeGrp) {
        groups = sel.getElementsByTagName('optgroup');
        len = groups.length;
        for (var i=len; i; i--) {
            sel.removeChild( groups[i-1] );
        }

    }

    len = sel.options.length;
    for (var i=len; i; i--) {
        par = sel.options[i-1].parentNode;
        par.removeChild( sel.options[i-1] );
    }
}
    </script>

</body>

</html>
function doGet(e) {
     if (e.parameter.page == 'test') {
        template = HtmlService.createTemplateFromFile('test');
        }else{
    var template = HtmlService.createTemplateFromFile('index');
}
    template.version = version;
    template.acteurs = getActeurs();
    template.clients = getClients();

    return template
        .evaluate()
        .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
<style>

.loading {
    display: none;
    position: fixed;
    z-index: 9999;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    background: rgba( 255, 255, 255, .8) url('https://i.stack.imgur.com/FhHRx.gif') 50% 50% no-repeat;
}

/* When the body has the loading class, we turn
the scrollbar off with overflow:hidden */
body.load .loading {
    overflow: hidden;
}
/* Anytime the body has the loading class, our
modal element will be visible */
body.load .loading {
    display: block;
}
</style>

Ожидаемый результат - размещение страницы на экране мобильного телефона. Нет сообщений об ошибках

1 Ответ

0 голосов
/ 03 июня 2019

Вы должны добавить метатег viewport в свой HtmlOutput для правильного рендеринга на экранах мобильных устройств.

template = HtmlService.createTemplateFromFile('test');
template.addMetaTag('viewport', 'width=device-width, initial-scale=1');
...