Knockout-Contrib / KoGrid

A Knockout DataGrid

Home Page:https://knockout-contrib.github.io/KoGrid/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Grid Take over 10 se3conds to load - need answer asap

mikew194 opened this issue · comments

Hi I suspect their is someting going o ninternal to the grid, that is causing this.

function SalesReqItem(item) {
var self = this;

        self.CustomerID = ko.observable(item.CustomerId);
        self.Filename = ko.observable(item.Filename);
        self.ContractNum = item.ContractNum
        self.FirstName = ko.observable(item.FirstName);
        self.LastName = ko.observable(item.LastName);
        this.FullName = ko.computed(function () {
            return this.FirstName() + "," + this.LastName();
        }, this);

        self.Address1 = ko.observable(item.Address1);
        self.City = ko.observable(item.City);
        self.State = ko.observable(item.State);
        self.Zip = ko.observable(item.Zip);

        this.FullLocation = ko.computed(function () {
            return this.City() + "," + this.State() + "," + this.Zip();
        }, this);

        self.LoanOfficer = ko.observable(item.LoanOfficer);
        self.TermMonths = ko.observable(item.TermMonths);
        self.TermMiles = ko.observable(item.TermMiles);

        this.Term = ko.computed(function () {
            return self.TermMonths() + "/" + self.TermMiles();
        }, this);

        self.Total = ko.observable(item.Total);
        self.DateCreated = ko.observable(item.DateCreated);
        self.Vin = ko.observable(item.vin);
        self.ContractNum = ko.observable(item.ContractNum);
        self.LoanNumber = ko.observable(item.LoanNumber);
        self.ContractType = ko.observable(item.ContractType);
        self.Show = function () { item.Show };
    };

    var SalesReqViewModel = function () {
        var self = this;
        self.SelectedValue = ko.observable(1); // Service by default
        self.sortedData = function () { };
        self.ContractTypes = ko.observableArray();
        self.SalesItems = ko.observableArray();
        self.selectedItems = ko.observableArray();

        self.filterOptions = {
            filterText: ko.observable(""),
            useExternalFilter: true
        };

        self.pagingOptions = {
            pageSizes: ko.observableArray([25, 50, 100]),
            pageSize: ko.observable(25),
            totalServerItems: ko.observable(199),
            currentPage: ko.observable(1)
        };

        self.setPagingData = function (data, page, pageSize) {
            var pagedData = data.slice((page - 1) * pageSize, page * pageSize);
            self.myData(pagedData);
            self.pagingOptions.totalServerItems(data.length);
        };

        self.getPagedDataAsync = function (pageSize, page, searchText) {
            setTimeout(function () {
                var data;
                self.pagingOptions.totalServerItems(199);
                $.ajax({
                    type: "POST",
                    url: '/Quotes/SalesReg.aspx/LoadSalesRegister',
                    contentType: "application/json; charset=utf-8",
                    data: ko.toJSON({ contractType: self.SelectedValue(), page: self.pagingOptions.currentPage(), pageSize: self.pagingOptions.pageSize() }),
                    dataType: "json",
                    success: function (results) {
                        var data = JSON.parse(results.d);

                        for (var i = 0; i < data.length; i++) {
                            var item = new SalesReqItem(data[i]);
                            self.SalesItems.push(item);
                        };

                    },
                    error: function (err) {
                        alert(err.status + " - " + err.statusText);
                    }
                });
                //if (searchText) {
                //    var ft = searchText.toLowerCase();
                //    $.getJSON('largeLoad.json', function (largeLoad) {
                //        data = largeLoad.filter(function (item) {
                //            return JSON.stringify(item).toLowerCase().indexOf(ft) != -1;
                //        });
                //        self.setPagingData(data, page, pageSize);
                //    });
                //} else {
                //    $.getJSON('largeLoad.json', function (largeLoad) {
                //        self.setPagingData(largeLoad, page, pageSize);
                //    });
                //}
            }, 100);
        };

        self.filterOptions.filterText.subscribe(function (data) {
            self.getPagedDataAsync(self.pagingOptions.pageSize(), self.pagingOptions.currentPage(), self.filterOptions.filterText());
        });

        self.pagingOptions.pageSizes.subscribe(function (data) {
            self.getPagedDataAsync(self.pagingOptions.pageSize(), self.pagingOptions.currentPage(), self.filterOptions.filterText());
        });
        self.pagingOptions.pageSize.subscribe(function (data) {
            self.getPagedDataAsync(self.pagingOptions.pageSize(), self.pagingOptions.currentPage(), self.filterOptions.filterText());
        });
        self.pagingOptions.totalServerItems.subscribe(function (data) {
            self.getPagedDataAsync(self.pagingOptions.pageSize(), self.pagingOptions.currentPage(), self.filterOptions.filterText());
        });
        self.pagingOptions.currentPage.subscribe(function (data) {
            self.pagingOptions.currentPage(data)
            self.getPagedDataAsync(self.pagingOptions.pageSize(), self.pagingOptions.currentPage(), self.filterOptions.filterText());
        });

        //self.reload = function () {
        //    //var spinner = new Spinner().spin(document.getElementById('spin'));

        //    var data = {
        //        'contractType': self.SelectedValue(),
        //        'page': self.pagingOptions.currentPage(),
        //        'pageSize': self.pagingOptions.pageSize()
        //    }

        //    //if (self.status()) {
        //    //    data['status'] = self.status()
        //    //}

        //    $.ajax({
        //        type: "POST",
        //        data: ko.toJSON(data),
        //        dataType: "json",
        //        cache: false,
        //        url: '/Quotes/SalesReg.aspx/LoadSalesRegister',
        //        contentType: "application/json; charset=utf-8",
        //        success: function (results, textStatus, jqXHR) {
        //            //spinner.stop();
        //            var data = JSON.parse(results.d);
        //            var newData = [];

        //            for (var i = 0; i < data.length; i++) {
        //                var item = new SalesReqItem(data[i]);
        //                self.SalesItems.push(item);
        //            };

        //            self.pagingOptions.totalServerItems(199);
        //        },
        //        error: function (jqXHR, textStatus, errorThrown) {
        //            //spinner.stop();
        //            alert({ text: 'There was an error retrieving the email blasts.', type: 'error', timeout: 5000 });
        //        }
        //    });
        //}

        self.gridOptions = {
            data: self.SalesItems,
            displaySelectionCheckbox: true,
            selectedItems: self.selectedItems,
            multiSelect: false,
            droppable: false,
            pagingOptions: self.pagingOptions,
            enablePaging: true,
            filterOptions: self.filterOptions,
            totalServerItems: ko.observable(199),
            columnDefs: [
                { field: 'FullName', displayName: 'Name' },
                { field: 'Address1', displayName: 'Address' },
                { field: 'FullLocation', displayName: 'Location' },
                { field: 'Term', displayName: 'Term' },
                { field: 'Total', displayName: 'Total' },
                { field: 'Vin', displayName: 'VIN' },
                { field: 'ContractNum', displayName: 'Show', cellTemplate: "" },
                { field: 'ContractNum', displayName: 'ContractNum' },
                { field: 'LoanOfficer', displayName: 'LoanOfficer' }],
            autogenerateColumns: false,
            canSelectRows: true,
            showColumnMenu: false,
            enableColumnResize: true,
            rowHeight: 20,
            selectWithCheckboxOnly: true,
            jqueryUIDraggable: false,
            useExternalSorting: true,
            sortInfo: self.sortInfo
        };

        // Initialization
        self.init = function () {
            self.getPagedDataAsync(self.pagingOptions.pageSize(), self.pagingOptions.currentPage());
        };

        self.init();

    };