252 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			252 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			JavaScript
		
	
	
/*
 | 
						|
Template Name: Attex - Responsive 5 Admin Dashboard
 | 
						|
Author: CoderThemes
 | 
						|
Website: https://coderthemes.com/
 | 
						|
Contact: support@coderthemes.com
 | 
						|
File: datatable js
 | 
						|
*/
 | 
						|
 | 
						|
class GridDatatable {
 | 
						|
 | 
						|
    init() {
 | 
						|
        this.basicTableInit();
 | 
						|
    }
 | 
						|
 | 
						|
    basicTableInit() {
 | 
						|
 | 
						|
        // Basic Table
 | 
						|
        if (document.getElementById("table-gridjs"))
 | 
						|
            new gridjs.Grid({
 | 
						|
                columns: [{
 | 
						|
                    name: 'ID',
 | 
						|
                    formatter: (function (cell) {
 | 
						|
                        return gridjs.html('<span class="font-semibold">' + cell + '</span>');
 | 
						|
                    })
 | 
						|
                },
 | 
						|
                    "Name",
 | 
						|
                {
 | 
						|
                    name: 'Email',
 | 
						|
                    formatter: (function (cell) {
 | 
						|
                        return gridjs.html('<a href="">' + cell + '</a>');
 | 
						|
                    })
 | 
						|
                },
 | 
						|
                    "Position", "Company", "Country",
 | 
						|
                {
 | 
						|
                    name: 'Actions',
 | 
						|
                    width: '120px',
 | 
						|
                    formatter: (function (cell) {
 | 
						|
                        return gridjs.html("<a href='#' class='text-reset text-decoration-underline'>" + "Details" + "</a>");
 | 
						|
                    })
 | 
						|
                },
 | 
						|
                ],
 | 
						|
                pagination: {
 | 
						|
                    limit: 5
 | 
						|
                },
 | 
						|
                sort: true,
 | 
						|
                search: true,
 | 
						|
                data: [
 | 
						|
                    ["01", "Jonathan", "jonathan@example.com", "Senior Implementation Architect", "Hauck Inc", "Holy See"],
 | 
						|
                    ["02", "Harold", "harold@example.com", "Forward Creative Coordinator", "Metz Inc", "Iran"],
 | 
						|
                    ["03", "Shannon", "shannon@example.com", "Legacy Functionality Associate", "Zemlak Group", "South Georgia"],
 | 
						|
                    ["04", "Robert", "robert@example.com", "Product Accounts Technician", "Hoeger", "San Marino"],
 | 
						|
                    ["05", "Noel", "noel@example.com", "Customer Data Director", "Howell - Rippin", "Germany"],
 | 
						|
                    ["06", "Traci", "traci@example.com", "Corporate Identity Director", "Koelpin - Goldner", "Vanuatu"],
 | 
						|
                    ["07", "Kerry", "kerry@example.com", "Lead Applications Associate", "Feeney, Langworth and Tremblay", "Niger"],
 | 
						|
                    ["08", "Patsy", "patsy@example.com", "Dynamic Assurance Director", "Streich Group", "Niue"],
 | 
						|
                    ["09", "Cathy", "cathy@example.com", "Customer Data Director", "Ebert, Schamberger and Johnston", "Mexico"],
 | 
						|
                    ["10", "Tyrone", "tyrone@example.com", "Senior Response Liaison", "Raynor, Rolfson and Daugherty", "Qatar"],
 | 
						|
                ]
 | 
						|
            }).render(document.getElementById("table-gridjs"));
 | 
						|
 | 
						|
        // card Table
 | 
						|
        if (document.getElementById("table-card"))
 | 
						|
            new gridjs.Grid({
 | 
						|
                columns: ["Name", "Email", "Position", "Company", "Country"],
 | 
						|
                sort: true,
 | 
						|
                pagination: {
 | 
						|
                    limit: 5
 | 
						|
                },
 | 
						|
                data: [
 | 
						|
                    ["Jonathan", "jonathan@example.com", "Senior Implementation Architect", "Hauck Inc", "Holy See"],
 | 
						|
                    ["Harold", "harold@example.com", "Forward Creative Coordinator", "Metz Inc", "Iran"],
 | 
						|
                    ["Shannon", "shannon@example.com", "Legacy Functionality Associate", "Zemlak Group", "South Georgia"],
 | 
						|
                    ["Robert", "robert@example.com", "Product Accounts Technician", "Hoeger", "San Marino"],
 | 
						|
                    ["Noel", "noel@example.com", "Customer Data Director", "Howell - Rippin", "Germany"],
 | 
						|
                    ["Traci", "traci@example.com", "Corporate Identity Director", "Koelpin - Goldner", "Vanuatu"],
 | 
						|
                    ["Kerry", "kerry@example.com", "Lead Applications Associate", "Feeney, Langworth and Tremblay", "Niger"],
 | 
						|
                    ["Patsy", "patsy@example.com", "Dynamic Assurance Director", "Streich Group", "Niue"],
 | 
						|
                    ["Cathy", "cathy@example.com", "Customer Data Director", "Ebert, Schamberger and Johnston", "Mexico"],
 | 
						|
                    ["Tyrone", "tyrone@example.com", "Senior Response Liaison", "Raynor, Rolfson and Daugherty", "Qatar"],
 | 
						|
                ]
 | 
						|
            }).render(document.getElementById("table-card"));
 | 
						|
 | 
						|
 | 
						|
        // pagination Table
 | 
						|
        if (document.getElementById("table-pagination"))
 | 
						|
            new gridjs.Grid({
 | 
						|
                columns: [{
 | 
						|
                    name: 'ID',
 | 
						|
                    width: '120px',
 | 
						|
                    formatter: (function (cell) {
 | 
						|
                        return gridjs.html('<a href="" class="font-medium">' + cell + '</a>');
 | 
						|
                    })
 | 
						|
                }, "Name", "Date", "Total", "Status",
 | 
						|
                {
 | 
						|
                    name: 'Actions',
 | 
						|
                    width: '100px',
 | 
						|
                    formatter: (function (cell) {
 | 
						|
                        return gridjs.html("<button type='button' class='btn btn-sm btn-light'>" +
 | 
						|
                            "Details" +
 | 
						|
                            "</button>");
 | 
						|
                    })
 | 
						|
                },
 | 
						|
                ],
 | 
						|
                pagination: {
 | 
						|
                    limit: 5
 | 
						|
                },
 | 
						|
 | 
						|
                data: [
 | 
						|
                    ["#VL2111", "Jonathan", "07 Oct, 2021", "$24.05", "Paid",],
 | 
						|
                    ["#VL2110", "Harold", "07 Oct, 2021", "$26.15", "Paid"],
 | 
						|
                    ["#VL2109", "Shannon", "06 Oct, 2021", "$21.25", "Refund"],
 | 
						|
                    ["#VL2108", "Robert", "05 Oct, 2021", "$25.03", "Paid"],
 | 
						|
                    ["#VL2107", "Noel", "05 Oct, 2021", "$22.61", "Paid"],
 | 
						|
                    ["#VL2106", "Traci", "04 Oct, 2021", "$24.05", "Paid"],
 | 
						|
                    ["#VL2105", "Kerry", "04 Oct, 2021", "$26.15", "Paid"],
 | 
						|
                    ["#VL2104", "Patsy", "04 Oct, 2021", "$21.25", "Refund"],
 | 
						|
                    ["#VL2103", "Cathy", "03 Oct, 2021", "$22.61", "Paid"],
 | 
						|
                    ["#VL2102", "Tyrone", "03 Oct, 2021", "$25.03", "Paid"],
 | 
						|
                ]
 | 
						|
            }).render(document.getElementById("table-pagination"));
 | 
						|
 | 
						|
        // search Table
 | 
						|
        if (document.getElementById("table-search"))
 | 
						|
            new gridjs.Grid({
 | 
						|
                columns: ["Name", "Email", "Position", "Company", "Country"],
 | 
						|
                pagination: {
 | 
						|
                    limit: 5
 | 
						|
                },
 | 
						|
                search: true,
 | 
						|
                data: [
 | 
						|
                    ["Jonathan", "jonathan@example.com", "Senior Implementation Architect", "Hauck Inc", "Holy See"],
 | 
						|
                    ["Harold", "harold@example.com", "Forward Creative Coordinator", "Metz Inc", "Iran"],
 | 
						|
                    ["Shannon", "shannon@example.com", "Legacy Functionality Associate", "Zemlak Group", "South Georgia"],
 | 
						|
                    ["Robert", "robert@example.com", "Product Accounts Technician", "Hoeger", "San Marino"],
 | 
						|
                    ["Noel", "noel@example.com", "Customer Data Director", "Howell - Rippin", "Germany"],
 | 
						|
                    ["Traci", "traci@example.com", "Corporate Identity Director", "Koelpin - Goldner", "Vanuatu"],
 | 
						|
                    ["Kerry", "kerry@example.com", "Lead Applications Associate", "Feeney, Langworth and Tremblay", "Niger"],
 | 
						|
                    ["Patsy", "patsy@example.com", "Dynamic Assurance Director", "Streich Group", "Niue"],
 | 
						|
                    ["Cathy", "cathy@example.com", "Customer Data Director", "Ebert, Schamberger and Johnston", "Mexico"],
 | 
						|
                    ["Tyrone", "tyrone@example.com", "Senior Response Liaison", "Raynor, Rolfson and Daugherty", "Qatar"],
 | 
						|
                ]
 | 
						|
            }).render(document.getElementById("table-search"));
 | 
						|
 | 
						|
        // Sorting Table
 | 
						|
        if (document.getElementById("table-sorting"))
 | 
						|
            new gridjs.Grid({
 | 
						|
                columns: ["Name", "Email", "Position", "Company", "Country"],
 | 
						|
                pagination: {
 | 
						|
                    limit: 5
 | 
						|
                },
 | 
						|
                sort: true,
 | 
						|
                data: [
 | 
						|
                    ["Jonathan", "jonathan@example.com", "Senior Implementation Architect", "Hauck Inc", "Holy See"],
 | 
						|
                    ["Harold", "harold@example.com", "Forward Creative Coordinator", "Metz Inc", "Iran"],
 | 
						|
                    ["Shannon", "shannon@example.com", "Legacy Functionality Associate", "Zemlak Group", "South Georgia"],
 | 
						|
                    ["Robert", "robert@example.com", "Product Accounts Technician", "Hoeger", "San Marino"],
 | 
						|
                    ["Noel", "noel@example.com", "Customer Data Director", "Howell - Rippin", "Germany"],
 | 
						|
                    ["Traci", "traci@example.com", "Corporate Identity Director", "Koelpin - Goldner", "Vanuatu"],
 | 
						|
                    ["Kerry", "kerry@example.com", "Lead Applications Associate", "Feeney, Langworth and Tremblay", "Niger"],
 | 
						|
                    ["Patsy", "patsy@example.com", "Dynamic Assurance Director", "Streich Group", "Niue"],
 | 
						|
                    ["Cathy", "cathy@example.com", "Customer Data Director", "Ebert, Schamberger and Johnston", "Mexico"],
 | 
						|
                    ["Tyrone", "tyrone@example.com", "Senior Response Liaison", "Raynor, Rolfson and Daugherty", "Qatar"],
 | 
						|
                ]
 | 
						|
            }).render(document.getElementById("table-sorting"));
 | 
						|
 | 
						|
 | 
						|
        // Loading State Table
 | 
						|
        if (document.getElementById("table-loading-state"))
 | 
						|
            new gridjs.Grid({
 | 
						|
                columns: ["Name", "Email", "Position", "Company", "Country"],
 | 
						|
                pagination: {
 | 
						|
                    limit: 5
 | 
						|
                },
 | 
						|
                sort: true,
 | 
						|
                data: function () {
 | 
						|
                    return new Promise(function (resolve) {
 | 
						|
                        setTimeout(function () {
 | 
						|
                            resolve([
 | 
						|
                                ["Jonathan", "jonathan@example.com", "Senior Implementation Architect", "Hauck Inc", "Holy See"],
 | 
						|
                                ["Harold", "harold@example.com", "Forward Creative Coordinator", "Metz Inc", "Iran"],
 | 
						|
                                ["Shannon", "shannon@example.com", "Legacy Functionality Associate", "Zemlak Group", "South Georgia"],
 | 
						|
                                ["Robert", "robert@example.com", "Product Accounts Technician", "Hoeger", "San Marino"],
 | 
						|
                                ["Noel", "noel@example.com", "Customer Data Director", "Howell - Rippin", "Germany"],
 | 
						|
                                ["Traci", "traci@example.com", "Corporate Identity Director", "Koelpin - Goldner", "Vanuatu"],
 | 
						|
                                ["Kerry", "kerry@example.com", "Lead Applications Associate", "Feeney, Langworth and Tremblay", "Niger"],
 | 
						|
                                ["Patsy", "patsy@example.com", "Dynamic Assurance Director", "Streich Group", "Niue"],
 | 
						|
                                ["Cathy", "cathy@example.com", "Customer Data Director", "Ebert, Schamberger and Johnston", "Mexico"],
 | 
						|
                                ["Tyrone", "tyrone@example.com", "Senior Response Liaison", "Raynor, Rolfson and Daugherty", "Qatar"]
 | 
						|
                            ])
 | 
						|
                        }, 2000);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
            }).render(document.getElementById("table-loading-state"));
 | 
						|
 | 
						|
 | 
						|
        // Fixed Header
 | 
						|
        if (document.getElementById("table-fixed-header"))
 | 
						|
            new gridjs.Grid({
 | 
						|
                columns: ["Name", "Email", "Position", "Company", "Country"],
 | 
						|
                sort: true,
 | 
						|
                pagination: true,
 | 
						|
                fixedHeader: true,
 | 
						|
                height: '400px',
 | 
						|
                data: [
 | 
						|
                    ["Jonathan", "jonathan@example.com", "Senior Implementation Architect", "Hauck Inc", "Holy See"],
 | 
						|
                    ["Harold", "harold@example.com", "Forward Creative Coordinator", "Metz Inc", "Iran"],
 | 
						|
                    ["Shannon", "shannon@example.com", "Legacy Functionality Associate", "Zemlak Group", "South Georgia"],
 | 
						|
                    ["Robert", "robert@example.com", "Product Accounts Technician", "Hoeger", "San Marino"],
 | 
						|
                    ["Noel", "noel@example.com", "Customer Data Director", "Howell - Rippin", "Germany"],
 | 
						|
                    ["Traci", "traci@example.com", "Corporate Identity Director", "Koelpin - Goldner", "Vanuatu"],
 | 
						|
                    ["Kerry", "kerry@example.com", "Lead Applications Associate", "Feeney, Langworth and Tremblay", "Niger"],
 | 
						|
                    ["Patsy", "patsy@example.com", "Dynamic Assurance Director", "Streich Group", "Niue"],
 | 
						|
                    ["Cathy", "cathy@example.com", "Customer Data Director", "Ebert, Schamberger and Johnston", "Mexico"],
 | 
						|
                    ["Tyrone", "tyrone@example.com", "Senior Response Liaison", "Raynor, Rolfson and Daugherty", "Qatar"],
 | 
						|
                ]
 | 
						|
            }).render(document.getElementById("table-fixed-header"));
 | 
						|
 | 
						|
 | 
						|
        // Hidden Columns
 | 
						|
        if (document.getElementById("table-hidden-column"))
 | 
						|
            new gridjs.Grid({
 | 
						|
                columns: ["Name", "Email", "Position", "Company",
 | 
						|
                    {
 | 
						|
                        name: 'Country',
 | 
						|
                        hidden: true
 | 
						|
                    },
 | 
						|
                ],
 | 
						|
                pagination: {
 | 
						|
                    limit: 5
 | 
						|
                },
 | 
						|
                sort: true,
 | 
						|
                data: [
 | 
						|
                    ["Jonathan", "jonathan@example.com", "Senior Implementation Architect", "Hauck Inc", "Holy See"],
 | 
						|
                    ["Harold", "harold@example.com", "Forward Creative Coordinator", "Metz Inc", "Iran"],
 | 
						|
                    ["Shannon", "shannon@example.com", "Legacy Functionality Associate", "Zemlak Group", "South Georgia"],
 | 
						|
                    ["Robert", "robert@example.com", "Product Accounts Technician", "Hoeger", "San Marino"],
 | 
						|
                    ["Noel", "noel@example.com", "Customer Data Director", "Howell - Rippin", "Germany"],
 | 
						|
                    ["Traci", "traci@example.com", "Corporate Identity Director", "Koelpin - Goldner", "Vanuatu"],
 | 
						|
                    ["Kerry", "kerry@example.com", "Lead Applications Associate", "Feeney, Langworth and Tremblay", "Niger"],
 | 
						|
                    ["Patsy", "patsy@example.com", "Dynamic Assurance Director", "Streich Group", "Niue"],
 | 
						|
                    ["Cathy", "cathy@example.com", "Customer Data Director", "Ebert, Schamberger and Johnston", "Mexico"],
 | 
						|
                    ["Tyrone", "tyrone@example.com", "Senior Response Liaison", "Raynor, Rolfson and Daugherty", "Qatar"],
 | 
						|
                ]
 | 
						|
            }).render(document.getElementById("table-hidden-column"));
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
document.addEventListener('DOMContentLoaded', function (e) {
 | 
						|
    new GridDatatable().init();
 | 
						|
}); |