...

Elma365: Цикл страницы. Долждаться полной загрузки страницы.

Тема в разделе "Вопросы по функционалу ELMA365", создана пользователем px2099, 25 июл 2022.

  1. px2099

    px2099 New Member

    Есть необходимость подключить JS-библиотеку Tabulator для рисования красивых JS-таблиц.
    Всё вроде неплохо, в Элма 3 использовали функцинал, но там был JQuery и требования библиотеки дождаться полной загрузки страницы обеспечаивалось $.ready() (насколько я помню синтаксис).
    В Elma365 можно подключить JQuery, но не хочется тянуть тяжёлый фреймворк ради одной строки.
    Буду благодарен сообществу или разрботчиками, если подскажете как можно отследить, что страница полностью загрузилась штатными средствами?
     
  2. d.alekseev

    d.alekseev New Member

    в 365 $(document).ready() тоже работает
     
  3. px2099

    px2099 New Member

    Спасибо.
     
  4. px2099

    px2099 New Member

    <code>


    <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
    <link href="https://unpkg.com/tabulator-tables/dist/css/tabulator.min.css" rel="stylesheet">
    <script type="text/javascript" src="https://unpkg.com/tabulator-tables/dist/js/tabulator.min.js"></script>
    <meta charset="UTF-8">

    <div id="json-date" style="display: none;">
    [
    {
    "JobCode": "JobCode",
    "Job Code Office": "Job Code Office",
    "Client Name": "Client Name1",
    "Project Name": "Project Name",
    "Staff Name": "Staff Name",
    "Staff id": "Staff id",
    "Staff Grade/Position": "Staff Grade/Position",
    "Transaction Date": "Transaction Date",
    "Hours": "Hours",
    "Target Rate": "Target Rate",
    "Target Value": "Target Value",
    "Memo": "description"
    }
    ]
    </div>
    <div id="example-table"></div>


    <script>
    <%


    $(document).ready(function()
    {
    let table = new Tabulator("#example-table", {
    height: "600px",
    data:JSON.parse(document.getElementById('json-date').innerHTML),
    dataTree:true,
    addRowPos:"bottom",
    movableRows:true,
    dataTreeStartExpanded:true,
    groupToggleElement:"header",
    layout:"fitColumns",
    groupBy:["JobCode", "Staff Name"],
    columns:[
    {formatter:"rowSelection", titleFormatter:"rowSelection", headerSort:false, cellClick:function(e, cell){
    cell.getRow().toggleSelect();
    }},
    {title:"JobCode", field:"JobCode", resizable : true, responsive:0, editor:"input", sorter:"number", headerFilter:"input"},
    {title:"Job Code Office", field:"Job Code Office", width:150, editor:"input", headerFilter:"input"},
    {title:"Client Name", field:"Client Name", width:150, responsive:2, editor:"input", headerFilter:"input"},
    {title:"Project Name", field:"Project Name", width:150, editor:"input", headerFilter:"input"},
    {title:"Staff Name", field:"Staff Name", hozAlign:"center", sorter:"date", width:150, editor:"input", headerFilter:"input"},
    {title:'Staff id', field:'Staff id',width:150, editor:"input", sorter:"number", headerFilter:"input"},
    {title:'Staff Grade/Position', field:'Staff Grade/Position',width:150, editor:"input", sorter:"number", headerFilter:"input"},
    {title:'Transaction Date', field:'Transaction Date',width:150, editor:"input", sorter:"date", headerFilter:"input"},
    {title:'Hours', field:'Hours',width:150, editor:"input", sorter:"number", headerFilter:"input"},
    {title:'Target Rate', field:'Target Rate',width:150, editor:"input", sorter:"number", headerFilter:"input"},
    {title:'Target Value', field:'Target Value',width:150, editor:"input", sorter:"number", headerFilter:"input"},
    {title:'Memo', field:'Memo',width:150, editor:"input", headerFilter:"input"},
    ],
    });

    table.on("tableBuilt",function()
    {
    //console.log("AfterInit function started");
    if (table)
    {
    console.log("table defined");
    table.setGroupStartOpen(true);

    //document.getElementById("download-json").addEventListener("click", function(){table.download("json", "data.json");});
    //document.getElementById("file-load-trigger").addEventListener("click", function(){table.setDataFromLocalFile();});
    }
    else
    {
    console.log("!table");
    }
    console.log("AfterInit function ended");
    });
    //console.log(table)
    // document is ready. Do your stuff here
    });


    %>
    </script>

    </code>
     
  5. px2099

    px2099 New Member

    Примерно такое содержание виджета код получилось.