0

The following code create dynamically several tables. I mean, based on the size of cameraslist, we can have more or less tables. It works, but for some reason when I insert stuff on one table, the other tables also get the same record. it is duplicating the record across all tables. I tested "value.id" and on each loop the value changes. This value is an html div id. I wonder if I can render several tables in the same page.

Thanks

   function permissions() {
        let listausers = [];
        let usersdumpt = JSON.parse('{{cam_users|tojson|safe}}');
        let cameraslist = JSON.parse('{{cameras|tojson|safe}}');
        var permissions = JSON.parse('{{ cam_permissions| tojson | safe}}');
            //const users = JSON.stringify(usersdumpt, ["email", "notifications", "removable", "role", "username"]);
        var grids = [];
        for (const [key, value] of Object.entries(cameraslist).reverse()) {
            listausers = [];
            let i = 0;
            var div = document.createElement('div');
            div.id = value.id;
            div.style = "width: 100%; height: 100%;"

            document.getElementById('Permissions').appendChild(div);
            for (const [key1, value1] of Object.entries(permissions).reverse()) {
                for (const [key2, value2] of Object.entries(usersdumpt).reverse()) {
                    console.log(value1.user_name);
                    console.log(value2);
                    console.log(value1.cam_id);
                    console.log(value.id);
                    if (value1.user_name == value2 && value1.cam_id == value.id) {
                        listausers.push([key1, value2])
                    }
                }
            }

            console.log(listausers)

            new gridjs.Grid({
                columns: [
                    { id: 'id', name: '#' },
                    { id: 'nomedeutilizador', name: 'Nome de utilizador' }
                ],
                fixedHeader: true,
                data: () => {
                    return new Promise(resolve => {
                        setTimeout(() =>
                            resolve(listausers), 2000);
                    });
                },
                search: {
                    selector: (cell, rowIndex, cellIndex) => [0, 1].includes(cellIndex) ? cell : null,
                },
                sort: true,
                pagination: true,
            }).render(document.getElementById(value.id));
            console.log(value.id);
            setGridSizePer(i, value.id);
            new ResizeObserver(() => setGridSizePer(i,value.id)).observe(document.getElementById(value.id));
            i=i+1;
    }
    }

0 Answers0